Сигнализация уровня воды Arduino
Я искал хорошее руководство по созданию системы сигнализации уровня воды на основе ардунио. Я пролистал много страниц, я не очень разбирался в обсуждении электроники.
Моя идея состоит в том, чтобы держать кабель заземления до дна резервуара и размещать кабели разной длины, чтобы определять высоту и подключать их к аналоговым контактам.
Я прочту "0", когда вода коснется кабеля. Я хотел бы использовать два светодиода, один зеленый, если уровень воды ниже уровня аварийной ситуации, красный, когда Arduino делает аварийную остановку.
Мне нужна помощь со схемой, я сохранил свою идею в схеме.
Любое предложение будет очень оценено!
Спасибо,
С наилучшими пожеланиями, Сай
2 ответа
Вы должны быть осторожны, потому что вода не идеальный проводник. Это будет иметь некоторое сопротивление. Вам нужно будет понять, что сопротивление и резистор повышающего или понижающего напряжения, который вы используете, создают делитель напряжения. Напряжение в центре этого делителя должно быть больше 3 В, чтобы вывод считывался как ВЫСОКИЙ. Чтобы это работало, вам понадобится гораздо более слабое подтягивание, что-то более похожее на мегаом.
Мне также нравится идея, что "переключатели" здесь подключены как активный низкий уровень. Поэтому заземлите днище резервуара и установите резисторы от выводов до +5В. Я сомневаюсь, что вы можете использовать внутренние подтягивания для этого, поскольку они, вероятно, будут слишком сильными. Вам придется использовать внешний подтягивающий резистор. В этом случае булавка показывает НИЗКИЙ, когда он чувствует воду.
Еще одна вещь, о которой вам следует беспокоиться, это электролиз. Ты собираешься сделать немного водорода и кислорода на проводах в контейнере, и ты собираешься оставить часть своего провода. Обычно такой датчик использует переменное напряжение, поэтому электролиз по очереди движется в обоих направлениях, и вы не теряете материал с проводов.
По сути, вода должна действовать как переключатель на ваших кабелях. Таким образом, мы можем начать с примера цифровых кнопок, предоставляемых с Arduino, и переписать его в соответствии с вашими потребностями.
кнопка
Включает и выключает светодиод (LED), подключенный к цифровому контакту 13, при нажатии кнопки, подключенной к контакту 2.
Так как мы хотим, чтобы индикатор перестал застрять, когда наша водяная кнопка нажата, мы изменим последнюю часть этого примера.
Схема:
- Светодиод подключен от контакта 13 к земле
- Вода (она же кнопка) подключена к контакту 2 и к +5В (здесь не заземление!)
- Резистор 10K подключен к контакту 2 с земли: (отсутствует на вашей шеме!)
Примечание: на большинстве Arduinos на плате уже есть светодиод, прикрепленный к контакту 13.
Теперь давайте перейдем к коду:
// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
// I slightly changed the example here, for the led to lit when no water is detected.
if (buttonState == HIGH) {
// turn LED off:
digitalWrite(ledPin, LOW);
} else {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
}
Теперь вам нужно добавить больше "водяных выключателей" и больше светодиодов для управления:)
Примечание: я выбираю использовать цифровой пин-код, так как мы ищем двоичное решение (это вода или нет?). Возможно, analogPin будет более точным, позволяя обнаруживать более чистую (и менее проводящую) воду... Вернитесь к аналоговому, если цифровое не надежно для обнаружения воды;)