В математике топор, подскажите :)

Илья73
Offline
Зарегистрирован: 06.09.2013

Есть батарея из трех элементов, нужно примерно  с точностью до 0.1в измерять наряжение на каждой банке. И при снижении ниже 3.2 в. Все отрубать. В низу на схеме все понятно. Только как математически  вычислить  напряжение каждой банки ума не приложу.

 

mixail844
Offline
Зарегистрирован: 30.04.2012

Да простят меня Инженера,но возможно так : 

обозначим банка 1 : U1,банка 2 : U2 и 3-я соответственно 

соответственно резисторы по 5к : R1,R2,R3

и резисторы 5,10,15 :R1.2,R2.2,R3.2

из схемы я понял что А0,А1,А2 вам известны благодаря измерениям

UR1/UR1.2 = R1/R1.2,то есть зная напряжение на R1 ( что соответстует напряжению на точке A0) можно знать и напряжение на R1.2,что в сумме даст напряжение на U1

тоже самое и с остальными точками.

 

 

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А причем тут математика.... Или ты и в физике так же ?

Напряжение первой батареи U0 = Ua0 * (5+10) / 5

Напряжение второй U1 = (Ua1 * (5 + 15)  / 5) - U0

Напряжение третьей U2 = (Ua2 * (20 + 5) / 5) - U0 - U1

Только маленькая просьба - когда диплом получите самолеты и ракеты сами не стройте , пожалуйста :)

Илья73
Offline
Зарегистрирован: 06.09.2013

brokly, спасибо :)

Мне уже за 40. Корабли и самолеты строить не собираюсь. Если собирусь то только для себя :)

Делал вот так. Когда просаживал лампой напряжение на первой и второй банке то на остальных тоже менялось напряжение. Только когда просаживал на третей - менялось на третей а на других было стабильно.

01#include <LiquidCrystal.h>
02LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
03int a=0;
04int b=0;
05int c=0;
06 
07void setup()
08{
09lcd.begin(16, 2);
10  pinMode(13,OUTPUT);
11  digitalWrite (13,1);
12  
13}
14void loop()
15{
16  a = analogRead(A2);  //678 3,2 вольта
17  b = analogRead(A3); 
18  c = analogRead(A1);
19  b = (a + b) - a;
20  c = (a + b + c)-(a + b);
21 
22   
23   if ( a < 677 || b < 550 || c < 648 )
24   {
25     digitalWrite (13,0);
26   }
27   
28  lcd.setCursor(0,0);
29  lcd.print(a);
30   lcd.setCursor(5,0);
31  lcd.print(b);
32   lcd.setCursor(10,0);
33  lcd.print(c);
34  delay(500);
35  }

 

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ну тут у вас ерунда какая то написана :( 19  и 20 строка вообще горький абурд какой то.  

Кстати .... когда банки включены как один источник достаточно измерять одно, общее напряжние, поскольку банки будут просаживаться одинаково. Если же они садятся вразнобой то их все равно пора выкидывать. Так что измеряйте общее и не мучайте себя.

Илья73
Offline
Зарегистрирован: 06.09.2013

Завтра попробую по вашему. Банки просаживаются примерно одинаково, но к концу разряда этот разброс увеличивается существенно даже на новых банках. У меня банки уже не первой свежести, самолет уже не тянут.  Ну а как PowerBank еще походят достаточно.

Probelzaelo
Offline
Зарегистрирован: 15.04.2011

я бы сопротивлюшки предложил взять слегка других номиналов  0, 5+5, 5+10 чтоб результаты измерений были бы более менее в равном диаппазоне и при этом соответствовали бы диаппазону измерения аналоговых входов точность измерения должна получиться максимальной, порядка 0.005 Вольт(при питании +5)

смотри описания analogRead() и analogReference()

при измерении получаешь

А0=реальное значение напряжения на 1 банке

А1*2-А0=реальное значение на 2 банке

А2*3-А1*2=реальное значение на 3 банке

Корабли и самолены наше все! даже если они просто фонарик ))

и еще, банки можно разряжать до 2.85-2.9В

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Хыыы... Нулевое сопротивление брать не нужно :) В таком случае лучше бесконечное. Тут не совсем понятно опорное напряжение процессора, а вдруг оно 3.3 ? Кстати до 0.005 для второй и третьей банки не получится. Да же если предположить что опорное напряжение 4 вольта, то  для второй  0,0078 , а для третьей 0,012. Но это уже значения не имеет, так демагогия :) 

Probelzaelo
Offline
Зарегистрирован: 15.04.2011

brokly пишет:

Хыыы... Нулевое сопротивление брать не нужно :) В таком случае лучше бесконечное.

Так оно и есть, на батарею 0 (я бы все же через 150-300 ом включил перед входом контроллера), а на землю как раз бесконечность. ТЕ, по сути на первой банке прямое измерение напряжения, без делителя.

brokly пишет:

Тут не совсем понятно опорное напряжение процессора, а вдруг оно 3.3 ? Кстати до 0.005 для второй и третьей банки не получится. Да же если предположить что опорное напряжение 4 вольта, то  для второй  0,0078 , а для третьей 0,012. Но это уже значения не имеет, так демагогия :) 

Не опорное напряжение, а напряжение питания имеешь ввиду?

Ибо опорное для АЦП формируется внутри чипа см. описание.

А насчет точности измерения для второй и третьей банки, разумеется делитель загрубит точность вдвое и втрое сооветственно. Но не забываем что погрешность измерения это половина цены младшего разряда и разрядность будет та же - 1024 бит. Разумеется при использовании процессора на 3.3В придется использовать делитель и на первой банке.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

И смотреть ничего не нужно, опорное может формироваться несколькими способами, в том числе и от питания. Как в данном случае мы не знаем. Однако если питание чипа меньше измеряемого (например питание 3.3, а измеряемое 4) то думаю всем понятно что получится. А если учитывать и погрешность, то точность будет еще хуже, чем я написал :) Я считал точность не учитывая погрешность .

Probelzaelo
Offline
Зарегистрирован: 15.04.2011

Какой из трех вариантов опорного напряжения будет использован значения не имеет.

От напряжения питания процессора зависит только необходимость делителя на первой банке. При питании от +5 без него прекрасно обходимся, а при питании 3.3 обязательно делаем.

Заряжать делитель напряжения выше требуемого опять же нет смысла, потому что просто загрубим вес для каждого бита и уроним точность. Нужно исходить из реалий, максимум измеряемого напряжения на банке 4.2В наилучшая точность будет если это окажется на уровне верхнего предела что очень хорошо подходит для предела 5В. и множители весьма удобные, по сути читаем результат измерения и умножаем(грубо) на 0.005*. для А0, на 0.01* для А1, и на 0.015* для А3, из результата вычитаем напряжение предыдущего разряда и получаем уже вольты на соответствующей банке.

* каждый из множителей нужно подобрать более точно в зависимости от номиналов и от разброса параметров соплюшек использованных в делителях.

brokly пишет:
если учитывать и погрешность, то точность будет еще хуже, чем я написал :) Я считал точность не учитывая погрешность

Погрешность при измерении равна половине цены деления для прибора или в нашем случае половине веса младшего разряда!  а это менее 0.01 для худшего из измерений (А2)

Илья73
Offline
Зарегистрирован: 06.09.2013

Я на схеме нарисовал первый делитель, но реально его не будет. Питание будет 5в. Но резюк шунтирующий первую банку всетаки поставлю, что бы баночки от делителей равномерно разряжались. Ну и подниму номиналы резисторов в несколько раз что бы не сильно делители их кушали.

Разряд до 3.2 в там почти ни чего не остается, но капелька остается на корм делителям если ни сразу поставить на зарядку, что бы делители не доели банки в ноль.

Не, погорячился на счет шунтирования первой банки, она же и так будет разряжаться от двух остальных делителей

Probelzaelo
Offline
Зарегистрирован: 15.04.2011

Илья73 пишет:
Но резюк шунтирующий первую банку всетаки поставлю, что бы баночки от делителей равномерно разряжались. Ну и подниму номиналы резисторов в несколько раз что бы не сильно делители их кушали.
хочу обернуть внимание на то что через делители будут равномерно рзряжаться все три банки, если шунтировать для равномерности то лишь третью, но и это лишнее.  Все что действительно нужно это в процессе зарядки, шунтировать уже полную банку чтобы прекратить ее заряд но продолжить заряд остальных. если конечно не используешь нормальное зарядное устройство для ЛиПо, со встроенным балансиром.

Корм, вернее "прожорливость" делителей на самом деле для тебя весьма проблемный момент если не планируется полностью вынимать батареи после использования устройства.

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

Илья73
Offline
Зарегистрирован: 06.09.2013

К сожалению отключать банки от делителя не планируется.

Понимаю что 20к нагрузки для 3 банок 12в оптимально. А реально на сколько можно поднять сопротивление делителя для 12в что бы было приемлимо? Считал для делитля на 150к утечка составит примерно 0.7а в год.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Probelzaelo

Нужно понимать разницу между точностью и погрешностью :) И еще, НЕ ЗАБЫВАЕМ умножать погрешность на коэфициент делителя !!!!  Если хоть что то от чего то зависит, то от этого чего то зависит вся система. От опорного напряжения зависит диапазон измерения и точность.  Ну это патетика, спорить далее смысла не вижу.

Из опыта работы с АЦП от атмелов общее сопротивление делителя можно задрать до 50 к. очень рекомендуется нижнее плече делителей шунтировать конденсатором 0.1 ... 1 мкф. Это позволит снизить вероятность наводок. Я кстати не понял что означает "малейший ток через аналоговый вход ардуино", в даташите на процессор можно и структуру этих самых выходных каскадов увидеть и рекомендации прочитать про утечки. Кроме того можно опытным путем вычислить этот самый ток и скоректировать значение.

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Не понимаю, зачем такие сложности с расчетами резисторов для АЦП, если  это не для дипломной работы? Ведь у китайцев есть готовые датчики сигнализации разряда литиевых акумуляторов, к которым можно подключать до 8-ми банок! Вот пример самого простого!

Конечно он не вырубает питание, а только пищит, но можно ведь взять сигнал с выхода буззера и пустить его на триггер, а триггер подключить к релюшке! Как Вам такой вариант? Или есть что-то ещё проще???

Probelzaelo
Offline
Зарегистрирован: 15.04.2011

prosto_andriy пишет:
Не понимаю, зачем такие сложности с расчетами резисторов для АЦП, если  это не для дипломной работы?

Полагаю что накупить готового можно много чего. Но тут немного другой форум, не покупантов, а любителей что то сделать собственными руками.

brokly пишет:
Нужно понимать разницу между точностью и погрешностью
Тут согласен, речь шла о точности измерения, а не о погрешности.

brokly пишет:

И еще, НЕ ЗАБЫВАЕМ умножать погрешность на коэфициент делителя !!!! 

Видимо ты просто не разглядел что коэффициэнты уже посчитаны с учетом делителя.

brokly пишет:
Если хоть что то от чего то зависит, то от этого чего то зависит вся система. От опорного напряжения зависит диапазон измерения и точность.  Ну это патетика, спорить далее смысла не вижу.
точность даЮ зависит от качества опорного напряжения, но ради изменения диаппазона у нас делитель.

brokly пишет:
Из опыта работы с АЦП от атмелов общее сопротивление делителя можно задрать до 50 к. очень рекомендуется нижнее плече делителей шунтировать конденсатором 0.1 ... 1 мкф. Это позволит снизить вероятность наводок.
  Пожалуй в этих двух предложениях собрана вся сколько нибудь полезная автору информация.

brokly пишет:
Я кстати не понял что означает "малейший ток через аналоговый вход ардуино", в даташите на процессор можно и структуру этих самых выходных каскадов увидеть и рекомендации прочитать про утечки. Кроме того можно опытным путем вычислить этот самый ток и скоректировать значение.

Что было не понятного? Ток утечки складывается с рабочим током делителя, позволяет прикинуть на сколько способно "уплыть" реальное значение падения напряжения на резисторе по сравнению с ожидаемым, полагаю посчитать это может каждый школьник.

Илья73
Offline
Зарегистрирован: 06.09.2013

prosto_andriy пишет:

 Вот пример самого простого!

Не поверите, но такую штуку я сделал еще год назад на attiny13.

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Probelzaelo, обратите внимание на название темы - она называется "В математике топор, подскажите :)"

Я подсказал человеку оптимальный (на мой взгляд) вариант, который не требует никаких математических расчетов!

Зачем "изобреталь велосипед" если есть готовый модуль-индикатор:

- простой;

- дешевый;

- удобный в использовании!

Сам когда-то не знал, что есть такие индикаторы низкого разряда  - нашел совет об их использовании, когда переделывал  шуруповерт на литиевые "банки"!

И ещё хочу сказать, что для зарядки последовательно соединенных литиевых акумов нужен зарядник с балансировкой -  я выбрал китайский iMax B6, но заряжает он нормально!

 

 

Probelzaelo
Offline
Зарегистрирован: 15.04.2011

Илья73 пишет:

prosto_andriy пишет:
Вот пример самого простого!

Не поверите, но такую штуку я сделал еще год назад на attiny13.

Просто не понятно почему теперь появились вопросы, задача же по сути та же самая.

Probelzaelo
Offline
Зарегистрирован: 15.04.2011

prosto_andriy пишет:
я выбрал китайский iMax B6

я тоже выбрал именно его. так что от велосипеда уйти не получится ))

Илья73
Offline
Зарегистрирован: 06.09.2013

Задача немного другая.

По сути это будет блок питания на таком модуле cc cv

http://www.ebay.com/itm/121380601634?_trksid=p2060778.m2749.l2649&ssPage...

На таком интикаторе

http://www.ebay.com/itm/3PCS-three-wire-0-36-LED-DC-Digital-Voltmeter-Pa...

И схемой включение выключение по кнопке и автоматическом полном отключении при низком заряде батарей на tiny13.

Эта штука на 8 банок хороша, но мне не нужен лишний индикатор к тому-же который постоянно моргает и этим разрожает.