- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Servo verhält sich nicht normal

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385

    Servo verhält sich nicht normal

    Anzeige

    Powerstation Test
    Hi,
    Wie ihr wisst laufen mittlerweile meine Servos unter C *schulterklopf*
    Ich habe einige Teste gemacht und die Servos immer von 0 bis 255 und zurücklaufen lassen. Allerding zucken die Servos einmale ziemlich heftig, wenn sie auf 0 sein sollten. Also der Servo geht runter auf 0 und zuckt dann ein paar Grad wieder nach oben und bleibt dann da stehen.
    Ich benutze dern Servotreiber rns1.

    Weiß jemand woran das liegent könnte? Ich poste das hier ins C-Forum, weil sie das unter Bascom nicht gemacht haben. Ich schätze mal, dass es dann mit C bzw mit meinem Code zu tun hat.

    Code:
    void servo_move(int servo, int pos)
    {
          loop_until_bit_is_set(UCSRA, UDRE);
          UDR = '#';
          loop_until_bit_is_set(UCSRA, UDRE);
          UDR = 's';
          loop_until_bit_is_set(UCSRA, UDRE);
          UDR = servo;
          loop_until_bit_is_set(UCSRA, UDRE);
          UDR = pos;
    } 
    
    ...
    	for(i=127; i>=0; i--) {
    		servo_move(4, i);
    		_delay_ms(20);
    	}
    ...
    mfg
    jagdfalke

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Die Position Null gibt es bei dem RNS1 Programm nicht (ist dort soweit ich weiß zum "ausschalten" des Ausgangs gedacht). Lass dein Programm einfach nicht bis Null laufen, dann sollte das funktionieren.

    Alternativ kannst du auch einen anderen Servotreiber Code verwenden. Ich hatte auch mal einen dazu geschrieben:
    http://www.kreatives-chaos.com/index.php?seite=rnkc10
    Wenn du nur die Ansteuerung per UART brauchst kannst du im Prinzip alle Unterprogramme bis auf init() und die Interruptroutinen und den Inhalt der while Schleife im Hauptprogramm auskommentieren/löschen. Sollte aber natürlich auch so funktionieren

    MfG Kjion

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Ok, danke für die Antwort.
    Ich schätze mal, dass man die Servos dann bis 256 steuern kann, wenn die 0 wegfällt.

    mfg
    jagdfalke

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Zitat Zitat von jagdfalke
    Ich schätze mal, dass man die Servos dann bis 256 steuern kann, wenn die 0 wegfällt.
    Wie soll den das gehen wenn man die Position mit einem Byte angibt ?? Mehr als als 256 (0 bis 255) verschiedene Zustände kann man damit einfach nicht kodieren ... 256 wäre wieder durch eine Überlauf wieder eine Null

    MfG Kjion

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Ich dachte 0 wäre "Ausschalten", hast du doch gerader aben gesagt. Das sagt dann halt dem Treiber, dass er kein Signal mehr hinschicken sollte, dachte ich. Wenn dann wieder nur Positionen von 1 bis 255 hat ist ja die Auflösung kleiner als sie sein könnte.

    mfg
    jagdfalke

Berechtigungen

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

Labornetzteil AliExpress