- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Servos am ATMega48

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    07.08.2006
    Beiträge
    12
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo

    Also wenn ich das richtig verstanden habe dann ist bei 4Mhz 1ms nach 1000 Takten "vorbei". Diese 1000 Takte kann man ja mit dem Prescaler für den Counter begrenzen also z.B. 1000 / 8 = 125. Dann setzt man alle 19 Timerdurchläufe den PWM-Kanal auf high. Dazu schreibe ich dann z. B. 62 in das Compare Register. Damit wäre rein rechnerisch die Pulslänge bei 0,496ms(+1ms also 1,496ms) und das Servo würde in die Mittelstellung gehen...oder?

    Wie mache ich es am besten das der PWM-Kanal nur alle 19 mal aktiviert wird? Mein Ansatz wäre dass ich in einer Variable mitzähle...

    Grüße
    BlueEagle

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    nuja ... bei 4 MHz sind 1 ms = 4000 Takte (war nen denk und tipfehler von mir da oben)

    Der Ansatz mit der Variable könnte funzen ..
    du musst halt alle 20 Durchläufe den Pin auf den Timer schalten ...

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    ich habe 4 servo(5 euro von conrad) am küchenbot und steuere die frei ,siehe beispiel (180 grad), frage den srf04ultra ab und sende die daten zum pc mit dem easy-radio-funkmodul , ich scanne den raum damit ab,
    1 waitus braucht gemäss ausrechnung der asmlaufroutine 10us , darum sind die servowertzahlen um den teiler 10 kleiner :

    Code:
    Sub scan_vorn()
    	For servo_wert = 1 To 180
    		servo_wert1=servo_wert+50
    		servo_wert2=2000-servo_wert1
    		PORTB.0=1
    		WaitUs (servo_wert1)
    		PORTB.0=0
    		WaitUs (servo_wert2)
    		srf04_vorn()
    		Print #1,Str(srf04_w_vorn)
    	Next wert
        For servo_wert = 180 To 1 Step -1
    		servo_wert1=servo_wert+50
    		servo_wert2=2000-servo_wert1
    		PORTB.0=1
    		WaitUs (servo_wert1)
    		PORTB.0=0
    		WaitUs (servo_wert2)
    		srf04_vorn()
    		Print #1,Str(srf04_w_vorn)
    	Next wert
    End Sub

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress