-         
+ Antworten
Ergebnis 1 bis 9 von 9

Thema: Servo ansteuern von A bis Z

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674

    Servo ansteuern von A bis Z

    Also, es tut mir leid, dass ich das Thema Servo ansteuern nochmal aufgreifen muss, aber ich habs immer noch nicht kappiert.

    Meine Ziele mit dem Servo:
    - Vorwärts/Rückwerts fahren
    - Positionierung innerhalb der 360°
    - Geschwindigkeit regulieren


    Ausgangspunkt sollte der 5€ Servo von Conrad sein!

    Also bisher hab ich gehört, dass ich den Servo 'hacken' muss, also den kleinen Haken entfernen muss, der verhindert das der Servo durchdrehen kann. Dann hörts aber auch schon auf!

    Ich hab dann noch gelesen, dass ich den Servo z.B. mit:

    Config Servos = 1 , Servo1 = Portd.2 , Reload = 10
    Config Pind.2 = Output
    Enable Interrupts
    Servo(1) = 120
    ansteuern kann, und die Geschwindigkeit mit:

    For I = 50 To 190 Step 10
    Servo(1) = I
    Waitms 100
    next
    regulieren kann. Nun bleiben aber noch ein par hundert Fragen offen:

    - Muss ich den Poti im Servo nicht ersetzen? Denn schließlich, hätte er ja auch ohne Haken seinen Wert 0 und 255 nach 180° erreicht.
    - Verhindert For... Step... nicht, dass in der Wait-Zeit was anderes getan wird. Schließlich soll der Roboter z.B. Dauerhaft etwas langsamer fahren, aber trotzdem noch andere Dinge rechnen.
    - Wie krieg ich es hin, dass der Servo, wenn er einmal soweit ist auch wirklich weiter in die gleiche Richtung geht, denn wenn ich z.B. den Wert 0 gebe, und er ihn erreicht und ich dann den Wert 255 gebe würde er sich doch einfach anderrum drehen, oder?

    Es wäre übrigens super, wenn jemand mal einen Artikel dazu schreiben würde, denn ich denke auf jeden Anfänger, der mit Servos als Antrieb arbeiten möchte, kommen früher oder später diese Probleme zu.

    Bitte um Antworten

    MFG Moritz

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    47
    Beiträge
    1.244
    Hallo RCO,
    wer suchet, der findet:
    http://www.roboternetz.de/phpBB2/vie...413&highlight=
    Gruß, Michael

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Danke für den Beitrag, also werde ich jetzt folgendes machen: Haken abfeilen, Poti ausbauen und durch Widerstände ersetzen.

    Eine genaue Positionierung ist damit nicht mehr möglich, daher meine Frage, gibt es einen durchlaufenden Poti, also der bis Maximalen Wert geht, un ein wenig später auf den geringesten, dann wäre ein genaues Positionieren, und die genau Messung der Wegstrecke möglich.

    Mein 2. Problem ist immer noch, dass ich, wenn ich es richtig verstehe, die Geschwindigkeit nicht kontrollieren kann, ohne gleichzeitig die gesamte aufmerksamkeit des Prozessors auf die Schleife zur richten.
    Gibt es dafür einen Lösungsweg, der nach Festlegen der Geschwindigkeit gar keine Prozessorleistung mehr beansprucht, also z.B. so etwas wie ein PWM?

    MFG Moritz

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    47
    Beiträge
    1.244
    Hallo RCO,
    Link gelesen?
    Wenn der "Haken" abgefeilt und das Poti durch Festwiderstände ersetzt ist, hat sich die Geschichte mit der Positionierung ein für alle mal erledigt! Dann kannst du das Servo wie eine Fahrtregler-Getriebemotor-Einheit benutzen.
    Zu deinem 2. Problem:
    Du gibst doch deinem Servo einen Wert mit [Bsp.: Sevo(x)=150]. Dann hast du (fast) alle Zeit der Welt, dich darum zu kümmern, was der nächste Servowert sein soll. Die Ansteuerung erledigt Bascom doch im Hintergrund...
    Gruß, Michael

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Ach so, man kann also zwischenwert zwischen 100 und 200 setzen?
    Würde er bei 150 nicht genau stehen? Das ist natürlich optimal.
    Das mit der Positionierung hab ich befürchtet, aber dafür gibts ja Radencoder!

    Also, sorry, wenn ich so hartnäckig nachfrage, aber eins will mir nicht in den Kopf, deshalb vermutlich auch meine vielen Fragen:
    Der Poti hat ja eine Position zurückgegeben.
    Diese Position konnte man mit Servo(x)=Position angeben, der Poti dreht entsprechend links oder rechtsrum.
    Wenn der Poti nun diese Position aber nie erreicht, da 2 Widerstände drin sind, die die Position 128 zurückgeben, wird er doch vermutlich bei z.B. Servo(x)=100 unendlich in eine Reichtung drehen.
    Warum sollte er das bei Servo(x)=110 langsamer tun?
    ICh verstehe nicht ganz, ob Servo(x) jetzt die Position zwischen 0 und 255 angibt, oder die Imulslänge, die Wiederum zwischen 100 und 200 liegt, und die Geschwindigkeit regelt.

    Bitte erklär mir nur diese eine Frage!

    MFg moritz

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    47
    Beiträge
    1.244
    Hallo RCO,
    es ist sicher irgendwo im Netz besser beschrieben, ich versuchs aber: Zuerst: Löse dich von dieser ominösen Position 128 für die Mittelstellung des Servos. Das gehört überhaupt nicht hierhin.
    Das Servo ist ein Motor mit Getriebe und einem Poti mit Elektronik. Dieses Poti gibt der Elektronik (im Servo) eine Rückmeldung, wo der Motor/Getriebe steht. Dazu wird intern (in der Servoelektronik) quasi ein Impuls erzeugt von 1 bis 2 ms Dauer. Dieser im Sevo analog erzeugte Impuls wird mit dem Impuls, der von außen (Fernsteuerung/µC) kommt, verglichen. Ist der Impuls von außen größer, als der mit dem Poti innen erzeugte, dreht sich der Motor solange , bis er das Poti soweit verstellt hat, daß die beiden Impulse wieder übereinstimmen. Ist der Impuls kleiner, gehts umgekehrt.
    Soweit klar?
    Jetzt kommts: Je größer der Unterschied zwischen dem intern erzeugten Impuls und dem von außen kommenden ist, umso schneller dreht sich der Motor. Ein Fahrtregler!
    Und richtig, bei Conrad gibt es doch tatsächlich einen sog. Minifahrtregler, der genauso arbeitet.
    Jetzt zu Bascom:
    Mit dem Reload-Wert von 10 hast du einen Wert von 10 Mikrosekunden eingestellt.
    Das bedeutet, daß du den Servo(x)-Wert mit dem Reload-Wert multiplizieren mußt.
    Bei servo(x)=100 sind das 1000µS = 1Millisekunde. Bei servo(x)=200 sind das 2000µS = 2Millisekunden.
    Das ist der Bereich, den das Servo für gewöhnlich bekommt. Daraus folgt, daß der Wert 150 für servo(x) genau der Mittelstellung entspricht.
    Das heißt: Wert 100 = vorwärts, Wert 150 = Stop, Wert 200 = rückwärts. Je nach Einbaulage kann vorwärts/rückwärts auch vertauscht sein.
    Noch Fragen?
    Gruß, Michael

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    [-o< Danke | Danke | Danke [-o<

    Dann war das mit dem 0 bis 255 Schwachsinn.
    Na gut, dann werde ich das jetzt mal so machen!

    MFG Moritz

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    mein servo läuft mit dem obigen beispiel vorwärts und rückwärts.
    braucht aber ca 2 sek bevor er die richtung ändert, woran liegt das.
    ich möchte jetzt, das der servo sehr schnell umschaltet und wieder rückwärts läuft.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Meinst du das, was ich als ersten post geschrieben habe?

    For I = 50 To 190 Step 10
    Servo(1) = I
    Waitms 100
    next
    Das bewirkt, das der Servo langsam in eine Richtung käuft, deshlab vermultich die 2 Sekunden, wenn der Sevo einfach nur in eine andere Position fahren soll, dann sag einfach Servo(1)=Position

    Config Servos = 1 , Servo1 = Portd.2 , Reload = 10
    Config Pind.2 = Output
    Enable Interrupts
    Servo(1) = 120
    Hier Servoposition 120!

    MFG Moritz

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •