Сегодня давайте посмотрим, как мы можем построить датчик дождя, чтобы измерить количество выпадающего дождя. Построить этот дождемер не так уж сложно, а общая стоимость составит менее 10 евро. Наш датчик дождя подключен к Arduino, который показывает количество дождя на ЖК-дисплее.
Расходные материалы
Чтобы сконструировать дождемер, нам понадобится:
- Стержень с резьбой из нержавеющей стали M4
- Самоконтрящиеся гайки M4
- Шайбы
- Плоский алюминиевый профиль
- Кусок оргстекла
- Arduino (UNO, Nano или другой)
- Датчик Холла
- Магнит
- Несколько метров тонкого 3-проводного кабеля
- ЖК-дисплей с интерфейсом i2c
Инструменты, которые я использовал:
- Паяльник
- 3D принтер
- Гаечные ключи
- Компьютер с Arduino IDE
Шаг 1: Как это работает
Прежде чем мы начнем строить, давайте посмотрим, как работает датчик дождя. В основании находится деталь, образованная двумя видами ложек, которая может свободно вращаться. Дождь собирается воронкой и направляется в центр. Затем вода сначала заполняет часть центральной части. В какой-то момент деталь переворачивается от веса воды, а другая половина заполняется. Этот цикл продолжается, и каждый раз, когда деталь поворачивается, это означает, что через нее прошло определенное количество воды. Магнитный датчик обнаруживает это движение и каждый раз добавляет определенную сумму к общей сумме.
Шаг 2: 3D-печать
Сначала я напечатал в 3d различные детали, из которых состоит этот датчик дождя. Для их печати я использовал белый PLA. PLA не оптимальный материал для использования на улице, и материалы, такие как PETG, лучше. Но у меня есть другие детали, напечатанные в PLA, которые находились на улице более 6 месяцев и не имеют дефектов и разрушений. Ниже приведены файлы .stl
Шаг 3: Сборка
Сначала я отрезал кусок стержня с резьбой M5. Чтобы хорошо подпилить конец, я прокрутил резьбовую планку электрической отверткой, удерживая напильник неподвижно. Затем я надеваю самоконтрящуюся гайку на резьбовую планку, навинчиваю центральную деталь и надеваю на нее еще одну гайку. Я также прикрепил резьбовой стержень к основанию в пазах. В итоге у меня центральная деталь свободно перемещается, остановленная двумя самоконтрящимися гайками и двумя шайбами, а резьбовой стержень закреплен с двух сторон гайками и шайбами.
Шаг 4: Магнитный датчик
Центральная деталь движется при прохождении воды, и мы будем использовать датчик эффекта Холла и Arduino для обнаружения движения. Датчики Холла - это датчики магнитного поля, фактически, когда я подхожу к магниту, загорается светодиод, а когда я отодвигаю его, он выключается. Для подключения датчика к Arduino я буду использовать телефонный провод, в котором 4 провода. С помощью паяльника я снял разъем, который был на плате датчика, и припаял три провода к положительному и отрицательному контактам. Я поместил датчик в прозрачный термоусадочный рукав, чтобы защитить его от воды. На обоих концах я нанес на него немного термоклея.
Шаг 5: Установка датчика
Затем я приклеил магнит к центральной части. Я приклеил датчик к основанию, чтобы магнит активировал его, когда центральная деталь находится в одном из двух положений, а также прикрепил к нему кабельную стяжку, чтобы лучше закрепить датчик.
Шаг 6: Снова сборка...
Чтобы соединить основание и воронку, я буду использовать кусок оргстекла, который позволяет мне видеть внутри, все ли работает. Чтобы соединить эти три части, я использовал плоский алюминиевый профиль, несколько кусков стержня с резьбой M4, самоконтрящиеся гайки и шайбы M4. В итоге все должно получиться так, как показано на картинке.
Шаг 7: Добавление сетки
Сначала я думал надеть противомоскитную сетку на датчик дождя, чтобы предотвратить попадание листьев. Однако сетка была слишком тонкой и удерживала воду, поэтому я пока не буду ее туда монтировать.
Шаг 8: Тест Arduino
Теперь я получил Arduino и подключил его к компьютеру. В среде IDE я изучил примеры и загрузил тот, который включает светодиод при нажатии кнопки. Я подключил положительный и отрицательный значения датчика к 5 В и gnd Arduino, и я подключил выход датчика к контакту 2. Я также поместил светодиод между gnd и выводом 13 с резистором 680 Ом.
Шаг 9: Расчеты
Теперь нам нужно выяснить, сколько воды требуется, чтобы переместить центральную деталь из одного положения в другое. Для измерения воды я буду использовать эту маленькую миллилитровую чайную ложку.
Я добавляю один миллилитр за другим, пока центральная часть не переместится и не загорится светодиод. Затем я продолжил добавлять воды, и центральная часть переместилась на другую сторону. Чтобы получить максимально точное измерение, я подсчитал миллилитры, необходимые для перемещения центральной детали 50 раз. Путем усреднения я получил 2,52 миллилитра на объем.
Однако нам нужно найти количество осадков в миллиметрах по высоте. Для этого я измерил размер воронки и нашел область. Используя формулу обратного объема, я обнаружил, что каждое движение центральной детали соответствует 0,173 мм дождя.
Расчеты, которые я сделал, можно найти на картинке выше.
Шаг 10: Arduino
Я ввел это значение в программу для Arduino, которую вы найдете ниже. Я загрузил программу в Arduino.
Чтобы увидеть данные, считываемые с датчика дождя, я буду использовать ЖК-дисплей с интерфейсом i2c. Я подключил дисплей к Arduino с помощью 4 проводов.
Я включил Arduino, и, кажется, все работает нормально. Если я наливаю воду в датчик дождя, механизм внутри ходит взад и вперед, и с каждым ходом миллиметры дождя увеличиваются.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); const float mmPerPulse = 0.173; //put here the value of rain in mm for each movement of the bucket float mmTotali = 0; int sensore = 0; int statoPrecedente = 0; void setup() { pinMode(9, INPUT); lcd.init(); lcd.init(); lcd.backlight(); lcd.setCursor(4,0); lcd.print("Pluviometro"); lcd.setCursor(7,2); lcd.print("RESET"); delay(1000); lcd.clear(); } void loop() { sensore = digitalRead(9); if (sensore != statoPrecedente) { mmTotali = mmTotali + mmPerPulse; } delay(500); statoPrecedente = sensore; lcd.setCursor(4,0); lcd.print("Pluviometro"); lcd.setCursor(2,2); lcd.print("Pioggia totale:"); lcd.setCursor(2,3); lcd.print(mmTotali); lcd.setCursor(7,3); lcd.print("mm"); }
Шаг 11: Тестирование
Теперь нам нужно протестировать датчик дождя с помощью настоящего дождя. Похоже, что он работает нормально, примерно через 30 минут дождя он показал 1 мм.
Шаг 12: Готово!
Итак, этот проект завершен.