Servo Signal invertieren

Hi!

Ich benutze für mein Servo Signal einen Transistor, sodass mein Servo PWM Signal invertiert wird. Sprich alle On Signale sind gleich lang (Servo springt nur auf eine Position).

Nun möchte ich das ganze Software seitig invertieren sodass ich wieder ein richtiges Signal bekomme. Wo mache ich das in der Servo library am besten?

Grüße

Wieso brauchst Du den Transistor?

Die Signale werden mittels eines Timer erzeugt. Da mußt Du schon gut sein um da etwas umzuschneiden.

Nimm einen 2. Transistor um das Signal ein 2. Mal zu invertiert.

Grüße Uwe

Der Inverter vertauscht quasi links (0%) und rechts (100%), Du kannst statt Wert dann 256-Wert ausgeben, um auf die richtige Position zu kommen. An der Bibliothek mußt Du dafür garnichts ändern, kannst aber natürlich eine neue Funktion schreiben, die die Subtraktion durchführt.

DrDiettrich: Der Inverter vertauscht quasi links (0%) und rechts (100%), Du kannst statt Wert dann 256-Wert ausgeben, um auf die richtige Position zu kommen. An der Bibliothek mußt Du dafür garnichts ändern, kannst aber natürlich eine neue Funktion schreiben, die die Subtraktion durchführt.

Da das Servosignal ein Impuls von 1 bis 2 mS jede 20mS ist, ist ein invertiertes Signal ein Impuls von 18 bis 19mS jede 20mS.

Da kehrt man nicht die Drehrichtung des Servo um. Grüße Uwe

uwefed:
Da das Servosignal ein Impuls von 1 bis 2 mS jede 20mS ist, ist ein invertiertes Signal ein Impuls von 18 bis 19mS jede 20mS.

Danke, es scheint doch ein langer Weg zu werden, bis ich die Feinheiten von Servomotoren verstanden habe.

uwefed: Wieso brauchst Du den Transistor?

Die Signale werden mittels eines Timer erzeugt. Da mußt Du schon gut sein um da etwas umzuschneiden.

Nimm einen 2. Transistor um das Signal ein 2. Mal zu invertiert.

Grüße Uwe

Hi,

Ich nutze einen Transistor um mit einem 3.3V Due ein 7V Servo zu steuern.

Ich habe mir nun mal die Servo.cpp kopiert und zwei Zeilen geändert, nun funktioniert es!

Undzwar gab es jeweils eine Zeile mit HIGH und LOW, wobei ich das HIGH und LOW einfach ausgetauscht habe, sodass er jetzt ganz einfach das Signal invertiert :)

 digitalWrite(SERVO(timer,Channel[timer]).Pin.nbr, LOW); // pulse this channel low if activated

Vielen Dank!

Per Map Befehl kann man ein PWM Signal auch invertieren. Habe ich bei einer Aquarienbeleuchtung gemacht, weil ich da ebenfalls einen Transistor als Treiber für die KSQs hinter die Ausgänge des 328 gehängt habe.

nix_mehr_frei: Per Map Befehl kann man ein PWM Signal auch invertieren. Habe ich bei einer Aquarienbeleuchtung gemacht, weil ich da ebenfalls einen Transistor als Treiber für die KSQs hinter die Ausgänge des 328 gehängt habe.

Was hat das mit einem Servo zu un? grüße Uwe

tsaG: Hi,

Ich nutze einen Transistor um mit einem 3.3V Due ein 7V Servo zu steuern.

Ich habe mir nun mal die Servo.cpp kopiert und zwei Zeilen geändert, nun funktioniert es!

Undzwar gab es jeweils eine Zeile mit HIGH und LOW, wobei ich das HIGH und LOW einfach ausgetauscht habe, sodass er jetzt ganz einfach das Signal invertiert :)

 digitalWrite(SERVO(timer,Channel[timer]).Pin.nbr, LOW); // pulse this channel low if activated

Vielen Dank!

Hätte nicht gedacht daß das so einfach sein könnte. Bravo, gratuliere. Uwe