Ви не увійшли.
Сторінки 1
Правильно ли я собрал схему?
Тупо все по книжке сделал, только цепь по схеме,картинок не было , но как оказалось и тут может быть какой-то косяк. Светодиоды горят поочередно, как-то рандомно. При тесте батареек вроде реагируют, и то не в 100% случаях и всегда с какой-то небольшой задержкей.
Что делаю не так?
// Проект 6 - Тестер для одноэлементных батареек
#define newLED 2 //зеленый светодиод "новая"
#define okLED 4 //желтый cветодиод "норма"
#define oldLED 6 //красный светодиод "старая"
int analogValue = 0;
float voltage = 0;
int ledDelay = 2000;
void setup()
{
pinMode(newLED, OUTPUT);
pinMode(okLED, OUTPUT);
pinMode(oldLED, OUTPUT);
}
void loop()
{
analogValue = analogRead(0);
voltage = 0.0048*analogValue;
if (voltage >= 1.6)
{
digitalWrite(newLED, HIGH);
delay(ledDelay);
digitalWrite(newLED, LOW);
}
else if (voltage < 1.6 && voltage > 1.4)
{
digitalWrite(okLED, HIGH);
delay(ledDelay);
digitalWrite(okLED, LOW);
}
else if (voltage <= 1.4)
{
digitalWrite(oldLED, HIGH);
delay(ledDelay);
digitalWrite(oldLED, LOW);
}
}
Попробовал от себя добавить значение low всем LEDам в setup, но потом удалил т.к. ничего не дало?
Что не так?
Неактивний
Ну-ну. Учебники они такие. Они до добра не доведут.
/*Тестер для одноэлементных батареек
тестируемая батарейка -> AO;
GND->GND
светодиод зеленый ->2 (led_green_pin) 1 горит 0 нет
GND->GND
светодиод желтый ->4 (led_yellow_pin) 1 горит 0 нет
GND->GND
светодиод красный ->6 (led_red_pin) 1 горит 0 нет
*/
const int battery_pin = A0 ; //нога измеритель батареек
float voltage = 0;
const int led_green_pin = 2 ; //зеленый светодиод "новая"
const int led_yellow_pin = 4 ; //желтый cветодиод "норма"
const int led_red_pin = 6 ; //красный светодиод "старая"
void setup() {
pinMode(led_green_pin, OUTPUT);
pinMode(led_yellow_pin, OUTPUT);
pinMode(led_red_pin, OUTPUT);
}
void loop() {
digitalWrite(led_green_pin, 0);
digitalWrite(led_yellow_pin, 0);
digitalWrite(led_red_pin, 0);
delay(1000);
voltage = analogRead(battery_pin) * 5 / 1023;
if (voltage >= 1.6) digitalWrite(led_green_pin, 1);
if (voltage < 1.6 && voltage > 1.4) digitalWrite(led_yellow_pin, 1);
if (voltage <= 1.4) digitalWrite(led_red_pin, 1);
delay(1000);
}
Неактивний
Ваш код для моей цепи написан был? Просто он ещё хуже работает, светодиоды тоже рандомно моргают, но тестер уже не работает. Если не так, то подскажите что исправить нужно в цепи?
С другом посидели над кодом методом проб вот что самое лучшее получилось родить. Вместо батареек использовал сетевой адаптер , чтоб удобнее было, поменял диапозоны напряжений . Светодиоды опять же ведут себя надекватно, горит то один, то два, то три, но они мерцают, дребезжат. На адаптере напряжение при установленном 4.5 В выдает, 4.61 вольт, но сам тестер врубает как видите желтый до 4.92, т.е. в самой цепи гуляет какое-то напряжение где-то в 305 вольт.
Начинаю подозревать, что это косяк моей ардуины.. Ещё раз прошу посмотреть, правильно ли я собрал цепь, а то может я упускаю нечто простейшее фундаментальное , т.к. это первая схема которую я собрал не по картинке.
// Проект 6 - Тестер для одноэлементных батареек
#define newLED 2 //зеленый светодиод "новая"
#define okLED 4 //желтый cветодиод "норма"
#define oldLED 6 //красный светодиод "старая"
int analogValue = 0;
float voltage = 0;
int ledDelay = 2000;
void setup()
{
pinMode(newLED, OUTPUT);
pinMode(okLED, OUTPUT);
pinMode(oldLED, OUTPUT);
}
void loop()
{
analogValue = analogRead(0);
voltage = 0.0048*analogValue;
if (voltage >=1 && voltage <= 4) //напряжение от 1 до 4 - горит красный
{
digitalWrite(newLED, HIGH);
digitalWrite(okLED, LOW);
digitalWrite(oldLED, LOW);
}
else if (voltage > 4 && voltage <= 4.92) //напряжение от 4 до 4.92 - горит красный
{
digitalWrite(newLED, LOW);
digitalWrite(okLED, HIGH);
digitalWrite(oldLED, LOW);
//delay(ledDelay);
//digitalWrite(okLED, LOW);
}
else if (voltage > 4.92)
{
digitalWrite(okLED, LOW);
digitalWrite(newLED, LOW);
digitalWrite(oldLED, HIGH);
}
else
{
digitalWrite(oldLED, LOW); //если напряжение меньше 1 вольта - ничего не горит
digitalWrite(okLED, LOW); // но по факту они по прежнему горят
digitalWrite(newLED, LOW);
}
}
Неактивний
Нет . У вас проблемы в схемотехнике. 1 - на батарейку надо дать нагрузку. Хотя бы 1 кОм паралельно батарейке. 2 - бреадбоард тоже не лучший вариант. Там тоже контакты гуляют.
ПС: Из фундаментального. На батарейке не стабильное напряжение. Внутреняя ЭДС, внутренее сопротивление. Нужна какая-то наргузка. А аналоговый вход Ардуины такой нагрузки не дает. Тем более там АЦП одно и оно переключается по аналоговым выходам.
Остання редакція qwone (2016-11-23 01:30:47)
Неактивний
Сторінки 1