Главная » Статьи » Proton PICBasic

Работа с датчиком LM35DZ
 

Работа с датчиком LM35DZ

LM35DZ - точный температурный датчик, который обеспечит 10 мВ на 1 градус Цельсия в пределах 0.01 %. Его нетрудно соединить с PIC, и следующий пример показывает, как можно измерить температуру в диапазоне от - 55 до 150 градусов Цельсия.

В документации на датчик предлагается много способов использования датчика. Здесь предлагается один из них. Для этой схемы требуется 3 дополнительных компонента: 2 диода  1N914( или 1N4148) и 1 резистор на 18 кОм. 

Вот схема:

 

 

Device 16F877A
Declare XTAL 4
 
DECLARE ADIN_RES 10 ' Вычисляем 10-битный результат
DECLARE ADIN_TAD 8_FOSC ' Источник тактирования АЦП
DECLARE ADIN_STIME 50 ' Время измерения

Declare LCD_TYPE 0 ' Type of Тип используемого ЖКИ - буквенно цифровой
Declare LCD_DTPIN PORTB.4 ' Шина данныхB4,B5,B6,B7
Declare LCD_RSPIN PORTB.2 ' RS на portb.2
Declare LCD_ENPIN PORTB.3 ' E pin на portb.3
Declare LCD_INTERFACE 4 ' 4-битный интерфейсt

Dim ADC_Result As Float
Dim ADC_Total As Float
Dim Temp_Float as Float
Dim ADC_Channel as Byte
Dim ADC_Loops as Word
Dim Temp as Word
 
 
Dim Last_Result1 As Float
Dim Last_Result2 As Float
 
ADCON1 = %10000000 ' Установим porta как аналоговые входы
TRISA = $FF ' Porta - установим как входы

Delayms 150
Cls
 
Print $FE,$40,$07,$05,$07,$00,$00,$00,$00,$00 
' Запишем значения в память ЖКИ для знака градуса

ADC_Loops = 200
 
Main:
 
 ADC_Channel = 1 ' Используем первый канал измерения
 Gosub ADC_Average ' Для увеличения точности выполняем усреднение

 Temp_Float = ADC_Result ' Запомним результат

 ADC_Channel = 0 ' Используем нулевой канал измерения
 Gosub ADC_Average ' Для увеличения точности выполняем усреднение

 ' Преобразуем значения в вольты (масштабируем к 1000)
 ADC_Result = ADC_Result * 5000 / 1023
 Temp_Float = Temp_Float * 5000 / 1023 ' чтобы уменьшить ошибку
 ADC_Result = ADC_Result - Temp_Float ' И вычислим разницу

 ADC_Result = ADC_Result / 10 ' Вернем масштаб, учитывая, что 1 град. = 10 мВ

 If ADC_Result <> Last_Result1 Then ' Было ли изменение температуры?
 ' и обновим показания, если было
 Print At 1,1, Dec1 ADC_Result, 0, "C "
 Last_Result1 = ADC_Result ' Запомним новое значение
 Endif
 
Goto Main ' Начнем сначала

 
ADC_Average: ' Выполним усреднение для увеличения точности 

 ADC_Total = 0 ' Очистим суммирующий регистр
 
 ' Зациклим на выполнении усреднения определенное количество раз
 For Temp = 1 To ADC_Loops
 ADC_Result = ADIN ADC_Channel ' Получим новое значение
 ADC_Total = ADC_Total + ADC_Result ' Складываем в суммирующий регистр
 Delayus 1 ' Время на разряд внутреннего конденсатора
 Next Temp
 
 ' Определим среднее значение полученной величины
 ADC_Result = ADC_Total / ADC_Loops
 
 Return


Одноразовые контейнеры https://spb.artplast.ru/catalog/odnorazovy-konteyner-i-upak/ – универсальная тара, предназначенная для упаковки продуктов питания и не только. В зависимости от своего конкретного предназначения они могут располагать различными свойствами и характеристиками. Купить их оптом по адекватной стоимости можно в нашей торгово-производственной компании. Можете быть уверены: за свои деньги Вы получите по-настоящему надёжную упаковку.




Категория: Proton PICBasic | Добавил: ADMIN (12.01.2010)
Просмотров: 14209 | Теги: LM35, PROTON, Протон, температура, Проекты | Рейтинг: 5.0/3
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]