В данной статье пойдет речь о том, как подключить датчик температуры 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
https://over-the-counter-drug.com/# over the counter uti meds
https://doxycycline.science/# order doxycycline online
https://stromectol.science/# minocycline tablets
https://stromectol.science/# stromectol online
Read here. drug information and news for professionals and consumers.
purchase ivermectin
safe and effective drugs are available. Everything what you want to know about pills.
Some trends of drugs. Definitive journal of drugs and therapeutics.
stromectol drug
Cautions. Prescription Drug Information, Interactions & Side.
Everything about medicine. Generic Name.
https://stromectolst.com/# generic ivermectin cream
Get warning information here. Everything information about medication.
All trends of medicament. Get here.
ivermectin rx
Prescription Drug Information, Interactions & Side. earch our drug database.
Prescription Drug Information, Interactions & Side. What side effects can this medication cause?
ivermectin lotion for lice
safe and effective drugs are available. Top 100 Searched Drugs.
Drugs information sheet. Drugs information sheet.
buy ivermectin pills
Actual trends of drug. Prescription Drug Information, Interactions & Side.
Best and news about drug. Commonly Used Drugs Charts.
https://stromectolst.com/# ivermectin 2%
What side effects can this medication cause? Some trends of drugs.
Everything about medicine. Some are medicines that help people when doctors prescribe.
stromectol covid
п»їMedicament prescribing information. safe and effective drugs are available.
Read information now. Get information now.
ivermectin drug
Read information now. What side effects can this medication cause?
Get warning information here. drug information and news for professionals and consumers.
https://stromectolst.com/# order stromectol
safe and effective drugs are available. Read here.