-
        

Ergebnis 1 bis 6 von 6

Thema: Servos als Antrieb...

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2009
    Beiträge
    12

    Servos als Antrieb...

    Anzeige

    Moin Jungs!
    Ich bin gerade dabei mir meinen ersten Roboter zusammen zu löten.
    Er soll erstmal nicht viel können, einfach nur mal rumfahren und Hindernissen ausweichen reicht (wobei das erst später realisiert werden soll).
    Herzstück ist ein Mega16, welcher mit Bascom gefüttert wird.

    Der Roboter ist 160x100mm groß, und wiegt inkl. Akku derzeit nichtmal 200gr.
    Antreiben sollen ihn zwei gehackte Servos, die ich noch in der Bastelkiste hatte.
    Nun hab ich die Servos gerade offen auf dem OP-Tisch liegen und wundere mich, warum das Poti in der Neutralposition hackt und einen Widerstandswert von 0Ohm hat, hab ich noch nie erlebt! Nun hab ich erstmal zwei 3,3kOhm Widerstände als Spannungsteiler eingebaut und an den Mega16 angeschlossen und o wunder: Sie drehen sich^^
    Nun meine Frage: Wie bekomme ich es hin, dass die Servos auch mal aufhören zu drehen? Bislang drehen sie immer unendlich in eine Richtung, mal schnell mal langsam, aber ich bekomms nicht hin, dass sie nichts tun?! Könnt ihr mir helfen?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.01.2010
    Ort
    Deutschland
    Beiträge
    735
    Wenn du die Elektronik aus dem Servo nimmst (nur den Motor drin lassen)und nur dem Motor direkt anschließt dann läuft das Servo nur wenn Strom drauf ist.
    Wenn es in die andere Richtung drehen soll dann musst du einfach die Pole umdrehen.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.09.2009
    Beiträge
    12
    Die Original-Servoelektronik ist noch drin.

    Mein Problem ist jetzt, dass sich das Servo sofort dreht, wenn Spannung auf dem Board ist, obwohl es das eigentlich nicht sollte.
    Der Code:
    Code:
    'erstes Bascom-Programm für Roboter
    
    $regfile "m16def.dat"
    $crystal = 8000000
    
    Config Portd.6 = Output
    Config Portd.7 = Output
    Config Portb.2 = Output
    Config Pind.5 = Input
    Config Pind.4 = Input
    
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
    Config Lcd = 16 * 2
    
    Config Servos = 2 , Servo1 = Portd.6 , Servo2 = Portd.7 , Reload = 10
    
    Enable Interrupts                                           'Interrupts für Servo erforderlich!
    
    Taster1 Alias Pind.5
    Taster2 Alias Pind.4
    Led_gruen Alias Portb.2
    
    'hier dreht sich das Servo!
    
    Portd.6 = 0
    ' hier dreht es sich immernoch?!
    
    Cursor Off
    
    Cls
    Locate 1 , 1
    Lcd "# RobiRobo 1.0 #"
    Waitms 500
    Led_gruen = 1
    Wait 1
    
    Servo(1) = 100
    Cls
    Locate 2 , 1
    Lcd "Servo 1 an"
    Wait 60
    
    Portd.6 = 0
    Cls
    Locate 2 , 1
    Lcd "Servo 1 aus"
    
    End
    Wenn ich den ganzen Servo-Müll rausschmeiße, dann dreht es sich nicht, also schließe ich daraus, dass es zu 100% an der Software liegt?!
    Bei einem anderen gehackten Servo ist das gleiche Problem, hier ist auch noch das Poti drinne, aber wenn man am Poti dreht ändert sich komischerweise garnichts?

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    49
    Beiträge
    1.245
    Ich würde es so machen: Servo an Spannung (Plus und Minus halt, 5V), und die Signalleitung vom Servo an einen PWM-Ausgang.
    Servos _können_, wenn sie gar keine PWM bekommen, unkontrolliert laufen, darum musst du ihnen per PWM eine Vorgabe liefern (deswegen darf man bei RC-Anlagen auch z.B. nie den Empfänger vor dem Sender einschalten, das kann die Servos beschädigen).


    Potis stellst du am besten auf Mitte, misst sie und ersetzt die dann durch passende Widerstände (es _geht_ auch mit Poti, aber dann ist es schwer, sie wirklich ruhig zu stellen).
    So funktioniert es bestens.

    Der Trick ist dann nur noch, das passende PWM-Signal zu den Widerständen zu erzeugen, bei dem das Servo auch stehenbleibt.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Normalerweise schmeisst man die ganze Elektronik raus und benutzt ne Doppel-H-Brücke ( L293 ) um 2 Servos zu betreiben.

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554

    Re: Servos als Antrieb...

    Zitat Zitat von Maxi P.
    ... hab ich erstmal zwei 3,3kOhm Widerstände als Spannungsteiler eingebaut und ... Sie drehen sich ... mal schnell mal langsam ...
    Es gibt zwei Möglichkeiten, Servos zu hacken:

    A) Elektronik drinlassen.
    Dabei wird - wie Du es wohl gemacht hast, die Servo-Mittelstellung durch einen Spannungsteiler simuliert. Im Servo muss noch der Drehwinkel-Anschlag entfernt werden. JETZT kannst Du mit einer üblichen Servo-PWM den Motor steuern. Du kennst das übliche PWM-Signal für Servos? Etwa 50 mal pro Sekunde kommt ein Signal mit Pegel high, etwa +5V gegen GND des Servo (jaaa- Servo-GND und Controller-GND müssen verbunden sein) von etwa 0,5 bis 1,5 ms Länge. Bei Deinem Spannungsteiler wird der Servo dann bei rund 1 ms Signallänge ziemlich langsam drehen, sollte eigentlich sogar stillstehen, bei weniger dreht er in eine Richtung, bei einem längeren Signal dreht er in die andere Richtung.
    Vorteil: Du brauchst für die Ansteuerung eines Servos nur einen Controllerpin.
    Nachteil: nach meiner Erfahrung lebt die Elektronik nicht wirklich lange . . . . die ist wohl nach wirtschaftllichen Gesichtspunkten meist ziemlich knapp ausgelegt. Ausserdem ist man an die Stellgeschwindigkeit der Drehzahleinstellung von 50 Hz gebunden - das war bei mir für eine schnelle und gute Regelung viel zu langsam. Bei einer 8-Bit-PWM hast Du nur 127 Werte zum Steuern einer Richtung (langt aber doch wohl immer).

    B) Elektronik ausbauen
    und den Motor so betreiben, wie eben ein Gleichstrommotor betrieben wird. (Dass dies der Normalfall sei, halte ich eher für ein Gerücht.) Dabei werden übliche Motorbrücken-ICs eingesetzt, die mit 2 oder drei Pinnen je Motor vom Controller gesteuert werden.
    Vorteil: Die PWM kann so schnell sein, wie Du willst - na ja, wie Du als richtig empfindest oder berechnest. 10, eher 20 kHz ist da nicht zu viel, siehe diesen Thread. Theoretisch kann man dann mit ein paar Kilohertz die Drehzahl nachstellen/regeln. Es wird die volle Bitbreite der PWM zum Stellen in eine Richtung ausgenutzt = doppelte Auflösung wie bei A).
    Nachteil: Es werden pro Motor zwei, meist drei Pinne für die Drehzahlstellung benötigt.

    Meine Lösung sieht aus wie im Bild unten (Mikroservo vom C für fünf Flocken): keine Elektronik, auch mal zwei Getriebestufen übersprungen (ein Rad ausgebaut) - und das gibt dann statt 1 Ups eine Drehzahl von 8 Ups. UND eine mikroskopisch kleine Drehzahlmessung mit Gabellichtschranke.

    ................
    Ciao sagt der JoeamBerg

Berechtigungen

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