Подключение и индикация датчика уровня жидкости
- Войдите на сайт для отправки комментариев
Ср, 11/07/2012 - 21:43
Arduino Duemilanove.
Подключен к 14 pin датчик уровня жидкости, который работает как ключ, размыкает и замыкае цепь. http://www.ebay.com/itm/New-Liquid-Water-Level-Sensor-Horizontal-Float-S...
Последовательно датчику жидкости подключен резистор на 220 ОМ
К 10 pin подключен светодиод.
Необходимо что бы когда датчик жидкости менял свое положение (размыкал цепь или замыкал) загорался или тух светодиод соответственно.
Пример кода, но не работает, так как хочу, помогите кто может.
void setup(void){ Serial.begin(9600); pinMode(10, OUTPUT);//иницилизация светодиода pinMode(14, INPUT);//подключение датчика жидкости delay(500); } void WaterSensor(void) { if (14==HIGH) { digitalWrite(10, HIGH);} if (14==LOW) {digitalWrite(10, LOW);}
Добавил переменную в код, поменял резистор на 10 кОМ диод то горит, то не горит. Это говорит что скорее всего что неправильно сконфигурирован вход. помогите сделать так когда поплавок внизу(контакт замкнут) светодиод горит, когда поплавок вверху(контакт разомкнут) светодиод не горит, либо горит другого цвета.
Это говорит о том, что скорее всего вы не правильно подключаете датчик...
Убераете резистор вообще и подключаете один провод датчика к GND, а другой к цифровому выводу 14.
Это говорит о том, что скорее всего вы не правильно подключаете датчик...
Убераете резистор вообще и подключаете один провод датчика к GND, а другой к цифровому выводу 14.
Если он работает как ключ, то надо подключать так же как и кнопку
А так в одном положении вход будет притянут к земле, а в другом висеть в воздухе. Или я не прав?
Нет, там в коде включена внутренняя подтяжка к +5V.
Поломав голову сделал так.
Как бы все работает, при опускани поплавка светодиод зажигается, при поднятии тухнет.
Подскажите, оптимальное это решение?
Оптимальное решение уже выше я вам написал. Или мой код вас чем-то не устраивает? Или быть может не работает?
Нет, там в коде включена внутренняя подтяжка к +5V.
Внутренняя подтяжка включается програмно, по умолчанию она не включена. Чтоб уё включить надо назначить порт как вход и записать в него "0" или "1" (командой digitalWrite), в зависимости от того к замле или плюсу хотите подтянуть вход. Внутренняя подтяжка осуществляется через резак 10к.
Записать в 14 порт "1" достаточно один раз в void setup().
PS: может мне кто поможет в теме "Не закрывается файл на SD карте "
Оптимальное решение уже выше я вам написал. Или мой код вас чем-то не устраивает? Или быть может не работает?
Ваш код работает, и мне подсказали что более оптимальный, но я не до конца его понял (не программер я и до конца не осознал оператор !). Спасибо за помощь.
Это операция инверсии, тоесть если стоит перед значением "!" то результат обратный. Вот по этому проверяется одно и тоже условие с отличием только в "!".
Внутренняя подтяжка включается програмно, по умолчанию она не включена. Чтоб уё включить надо назначить порт как вход и записать в него "0" или "1" (командой digitalWrite), в зависимости от того к замле или плюсу хотите подтянуть вход. Внутренняя подтяжка осуществляется через резак 10к.
Это не совсем так - подтянуть к земле ("pull-down") порт не удастся. Только к плюсу ("pull-up"). Запись нуля отключит какую бы то ни было подтяжку.
Вот что Atmel пишет в дейташите на ATMega328:
If PORTxn is written logic one when the pin is configured as an input pin, the pull-up resistor is activated. To switch the pull-up resistor off, PORTxn has to be written logic zero or the pin has to be configured as an output pin. The port pins are tri-stated when reset condition becomes active, even if no clocks are running.
Внутренняя подтяжка включается програмно, по умолчанию она не включена. Чтоб уё включить надо назначить порт как вход и записать в него "0" или "1" (командой digitalWrite), в зависимости от того к замле или плюсу хотите подтянуть вход. Внутренняя подтяжка осуществляется через резак 10к.
Это не совсем так - подтянуть к земле ("pull-down") порт не удастся. Только к плюсу ("pull-up"). Запись нуля отключит какую бы то ни было подтяжку.
Вот что Atmel пишет в дейташите на ATMega328:
If PORTxn is written logic one when the pin is configured as an input pin, the pull-up resistor is activated. To switch the pull-up resistor off, PORTxn has to be written logic zero or the pin has to be configured as an output pin. The port pins are tri-stated when reset condition becomes active, even if no clocks are running.
Извиняюсь, ошибся.
PS: может мне кто поможет в теме "Не закрывается файл на SD карте "
to demon969
подскажите про работу самого датчика, что-то я плдохо уловил :(
в баночке есть шарик, который двигается вместе с уровнем воды и в зависимости от положения, например уровень снизился производит замыкание? так?
Но высота баночки мелкая, т.е. и уровень воды контролируется в очень небольшом пределе...
Оно не контролирует уровень все время и не работает как стрелка бензобака) Срабатывает при достижении определенного уровня жидкости, скажем поставили в верху бочки и как только бочка будет заполнена отключаем насос
ЗЫ. Да принцип попловка унитаза тот же) только там механически вода перекрывается, а тут ключ электрический замыкается/размыкается
неее....ну такие вещи понятны...хотя если брать пример с бочкой почему бы простой поплавок как у бочка унитаза не использовать? хотя там скорее всего давление не то на входе...
Рекомендую классную и простую схему измерителя уровня воды в баке отсюда http://radiokot.ru/forum/viewtopic.php?f=3&t=108460