Съдържание:

Проверка на батерията с температура и избор на батерия: 23 стъпки (със снимки)
Проверка на батерията с температура и избор на батерия: 23 стъпки (със снимки)

Видео: Проверка на батерията с температура и избор на батерия: 23 стъпки (със снимки)

Видео: Проверка на батерията с температура и избор на батерия: 23 стъпки (със снимки)
Видео: Стоян колев се кара с яница 2024, Ноември
Anonim
Image
Image
Промяна от базовия проект
Промяна от базовия проект

Тестер за капацитет на батерията.

С това устройство можете да проверите капацитета на 18650 батерия, киселина и други (най -голямата батерия, която тествах Това е 6v Acid батерия 4, 2A). Резултатът от теста е в милиампери/часове.

Създавам това устройство, защото имам нужда от него, за да проверя капацитета на фалшива китайска батерия.

За безопасност добавих, използвайки термистор, температурата на съпротивлението на захранването и батерията, за да предотвратя прекалено горещо, с този трик мога да проверя 6V киселинна батерия без да запаля дъската (в цикъла на разреждане отидете известно време към резистор с гореща мощност и устройството изчаква 20 секунди, за да намали температурата).

Избирам малък микроконтролер atmega328 съвместим nano (eBay).

Целият код е тук.

Стъпка 1: Промяна от базовия проект

Откраднах идеята от проекта на OpenGreenEnergy и преработих дъската, за да добавя функции, така че сега да станат по -общи.

v0.1

  • VCC на Arduino вече се изчислява автоматично;
  • Добавена е променлива за промяна на настройката по по -удобен начин.
  • Добавен процент на разреждане
  • Добавена температура на батерията и захранващия резистор

v0.2

  • Добавена възможност за избор на батерия
  • Създадена е прототипна платка (вижте схематичната), с екрана, бутона и високоговорителя извън дъската, защото в бъдеще бих искал да създам пакет.
  • Добавено е управление на температурната граница към мощния резистор, така че да мога да блокирам процеса, когато температурата се повиши над 70 ° (над тази температура резисторът на мощността намалява).

v0.3

Очаквайте скоро табло от тази услуга

Стъпка 2: V0.2 на борда

V0.2 на борда
V0.2 на борда

В v0.2 за поддържане на различни видове батерии създадох структура, която трябва да бъде пълна с име на батерията, минимално напрежение и максимално напрежение (имам нужда от помощ, за да го напълня: P).

// Структура на типа батерияstruct BatteryType {char name [10]; float maxVolt; поплавък minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType тип батерии [BATTERY_TYPE_NUMBER] = {{"18650", 4.3, 2.9}, {"17550", 4.3, 2.9}, {"14500", 4.3, 2.75}, {"6v Acid", 6.50, 5.91 }};

Сега използвам набор от 10k резистори за делителя на напрежението за отчитане на двойна температура на аналоговия вход. Ако искате да промените поддръжката на напрежението, трябва да промените тази стойност (обяснете по -добре по -нататък):

// Съпротивление на напрежението на батерията

#дефинирайте BAT_RES_VALUE_GND 10.0 #дефинирайте BAT_RES_VALUE_VCC 10.0 // Съпротивление на напрежението на захранващия резистор #дефинирайте RES_RES_VALUE_GND 10.0 #дефинирайте RES_RES_VALUE_VCC 10.0

Ако не използвате термистор, задайте това на false:

#define USING_BATTERY_TERMISTOR true

#define USING_RESISTO_TERMISTOR true

Ако използвате различен i2c дисплей, трябва да пренапишете този метод:

void draw (void)

В проекта можете да намерите фризинг схеми, снимки и др.

Стъпка 3: Платка: Разширен контролер за показване на символи I2c

Макетна платка: Разширен контролер за показване на символи I2c
Макетна платка: Разширен контролер за показване на символи I2c

Използвах общ дисплей на символи и изградих i2c контролера и го използвах с моята персонализирана библиотека.

Но ако искате, можете да вземете нормален i2c контролер (по -малко от 1 €) със стандартна библиотека, кодът остава същият. Целият код на дисплея е във функция за изтегляне, така че можете да го промените, без да променяте други неща.

По -добре обяснено тук.

Стъпка 4: Макет: Дисплей на символи с интегриран I2c

Платформа: Дисплей на символи с интегриран I2c
Платформа: Дисплей на символи с интегриран I2c

Същата схема без i2c контролиран разширена.

Стъпка 5: Реализация

За измерване на напрежение използваме принципа на делител на напрежение (повече информация в Уикипедия).

С прости думи, този код е множителният фактор за измерване на напрежението на батерията.

batResValueGnd / (batResValueVolt + batResValueGnd)

Вмъкнах 2 съпротивления на стойността batResValueVolt и batResValueGnd след и преди аналоговия проводник за четене.

batVolt = (sample1 / (1023.0 - ((BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)) * 1023.0))) * vcc;

sample1 е средните аналогови показания;

vcc справочно напрежение Arduino;

1023.0 е референтната максимална стойност на аналоговото четене (аналоговото четене на Arduino отива от 0 до 1023).

За да получите ампераж, се нуждаете от напрежение след и преди захранващия резистор.

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

MOSFET се използва за стартиране и спиране на източването на батерията от захранващия резистор.

За безопасност вмъкнах 2 термистора за наблюдение на температурата на батерията и резистора на захранването.

Стъпка 6: Разширяемост

Разширяемост
Разширяемост
Разширяемост
Разширяемост

Опитвам се да създам прототипна платка, която да се разширява, но засега използвам само минимален набор от щифтове (в бъдеще ще добавя светодиоди и други бутони).

Ако искате поддържащо напрежение по -голямо от 10v, трябва да промените стойността на резистора на батерията и съпротивлението в съответствие с формулата

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)

в схемата Резисторно захранващо напрежение

Резисторно захранващо напрежение GND 1/2/(Резисторно захранващо напрежение 2/2 + Резисторно захранващо напрежение GND 1/2)

Розовото е запояване надолу

Стъпка 7: Списък на частите

Количество Свойства на типа част

  • 2 5 мм винтов терминален винтов монтажен винтов монтажен блок 8A 250V LW SZUS (eBay)
  • 1 клонинг на Arduino Pro Mini (съвместим с Nano) (eBay)
  • 1 основен FET P-канал IRF744N или IRLZ44N (eBay)
  • 11 10kΩ резистор 10kΩ (eBay)
  • 2 Температурен сензор (термистор) 10kΩ; (eBay)
  • * Обща мъжка заглавна форма ♂ (мъжка); (eBay)
  • * Обща женска заглавна форма ♀ (женска); (eBay)
  • 1 дъска PerfBoard Прототипна дъска 24x18 (eBay)
  • 10R, 10W

    захранващ резистор (eBay) Намирам моя в стар crt телевизор.

Стъпка 8: Платка: Нулиране, бутон Gnd E за избор на батерия

Борд: Нулиране, бутон Gnd E за избор на батерия
Борд: Нулиране, бутон Gnd E за избор на батерия

В лявата част на щифтовете можете да намерите бутона и зумера.

Използвам 3 бутона:

  1. един за промяна на типа батерия;
  2. един за стартиране на разреждане на избрана батерия;
  3. след това използвам щифт за нулиране, за да рестартирам всичко и да активирам нова операция.

Всички щифтове вече са изтеглени, така че трябва да активирате с VCC

Нулирането се активира с GND

Розовото е запояване надолу

Стъпка 9: Платка: I2c и щифтове за захранване

Платка: I2c и щифтове за захранване
Платка: I2c и щифтове за захранване

Към базата можете да видите VCC, GND и SDA, SCL за показване (и други в бъдеще).

Розовото е запояване надолу

Стъпка 10: Табло: Термистор и измерващо напрежение

Табло: Термистор и измервателно напрежение
Табло: Термистор и измервателно напрежение

Вдясно има щифтове за отчитане на стойността на термистора, единият за термистор на резистор за захранване, а другият за (мъжки/женски щифтове за прикачване) термистор на батерията.

След това има аналогови щифтове, които измерват диференциалното напрежение след и преди захранващия резистор.

Розовото е запояване надолу

Стъпка 11: Табло: Резистор за измерване на напрежение

Табло: Резистор за измерване на напрежение
Табло: Резистор за измерване на напрежение
Табло: Резистор за измерване на напрежение
Табло: Резистор за измерване на напрежение

Тук можете да видите резистора, който позволява да поддържа напрежение двойно от щифта arduino (10v), трябва да промените това, за да поддържате повече напрежение.

Розовото е запояване надолу

Стъпка 12: Запояване Стъпка: Всички щифтове

Стъпка на запояване: Всички щифтове
Стъпка на запояване: Всички щифтове
Стъпка на запояване: Всички щифтове
Стъпка на запояване: Всички щифтове

Първо добавям всички щифтове и го запоявам.

Стъпка 13: Стъпки за запояване: Издърпващ се резистор и термистор

Стъпки за запояване: издърпващ резистор и термистор
Стъпки за запояване: издърпващ резистор и термистор
Стъпки за запояване: издърпващ резистор и термистор
Стъпки за запояване: издърпващ резистор и термистор

След това добавям всички падащи резистори (за бутони) и i2c конектор (дисплей).

Тогава термисторът на резистора на захранването Това е много важно, тъй като киселинната батерия става твърде гореща.

Стъпка 14: Стъпки за запояване: MOSFET, устойчивост на контролно напрежение

Стъпки за запояване: MOSFET, устойчивост на контролно напрежение
Стъпки за запояване: MOSFET, устойчивост на контролно напрежение
Стъпки за запояване: MOSFET, устойчивост на контролно напрежение
Стъпки за запояване: MOSFET, устойчивост на контролно напрежение

Сега трябва да вмъкнем MOSFET, за да активираме разреждането и съпротивлението за проверка на напрежението.

2 съпротивление за напрежение преди мощност резистор 2 съпротивление за напрежение след мощност резистор, когато имате това напрежение можете да изчислите милиампер консумира.

Стъпка 15: Код

Микроконтролерът е съвместим с nano, така че трябва да настроите вашата IDE, за да качите Arduino Nano.

За да работите, трябва да изтеглите код от моето хранилище на github.

След това трябва да добавите 3 библиотека:

  1. Wire: стандартна arduino библиотека за i2c протокол;
  2. Библиотеката на Termistor от тук не е библиотеката, която можете да намерите в arduino IDE, а моята версия;
  3. LiquidCrystal_i2c: ако използвате разширена/персонализирана версия на адаптера i2c (моята версия), трябва да изтеглите библиотеката от тук, ако използвате стандартния компонент, можете да вземете библиотеката от arduino IDE, но всичко е по -добре обяснено тук.

Не тествам LCD със стандартна библиотека, струва ми се, че са взаимозаменяеми, но ако има някакъв проблем, не се колебайте да се свържете с мен.

Стъпка 16: Резултат след сглобяване

Image
Image
Резултат след сглобяване
Резултат след сглобяване
Резултат след сглобяване
Резултат след сглобяване

Основната платка е на снимката, след което можем да я тестваме.

Стъпка 17: Първо изберете Тип батерия

Първо изберете Тип батерия
Първо изберете Тип батерия

Както е описано, имаме карта на стойността с конфигурация на батерията.

// Структура на типа батерияstruct BatteryType {char name [10]; поплавък maxVolt; поплавък minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType тип батерии [BATTERY_TYPE_NUMBER] = {{"18650", 4.3, 2.9}, {"17550", 4.3, 2.9}, {"14500", 4.3, 2.75}, {"6v Acid", 6.50, 5.91 }};

Стъпка 18: Започнете разреждането

Започнете разреждането
Започнете разреждането
Започнете разреждането
Започнете разреждането

Щракването на втория бутон започва разтоварването.

На дисплея можете да видите текущи милиампери, милиампери/часове, процент на разреждане, напрежение на батерията и температура на захранващия резистор и батерията.

Стъпка 19: Изключения: Извадена батерия

Image
Image
Изключения: Температурен сигнал
Изключения: Температурен сигнал

Ако премахнете процеса на разреждане на батерията, той ще спре, когато го поставите отново, той се рестартира при последната стойност.

Стъпка 20: Изключения: Температурен сигнал

Изключения: Температурен сигнал
Изключения: Температурен сигнал
Изключения: Температурен сигнал
Изключения: Температурен сигнал
Изключения: Температурен сигнал
Изключения: Температурен сигнал

Ако температурата (батерията или резисторът на захранването) се повиши, процесът на разреждане ще спре.

#дефинирайте BATTERY_MAX_TEMP 50

#define RESISTANCE_MAX_TEMP 69 // 70 ° на листа с данни (резистори с намаление) #define TEMP_TO_REMOVE_ON_MAX_TEMP 20

Стойността по подразбиране за максимална температура е 50 ° за батерията и 69 за захранващия резистор.

Както можете да видите в коментара, мощният резистор се влияе от намаляване на стойностите при надвишаване на 70 °.

Ако предупреждението е повишено, започнете TEMP_TO_REMOVE_ON_MAX_TEMP секунди на пауза, за да поставите ниска температура.

Стъпка 21: Тествайте ампеража

Тестов ампераж
Тестов ампераж

Резултатът от теста за ампераж е добър.

Стъпка 22: Пакет

С отделен компонент резултатът от пакета е лесен за реализиране.

В кутия трябва да има правоъгълник за LCD, отворите за бутоните и външна женска цев за захранване на напрежението от захранването.

Бутонът не се нуждае от издърпващ се резистор, защото го добавям вече на борда.

Когато имам малко време, го създавам и публикувам.

Препоръчано: