В данной статье пойдет речь о том, как подключить датчик температуры DS18B20 к ATtiny2313 и отображать данные на ЖКИ-дисплее 16×1 на базе HD44780. Для проверки работоспособности программы и схемы я использовал эмулятор Proteus 7 (ISIS 7 Professional). Код программы (проект в Atmel Studio 7 целиком) вы сможете скачать по ссылке в конце статьи. Прошивку (.hex файл) можно установить и на реальный микроконтроллер ATtiny2313, программа будет работать нормально, главное не забыть менять фьюзы: CKSEL3…0 = 0100 – Внутренний тактовый генератор — частота 8 МГц и поставить галочку на SCKDIV8 – деление тактовой частоты на 8.
- 1 Цифровой датчик температуры DS18B20
- 2 Пример программы в Atmel Studio 7
- 3 Схема подключения LSD дисплея на базе HD44780 и датчика температуры DS18B20 к ATtiny2313 в ISIS 7 Professional — Proteus. Симуляция.
- 4 Купить ATTINY2313A на Aliexpress
- 5 Купить LCD1602 HD44780 на Aliexpress
- 6 Купить DS18B20 на Aliexpress
- 7 Похожие записи
Цифровой датчик температуры DS18B20
DS18B20 цифровой датчик температуры (термометр) с программируемым разрешением, от 9 до 12–bit, которое может сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по 1-Wire шине и при этом может быть как единственным устройством на линии так и работать в группе. Все процессы на шине управляются центральным микропроцессором: AVR, PIC, Arduino, STM, Raspberry Pi и др..
Диапазон измерений от –55°C до +125°C и точностью 0.5°C в диапазоне от –10°C до +85°C. В дополнение, DS18B20 может питаться напряжением линии данных («parasite power»), при отсутствии внешнего источника напряжения.
Каждый DS18B20 имеет уникальный 64-битный последовательный код, который позволяет, общаться с множеством датчиков DS18B20 установленных на одной шине. Такой принцип позволяет использовать один микропроцессор, чтобы контролировать множество датчиков DS18B20, распределенных по большому участку.
Смотрите также:
Подключение LCD на базе HD44780 к ATmega16 (LM016L LCD 16×2)
Мигание светодиодом на ATmega16/32
Atmel Studio 7 — Создание нового проекта
Характеристики
Диапазон измеряемых температур | −55…+125 °C |
Точность | ±0,5°C (в пределах −10…+85 °C) |
Время получения данных | 750 мс при 12-битном разрешении; 94 мс при 9-битном разрешении |
Напряжение питания | 3–5.5 В |
Потребляемый ток при бездействии | 750 нА |
Потребляемый ток при опросе | 1 мА |
Подключение
Герметичный датчик на основе микросхемы DS18B20 можно подключить двумя способами:
- По трём проводам: питание (красный), земля (чёрный) и сигнал (белый).
- По двум проводам: земля и сигнал. В этом случае датчик изредка может давать неверные показания, которые легко исключить из конечного результата фильтрацией.
Независимо от способа подключения, сигнальный провод необходимо соединить с питанием через резистор 4,7 кОм. При подключении только одного датчика, подойдёт и резистор на 10 кОм.
Назначение выводов
SO* | SOP* | TO-92 | СИМВОЛ | ОПИСАНИЕ |
---|---|---|---|---|
5 | 4 | 1 | GND | Общий. |
4 | 1 | 2 | DQ | Вывод данных ввода/вывода (Input/Output pin). Open-drain 1-Wire interface pin. По этой линии подается питание в режиме работы с паразитным питанием. |
3 | 8 | 3 | VDD | VDD ножка питания. Для режима работы с паразитным питание VDD необходимо соединить с общим проводом. |
*Все остальные выводы должны оставаться не подключенными.
Пример программы в Atmel Studio 7
ds18b20.h
#ifndef DS18B20_H_ #define DS18B20_H_ #include <avr/io.h> // установки подключения к DS18B20 #define DS18B20_PORT PORTB #define DS18B20_DDR DDRB #define DS18B20_PIN PINB #define DS18B20_DQ PB7 // команды #define DS18B20_CMD_CONVERTTEMP 0x44 #define DS18B20_CMD_RSCRATCHPAD 0xbe #define DS18B20_CMD_WSCRATCHPAD 0x4e #define DS18B20_CMD_CPYSCRATCHPAD 0x48 #define DS18B20_CMD_RECEEPROM 0xb8 #define DS18B20_CMD_RPWRSUPPLY 0xb4 #define DS18B20_CMD_SEARCHROM 0xf0 #define DS18B20_CMD_READROM 0x33 #define DS18B20_CMD_MATCHROM 0x55 #define DS18B20_CMD_SKIPROM 0xcc #define DS18B20_CMD_ALARMSEARCH 0xec // остановить любое прерывание во время чтения данных с DS18B20 #define DS18B20_STOPINTERRUPTONREAD 1 //functions extern double getTempDS18B20(); #endif
ds18b20.c
#define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include "ds18b20.h" /* * ds18b20 - инициализация */ uint8_t resetDS18B20() { uint8_t i; // импульс сброса, минимум 480?s DS18B20_PORT &= ~(1 << DS18B20_DQ); DS18B20_DDR |= (1 << DS18B20_DQ); // выход _delay_us(480); // Когда DS18B20 обнаруживает положительный перепад, он ждет от 15?s до 60?s DS18B20_DDR &= ~(1 << DS18B20_DQ); // вход _delay_us(60); // и затем передает импульс присутствия, перемещая шину в логический «0» на длительность от 60?s до 240?s. i = (DS18B20_PIN & (1 << DS18B20_DQ)); _delay_us(420); //return the read value, 0=ok, 1=error return i; } /* * написать один бит */ inline void writeBitDS18B20(uint8_t bit) { // логический «0» на 1?s DS18B20_PORT &= ~(1 << DS18B20_DQ); DS18B20_DDR |= (1 << DS18B20_DQ); // выход _delay_us(1); // если нужно написать 1, нужно освободить линию (если не - держать низкий уровень) if (bit) { DS18B20_DDR &= ~(1 << DS18B20_DQ); // вход } // ждать 60?s и освободить линию _delay_us(60); DS18B20_DDR &= ~(1 << DS18B20_DQ); // вход } /* * прочитать один бит */ uint8_t readBitDS18B20(void) { uint8_t bit = 0; // логический «0» на 1?s DS18B20_PORT &= ~(1 << DS18B20_DQ); DS18B20_DDR |= (1 << DS18B20_DQ); // вход _delay_us(1); // освободить линию и ждать 14?s DS18B20_DDR &= ~(1 << DS18B20_DQ); // вход _delay_us(14); // прочитать значение if (DS18B20_PIN & (1 << DS18B20_DQ)) { bit = 1; } // ждать 45?s и вернуть значение _delay_us(45); return bit; } /* * написать один байт */ void writeByteDS18B20(uint8_t byte) { uint8_t i = 8; while (i--) { writeBitDS18B20(byte & 1); byte >>= 1; } } /* * прочитать один байт */ uint8_t readByteDS18B20(void) { uint8_t i = 8, n = 0; while (i--) { n >>= 1; n |= (readBitDS18B20() << 7); } return n; } /* * получить температуру */ double getTempDS18B20() { uint8_t temperatureL; uint8_t temperatureH; double retd = 0; if (DS18B20_STOPINTERRUPTONREAD == 1) { cli(); } resetDS18B20(); // сброс writeByteDS18B20(DS18B20_CMD_SKIPROM); // пропуск ПЗУ(ROM) writeByteDS18B20(DS18B20_CMD_CONVERTTEMP); // начать преобразование показаний температуры while (!readBitDS18B20()); // ждать, пока преобразование не завершится resetDS18B20(); // сброс writeByteDS18B20(DS18B20_CMD_SKIPROM); // пропуск ПЗУ(ROM) writeByteDS18B20(DS18B20_CMD_RSCRATCHPAD); // читать scratchpad // прочитать 2 байта из scratchpad temperatureL = readByteDS18B20(); temperatureH = readByteDS18B20(); if (DS18B20_STOPINTERRUPTONREAD == 1) { sei(); } // преобразовать полученное 12 битное значение retd = ((temperatureH << 8) + temperatureL) * 0.0625; return retd; }
main.c
// site: http://micro-pi.ru // подключение LSD на базе HD44780 и DS18B20 к ATtiny2313 #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #include <string.h> #include <math.h> #include "ds18b20.h" #include "LCD.h" /* * -123.4 * numbers[0] = 123 * numbers[1] = 4 */ inline void explodeDoubleNumber(int* numbers, double flt) { /* * Функция abs() вычисляет абсолютное значение и возвращает модуль значения flt (|flt|). */ numbers[0] = abs((int) flt); /* из -123.4 получаем 123 */ numbers[1] = abs((int) ((flt - ((int) flt)) * 10)); /* из -123.4 получаем 4 */ } inline void printTemp(double d) { char text[17] = "T="; int fs[2]; char num[5]; explodeDoubleNumber(fs, d); if (d < 0) { strcat(text, "-"); } itoa(fs[0], num, 10); strcat(text, num); strcat(text, "."); itoa(fs[1], num, 10); strcat(text, num); strcat(text, "'C"); lcdClear(); lcdGotoXY(0, 0); lcdPuts(text); } int main(void) { _delay_ms(100); lcdInit(); lcdClear(); lcdSetDisplay(LCD_DISPLAY_ON); lcdSetCursor(LCD_CURSOR_OFF); while (1) { double d = getTempDS18B20(); printTemp(d); _delay_ms(1000); } }
*библиотека для работы с LSD дисплеем находится в архив проекта. Скачать можно по ссылке ниже.
Схема подключения LSD дисплея на базе HD44780 и датчика температуры DS18B20 к ATtiny2313 в ISIS 7 Professional — Proteus. Симуляция.
Соединяем все компоненты так, как указано на картинке. Если не знаете как сделать проект в Протеус, переходим на страницу Мигание светодиодом на ATmega16/32.
В микроконтроллере ATtiny2313 заводская установленная частота внутреннего RC генератора равняется 8000000Гц (8МГц), также по умолчанию установлен фьюз деления частоты — CLKDIV8 (Clock Divide by 8), поэтому реальная рабочая частота кристалла 1000000Гц (1МГц). По этому не забываем снять этот фьюз.
Температура ниже нуля
Температура выше нуля
Скачать:
DS18B20 — документация на русском (datasheet ru)
проект в Atmel Studio 7 DS18B20 + LCD HD44780 + ATtiny2313
проект в Proteus 7 DS18B20 + LCD HD44780 + ATtiny2313
sildenafil dose
магазин аккаунтов маркетплейс для реселлеров
платформа для покупки аккаунтов https://marketplace-akkauntov-top.ru/
продажа аккаунтов соцсетей аккаунты с балансом
Account Selling Platform Account Buying Service
Website for Selling Accounts Account Sale
Database of Accounts for Sale Account Catalog
Accounts for Sale Account exchange
Account Catalog Gaming account marketplace
Account market socialmediaaccountsshop.com
Account Purchase Account trading platform
Account market Sell Account
account catalog sell account
verified accounts for sale socialaccountssale.com
account sale account acquisition
secure account purchasing platform account sale
accounts for sale find accounts for sale
gaming account marketplace website for buying accounts
marketplace for ready-made accounts account marketplace
account buying service account selling platform
website for selling accounts marketplace for ready-made accounts
gaming account marketplace account trading platform
account acquisition account trading service
account trading platform profitable account sales
verified accounts for sale sell account
accounts marketplace account trading service
social media account marketplace buy pre-made account
account selling platform account marketplace
buy pre-made account account market
sell accounts database of accounts for sale
account marketplace account exchange service
verified accounts for sale database of accounts for sale
buy accounts https://accounts-offer.org/
profitable account sales https://accounts-marketplace.xyz/
account trading service https://buy-best-accounts.org
buy accounts https://social-accounts-marketplaces.live
secure account sales https://accounts-marketplace.live/
website for selling accounts https://social-accounts-marketplace.xyz/
buy account https://buy-accounts.space
profitable account sales https://buy-accounts-shop.pro/
account trading https://accounts-marketplace.online/
guaranteed accounts https://accounts-marketplace-best.pro/
биржа аккаунтов https://akkaunty-na-prodazhu.pro/
площадка для продажи аккаунтов akkaunty-market.live
маркетплейс аккаунтов https://kupit-akkaunty-market.xyz
продажа аккаунтов https://akkaunty-optom.live
площадка для продажи аккаунтов https://online-akkaunty-magazin.xyz
buy facebook accounts for ads https://buy-adsaccounts.work
buy aged fb account buy facebook ads account
buy facebook ad account cheap facebook advertising account
buy fb ads account facebook ads accounts
buy facebook ads accounts https://buy-ad-account.click
facebook accounts to buy https://ad-accounts-for-sale.work
buy google ads threshold account https://buy-ads-account.top
buy google ads threshold account https://ads-account-for-sale.top/
buy google adwords account https://ads-account-buy.work
google ads reseller https://buy-ads-invoice-account.top/
buy adwords account https://buy-account-ads.work
buy google ads threshold account https://buy-ads-agency-account.top
buy google adwords account https://ads-agency-account-buy.click
buy facebook verified business account https://buy-business-manager.org
buy verified google ads accounts adwords account for sale
buy facebook bm account buy facebook business manager account
facebook business manager for sale buy-verified-business-manager-account.org
buy verified bm facebook https://buy-verified-business-manager.org/
buy verified bm https://buy-business-manager-verified.org/
business manager for sale facebook business manager for sale
tiktok agency account for sale https://tiktok-ads-account-for-sale.org
buy tiktok ads accounts https://tiktok-agency-account-for-sale.org
tiktok agency account for sale https://buy-tiktok-ads-accounts.org
buy tiktok business account https://buy-tiktok-ads.org
buy facebook profile account catalog account purchase
buy facebook ads account account purchase database of accounts for sale
Online Mexican pharmacy: los algodones pharmacy online — mexican pharmacy
https://bajamedsdirect.shop/# Best Mexican pharmacy online
buy medicine online india Best online Indian pharmacy Indian pharmacy ship to USA
canadian pharmacy prices: canadian pharmacy — Canadian pharmacy online
Indian pharmacy international shipping: Indian pharmacy ship to USA — Best online Indian pharmacy
https://curamedsindia.shop/# Indian pharmacy to USA
Canadian pharmacy prices MapleCareRx canadian pharmacy
Online Mexican pharmacy: the purple pharmacy mexico — Best Mexican pharmacy online
mexico pharmacy Mexican pharmacy ship to USA Mexican pharmacy price list
Best online Indian pharmacy: indian online pharmacy — CuraMedsIndia
http://bajamedsdirect.com/# Best Mexican pharmacy online
safe canadian pharmacy: Pharmacies in Canada that ship to the US — my canadian pharmacy review
mexican pharmacy las vegas: mexico pharmacy list — mexico pharmacy
acheter medicaments en ligne pas cher: pharmacie francaise livraison a domicile — pharmacie en ligne fiable
https://pharmarapide.shop/# pharmacie francaise livraison a domicile
beste online-apotheke ohne rezept: Online Apotheke Deutschland seriös — medikament ohne rezept notfall
https://vitalapotheke24.com/# online apotheke gГјnstig
billiga lakemedel pa natet: tryggt svenskt apotek pa natet — ohne rezept apotheke
apotek utan receptkrav: bestalla medicin utan recept — online apotheke versandkostenfrei
pharmacie en ligne france livraison belgique Pharmacie Internationale en ligne pharmacie en ligne sans ordonnance
ohne rezept apotheke: ApothekeDirekt24 — medikament ohne rezept notfall
günstigste online apotheke: Kamagra Deutschland Apotheke — eu apotheke ohne rezept
online apotheke deutschland Kamagra Preis Deutschland eu apotheke ohne rezept
http://vitalapotheke24.com/# online apotheke
ohne rezept apotheke: Generika online bestellen — medikament ohne rezept notfall
diskret leverans av mediciner: NordicApotek — п»їshop apotheke gutschein
online apotheke: Kamagra Deutschland Apotheke — europa apotheke
europa apotheke Medikamente ohne Rezept bestellen beste online-apotheke ohne rezept
online apotheke versandkostenfrei NordicApotek halsolosningar online Sverige
gГјnstigste online apotheke: kamagra oral jelly — medikamente rezeptfrei
https://pharmarapide.com/# pharmacie en ligne France fiable
generiska lakemedel online: diskret leverans av mediciner — gГјnstigste online apotheke
pharmacie francaise livraison a domicile: pharmacie francaise livraison a domicile — pharmacie en ligne pas cher
commande discrete medicaments France: medicaments sans ordonnance livraison rapide — Pharmacie sans ordonnance
generiska läkemedel online: beställa medicin utan recept — internet apotheke
pharmacie en ligne france pas cher: acheter médicaments en ligne pas cher — acheter médicament en ligne sans ordonnance
Pharmacie Internationale en ligne: Pharmacie sans ordonnance — pharmacie en ligne france livraison internationale
https://apothekedirekt24.com/# eu apotheke ohne rezept
pharmacie en ligne france livraison belgique: medicaments sans ordonnance livraison rapide — п»їpharmacie en ligne france
reseptfrie medisiner på nett: bestille medisiner online diskret — billige generiske legemidler Norge
FarmaciaFacile: ordinare farmaci senza ricetta — farmacia online Italia affidabile
pedir fármacos por Internet: farmacia española en línea económica — farmacia online españa envÃo internacional
https://saludexpresses.com/# farmacia espanola en linea economica
online apotheek discrete levering van medicijnen geneesmiddelen zonder recept bestellen
online apotheek: discrete levering van medicijnen — HollandApotheek
bestille medisiner online diskret: NordApotek — reseptfrie medisiner på nett
https://hollandapotheeknl.shop/# online apotheek
medicamentos sin receta a domicilio: farmacias direct — farmacia española en línea económica
https://saludexpresses.com/# comprar medicinas online sin receta medica
farmacia en casa online descuento: medicamentos sin receta a domicilio — pedir fármacos por Internet
nettapotek Norge trygt og pålitelig: apotek på nett — reseptfrie medisiner på nett
medicinali generici a basso costo farmacia online Italia affidabile farmaci senza prescrizione disponibili online
apotheek zonder receptplicht: online apotheek — apotheek zonder receptplicht
generieke geneesmiddelen Nederland: apotheek zonder receptplicht — Holland Apotheek
http://hollandapotheeknl.com/# goedkope medicijnen online
generieke geneesmiddelen Nederland discrete levering van medicijnen discrete levering van medicijnen
generieke geneesmiddelen Nederland: online apotheek nederland — generieke geneesmiddelen Nederland
billige generiske legemidler Norge: bestille medisiner online diskret — NordApotek
comprare farmaci online all’estero: FarmaciaFacile — spedizione rapida farmaci Italia
https://farmaciafacileit.com/# ordinare farmaci senza ricetta
ordinare farmaci senza ricetta farmaci senza prescrizione disponibili online ordinare farmaci senza ricetta
apotheek zonder receptplicht: Holland Apotheek — online apotheek Nederland betrouwbaar
billige generiske legemidler Norge: reseptfrie medisiner på nett — kundevurderinger av nettapotek
comprar medicinas online sin receta médica: pedir fármacos por Internet — medicamentos sin receta a domicilio
HollandApotheek: geneesmiddelen zonder recept bestellen — online apotheek Nederland betrouwbaar
spedizione rapida farmaci Italia: farmacia online Italia affidabile — farmacie online autorizzate elenco
https://farmaciafacileit.com/# farmacia online Italia affidabile
spedizione rapida farmaci Italia: Farmacia online miglior prezzo — FarmaciaFacile
SaludExpress: pedir fármacos por Internet — farmacias online seguras