Термометр на датчике LM35 и LCD Winstar - Измерительные устройства - Микроконтроллеры - Каталог статей - Собери свою радиосхему! Сайт радиолюбителей.
Собери свою радиосхему!
Воскресенье, 04.12.2016, 02:48 Приветствую Вас Гость

Чебоксары

Главная | Регистрация | Вход | RSS

Каталог статей

Главная » Статьи » Микроконтроллеры » Измерительные устройства

Термометр на датчике LM35 и LCD Winstar

Очередной термометр и на этот раз на датчике температуры LM35, Микросхема LM35 (у неё есть несколько аналогов) специально создана для измерения температуры. Всё, что нужно - это подключить 1 и 3 ногу к плюсу и минусу питания соответственно, и измерить напряжение на среднем выводе. Оно составляет 10 милливольт на каждый градус Цельсия температуры корпуса микросхемы (она сама выглядит как транзистор, кстати). Значит, если там напряжение 230мВ, то температура 23°С. При работе потребляет датчик 130мкА,  выход у неё низкоомный, а точность 0.5 градуса... В общем, круче некуда. Единственное - страдает она от слишком высоких температур - 150°С максимум.

Схема термометра:

 

 В схеме LM35 подключен к АЦП на порт микроконтроллера ATMega8. На порт D подключен ЖК-дисплей 20x4, моэно ставить 16x2. По поводу кварцевого резонатора думаю должно быть понятно, программируем и выставляем фьюзы на 10 мГц, можете прошить на внутренний кварц 8 мГц, микроконтроллер можете применить с любым индексом в конце. Печатная плата не разрабатывалась, все собиралось на макетной плате.

Термометр в работе:

Дисплей я использовал на 20 символов и 4 строки, другого не было, как было сказано исходник имеется так что редактируйте прошивку под ваш дисплей. Программное обеспечение для этого проекта написана в BASCOM AVR. Температура отображается в виде барграфа и цифрового значения, проще некуда! 

Код программы:

Config Adc = Single , Prescaler = Auto , Reference = Avcc   'config ADC

Start Adc

Dim W As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As Byte

Cls
Cursor Off
Locate 3 , 1
Lcd "0"
Locate 3 , 5
Lcd "10"
Locate 3 , 10
Lcd "20"
Locate 3 , 15
Lcd "30"
Locate 3 , 19
Lcd Chr(223) ; "C"

Do
  W = Getadc(0)
  Volt = W * 5
  Volt_d = Volt Mod 10
  Volt = Volt / 10
  Locate 1 , 1
  Lcd Volt ; "," ; Volt_d

  Cols = Volt / 2

  Locate 2 , 1
  For I = 1 To Cols
   Select Case I
   Case 1 : Lcd Chr(3)
   Case 5 : Lcd Chr(4)
   Case 10 : Lcd Chr(4)
   Case 15 : Lcd Chr(4)
   Case 20 : Lcd Chr(4)
   Case Else : Lcd Chr(0)
  End Select
  Next I

  Cols_d = Cols Mod 2
  If Cols_d > 0 Then
  Lcd Chr(5)
  Cols = Cols + 2
  Else
  Cols = Cols + 1
 End If

  For I = Cols To 20
  Select Case I
   Case 1 : Lcd Chr(2)
   Case 5 : Lcd Chr(1)
   Case 10 : Lcd Chr(1)
   Case 15 : Lcd Chr(1)
   Case 20 : Lcd Chr(1)
   Case Else : Lcd Chr(32)
   End Select
   Next I

   Waitms 1000
  Loop
End

На этом все! Собираем, эксперементируем и модифицируем! А так, хочу поделиться еще одним вариантом работы с этим датчиком, на примере Atmega16... данные исходники будут отличным примером для начинающих радиолюбителей осваивающих микроконтроллеры AVR в среде BASCOM - хотя, думаю последних (изучающих BASCOM) не так много... 

Код программы:

$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

Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32
Deflcdchar 1 , 32 , 4 , 12 , 28 , 28 , 32 , 32 , 32
Deflcdchar 2 , 32 , 4 , 14 , 31 , 31 , 32 , 32 , 32
Deflcdchar 3 , 32 , 4 , 14 , 31 , 31 , 7 , 6 , 4
Deflcdchar 4 , 32 , 4 , 14 , 31 , 31 , 31 , 14 , 4
Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32

Dim A As Word
Dim B As Byte

B = 1
Start Adc

Cursor Off
Cls
Locate 2 , 1
Lcd “thermometer”

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

 

г.Ульяновск, Artur21.

Скачать файлы проекта (~3кб.)

Категория: Измерительные устройства | Добавил: Адвансед (01.10.2014)
Просмотров: 2492 | Теги: LCD, термометр, lm35, BASCOM AVR, ATmega8 | Рейтинг: 4.7/3
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Логин:
Пароль:
Категории раздела
Источники питания и приборы
Охрана и контроль доступа
Измерительные устройства
Часы, таймеры, счетчики
Световые эффекты
Защита и контроль
Для начинающих
Разное
BASCOM AVR
Информация по МК, FAQ
Поиск
Наш опрос
Сопротивление полупроводника при повышении температуры
Всего ответов: 116

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
у нас тут все на bascom)

Подавляющее количество часов на Atmega8 выполнены с использо...

В чем тогда может быть причина, что у меня показывает лишь в...

Рейтинг@Mail.ru