Оглавление:

Датчик температуры (LM35), взаимодействующий с ATmega32 и ЖК-дисплеем - Управление вентилятором автоматики: 6 шагов
Датчик температуры (LM35), взаимодействующий с ATmega32 и ЖК-дисплеем - Управление вентилятором автоматики: 6 шагов

Видео: Датчик температуры (LM35), взаимодействующий с ATmega32 и ЖК-дисплеем - Управление вентилятором автоматики: 6 шагов

Видео: Датчик температуры (LM35), взаимодействующий с ATmega32 и ЖК-дисплеем - Управление вентилятором автоматики: 6 шагов
Видео: Как сделать ЖК-термометр с помощью Arduino и LM35 2024, Ноябрь
Anonim
Датчик температуры (LM35), взаимодействующий с ATmega32 и ЖК-дисплеем | Автоматика Управление вентиляторами
Датчик температуры (LM35), взаимодействующий с ATmega32 и ЖК-дисплеем | Автоматика Управление вентиляторами

Датчик температуры (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: вы можете загрузить полный проект

Кликните сюда

Рекомендуемые: