Выкладываю на всеобщее обозрение пример работы с датчиком температуры LM35, данный датчик стоит заметно дешевле известного DS18B20. Проект реализован на микроконтроллере Atmega16, датчик подключен к порту PC0 (ADC0). Микросхема LM35 (у неё есть несколько аналогов) специально создана для измерения температуры. Всё, что нужно - это подключить 1 и 3 ногу к плюсу и минусу питания соответственно, и измерить напряжение на среднем выводе. Оно составляет 10 милливольт на каждый градус Цельсия температуры корпуса микросхемы (она сама выглядит как транзистор, кстати). Значит, если там напряжение 230мВ, то температура 23°С - все просто как три пальца об асфальт!
Схема подключения датчика:
Потребляет датчик около 130мкА, выход у неё низкоомный. Точность датчика составляет полградуса, и собственный перегрев порядка 0,1°С... В общем, круче некуда. Единственное - страдает она от слишком высоких температур - 150°С максимум. У датчика линейная шкала зависимости Градус/Вольт.
Для правильной работы датчика необходимо вывода микроконтроллера AREF и AVCC подтянуть к плюсу питания, полную схему разрисовывать не стал (опущены элементы питания схемы).
Код программы в BASCOM AVR:
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1
Config Adc = Single , Prescaler = Auto
Dim A As Word
Dim B As Byte
B = 1
Start Adc
Cursor Off
Cls
Do
A = Getadc(0)
A = A / 2
Locate 1 , 2
Lcd "Temp =" ; A ; Chr(0) ; "c "
Locate 1 , 16
Lcd Chr(b)
Waitms 500
Incr B
If B > 6 Then B = 1
Loop
End
Видео работы в симуляторе Proteus:
...похожая статья >> Термометр на датчике LM35 и LCD Winstar
Скачать файлы проекта (~120кб.)
|