Liste der Anhänge anzeigen (Anzahl: 3)
Asuro mit ATmega168, LCD und ISP
Hallo, wollte Euch mal mein erstes eigenes Roboterprojekt - eine Erweiterung für den Asuro - vorstellen!
Kurzfassung: Mein Asuro hat jetzt einen ATmega168 und über Schieberegister ein LCD. Die Programmierung geht über ISP – außer Prüfung der Batteriespannung bleiben alle Asurofunktionen erhalten.
Langfassung: Da das Flashen mit Transceiver bei meinem Asuro nie wirklich gut funktionierte, hatte ich mich entschlossen, auf normales ISP umzusteigen. Damit ich nicht den originalen ATmega8 verliere, habe ich mir einen ATmega168 gekauft und einen STK200 kompatiblen Programmer gebastelt. Im Sockel auf dem Asuro sitzen jetzt Steckerleisten, die alle Kontakte eine Etage höher auf die Erweiterungsplatine bringen (auf die Idee bin ich durch den Beitrag hier gekommen: https://www.roboternetz.de/phpBB2/viewtopic.php?t=9635 ).
Auf der Erweiterungsplatine sitzt der ATmega168 und wird wie auf einem Steckbrett mit den einzelnen Kontakten des Asuro verbunden. Da alle Kontakte steckbar sind, kann man die einzelnen Verbindungen auch variieren. Auf der Platine sitzt außerdem ein Schieberegister an dem das LCD hängt.
Das Schieberegister braucht drei Pins – ich habe die Pins für die Front- und StatusLED genommen. Diese hängen jetzt am Schieberegister und sind so weiter einsetzbar. Leider funktioniert der Enable Pin des LCD nicht richtig am Schieberegister – also brauchte ich einen vierten Pin. Da ich noch nie die Batteriespannung gemessen habe, habe ich auf diese Funktion verzichtet und so den vierten Pin freigemacht. Damit sind (außer Batteriespannungskontrolle) alle Funktionen des Asuro erhalten und zusätzlich habe ich ein LCD und ISP :-)
Wie man sieht, könnte die Platine auch noch kleiner sein - ich will aber vielleicht noch mehr draufbauen (z.B. ein weiteres Schieberegister - dann hätte ich noch paar freie Ports...)
Gruß
kanal28
Die wichtigsten Quellen:
Die Schaltung zum Schieberegister basiert auf https://www.roboternetz.de/wissen/in...xpander_am_AVR
Die Programmierung habe ich erst hier verstanden: http://homepages.which.net/~paul.hil...isterBody.html
Die Infos zum LCD stammen von http://www.mikrocontroller.net/tutorial/lcd
Und probiert habe ich das ganze auf http://www.geocities.com/dinceraydin.../djlcdsim.html
Liste der Anhänge anzeigen (Anzahl: 1)
@ogni42 – danke für Deinen Zuspruch – ja, er fährt tatsächlich noch... ;-)
@Rakke
also für mich war auch ISP der Hauptgrund. ATmega8 hat sicher den Vorteil, dass die Programmierung gleich bleiben kann (der ATmega168 hat zwar die gleiche Pinbelegung, aber trotzdem kleinere Unterschiede, z.B. geht die original Sleep()-Funktion nur mit Anpassung - aber dafür 16KB). Nur den originalen ATmega8 sollte man vielleicht nicht nehmen, der Bootloader könnte beim ISP verloren gehen(?)
Wie hast Du denn die Verbindung mit dem Asuro geplant? Willst Du direkt am Asuro ansetzen, oder auch ein Stockwerk drauf?
Überlegen solltest Du, was Du mit dem Quartz machst. Bei mir ist der Abstand zum Originalquartz ja doch etwas groß, deswegen benutze ich den nicht mehr. Im Moment habe ich noch den internen Takt, weil ich den Chip manchmal auf dem Steckbrett habe. Ist bei mir auch noch original mit 1MHz getaktet. Fuse-Bits können wohl ein Problem sein, wenn man damit spielt – wenn man sich vorher überlegt, was man macht sollte es aber kein Problem sein (spreche da aber nicht aus Erfahrung - siehe https://www.roboternetz.de/wissen/in...leicht_gemacht ).
RS232 habe ich mittels MAX232ACPE beim Programmer mit draufgepackt – hat bisher klaglos funktioniert. Ob es gemeinsam mit IR-Transmitter geht, weiss ich nicht. Kann es aber auch nicht testen, weil ich nur eine serielle Schnittstelle habe. Werde IR auf dem Asuro zur Hinderniserkennung umbauen (https://www.roboternetz.de/phpBB2/viewtopic.php?t=11114 ) – hoffe einfach mal, das geht gleichzeitig (notfalls muss ich umstecken).
Zu den Schaltungen kann ich nicht viel sagen. Die Schaltung für den Programmer entspricht dem ISP-Dongle hier https://www.roboternetz.de/wissen/in...ogrammierkabel (zum programmieren nehme ich avrdude). Habe das mal in einer Nachtschicht auf einer 3er Lochrasterplatine zusammengelötet. Die Unterseite erspare ich Dir lieber - hätte wohl vorher etwas mehr planen sollen – aber es funktioniert (als ich das erste Mal gelötet habe, sagte man mir "nichts hält länger als ein Provisorium" - fürchte, ich halte mich noch immer dran...)
Die Schaltung für RS232 ist eine Mischung aus verschiedenen, die ich im Netz gefunden habe: http://www.rowalt.de/mc/avr/avrboard/01/avrb01.htm (wg. MAX232ACPE); http://www.mikrocontroller.net/tutorial/uart und http://www.siwawi.arubi.uni-kl.de/av...schem_0_9b.png - hatte das auf dem Steckbrett probiert und dann neben den Programmer gelötet...
so, hoffe das beantwortet Deine Fragen – viel Erfolg beim Basteln! Poste mal Dein Ergebnis, wenn Du fertig bist – bin gespannt, was Du für einen Ansatz wählst.
Gruß
kanal28
Nachtrag: Jetzt auch mit Batteriespannungsmessung
Nachtrag zur Messung der Batteriespannung: Habe mir nochmal den c't-bot angeschaut und siehe da, es geht noch einfacher: Habe jetzt den Enable Pin des LCD mit RCK/strobe vom Schieberegister zusammengelegt. Damit wird ein Pin am ATmega frei und die Messung der Batteriespannung wieder verfügbar. Dem LCD scheint das egal zu sein - man muss nur aufpassen, dass man das Display bei Ansteuerung der weiteren Leitungen am Schieberegister nicht verwirrt. Damit bleiben jetzt alle Funktionen des Asuro erhalten!
Wenn man will, kann man sogar die beiden anderen Leitungen des Schieberegisters wieder mit der StatusLED belegen - dann hat man am Schieberegister noch zwei zusätzliche Kanäle gewonnen. :-)
kanal28