07 juli 2015

Arduino Project 4. De accumeter

Mijn fiets heb ik tien jaar geleden uitgerust met twee LiPo accu's, destijds gekocht bij Batteryspace in Amerika. Ze hebben een capaciteit van 5500 mAh en 6850mAh. Ze zijn alletwee standaard voorzien met elektronica om overbelading te voorkomen, en schakelen netjes uit wanneer de spanning onder een bepaalde waarde komt. Deze accu's voldoen na tien jaar eigenlijk uitstekend en ik heb dan ook geen reden om ze te vervangen. Dus het nog prima vonkende duo krijgt gewoon een plaatje in m'n nieuwe project.

Wanneer een LiPo accu vol geladen is, heeft deze een spanning van 12.5 V, de accu schakelt zichzelf uit bij 10.6 V. De bedoeling is dat ik de lading van de accu middels een status bar op het LCD scherm laat zien.

schema spanningsdeler
Een Arduino is standaard voorzien van een aantal analoge poorten, die ik kan gebruiken om de spanning op een accu te meten. Het maximale voltage dat een Arduino op zo'n poort kan hebben is echter 5 V,  dus zal ik iets moeten doen om de spanning op een accu om te zetten naar een waarde waar de Arduino wat aan heeft. Zoiets kan met een spanningsdeler. Zo'n spanningsdeler bestaat uit twee weerstanden die, wanneer juist gekozen, de spanning verlagen van zeg maar 12 V (V-in) naar pak 'em beet 5 V (V-out). De Arduino kan aan de hand van de waarde van de gebruikte weerstanden uitrekenen wat dan de werkelijke spanning op de accu's is. Dit gebeurt dan volgens onderstaande formule. Nu zijn er op internet een aantal sites die je eenvoudig de waarden van de beide weerstanden (R1 en R2) laat berekenen. Hier is de link waarmee ik het gedaan heb.



Aan de hand van bovenstaande formule kwam ik uit op een waarde voor R1 van 100 kΩ , en R2 wordt 47 kΩ. Het schema voor het aansluiten van de accu's op de Arduino ziet er nu als volgt uit.



Nu moet ik de Arduino zo programmeren dat met bovenstaande formule het juiste voltage berekend wordt. Daarna moet het beladings-percentage berekend worden, en moet er een grafiek van beide accu's op het LCD scherm komen. Na wat puzzelwerk met de library van de aansturing van het scherm (U8glib) kom ik tot iets dat wel presentabel is...


Het 128x64 scherm


De twee balken representeren de twee accu's, en de pijl daartussen geeft aan welke van de twee accu's in gebruik is. Dit kan ik door middel van een schakelaartje omzetten. Ik zit er stiekem nog aan te denken om de Arduino zelf te laten omschakelen naar een andere accu wanneer de spanning naar een te laag niveau daalt. Maar misschien komt dit later nog. Voorlopig doe ik het even zo. Eerst maar even door naar het volgende hoofdstuk van het project: de hall sensoren voor de snelheidsmeter en de cadansmeting.

Nog even wat toelichting op het scherm hierboven: rechtsboven dus de snelheid, daaronder de cadansmeting en de temperatuur (jawel, het was warm). Die lege vakjes daaronder worden straks gevuld door de icoontjes voor de richting aanwijzer, de zijlichten en de hoofdverlichting,

8 opmerkingen:

Tim van der Elst zei

Wat een ontzettend gaaf project. Knap hoe je dat allemaal in elkaar knutselt en dat het dan nog werkt ook! Ik kijk uit naar het einderesultaat en de tussenliggende deelstappen.

Groeten Tim

Rob Broek zei

Dank ! Tot nu toe gaat alles inderdaad volgens plan. Nou maar hopen dat dit zo blijft. De grootste uitdaging wordt om zometeen alles in een klein kastje te monteren.

Birger Landuyt zei

komt er ook een stroommeter bij?
ik heb een volt/stroom meter in mijn mango en dat is wel interessant om te zien hoeveel alles verbruikt.
Als je weet hoeveel alles individueel verbruikt en alles schakelt met je arduino kan je het ook berekenen (maar dan heb je geen controle op stroomverliezen)

Rob Broek zei

Ik zat er inderdaad aan te denken om er een in te bouwen, dus die heb ik in bestelling staan ;-) Het is inderdaad interessant om een beetje in de gaten te kunnen houden wat de verschillende componenten zoal verbruiken.

Reinier Gerritsen zei

Leuk project! Ik heb beroepshalve diverse acculaders en bewakingscircuits gemaakt. Jouw methode om spanning te meten is eigenlijk niet zo geschikt voor LiPo accu's. Dit komt omdat bij het ontladen de spanning heel lang ongeveer gelijk blijft om pas in te storten als de accu bijna leeg is. De beste methode is om laad en ontlaadstroom te meten en zo een balans bij te houden hoeveel lading resteert. Dit is echter niet zo eenvoudig, al zijn er tegenwoordig ic's op de markt die dit bijhouden.

Reinier Gerritsen zei
Deze reactie is verwijderd door de auteur.
Rob Broek zei

Hallo Reinier.
Je hebt gelijk. Ik heb hierover heel lang geleden eens wat grafiekjes over het spanningsverloop in mijn blog gezet. Maar je hebt mij wel aan het denken gezet. Ik hou het voorlopig even bij deze oplossing, maar ik sluit niet uit dat ik dit later nog aan ga passen. De arduino wordt veel gebruikt door RC-clubs, en die maken ook weer vaak gebruik van LiPo accu's. Dus daar moeten wel wat betere LiPo monitoring tools beschikbaar zijn (of komen).

Rode Pioneer zei

Reinier stelt terecht dat het monitoren van de totale accu spanning risico's heeft. Hij stelt voor stroom bij te houden.

Wat je echter ook kan doen, is per cel de spanning bij houden. Je hebt op je Arduino genoeg analoge ingangen om dat te doen. Ik rij zelf met 14.8 (4 cellen) en monitor per cel. Als de laagste cel onder de 3.5 komt krijg ik een alarm.

Het mooie aan de Arduino is dat je als de laagste cel te laag uit komt je zelf het verbruik kan terug schroeven (koplamp dimmen). Als je dat op tijd doet kan je veel langer met je accu doen terwijl je ook beter beschermd bent tegen diep ontladen.