Guten Abend!
Ich hab eine Frage, die ich mir leider trotz stundenlangem Googlen nicht
beantworten konnte.
Es geht um Folgendes:
Wir werden einen einfach Roboterarm kaufen, dessen Servos von einem
Atmega64 angesteuert werden.
Diesen möchten wir mit Steuersignalen direkt steuern, die von einem PC
gesendet werden. Am PC stehen zur Verfügung: RS232 und USB.
Es wird ein "USB Programmier Adapter" mitgeliefert, über den dann die
HEX-Dateien auf den Atmega übertragen werden können.
Meine Frage: Wenn ich mit diesem Adapter ein Programm auf den Controller
übertragen kann, kann ich dann auch später Steuersignale über diesen
Adapter an den Controller senden (nachdem ein Programm auf den
Controller übertragen wurde, das dem Controller sagt, was er bei
entsprechenden Signalen tun soll)?
Oder, wenn das nicht geht, kann ich per RS232 direkt Signale schicken?
(Habe schon gelesen, dass man dort dann noch eine Signalumwandlung per
MAX232 benötigt.)
Wenn ich die mitgelieferte USB Lösung (welche eigentlich nur zum
Programmieren gedacht ist) verwenden könnte, wäre mir dies natürlich um
einiges lieber.
Wir möchten halt zum Beispiel, dass der Arm sich nach rechts dreht, wenn
ich die rechte Pfeiltaste meiner Tastatur drücke.
Über eine Antwort, eventuell auch noch helfende Links, würde ich mich
sehr freuen!
Danke und eine gute Nacht!
Kannst Du mal etwas näheres zum Adapter posten?
Der AVR hat eine hardwaremäßige Shnittstelle, über die Programme
reingeladen werden können. (10poliger Pfostenverbinder, manchmal auch
6polig)
Mit dem geht es nicht.
Wenn der AVR einen Bootloader hat, könnte Dein Adapter eine USB/ser.
Schnittstelle sein. Beispiel ist der Arduino. Da ist zwar ein spezieller
Schaltkreis mit dabei, der aber im Normalbetrieb als serieller Wandler
genutzt werden kann.
Übrigens brauchst Du nicht unbedingt das Gefummel mit den RS232
Wandlern. Es gibt die USB-Seriell Wandler auch mit TTL Pegel. Da ist der
Spannungswandler weggelassen und schon passen sie direkt an das TXD/RXD
des Prozessors.
Da fehlt aber einiges an Information um diese Frage zu beantworten ...
A.) Die liefern dir einen fertig programmierten AVR und ein PC Programm.
B:) Die liefern einen fertig programmierten AVR und die Dokumentation
der Kommunikationschnittstelle mit dem PC. Dann Schreibst du dir die PC
Software selbst.
C:) Die liefern dir nur eine Lib oder Source Code zur Ansteurung des
Roboterarms. Dann musst du die gesammte Kommunikation auf dem AVR auch
noch implementieren
D: Die liefern gar nichts ... Dann freu dich auf einen schönen langen
Winter ;)
Zu dem Adapter weiß ich leider nichts genaueres.
Ist aber wohl 6polig.
Datenblätter gibt es hier:
http://arexx.com/robot_arm/html/en/documentation.htm#datasheets
Ganz unten beim Manual sind die Schaltpläne.
Auf einen Arduino zu wechseln wird glaube ich schwierig, da der Atmega64
wohl fest auf der Plantine verbaut ist.
Mit dem Programmer wird es nix werden da auch seriell mit dem uC darüber
zu kommunizieren, denn der programmiert den uC per SPI.
Um PC und uC miteinander sprechen zu lassen nimmst am besten so ein
Kabel von USB nach TTL/RS232:
http://www.adafruit.com/products/954
Das müsste es in Deutschland auch geben, evtl. bei Exp-tech.
Ah, ja, hier:
http://www.exp-tech.de/Shields/USB-TTL-Serial-Kabel-Raspberry-Pi.html
Exp-Tech ist Reseller für Adafruit in Deutschland.
Verwendung: Siehe Adafruit Tutorial, ist sehr schön beschrieben.
Hallo Hans-Georg!
Habe deine Antwort erst gelesen, nachdem ich den zweiten Post abgesendet
habe, sorry.
Dann versuche ich mal mehr Informationen zu geben, bzw. schreibe etwas
zu deinen Anmerkungen:
Und zwar liefern die tatsächlich viele Dinge mit. Allerdings ermöglichen
sie mir noch nicht direkt das, was ich machen möchte (nämlich
Steuersignale vom PC direkt zu geben).
Zum einen liefern sie eine Software für den PC, bei dem ich eine Abfolge
von Bewegungen einstellen kann, die der Arm dann (nachdem diese Abfolge
/ das Programm auf den Controller programmiert wurde) ausführt (immer
und immer wieder).
Dann gibt es eine Datei, welche ich auf den Controller spielen kann, die
es mir dann ermöglicht, mit einer gesonderten Tastaturplatine, auf der
sich 6 (oder 12? Einer für beide Richtungen, bin mir gerade nicht
sicher) Schalter befinden, die Servos direkt zu steuern.
Außerdem gibt es Treiber, die überhaupt die Verbindung mit dem
USB-Programmier_adapter ermöglichen. Und es gibt wohl auch noch die
c-Libarys zur Programmierung.
Vielen Dank!
Ich täte mal sagen, da ist ein Bootloader drauf, und die Schnittstelle
ist eine normale serielle. Der Adapter scheint ein normaler
USB-serieller mit TTL Pegel zu sein. Da bildet sich im PC ein virtuelles
COM Port, das ist genauso wie das mit dem ovalen Stecker. Nur daß Du bei
dem ovalen Stecker einen Pegelwandler bräuchtest.
Ich denke, das geht so, wie es ist; sofern die Firmware das zuläßt. Gibt
aber keinen Grund, warum nicht.
Baue das einmal naach Anleitung auf, und mache zuerst die mitgelieferten
Beispiele durch. Wahrscheinlich geht dann ein Licht auf.
Das mit dem Pfostenstecker, den ich vorhin meinte, ist hier mit ISP
gekennzeichnet und wird vom Anwender nicht verwendet. Daß die serielle
Schnittstelle hier den 10p hat, ist Zufall, ich wußte das vorhin noch
nicht.
Enni schrieb:> Und zwar liefern die tatsächlich viele Dinge mit. Allerdings ermöglichen> sie mir noch nicht direkt das, was ich machen möchte (nämlich> Steuersignale vom PC direkt zu geben).
Nomenklatur!
Du gibst keine 'Steuersignale'!
Sondern der PC sendet Kommandos über eine der verfügbaren
Kommunikationsschnittstelle zum ATMega. Der ATMega führt die dann aus,
indem er die Mechanik des Arms ansteuert.
Dem Mega ist es nämlich prinzipiell egal, wer da am anderen Ende die
Kommandos schickt.
Dein 'Problem' lässt sich also auf das einfachere Problem 'Wie
kommunizieren PC und ATMega' miteinander zurückführen. Dazu braucht es
keinen Roboterarm.
Und das wirst du dann wohl lernen müssen.
Okay, vielen Dank für die Hilfen!
Das Projekt muss leider noch ein wenig warten, erst dann kann ich das
aufbauen und ausprobieren.
Wollte nur euch einmal fragen, ob ihr meint, dass mein Vorhaben mit
diesem Arm so möglich ist. Nicht, dass ich die Euros umsonst ausgebe!
Nochmal vielen Dank, ende März gibt es hier dann vielleicht Updates,
wenn ich es nicht vergesse! :)
Gute Nacht
Hallo Karl-Heinz!
Sorry, habe deine Antwort leider übersehen.
Das was du schreibst, weiß ich ja.
Und ich hatte ja gehofft, dass eben die Frage "'Wie kommunizieren PC und
ATMega'" hier beantwortet werden könnte.
Bzw. ersteinmal, ob es überhaupt über diesen USB-Adapter, der eigentlich
nur zum Programmieren des Atmegas gedacht ist, möglich ist.
Schöne Grüße
Enni schrieb:> Und ich hatte ja gehofft, dass eben die Frage "'Wie kommunizieren PC und> ATMega'" hier beantwortet werden könnte.
Das 'wie genau' kann man so nicht beantworten. Da gibt es unzählige
Möglichkeiten.
Das ist wie bei einer Telefonleitung.
Die Serielle bzw. der USB Adapter sind erst mal nicht viel mehr als eine
Telefonleitung.
Was du dann mit der Telefonleitung machst, ob du da reinpfeifst, ob du
singst, ob du englisch sprichst oder doch lieber Japanisch, ob du
Kommandos bellst oder .... das ist deiner Phantasie bzw. deinen
Programmierkünsten überlassen.
> Bzw. ersteinmal, ob es überhaupt über diesen USB-Adapter, der eigentlich> nur zum Programmieren des Atmegas gedacht ist, möglich ist.> Schöne Grüße
Der Anschluss ist als "Programm/UART" beschriftet und in der Doku ist
erwähnt, dass ein Terminalprogramm integriert ist. Also wird es da wohl
auch eine Kommunikationsmöglichkeit über die Serielle Schnittstelle
geben.
Hi
KHB hat es schon ziemlich treffend formuliert. Um nun ein wenig auf die
Kommunikation mit einem Controller einzugehen, will ich mal etwas
anderes versuchen.
Zuerst, und das ist Voraussetzung, musst du dir die Grundlagen
erarbeiten. Wie steuert man einen Ausgang an, wie setzt man
Eingangssignale zu gewünschten Funktionen um. Sicherlich liegen die
Beispielprogramme bei, aber wenn du diese verstehen willst, dann nimm
den ersten Satz in diesem Abschnitt ernst. Du kaufst dann etwas umsonst,
wennn du keinen Spass damit hast, denn die Bemerkung von HGL mit den
langen Wintertagen ist ernst gemeint.
Ok, zurück zum Thema. Wenn du verstanden hast, wie so ein Controller
programmiert wird und wie er arbeitet, dann kannst du dich an eine
Kommunikation heran wagen. Wenn du vorher mit einem Taster eine LED
eingeschaltet hast, dann ist vielleicht jetzt der Zeitpunkt gekommen, wo
du dem Controller ein "L" für LED ein und ein "l" für LED aus schickst.
Dazu gibt es hier im Tutorial genügend Hilfen. Wenn du auch noch einen
PC programmieren kannst, dann liegt es ja nahe, das du dir eine
Bedienoberfläche schaffst, die dann auf ein Button reagiert oder eine
Checkbox. Bis du wirklich soweit bist, das du den Arm mit deinen
Vorstellungen steuerst, wird es möglicherweise 2020, aber das liegt an
dir, ob du diese Lernstrecke schaffst oder wieviel Zeit du investierst.
So von jetzt auf gleich kannst du nix erwarten.
Gruß oldmax