В математике топор, подскажите :)
- Войдите на сайт для отправки комментариев
Чт, 27/11/2014 - 20:54
Есть батарея из трех элементов, нужно примерно с точностью до 0.1в измерять наряжение на каждой банке. И при снижении ниже 3.2 в. Все отрубать. В низу на схеме все понятно. Только как математически вычислить напряжение каждой банки ума не приложу.
Да простят меня Инженера,но возможно так :
обозначим банка 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
тоже самое и с остальными точками.
А причем тут математика.... Или ты и в физике так же ?
Напряжение первой батареи U0 = Ua0 * (5+10) / 5
Напряжение второй U1 = (Ua1 * (5 + 15) / 5) - U0
Напряжение третьей U2 = (Ua2 * (20 + 5) / 5) - U0 - U1
Только маленькая просьба - когда диплом получите самолеты и ракеты сами не стройте , пожалуйста :)
brokly, спасибо :)
Мне уже за 40. Корабли и самолеты строить не собираюсь. Если собирусь то только для себя :)
Делал вот так. Когда просаживал лампой напряжение на первой и второй банке то на остальных тоже менялось напряжение. Только когда просаживал на третей - менялось на третей а на других было стабильно.
01
#include <LiquidCrystal.h>
02
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
03
int
a=0;
04
int
b=0;
05
int
c=0;
06
07
void
setup
()
08
{
09
lcd.begin(16, 2);
10
pinMode(13,OUTPUT);
11
digitalWrite (13,1);
12
13
}
14
void
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
}
Ну тут у вас ерунда какая то написана :( 19 и 20 строка вообще горький абурд какой то.
Кстати .... когда банки включены как один источник достаточно измерять одно, общее напряжние, поскольку банки будут просаживаться одинаково. Если же они садятся вразнобой то их все равно пора выкидывать. Так что измеряйте общее и не мучайте себя.
Завтра попробую по вашему. Банки просаживаются примерно одинаково, но к концу разряда этот разброс увеличивается существенно даже на новых банках. У меня банки уже не первой свежести, самолет уже не тянут. Ну а как PowerBank еще походят достаточно.
я бы сопротивлюшки предложил взять слегка других номиналов 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В
Хыыы... Нулевое сопротивление брать не нужно :) В таком случае лучше бесконечное. Тут не совсем понятно опорное напряжение процессора, а вдруг оно 3.3 ? Кстати до 0.005 для второй и третьей банки не получится. Да же если предположить что опорное напряжение 4 вольта, то для второй 0,0078 , а для третьей 0,012. Но это уже значения не имеет, так демагогия :)
Хыыы... Нулевое сопротивление брать не нужно :) В таком случае лучше бесконечное.
Так оно и есть, на батарею 0 (я бы все же через 150-300 ом включил перед входом контроллера), а на землю как раз бесконечность. ТЕ, по сути на первой банке прямое измерение напряжения, без делителя.
Тут не совсем понятно опорное напряжение процессора, а вдруг оно 3.3 ? Кстати до 0.005 для второй и третьей банки не получится. Да же если предположить что опорное напряжение 4 вольта, то для второй 0,0078 , а для третьей 0,012. Но это уже значения не имеет, так демагогия :)
Не опорное напряжение, а напряжение питания имеешь ввиду?
Ибо опорное для АЦП формируется внутри чипа см. описание.
А насчет точности измерения для второй и третьей банки, разумеется делитель загрубит точность вдвое и втрое сооветственно. Но не забываем что погрешность измерения это половина цены младшего разряда и разрядность будет та же - 1024 бит. Разумеется при использовании процессора на 3.3В придется использовать делитель и на первой банке.
И смотреть ничего не нужно, опорное может формироваться несколькими способами, в том числе и от питания. Как в данном случае мы не знаем. Однако если питание чипа меньше измеряемого (например питание 3.3, а измеряемое 4) то думаю всем понятно что получится. А если учитывать и погрешность, то точность будет еще хуже, чем я написал :) Я считал точность не учитывая погрешность .
Какой из трех вариантов опорного напряжения будет использован значения не имеет.
От напряжения питания процессора зависит только необходимость делителя на первой банке. При питании от +5 без него прекрасно обходимся, а при питании 3.3 обязательно делаем.
Заряжать делитель напряжения выше требуемого опять же нет смысла, потому что просто загрубим вес для каждого бита и уроним точность. Нужно исходить из реалий, максимум измеряемого напряжения на банке 4.2В наилучшая точность будет если это окажется на уровне верхнего предела что очень хорошо подходит для предела 5В. и множители весьма удобные, по сути читаем результат измерения и умножаем(грубо) на 0.005*. для А0, на 0.01* для А1, и на 0.015* для А3, из результата вычитаем напряжение предыдущего разряда и получаем уже вольты на соответствующей банке.
* каждый из множителей нужно подобрать более точно в зависимости от номиналов и от разброса параметров соплюшек использованных в делителях.
Погрешность при измерении равна половине цены деления для прибора или в нашем случае половине веса младшего разряда! а это менее 0.01 для худшего из измерений (А2)
Я на схеме нарисовал первый делитель, но реально его не будет. Питание будет 5в. Но резюк шунтирующий первую банку всетаки поставлю, что бы баночки от делителей равномерно разряжались. Ну и подниму номиналы резисторов в несколько раз что бы не сильно делители их кушали.
Разряд до 3.2 в там почти ни чего не остается, но капелька остается на корм делителям если ни сразу поставить на зарядку, что бы делители не доели банки в ноль.
Не, погорячился на счет шунтирования первой банки, она же и так будет разряжаться от двух остальных делителей
Корм, вернее "прожорливость" делителей на самом деле для тебя весьма проблемный момент если не планируется полностью вынимать батареи после использования устройства.
Увлекаться слишком большими сопротивлениями используемыми в делителе напряжения тоже не следует, потому что если взять сопротивления совсем большими то даже малейший ток через аналоговый вход ардуины(а полностью исключить такое нельзя) полностью испортит результат измерения.
К сожалению отключать банки от делителя не планируется.
Понимаю что 20к нагрузки для 3 банок 12в оптимально. А реально на сколько можно поднять сопротивление делителя для 12в что бы было приемлимо? Считал для делитля на 150к утечка составит примерно 0.7а в год.
Probelzaelo
Нужно понимать разницу между точностью и погрешностью :) И еще, НЕ ЗАБЫВАЕМ умножать погрешность на коэфициент делителя !!!! Если хоть что то от чего то зависит, то от этого чего то зависит вся система. От опорного напряжения зависит диапазон измерения и точность. Ну это патетика, спорить далее смысла не вижу.
Из опыта работы с АЦП от атмелов общее сопротивление делителя можно задрать до 50 к. очень рекомендуется нижнее плече делителей шунтировать конденсатором 0.1 ... 1 мкф. Это позволит снизить вероятность наводок. Я кстати не понял что означает "малейший ток через аналоговый вход ардуино", в даташите на процессор можно и структуру этих самых выходных каскадов увидеть и рекомендации прочитать про утечки. Кроме того можно опытным путем вычислить этот самый ток и скоректировать значение.
Не понимаю, зачем такие сложности с расчетами резисторов для АЦП, если это не для дипломной работы? Ведь у китайцев есть готовые датчики сигнализации разряда литиевых акумуляторов, к которым можно подключать до 8-ми банок! Вот пример самого простого!
Конечно он не вырубает питание, а только пищит, но можно ведь взять сигнал с выхода буззера и пустить его на триггер, а триггер подключить к релюшке! Как Вам такой вариант? Или есть что-то ещё проще???
Полагаю что накупить готового можно много чего. Но тут немного другой форум, не покупантов, а любителей что то сделать собственными руками.
И еще, НЕ ЗАБЫВАЕМ умножать погрешность на коэфициент делителя !!!!
Видимо ты просто не разглядел что коэффициэнты уже посчитаны с учетом делителя.
Что было не понятного? Ток утечки складывается с рабочим током делителя, позволяет прикинуть на сколько способно "уплыть" реальное значение падения напряжения на резисторе по сравнению с ожидаемым, полагаю посчитать это может каждый школьник.
Вот пример самого простого!
Не поверите, но такую штуку я сделал еще год назад на attiny13.
Probelzaelo, обратите внимание на название темы - она называется "В математике топор, подскажите :)"
Я подсказал человеку оптимальный (на мой взгляд) вариант, который не требует никаких математических расчетов!
Зачем "изобреталь велосипед" если есть готовый модуль-индикатор:
- простой;
- дешевый;
- удобный в использовании!
Сам когда-то не знал, что есть такие индикаторы низкого разряда - нашел совет об их использовании, когда переделывал шуруповерт на литиевые "банки"!
И ещё хочу сказать, что для зарядки последовательно соединенных литиевых акумов нужен зарядник с балансировкой - я выбрал китайский iMax B6, но заряжает он нормально!
Просто не понятно почему теперь появились вопросы, задача же по сути та же самая.
я тоже выбрал именно его. так что от велосипеда уйти не получится ))
Задача немного другая.
По сути это будет блок питания на таком модуле 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 банок хороша, но мне не нужен лишний индикатор к тому-же который постоянно моргает и этим разрожает.