Hallo zusammen, ich bin gerade an folgendem Projekt: Es sollen zwei Roboterarme mit je 3 Gelenken entwickelt werden. Jedes Gelenk kann a) an- und abwinkeln b) drehen D.h. es werden insgesamt 12 DC-Motoren benötigt, die mit 6 x L6205 angesteuern werden. Die Steuerung des Neige- bzw. Drehwinkels erfolgt mittels Spannungsteiler (Widerstand und Poti, das durch die Motorachse gedreht wird). Die abgegriffenen Spannungswerte werden durch einen AD-Wandler (6 x ATtiny13) mit Sollwerten verglichen. Der MC liefert dann die Steuerspannung für den Vorwärts- bzw. Rückwärtsbetrieb der beiden Motoren des Gelenks an den L6205. Ist der vorgegebene Spannungswert (also der gewünschte Winkel) erreicht, schaltet der ATtiny13 den jeweiligen Pin auf Low. Die jeweiligen Winkelvorgaben sollen vom PC über die RS232-Schnittstelle über einen MAX232 an die jeweiligen Mc's geliefert werden. Und genau das ist mein Problem: Wie erkennt der einzelne ATtiny13 das ein Wert für ihn gedacht ist? Ich stelle mir das so vor, dass alle ATtinys wie an einer Art Bus hängen und mit dem RXD-Ausgang des MAX232 verbunden sind. Die Kommunikation muss ja nur in eine Richtung erfolgen (PC --> MC). Der vom PC gelieferte Winkelwert soll im MC registriert und mit dem aktuellen Winkelwert verglichen werden. Ist der gelieferte Wert kleiner/größer als der Istwert, wird der Motor solange vorwärts/rückwärts bewegt, bis Ist- und Sollwert übereinstimmen. Jeder ATTiny hat folgende Pins belegt: 1x Reset 1x VCC 1x Ground 4x Ansteuerung L6205 es wäre als noch ein Pin übrig um die Winkelvorgaben für die 2 Motoren zu liefern. Ein Übersichtsplan zur Erklärung ist angehängt. Hab ich mich sehr wirr ausgedrückt? Na ja, ich glaube Ihr wisst, was ich meine. Hat jemand eine Erklärung für mich? Oder vielleicht sogar ein Beispiel? Bin über jede Hilfe dankbar. Aber wenn es geht bitte in einfachen Worten. Ich bin leider noch sehr unerfahren mit der ganzen Materie. Danke Bruno
Bruno schrieb: > über einen MAX232 an die jeweiligen Mc's geliefert werden. Und genau das > ist mein Problem: > > Wie erkennt der einzelne ATtiny13 das ein Wert für ihn gedacht ist? Wie erkennt der Briefträger, dass ein Brief für dich gedacht ist und nicht für deinen Nachbarn?
@Karl heinz Buchegger (kbuchegg) (Moderator) >Wie erkennt der Briefträger, dass ein Brief für dich gedacht ist und >nicht für deinen Nachbarn? Er kennt die hübsche Nachbarin und weiß, dass dir niemand Briefe schreibt. Deshalb kann es sich bei der, ähhhh, Zustellung, bei der Nachbarin auch etwas mehr Zeit lassen . . . SCNR Falk
Dit ist auch klar, dass ein Tiny13 keine UART eingebaut hat? Kann man natürlich auch mit einer Software UART machen, allerdings solltest du dir gut überlegen, ob du dich da drauf einlassen willst.
Dir Frage, die ich mir stellen würde: Wäre es nicht einfacher, anstelle von 6 Stück Tiny13, einfach 1 Mega8 zu benutzen? Ausgänge hat der genug und die 6 ADC Eingänge sind auch vorhanden. Ausserdem ist eine UART eingebaut, was die Kommunikation mit dem PC vereinfacht. Auch in die Gegenrichtung, denn seien wir uns mal ehrlich: Der Tag wird kommen, an dem der PC gerne wüsste, wie denn die einzelnen Achsen eigentlich stehen und sei es nur, dass er beim Drehen rausfinden kann, ob es jetzt besser ist rechts oder links rum zu drehen um a) das Ziel möglichst schnell zu erreichen und b) dabei keinen Kabelsalat zu veranstalten :-) Auch ist es dann einfacher, gegenseitige Abhängigkeiten der einzelnen Achsen zu berücksichtigen.
Hallo Karl Heinz Karl heinz Buchegger schrieb: > Dir Frage, die ich mir stellen würde: > > Wäre es nicht einfacher, anstelle von 6 Stück Tiny13, einfach 1 Mega8 zu > > benutzen? Wenn dann müsste ich mindestens 2 Mega8 verwenden, da ich 12 Motoren zu steuern habe. Oder einen MC mit 12 ADC Wandlern und 24 Ausgängen für die Vorwärts/Rückwärtssteuerung. Das gibt einen ganz schönen Kabelbaum, den ich eigentlich vermeiden wollte. Aber Danke für den Tip. Gruß Bruno
Bruno schrieb: > Hallo Karl Heinz > > Karl heinz Buchegger schrieb: >> Dir Frage, die ich mir stellen würde: >> >> Wäre es nicht einfacher, anstelle von 6 Stück Tiny13, einfach 1 Mega8 zu >> >> benutzen? > > Wenn dann müsste ich mindestens 2 Mega8 verwenden, da ich 12 Motoren zu > steuern habe. Mein Fehler. Hab nicht mitgedacht. Also dann für jeden Arm einen kompletten Mega8 > Vorwärts/Rückwärtssteuerung. Das gibt einen ganz schönen Kabelbaum, den > ich eigentlich vermeiden wollte. Den kriegst du sowieso :-) Denn du musst die Versorgungsspannung zum Motor hinbringen, die entsprechend stark sein muss, da sich ja alle 6 Motoren aus ihr bedienen. Bei deiner Lösung kommt dann noch die Tx-Leitung dazu. Bei einer zentralen Lösung, sind es entsprechend schwächere Versorungsleitungen und pro Gelenk eine Sense Leitung zurück anstelle der Tx Leitung. Ich sag jetzt nicht, dass das besser oder schlechter ist. Ich würds mir nur mal durch den Kopf gehen lassen.
Karl heinz Buchegger schrieb: > Ich sag jetzt nicht, dass das besser oder schlechter ist. Ich würds mir > > nur mal durch den Kopf gehen lassen. Nö, Du hast schon recht. Ist mit Sicherheit ausbaufähiger als die Lösung mit je einem Tiny pro Motor. Könntest Du mir da einen MC empfehlen mit dem ich alle 12 Motoren gleichzeitig steuern kann? Oder soll ich besser 2 x Mega8 (einer je Arm) verwenden? Gruß Bruno
Bruno schrieb: > mit je einem Tiny pro Motor. Könntest Du mir da einen MC empfehlen mit > dem ich alle 12 Motoren gleichzeitig steuern kann? Ich kenn keinen, der 12 ADC mit hat. > Oder soll ich besser > 2 x Mega8 (einer je Arm) verwenden? Wäre meine Wahl. Ist dann irgendwo ein Mittelding, so dass zwar jeder Arm autonom ist aber doch alle Entscheidungen eines Arms an einer Stelle zusammenlaufen.
Hm. Das läuft aber dann ja doch wieder auf eine Art Bus hinaus, da nun statt 6 Tinys 2 Mega8 über RS232 angesteuert werden müssen.
Karl heinz Buchegger schrieb: >> mit je einem Tiny pro Motor. Könntest Du mir da einen MC empfehlen mit >> dem ich alle 12 Motoren gleichzeitig steuern kann? > > Ich kenn keinen, der 12 ADC mit hat. Ich schon: Den XMega128A1. Und den Mega16A4, der hat weniger Pins.
Bruno schrieb: > Hm. Das läuft aber dann ja doch wieder auf eine Art Bus hinaus, da nun > statt 6 Tinys 2 Mega8 über RS232 angesteuert werden müssen. Ja. Macht ja nichts. Das Prinzip ist immer noch dasselbe :-) Jeder Arm hat eine Nummer, jeder Befehl steuert einen Arm anhand seiner Nummer an (und dort den Motor anhand einer Motornummer). Daran ändert sich nichts. Aber: Jeder Mega8 hat eine UART eingebaut :-) Edit: Travel Rec. kennt was besseres als einen Mega8
Ja, das macht Sinn. Danke. @ Travel Rec: Danke für die Empfehlung. der XMega64A1 sieht gut aus. Hat 16 ADC und 24 PWM. Genau was ich brauche :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.