Innehållsförteckning:

Batterikontroll med temperatur och batterival: 23 steg (med bilder)
Batterikontroll med temperatur och batterival: 23 steg (med bilder)

Video: Batterikontroll med temperatur och batterival: 23 steg (med bilder)

Video: Batterikontroll med temperatur och batterival: 23 steg (med bilder)
Video: [Camper van DIY#3] Deadening med Legetolex 2024, Juli
Anonim
Image
Image
Ändra från basprojekt
Ändra från basprojekt

Batterikapacitetsmätare.

Med den här enheten kan du kontrollera kapaciteten på 18650 batteri, syra och annat (det största batteriet jag testade är 6v syra batteri 4, 2A). Resultatet av testet är i milliampere/timmar.

Jag skapar den här enheten eftersom jag behöver den för att kontrollera falskt Kina -batteri.

För säkerhets skull lade jag till, med hjälp av en termistor, temperaturen på effektmotståndet och batteriet för att förhindra att det blir för varmt, med det här tricket kan jag kontrollera 6v syrabatteri utan att bränna kortet (i cykeln med urladdning en tid gå till hett effektmotstånd och enheten väntar 20 sekunder för att sänka temperaturen).

Jag väljer lite mikrokontroller atmega328 -kompatibel nano (eBay).

All kod finns här.

Steg 1: Ändra från basprojekt

Jag stal idén från projektet med OpenGreenEnergy, och jag gjorde om styrelsen för att lägga till funktioner, så nu blir det mer allmänt.

v0.1

  • VCC för Arduino beräknas nu automatiskt;
  • Tillagd variabel för att ändra inställningen på ett mer bekvämt sätt.
  • Tillagd andel utsläpp
  • Tillagd temperatur på batteri och effektmotstånd

v0.2

  • Tillagd möjlighet att välja batteri
  • Skapade prototypkort (se schemat), med skärmen, knappen och högtalaren utanför styrelsen eftersom jag i framtiden skulle vilja skapa ett paket.
  • Tillagd hantering av temperaturgränsen till effektmotståndet så att jag kan blockera processen när temperaturen stiger över 70 ° (över denna temperatureffektmotståndsreducering).

v0.3

Kommer snart en styrelse från denna tjänst

Steg 2: V0.2 i styrelsen

V0.2 i styrelsen
V0.2 i styrelsen

I v0.2 för att stödja olika typer av batterier skapade jag en struktur som måste fyllas med batterinamn, min spänning och max spänning (jag behöver hjälp för att fylla den: P).

// Struktur för batteriets typstruktur Batterityp {char name [10]; float maxVolt; float 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 använder jag en uppsättning 10k motstånd för spänningsdelaren för att läsa dubbel temperatur på analog ingång. Om du vill ha stöd för ändringsspänning måste du ändra detta värde (förklara bättre nedan):

// Batterispänningsmotstånd

#define BAT_RES_VALUE_GND 10.0 #define BAT_RES_VALUE_VCC 10.0 // Power resistors voltage resistance #define RES_RES_VALUE_GND 10.0 #define RES_RES_VALUE_VCC 10.0

Om du inte använder termistor, ställ in detta på false:

#define USING_BATTERY_TERMISTOR true

#define USING_RESISTO_TERMISTOR true

Om du använder en annan i2c -skärm måste du skriva om den här metoden:

void draw (void)

I projektet kan du hitta fritzing scheman, foton och mer.

Steg 3: Brödbräda: I2c Character Display Controller utökad

Brödbräda: I2c Character Display Controller utökad
Brödbräda: I2c Character Display Controller utökad

Jag använde en generisk teckenvisning, och jag byggde i2c -kontrollen och använde den med mitt anpassade bibliotek.

Men om du vill kan du ta en vanlig i2c -controller (mindre än 1 €) med ett standardbibliotek, koden förblir densamma. All visningskod har dragfunktion så att du kan ändra det utan att ändra andra saker.

Bättre förklarat här.

Steg 4: Brödbräda: Teckenvisning med I2c integrerat

Brödbräda: Teckenvisning med I2c integrerat
Brödbräda: Teckenvisning med I2c integrerat

Samma schema utan i2c -kontrollerad expanderad.

Steg 5: Förverkligande

För att mäta spänning använder vi principen om en spänningsdelare (mer information på Wikipedia).

I enkla ord är denna kod multiplikatorfaktorn för att mäta batterispänning.

batResValueGnd / (batResValueVolt + batResValueGnd)

Jag satte in de 2 motstånden för batResValueVolt och batResValueGnd -värdet efter och före den analoga lästråden.

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

prov1 är de genomsnittliga analoga avläsningarna;

vcc referens Arduino spänning;

1023.0 är referensmaximumvärdet för analog läsning (Arduino analog läsning går från 0 till 1023).

För att få strömstyrka behöver du spänning efter och före effektmotstånd.

När du har mätt spänningen efter och före effektmotståndet kan du beräkna milliampere som förbrukar batteriet.

MOSFET används för att starta och stoppa batteriets urladdning från effektmotståndet.

För säkerhets skull satte jag in 2 termistorer för att övervaka batteriets och motståndstemperaturen.

Steg 6: Utökningsbarhet

Sträckbarhet
Sträckbarhet
Sträckbarhet
Sträckbarhet

Jag försöker skapa en prototypkort som är utbyggbar, men för närvarande använder jag bara en minimal uppsättning stift (i framtiden lägger jag till lysdioder och andra knappar).

Om du vill ha stödspänning större än 10v måste du ändra motståndsvärdet för batteri och motstånd enligt formeln

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)

i schemat Motståndsspänning

Motståndsspänning GND 1/2/(Motståndseffektspänning 2/2 + Motståndseffektspänning GND 1/2)

Rosa är nedlödning

Steg 7: Lista över delar

Mängd Deltyp Egenskaper

  • 2 5 mm skruvterminal Inbyggd kretskortmonterad skruvplint 8A 250V LW SZUS (eBay)
  • 1 Arduino Pro Mini -klon (kompatibel Nano) (eBay)
  • 1 Grundläggande FET P-kanal IRF744N eller IRLZ44N (eBay)
  • 11 10kΩ Motståndsmotstånd 10kΩ (eBay)
  • 2 temperatursensor (termistor) 10kΩ; (eBay)
  • * Generisk manlig rubrikform ♂ (hane); (eBay)
  • * Generisk kvinnlig rubrikform ♀ (hona); (eBay)
  • 1 PerfBoard board Prototype board 24x18 (eBay)
  • 10R, 10W

    effektmotstånd (eBay) Jag hittar mitt i en gammal crt -tv.

Steg 8: Styrelse: Återställ, Gnd E -knapp för att välja batteri

Kort: Återställ, Gnd E -knapp för att välja batteri
Kort: Återställ, Gnd E -knapp för att välja batteri

I den vänstra delen av stiften hittar du knappen och summern.

Jag använder 3 knappar:

  1. en för att byta batterityp;
  2. en för att börja ladda ur valt batteri;
  3. sedan använder jag reset -pin för att starta om alla och aktivera ny operation.

All stift är redan neddragen så du måste aktivera med VCC

Återställ aktiveras med GND

Rosa är nedlödning

Steg 9: Board: I2c och Power Supply Pins

Kort: I2c och nätaggregat
Kort: I2c och nätaggregat

Till basen kan du se VCC, GND och SDA, SCL för visning (och annat i framtiden).

Rosa är nedlödning

Steg 10: Bräda: Termistor och mätspänning

Kort: Termistor och mätspänning
Kort: Termistor och mätspänning

Till höger finns stift för att läsa termistorvärdet, en för effektresistor eller termistor och den andra för (han/hon -stift att fästa) batteritermistor.

Sedan finns det analoga stift som mäter differentialspänning efter och före effektmotstånd.

Rosa är nedlödning

Steg 11: Bräda: Motstånd mot spänningsmätning

Kort: Motstånd mot mätning av spänning
Kort: Motstånd mot mätning av spänning
Kort: Motstånd mot mätning av spänning
Kort: Motstånd mot mätning av spänning

Här kan du se motståndet som gör det möjligt att stödja spänning dubbelt än arduino -stift (10v), du måste ändra detta för att stödja mer spänning.

Rosa är nedlödning

Steg 12: Lödning Steg: Alla stift

Lödningssteg: Alla stift
Lödningssteg: Alla stift
Lödningssteg: Alla stift
Lödningssteg: Alla stift

Först lägger jag till alla stift och lödder det.

Steg 13: Lödningssteg: Pulldown -motstånd och termistor

Lödningssteg: Pulldown -motstånd och termistor
Lödningssteg: Pulldown -motstånd och termistor
Lödningssteg: Pulldown -motstånd och termistor
Lödningssteg: Pulldown -motstånd och termistor

Sedan lägger jag till all nedrullningsresitor (för knappar) och i2c -kontakt (display).

Då är termistor för effektmotståndet mycket viktigt, med surt batteri som blir för varmt.

Steg 14: Lödningssteg: MOSFET, resistans mot kontroll av spänning

Lödningssteg: MOSFET, motståndskraft mot spänningskontroll
Lödningssteg: MOSFET, motståndskraft mot spänningskontroll
Lödningssteg: MOSFET, motståndskraft mot spänningskontroll
Lödningssteg: MOSFET, motståndskraft mot spänningskontroll

Nu måste vi sätta in mosfet för att aktivera urladdning och motstånd för att kontrollera spänning.

2 motstånd för spänning före effektmotstånd 2 motstånd för spänning efter effektmotstånd, när du har denna spänning kan du beräkna milliampereförbrukning.

Steg 15: Kod

Mikrocontrollern är kompatibel nano, så du måste ställa in din IDE för att ladda upp en Arduino Nano.

För att fungera måste du ladda ner koden från mitt github -arkiv.

Än måste du lägga till 3 bibliotek:

  1. Wire: standard arduino -bibliotek för i2c -protokoll;
  2. Termistorbibliotek härifrån inte biblioteket som du kan hitta i arduino IDE, utan min version;
  3. LiquidCrystal_i2c: om du använder utökad/anpassad version av i2c -adapter (min version) måste du ladda ner biblioteket härifrån, om du använder standardkomponenten kan du ta biblioteket från arduino IDE, men allt förklaras bättre här.

Jag testar inte LCD med standardbibliotek, det verkar som om de är utbytbara, men om det finns några problem blev det gratis att kontakta mig.

Steg 16: Resultat efter montering

Image
Image
Resultat efter montering
Resultat efter montering
Resultat efter montering
Resultat efter montering

Baskortet är på fotot, sedan kan vi testa det.

Steg 17: Välj först batterityp

Välj först batterityp
Välj först batterityp

Som beskrivet har vi en värdekarta med konfiguration av batteri.

// Struktur för batteriets typstruktur Batterityp {char name [10]; float maxVolt; float 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 }};

Steg 18: Starta urladdning

Börja ladda ur
Börja ladda ur
Börja ladda ur
Börja ladda ur

Klicka på den andra knappen för att starta urladdningen.

I displayen kan du se aktuella milliampere, milliampere/timmar, procentuell urladdning, batterispänning och temperatur på effektmotstånd och batteri.

Steg 19: Undantag: Batteriet har tagits bort

Image
Image
Undantag: Temperaturvarning
Undantag: Temperaturvarning

Om du tar bort batteriet urladdningsprocessen kommer att pausa, när du sätter in den startar den om med det sista värdet.

Steg 20: Undantag: Temperaturvarning

Undantag: Temperaturvarning
Undantag: Temperaturvarning
Undantag: Temperaturvarning
Undantag: Temperaturvarning
Undantag: Temperaturvarning
Undantag: Temperaturvarning

Om temperaturen (batteri eller effektmotstånd) blir för hög, stannar urladdningsprocessen.

#define BATTERY_MAX_TEMP 50

#define RESISTANCE_MAX_TEMP 69 // 70 ° på datablad (Derating resistors) #define TEMP_TO_REMOVE_ON_MAX_TEMP 20

Standardvärdet för max temperatur är 50 ° för batteri och 69 för effektmotstånd.

Som du kan se i kommentaren påverkas effektmotståndet av derating när den går över 70 °.

Om varningen höjs starta TEMP_TO_REMOVE_ON_MAX_TEMP sekunders paus för att sätta låg temperatur.

Steg 21: Testa strömstyrka

Testa strömstyrka
Testa strömstyrka

Resultatet av ampertestet är bra.

Steg 22: Paket

Med separerad komponent är paketresultatet enkelt att realisera.

I en låda måste en rektangel för LCD, hålen för tryckknappar och en extern honhylsa för att mata spänning från strömförsörjningen.

Tryckknapp behöver inte neddragningsmotstånd eftersom jag lägger till den redan ombord.

När jag har lite tid skapar jag och lägger upp det.

Rekommenderad: