Оглавление:
- Шаг 1:
- Шаг 2: Принципиальная схема
- Шаг 3: программа
- Шаг 4. Объяснение кода
- Шаг 5: вы можете загрузить полный проект
- Шаг 6: видео
Видео: Датчик температуры (LM35), взаимодействующий с ATmega32 и ЖК-дисплеем - Управление вентилятором автоматики: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Датчик температуры (LM35), взаимодействующий с ATmega32 и ЖК-дисплеем
Шаг 1:
В этом проекте вы узнаете, как связать датчик температуры (LM35) с микроконтроллером AVR ATmega32 и ЖК-дисплеем.
Перед этим проектом вам необходимо узнать о следующих статьях
как добавить библиотеку lcd в студию avr | руководство по микроконтроллеру avr
введение в АЦП в микроконтроллере AVR | для начинающих
Датчик температуры (LM35) - популярный и недорогой датчик температуры. Vcc может быть от 4 В до 20 В, как указано в таблице данных. Чтобы использовать датчик, просто подключите Vcc к 5V, GND к земле и Out к одному из АЦП (канал аналого-цифрового преобразователя).
Выходной сигнал составляет 10 милливольт на градус Цельсия. Таким образом, если выходное напряжение составляет 310 мВ, то температура составляет 31 градус C. Чтобы реализовать этот проект, вы должны быть знакомы с АЦП AVR, а также с использованием ЖК-дисплея. Таким образом, разрешение ADC AVR составляет 10 бит, а для опорного напряжения вы используете 5 В, поэтому разрешение по напряжению
5/1024 = 5,1 мВ приблизительно
Итак, если результат АЦП соответствует 5,1 мВ, т.е. если показание АЦП равно
10 x 5,1 мВ = 51 мВ
Вы можете прочитать значение любого канала АЦП с помощью функции adc_result (ch);
Где ch - номер канала (0-5) в случае ATmega8. Если вы подключили выход LM35 к каналу 0 АЦП, позвоните
adc_result0 = adc_read (0);
это сохранит текущее показание АЦП в переменной adc_value. Тип данных adc_value должен быть int, поскольку значение ADC может находиться в диапазоне от 0 до 1023.
Как мы видели, результаты АЦП имеют коэффициент 5,1 мВ, а для 1 градуса Цельсия выход LM35 составляет 10 мВ, поэтому 2 единицы АЦП = 1 градус.
Итак, чтобы получить температуру, мы делим adc_value на два
температура = adc_result0 / 2;
Наконец, микроконтроллер отобразит температуру в градусах Цельсия на буквенно-цифровом ЖК-дисплее 16x2.
Шаг 2: Принципиальная схема
Шаг 3: программа
#ifndef F_CPU
#define F_CPU 1600000UL
#endif
#включают
#включают
#include "LCD / lcd.h"
void adc_init ()
{
// AREF = AVcc
ADMUX = (1 <
// Включение АЦП и предделитель 128
ADCSRA = (1 <
}
// читаем значение adc
uint16_t adc_read (uint8_t ch)
{
// выбираем соответствующий канал 0 ~ 7
ch & = 0b00000111; // И операция с 7
ADMUX = (ADMUX & 0xF8) | канал;
// запускаем единичное преобразование
// записываем 1 в ADSC
ADCSRA | = (1 <
// ждем завершения преобразования
// ADSC снова становится 0
в то время как (ADCSRA & (1 <
возврат (ADC);
}
int main ()
{
DDRB = 0xff;
uint16_t adc_result0;
int temp;
int far;
char buffer [10];
// инициализируем adc и lcd
adc_init ();
lcd_init (LCD_DISP_ON_CURSOR); //КУРСОР
lcd_clrscr ();
lcd_gotoxy (0, 0);
_delay_ms (50);
в то время как (1)
{
adc_result0 = adc_read (0); // считываем значение adc на PA0
temp = adc_result0 / 2.01; // находим температуру
// lcd_gotoxy (0, 0);
// lcd_puts ("Adc =");
// itoa (adc_result0, buffer, 10); // отображаем значение АЦП
// lcd_puts (буфер);
lcd_gotoxy (0, 0);
itoa (temp, buffer, 10);
lcd_puts ("Temp ="); // отображаем температуру
lcd_puts (буфер);
lcd_gotoxy (7, 0);
lcd_puts ("C");
дальний = (1,8 * темп) +32;
lcd_gotoxy (9, 0);
itoa (далеко, буфер, 10);
lcd_puts (буфер);
lcd_gotoxy (12, 0);
lcd_puts ("F");
_delay_ms (1000);
если (температура> = 30)
{lcd_clrscr ();
lcd_home ();
lcd_gotoxy (0, 1);
lcd_puts («ВЕНТИЛЯТОР ВКЛ»);
ПОРТБ = (1 <
}
если (темп <= 30)
{
lcd_clrscr ();
lcd_home ();
lcd_gotoxy (7, 1);
lcd_puts («ВЕНТИЛЯТОР ВЫКЛЮЧЕН»);
ПОРТБ = (0 <
}
}
}
Шаг 4. Объяснение кода
Я надеюсь, вы знаете, что знаете, как включить АЦП и как связать ЖК-дисплей с микроконтроллером Avr в этом коде, когда температура превышает 30 градусов, тогда вентилятор включен, и вы можете видеть на светодиодном дисплее ВЕНТИЛЯТОР ВКЛ, а когда температура меньше 30, то вентилятор не горит, и вы видите FAN OFF
Шаг 5: вы можете загрузить полный проект
Кликните сюда
Рекомендуемые:
Датчик / датчик температуры двигателя с беспроводным датчиком для классических автомобилей: 7 шагов
Датчик / датчик температуры двигателя с беспроводным датчиком для классических автомобилей: я сделал этот датчик для своего любимого Çipitak. Автомобиль fiat 126 с 2-цилиндровым двигателем с воздушным охлаждением под задним капотом. У ipitak нет датчика температуры, показывающего, насколько горячий двигатель, поэтому я подумал, что датчик будет полезен. Также хотел, чтобы датчик был проводным
ESP8266 NodeMCU + LM35 + Blynk (метеостанция IOT / цифровой датчик температуры): 4 шага
ESP8266 NodeMCU + LM35 + Blynk (метеостанция IOT / цифровой датчик температуры): Привет, ребята! В этом руководстве мы узнаем, как подключить датчик LM35 к NodeMCU и отображать эту информацию о температуре через Интернет на смартфоне с помощью приложения Blynk. (Также в этом проекте мы будем использовать виджет SuperChart в Bl
Считывание температуры с помощью датчика температуры LM35 с Arduino Uno: 4 шага
Считывание температуры с помощью датчика температуры LM35 с Arduino Uno: Привет, ребята, в этой инструкции мы узнаем, как использовать LM35 с Arduino. Lm35 - это датчик температуры, который может считывать значения температуры от -55 ° C до 150 ° C. Это трехконтактное устройство, обеспечивающее аналоговое напряжение, пропорциональное температуре. Выс
Датчик температуры Arduino (LM35): 4 шага
Датчик температуры Arduino (LM35): в этом проекте я покажу вам, как измерять температуру с помощью интерфейса LM35 и Arduino. Давайте начнем
Датчик температуры Arduino с использованием LM35: 3 шага
Датчик температуры Arduino с использованием LM35: Введение Серия LM35 представляет собой прецизионные температурные устройства на интегральных схемах с выходным напряжением, линейно пропорциональным температуре по Цельсию. LM35 - трехконтактный линейный датчик температуры от National Semiconductors. Он может измерить