kann man Modellbauservos mit Pwm langsam von einer unbekannten Stellung in eine gewünschte fahren?

    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!

    • kann man Modellbauservos mit Pwm langsam von einer unbekannten Stellung in eine gewünschte fahren?

      Folgender Fall: mit einem Programm werden mehrere Servos gesteuert. Jetzt wird der Versorgungsstrom abgeschaltet, die Servos bleiben in der letzten Stellung stehen. Beim Wiedereinschalten startet das Programm mit einer programmierten Stellung (logisch), die jetzt nix mit dieser letzten Stellung zu tun hat. Alle Servos würden jetzt mit fullspeed in die neue Stellung fahren. Könnte man diesen fullspeed zB durch Pwm der Versorgungsspannung der Servos oder durch überlagerte Pwm auf das Servosignal verlangsamen, daß die Servos mit langsamer Geschwindigkeit ihre Position einnehmen?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Michael schrieb:

      die PWM muss langen Pausen beginnen und sich entsprechend langsam der normalen Pausenzeit annähern.
      Du meinst diese 10 bis 20 msec zwischen den 1,5 bis 2,5 msec?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • djmsc schrieb:

      Der Servo Befehl arbeitet ja schon mit Software PWM. Wäre dann vielleicht besser eine eigene Routine für die Servos zu schreiben.
      Hm, denk' ich auch, da hat man das timing komplett in der Hand.
      Pwm in der Versorgungsspannung könnte doch auch gehen, ich hab' in den von mir geöffneten Servos noch keinen großen Elko entdeckt, der da dann eher stören würde.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Michael schrieb:

      tschoeatsch schrieb:

      Michael schrieb:

      die PWM muss langen Pausen beginnen und sich entsprechend langsam der normalen Pausenzeit annähern.
      Du meinst diese 10 bis 20 msec zwischen den 1,5 bis 2,5 msec?
      ja, geht aber nur bei Analog-Servos
      Wie verhalten sich 'digitale', wenn kein Puls kommt? Bleiben die nicht in ihrer Stellung stehen?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Digitalservos haben einen Controller, der die Puls Länge misst und danach den Motor ansteuert. Je nach Implementierung verhalten sie sich ganz unterschiedlich.
      Analoge Servos haben einen Pulsgenerator, Pulsvergleicher und Pulsdehner. Deshalb geben sie den PWM Takt an den Motor weiter.
      Kommen die Pulse seltener, kommen auch weniger Pulse beim Motor an und er dreht langsamer. Der sog. Duty-Cycle ist ja dadurch kleiner.
    • Michael schrieb:

      Digitalservos haben einen Controller, der die Puls Länge misst und danach den Motor ansteuert. Je nach Implementierung verhalten sie sich ganz unterschiedlich.
      Analoge Servos haben einen Pulsgenerator, Pulsvergleicher und Pulsdehner. Deshalb geben sie den PWM Takt an den Motor weiter.
      Kommen die Pulse seltener, kommen auch weniger Pulse beim Motor an und er dreht langsamer. Der sog. Duty-Cycle ist ja dadurch kleiner.
      Langt bei den digitalen dann theoretisch ein Puls, damit die in diese Position fahren?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Kommt drauf an - wenn die Versorgungsspannung ratzfatz weg ist, muss vorher gespeichert worden sein.
      Versorgungsspannung ständig überwachen und ggf. "notspeichern"?
      Das Eeprom hält nicht ewig - da ist regelmäßiges Speichern schwierig.
      Heisenberg bei einer Radarkontrolle:
      Polizist: "Wissen Sie, wie schnell Sie waren?"
      Heisenberg: "Nein. Aber ich weiß genau, wo ich jetzt bin!"

    • @Michael keine Ahnung, wie so ein Controller programmiert werden könnte, bei fehlendem Puls sollte er meiner Meinung nach nix machen, also in der aktuellen Stellung verharren. Da ich aber keinen 'digitalen' habe, kann ich nicht testen.

      @feuerring und @mac5150 dieses Thema wurde ja schon ausgiebig behandelt und wäre auch möglich, nur hab' ich bei meinem bisherigen Versuchsaufbau bemerkt, wenn die Last am Servoarm groß genug ist, kann der sich dadurch bei Strom-weg verstellen und dann hilft die gespeicherte Position nix mehr.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      @Michael keine Ahnung, wie so ein Controller programmiert werden könnte, bei fehlendem Puls sollte er meiner Meinung nach nix machen, also in der aktuellen Stellung verharren. Da ich aber keinen 'digitalen' habe, kann ich nicht testen.

      @feuerring und @mac5150 dieses Thema wurde ja schon ausgiebig behandelt und wäre auch möglich, nur hab' ich bei meinem bisherigen Versuchsaufbau bemerkt, wenn die Last am Servoarm groß genug ist, kann der sich dadurch bei Strom-weg verstellen und dann hilft die gespeicherte Position nix mehr.
      Wenn das so ist ,kannste eigentlich nur den (die) Servo(s) beim einschalten einen Referenzpunkt(Endschalter,Lichtschranke,Hallgeber etc.) suchen lassen und dann die Servos in die Startstellung fahren lassen.
    • tschoeatsch schrieb:

      @Michael keine Ahnung, wie so ein Controller programmiert werden könnte, bei fehlendem Puls sollte er meiner Meinung nach nix machen, also in der aktuellen Stellung verharren. Da ich aber keinen 'digitalen' habe, kann ich nicht testen.
      ein Puls würde aber auch nicht reichen. Vorgabe wäre ja eine Wiederholung der Pulse und plausible Änderung zwischen 2 Pulsen.

      Nimm einfach normale Servos, die haben das Verhalten, wie ich es oben beschrieben habe.
    • @ftelektro das verstehe ich jetzt nicht, wie du das meinst. Eine Referenzfahrt braucht man bei Servos doch nicht, der Puls gibt die Stellung vor. Ich weiß nur beim Einschalten die Stellung nicht sicher und daher möchte ich mit langsamen Bewegungen zu vorgegebenen Stellungen fahren.

      @Michael auch wenn wir bisschen das Thema verlassen, warum sollte ein Puls nicht reichen? Und wann sind folgende Pulse unplausiebel? Es können doch wechselweise Pulse kommen, die von einem Anschlag zum anderen Anschlag fahren lassen. Ob's der Servo in der Zeit schafft, ist ein anderes Problem, aber eigentlich kein richtiges. Der Servo fährt halt mit Maxgeschwindigkeit, wieweit er in der Zeit kommt, hm, bis halt ein Richtungswechsel befohlen wird.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Das hast du geschrieben,

      @feuerring und @mac5150 dieses Thema wurde ja schon ausgiebig behandelt und wäre auch möglich, nur hab' ich bei meinem bisherigen Versuchsaufbau bemerkt, wenn die Last am Servoarm groß genug ist, kann der sich dadurch bei Strom-weg verstellen und dann hilft die gespeicherte Position nix mehr.


      wie willste denn die Aktuelle Servoarmstellung detektieren nach mech. Verstellung?
    • Noch eine möglichkeit wäre, die Servos beim einschalten mit einem festen Wert zB. 1,5ms Mittelstellung zu versorgen.
      Ich hatte da mal ein Programm mit Geschwindigkeitseinstellung,mal sehen ob ich das noch finde.

      BASCOM-Quellcode

      1. $crystal = 10000000
      2. $regfile = "attiny2313.dat"
      3. $hwstack = 40
      4. $framesize = 32
      5. $swstack = 16
      6. Dim Servospeed As Byte
      7. Dim Negservospeed As Integer
      8. Dim I As Integer
      9. Dim Centerservo As Integer
      10. Dim Leftservo As Integer
      11. Dim Rightservo As Integer
      12. Config Portb.5 = Output
      13. Config Portb.6 = Output
      14. Config Portb.7 = Output
      15. Config Portb.0 = Output
      16. Config Portb.1 = Output
      17. Config Portb.2 = Output
      18. Config Pind.3 = Input
      19. Config Pind.4 = Input
      20. Config Pind.5 = Input
      21. Portd.3 = 1
      22. Portd.4 = 1
      23. Portd.5 = 1
      24. Portb.0 = 0
      25. Portb.1 = 0
      26. Portb.2 = 0
      27. Portb.5 = 0
      28. Portb.6 = 0
      29. Portb.7 = 0
      30. Servospeed = 5
      31. Negservospeed = -10
      32. I = 0
      33. Centerservo = 3750
      34. Rightservo = 1400
      35. Leftservo = 6000
      36. Wait 1
      37. Do
      38. If Pind.3 = 0 Then
      39. For I = Rightservo To Centerservo Step Servospeed
      40. Pulseout Portb , 5 , I
      41. Pulseout Portb , 6 , I
      42. Pulseout Portb , 7 , I
      43. Waitms 20
      44. Next
      45. End If
      46. If Pind.4 = 0 Then
      47. For I = Centerservo To Leftservo Step Servospeed
      48. Pulseout Portb , 5 , I
      49. Pulseout Portb , 6 , I
      50. Pulseout Portb , 7 , I
      51. Waitms 20
      52. Next
      53. End If
      54. If Pind.5 = 0 Then
      55. For I = Leftservo To Rightservo Step Negservospeed
      56. Pulseout Portb , 5 , I
      57. Pulseout Portb , 6 , I
      58. Pulseout Portb , 7 , I
      59. Waitms 20
      60. Next
      61. Wait 3
      62. For I = Centerservo To Leftservo Step Servospeed
      63. Pulseout Portb , 0 , I
      64. Pulseout Portb , 1 , I
      65. Pulseout Portb , 2 , I
      66. Waitms 20
      67. Next
      68. Else
      69. For I = Leftservo To Centerservo Step Servospeed
      70. Pulseout Portb , 0 , I
      71. Pulseout Portb , 1 , I
      72. Pulseout Portb , 2 , I
      73. Waitms 20
      74. Next
      75. End If
      76. Loop
      77. End
      Alles anzeigen

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

    • Hallo Meister Hora,
      wenn du dir eine Operation am offenen Herzen zutraust, hätte ich eine Idee.
      Der analoge Servo hat ein Poti verbaut, dessen Widerstandswert dem Drehwinkel
      der Servoachse entspricht. Wenn du den Schleifer des Potis anzapfst, kannst du über
      ADC eine Spannung messen, die dem Drehwinkel entspricht. Ist vielleicht ein bisschen
      rechnen und experimentieren erforderlich, aber so ,denke ich, kommst du dem Startwert
      recht nahe. Dann ist es bis zum Zielwert nicht mehr die Hürde.
      Vielleicht so:

      For I = Anfang To Ende Step 1
      Servo(1) = I
      Gosub Wartezeit
      Waitms speed
      Next I

      in Wartezeit kann eine Zeit (Speed) berechnet werden, die auch variabel sein kann.
      Damit ist auch eine Geschwindigkeitsrampe möglich.

      Das hier ist nicht zwingend erfolgversprechend, aber vielleicht ein Denkanstoss.

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.