Forum: Mikrocontroller und Digitale Elektronik Potentiometer in Schaltung per Mikrocontroller (Arduino) überbrücken


von Peter T. (denglisch)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe einen kleinen Helicopter der per 2,4 GHz Fernbedienung 
gesteuert werden kann. Um den Helicopter direkt per PC zu steuern und 
einige vorgegebene Manöver fliegen zu lassen verwende ich einen Arduino 
UNO der an die Platine der Fernbedienung angeschlossen ist.

Auf der Platine ist ein Hebel für die Geschwindigkeit, der als 
Potentiometer realisiert ist. Um diesen zu "ersetzen" bzw. zu 
überbrücken, habe ich an alle drei Pins des Potentiometers Kabel 
befestigt und diese zum Breadboard geführt.

Es gibt einen Plus-Pin, Control-Pin, und einen Minus-Pin (alles durch 
ein Multimeter identifiziert).


Wenn ich den Minus-Pin an den GND-Pin vom Arduino anschließe, und den 
Control-Pin mit +3,3V versorge dreht der Rotor wie gewünscht und der 
Helicopter hebt ab.

Wenn ich allerdings versuche den Control-Pin per analogem (PWM) 
Ausgangspin vom Arduino zu steuern, funktioniert dies nur begrenzt: Der 
Rotor dreht zu langsam auch wenn ich diesen Ausgangspin per Software auf 
den Maximalwert gestellt habe.

Ich verwende schon eine Schaltung, wie z.B. hier ( 
http://provideyourown.com/2011/analogwrite-convert-pwm-to-voltage/ ) 
beschrieben, die ein PWM in ein "echtes" analoges Signal umwandelt.
Siehe Anhang für Schaltung.

DC-out ist was an den Control-Pin kommt. Als Widerstand habe ich 4.7KOhm 
und als Kondensator 100µF genommen (der nächst kleinere den ich hatte 
war 100 nF). Da gab es keinerlei Reaktion vom Rotor.
Mit einem 220 Ohm Widerstand und dem gleichen Kondensator ging es, 
jedoch mit zu langsamer Drehgeschwindigkeit (3.3V wurden erreicht).

Ich bin etwas verwirrt dass der größere Widerstand verhindert hat dass 
der Rotor sich überhaupt dreht, ich hätte erwartet dass der Kondensator 
länger braucht um sich aufzuladen aber dann das Signal glatter ist. Ist 
das Problem die zu geringe Stromstärke?

Das es mit kleinerem Widerstand funktioniert aber nicht schnell genug, 
liegt wohl daran dass das Signal nicht "glatt" genug ist?

Wenn ihr mir Tipps zum "analogisieren" von dem PWM-Signal geben könntet 
würde ich mich freuen, denn ich verstehe nicht so ganz was da passiert.

Grüße, denglisch

von Michael (Gast)


Lesenswert?

Peter T. schrieb:
> Das es mit kleinerem Widerstand funktioniert aber nicht schnell genug,
> liegt wohl daran dass das Signal nicht glatt genug ist.

Dann könntest du versuchen, mit einer höheren PWM-Frequenz zu arbeiten. 
Mit der Standardinitialisierung vom Arduino dürften die 490 Hz betragen 
[1]. Beispiele für Veränderung der PWM-Frequenz gibt es viele, z.B. [2].

[1] http://arduino.cc/de/Reference/AnalogWrite
[2] http://playground.arduino.cc/Code/PwmFrequency

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter T. schrieb:
> Wenn ich den Minus-Pin an den GND-Pin vom Arduino anschließe, und den
> Control-Pin mit +3,3V versorge dreht der Rotor wie gewünscht und der
> Helicopter hebt ab.

> Da gab es keinerlei Reaktion vom Rotor.
> Mit einem 220 Ohm Widerstand und dem gleichen Kondensator ging es,
> jedoch mit zu langsamer Drehgeschwindigkeit (3.3V wurden erreicht).
Verstehe ich das richtig?
Einmal erreichst du mit 3,3V volle Drehzahl und das andere Mal nicht, 
oder wie?
(Wie) hast du das gemessen?

Peter T. schrieb:
> Wenn ihr mir Tipps zum "analogisieren" von dem PWM-Signal geben könntet
> würde ich mich freuen, denn ich verstehe nicht so ganz was da passiert.
Das Filtern der PWM (so nennt sich das "analogisieren") ist nur die 
halbe Miete. Denn wenn der nachfolgende Eingang zu niederohmig ist, 
dann musst du den Filter (RC-Glied) noch niederohmiger machen und den 
Treiber (uC-Pin) noch niederohmiger.
Besser ist es dann, ein hochohmiges RC-Glied zu nehmen und dahinter 
einen OpAmp als Spannungsfolger zu setzen. Der kann dann auch 
niederohmige Lasten treiben.

von Peter T. (denglisch)


Lesenswert?

Danke für den Tipp mit der Frequenz, hat leider nichts geändert.


>Verstehe ich das richtig?
>Einmal erreichst du mit 3,3V volle Drehzahl und das andere Mal nicht,
>oder wie?
>(Wie) hast du das gemessen?
Richtig. Die Messung der Spannung habe ich mit einem Multimeter 
vorgenommen. Die Drehzahl durch hören und beobachten ob der Heli abhebt 
oder nicht. Wenn eine direkte 3,3V Spannungsquelle anliegt dann hebt er 
ab, wenn ich die Spannung von einen der Ausgangspins des Arduino in die 
Fernsteuerung einspeise geht es nicht (der Rotor dreht aber hörbar zu 
langsam und der Heli hebt nicht ab) obwohl auch da das Multimeter 3,3V 
anzeigt (mit leichten Schwankungen).


Ich habe einen weiteren Test gemacht, und den Control-Pin direkt an 
einen digitalen Ausgangs-Pin (7) vom Arduino gehängt und per
1
digitalWrite(7, HIGH);
 auf 5V gesetzt.

Dabei dreht sich zwar wie vorher der Rotor, aber zu langsam. Wenn ich 
ein reines 3V Signal (was vom 3V Power Pin des Arduino kommt) verwende, 
dreht der Rotor schneller und der Helicopter hebt ab. Ein 5V Signal vom 
5V Arduino Power Pin geht auch, dabei dreht der Motor aber hörbar zu 
schnell (und das Fernbedienungsboard hat auch normalerweises 3.3V 
anliegen und nicht 5V).




Ansonsten hört sich deine Erklärung schon mal plausibel an. Ich werde 
jetzt versuchen die Widerstände des µC-Pins und des Control-Pins in der 
Fernbedienung zu bestimmen, und dann deinen Lösungvorschlag umzusetzen.

RC-Glied heißt der Teilschaltkreis der aus Widerstand(R für resistor) 
und Kondensator (C für capacitor) besteht?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.