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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.