Positive und negative Spannung in Arduino lesen [geschlossen]


10

Es ist eine lange Geschichte, aber ich nahm ein RC-Auto auseinander und wollte den Arduino verwenden analogRead(), um die Werte meiner Motoren und Lenkung zu ermitteln. Ich habe mit meinem Multimeter gemessen, dass die Spannung in meinem ferngesteuerten Auto zwischen -6 V und 6 V liegt.

Der Arduino unterstützt jedoch nur das Lesen von maximal 0 V bis 5 V. Gibt es eine Möglichkeit, -6V und +6V in 0V und 5V umzuwandeln? Ich habe gehört, dass es mit einem Operationsverstärker gemacht werden könnte. Einige Leute haben mir auch gesagt, ich soll einen Spannungsteiler verwenden. Mit anderen Worten, wenn ich das RC-Auto nicht kontrollierte, sollte der Arduino 2,5 Volt sehen.

Jedenfalls ist mir nicht ganz klar, wie ich das machen würde. Kann mir bitte jemand einen geeigneten Operationsverstärker mit einer Schaltung für dieses spezielle Szenario empfehlen?

ODER, wenn möglich, kann mir jemand zeigen, wie man die negative und positive Spannung mit zwei Arduino-Pins liest? Wenn beispielsweise -6 V gegeben sind, würde der analoge Pin 0 1023 zurückgeben. Wenn 0 V gegeben sind, würden beide analogen Pins 0 und 1 0 sagen. Und wenn + 6 V gegeben sind, würde der analoge Pin 1 1023 zurückgeben Wie kann ich eine Schaltung erstellen, die so funktioniert?

Ich schätze es, wenn Sie einen Schaltplan dafür haben. Vielen Dank!


1
Wenn Sie sagen, dass das Ausgangssignal des RC-Autos zwischen +6 und -6 Volt liegt, worauf bezieht sich dieser Wert? An welchem ​​Punkt wenden Sie die Erdungssonde des Multimeters an?
Anindo Ghosh

@AnindoGhosh Ich habe gerade beide Kabel des Multimeters genommen und eine Sonde an jedem Draht des Motors berührt.
Solutionhacker

2
Die Abstimmung zum Abschluss als Prämisse dieser Frage ist grundsätzlich falsch. Was zu lesen ist, ist nicht analog; Im besten Fall handelt es sich möglicherweise um eine digitale Pulsbreite, aber es macht wirklich wenig Sinn, ein Arduino zum Lesen eines alten RC-Systems zu verwenden, wenn Sie mit Modulen vom Typ nRF24L01 für 1 USD so einfach ein modernes digitales System erstellen können.
Chris Stratton

Willkommen bei EE.SE! Dies scheint eine Reverse Engineering-, Änderungs- oder Reparaturfrage zu sein. Bitte beachten Sie, dass solche Fragen bestimmte Schritte zur Fehlerbehebung beinhalten und ein gutes Verständnis des zugrunde liegenden Designs des besprochenen Geräts nachweisen müssen, damit Sie spezifische, fokussierte Fragen stellen können, die präzise beantwortet werden können. Ansonsten ist die Frage viel zu weit gefasst. Weitere Informationen finden Sie hier: Fragen Sie, wie Sie eine fehlerhafte Schaltung zum Thema beheben können? .
Dave Tweed

Antworten:


15

Drei Standardwiderstände erledigen die Aufgabe, vorausgesetzt, der Motor sieht -6V bezogen auf Masse und nicht bezogen auf die andere Motorklemme.

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

Wenn Vm von -6 bis 6 V variiert wird, variiert der Ausgang von 0 bis 4,9 V.


Ahh, du hast mich geschlagen :-)
Anindo Ghosh

@ AnindoGhosh sorry. Normalerweise mache ich ein paar mathematische Fehler in meinen Berechnungen, aber diesmal war ich das erste Mal erfolgreich. Ich überlasse die Mathematik für Sie: o)
Jippie

@AnindoGhosh oh und das würde mich nicht wundern, wenn die Motorspannung am Motor gemessen wird und nicht auf Masse bezogen wird, so dass Sie auch Raum für eine nette Antwort haben. Auch ich habe PWM nicht berücksichtigt ...
Jippie

Wie kann ich die Widerstandswerte bei bekannter Eingangsspannung berechnen? Zum Beispiel habe ich eine ähnliche Situation, aber mein Eingangssignal beträgt -2 bis +2 Volt. Dies ist eine interessante Topologie, aber ich möchte die Theorie dahinter verstehen, damit ich sie ändern und nicht nur kopieren kann.
Robm

@robm Ich habe zuerst die Verhältnisse für die Widerstände festgelegt und dann einige Berechnungen in einer großen Tabelle verwendet, um die am besten passenden Widerstände auszuwählen. Es war die Verwendung der Formeln in der Tabelle, warum ich nicht auf die genaue Methode eingegangen bin, die ich wahrscheinlich haben sollte. Ich nehme an, es ist eine Frage wert: Standardmethode zur Auswahl von Widerstandswerten für diesen speziellen Anwendungsfall.
Jippie

4

Wenn der Motor von einer vollen H-Brücke angetrieben wird und Sie möchten, dass Ihr Arduino dieselbe Bodenreferenz wie der Rest des Autos hat, können Sie Folgendes verwenden:

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

Beide Ausgänge reichen von 0 bis 2V4, und Sie sollten die interne Referenzspannung von Arduino auf 2V56 einstellen. Indem Sie beide Ausgänge an ihren eigenen Analogeingang anschließen, können Sie die Motorspannung berechnen, indem Sie sie subtrahieren. Die Kondensatoren dienen dazu, PWM-Signale zu mitteln, damit sie vom ADC gemessen werden können.


-1

Hier ist eine Lösung ohne Operationsverstärker. Für diesen benötigen Sie einen zusätzlichen Eingangspin am Arduino.

Wenn der Eingangspin 0 anzeigt, ist die Spannung vom ADC positiv. Sonst ist die Spannung negativ.

Aufgrund des Spannungsabfalls am Brückengleichrichter haben Sie das Problem der Absenkung von 6 V auf 5 V gelöst. Sie haben jetzt maximal 6 - 2 * 0,7 = 4,6 V. D5 ist optional und nur aus Sicherheitsgründen verfügbar.

Der Nachteil ist, dass die Spannung größer als + 1,4 V oder kleiner als -1,4 V sein muss, um gemessen zu werden.

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab


2
Sie müssen auch die Erdung des Arduino von der RC-Schaltung trennen. Dies bedeutet, dass sie separate Netzteile benötigen.
DoxyLover
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.