Programmieren mit einem Servomotor?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Servo rochtig angeschlossen (rot +5V, schwarz gnd, orange am Ausgang)

Und was macht Pulsout für ein Ausgangssignal? Wenn das PWM ist, kannst Du damit keinen Servo ansteuern. Servos haben Signalzeiten von 1ms = 0° bis 2ms = vollausschlag, gefolgt von einer Pausezeit auf 20ms hoch...

Bei anderen Sprachen, wo ein Servo angesteuert wird, wird eine Bibliothek geladen, die den Befehl in das Timing umsetzt. Ka wie es bei dem Programm ist...

(Ich guck mir da mal Beispiele an... )

RareDevil  10.06.2019, 19:19

Also der Parallax Standardservo wird mit PWM gesteuert. Deshalb kan er mit Pulsout angesteuert werden. Der VSD-1 (finde dazu keine Daten) wird wohl das normale Servopulsmuster (wie oben beschrieben) benötigen. Deshalb reagiert er wohl nicht auf Pulsout...

0
RareDevil  10.06.2019, 19:46
@RareDevil

Hab weiter recherchiert... Pulsout sendet einen einfachen Puls von der Länge in x*µSekunden (X= Pulsangabe*µs Pulsdauer des Controller)... Der Parallax-Servo benutzt ebenso diese Steuerzeiten. Hast also erst mal alles richtig gemacht... Ich hatte es in den Erklärungen erst falsch verstanden..

Der VSD1 hat eine Pulslänge vonn 800µs = 0° / 1500µs / 90° (Neutralstellung) / 2200µs = 180°...

Du schreibst jetzt Steuerzeiten von 500, 750 und 1000... Jetzt kommt der Kaken an der Sache. Der BS2 hat eine Pulsdauer von 2µs... 500*2µs= 1000µs (also 1ms)

Der BS2sx hat aber nur 0,8µs Pulsdauer... 500*0,8µs=400µs und 1000*0,8µs=800µs... Dein längster Puls entspricht also nur 800µs, das ist 0° bei dem Servo.

1000 ist also das minimum für 0°, für 90° musst Du also 1500µs senden, macht bei 0,8µs pro Puls 1875 als Wert. Und für 2200µs Pulsdauer musst Du 2750 senden... Dann sollte es klappen

0

Von der Sprache habe ich keine Ahnung. Sieht aber aus wie ein C-Derivat.
Was ich aus dem Code sehe ist, dass der Ausgang "P12" angesteuert wird.
Blöde Frage. Hängst du am richtigen Ausgang? Passt die Spannungsversorgung vom Motor?

PflaumigeBanane 
Fragesteller
 10.06.2019, 14:13

Hey, ja ist am richtigen angeschlossen und die Spannungsversorgung müsste auch passen :) Da ich erst kürzlich mit dem Programmieren angefangen hab, ist mein Verständnis demnach noch recht klein, daher blöde Frage zurück: Was genau ist ein C-Derivat?

0
Mirse87  10.06.2019, 14:19
@PflaumigeBanane

Eine Unterart der Sprache C. Als Derivat bezeichnet man generell Ableitungen.

0
Mikkey  10.06.2019, 14:18
C-Derivat

Es eine Art von Basic, was man auch an der Endung .vb2 erkennen kann.

1
Mirse87  10.06.2019, 14:20
@Mikkey

Basic hab ich nie gelernt. Aber danke für die Aufklärung meiner Fehleinschätzung

0

Am besten messen, was die Signalleitung macht.

Am besten nimmt man dazu ein Oszilloskop. So was hat natürlich nicht jeder, geht auch anders.

Hast Du ein Multimeter, schalte es auf Frequenzmessung. Hat das Multimeter keine Frequenzmessung (Hz), dann kannst Du es auch auf Wechselspannung (AC) schalten. Passiert nichts, die Leitung ist immer auf Plus oder Minus, zeigt das Mulktimeter (fast) Null an, liegen Pulse an, wird ein deutlicher Wert angezeigt. Der hängt von Frequenz und Pulslänge ab, die Höhe des Wertes hat keine Aussagekraft, nur dass Du da was misst sagt Dir, dass da Pulse anliegen.

Alternativ kannst Du auch 2 LEDs benutzen, die kriegt man ja für wenige cents. Hier braucht man noch einen Vorwiderstand, 1kΩ passt ganz gut, soll ja nur was anzeigen und nichts beleuchten. Die LEDs verbindest Du "Antiparallel". Das bedeutet, dass Du das kurze Bein der einen mit dem Langen Bein der anderen verbindest. Das dann in Reihe zum Widerstand:

      o---------,
                |
             ,--o--,
             |     |
             |     |
        LED  V     - LED
             -     ^
             |     |
             '--o--'
                |
                |
               .-.
           1kΩ | |
               | |
               '-'
                |
        o-------'

Am besten zwei verschiedene Farben verwenden, z.B. rot und grün.

Die eine leuchtet bei Plus, die andere bei Minus. Liegen Pulse an, leuchten beide bzw. eine leuchtet hell und die andere "glimmt". So kannst Du leicht sehen, ob da eine Spannung an liegt und ob da Impulse drauf sind. Mit 1kΩ kannst Du gut zwischen 5V und 12V prüfen.

Die Übertragung bei diesen Servosystemen hat sich seit über 80(!) Jahren nicht geändert. Damals gab es nur große und teure Radioröhren, man musste also mit möglichst wenig Aufwand Signale übertragen.

Dazu wird ein Impulsgeber verwendet, der funktioniert wie ein Treppenhaus Licht Automat. Ein Poti stellt die Länge des Impulses ein, genau wie beim Treppenhaus wo man die Leuchtdauer einstellen kann. Nur hier stellt man zwischen 1ms und 2ms Laufzeit ein.

Über einen Multiplexer (ganz früher mechanisch) werden die Potis der Reihe nach an den Impulsgeber durchgeschaltet. Man erhält also eine Folge von Impulsen deren Länge von den Potis (Hebelstellungen der Fernbedienung) abhängt. Der Trick ist, dass am Empfänger jedes mal wenn sich ein Impuls ausschaltet der nächste Impuls auf den jeweils nächsten Servo geschaltet wird. So kann man auf einem Funkkanal (Morsesender) mehrere analoge Kanäle übertragen.

Synchronisiert wird das in dem nach dem letzten Poti eine Pause von mindestens 4ms eingehalten wird. Auch das kann man mit simpler Elektronik (also sozusagen 1/2 Radioröhre) leicht erkennen. Kommt 4ms lang kein Puls, wird sofort auf den ersten Servo geschaltet.

Da die Pulse 1 bis 2ms lang sind und man früher etwa 10 Kanäle vorgesehen hat, beträgt die Umlaufzeit des Systems um die 20ms, je nachdem wie viel Zeit alle Pulse zusammen (Plus die >4ms Pause) brauchen. Daher gibt man jedem Servo nach dem Puls am besten 20ms Pulspause bevor man den Puls wiederholt. Denn das erwarten die klassichen Servos.

Bei modernen Servos wie Du einen hast schaltet sich der Servo ab, wenn er keine Pulse bekommt. Daher tut sich nichts wenn da was nicht stimmt. Klassische "dumme" Servos drehen sich dann immer in ihre 0-Position. Fällt der Funkkontakt zu einem Modellflugzeug aus, geht das dann "Nase runter", "Quer- und Seitenruder auf Linksanschlag", das Flugzeug stürzt zwangsweise ab. Daher schalten sich "schlaue" Servos ab damit das Flugzeug während der Funkstörung erst mal so weiter fliegt wie bisher anstatt sofort abzuzstürzen.

Woher ich das weiß:Hobby
Commodore64  06.04.2021, 21:45

Ups, Sry.

Bei den LEDs hab ich mich vertan. Das gilt nur für Wechselstrom was die anzeigen.

Bei Dir musst Du die abwechselnd zwischen Steuerleitung und Plus und dann Minus anschließen.

Nur wenn die leuchten/glimmen wenn Du die sowohl zwischen Steruerleitung→Plus und Steuerleitung →Minus anschließt, dann hast Du Pulse.

Ich hatte da leider an den Trick den man bei alten RS232 Datenleitungen macht gedacht. Die schalten zwischen Plus und Minus, nicht Plus und Masse wie bei Dir!

0