-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Wie Servo ansteuern??

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.02.2005
    Beiträge
    13

    Wie Servo ansteuern??

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo alle zusammen,

    habe mir das RN-Control Board ausgesucht, um einen Roboter zu steuern. Leider bekomme ich es nicht hin, einServo das machen zu lassen, was ich will.
    Habe schon den Code für Bascom aus dem entspr. Kapitel versucht, geht nicht. Habe den Artikel mit 2000 Schritten versucht, geht auch nicht.
    Habe das Servo am Portb.0.

    Kann mir jemand einen Code senden, mit dem ich die Funktion des Servos testen kann??

    Z.b. Taste 1 = ganz links
    Taste 2 = Mitte
    Taste 3 = ganz rechts

    Ich bin ein totaler Neueinsteiger auf dem Gebiet und komme hier irgendwie nicht weiter.


    Vielen Dank,
    Micha

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Hi Micha

    willkommen im Forum.
    Zitat Zitat von MichaS
    ... Code für Bascom ... versucht, geht nicht ... mit 2000 Schritten versucht, geht auch nicht ...
    So ne Fehlerbeschreibung "geht nicht ... geht auch nicht..." ist etwas trübe. Damit kann man nix anfangen. WAS geht denn und was geht nicht?

    Mal ein Tip: im Wiki ist der Anschluss eines Servos beschrieben (klick hier). DENN, viel geübte Anfängerfehler sind: zu wenig Strom von einer gemeinsamen Versorgung heisst meist zuwenig für den Servo, dann gibts oft einen RESET beim Controller wegen Spannungseinbruch - oder, noch häufiger: GND vom Servo ist mit GND von der Ansteuerung nicht verbunden. Dann "schwimmt" das Signal und der Servo ist konfus . . . .
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    35
    Beiträge
    253
    Zitat Zitat von MichaS Beitrag anzeigen
    Ich bin ein totaler Neueinsteiger auf dem Gebiet und komme hier irgendwie nicht weiter.
    Hallo Micha,
    ein Servo erwartet innerhalb eines 20ms "Fensters" eine Fallende Flanke. Diese wird in eine Winkelinformation umgesetzt.

    Stell dir also z.B. eine Sekunde unterteilt in 20ms Intervalle vor.
    Zu Anfang jedes Intervalles wird dein Servosignal auf High gesetzt.
    Je nachdem wo (1ms-2ms) du in dem Intervall die fallende Flanke erzeugst, bewegt sich dann dein Servohorn in die entsprechende Position.
    Am leichtesten zu Beginn ist meines Erachtens der Einstieg die Programmierung in ASM, da du dort die Zeiten, die durch den Code verursacht werden leichter abschätzen kannst.

    Wenn du das Prinzip verstanden hast, kannst du dir leicht C-Routinen schreiben, die dir z.B. einen Timer mit der gewünschten Pulsbreite initialisieren.
    Nach dem Ablauf dieser Zeit lässt du den Timer einfach mit 20ms-(Pulsbreite) bis zum nächsten Interrupt laufen. Das führst du dann einfach immer wieder hintereinander aus.

    Weitere Fragen werden sicher hier http://www.rn-wissen.de/index.php/Servos beantwortet.
    Ansonsten muss ich oberallgeier zustimmen, ein bisschen mehr Infos zu "Es geht nicht" sind sicher nützlich


    Grüße
    Michael
    http://www.sonsts.de/parabolatool.html Tool zur Berechnung von Parabolrinnenkollektoren

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    20.02.2005
    Beiträge
    13
    Hallo und vielen Dank für die Infos.

    Ich habe als Testaufbau folgendes gemacht:

    Auf einer Lochrasterplatte habe ich einen Anschluß für einen 7,2 V Fahrakku, einen Servoanschluß und ein Kabel zur Spannungsversorgung der RN-Control.
    Alles ist per Masse untereinander verbunden. die Plus-Leitungen gehen an die verschiedenen Verbraucher. Das Signal vom/fürs Servo Conrad-Standartservo) habe ich per extra Kabel an den PortB.0 geführt.

    Die Batteriespannung vom Testprogramm zeigt 7,4... V.

    Ich habe dann zum testen das Demo/Testprogramm unter Motoren/Servo benutzt, mit dem Befehl "Servo(1)=100 für Mittelstellung. (Entspr. 50 für links und 150 für rechts).

    Resultat: keine Bewegung am Servo.

    Danach habe ich das etwas längere Progamm benutzt (Unter Servoansteuerung mit 2000 Schritten).

    Resultat: Wildes Zucken, Kreischen, Brummen, Endanschlag links, mal rechts. Das Ganze mal mehr, mal weniger. Dann nichts mehr. Das Servo funktioniert am Empfänger jedoch weiterhin problemlos.

    Irgendwo hab ich da einen Fehler. Ich denke, es liegt an der Programmierung. Irgendwo hab ich da nen Hänger aus Mangel an Bascom-Kenntnissen, ich bin halt bisher nur Delphi gewöhnt.

    Ich hoffe, das ich das Ganze besser beschreiben konnte.
    Grüße,
    Micha

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Ein einfaches Servoprogramm könnte auch etwa so aussehen:
    Code:
    $regfile "M32def.dat"
    $crystal = 16000000
    
    Config Pinb.0 = Output
    
    Dim X As Byte
    
    Do
       For X = 0 To 100
          Portb.0 = 1
          Waitms 1
          Portb.0 = 0
          Waitms 19
       Next
    
       For X = 0 To 100
          Portb.0 = 1
          Waitus 1500
          Portb.0 = 0
          Waitms 18
       Next
    
       For X = 0 To 100
          Portb.0 = 1
          Waitus 500
          Portb.0 = 0
          Waitms 19
       Next
    
    
    Loop
    End
    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    20.02.2005
    Beiträge
    13
    Super, Danke.

    Werde ich heute gleich ausprobieren.
    Ist es eigentlich ein unterschied, ob ich config pinb.0 = Output oder portb = Output schreibe??
    Oder ist pinb nur ein einzelner von 8ten und portb gleich der ganze Port, den man auf Output setzt. Kann das schon ein Fehler sein??

    Grüße,
    Micha

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Immer gerne, allerdings ist mein Miniprogramm ungetestet (bisher).

    Pinx.y setzt die Datenrichtung für einen einzelnen Pin, mit Portx setzt man die Datenrichtungen mehrerer Pins an einem Port gleichzeitig.

    btw. kann ich dir die Hilfe von Bascom sehr empfehlen. Sehr umfangreich und fast immer mit kleinen Beispielprogrammen zum jeweiligen Thema.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Oder das Bascom Beispiel Programm......
    Code:
    $regfile = "m32def.dat"                                     ' specify the used micro
    $crystal = 16000000                                          ' used crystal frequency
    $baud = 19200                                               ' use baud rate
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 10                                               ' default use 10 for the SW stack
    $framesize = 40
    
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    Config Portb = Output
    Enable Interrupts 
    
    
    
    
    Do
    Loop
    
    Dim I As Byte
    Do
     For I = 0 To 100
       Servo(1) = I
       Waitms 1000
     Next
    
     For I = 100 To 0 Step -1
     '  Servo(1) = I
       Waitms 1000
     Next
    Loop
    End
    Damit sollte das Servo hin und her fahren, hat bei mir auf Anhieb geklappt. "I" darf hier nicht größer als 256 werden, wenn das größer gehen soll muss vorher als Word Variable Deklariert werden. Servo + an +, Servo - an GND und Servo Signal an Portb.x wobei in diesem Beispiel porb.0 gemeint ist.

    Gruß Richard

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    20.02.2005
    Beiträge
    13
    Hallo Alle zusammen,

    vielen Dank für die vielen Anregungen und Hilfen. Langsam habe ich das Gefühl, irgendwas stimmt mit dem Board oder dem Servo nicht.
    Besorge mir Morgen ein neues Servo.
    Habe das Ganze jetzt mit portb.1 getestet. nichts.

    Schönen Abend noch und bis dahin,

    Micha

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Läuft dein Board wirklich mit 16MHz? Stimmt der Servoanschluß am Board? Zuckt das Servo beim Einschalten? Wenn ja, zuckt es, wenn du selbst einen Impuls "morst"?

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. RP6 Servo ansteuern
    Von RP6-Besitzer im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 11.10.2010, 20:26
  2. Servo ansteuern
    Von sp33dy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 18.05.2010, 20:57
  3. Servo mit PWM ansteuern
    Von BIG Muzzy im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 24.05.2008, 15:54
  4. Servo ansteuern
    Von Felix H. im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 09.03.2008, 14:47
  5. Servo Ansteuern
    Von Robo-Hero im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 06.11.2006, 23:29

Berechtigungen

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