Mäta Li-ion cell kapacitet med en arduino (3 / 4 steg)
Steg 3: Koden
Den grundläggande idén om koden är i flödesschemat.
För att beräkna spänningen i cellen, aktuellt cellens eller kapaciteten av cellen, behöver koden att läsa från ingångsstiftet och sedan multiplicera med en faktor. Jag känner inte för att skriva ut det varje gång jag behövde få ström eller spänning, så jag skrev funktioner för att berätta för spänningen, nuvarande och lilla q kapacitet. Som namnet antyder, gör koder så här:
whatisvoltage() returnerar en double med värdet i cell spänningen. Enheterna är volt.
whatiscurrent() returnerar en double med värdet av kretsen nuvarande. Dess enheter är ampere.
capacityRead() returnerar lilla f: nuvarande tider tidsintervallet. Enheterna av capacityRead() är amp timmar.
Så, hur ska du redigera denna kod för att få det att fungera för din specifika krets? Du ska inte behöva redigera något under #define grejer på toppen. Jag skrev alla konstanter som du behöver ändra för din egen krets i avsnittet #define .
#define delta 10 Sätta i hur många sekunder du vill att programmet ska använda som lilla t
#define resistor 0,62 Sätta i värdet av ditt motstånd, i ohm (min är 0,62 ohm)
#define endVoltage 2,9 Sätta i minsta spänningen du testet att köra ner till.
#define voltagePlus A1 Lägg i den pin-kod används för punkt A
#define shuntMinus A0 Lägg i den pin-kod används för punkt B
#define gate 12 Lägg i den pin-kod för där du anslutit gate eller bas.
VIKTIGT: punkt A och B måste anslutas till en analog ingång. Om du ansluter dem till en digital pin, kommer du kort sagt går runt en hög nuvarande lithium ion cell rakt igenom din arduino. Dåliga tider.
Jag rekommenderar att du inte ändrar värdet endVoltage något lägre, eftersom det är ungefär så lågt som du vill dra en lithium ion cell (från min forskning). Jag har observerat att cellen spänningen minskar från 3,8 till 3.1 i kanske en timme, då det tar bara 10 minuter för att få från 3,1 till 2,9. Så uppenbart ger cellen upp på den punkten.
Jag rekommenderar också delta bo någonstans mellan 3 och 20 sekunder. Ett absolut minimum kan du ställa in den koden fortfarande arbetet just är 2. Det måste vara ett heltal värde, så att inte sätta 2.4 eller något sånt.
För de av er undrar, använder jag en Arduino Uno.