Помогите разобраться с проектом тестера батареек
- Войдите на сайт для отправки комментариев
#define newLED 2 // зеленый светодиод - новая #define okLED 4 // желтый светодиод - норма #define oldLED 6 //красный светодиод - старая int analogValue = 0; float voltage = 0; int ledDelay = 2000; void setup() { pinMode(2,OUTPUT); pinMode(4,OUTPUT); pinMode(6,OUTPUT); Serial.begin(9600); } void loop() { analogValue = analogRead(0); Serial.println(analogRead(0)); voltage = 0.0048*analogValue; if(voltage >= 1.6) { digitalWrite(newLED,HIGH); Serial.println("gr"); delay(ledDelay); Serial.println("DDDDD"); digitalWrite(newLED,LOW); Serial.println("X"); } else if(voltage < 1.6 && voltage > 1.4) { digitalWrite(okLED,HIGH); Serial.println("yl"); delay(ledDelay); Serial.println("DDDDD"); digitalWrite(okLED,LOW); Serial.println("X"); } else if(voltage < 1.4) { digitalWrite(oldLED,HIGH); Serial.println("rd"); delay(ledDelay); Serial.println("DDDDD"); digitalWrite(oldLED,LOW); Serial.println("X"); } } Я собрал тестер для гальванических источников напряжения, не превышающих 5В.Схема работает, но я Столкнулся с следующей проблемой:
1) По какой то причине сами по себе с определенной периодичностью светяться светодиоды: красный,желтый,зеленый и в обратном порядке.
2) прописал Serial.println(analogRead(0)); для того, что бы посмотреть что твориться на аналоговом выходе, а там значение скачет: 143,99,87,55,242,325,450 и т.д.
3) поменял 4 платы, проблема не устраняется.
Получается, что никакие данные с щупов схемы , + и - не считываются, потому что нет батарейки, а схема что то считывает постоянно. Но если батарейку протестировать, то схема работает.
У меня вопрос: 1) кто может объяснить, почему на 0 пине скачат какие то значения ? 2) почему светятся светодиоды, если нет тестируемой батарейки? 3) как сделать что бы устранить это явление? что бы светодиоды светились только при тестировании батарейки ?
Сразу хочу сказать, что изначально пробовал прописать digitalWrite(LOW) на все светодиоды, но это не помогло. Микроконтроллер просто проигнорировал код.
Жду вашего ответа и помощи.
С уважением.
Думаю, резистор килоом на 5-10 с A0 на землю решит твои проблемы.
Вы думаете , что это проблема паразитных токов? и вы могли бы пояснить почему именно на землю? (я просто еще очень слабо разбираюсь в схемотехнике).
вы могли бы пояснить...
Нет. Настолько моё человеколюбие спахмелья не простираеца. Зато Хоровитц и Хилл могут.
Ваш рецепт помог. Подтягивающий резистор в 200 Ом 0вого пина на землю решил проблему.Но красный светодиод так же светится по умолчанию. С помощью digitalWrite(6,LOW); проблему решить не получается, светодиод не реагирует. Я попробовал так же сделать подтягивающий резистор на минус, но безрезультатно, причем на большое сопротивление в 120 кОм, светодиод так же не отреагировал.В чем тут может быть проблема?
Вы думаете , что это проблема паразитных токов? и вы могли бы пояснить почему именно на землю? (я просто еще очень слабо разбираюсь в схемотехнике).
Неа, это Попов Александр Степанович придумал. Новичкам, назло.
Что вы имеете ввиду?
В чем тут может быть проблема?
0 вольт < 1,4 Вольт.
Подтягивающий резистор в 200 Ом 0вого пина на землю решил проблему.
Матьтваю, я говорил про 5 -10 кОм, а не про 200 Ом.
вот это
if
(voltage < 1.4)
35
{
36
digitalWrite(oldLED,HIGH);
тебе ниачом не говорит?
Подтягивающий резистор в 200 Ом 0вого пина на землю решил проблему.
Матьтваю, я говорил про 5 -10 кОм, а не про 200 Ом.
Дида, а здесь с тобой не согласен, тестировать как раз с нагрузкой лучше. Здесь ТС угадал.
я думаю, что там сопротивление еще уменьшить можно будет.
Ха ха ха ха ха ! мужики ,спасибо ! точно ! все так и есть ! помогло! устройство работает !
Дида, а здесь с тобой не согласен, тестировать как раз с нагрузкой лучше. Здесь ТС угадал.
Чтоб дохлая батаейка выглядела еще дохлее? Впрочем, мошт и так, пусь.
Я б вообще кнопочку поставил 10к 20 Ом переключать. Тогда можно оценить внутреннее сопротивление. Иногда очень полезно бывает.
А еще лучше транзисторный ключ, или реле "для бедных". Померял так и так и результат на экран.