Сигнализация уровня воды 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 будет более точным, позволяя обнаруживать более чистую (и менее проводящую) воду... Вернитесь к аналоговому, если цифровое не надежно для обнаружения воды;)

Другие вопросы по тегам