www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 18 fach Servo Controller


Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wir bräuchten einen 18 Fach Servo Controller hat irgendjemand eine Idee 
wie man so etwas machen kann?
Ich hab da schon welche im Internet gesehen, aber aus Platz und 
Technischen gründen würden wir gerne für unser Schul Projekt alles mit 
einem µC machen, zur verfügung haben wir einen mega 2561 bzw. 1281.

Wie machen die das mit den Boards die man fertig kaufen kann? soweit von 
unserem Lehrer weiß brauche ich eine PWM und einen Timmer aber kein 
AT-Mega hat diese menge die man benötigt...
Gibt es irgendwelche Hardware mit der ich das erweitern kann?

MFG

Autor: Andreas R. (rebirama)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dich mal hier im forum ein wenig um, das wurde schon öffter 
gemacht.

Der Schlüssel zum Erfolg ist es, die Signale nicht rein in Hardware 
(timer) sondern aus einer Kombination Timer und Software zu erzeugen.

Ich würde dir, wenn du noch viel anderes, als die Servos anzusteuern, 
machen willst zu einem Xmega statt dem älteren mega raten: Der hat 
interrupt prioritäten, was von Vorteil ist, wenn noch andere 
Zeitkritische sachen getan werden sollen.

Autor: freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

habe so etwas in der art schon einmal gebaut, auch für ein schulprojekt.
leider handelt es sich bei meinem um einen 20fach servo-controller.
schade, dass ihr einen 18fachen benötigt, sonst hätte ich euch meinen 
gerne zur verfügung gestellt.

mfg

Autor: Andreas R. (rebirama)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so, hab mal ein wenig gekramt.

Die angehängt Software steuert mit einem Atmega8 17 Servos an (18 
vorgesehen)

Ist aus einem alten Projekt, auf dem du aufbauen kannst.
Die Datem kommen seriell (Fleur-lib, nicht enthalten) rein. Den Teil 
musst du halt rausnehmen.
Des weiteren kann man ein poti anschließen um alle Servos gleichzeitig 
zu testen. (Kannst du auch rausnehmen, dann wird der Pin für den 18ten 
Servo frei ;-)

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
egal dann hätten wir halt 2 über, wenn du einen 20Fach fertig hast würde 
uns das viel zeit die wir nicht haben ersparen.

Würdest du mir die Sachen den geben?
Habt ihr ihn getestet?

Viel dank schon mal in vorraus!

MFG

Autor: freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja haben wir alles getestet, läuft super!

ja müsstest die sachen aber abholen, wo kommst du her?

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas R.

Wie war den deine Hardware aufgebaut?
kann man damit immer nur einen servo gleichzeitig laufen lassen?
und wie kann ich damit Schrittketten/Bewegungsabläufe fahren?

Danke für deine mühen!

Autor: freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kein interesse mehr? kein problem, habe grade per pm einen anderen 
interessenten gefunden.

wünsch euch noch viel spaß :)

Autor: Andreas R. (rebirama)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man kann damit alle servos gleichzeitig bewegen, wenn das das ist, was 
du wissen wolltest. Denk daran, dass einem Servo sowieso nur alle 20 ms 
eine neue Position per PWM mitgeteilt werde kann, das ist eine kleine 
Ewigkeit!

Die Bewegungsabläufe wurden von einem zweiten Controller erzeugt, war 
aber rückblickend käse, das hätte der Atmega locker auch noch machen 
können.
Wir haben damals keine reine Onlineberechnung der Servowinkel gemacht, 
sondern und offline berechnet, wie die servos sich z.B. für eine 
Geradeausbewegung,Kurve, drehen auf der Stelle - bewegen müssen. Das kam 
dann als Tabelle ins Flash. Die Tabelle war recht klein, da man einiges 
an an Symetrie und Phasenversatz der Einzelbewegungen ausnutzen konnte.
(Die Berechungen der notwendigen Winkel-Zeit-Verläufe ist nicht ganz 
trivial, ein haufen Trigonometrie, das schafft nach meiner Einschätzung 
kein 8-Bitter in Echtzeit).

Dann noch ein paar Sharp Abstandssensoren und fertig ist der Hexapod :-)
(ganz so einfach wars nicht ;-)

Autor: F. T. (efreaky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andreas R.

wie lautet die Syntax über den serin-Port um einzelne Servos in eine 
bestimmte Position fahren zu lassen für Deine "servo.c".
Wenn ich den Code richtig interpretiere arbeitest Du mit einem 
16MHz-Quarz und einer Baudrate von 38400. Kann man die Baudrate einfach 
ändern in 9800 oder ähnliches, oder muss noch etwas anderes korregiert 
werden um andere Baudraten zu wählen.

Ist so etwas möglich:
Fahre Servo3,4,9 zu Position 45 in 4 Sekunden

Kann man Servoverfahrwege miteinander verknüpfen:
Fahre Servo3,4,9 zu Position 45, Servo2,5,11 zu Position 113 in 4 
Sekunden

Autor: andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das "Protokoll" ist denkbar einfach (leider nicht ganz 
wasserdicht/vollständig*)

das protokoll besteht aus zwei-byte-paketen
1. byte: command
2. byte: daten

command:
0b0010xxxx: Setze servo xxxx(binär) auf neue Position
daten:
neue Position (0-255, wobei 127 etwa die Mittelstellung der Servos ist.

eine ausnahme bildet das Paket
0xff 0x00
damit wird die Komunikation einmalig eingeleitet.

* Abfangen von verlorenden Daten etc ist nicht implementiert, ebenso 
keine Plausibilität, Checksumme o.ä. -> Deshalb unbedingt überarbeiten. 
Damals hatte ich noch keine Ahnung, wie man ein Protokoll sinvoll 
implementiert ;-)

Autor: andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die eigentlichen Bewegungsabläufe wurden im anderen Controller gemacht. 
Also irgendwas mit Position x in 5 sekunden ist mit dem code nicht drin.

Bin hier leider nicht an meinem Rechner, sonst könnte ich die die 
"Motion Engine" des zweiten Controllers auch raussuchen. Für deine 
Anwendung würde ich beides auf einem Controller laufen lassen. Dann 
fällt die Kommuntikation weg.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.