PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roboterarm wieder belebt



Rainer4x4
29.08.2012, 10:53
Hallo miteinander!
Bin neu hier im Forum. Ich habe vor ca. 30 Jahren einen Roboterarm gebaut, den ich nun neu beleben möchte!
http://www.rainer4x4.de/hp3/seite10/imgp0167.jpg
http://www.rainer4x4.de/hp3/Roboter.htm

Früher, zu einer Zeit als alles noch viel besser war, konnte ich den Arm problemlos mit einem Z80 Rechner steuern.
Nun versuche ich das Gleiche mit einem WindowsXP basierenden Rechner mit einer Velleman VM110N Karte am USB Port. Leider werden die zeitkritischen Signale bei jeder Mausbewegung, oder sonstigen Rechneraktivitäten im Hintegrung, empfindlich gestört.

Ich suche nun nach einer Möglichkeit, dieses Steuerung zB mit einem Singlechip-/Einplatinenrechner zu realisieren. Aufgefallen im Netz sind mir Arduino Platinen, oder auch welche mit der Bezeichnung Bascom.
Letzteres erscheint mir vorteilhaft da ich zu früheren Zeiten in Z80 Assambler, schwerpunktmäßig aber in Basic programmiert hab. Nur hab ich das Gefühl das Bascom vom Markt verschwindet. Ist das so? Was könnt Ihr mir empfehlen? Als alter Sack wird mir das erlernen einer neuen Programmiersprache sicher schwer fallen :(

021aet04
29.08.2012, 11:29
Wilkommen im Forum,
Bascom ist eine Basic-orientierte Programmiersprache für µC (Mikrocontroller). Die VM110N übernimmt vermutlich die Signale direkt vom PC. Der PC gibt die Signale nicht zeitlich konstant aus (wie man es für einige Dinge benötigen würde). Man sollte vom PC die Daten auf einen µC geben (Über USB/TTL Wandler) und dieser steuert die einzelnen Motoren, wertet Signale aus (z.B. Poti für die Position, Endschalter,...). Die eigentliche Steuerung/Regelung übernimmt der µC. Der PC sendet nur die einzelnen Signale (wie z.B. Greifer fahre zusammen, Arm fahre auf Position xy,...).

Arduino sind Platinen, mit µC und den benötigten Dingen wie Spannungsregler und weitere nützliche Erweiterungen (wie z.B. Netzwerkanschluss). Für die Arduinos gibt es viele Erweiterungen, die einfach aufgesteckt werden (Arduino Shields).

Ich programmiere jedoch in C und direkt die µC, da ich teilweise sehr kompakt arbeiten muss/will. Platinen fertige ich selbst bzw lasse es industriell fertigen.

PS: Die VM110N hat einen eigenen µC, warum das nicht funktioniert weiß ich auch nicht. (habe die Platine gerade gesehen)

MfG Hannes

Rainer4x4
29.08.2012, 16:10
Ah, Bascom ist nur die Programmierumgebung. Ok, danke für den Hinweis.


PS: Die VM110N hat einen eigenen µC, warum das nicht funktioniert weiß ich auch nicht. (habe die Platine gerade gesehen)
Die VM110N setzt die Befehle nur um und gibt sie aus. Der PC muss aber jedes Bit persönlich befehligen.

Habe mir sagen lassen, C-Control von Conrad sei dafür das Richtige, da das unter Win geschriebene Programm wohl direkt aufgespielt wird, und das Teil dann "Stand-alone" arbeitet. Die Programmiersprache für C-Control sei Basic.

oberallgeier
29.08.2012, 16:35
Hallo Rainer,

willkommen im Forum. Also vermutlich bin ich ein älterer Sack als Du - und ich hatte C gelernt. Zwar noch nicht als Rentner, aber knapp davor. Nicht wirklich gut, aber meine Projekte/~chen laufen meist recht ordentlich.


... Habe mir sagen lassen, C-Control von Conrad sei dafür das Richtige, da das unter Win geschriebene Programm wohl direkt aufgespielt wird, und das Teil dann "Stand-alone" arbeitet ...Hmmmmmmbrummel - die C-Control kenne ich nicht, soweit ich weiß, arbeitet dort bei den neuen Versionen ein Atmelcontroller. Die Atmels kannst Du in C, in Bascom und in Assembler programmieren. Sprich: Du kannst den Quellcode in diesen Sprachen schreiben, mit Kommentaren versehen und so - eben übersichtlich erstellen. Daraus muss aber in jedem Fall ein Maschinencode erstellt werden - denn der Controller versteht NUR Maschinencode. Dieser Code wird hexadezimal geschrieben und deshalb Hexfile genannt - und das sieht UNGEFÄHR so aus (nur auszugsweise) :


:100000000C9434000C9463040C94CB040C945100B5
:100010000C9451000C9451000C9451000C94130951
:100020000C9451000C9451000C9451000C9451000C
:100030000C9451000C9451000C9484000C945100C9
:100040000C9451000C9451000C9451000C945100EC
:100050000C9451000C94B3010C9451000C94510079
:100060000C9451000C94510011241FBECFEFD8E026
:10007000DEBFCDBF14E0A0E0B1E0E8E9F2E302C0EA
:1000800005900D92A23DB107D9F717E0A2EDB4E0BB
:1000900001C01D92AB30B107E1F70E94FC120C9435
:1000A0004A190C940000DF93CF93CDB7DEB7AEE6CC
:1000B000B0E0EEE6F0E0808182608C931092E6047E

... und das ist nicht wirklich lesbar *ggg*, auch wenn der Kundige erkennt, dass anfangs alle möglichen Interruptadressen stehen und damit so ein bisschen auf den Controllertyp geschlossen werden kann . . .

Meine C-Quellen übersetzt der Compiler aus der Programmierumgebung von Atmel für Atmel-Mikrocontroller - sprich AVRStudio-4. Und mein Prog rammer simuliert eine Atmel-Experimentierplatine - sodass fast jeder Controller von Atmel damit geflasht werden kann. Das Ganze läuft unter Windows - xp auf dem Desktop und 7 auf dem Notebook.

Als gute Experimentierplatine gäbe es beispielsweise die RNControl (klick hier) (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=64&products_id=10&osCsid=1b6386c6136ea8ff6dc49c2d967665bf) , den schnuckelig kleinen babyorangutan (klick wieder) (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=64&products_id=238&osCsid=1b6386c6136ea8ff6dc49c2d967665bf) oder etwas aus der arduinofamilie - oder so ähnliches Zeugs. Oder Du lötest Dir auf ner Lochrasterplatine selbst etwas zusammen.

Viel Erfolg

Vitis
30.08.2012, 17:06
willkommen im Forum ... warum die Karte unter Win nicht recht geht kann ich mir vorstellen, Windows, gerade auch die neueren Versionen sind nicht besonders echtzeitfähig ... bis sich da n Schaltimpuls durch den Programmkern, die DLLs bis zum Pin am Ausgang durchgewurstelt hat können mitunter Ewigkeiten vergehen. Die Neueren Windowsversionen unterstützen auch das direkte Ansteuern am Parallelport und dergleichen nicht mehr so besonders gut.

Bascom ist eine Programmiersprache, ein Basic, das verwendet wird um Programme meist für die Controller des Herstellers Atmel zu schreiben, gibts bei MCS Electronics ne Demoversion zum Download, die Vollversion kostet n paar Mark, ist sie aber auch wert.
Wenn Du eh schon Basic programmiert hast wird die Bascom auch nicht schwer fallen, hab selber vor Ewigkeiten mit dem C64 Basic angefangen und bin dann hauptsächlich beim Basic -> Bascom geblieben.
Man kann auch andere Sprachen verwenden um seinen Quellcode zu erstellen, z.B. C ... was man verwendet ist im Prinzip egal, es kommt doch nach demÜbersetzen eine HEX oder BIN Datei dabei heraus, die den Maschinencode enthält, der in den Controller übertragen wird.

Wenn Du ein Programm in Bascom schreibst wird das in Maschinencode übersetzt und dieser dann in den Controller geschrieben. Dein Quellcode bleibt bei Dir im PC ... für die Übertragung braucht man üblicherweise eine Programmiergerät einen ISP (In System Programmer).
Es gibt aber auch schon vorprogrammierte Controller, z.B. der Arduino oder C-Conntroll, der hat schon ein Programm drauf, einen sogenannten Bootloader. Dieser hat die Funktion über eine Serielle Schnittstelle Daten zu empfangen und diese in den Programmspeicher zu schreiben ... auch in dem Fall die BIN oder HEX Datei. Vorteil, zum Einen muss man seine Konstruktion nicht aufschrauben um an die ISP-Pins zu kommen, zum Anderen ist die Hardware für die serielle Übertragung billiger und was dazu kommt, einen Jungfräulichen Chip kann man vergessen so beschreiben zu wollen, wenn der Bootloader noch nicht drauf ist.

Die Atmel Controller gibt es in verschiedenen Größen ... oder eher Komplexitätsstufen. Das geht von 8-beinigen für einfache Ein-Aus-Schaltvorgänge bis über 100 Pins hinaus mit diversen Ein- Ausgängen, Schnittstellen zu Bus, serieller Datenkommunikation etc..

Rainer4x4
30.08.2012, 18:30
Danke für die Infos!
Ok, ich habs kapiert. Bascom ist nur die Prog Umgebung für viele Einplatinenrechner. Und Bascom würde mir gefallen.

Für meinen einarmigen benötige einen 4 Bit breiten Digitalport (3 BCD Ausgänge, 1 Inhibit), einen Analogausgang (0 - 5V) und einen Analogeingang (0 - 5V)
Des weiteren, wenns Stand alone arbeiten soll, brauchts noch ein kleines Display und etwa 10 Tasten.

Was könnt Ihr mir empfehlen?

021aet04
31.08.2012, 09:29
Ich arbeite mit Atmels, deswegen kann ich dir Atmels empfehlen. Bei PICs u.Ä. kenne ich mich zu wenig bis gar nicht aus (habe auch noch 2 R8CTiny Platinen von Elektor, aber schon lange nichts damit gemacht).

Analogeingänge haben so ziemlich alle Atmels (Atmega, Attiny), nur der Attiny2313 fällt mir ein, der keinen ADC hat.
DAC hat keiner, die haben nur PWM Ausgänge, die man mit RC-Gliedern glätten kann, damit man eine schöne Gleichspannung hat oder die PWM Kanäle direkt für die Motortreiber nimmt, damit wäre es auch verlustärmer.
Display und Tasten kannst du entweder direkt oder über Bus (I2C, SPI,...) ankoppeln.
Du könntest auch die RS232 (UART) Schnittstelle verwenden, damit kannst du den Arm vom PC oder Bedienteil (Display mit Tasten) steuern. Das Bedienteil braucht dann aber einen eigenen µC). Die Atmels sind leistungsstark genug um auch grafische Displays anzusteuern (als kleines Beispiel http://www.youtube.com/watch?v=z4NxPw6Hj18&feature=related)

Die AVR (Atmel Controller) können auch die Regelung übernehmen.

MfG Hannes

Crazy Harry
07.09.2012, 15:06
DAC hat keiner, die haben nur PWM Ausgänge, .....

Naja die XMegas sehr wohl ;)

021aet04
07.09.2012, 18:12
Von XMegas habe ich auch nichts geschrieben (da ich damit noch nicht gearbeitet habe). Ich habe nur Atmega und Attinys geschrieben (mit diesen arbeite ich).

MfG Hannes

Rainer4x4
08.09.2012, 11:37
Herzlichen Dank für Eure ausführungen.
Leider bin ich noch kein Stückchen weiter gekommen, mir fehlen die konkreten Vorstellungen darüber wie zB das Display angesteuert wird.
Die Sache mit dem PWM Ausgang ist kein Problem. Derzeit wird das per VM110N(K8055N) realisiert. Dort gibts ebenfalls "nur" den PWM Ausgang, der aber schon Board-intern per RC-Glied und OP geglättet wird.

Das PWM Signal kann ich im Roboter nicht verarbeiten, damit würde der Analogrechner nicht arbeiten können.

Hubert.G
08.09.2012, 12:21
Schau mal hier: http://www.rn-wissen.de/index.php/LCD-Modul_am_AVR
Im rn-wissen gibt es auch viele Seiten für Einsteiger.