
Датчик влажности почвы представляет собой простой датчик, состоящий из двух токопроводящих пластин. Эти пластины действуют как зонд и измеряют содержание влаги в почве.
Сопротивление между двумя проводящими пластинами обратно пропорционально содержанию влаги в почве.
Это изменение сопротивления можно использовать как меру содержания влаги в почве.
Датчик используется последовательно с фиксированным сопротивлением для формирования цепи делителя напряжения. Выходной сигнал такой схемы изменяется в зависимости от содержания влаги в почве.
Выходное напряжение может обрабатываться через АЦП и использоваться в соответствии с потребностями приложения.
Для получения дополнительной информации о датчике влажности почвы и о его использовании, обратитесь к теме Датчик влажности почвы в разделе датчики и модули.
Для получения информации об АЦП в ATmega16 и о том, как его использовать, прочтите статью АЦП в AVR.
Схема подключения датчика влажности почвы к ATmega 16/32
Полная схема подключения датчика влажности почвы показана на рисунке выше.
Здесь мы используем модуль датчика влажности почвы, который выдает как аналоговый, так и цифровой сигнал. В примере мы будем использовать аналоговый выход этого модуля.
Выход датчика влажности почвы изменяется в диапазоне значений АЦП от 0 до 1023, а для отображения считанного значения в процентах используйте приведенные ниже формулы:
Для нулевой влажности мы получаем максимальное значение 10-битного АЦП. То есть значение — 1023, что, в свою очередь, дает 0% влажности.
Пример программного кода для демонстрации примера
#include <avr/io.h> #include "LCD16x2_4bit.h" #include <util/delay.h> #include <stdlib.h> #include <string.h> void ADC_Init() { DDRA=0x0; ADCSRA = 0x87; } int ADC_Read() { ADMUX = 0x40; ADCSRA |= (1 << ADSC); while ((ADCSRA & (1 << ADIF))==0); ADCSRA |=(1 << ADIF); return(ADCW); } int main(void) { lcdinit(); lcd_clear(); ADC_Init(); char array[10]; int adc_value; float moisture; while(1) { adc_value = ADC_Read(); moisture = 100-(adc_value*100.00)/1023.00; lcd_gotoxy(0,0); lcd_print("Moisture: "); dtostrf(moisture,3,2,array); strcat(array,"% "); lcd_gotoxy(0,1); lcd_print(array); memset(array,0,10); _delay_ms(500); } }
Загрузки
Где купить
- ATMEGA16 DIP-40
- ATMEGA32 DIP-40
- LCD 1602
- Датчик влажности почвы