Відмінності між версіями «Аналоговий датчик вологості грунту»
(→Зчитування данних з датчика) |
|||
Рядок 28: | Рядок 28: | ||
Якщо датчик підключений до постійного харчування (тип підключення 1), то рядки з символом *, можна видалити. | Якщо датчик підключений до постійного харчування (тип підключення 1), то рядки з символом *, можна видалити. | ||
− | const uint8_t pinSensor = A2; | + | const uint8_t pinSensor = A2; |
− | const uint8_t pinVcc = A1; * | + | const uint8_t pinVcc = A1; * |
− | const uint8_t pinGND = A0; * | + | const uint8_t pinGND = A0; * |
Serial.begin(9600); | Serial.begin(9600); | ||
pinMode (pinVcc, OUTPUT); * | pinMode (pinVcc, OUTPUT); * | ||
Рядок 36: | Рядок 36: | ||
digitalWrite(pinVcc, LOW ); * | digitalWrite(pinVcc, LOW ); * | ||
digitalWrite(pinGND, LOW ); * | digitalWrite(pinGND, LOW ); * | ||
− | } | + | } |
− | void loop(){ | + | void loop(){ |
digitalWrite(pinVcc, HIGH ); * | digitalWrite(pinVcc, HIGH ); * | ||
Serial.println(analogRead(pinSensor)); | Serial.println(analogRead(pinSensor)); | ||
digitalWrite(pinVcc, LOW ); * | digitalWrite(pinVcc, LOW ); * | ||
delay(5000); | delay(5000); | ||
− | } | + | } |
Для компенсації впливу флуктуацій електропровідності грунту, можна зчитувати середні показання датчика. | Для компенсації впливу флуктуацій електропровідності грунту, можна зчитувати середні показання датчика. | ||
− | const uint8_t pinSensor = A0; | + | const uint8_t pinSensor = A0; |
uint16_t arrMoisture[10]; | uint16_t arrMoisture[10]; | ||
uint16_t valMoisture; | uint16_t valMoisture; | ||
− | void setup(){ | + | void setup(){ |
Serial.begin(9600); | Serial.begin(9600); | ||
− | } | + | } |
− | void loop(){ | + | void loop(){ |
valMoisture=0; | valMoisture=0; | ||
for(int i=0; i< 9; i++){ | for(int i=0; i< 9; i++){ | ||
Рядок 61: | Рядок 61: | ||
} valMoisture/=10; | } valMoisture/=10; | ||
Serial.println(valMoisture); | Serial.println(valMoisture); | ||
− | } | + | } |
− | |||
=='''Специфікація'''== | =='''Специфікація'''== |
Версія за 13:34, 7 червня 2017
Аналоговий датчик вологості грунту підходить для створення систем автоматичного поливу рослин - незамінний помічник, як для догляду за кімнатними рослинами, так і на городі.
Зміст
Загальні відомості
Чим вище вологість грунту, тим вище її електропровідність. Датчик занурюється в грунт на відстань до 45 мм і вимірює електропровідність грунту між своїми контактами. Напруга на виході датчика прямопропорційна рівню виміряної електропровідності. Чим вище вологість грунту, тим вище рівень сигналу на виході датчика.
З графіка видно, що електропровідність грунту, а отже і вихідний сигнал датчика має флуктуації (хаотичні відхилення від середнього значення). Рівень сигналу на виході датчика лежить в діапазоні від 0 В до 4,5 В.
Підключення
Вихід датчика підключається до будь-якого аналогового входу Arduino.
Живлення
Вхідна напруга живлення 5В або 3,3В постійного струму, подається на виходи Vcc (V) і GND (G) датчика. Датчик можна підключити до постійного живлення (тип підключення 1), а можна управляти живленням датчика (тип підключення 2) якщо подавати живлення на датчик з будь-якого інформаційного виведення, тоді функцією digitalWrite () можна включати або вимикати датчик. Живлення датчика від інформаційного виведення (тип підключення 2) можливий завдяки низькому енергоспоживанню датчика (споживаний струм <4,5мА), що в рази менше ніж у аналогічних датчиків вологості грунту.
Зчитування данних з датчика
Показання датчика зчитуються викликом функції analogRead (номер_виходу); яка повертає число від 0 до 1023 (див. графік).
Приклад зчитування показань датчика з керованим харчуванням (тип підключення 2), датчик живиться від висновків A0 і A1. Якщо датчик підключений до постійного харчування (тип підключення 1), то рядки з символом *, можна видалити.
const uint8_t pinSensor = A2; const uint8_t pinVcc = A1; * const uint8_t pinGND = A0; * Serial.begin(9600); pinMode (pinVcc, OUTPUT); * pinMode (pinGND, OUTPUT); * digitalWrite(pinVcc, LOW ); * digitalWrite(pinGND, LOW ); * } void loop(){ digitalWrite(pinVcc, HIGH ); * Serial.println(analogRead(pinSensor)); digitalWrite(pinVcc, LOW ); * delay(5000); }
Для компенсації впливу флуктуацій електропровідності грунту, можна зчитувати середні показання датчика.
const uint8_t pinSensor = A0; uint16_t arrMoisture[10]; uint16_t valMoisture; void setup(){ Serial.begin(9600); } void loop(){ valMoisture=0; for(int i=0; i< 9; i++){ arrMoisture[i]=arrMoisture[i+1]; } arrMoisture[9]=analogRead(pinSensor); for(int i=0; i<=9; i++){ valMoisture+=arrMoisture[i]; } valMoisture/=10; Serial.println(valMoisture); }
Специфікація
• Напруга живлення Vcc: 5В або 3,3В • Напруга на виході датчика: 0 ... 4,5В • Максимальний споживаний струм: <4,5 мА, при Vcc = 5В і датчик занурений в грунтову воду. • Струм: I = Us / 1000, де Us - напруга на виході Signal (S) датчика • Глибина занурення в грунт: 45 мм • Робоча температура: 4 ... 85 ° С • Габарити: 65х22х7 мм (з врахуванням колодки виходів) • Вага: 1 г
Примітка
На показання датчика впливають такі чинники:
• ступінь занурення датчика в грунт (чим глибше занурений датчик, тим вище показання датчика) • тип ґрунту, його хімічні і фізичні властивості (чим щільніше грунт, тим вище показання датчика) • наявність і кількість домішок у воді, якою поливається грунт.