Датчик влажности почвы представляет собой простой датчик, состоящий из двух токопроводящих пластин. Эти пластины действуют как зонд и измеряют содержание влаги в почве.
Сопротивление между двумя проводящими пластинами обратно пропорционально содержанию влаги в почве.
Это изменение сопротивления можно использовать как меру содержания влаги в почве.
Датчик используется последовательно с фиксированным сопротивлением для формирования цепи делителя напряжения. Выходной сигнал такой схемы изменяется в зависимости от содержания влаги в почве.
Выходное напряжение может обрабатываться через АЦП и использоваться в соответствии с потребностями приложения.
Для получения дополнительной информации о датчике влажности почвы и о его использовании, обратитесь к теме Датчик влажности почвы в разделе датчики и модули.
Для получения информации об АЦП в 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
- Датчик влажности почвы




