30A Stromsensor

Stromsensoren für die Motoren

 

Da der Sabertooth Motorcontroller mit 100 Euro so ziemlich das teuerste an der Bastelei ist, wollte ich eine Sicherheitsschaltung bauen die verhindert das der Controller überlastet wird. Sollte ein Rad blockieren können schnell Ströme entstehen die die angegebenen 25 Ampere locker übersteigen – Im schlimmsten Fall entsteht “Magic Smoke” und das Teil ist für die Tonne.

Die Überlegung: Beide Motoren bekommen Stromsensoren. Wenn einer der Sensoren über x Sekunden einen Strom über 25 Ampere misst, werden die Motoren sofort abgeschaltet.

 

ACS714 Stromsensor (-+30A)

Die Wahl fiel auf den ACS714 Stromsensor (Watterott). Das Modul kann Ströme bis 30 Ampere in beide Richtungen messen und den Messwert als analoge Spannung ausgeben. Die Versorgungsspannung beträgt 5V. Es gibt als Signal bei 0 Ampere eine Spannung von 2,5 Volt aus. Der Grund dafür liegt an der bidirektionalen Messung: Bei +30 Ampere werden 5V ausgegeben, bei -30 Ampere sind es 0V. Dieses ist wichtig da die Motoren auch als Generator funktionieren wenn diese manuell bewegt werden. Das Modul hat eine Auflösung von 66mV/A

Anschluss an den Arduino

Das Verkabeln an einen Arduino ist sehr einfach: VCC an 5V, GND an GND (wer hätts gedacht) und SIGNAL an einen freien Analogeingang.

Beispielcode 1

Die Berechnungen sind recht einfach: Analogmessung in Millivolt umrechnen, 2500mV abziehen (0 Ampere = 2,5V!) und den Wert durch 66 teilen (Da 1A = 66mV). Da funktioniert ganz gut ist aber ungenau!

Warum??

Ein Analog-Digital-Wandler (ADC) nutzt eine Referenzspannung. Beim Arduino ist diese im Normalfall gleich der Versorgungsspannung des Mikrokontrollers – in dem Fall 5 Volt. Das bedeutet das der Befehl “analogRead” einen Wert zwischen 0 und 1023 ausliest wenn eine Spannung zwischen 0 und 5 Volt dort angelegt wird. Im Falle des Stromsensors sollte also bei 0 Ampere eine Spannung von 2,5V anliegen und diese einen Wert von 512 beim Auslesen des Analogports ergeben. Das Problem ist nun: Die ideale Referenzspannung von 5,0 Volt gibt es hier nicht :)

Durch anschliessen diverser Module kann sich die Referenzspannung für den ADC leicht ändern, also höher oder niedriger als 5V sein. Da aber im Code immer von genau 5V ausgegangen wird kann die Messung und damit das Ergebniss verfälscht werden.

Im folgenden Code wird vor der Berechnung die interne Referenzspannung ausgelesen und für die Berechnung benutzt.

Beispielcode 2

 

Mein Aufbau

 

Ich habe die Messplatine mit XT60 Steckern verlötet und als Datenanschluss ein 3-poliges Modellbau-Servokabel genutzt.  Danach alles in Plastidip verpackt. Funktioniert super :)

Downloads:

Datenblatt des ACS714

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">