PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Control - Spannungsmessung am Shunt, Spannungsteiler?



eraser2704
05.03.2009, 15:41
Hallo zusammen,

ich hab an meinem RN-Control einen Motor, den ich per PWM mit 0 bis ca. 12V ansteuere. In einer der Zuleitungen ist ein Shunt eingelötet. Über den Spannungsabfall will ich den aktuellen Motorstrom berechnen um diesen in meinem Bascom Code weiterzuverarbeiten.

Mein Plan sah bisher so aus: Die Stelle vor dem Shunt und die Stelle nach dem Shunt wollte ich mit je einem analogen Port verbinden. Dort wird dann jeweils der Spannungswert eingelesen und in eine Variable geschrieben. Die Differenz der beiden Variablen ist dann der Spannungsabfall am Shunt, den ich über I=U/R weiterverwerten kann.

Nun habe ich aber die Restriktion, dass die Spannungen an den analogen Ports ja nur max. 5V ebtragen darf. Wenn ich aber 12V auf den motor gebe, dann habe ich ja einmal 12V und einmal "12V - Spannungsabfall".

Meine Idee war jetzt, die Spannung mit je einem Spannugsteiler entsprechend runter zu skalieren. Hier bräuchte ich aber Eure Hilfe, da ich nicht genau weiß wie der Spannungsteiler in dem Fall aussehen muss.

Alternative Lösungsmöglichkeiten für mein Problem sind natürlich auch gern gesehen, war ja nur eine Idee von mir. ;)


Danke&Gruß
Manuel

Dirk
05.03.2009, 17:19
Ich nehme mal an, dass dein Shunt mit einem "Ende" am 12V-Akku hängt und mit dem anderen am Motor.
Dann kannst du das genau so machen, wie du gesagt hast:
An jeden der beiden Anschlüsse des Shunts kommt ein Spannungsteiler (2 Widerstände in Reihe) gegen Masse.
Die Widerstände verhalten sich z.B. wie 1 : 2, damit kann man dann bis 15V messen bei einem ADC-Eingang bis 5V.
Durch den Spannungsteiler kann z.B. 1 mA bei 15V fließen, das wären dann 15 kOhm gesamt (5 kOhm + 10 kOhm).
Den ADC-Eingang sollte man noch mit Dioden gegen Spannungsspitzen schützen und mindestens auch einen Kondensator zur Glättung der PWM vorsehen.

Gruß Dirk

eraser2704
05.03.2009, 18:25
Den Aufbau hab ich mir bereits selbst überlegt, jetzt muss ich noch schauen, wie die Widerstände dimensioniert werden müssen und wie ich am RN-Control an die Referenzspannung bzw. GND komme.

https://www.roboternetz.de/phpBB2/files/spannungsteiler_198.jpg

Edit: Hi Dirk, wie müsste denn der Kondensator dimensioniert sein? Mit Dioden kenne ich mich leider garnicht aus, da muss ich mich erstmal einlesen.

Gruß
Manuel

Besserwessi
05.03.2009, 19:29
Die Spannungen noch weiter runterzuteilen ist problematisch, denn die Spannung am Shunt ist in der Regel ohnehin schon eher klein (typisch 200 mV bei maximalem Strom). Durch die Spannungsteilung werden davon nur etwa 50 mV übrigbleiben. Wenn die Widerstände dann noch kleine Fehler haben kreigt man noch einen Anteil von der Versorgungspannung mit rein. Die Widerstände R1..R3 sollen deshalb genaue Typen (1% oder besser) sein und auch paarweise aus der gleichen Serie für eine gleiche Temperaturabhängigkeit.
Besser wird das wenn man einen Verstärker für high side shunt oder eine entsprechende Schaltung mit einem OP-Amp nimmt.


Der Mega32 hat auch die Möglichkeit direkt Differenzspannungen zu messen. Dabei kann man an einigen Eingängen auch eine internen Verstärkung daszuschalten, was für die Shunts sicher von Vorteil wäre.

eraser2704
06.03.2009, 00:48
Hallo Besserwessi,

danke für den Tip mit der Differenzspannung. Das ist ja genau das, was ich suche und mir über Umwege sowieso ausrechnen will.
Jetzt verstehe ich auch, was das "config ADC=single" bedeutet, es gibt eben noch andere Modi. Wie allerdings das BASCOM Kommando für die Differenzmessung ist, konnte ich bisher nicht rausfinden. Allerdings kann man die Bits ja auch von Hand setzen, die entsprechende Tabelle findet man im Datenblatt des AVR.

Da werde ich mich morgen mal dran versuchen und komme dann hoffentlich ohne meine ganzen Spannungsteiler aus. Das wäre einfacher und genauer, so soll es sein.


Nochmal zurück zum PWM Glättungskondensator: Wie müsste ich diesen denn dimensionieren? Kann es ohne den Kondensator sein, dass ich nicht die mittlere Spannung als Ergebnis bekomme, sondern je nachdem wann ich messe eben 0V oder die vollen 12V des PWM Signals aus Ausgabe des ADCs habe?
Bisher habe ich nur mit einem Multimeter gemessen und das war träge genug immer die mittlere Spannung auszugeben je nach Tastverhältnis.

Danke für Eure Hilfe

Gruß
Manuel

Besserwessi
06.03.2009, 10:57
Auch bei der Differenzspannungsmessung müssen die beiden Spannungen zwischen GND und VCC sein. Es wrd also nicht ohne die Spannungsteiler gehen, um die Spannung in den richtigen Bereich zu bringen.

Zum Glättungskondesator: Als Mindestmaß für das Glätten sollte der Kondensator so groß sein, das Frequenzen über der halben Abtastfrequenz nicht mehr durchkommen. Das läuft sonst unter dem Namen Anti-aliasing filter.
Bei dem PWM Signal sollte man stärker glätten, wenn man nicht am momentanwert des Stromes interessiert ist. Da solle die Zeitkonstante R*C größer als die PWM Peridendauer T sein. Wenn man nur 1 oder 2 mal den AD Wandler auslesen will um einen Stromwert zu kreigen, dann sollte R*C > 20 T sein. Wenn man viele Werte aufnimmt um dann in Software noch mal zu mitteln reicht R*C = T.

Der Widerstandswert R ist hier die Impedanz der beiden Spannungsteiler (als Reihenschaltung). Bei den oben vorgeschlagenen 10 K + 5 K also 2 mal 3.33 K = 6.66 K.

eraser2704
06.03.2009, 18:09
Hi,

schade, das habe ich mir wohl zu einfach vorgestellt ;) Morgen früh besorge ich mir die Bauteile und baue die beiden Spannungsteiler auf.

Eine Verständnisfrage hab ich noch: Wozu genau dient die Referenzspannung?

RN-Wissen:

Liegt der Messbereich zwischen 0V und 5V, bei einer Auflösung von 8 Bit und einer Referenzspannung von ebenfalls 5V, so ergibt der analoge Wert von 0V am Eingang den digitalen Wert 0. Entsprechend 5V am Eingang den Wert 255

Im ersten Moment hab ich die Referenzspannung so verstanden, dass der ADC die Potentialdifferenz zwischen der Spannung am Pin und der Referenz bildet, schließlich heißt sie ja wohl nicht ohne Grund so. Das würde bei 5V Referenz aber bedeuten, dass ich zwischen 5V und 10V am Pin messen kann, der ADC würde dann 0V bis 5V ausgeben.
5V am Pin wären ja zur Referenz von 5V eine Differenz von 0.

Offensichtlich ist das ja quatsch, aber was bewirkt dann eine Änderung der Referenzspannung?

Grüße
Manuel

eraser2704
16.03.2009, 01:24
Hallo,

ich benötige nochmal Eure Hilfe.

Im Anhang findet Ihr den Schaltplan, wie mein System aktuell aussieht.

Bei einem PWM Tastverhältnis von 100% funktioniert die Sache auch soweit ganz gut. Wenn ich allerdings ein kleineres Tastverhältnis nehme, schwanken die Werte am ADC so extrem, dass nichts sinnvolles dabei herauskommt. Auch eine Mittelung per Software bringt keine besseren Ergebnisse.

Da ich ein Oszi zur Verfügung habe, hab ich mir die Spannung am Motor mal genauer angeschaut. Wenn ich direkt am PWM Ausgang des Motortreibers ohne angesteckten Motor und ohne angesteckten Shunt (!) messe, dann habe ich ein wunderbares 1-0-1-0 PWM Signal. Klemme ich den Motor an, wird die vordere Flanke stark gekrümmt, wohl wegen der Induktivität des Motors. Das Anstecken des Shunts (mit Verbindung zu den analogen Ports) führt zu einer weiteren Verzerrung.

Ich habe dann einen Kerko von 1nF parallel zum Motor geschaltet, um die Spannungen zu glätten. Am Oszi hat sich allerdings nur eine kleine Spitze verabschiedet, der Rest ist gleich geblieben.


Jetzt meine Frage: Meint Ihr, mit der Wahl des richtigen Kondensator kann die Spannung gut genug geglättet werden, damit der ADC sinnvolle Werte ausgibt?

Ich hab nochmal ein RC-Glied mit dem Shunt und einem parallelen Kondensator ausgerechnet, da komme ich auf etwa 30pF. (Hab die Unterlagen grad nicht hier)
Muss ich nicht auch die Induktivität des Motors berücksichtigen? Laut Oszi hat die ja schon einen gewaltigen Einfluss auf die Spannung. Diese beträgt laut Datenblatt etwa 1mH.


Wäre super, wenn Ihr mir nochmal helfen könntet. Ich will die Spannung unbedingt glatt genug bekommen um den Shunt sinnvoll nutzen zu können.

Gruß
Manuel

Dirk
16.03.2009, 10:52
Ich habe dann einen Kerko von 1nF parallel zum Motor geschaltet, um die Spannungen zu glätten.
Um die Spannung am Shunt zu messen, brauchst du nicht die PWM am Motor zu glätten.
Du must einfach je einen Kondensator von deinen ADC-Eingängen nach GND schalten, also parallel zu den 10k Widerständen.

Wenn du ein Oszi hast, kannst du ja den Tastkopf an die Eingänge halten und das Ergebnis je nach Wert der Kondensatoren sehen. Sie sollten aber auch nicht zu groß sein, weil dann die Strommessung zu träge werden könnte. Versuchen würde ich von 220nF aufwärts bis 10uF Elko.

Gruß Dirk

eraser2704
16.03.2009, 18:11
Hi Dirk,

danke für die Antwort. Das klingt plausibel ;)

Eine Frage noch: Spricht etwas gegen die Verwendung von Kerkos statt Elkos? Da könnte ich schneller rankommen.

Gruß
Manuel

Dirk
16.03.2009, 19:51
Hallo Manuel,

du kannst keramische, Folien- oder Elkos nehmen (2 gleiche an den beiden ADC-Eingängen!).

Gruß Dirk

eraser2704
16.03.2009, 20:05
Hi,

super, danke für deine Hilfe.

Ich berichte morgen, ob ich eine Verbesserung erreichen konnte.

Gruß
Manuel

chientech
17.03.2009, 19:50
Hi, hast du mal daran gedacht einen Instrumentenverstärker einzusetzen.
Falls du eine +/- Versorgung zur Verfügung hast?

z.B. AD621 oder so

Besserwessi
17.03.2009, 22:02
Zum glätten gehen auch keramische Kondesatoren, wenn die kapazität stimmt. Auf den genauen Wert kommt es hier ja wohl weniger an.
Zum Glätten ruhig drei Kondensatoren vorsehen: je einer bei den ADCs gegen GND und einer zwischen den beiden ADCs. Der Kondesator zwischen den ADCs sorgt dafür, das sich unterschiedliche Größen der anderen beiden Kondensatoren nicht so stark auswirklen. Für die mittlere Differenzspannung haben die Kondensatoren zwar keinen Einfluß, aber die Spitzenwerte können sich dadurch schon verschieben.