-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Atmega8 und Servo ansteuern

  1. #1
    Benutzer Stammmitglied Avatar von Wombatz
    Registriert seit
    10.06.2011
    Beiträge
    70
    Blog-Einträge
    1

    Atmega8 und Servo ansteuern

    Anzeige

    Hallo zusammen,

    ich habe da mal wieder eine Frage. Gerade habe ich mir einen Servo gekauft und wollte ihn an meinen Atmega8 ansteuern.
    Jetzt gleich zu meinem Problem. Wenn ich den Servo bewegen will ruckelt er hin und her....
    Im Forum habe ich gelesen, dass man mindestens 8Mhz Crystal braucht... ist das richtig oder geht das auch mit 4Mhz???
    Wenn ja kann mir einer den Grund erklären???

    Ich versuche nämlich mit 4 anzusteuern....

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

    Je kleiner der Kontrollertakt ist umso geringer ist die Auflösung der Servopositionen. Mit 4MHz sollte es aber grundsätzlich funktionieren. Zeig mal dein Programm bzw. deine Servoansteuerung.

    Gemeinsame GND-Verbindung und ausreichend stabile Spannungsversorgung für das Servo sind natürlich auch wichtig.

    Gruß

    mic

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

  3. #3
    Benutzer Stammmitglied Avatar von Wombatz
    Registriert seit
    10.06.2011
    Beiträge
    70
    Blog-Einträge
    1
    Ich habe es mit mehrere Programmen versucht... Hier ist meine aktuelle Version

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 9600
    
    
    Config Timer1 = Timer , Prescale = 8                        'timer für Servos
    Enable Timer1
    
    Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
    
    Config Portb = Output
    
    
    Dim A As Word
    
    On Timer1 Pwm
    
    Enable Interrupts
    
    Timer1 = A
    
    '***************** Hauptschleife / Servobewegung ********
    Do
    
    A = 63535
    
    Wait 2
    
    A = 61535
    
    Loop
    '****************** Label **********************
    Pwm:
    
       Toggle Portb.1
    
    Return
    Geändert von radbruch (30.09.2011 um 15:53 Uhr)

  4. #4
    Benutzer Stammmitglied Avatar von Wombatz
    Registriert seit
    10.06.2011
    Beiträge
    70
    Blog-Einträge
    1
    mein GND ist mit GND des Boards zusammengeschaltet. Mein Netzteil versorgt beide Geräte mit Spannung... (Ca.7V und 1,5A)... sollte eigendlich reichen

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

    Was soll das mit dem Timer1? Nach der Bascom-Hilfe verwendet der Servo-Befehl den Timer0. Schau dir mal den Hilfetext zu "Config Servos" an.

    Code:
    Do
    
    A = 63535
    
    Wait 2
    
    A = 61535
    
    Loop
    A wird 63535, dann zwei Sekunden warten, dann wird A 61535 und gleich wieder 63535! Dann wieder zwei Sekunden warten... Was passiert dann mit A?

    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
    Benutzer Stammmitglied Avatar von Wombatz
    Registriert seit
    10.06.2011
    Beiträge
    70
    Blog-Einträge
    1
    Du hast recht ich habe Wait 2 vergessen.... das ändert aber nichts an dem Servoverhalten.
    Mit dem Timer1 kann man das wohl auch machen, das habe ich auf jeden Fall im RN-Wissen gelesen.

    http://www.rn-wissen.de/index.php/Servoansteuerung

    Komisch ist nur, dass der Servo in unregeläßigen Intervallen hin und her dreht
    Geändert von Wombatz (30.09.2011 um 16:26 Uhr)

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    Ich verstehe gerade nicht wirklich wie du mit diesem Programm ein Servosignal zu erzeugen gedenkst..
    ..aber das besagte ruckeln kann ich angesichts der wait 2 und waitms 500 ungeprueft glauben.

    Schau erst mal hier wie das Signal ausschauen sollte..
    http://www.rn-wissen.de/index.php/Se..._und_Schaltung

    Gruss

    Edit: Den Ansatz mit Timer Intterupts zu arbeiten kann ich nur befuerworten, hatte schlechte Erfahrungen mit den Bascom Servo Befehlen (seltsames Zucken)
    Nam et ipsa scientia potestas est..

  8. #8
    Benutzer Stammmitglied Avatar von Wombatz
    Registriert seit
    10.06.2011
    Beiträge
    70
    Blog-Einträge
    1
    Ich habe jetzt mal das Beispiel des Links genommen
    $regfile = "m8def.dat" ' specify the used micro

    $crystal = 3686400 ' used crystal frequency


    Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10

    Config Portb = Output

    Enable Interrupts


    Do
    Servo(1) = 100
    Servo(2) = 100
    Waitms 1000
    Servo(1) = 50
    Servo(2) = 50
    Waitms 1000
    Loop

    Das PWM-Signal wird erzeugt, nur der Servo dreht sich nicht. Irgendwie ist mir das nicht plausibel.
    Der Timer zählt bis 256... Immer wenn er die Zahl 100 oder 50 erreicht, ändert der das Signal.
    So müsste die Theorie sein.
    Geändert von Wombatz (30.09.2011 um 16:48 Uhr)

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Grundsätzlich wichtig ist, dass der Takt auch wirklich 3686400Hz ist.

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

  10. #10
    Benutzer Stammmitglied Avatar von Wombatz
    Registriert seit
    10.06.2011
    Beiträge
    70
    Blog-Einträge
    1
    Das stimmt schon...alle anderen Sachen funktionieren auch... es ist ein externer Quarz. Das ist übrigends die Schaltung von Rowalt.de!
    Ich habe auch gerade mal den Speaker an den Servopin angeschlossen... Insofern, konnte ich auch hören, dass das PWM erzeugt wird.
    Ich versehe nur nicht, wieso der Servo nicht dreht.
    Der Servo ist übrigends auch nicht defekt, da ein anderer das selbe Phänomen zeigt

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Servo mit Atmega8 ansteuern?
    Von kif im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 16.01.2011, 17:25
  2. Schrittmotor mit ATMEGA8 ansteuern
    Von dadio im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 08.02.2008, 00:10
  3. LC78211 mit Atmega8 ansteuern
    Von webbuddah im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 02.02.2007, 14:58
  4. 32 Servos mit Atmega8 ansteuern???
    Von ChRiZ im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 3
    Letzter Beitrag: 21.10.2006, 22:12
  5. Servo mit ATmega8
    Von Björn im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 23
    Letzter Beitrag: 20.09.2005, 22:00

Berechtigungen

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