Leon van der Horst - Microcontrollers

Accu meter

Arduino

Boarduino

Basic Stamp

JeeLink/Node

Projecten

Workshop

Links


Één van de eisen voor de motor regelaar is het bewaken van de accu..

 

Accu meter: Ontwikkeld door Piet Vet.

Uitleg schema:

Ons uitgangspunt is de grotere voltages, zoals van de accu, galvanisch gescheiden te houden van de microcontroller. Dit is bereikt door de optocoupler (TLP731). De interne LED laat de interne transistor vrijwel lineair opengaan naarmate de stroom door deze LED toeneemt. De waarden van de weerstanden zorgen voor een soort schaling van de te meten spanning (12-24V) naar een uitgangsspanning van 0-5V, welke te meten is via de analoge input van de Atmel328. Zodra de ingangsspanning onder de 5V komt, wordt de uitgangsspanning 0V. Dit bereik is ruim voldoende, want een accu van bijvoorbeeld 12V die onder de 10V komt is in feite gewoon leeg te beschouwen. De maximale stroom door de optocoupler is 16,5mA bij een ingangsspanning van 27,6V.
De meetgegevens zijn zichtbaar gemaakt in de volgende twee grafieken: Grafiek1 en Grafiek2.

 

Onderdelen:
IC = 1x TLP731
R = 1x 1,5 kOhm, 1x 3,3 kOhm, 1x 100 kOhm

 

Bijbehorende sketch:

Voor een test is CIRC-10 heel goed te gebruiken, dat is de sketch uit de Oomlout workshop.
De uitgebreide sketch inclusief omrekening naar de voltage waarden kun je
hier
downloaden.

Uitleg sketch:
De waarden die gemeten worden zijn van 8 - 24V. Proefondervindelijk is daarbij geconstateerd dat op de Arduino een voltage komt in het bereik van 0,85 - 4,55V.
De gemeten waarde op de analoge poort van de Arduino is een getal van 0 t/m 1023. Dit is een digitale waarde die representatief is voor de aangeboden analoge spanning. Dit getal zetten we eerst om naar een analoge waarde in de sketch door de gemeten waarde te delen door 1024 en vervolgens te vermenigvuldigen met 5. Deze analoge waarde is via de optocoupler als het ware geschaald van een bereik van 0-24V naar 0-5V. Via de map functie wordt de gemeten waarde terug geschaald zodat je dan weet wat de accuspanning is. Nu is een heel groot nadeel van deze map functie dat deze alleen maar werkt met integers, sterker: De functie zet alle aangeboden waarden om naar een integer, ofwel hij rond alle getallen af naar hele waarden. Dat is iets wat we juist niet willen. De map functie op zich is niets anders dan het uitvoeren van een formule: "AccuVoltage = (Accumeter - UoutMin) * (UinMax - UinMin) / (UoutMax - UoutMin) + UinMin". Daarom wordt er nog een berekening gedaan via deze formule die met floats (waarden met getallen achter de komma) werkt. En dan krijg je wel een nauwkeurige omrekening!

 

Alternatief:

Een zeer eenvoudig alternatief is via deze spanningsdeler via twee weerstanden.
Echter, de Arduino mag maximaal 5V op de analoge poort krijgen, dus neem ook eventueel een 5V zener op tussen Vout en massa.
LET OP: De Arduino is dan niet galvanisch gescheiden van de hogere spanning!

Hieronder zijn de weerstand waarden van de spanningsdeler uit te rekenen via een programmaatje van Mushegh Khurshudyan:

divide
 
divider formula

Choose resistors row
E24 (5%)
E96 (1%)

Insert values into Vin and Vout fields. Vin   Vout  Sample: Vin =5 ; Vout = 1.23
Insert wanted range. Range usually defined by current in the circuit. If more preferably whole range set this . Rmin Rmax Sample1: Rmin=100; Rmax=1200.
Sample2: Rmin=1k; Rmax=100k.
Select preferred percent of coincidence which will be displayed. By default it is 95%. Or +-5% from exact. Perc. (%)

R1 R2 % of coincidence

Naar elektronica          Naar micrcoontrollers          Naar hoofd pagina