- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Servo mit Pulseout steuern

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    42
    Beiträge
    318
    Anzeige

    Praxistest und DIY Projekte
    Hi,

    ich verstehe was du meinst. Werde die 20ms durch die 18ms ersetzen. Das Servo steht unter keiner mechanischen last. Es wird auf dem Servo ein SRF05 installiert und dieser wird dann vom servo gedreht.

    mfg Kay

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    28.04.2007
    Beiträge
    5
    mal ne kurze frage am rande:
    es steht ja geschrieben, das bei 4 mhz ein pulseout befehl eine länge von 1 us
    ausgibt also sind dann 1500us 1,5ms also die mitte des servos. wie rechnet man das dann eigentlich um wenn man z.b. 12 mhz hat und dann auch eine länge von 1500us erzeugen will?
    Hier habe ich mal eben ein kleines programm geschrieben, mit dem ich ein servo mit hilfe von zwei tastern verstellen kann... kann man das so lassen? ich kann es leider erst morgen testen da mein atmega8 noch nicht da ist^^.
    und noch ne kleine anfängerfrage: kann man für eine variable ein definitionsbereich einstellen?

    vielen dank, mfg adrian

    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    
    Config Portc.0 = Output
    Config Pinc.1 = Input
    Config Pinc.2 = Input
    Dim I As Word
    Up Alias Pinc.1
    Down Alias Pinc.2
    I = 1500
    
    Portc.0 = 0
    
    Wait 1
    
    Pulse:
    Pulseout Portc , 0 , I
    Waitms 18
    If Up = 1 Then
    I = I + 50
    End If
    If Down = 1 Then
    I = I - 50
    End If
    
    Goto Pulse

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    59
    Beiträge
    1.080
    Wenn du bei 4 MHz 1500 einstelle musst, um 1,5ms zu bekommen, dann musst du bei 12 MHz:

    1500/4*12 einstellen.

    Vorrausgesetzt das Pulseout absolut Taktabhängig ist, was ich vermute, da kein Timer verwendet wird.

    Was dein Programm angeht, so müßte es funktionieren. Kommt aber auch darauf an, wie du die Taster beschaltet hast. Gehen die von den Input-Pins an +? Dann solltest du besser einen Pulldown-Widerstand einfügen. Du kannst die Taster natürlich auch an - gehen lassen und die internen Pullups verwenden. Dann müßten die if-abfragen allerdings lauten "if up=0 then".
    Was den Definitionsbereich angeht ist dies nur über dim in gewissen Grenzen möglich (Byte, Integer, Word, etc.) du solltest daher noch ein dein Programm einbauen, das z.B. I nur dann erhöht wird, wenn der Wert von I nicht schon zu hoch ist und nur dann vermindert wird, wenn der Wert keinen kleineren Impuls als 1ms erzeugt.
    Damit beugst du einem an seine Grenzen anschlagenden Servo vor.

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    28.04.2007
    Beiträge
    5
    Hey super, vielen dank für die schnelle antwort. also das mit dem pullup/pulldown ist mir auch noch aufgefallen...das werde ich also noch ändern. Und vielen dank für den tipp mit dem, dass I einen bestimmten wert nicht über-/unterschreiten darf!

    Viele Grüße.... Adrian


    p.s: Ich werde das programm heut oder morgen mal testen und hier dann bericht erstatten.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad