Innehållsförteckning:
- Steg 1: Ändra från basprojekt
- Steg 2: V0.2 i styrelsen
- Steg 3: Brödbräda: I2c Character Display Controller utökad
- Steg 4: Brödbräda: Teckenvisning med I2c integrerat
- Steg 5: Förverkligande
- Steg 6: Utökningsbarhet
- Steg 7: Lista över delar
- Steg 8: Styrelse: Återställ, Gnd E -knapp för att välja batteri
- Steg 9: Board: I2c och Power Supply Pins
- Steg 10: Bräda: Termistor och mätspänning
- Steg 11: Bräda: Motstånd mot spänningsmätning
- Steg 12: Lödning Steg: Alla stift
- Steg 13: Lödningssteg: Pulldown -motstånd och termistor
- Steg 14: Lödningssteg: MOSFET, resistans mot kontroll av spänning
- Steg 15: Kod
- Steg 16: Resultat efter montering
- Steg 17: Välj först batterityp
- Steg 18: Starta urladdning
- Steg 19: Undantag: Batteriet har tagits bort
- Steg 20: Undantag: Temperaturvarning
- Steg 21: Testa strömstyrka
- Steg 22: Paket
Video: Batterikontroll med temperatur och batterival: 23 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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
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
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
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
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
I den vänstra delen av stiften hittar du knappen och summern.
Jag använder 3 knappar:
- en för att byta batterityp;
- en för att börja ladda ur valt batteri;
- 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
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
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
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
Först lägger jag till alla stift och lödder det.
Steg 13: 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
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:
- Wire: standard arduino -bibliotek för i2c -protokoll;
- Termistorbibliotek härifrån inte biblioteket som du kan hitta i arduino IDE, utan min version;
- 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
Baskortet är på fotot, sedan kan vi testa det.
Steg 17: 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
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
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
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
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:
NodeMCU Lua Billigt 6 $ -kort med MicroPython -temperatur- och luftfuktighetsloggning, Wifi och mobilstatistik: 4 steg
NodeMCU Lua Cheap 6 $ Board med MicroPython Logging av temperatur och luftfuktighet, Wifi och mobilstatistik: Detta är i grunden molnväderstation, du kan kontrollera data på din telefon eller använda någon telefon som live display Med NodeMCU -enhet kan du logga temperatur- och luftfuktighetsdata utanför , i rum, växthus, labb, kylrum eller på andra ställen komplett
Automatisk kylfläkt med servo och DHT11 temperatur- och fuktsensor med Arduino: 8 steg
Automatisk kylfläkt med servo och DHT11 temperatur- och luftfuktighetssensor med Arduino: I denna handledning lär vi oss hur man startar & rotera en fläkt när temperaturen stiger över en viss nivå
Övervaka och registrera temperatur med Bluetooth LE och RaspberryPi: 9 steg (med bilder)
Övervaka och registrera temperatur med Bluetooth LE och RaspberryPi: Den här instruerbara handlingen handlar om hur man sätter ihop ett temperaturövervakningssystem med flera noder med Bluetooth LE-sensorbugg från Blue Radios (BLEHome) och RaspberryPi 3B Tack vare utvecklingen av standarden Bluetooth LE finns det nu tillgängligt
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid