Главная » Статьи » 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

 




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