-         

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

Thema: Problem mit Servo

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2011
    Beiträge
    10

    Problem mit Servo

    Anzeige

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

    ich hab jetzt schon die Suche benutzt, aber nichts wirkliches gefunden, was mir weiter hilft.

    Ich hatte vor einen Servo anzusteueren, und den im Links- und rechtslauf zu betreiben. Alerdings dreht er mit dem Programm nur nach links, egal wie ich die Wartezeit einstelle. Zu den Servos, es sind welche von Conrad, bei dem einen ist die Poti-Achse gekürzt. Trotzdem laufen beide, auch der Originale stets nach links.

    Wisst ihr rat?

    Code:
    #include <avr/io.h>
    #define F_CPU 8000000L
    #include <util/delay.h>
    
    
    
    int main (void)
    {
    
    	DDRD |= (1<<PD5);
    	
    
        while(1)
        {
    	PORTD |= (1<<PD5);
        _delay_us(1500);
        PORTD &= ~(1<<PD5);
        _delay_us(18500);
        }
        
    
    
    return 0;
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Hast Du an den Servos irgendwie rummanipuliert?

    Normalerweise müssten die Servos mit einem 1,5ms Impuls auf Mittelstellung laufen und dort stehen bleiben.

    Bei kürzeren impulsen gehts nach links bei längeren nach rechts ( oder umgekehrt je nach Servo Hersteller ).

    Dauernd rundum drehen tut sich ein Original Servo eigentlich nicht!

    Entweder hast Du die Taktfrequenz des Controllers irgendwo falsch eingestellt, oder es ist ein Fehler im Programm, der mir momentan aber auch nicht auffällt.

    Läuft der Controller denn auch tatsächlich mit 8MHz? Oder mit den default 1MHz?

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2011
    Beiträge
    10
    Hi,

    also wir haben zwei Servos. Einer bei dem die Poti-Achse gekürzt is, der nur nach links dreht. Und einen originalen, der nur nach links bis zum Anschalg dreht, dann aber irgendwie ständig versucht weiter zu drehen. Klingt zumindest so.

    Da ich Anfänger bin, weiß ich jetzt nicht, ob er auf default läuft. Wo kann man das denn einsehen, bzw. umstellen?

    Danke schonma!

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Mir fehlt da irgendwo die Include für den Controller.

    Die meisten ATMEGA's mit internen Taktquelle laufen mit 8MHz mit! integrierten /8 Vorteiler. Also mit 1MHz.
    Die Einstellungen kann man mit den sog. Fuses ändern.
    Wie die eingestellt werden ist von der verwendeten Brennsoftware abhängig.

    Was benutzt Du denn da ?

    Eine Fuse - Calculator findest Du hier: http://www.engbedded.com/fusecalc/

    Vorsicht bei wilden rumprogrammieren an den Fuses.
    Wenn man da was total falsches einstellt - Z.B. externer Taktgenerator - lässt sich der Controller nicht mehr per ISP programmieren!

    Also lieber 3x nachschauen, bevor man da einfach was reihackt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2011
    Beiträge
    10
    Also wir benutzen AVR Studio 4.

    Als Controller dient der Attiny2313

    Also ich hab grad ma geguckt bei den Fuses in PonyProg, da is nirgends ein Häkchen!

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Hast du mit einem Oszi schon mal die Impulse angeschaut ob sie in der Länge passen. Ich denke mal sie tun es nicht.
    In der AVR-Library-Referenz steht:
    The maximal possible delay is 768 us / F_CPU in MHz

    Ein default gibt es bei den Servos nicht, die laufen dort hin wo es die Poti Einstellung vorgibt.

    Mach anstelle der 1500µs eine while mit einem delay von 10µs und lässt diese 150 mal durchlaufen.
    Anstelle der 18500µs nimmst du 18ms.
    Wenn du mit dem Kontroller allerdings mehr machen willst solltest du auf einen Timer mit PWM umsteigen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2011
    Beiträge
    10
    Einen Oszi hab ich nicht. Und den Tipp mit der Schleife werd ich gleich ma probieren. Danke!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2011
    Beiträge
    10
    Also, ich hab jetzt ma so gemacht, aber egel wie ichs einstelle ( ob 100 oder 200 mal Durchlauf), der Servo dreht nur nach links!




    Code:
    #include <avr/io.h>
    #define F_CPU 8000000L
    #include <util/delay.h>
    
    int i=1;
    int main (void)
    {
    
    	DDRD |= (1<<PD5);
    	
    
        while(1)
        {
    	PORTD |= (1<<PD5);
    	while(i<=200)
    	{
        _delay_us(10);
    	i++;
    	}
        PORTD &= ~(1<<PD5);
        _delay_ms(18);
        }
        
    
    
    return 0;
    }

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Hallo BlackHawk

    hast Du Dir schon mal im RN-Wiki (klick hier) angesehen, wie ein Servo angeschlossen werden muss? Hast Du eine vom Controller gesonderte Versorgung des Servos und einen gemeinsamen GND?
    Ciao sagt der JoeamBerg

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    07.02.2011
    Beiträge
    10
    Hi,

    ich hatte eine gesonderte Stromversorgung für den Servo. Allerdings mit getrennetn Massen. Ich hab jetzt ma die Massen zusammengelegt, aber trotzdem keine Besserung. Solangsam bekomm ich das Gefühl, dass ich da zwei Montags-Servos erwischt hab.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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