Hallo,
ich wollte mal fragen ob man in Basocm die Drehgescheindigkeit eines Servos
ändern kann?
Druckbare Version
Hallo,
ich wollte mal fragen ob man in Basocm die Drehgescheindigkeit eines Servos
ändern kann?
sofern der Servo nicht extra eine Möglichkeit dafür hat läuft der kleine Motor des Servos immer so schnell wie er kann.
Ohne zusätzliche Hardware kannst du die Geschwindigkeit aber Pseudo herabsetzen indem du die zu fahrende Strecke in möglichst kleine Teile zerlegst und diese Zeitlich abfährst.
Überspitzt gesagt ruckelt er dann mit der gewünschten mittleren Geschwindigkeit vor sich hin.
Als Eingriff wäre da die Möglichkeit den Motorkreis des Servos mit einer PWM zu erweitern aber das erfordert einen zusätzlichen Kanal.
Hi und Dnake für die Info.
Ich habe das schon probiert mit dem Schritt für Schrit annäheren aber dann rucklet der Servo noch mehr. Das Problem ist dass wenn der Serve einen Roboterarm steuern soll dann hat dieser eine Relativ grußes Trägheitsmoment und der Servo Schwingt über ohne sich zu beruhigen. D.h. er wacklet die ganze Zeit und wenn dann noch ein Roboteram dran ist dann wackelt dieser je nach länge um eineige cm hin und her wobe iman daa eine positionering vergessen kann (ausserdem siehts schlimm aus und das Wackeln kann den ganzen Roboarm umschmeissen)
Wenn es schon "schwingt" dann ist das ein Zeichen dafür das die Servos zu schwach sind oder zuviel spiel besitzen.
Im Modellbau sieht man es ab und an wenn jemand seinem Flitzer einen zu schwachen Lenkservo gegönnt hat.
Die Mimik fängt an zu schwingen bis sich die Mechanik irgendwo auflöst.
Du könntest bessere ,stärkere Modelle nehmen oder auch Digitale und überlegen den Arm softwaremässig zu dämpfen.
Es wäre auch ein Gedanke daran zu verschwenden statt Servos Stepper oder AC/DC-Motoren nebst passenden Getrieben und Gebern (Positionserkennung) zu nutzen.
So hättest du auch volle Kontrolle über die Geschwindigkeit.
Modellbauservos sind eben nicht für sowas gedacht.
Hi,
die Servos sind die stärksten die ich finden konnte(bezahlbar), sie ham 2,5 nm.
Die Alternative einen Getriebemotor zu einzusetzten und dann auf der Welle das Poti anzubringen und sich so kwasi seinen Eigenen Servo zu Bauen.
Könnten den Digiservos (falls ich mir die leisten) kann das Problem mit dem Schiwngen/zittern eliminieren?
Hallo
Das Zittern kommt wohl eher von der Ansteuerung. Vielleicht mal eine Lösung ohne die Bascom-Servo-Funktion versuchen. Wie ist denn die Ansteuerung im Programm gelöst?
Gruß
mic
Hier der Code:
Config Servos = 1 , Servo1 = Portd.2 , Reload = 10
Enable Interrupts
Servo(1) = 50
usw.
Kann man da was tunen?
Das Problem ist ja dass der Roboteram der am Servo dran ist ein Trägheist moment hat, dadurch der Servo etwas überschingt, zurückregelt und dabei wieder überschingt.....usw....Zitter Zitter.
Hallo Involut!
Nur um das mal auszuschließen. Für die Servoansteuerung mit Bascom muss der AVR schnell (8 Mhz und mehr) getaktet werden. Sonst werden die Servos zu langsam angesteuert.
Ansonsten fällt mir nur ein Schrittmotor mit Getriebe ein. Bei einem Schrittmotor kannst du die größte Strecke schnell anfahren lassen und zum Schluss langsam abbremsen. Das dürfte das Problem des Schwingens beseitigen. Da der Schrittmotor unter Last auch Schritte verlieren kann, lässt du dir von einem Sensor die Position des Armes geben und regelst dann noch ein wenig nach. Wenn du viele solcher Gelenke hast, dann würde ich diese Arbeit sogar direkt vor Ort von einem kleinen µC erledigen lassen.
mfg
Gerold
:-)
Ja,selber was zu bauen macht immer spass aber dann kann man auch gleich eine sinvollere Methode wie angesprochene Getriebemotore nebst Gebern oder Stepper nehmen.Zitat:
Die Alternative einen Getriebemotor zu einzusetzten und dann auf der Welle das Poti anzubringen und sich so kwasi seinen Eigenen Servo zu Bauen.
Servos sind zwar bequem aber im Grunde ungeeignet weil man bei Handelsüblichen Modellen nicht in den Regelkreis eingreifen kann.
Eine konkrete aussage kann ich dir da nicht liefern da ich nicht weiß ob das Zitern bei dir qualitative Gründe hat (Mech. Spiel.Billiger Regelkreis/Poti usw.) oder wie vermutet aus einer überlastung resultiert.Zitat:
Könnten den Digiservos (falls ich mir die leisten) kann das Problem mit dem Schiwngen/zittern eliminieren?
Digitale Servos sind aber in der Regel präziser als die Herkömmmlichen und weisen meist eine feinere Auflösung auf.
@Radbruch
Ja,hatte ich auch erst gedacht und einfach mal mein einfaches Testprogramm mit einem alten Conrad S20 (Stammt noch von ca. 1985) probiert.
Der Servo lief ohne Last zitterfrei,mit leichter Last ebenfalls.Code:'Einfacher Servosteuerung über 2 Taster.
'
'Minimum,Maximum und Schrittweite sind Servospezifisch und müssen auf das
'jeweilige Modell angeglichen werden.
'Verzögerung ist Geschmackssache sowie der Startwert
'Das Programm ist absichtlich einfach gehalten um die Funktion zu verdeutlichen.
'also keine ausgefeilte Tastenabfrage oder sonstige Optimierung.
'
'Ratber 2005
'===============================================================================
$regfile = "M8def.dat"
$crystal = 8000000
$baud = 19200
Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
Enable Interrupts 'Ist nötig
Config Portb.1 = Output 'Servoausgang
Config Pind.6 = Input 'Taster 1
Config Pind.7 = Input 'Taster 2
Portd.6 = 1 'Pullup aktiviert
Portd.7 = 1 'Pullup aktiviert
Dim Ist As Byte
Dim Minimum As Byte
Dim Maximum As Byte
Dim Schrittweite As Byte
Dim Pause1 As Byte
Dim Pause2 As Byte
Dim Z As Word
Minimum = 35 'Rechter Anschlag
Maximum = 155 'Linker Anschlag
Schrittweite = 1 'Schrittweite beim erhöhen
Pause1 = 10 'Verzögerungszeit in ms damits steuerbar bleibt
Pause2 = 50
Ist = Minimum 'Einfach nur Definierter Startwert
Do
If Pind.6 = 0 Then
Ist = Ist + Schrittweite
If Ist > Maximum Then Ist = Maximum
Waitms Pause1
End If
If Pind.7 = 0 Then
Ist = Ist - Schrittweite
If Ist < Minimum Then Ist = Minimum
Waitms Pause2
End If
Servo(1) = Ist
Loop
End
Nur wenn ich ihn überlaste dann gibts die bekannte Schwingneigung weil der Servo aufgrund der zu bewegenden Masse nicht mehr schnell genug gegenhalten kann.
@Phyton_Rocks
Ja,guter Hinweis.
Wenn der Controller zu langsam läuft stimmts Timing nicht mehr und der Servo läuft nicht richtig.
Allerdings würde er dann meist gar nicht laufen oder schon ohne Last wild tanzen.
Hallo Ratgeber!Zitat:
Zitat von Ratber
Bei mir war der Servo bei ca. 3,6 Mhz einfach nur sehr schwach.
mfg
Gerold
:-)