-         

Ergebnis 1 bis 3 von 3

Thema: servo in Bascom (arbeitet nur zwischen 20-100us)

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451

    servo in Bascom (arbeitet nur zwischen 20-100us)

    Anzeige

    Hi, ich weis, dieses Thema wurde schon so oft angesprochen, deswegen entschuldige ich mich im voraus, falls dies jemandem nicht passt.

    ich habe folgendes Problem:

    ich verwende einen Mega 168 mit 20Mhz, wenn ich in Bascom nun ein Programm mit servo befehl schreibe, hab ich nur die werte von 6-24 zur Verfügung, die restlichen sind außerhalb des überreiches des Servos. Verwende ich ein Programm, dass ich hier im Forum gefunden habe, in dem die Servos mit einer case Bedingung und dem waitus befehl gesteuert werden, muss ich die waitzeit auf 20-100 ändern, alles andere ist wieder außerhalb des Wertebereichs. ist das normal? weil eigentlich ja die werte zwischen 500 und 2000 liegen sollten.

    ich verwende einen 5€ servo vom C, kann es vielleicht daran liegen? was anderes fällt mir im Moment nicht ein.

    Code:
    $regfile = "m168def.dat"                                    ' the used chip
    $crystal = 20000000                                         ' frequency used
    
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Portd = Output
    Config Lcd = 16 * 2
    
    Config Portb = Output
    Enable Interrupts
    
    Dim Us As Word
    Dim Ad1 As Word
    
    
    Do
    
    Ad1 = Getadc(0)
    Portb.1=1
    
    Select case Ad1
    Case Is < 50 : Waitus 10
    Case 51 To 100 : Waitus 20
    Case 101 To 200 : Waitus 30
    Case 201 To 300 : Waitus 40
    Case 301 To 400 : Waitus 50
    Case 401 To 500 : Waitus 60
    Case 501 To 600 : Waitus 70
    Case 601 To 700 : Waitus 80
    Case 701 To 800 : Waitus 90
    Case 801 To 900 : Waitus 100
    Case 901 To 1000 : Waitus 110
    Case Is > 1001 : Waitus 120
    End select
    
    Portb.1=0
    
    Waitms 15
    
      Cls
      Lcd Ad1
    
    Loop
    
    End                                                         'end program

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Der Steuerpuls für eine Servo sollte eigentlich zwischen 1 und 2 ms liegen.

    Bei dem Befehl "Waitus" dürfte es sich um µS handeln, d.h. du verwendest Steuerpulse zwischen 0,01ms und 0,12ms.

    Seltsam, dass der Servo auf die minimalen Steuerpulse überhaupt unterschiedlich reagiert.
    Könnte es sein, dass die Fusebits deines Controllers nicht richtig eingestellt sind und der tatsächlich auf 8MHz oder sogar nur auf 1MHz läuft?

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451
    jetzt weis ich wo ran es liegt, aber eine frage, welche Einstellung muss ich verwenden, um einen 20Mhz Quarz verwenden zu können?

Berechtigungen

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