Neu hier und eine Frage zur Servoansteuerung

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Wenn Dein Kontroller jetzt mit 8MHz läuft, dann versuch mal dieses Programm. Servo muss hier aber zwingend an PB2 angeschlossen sein. GND und 5V+ sollten auch klar sein.
      Sollte es mit diesem Programm nicht funktionieren, ist entweder Dein Servo defekt, etwas falsch angeschlossen oder eine zu schwache Stromversorgung vorhanden.
      Bei mir auf dem Schreibtisch werkelt ein kleines Servo gerade damit (auch wenn meins ein analoges ist).

      Netten Gruß
      Robert

      BASCOM-Quellcode

      1. '
      2. ' ---------------------------------------------
      3. '
      4. ' Servotester
      5. ' Servo angeschlossen an VCC, GND und PB2 (OC1B Pin!, Pin 16)
      6. '
      7. ' ---------------------------------------------
      8. $regfile = "m8def.dat" ' ATMega 8
      9. $crystal = 8000000
      10. $hwstack = 32
      11. $swstack = 32
      12. $framesize = 40
      13. ' --------------------------------------------------------
      14. ' Timer 1 konfigurieren (CTC-Mode) für Servosignal
      15. Config Timer1 = PWM , Prescale = 8 , Compare_B_PWM = CLEAR_UP , Clear_Timer = 1 ' Timerticks 1us
      16. Set TCCR1A.WGM11
      17. Set TCCR1B.WGM13
      18. OCR1A = 20000 - 1 ' OC1A bestimmt die Refreshtime (Angabe in us)
      19. OCR1B = 1500 - 1 ' OC1B bestimmt die Pulsbreite 1ms bis 2ms (Angabe in us)
      20. ' --------------------------------------------------------
      21. ' Variablen
      22. Dim N as Word
      23. ' --------------------------------------------------------
      24. ' Alias
      25. Servo Alias OCR1B
      26. ' --------------------------------------------------------
      27. ' Hauptprogramm
      28. ' --------------------------------------------------------
      29. Do
      30. For N = 1000 to 2000 ' Signal 1ms bis 2ms
      31. Servo = N
      32. Waitms 1
      33. Next N
      34. For N = 2000 to 1000 Step -1 ' Signal 2ms bis 1ms
      35. Servo = N
      36. Waitms 1
      37. Next N
      38. Loop
      39. End
      Alles anzeigen
    • @R2D2 Dank für das Programm! Ich habe es ausprobiert und mein Servo rührte sich leider nicht.
      Da habe ich mir überlegt, dass ich einfach den Aufbau auf dem Steckboard noch einmal auf einem zweiten Steckboard durchführe. Meine Idee war: Anderes Steckboard, nur noch die allernötigsten Verbindungsleitungen (auf dem anderen Board sind die Leitungen für ein LCD-Display) und mein Reserve-ATmega8. Damit könnte ich eine Reihe möglicher Fehlerquellen ausschließen.
      Gesagt, getan. Alles mit Sorgfalt zusammen gesteckt und ersteinmal Dein Frequenz-Prüfprpgramm geladen und abgespielt. Da blinkte es mit 8 sek Abstand. Dann habe ich wieder versucht, wie heute nachmittag, die fusebits auf 8 mHz zu schalten. Blöderweise sprang das das immer wieder zurück und so konnte ich die LED nicht zum schnellen Blinken bringen...
      Nach einigen Versuchen zeigte das Programm im Programmerfenster unter "Focks and Fuse bits" gar nicht mehr die vertraute Tabelle, sondern irgend ein Register mit Hexadezimalzahlen oder so... ;( Seit dem geht gar nichts mehr.
      Wie bekomme ich denn die Tabellenanzeige bei "Locks and fuse bits" zurück?
      Und: Wie mache ich das, dass die 8 mHz Einstellung in der Tabelle auch stehen bleibt? (Heute nachmittag schien es noch ganz einfach)

      Das Anfängerdarsein ist manchmal nicht einfach... :(

      Ein Oszi habe ich übrigens nicht.

      Gruß, Stefan
    • Möglicherweise habe ich mir meinen Reserve-ATmega8 zerschossen. :(
      Naja, mit Verlusten ist zu rechnen und wo gehobelt wird...
      Damit ich heute abend wenigstens noch ein bisschen weiter komme, habe ich den Prozessor, den ich heute nachmittag schon mit 8 mHz anfreunden konnte in meinen neuen Aufbau transplantiert. Die Diode leuchtete im 1-Sekundentakt und dann habe ich das Servo angeschlossen.
      Absoluter Minimalaufbau, absolut übersichtlich. Als ich dann das Programm "Servotester" laufen lassen habe, hat sich zwar am Servo nichts bewegt aber immerhin war ein leises Tickern vom Servo zu hören.

      Schade... Ich bleibe aber dran.

      Gruß, Stefan
    • froschkoenig schrieb:

      Reserve-ATmega8 zerschossen
      Unwahrscheinlich, die sind sehr robust. Vermutlich braucht er nun einen externen Clock oder läuft mit 16(128)khz. Sollte wieder hin zu kriegen sein.
      Der Servo hat schon mal irgendwo funktioniert? Kommt mit 5V klar? Bekommt seine Betriebsspannung von einem anderen/starken Netzteil? Nicht das der defekt ist? Oder in einem Anschlag verklemmt? Läßt er sich drehen (ohne Versorgungsspannung)?
      Das "Servotester" läuft auch mit 1Mhz. dafür Prescale = 1 (in Zeile 15) (und natürlich $crystal = 1000000 ;) )
    • Hallo Pluto,

      ich werde wohl mal in meiner Gerümpelkiste kramen. Vielleicht finde ich ja noch einen externen Quarz, der dem Atmega ein paar Takte erzählt (hit me with your rythmstick, oder so...)
      Der Servo ist neu gekauft. Eine andere (RC-) umgebung zum Ausprobieren habe ich nicht. Bei einem Programm (ohne "config servo") bewegte sich der Servo bei Programmstart in eine Mittenposition. Leider war das später nicht mehr reproduzierbar.
      Der Hersteller gibt das Drehmoment für 6 unf 4,8 Volt an. Leider habe ich auch keine geregelte Stromquelle, sondern experimentiere mit 3...4 AA-Batterien. Ich kann aber die Spannung während eines Ansteuerungsversuches messen und die bricht nicht zusammen.
      Ja, der läßt sich schon (mit viel Kraft) drehen.
      Heute abend werde ich es weiter versuchen...

      Gruß, Stefan
    • Eine letzte Idee, woran es liegen könnte, habe ich noch:

      Wenn ich mit dem USBASP Programmer flashe, gibt es unten im Protokoll folgende Fehlermeldung:

      "Can not set clock frequency. Please check for usbasp firmware update"

      Trotz der Fehlermeldung blinkt die LED beim Frequenztestprogramm wacker im 1-Sek- Takt.

      Was meint Ihr? Ist das eine Fehlermeldung um die ich mich kümmern muss? Sollte ich nach neuerer Firmware suchen? ...und falls ja: Wo?

      Gruß, Stefan
    • froschkoenig schrieb:

      experimentiere mit 3...4 AA-Batterien.
      Zu schwach, kauf dir ein 5V mit min. 2A Netzteil

      froschkoenig schrieb:

      Ich kann aber die Spannung während eines Ansteuerungsversuches messen und die bricht nicht zusammen.
      Mißt du mit Shunt und Oszi oder mit dem Multimeter?
      Der Spannungseinbruch ist da.


      Im Prinzip geht es ja erstmal um die Ausgabe eines definierten Pulses.

      Ein einfaches Programm im Schema:
      Do
      porta.0 = 1
      waitus 1500
      porta.0 = 0
      waitms 10
      Loop

      bringt normgerechte Servopulse auf die Leitung (Stackwerte nicht vergessen)
      um ein angeschlossenes Servo zu testen, das geht auch mit einem 1MHz Prozessor.
    • Es wird erst ein Problem wenn einer mit niedrigen Clock (128/16Khz) angesprochen werden soll.
      Mit seiner funktioniert er richtig. (Nicht vergessen seine Fuse umzuschalten)

      Er kann den Mega mit Strom versorgen. Dann kann der Servo an den Batterien ohne das das sich stört.
      Auch wenn man die Einbrüche nicht direkt sieht würd ich drauf wetten das sie Probleme machen.
      Hier kollabiert ein Lcd öfters mal und die hängen an einem 2A Netzteil.
      Batteriekontakte sind auch ein ewiges Ärgernis, ein großer Elko am Servo könnte helfen.
    • Fuses Prüfen!!
      Extern Clock ist nicht das Quarz sondern ein Quarzoszillator.

      Aus dem Netz: Ein Quarz ist keine "External Clock", sondern ein "External Crystal/Ceramic Resonator". Bei vielen AVRs ... Per Fuse Calculator die Fuses berechnen lassen.
      anbei ein kleines Programm was ok ist.
      Dateien
      • Servo_Befehl.bas

        (2,71 kB, 18 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Pocketpcuser ()

    • @ Michael: Echt? 2 Ampere? Wie viele Milliampere braucht so ein Servo mittlerer Größe während eines Stellvorganges denn tatsächlich wenn kein Moment abgefragt wird? Ich staune, aber ich habe bisher auch gar keine Erfahrung mit den Dingern.
      Jedenfalls habe ich da ein Multi- (Volt-)meter drangehängt und weil da nichts passierte dachte ich, dass der Servomotor gar keinen Strom angefordert hat.
      Deine kleine Programmschleife verstehe ich. Die werde ich nachher mal probieren und ggf. ein bisschen die Dauer modifizieren... Allerdings dann immer noch mit der Batterieversorgung.

      @ Pluto: Was Du mit der "niedrigen Clock" meinst, verstehe ich nicht. Sorry.
      Ansonsten mache ich das bisher so wie Du schreibst: Bei meinen Versuchen, den Servo zu bewegen, lasse ich den ATmega8 am Programmer. Der macht dann dessen Stromversorgung. Beim Servo habe ich einen Batteriebloch dran. Entweder 4,7 V oder 6,3 V. Die Ground ist verbunden.

      @PocketPCuser: Gestern habe ich einen Quarz (CQ 1.8432 MHz) mit zwei kleinen Kondensatoren an den ATmega8 gehängt, um den scheinbar zerschossenen ATmega8 zu retten. Leider habe ich es nicht hin bekommen im Bascom-Programmerfenster unter Locks and Fusebits die gewünschten Werte einzustellen. Ich hatte mir vor der Fusebit_Veränderung ein Handyfoto gemacht. Ich konnte die Werte für Hex-Zahlen nicht eingeben.
      Jedenfalls: Danke für das Programm! Das funktioniert aber doch nur, wenn einen 16 Mhz-Quarz dranhänge, richtig?

      Jedenfalls: Danke an alle für die Hilfe! Es tut mir leid, dass ich mit meiner Experimentierzeit immer etwas zeitversetzt zu Euren Antworten bin!

      Gruß, Steafn
    • So, jetzt habe ich mit der kleinen Programmschleife experimentiert. Ich habe die Impulsdauer und die Impulshäufigkeit munter variiert. Probeweise auch mal so lang, dass ich die Dauer der Impulse mit LED und Stopuhr checken konnte. Alles funktioniert, nur der Servo (das Servo?) hat bestenfalls ein leises Ticken von sich gegeben. Na gut... 6 V Batterieanschluss...
      Als ich den Servo vom Strom genommen habe, hat mal kurz eine 30° Drehung gemacht, um sich über mich lustig zu machen.
      Die Farben der Servoanschlusskabel sind eindeutig? (Rot=Mitte=+ / Schwarz=Seit=- / Weiß=Seite=PWM)

      Jedenfalls lerne ich bei der Fehlersuche einiges... :)

      Gruß, Stefan

      Ich habe mir gerade noch einmal die Daten zu dem Servo angesehen. Da steht:

      Arbeitsfrequenz: 2us 1520us / 330hz

      genauso, wie ich es getippt habe. Was das aber genau bedeutet, weiß ich nicht. Ich habe natürlich auch Pulslängen von 2 und 1520 us probiert. mit 330 oder 50 Pulsen pro Sekunde. Hat aber auch nicht geholfen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von froschkoenig ()

    • froschkoenig schrieb:

      Echt? 2 Ampere? Wie viele Milliampere braucht so ein Servo mittlerer Größe während eines Stellvorganges denn tatsächlich wenn kein Moment abgefragt wird? Ich staune, aber ich habe bisher auch gar keine Erfahrung mit den Dingern.
      Jedenfalls habe ich da ein Multi- (Volt-)meter drangehängt und weil da nichts passierte dachte ich, dass der Servomotor gar keinen Strom angefordert hat.
      Mit 2 Ampere sollte ein Servo zurechtkommen.
      Hier mal ein Link zur Thematik, interessant die Grafik unten, was so ein Servo wirklich zieht.
      ripmax.de/servo-rueckstrom-r7018sb

      froschkoenig schrieb:

      hat bestenfalls ein leises Ticken von sich gegeben. Na gut... 6 V Batterieanschluss...
      zu wenig Strom oder keine Pulse?
      Zeig uns bitte dein ganzes Programm, vielleicht hast du ja was vergessen (Stackwerte, DDR, etc)

      froschkoenig schrieb:

      Die Farben der Servoanschlusskabel sind eindeutig? (Rot=Mitte=+ / Schwarz=Seit=- / Weiß=Seite=PWM)
      bei mir ist es braun (GND) rot (+) und orange (Impuls)

      froschkoenig schrieb:

      Ich habe mir gerade noch einmal die Daten zu dem Servo angesehen. Da steht:

      Arbeitsfrequenz: 2us 1520us / 330hz

      genauso, wie ich es getippt habe. Was das aber genau bedeutet, weiß ich nicht.
      Da wäre es nützlich, wenn du mal ein Datenblatt verlinkst, wir könnten die Daten erklären und dann das passende Programm entwickeln.
    • froschkoenig schrieb:

      der "niedrigen Clock" meinst,
      sorry andere Baustelle. Viel können auf 128/16 khz arbeiten. Der Mega 8 nicht, da steht jetzt vermutlich irgendwas Extern. Da reicht es so ca 1Mhz an Pin B.7 einzuspeisen damit er wieder ansprechbar wird.
      Manchmal humpelt der Bascom Programmer da hilft es Baccom neu zu starten (nicht nur das Programmer Fenster). Läßt er sich noch erkennen (Indentfy Chip)?

      Sicher das nicht weiß + ist und rot der Eingang?