Вольт метр DC на светодиодах

next-999
Offline
Зарегистрирован: 30.09.2013

Помогите доделать вольтметр
аком 17,2v
имею RGB светодиод
нужно чтобы с 17,2в до 15в горел зеленый
потом с 15 до 14 синий
с 14 до 13 - зеленый и красный
с 13 до 12 - красный
с 12 до 0 - красный моргающий

написал небольшой код
поставил резисторы чтобы с 17,2 вольт показывал 4,5
но почему то когда 5 вольт на блоке питания поднимаю (в это время через резистор 1,5 вольт идет) - горит зеленый цвет
то есть он реагирует только с 0 до 5 вольт (на блоке питания)(через резисторы 0,5 - 3v)
в общем жостко запутался, помогите дописать код и подскажите с каким номиналом использовать резистор.

int sensePin = 0;
int ledPin = 9;
int ledPin2 = 10;

void setup() {
  analogReference(DEFAULT);
  
  pinMode (ledPin, OUTPUT);
    pinMode (ledPin2, OUTPUT);
  
}

void loop() {
  int val = analogRead(sensePin);

  if(val <1000) digitalWrite(ledPin, HIGH);
 else digitalWrite(ledPin, LOW);
  if(val >1000)digitalWrite(ledPin2, HIGH);
 
  else digitalWrite(ledPin2, LOW);
}

 

vvadim
Offline
Зарегистрирован: 23.05.2012
next-999
Offline
Зарегистрирован: 30.09.2013

Читал, неразобрался, мне нужно составить не выход на дисплей, а просто цикл со светодиодами, но как совместить коды не в курсе( новичок( 

Lipt0n
Offline
Зарегистрирован: 04.11.2013

Может проблема в том что Вы не указали порт как входной? (sensePin , INTPUT);

(через резисторы 0,5 - 3v)

По какой схеме Вы подключали всё это, по схеме делителя напряжения?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да интересно бы увидеть схему делителя, если он конечно есть

а лучше всю схему

и насколько вижу по коду у вас всего 2 выхода задействовано. а в RGB и по хотелке 3))

next-999
Offline
Зарегистрирован: 30.09.2013

Порт указан :) все срабатывает, только диапазон от 0 до 5 через резистор, хотя должно быть от 0 до 23

next-999
Offline
Зарегистрирован: 30.09.2013

эта вся схема  которую мне удалось осилить:)

Да там 2, но 3тий дописать не проблема, мне бы разобратся как сделать так чтобы я мог регулировать с 0 до 18, напряжение, но чтобы в аруино поступало от 0 до 5

Lipt0n
Offline
Зарегистрирован: 04.11.2013

Опытным путем подобрал резисторы под Ваш случай резисторы  R1-240 Ом, R2- 680 Ом. (в действительности сопротивление должно быть на порядки больше, но у нас пример)))

Подставим их в форму делителя напряжения -

Uвых=Uвх*(R1/ (R1+R2) )=17.2*(240 / (240+680))=17.2 * 0,26 = 4,48 В

Для того чтобы преобразовать это значение в показания датчика воспользуемся другой формулой -

Value=(Voltage/5)*1023=(4,48/5)*1023 = 916  

 

 

Второй светодиод загорится только в том случае, когда напряжение будет больше, чем способен выдать Ваш аккумулятор - 17,2 В

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не обязательно на выходе должно быть 5В это стереотип. вам с вашими пределами через 1В можно и 3 и 4 вольта. если вы сделаете ровно 5 вольт то при превышении входного больше 17.2 рискуете сжечь порт. а вдруг у вас скачок будет?

тут надо рассматирвать все ситуации:

1. все хорошо на входе от 17,2 до 0. светодиоды моргают или светятся и все хорошо.

2. не все хорошо. поступило напряжение выше 17,2. что делать программе? если вы не пропишите этот случай у вас ничего не загорится, или не поменяется что еще хуже (все зависит от программы), и вы даже не будете знать что что то случилось

3. совсем плохо. перепутали полярность. порт дохнет ничего не работает

и еще. если вы например с аккумулятора будете питать например мотор (думаю так и есть) то у вас еще куча шума будет  вместо стабильного например 17.2. то есть после делителя неплохо бы поставить конденсатор для сглаживания. я бы еще стабилитрон поставил если не уверен точно что не будет напряжения выше максимального

и еще. от чего питается ардуина? вы для такой простой задачи целый модуль ардуины ставить будете?

 

next-999
Offline
Зарегистрирован: 30.09.2013

Нет, мотора не будет. Будет просто индикация заряда батареи. По другим потрам будут подключены реле которые будут долеко от чипа, и помехи не будут ловить.

Порт цел, полярность не путал

next-999
Offline
Зарегистрирован: 30.09.2013

Спасибо большое Lipt0n ) на днях обязательно куплю резисторы и заморочусь :)

Lipt0n
Offline
Зарегистрирован: 04.11.2013

next-999 пишет:

Спасибо большое Lipt0n ) на днях обязательно куплю резисторы и заморочусь :)

Пожалуйста.

На схеме R1 и R2 ПЕРЕПУТАНЫ!

Учтите что номиналы не должны быть такими же(я просто подобрал номиналы для примера), главное чтобы отношение R1/(R1+R2) было равно 0,26 , номиналы же должны быть десятки КОм - как в теме, ссылку на которую Вам давали. Если испольщовать номиналы как в примере - через них пойдет большой ток и Вы рискуете спалить микросхему.

*Вобще в теории - сопротивление идеального вольтметра стремится к бесконечности.

 

UPD. Если у Вас есть резисторы, но никак не получается получить 0,26 - можете воспользоваться последовательным и/или параллельным соединением рещисторов.

В случае последовательного соединения - номиналы сопротивлений складываются.

В случае параллельного - считается по формуле R=(R1*R2)/(R1*R2)

Вот онлайн калькулятор - http://goo.gl/55WjpK