Індикатор низького рівня заряду


22

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


1
Який мікроконтролер?
Брайан Карлтон

Відповіді:


13

До основного питання про те, як виміряти напругу акумулятора, найпростішим методом є використання одного з штифтів АЦП на ардуїно.

Якщо ви забезпечуєте 5 В від акумулятора (навряд чи), ви можете запустити + прямо до одного з аналогових в штифтах і використовувати analogRead () - кожен приріст значення (від 0-1023) буде представляти 4,9 мВ. Тому помножте значення зчитування на .0049, щоб отримати вольт прочитаного.

Якщо ви працюєте вище 5 В (швидше за все), ви можете використовувати схему дільника напруги (див. Http://en.wikipedia.org/wiki/Voltage_divider ), щоб підвести напругу, яке ви надсилаєте на аналоговий вхід <= 5v. Якщо ви працюєте на 12 В, вам потрібно поділити напругу приблизно на 1/3. Потім, помноживши значення АЦП, помножте на 3, щоб отримати фактичну напругу.

Таким чином, якщо використовується напруга 12В і 1/3 дільник напруги:

#define BAT_PIN 14

float read_batt_volts(void) {

  int val = analogRead(BAT_PIN);

  float volts = (float) val * (float) 0.0049 * (float) 3;

  return(volts)
}

! c


2
Я маю до цього додати дві основні речі. По-перше, більшість акумуляторних батарей 12 В не вмирають при 0 В, але натомість на чомусь близько, щонайменше, в межах 5 В, від вашої повної напруги заряду. Загальна методика отримання вимірювань з більшою роздільною здатністю в робочому діапазоні - це зменшення напруги за допомогою ценерового діода. Резистор послідовно з ценером, і ви вимірюєте резистор. По-друге, більшість людей не усвідомлюють, що вам потрібно провести струм від акумулятора, щоб добре зрозуміти, що залишилося живлення.
Кортук

@Kortuk: Не могли б ви зробити два роз’яснення для мого навчання: (1) Щоб потрапити в загальноприйнятий діапазон напруги, ви припускаєте, що підхід стабілітроду дасть більш високу роздільну здатність, ніж метод дільника напруги? (2) Чому ви тут конкретно згадували, що "вам потрібно провести струм ..." тощо?
бордбіт

22

tinker.it опублікував "секретний" вимірювач рівня напруги в Atmega168 / atmega328. За допомогою невеликої хитрість Arduino здатний порівняти VCC з внутрішньою точністю 1.1v. Пояснення та код тут: https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/


відмінно, я запускаю atmega на батареях, і не зміг отримати надійне значення vref. дякую за публікацію цього, це вирішило моє питання, як магія!
radhoo

10

Пропозиція shutterdrone є дуже хорошою, але вона не містить деталей, оскільки це означає, що аналогове посилання напруги таке ж, як вимірювана напруга (окрім припущення, що використовується Arduino, про що прямо не зазначено).

Вам знадобиться АЦП, незалежно від того, чи є він інтегральним для вашого комп'ютера або зовнішнього компонента. АЦП потребує аналогового опорного напруги (ARef) для порівняння вхідного сигналу. Ви не хочете, щоб ARef був таким самим, як напруга, яку ви відчуваєте, оскільки тоді АЦП завжди буде бачити вхідні та опорні напруги як рівні, тому аналогове значення для напруги, що відчувається, завжди буде максимальним. Вам потрібна дуже точна посилання на аналогову напругу, яка не зміниться в міру зміни напруги живлення. АЦП порівняє цю опорну напругу з напругою акумулятора; ви можете використовувати дільник напруги, щоб зменшити напругу акумулятора, що відчувається, в діапазон ARef.

У Arduino (Atmega8 / 168/328 / тощо) є вбудований АЦП та вбудований аналоговий посилання 1,1 В, тому єдині зовнішні компоненти, які вам знадобляться, - це резистори для дільника напруги. Я думаю, ви також хотіли б використовувати дуже високі значення для резисторів, щоб зменшити поточний злив акумулятора.


2
Відмінні бали - і ви вірні, що я (неправильно) припустив Ардуїно в поєднанні. =)! c
затвор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.