Помогите разобраться с проектом тестера батареек
- Войдите на сайт для отправки комментариев

#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{36digitalWrite(oldLED,HIGH);тебе ниачом не говорит?
Подтягивающий резистор в 200 Ом 0вого пина на землю решил проблему.
Матьтваю, я говорил про 5 -10 кОм, а не про 200 Ом.
Дида, а здесь с тобой не согласен, тестировать как раз с нагрузкой лучше. Здесь ТС угадал.
я думаю, что там сопротивление еще уменьшить можно будет.
Ха ха ха ха ха ! мужики ,спасибо ! точно ! все так и есть ! помогло! устройство работает !
Дида, а здесь с тобой не согласен, тестировать как раз с нагрузкой лучше. Здесь ТС угадал.
Чтоб дохлая батаейка выглядела еще дохлее? Впрочем, мошт и так, пусь.
Я б вообще кнопочку поставил 10к 20 Ом переключать. Тогда можно оценить внутреннее сопротивление. Иногда очень полезно бывает.
А еще лучше транзисторный ключ, или реле "для бедных". Померял так и так и результат на экран.