Помогите разобраться с проектом тестера батареек

CrusherHead
Offline
Зарегистрирован: 21.02.2019

#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) на все светодиоды, но это не помогло. Микроконтроллер просто проигнорировал код.

 

Жду вашего  ответа и помощи.

С уважением.

 
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Думаю, резистор килоом на 5-10 с A0 на землю решит твои проблемы.  

CrusherHead
Offline
Зарегистрирован: 21.02.2019

Вы думаете , что это проблема паразитных токов?  и вы могли бы пояснить почему именно на землю? (я просто еще очень слабо разбираюсь в схемотехнике).

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

CrusherHead пишет:

вы могли бы пояснить...

Нет. Настолько моё человеколюбие спахмелья не простираеца.  Зато Хоровитц и Хилл могут.  

CrusherHead
Offline
Зарегистрирован: 21.02.2019

Ваш рецепт помог. Подтягивающий резистор в 200 Ом  0вого пина на землю решил проблему.Но красный светодиод так же светится по умолчанию. С помощью digitalWrite(6,LOW); проблему решить не получается, светодиод не реагирует. Я попробовал так же сделать подтягивающий резистор на минус, но безрезультатно, причем на большое сопротивление в 120 кОм, светодиод так же не отреагировал.В чем тут может быть проблема? 

bwn
Offline
Зарегистрирован: 25.08.2014

CrusherHead пишет:

Вы думаете , что это проблема паразитных токов?  и вы могли бы пояснить почему именно на землю? (я просто еще очень слабо разбираюсь в схемотехнике).

Неа, это Попов Александр Степанович придумал. Новичкам, назло.

CrusherHead
Offline
Зарегистрирован: 21.02.2019

Что вы имеете ввиду?

bwn
Offline
Зарегистрирован: 25.08.2014

CrusherHead пишет:

В чем тут может быть проблема? 

0 вольт < 1,4 Вольт.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

CrusherHead пишет:

Подтягивающий резистор в 200 Ом  0вого пина на землю решил проблему.

Матьтваю, я говорил про 5 -10 кОм, а не про 200 Ом.  

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

вот это 

if(voltage < 1.4)
35   {
36   digitalWrite(oldLED,HIGH);

тебе ниачом не говорит?

bwn
Offline
Зарегистрирован: 25.08.2014

DetSimen пишет:

CrusherHead пишет:

Подтягивающий резистор в 200 Ом  0вого пина на землю решил проблему.

Матьтваю, я говорил про 5 -10 кОм, а не про 200 Ом.  

Дида, а здесь с тобой не согласен, тестировать как раз с нагрузкой лучше. Здесь ТС угадал.

CrusherHead
Offline
Зарегистрирован: 21.02.2019

я думаю, что там сопротивление еще уменьшить можно будет.

CrusherHead
Offline
Зарегистрирован: 21.02.2019

Ха ха ха ха ха ! мужики ,спасибо ! точно ! все так и есть ! помогло! устройство работает !

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

bwn пишет:

Дида, а здесь с тобой не согласен, тестировать как раз с нагрузкой лучше. Здесь ТС угадал.

Чтоб дохлая батаейка выглядела еще дохлее?  Впрочем, мошт и так, пусь. 

nik182
Offline
Зарегистрирован: 04.05.2015

Я б вообще кнопочку поставил 10к 20 Ом переключать. Тогда можно оценить внутреннее сопротивление. Иногда очень полезно бывает. 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

А еще лучше транзисторный ключ, или реле "для бедных". Померял так и так и результат на экран.