-
Mikrocontroller
hallo einmal, ich habe vor auch ein roboterprojekt zu starten und wollte vll, nach einer umentscheidung, einen 6 beinigen roboter bauen.
jetzt möchste ich erst mal mit mikros erfahrung sammeln wie ich motoren über pwm ansteuer und mir sensordaten zum steuern lesen lasse
jetzt möchste ich aber schon etwas kaufen, was in die richtung geht,
also grobe berechnung bei 6 beinen, a 3 motoren ( korrigiert mich wenn ich mehr brauche) komme ich auf 18 motoren die ich ansteuern möchte und dementsprechend auch 18 sensoren einlesen.
wie realisiere ich das jetzt? habe ich einen "großen" mikro, wie ein atmega128 mit dem ich komplett die steuerung übernehme, oder verteilt dieser nur die bewegungsdaten an kleinere mikros die diese dann umsetzen?
sind diese kleineren mikros dann so etwas wie ein atmega16? denn ich habe auf der atmel seite auch spezielle pwm prozessoren gesehen
ich hoffe ich konnte mich verständlich ausdrücken :-)
greez
-
die AT90PWMx Prozessoren, zu finden auf
http://www.atmel.com/dyn/products/pa...tion=DESC#1723
haben zwischen 6 und 10 PWM kanälen ... man lann es zwar mit softwarepwm lösen, aber ich würde eher versuchen 2 x 10fach oder 3 x 6fach PWM controller nehemn und diese per TWI/SPI/UART mit daten füttern, die von einem zentral gelagerten "gehirn" controller gesteuert werden .... das ist meine einstellung dazu, gibt aber auch viele die es nur mit software pwm gemacht haben
ATmega640 hat sogar 16 PWMs ... gar nicht gleich gesehen ^^
und wenns extrem werden soll, die xmegas haben zwischen 16 und 24 ... sind aber ne spur komplizierter ^^
-
okay, das ist ja schonmal ein guter input, welchen mikro würdest du als "hirn" benutzen?
er bräuchte ja trotzdem 20 ausgänge um die gewünschte position an die knechte zu vermitteln, oder?
welche boards sollte ich benutzen, bin durch die angebotvielfalt sichtlich verwirrt ^^
oder lohnt es sich doch ein board selber zu bauen, und somit optimal den bedingungen anzupassen
danke
-
nimm doch nen mega 32, also wenn du dich an die externen PWM controller entscheidest. Du solltest aber in deine Überegung mit einbeziehen, wie viele andere Sensoren du noch verwende willst.
Zum board: Es gibt einige, die schwören auf fertige Boards, andere wiederrum nicht. Ich löte mir meine Controllerplatinen immer auf lochraster, da ist man am Flexibelsten mit änderungen der Schaltung.
-
Wenn es die AVRs sein sollen, würde ich erst mal mit was kleinerem wie z.B. Mega88 anfangen. Ein wesenlicher Vorteil für den Anfang ist, dass man die im DIP Gehäuse kreigt und es entsprechend Sockel gibt und man auch ein Steckbrett nutzen kann. Für erste Versuche Reicht das auch vollkommen aus. Die größeren Chips sinn sehr ähnlich zu programmieren ein umstiegt ist entsprechend wirklich minimal (z.B. den Compiler sagen das es für einen anderen Chip ist und eventuell ein ganz paar Registernahmen anders).
Ob man jetzt eine großen Mikro, oder mehrere kleine nimmt, ist sicher etwas geschmackssache. Hier würde es sich anbieten z.B. für die Steuerung jedes Beines (=3 Motore) einen µC zu nehmen. Je nach Art der Motoransteuerung könnte da z.B. ein Mega88 reichen. Wenn man Servos als Motoren nimmt, könnte ein µC auch mehr 3 Motoren steuern.
Für die Koordination, externe Sensoren usw. dann halt noch ein µC. Da ist dann wahrscheinlich mehr die Speichergröße interessant.
Ein Modularer Aufbau hat auch den Vorteil, dass die Platinen überschaubar bleiben und man auch Teile gut Testen kann.
Für die ersten Tests würde ich ein fertiges Board vorschlagen, dann hat man erst mal nur die Software. Ob man später fertige Boards nimmt, oder was selber entwirft, hängt davon ab was man an Hardware, z.B. Motortreiber, braucht.
-
Wenn du noch keine Erfahrungen in Richtung mikrocontroller hast und komplett neu anfängst, könntest du auch zu einem propeler greifen. Schau mal bei google nach das sind sehr interessante µCs zu denen es gute dokumentationen gibt.
-
Es ist wahrscheinlich besser wenn du je Bein einen eigenen Kontroller verwendest.
Mein Junior hatte in der FH bei einer theoretischen Planung eines Hexabot festgestellt, das bei einer optimalen Wegeberechnung der Beine und Auswertung der Sensoren der Rechenaufwand so hoch ist, das ein FPGA als "Hirn" notwendig wäre.
Als Einfach-Variante, je ein Mega8 für die Beine und ein Mega128 für die Koordination.
-
deshalb meine empfehlung: ein propeller: schafft ungefähr so viel weg wie ein 1Ghz Pentium III....
-
der propeller ist ne nummer zu hoch möchte ich meinen ... ich finde den beschaltungsaufwand ein wenig zu hoch ... zumal es beim programmieren relativ viele stolperfallen gibt ... ich würde für so ein projekt lieber 3 controller mit je 6(AT90PWM), respektive 10(ATMega Serie) PWM nehmen und einen Mega88 als gehirn .. das ganze mit einem TWI/SPI Bus verbinden
-
okay, dankeschön, das sind ja schonmal echt viele informationen, also ich habe erfahrung in programmieren von mikros, allerdings nicht mit der kommunkitation zwischen mikros, was ja eintreten würde wenn ich pro bein 1 mikro hätte, und eins als gehirn.
ich hatte heute mal ein langes gespräch mit meinem prof und der meinte ich sollte für die steuerung servos nehmen, da fühl ich mich aber irgendwie eingeschränkt.
hätte wie gesagt lieber vollwertige motoren, mit einem schönen getriebe, die ich bis zur soll position (ist position vom sensor) bewegen lasse
ich denke auch das dass die beste wahl ist für ein roboter den ich auch vielen bedingungen anpassen kann, ausserdem ist sowas ja auch schön erweiterbar.
ausserdem hat er mir noch einen 4017 dekadencounter als alternative genannt, aber wie gesagt ich finde auch die idee mit dem modularem aufbau irgendwie interresannter!
also das mit den eigenen boards kann ich mir ja bei den atmega8 für die beine noch vorstellen, obwohl ich auch da keine erfahrung habe, aber für den 128 wird das ja löttechnisch nicht zu bewältigen
kennt ihr denn günstige boards für den mega128 mit dem nötige anschlüsse für 18 sensoren habe, und ich n gescheites bus-system zur übertragung habe?
ich weiss viele fragen, aber ich denke ne gute anfangsplanung ist bei so nem komplexen thema schon wichtig
greez