Inhoudsopgave:

Batterijcontrole met temperatuur- en batterijselectie 23 stappen (met afbeeldingen) - Ajarnpa
Batterijcontrole met temperatuur- en batterijselectie 23 stappen (met afbeeldingen) - Ajarnpa

Video: Batterijcontrole met temperatuur- en batterijselectie 23 stappen (met afbeeldingen) - Ajarnpa

Video: Batterijcontrole met temperatuur- en batterijselectie 23 stappen (met afbeeldingen) - Ajarnpa
Video: Why Does My iPhone Battery Die So Fast? An Apple Tech's 14 iPhone Battery Drain Fixes! 2024, Juli-
Anonim
Image
Image
Wijzigen van basisproject
Wijzigen van basisproject

Batterij capaciteit tester.

Met dit apparaat kun je de capaciteit van 18650-batterij, zuur en andere controleren (de grootste batterij die ik heb getest, het is 6v Acid-batterij 4, 2A). Het resultaat van de test is in milliampère/uur.

Ik maak dit apparaat omdat ik het nodig heb om de capaciteit van de nep-china-batterij te controleren.

Voor de veiligheid heb ik, met behulp van een thermistor, de temperatuur van de stroomweerstand en de batterij toegevoegd om te voorkomen dat deze te heet wordt, met deze truc kan ik de 6v-zuurbatterij controleren zonder het bord te ontsteken (ga in de cyclus van ontladen enige tijd naar de hete vermogensweerstand en het apparaat wacht 20 seconden om de temperatuur te verlagen).

Ik selecteer kleine microcontroller atmega328 compatibele nano (eBay).

Alle code staat hier.

Stap 1: Wijzigen van basisproject

Ik heb het idee van het project van OpenGreenEnergy gestolen en ik heb het bord opnieuw gemaakt om functies toe te voegen, dus word nu algemener.

v0.1

  • VCC van Arduino wordt nu automatisch berekend;
  • Variabele toegevoegd om de instelling op een comfortabelere manier te wijzigen.
  • Toegevoegd ontlaadpercentage
  • Toegevoegde temperatuur van batterij en vermogensweerstand

v0.2

  • Mogelijkheid tot batterijselectie toegevoegd
  • Prototype bord gemaakt (zie het schema), met het scherm, de knop en de luidspreker buiten het bord omdat ik in de toekomst graag een pakket zou willen maken.
  • Beheer van de temperatuurlimiet aan de vermogensweerstand toegevoegd, zodat ik het proces kan blokkeren wanneer de temperatuur boven 70° stijgt (boven deze temperatuur vermogensweerstand derating).

v0.3

Binnenkort een bord van deze dienst

Stap 2: V0.2 van het bord

V0.2 van het bestuur
V0.2 van het bestuur

In v0.2 om verschillende soorten batterijen te ondersteunen, heb ik een structuur gemaakt die moet worden gevuld met de naam van de batterij, de minimale spanning en de maximale spanning (ik heb hulp nodig om het te vullen: P).

// Structuur van batterijtypestruct BatteryType { char name [10]; vlotter maxVolt; vlotter minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType batteryTypes[BATTERY_TYPE_NUMBER] = { { "18650", 4.3, 2.9 }, { "17550", 4.3, 2.9 }, { "14500", 4.3, 2.75 }, { "6v Acid", 6.50, 5.91 } };

Nu gebruik ik een set van 10k-weerstanden voor de spanningsdeler om de dubbele temperatuur van de analoge ingang te lezen. Als u de spanningsondersteuning wilt wijzigen, moet u deze waarde wijzigen (verklaar hierna beter):

// Weerstand batterijspanning

#define BAT_RES_VALUE_GND 10.0 #define BAT_RES_VALUE_VCC 10.0 // Spanningsweerstand vermogensweerstand #define RES_RES_VALUE_GND 10.0 #define RES_RES_VALUE_VCC 10.0

Als u geen thermistor gebruikt, stelt u dit in op false:

#define USING_BATTERY_TERMISTOR true

#define USING_RESISTO_TERMISTOR true

Als u een ander i2c-scherm gebruikt, moet u deze methode herschrijven:

nietig tekenen (nietig)

In het project vindt u verrukkelijke schema's, foto's en meer.

Stap 3: Breadboard: I2c Character Display Controller uitgebreid

Breadboard: I2c Character Display Controller uitgebreid
Breadboard: I2c Character Display Controller uitgebreid

Ik gebruikte een generieke karakterweergave en ik bouwde de i2c-controller en gebruikte deze met mijn aangepaste bibliotheek.

Maar als je wilt, kun je een normale i2c-controller (minder dan 1€) nemen met een standaardbibliotheek, de code blijft hetzelfde. Alle weergavecodes zijn in de tekenfunctie, dus je kunt dat veranderen zonder andere dingen te veranderen.

Hier beter uitgelegd.

Stap 4: Breadboard: karakterweergave met I2c geïntegreerd

Breadboard: karakterweergave met I2c geïntegreerd
Breadboard: karakterweergave met I2c geïntegreerd

Hetzelfde schema zonder i2c gecontroleerd uitgebreid.

Stap 5: Realisatie

Voor het meten van spanning gebruiken we het principe van een spanningsdeler (meer informatie op Wikipedia).

In eenvoudige bewoordingen is deze code de vermenigvuldigingsfactor voor het meten van de batterijspanning.

batResValueGnd / (batResValueVolt + batResValueGnd)

Ik heb de 2 weerstanden van batResValueVolt en batResValueGnd-waarde ingevoegd na en voor de analoge leesdraad.

batVolt = (voorbeeld1 / (1023,0 - ((BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)) * 1023,0))) * vcc;

sample1 is de gemiddelde analoge meetwaarde;

vcc referentie Arduino spanning;

1023.0 is de maximale referentiewaarde van analoog lezen (Arduino analoog lezen gaat van 0 tot 1023).

Om stroomsterkte te krijgen, heb je spanning nodig voor en na de vermogensweerstand.

Als je de spanning na en voor de vermogensweerstand hebt gemeten, kun je milliampère berekenen die de batterij verbruikt.

De MOSFET wordt gebruikt om het leeglopen van de batterij van de vermogensweerstand te starten en te stoppen.

Voor de veiligheid heb ik 2 thermistoren geplaatst om de temperatuur van de batterij en de vermogensweerstand te bewaken.

Stap 6: Uitbreidbaarheid

Uitbreidbaarheid
Uitbreidbaarheid
Uitbreidbaarheid
Uitbreidbaarheid

Ik probeer een prototype bord te maken dat uitbreidbaar is, maar voor nu gebruik ik slechts een minimale set pinnen (in de toekomst zal ik leds en andere knoppen toevoegen).

Als u een ondersteuningsspanning van meer dan 10v wilt, moet u de weerstandswaarde van de batterij en weerstand wijzigen volgens de formule:

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)

in het schema Weerstand voedingsspanning

Weerstand voedingsspanning GND 1/2 / (Weerstand voedingsspanning 2/2 + Weerstand voedingsspanning GND 1/2)

Roze is aan het solderen

Stap 7: Lijst met onderdelen

Bedrag Onderdeeltype Eigenschappen

  • 2 5mm schroefklem PCB-montage schroefklemmenblok 8A 250V LW SZUS (eBay)
  • 1 Arduino Pro Mini-kloon (compatibel Nano) (eBay)
  • 1 basis FET P-kanaal IRF744N of IRLZ44N (eBay)
  • 11 10kΩ Weerstandsweerstand 10kΩ (eBay)
  • 2 Temperatuursensor (Thermistor) 10kΩ; (eBay)
  • * Generieke mannelijke kopvorm ♂ (mannelijk); (eBay)
  • * Generieke vrouwelijke kopvorm ♀ (vrouwelijk); (eBay)
  • 1 PerfBoard bord Prototype bord 24x18 (eBay)
  • 10R, 10W

    vermogensweerstand (eBay) Ik vind de mijne in een oude crt-tv.

Stap 8: Board: Reset, Gnd E-knop om batterij te selecteren

Bord: Reset, Gnd E-knop om batterij te selecteren
Bord: Reset, Gnd E-knop om batterij te selecteren

In het linkerdeel van de pinnen vind je de knop en zoemer.

Ik gebruik 3 knoppen:

  1. een om het batterijtype te wijzigen;
  2. een om de geselecteerde batterij te ontladen;
  3. dan gebruik ik de reset-pin om alles opnieuw op te starten en een nieuwe bewerking te activeren.

Alle pin is al naar beneden getrokken, dus je moet activeren met VCC

Reset wordt geactiveerd met GND

Roze is aan het solderen

Stap 9: Bord: I2c en voedingspinnen

Bord: I2c en voedingspinnen
Bord: I2c en voedingspinnen

Op de basis zie je de VCC, GND en SDA, SCL voor weergave (en andere in de toekomst).

Roze is aan het solderen

Stap 10: Board: Thermistor en meetspanning

Bord: Thermistor en meetspanning
Bord: Thermistor en meetspanning

Aan de rechterkant zijn er pinnen om de thermistorwaarde te lezen, een voor de stroomweerstandsthermistor en de andere voor (mannelijke / vrouwelijke pinnen om te bevestigen) batterijthermistor.

Dan zijn er analoge pinnen die de differentiële spanning na en voor de vermogensweerstand meten.

Roze is aan het solderen

Stap 11: Board: Weerstand tegen het meten van spanning

Board: Weerstand tegen het meten van spanning
Board: Weerstand tegen het meten van spanning
Board: Weerstand tegen het meten van spanning
Board: Weerstand tegen het meten van spanning

Hier kun je de weerstand zien die het mogelijk maakt om de spanning dubbel te ondersteunen dan de arduino-pin (10v), je moet dit veranderen om meer spanning te ondersteunen.

Roze is aan het solderen

Stap 12: Soldeerstap: alle pinnen

Soldeerstap: alle pinnen
Soldeerstap: alle pinnen
Soldeerstap: alle pinnen
Soldeerstap: alle pinnen

Eerst voeg ik alle pinnen toe en soldeer ik het.

Stap 13: Soldeerstappen: Pulldown-weerstand en thermistor

Soldeerstappen: pulldown-weerstand en thermistor
Soldeerstappen: pulldown-weerstand en thermistor
Soldeerstappen: pulldown-weerstand en thermistor
Soldeerstappen: pulldown-weerstand en thermistor

Dan voeg ik alle pulldown-resitor (voor knoppen) en i2c-connector (display) toe.

Dan de vermogensweerstand thermistor. Het is erg belangrijk, omdat de zuurbatterij te heet wordt.

Stap 14: Soldeerstappen: MOSFET, weerstand tegen spanningscontrole

Soldeerstappen: MOSFET, weerstand tegen spanningscontrole
Soldeerstappen: MOSFET, weerstand tegen spanningscontrole
Soldeerstappen: MOSFET, weerstand tegen spanningscontrole
Soldeerstappen: MOSFET, weerstand tegen spanningscontrole

Nu moeten we mosfet invoegen om ontlading en weerstand te activeren om de spanning te controleren.

2 weerstand voor spanning voor vermogensweerstand 2 weerstand voor spanning na vermogensweerstand, als je deze spanning hebt, kun je milliampère verbruiken.

Stap 15: Coderen

De microcontroller is compatibel met nano, dus je moet je IDE instellen om een Arduino Nano te uploaden.

Om te werken moet je code downloaden van mijn github-repository.

Dan moet u 3 bibliotheken toevoegen:

  1. Draad: standaard arduino-bibliotheek voor i2c-protocol;
  2. Termistor Library vanaf hier niet de bibliotheek die je kunt vinden in arduino IDE, maar mijn versie;
  3. LiquidCrystal_i2c: als je een uitgebreide/aangepaste versie van de i2c-adapter (mijn versie) gebruikt, moet je de bibliotheek hier downloaden, als je de standaardcomponent gebruikt, kun je de bibliotheek van arduino IDE halen, maar alles wordt hier beter uitgelegd.

Ik test LCD niet met standaardbibliotheek, het lijkt mij dat ze uitwisselbaar zijn, maar als er een probleem is, neem dan gerust contact met mij op.

Stap 16: Resultaat na montage

Image
Image
Resultaat na montage
Resultaat na montage
Resultaat na montage
Resultaat na montage

Het basisbord staat op de foto, dan kunnen we het gaan testen.

Stap 17: Selecteer eerst het batterijtype

Selecteer eerst het batterijtype
Selecteer eerst het batterijtype

Zoals beschreven hebben we een waardekaart met configuratie van de batterij.

// Structuur van batterijtypestruct BatteryType { char name [10]; vlotter maxVolt; vlotter minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType batteryTypes[BATTERY_TYPE_NUMBER] = { { "18650", 4.3, 2.9 }, { "17550", 4.3, 2.9 }, { "14500", 4.3, 2.75 }, { "6v Acid", 6.50, 5.91 } };

Stap 18: Begin met ontladen

Begin met ontladen
Begin met ontladen
Begin met ontladen
Begin met ontladen

Klik op de tweede knop om te beginnen met ontladen.

In het display ziet u de huidige milliampère, milliampère/uur, ontlaadpercentage, accuspanning en temperatuur van vermogensweerstand en accu.

Stap 19: Uitzonderingen: batterij verwijderd

Image
Image
Uitzonderingen: Temperatuurwaarschuwing
Uitzonderingen: Temperatuurwaarschuwing

Als u het ontlaadproces van de batterij verwijdert, gaat het pauzeren, wanneer u het opnieuw plaatst, start het opnieuw op de laatste waarde.

Stap 20: Uitzonderingen: Temperatuurwaarschuwing

Uitzonderingen: Temperatuurwaarschuwing
Uitzonderingen: Temperatuurwaarschuwing
Uitzonderingen: Temperatuurwaarschuwing
Uitzonderingen: Temperatuurwaarschuwing
Uitzonderingen: Temperatuurwaarschuwing
Uitzonderingen: Temperatuurwaarschuwing

Als de temperatuur (batterij of vermogensweerstand) te hoog wordt, wordt het ontlaadproces onderbroken.

#define BATTERY_MAX_TEMP 50

#define RESISTANCE_MAX_TEMP 69 // 70° op datasheet (Derating weerstanden) #define TEMP_TO_REMOVE_ON_MAX_TEMP 20

De standaardwaarde voor maximale temperatuur is 50° voor batterij en 69 voor vermogensweerstand.

Zoals u kunt zien in de opmerking, wordt de vermogensweerstand beïnvloed door derating wanneer deze meer dan 70 ° gaat.

Als de waarschuwing is geactiveerd, start TEMP_TO_REMOVE_ON_MAX_TEMP seconden pauze om lage temperatuur te zetten.

Stap 21: Teststroomsterkte

Teststroomsterkte
Teststroomsterkte

Het resultaat van de stroomsterktetest is goed.

Stap 22: Pakket

Met gescheiden component is het pakketresultaat eenvoudig te realiseren.

In een doos moet een rechthoek voor het LCD-scherm, de gaten voor drukknoppen en een externe vrouwelijke loop om spanning van de voeding te leveren.

Drukknop heeft geen pull-down-weerstand nodig omdat ik het al aan boord heb toegevoegd.

Als ik wat tijd heb maak ik het en plaats ik het.

Aanbevolen: