Mikrocomputer-Praktikum der Mechatroniker ME5 im Wintersemester 2005/2006

Betreuer: [http://www.fh-augsburg.de/~hhoegl Prof. Hubert Hoegl], <Hubert.Hoegl@fh-augsburg.de>

Im zweiten Teil des Praktikums geht es nun ab dem 16. November an die Projekte.

Inhalt

[#gruppen Arbeitsgruppen] | [#avrtipps Tipps zum AVR]

Arbeitsgruppen

Anchor(gruppen)

Die Einteilung der Arbeitsgruppen ist wie folgt:

1. Frank Gutmann, Patrick Deisenhofer

Stichpunkte: Mikrocomputerboard mit Philips ARM7TDMI-S Controller LPC2294 von Olimex http://www.olimex.com // GNU C Compiler fuer ARM // JTAG Debugger Openocd // Brushless DC Motor mit Leistungsstufe von Nanotec, http://www.nanotec.de.

In meinem Skript zur Vorlesung MNP (http://www.fh-augsburg.de/~hhoegl/mnp/skript/index.html) gibt es einen Abschnitt ueber die wichtigesten GDB Kommandos.

18.11.2005: Was bisher (erfolgreich) geschah:

  1. Mit Hilfe von WinARM und den mitgelieferten Beispielen eigenes LED-blink-Programm compiliert
  2. .hex Datei mit dem Philips LPC210x_isp Tool in den Flashspeicher geladen und erfolgreich ausgefuehrt
  3. nach einer kleinen Veraenderung des Assembler-Startupcodes auch Programme aus dem SRAM ausfuehrbar, Upload mit dem Philips Tool
  4. Das OpenSource Tool lpc21isp hat(te) einen kleinen Bug, der verhinderte, dass das Programm mit dem LPC2294 zusammenarbeitet. Bug gefunden und dem Autor gemeldet. Version 1.31 sollte funktionieren.

  5. Zur Verwendung von openocd Linux installiert (Suse 10) *brrr*
  6. (hoffentlich) die Version von openocd kompiliert, die den ARM7TDMI-S unterstützt
  7. GNUARM heruntergeladen und das erste Programm (wie oben) erfolgreich kompiliert

30.11.2005

  1. Openocd untestützt bis jetzt (0.3) doch noch keinen ARM7TDMI-S core. Daher Wechsel auf Atmel AT91SAM7S64 mit ARM7TDMI-core. Nach anfänglichen Schwierigkeiten wurde auch ein Controller von AD getestet, der aber die selben Probleme bereitete. arm-elf-insight hat wohl noch Probleme mit dem ARM7TDMI, arm-elf-gdb funktioniert soweit. Auch mit ddd ist debuggen problemlos möglich, was für verwöhnte klickibunti-user wie uns im Moment die erste Wahl darstellt.
  2. Linkerscript von WinArm angepasst, so dass das Laden von Programmen in das SRAM und die dortige Ausführung möglich wird.

1.12.2005

  1. Erste eigene Programme (Leds blinken lassen und auf Knopfdruck leuchten) mit und ohne Verwendung der fertigen Header laufen jetzt
  2. Eine der Leuchtdioden auf dem Board mittels PWM dimmbar gemacht. Das Ganze sollte dringend mit einem Oszilloskop betrachtet werden, zeigt manchmal seltsames Verhalten.

15.12.2005

  1. Das seltsame Verhalten (Polarität wechselt ohne Grund) ist auf Fehler im Chip zurückzuführen. Der Dutycycle darf nicht 0 werden. Ausserdem muss der Takt für den PWM Controller kleiner als der Mainclock sein.
  2. Problem: PWM-Signal mit û=3,3V soll Gleichspannung mit û=5V werden. Lösung: RC-Tiefpass->Opamp mit k=1,5: Funktioniert nur einige Sekunden, dann bricht die Spannung am Filter ein, als ob der Kondensator einen Gleichstromwiderstand von ca 10kOhm hätte. Tausch des Cs brachte keinen Erfolg.

  3. Neue Filterschaltung: Opamp auf 5V PWM->Filter->Spannungsfolger: Funktioniert. Weiß der Teufel, warum.

  4. Kabelgewärch an den BLDC-Motor und die Steuerung gelötet.
  5. Steuerung über den Controller funktioniert prinzipiell. Motor lässt sich nur auf der niedrigsten Drehzahlstufe aus- und einschalten und nur bis zur Hälfte der Drehzahl kann die Drehrichtung verändert werden. Das Problem liegt entweder am Netzteil, das nur 3A liefert und beim Richtungswechsel und Ausschalten in die Strombegrenzung geht, am zu niedrigen Pegel der Steuersignale (3,3V statt min. 3,5V wie im Datenblatt), oder daran, dass die Steuerung des Herstellers, ääähm, suboptimal ist.
  6. Zu letzterer Annahme passt auch, dass der angebliche 0-5V Eingang für die Drehzahl nur zwischen ca 1,2V und 2,7V funktioniert. Darunter läuft der Motor nicht, darüber keine weitere Drehzahlsteigerung. Steuerspannung mit dem Oszi überprüft und korrekt. Auch das Poti auf der herstellereigenen Steuerung zeigt nicht über den vollen Bereich Wirkung.
  7. Die Ausgänge der drei Halbbrücken der Leistungsstufe liefern einen per PWM grob nachgebildeten Sinus, jeweils um 120° Phasenverschoben. _/-\_/-\_

2. Tim Derix, Thomas Kaller

xired@RZ.FH-Augsburg.DE, kallerth@RZ.FH-Augsburg.DE

Stichpunkte: Experimente mit dem Asuro Roboter // Atmel AVR

3. Kilian Green, Christian Bohner

kilifuchs@web.de, chb@RZ.FH-Augsburg.DE

Stichpunkte: Laser Scanner // Steuerung ueber ein C Programm ueber einen PC // Selbstgebauter PWM-Treiber der über die Parallel-Schnittstelle gesteuert werden soll.

Aktueller Status:

09.11.05 Mittwoch

10.11.05 Donnerstag

16.11.05 Mittwoch

17.11.05 Donnerstag

20.11.05 Sonntag

25.11.05 Freitag

30.11.05 Mittwoch

06.05.05 Dienstag

4. Dennis Kirchner, Daniel Storr

kirchner@RZ.FH-Augsburg.DE, dstorr@RZ.FH-Augsburg.DE

Stichpunkte: Controller fuer Touch-Panel // Atmel AVR // Die vorhandenen Touch Panel werden in folgendem Text erwaehnt: http://www.fh-augsburg.de/~hhoegl/tmp/display-text/displays.html

Anregung: Es soll auch ein Programm auf dem PC geschrieben werden, das eine Zeichenflaeche zeigt. Dieses Programm kommuniziert ueber die serielle Schnittstelle mit dem Touch-Controller und zeigt die vom Controller ermittelten Stiftpositionen an. Es soll auch eine Eichung des Touch-Panels moeglich sein. Natuerlich eignet sich [http://www.python.org Python] hervorragend fuer diesen Job!

Einige Datenblatter zu dieser Thematik gibt es hier:

11.12.2005 - damit bei uns auch mal was steht, folgend unser aktueller Projektstatus:

To-Do-Liste:

5. Christoph Marx, Andreas Pistek

Christoph.Marx@FH-Augsburg.DE, Andreas.Pistek@FH-Augsburg.DE

Stichpunkte: NF300 mit dem GNU C Compiler programmieren // Debuggen mit dem BDM Dongle und dem GNU Debugger gdb

Anregungen:

Linux

Die folgenden drei Aufzaehlungspunkte stammen alle von Daniel Endres, der im Herbst 2005 den NF300 mit GCC programmiert hat:

* Eintrag im Informatik-Wiki

* BDM Treiber fuer Linux (cuch fuer 2.6er Kernel)

* GDB mit BDM Support (V. 5.3). Der Treiber wird mit

* Dominic Rath hat 2004 folgende Punkte zusammengeschrieben (nur fuer 2.4er Kernel)

Windows

* http://www.ashware.com

* http://www.oesch.org/Teko/tekoup.htm

Ein Aufsatz von Roman Jordan: http://www.fh-augsburg.de/~hhoegl/rt/etc/cross/crosscompiling.html

02.01.06: Kurze Zusammenfassung unseres Schaffens

6. Benjamin Kruedelbach, Robert Ruef

Benjamin.Kruedelbach@FH-Augsburg.DE, Robert.Ruef@FH-Augsburg.DE

Stichpunkte: Regelschleife mit Waermequelle (z.B. CPU), Luefter, Temperatursensor und Mikrocontroller (Atmel AVR).

Anregung:

MAXIM Application Note 1784, "Fan Speed Control is Cool!" http://www.maxim-ic.com/appnotes.cfm/appnote_number/1784

7. Johannes Bosch, Michael Linder

jbosch@RZ.FH-Augsburg.DE, Michael.Linder@FH-Augsburg.DE

Stichpunkte: Alternativer Plotter mit zwei drehbaren Armen // Steuerung ueber zwei Servomotoren // Atmel AVR

8. Markus Kaestle, Thomas Schiller

Markus.Kaestle@FH-Augsburg.DE, Thomas.Schiller@FH-Augsburg.DE

Stichpunkte: Experimente mit dem AVR Ethernet Board "Arthernet" // Web-Server auf Atmel AVR // Steuerung ueber RS-232 // http://www.mikrocontroller.net/articles/Arthernet_-_AVR_Ethernet

31.12.05 Sylvester : Wir verzweifeln!

Zunächst hatten wir unsere Hardware komplett selbst mit SMD bestückt und gelötet. Optischer Eindruck: Schaut super aus!

Zunächst programmieren wir unseren Adress-Decoder (Xlinx) mittels CPLD-JTAG. Funktionierte, nach dem wir die richtige Steckerbelegung rausgefunden hatten, einwandfrei. Dann machten wir uns ans Werk und wollten unseren Atmel Mega128 mit der ISP-Schnittstelle programmieren. Das führte leider nicht zum Erfolg (trotz tagelanger Fehlersuche und ausprobieren). Anschließend bekamen wir vom Prof. Högl die original Atmel JTAG ICE mk-II Debug und Programmer Interfaces. Mit dieser könnten wir nun endlich auf unseren Atmel schreiben (und wir dachten schon der Atmel sei tot) Das erste Testprogramm ging leider ebensowenig wie das anschließende Ethernut-Programm (OS für AtmelMega mit Ethernet). Folgende Probleme quälen uns nun: - ISP-Schnittstelle ist tot - RS232 gibt keine Signale aus und kann auch keine empfangen (mit Oszi kommt nur 'n Sägezahn raus) evtl Max3232 tot? - RTL-Chip (Netzwerkchip) gibt keine Link/Act signale beim Anstecken von Netzwerken. Zudem bekommt der Chip kein passenden Chip-Select.

Inzwischen sind schon einige Tage der Frustration hinter uns und wir überlegen schwer, ob wir nicht noch ein anderes Projekt beginnen sollen, welches nicht ganz so komplex ist und vorallem überschaubarer ist (sprich weniger verschiedene Hardware).

Aber mehr im Neuen Jahr!

Anchor(avrtipps)

Tipps zum AVR

Das folgende Tutorial beschreibt, wie man den Atmel AVR mit dem freien C Compiler GCC programmieren kann:

Die beiden AVR Homepages lauten

Der erste Link ist die Produktseite des Herstellers Atmel. Der zweite Link ist die sehr gute "inoffizielle" Homepage des Atmel AVR. Hier wird von Freiwilligen eine Unmenge an Informationen zum AVR gesammelt.

Die aktuelle Version der Entwicklungsumgebung "AVR Studio" (V. 4.12) hat bereits den C-Compiler GCC fuer AVR integriert. Leider kann man das Studio nur unter Windows verwenden.

Man braucht das AVR Studio aber nicht unbedingt. Man kann mit dem AVR GCC auch allein gut auskommen. Der zentrale Zugang lautet:

Hier gibt es den AVR GCC fuer verschiedene Plattformen, auch z.B. fuer Linux. Fuer Windows gibt es den "WinAVR" unter http://winavr.sourceforge.net/.

Zum Debuggen empfehle ich die Verwendung eines AVR Bausteines mit JTAG Schnittstelle, z.B. den Mega16 oder den Mega32 (neben vielen anderen). Die JTAG Schnittstelle steuert man mit einem JTAG Adapter an, folgende sind gebraeuchlich:

* Die offiziellen Adapter von Atmel, JTAGICE und JTAGICE mkII.

* Das "Evertool" ist der Nachbau des Atmel JTAGICE Adapters.

* Beim Elektronikladen gibt es den AVR-JTAG-USB Adapter.

MikroPraktikum0506 (zuletzt geändert am 2006-01-02 16:58:07 durch p549B2A1F)