== Mikrocomputer Praktikum 2008/2009 == [[TableOfContents]] Hier stehen einige Vorschlaege fuer das Mikrocomputerpraktikum im Wintersemester 2008/2009 fuer Mechatroniker (ME5). Gerne duerfen Sie mir auch Ihre Vorschlaege nennen. Bei Fragen, Kommentaren und weiteren Vorschlaegen bitte eine Email an mich senden. Meine Adresse ist Hubert.Hoegl@hs-augsburg.de. === Einteilung der Gruppen === * AVRUSB (low-speed USB mit AVR) [[BR]] Bader, Huber, Berger * HF Datenuebertragung [[BR]] Drexl, Schmid, Zacharias * Autonomes Fahrzeug (EKon Projekt) [[BR]] Matz, Hoffmann, Korn * Sprachausgabe - Stand: 13.12.08[[BR]] Kernen, Heime, Hopke, Wildner [[BR]] - Unser Projekt haben wir in mehrere ueberschaubare Teilabschnitte untergliedert. Die ersten 5 Grundlegenden Teilprojekte sind ...[[BR]] * ... die Realisierung eines LCD-Treibers fuer ein 2x16 LCD. Die aktuelle stabile Release ist 0.2 Rev.112 [[BR]] * ... Der SPI Treiber ist inzwischen fertig und benutzbar. Ggf. folgen noch Vereinfachungen zur Verbesserung der Lesbarkeit des Codes. v0.1 Rev.123[[BR]] * ... ein Treiber fuer eine Kommunikation ueber die RS232 mit einem MAX232A IC. Wird gerade implementiert [[BR]] * ... ein Treiber fuer die Ausgabe eines PWM Signals. Bereits fertiggestellt. [[BR]] * ... ein Treiber um ein analoges Signal einzulesen. Bereits fertiggestellt. [[BR]] - Die naechsten Teilprojekte welche auf den 5 Grundprejekten aufbauen sind ... [[BR]] * ... ein Treiber um einen Flashspeicher ueber die SPI Schnittstelle anzusprechen. Der Treiber ist fertig und enthaelt eine Art Stream Reader und Stream Writer Funktion mit der Einzelne Bytes nacheinander in den Flash gespeichert und wieder gelesen werden koennen. v0.1 Rev.131 [[BR]] * ... eine Funktion die solange Analogwerte einliest und im Flash speichert bis dieser voll ist. [[BR]] * ... eine Funktion die den Flash Byteweise ausliest und im richtigen Takt die Bytes ueber die PWM ausgibt. [[BR]] * ... eine Steuerung ueber RS232 oder Taster um die Aufnahme und Wiedergabe Funktion zu steuern. [[BR]] - Das SVN Repository des Projekts ist unter https://dog.informatik.fh-augsburg.de/prmc_sprachausgabe einsehbar und wird zum download zur Verfuegung gestellt. [[BR]] - Die bisherige Doku gibts unter http://www2.fh-augsburg.de/~bhopke/Projekt_MCPR/doc/ * Octopus [[BR]] Wenger, Fedrizzi, Scholze Zuerst möchten wir uns bei Benedikt Sauter (http://www.embedded-projects.net) bedanken, der uns den Schnittstellen-Wandler "Octopus" als Projektspende zur Verfügung gestellt hat. Ziel des Projekts ist es, eine Auswahl der Funktionen und Möglichkeiten des Octopuses zu testen und auszuprobieren. Mitunter konnten wir hierbei eigene Schaltungen bequem per USB-Schnittstelle ansteuern und direkt am Rechner auswerten. Vorgehensweise: - aufspielen der internen Firmware [[BR]] - Inbetriebnahme und Kommunikationsversuch unter Windows (fehlgeschlagen) [[BR]] - Inbetriebnahme unter Ubuntu erfolgreich(erfolgreich) [[BR]] - Testen der internen LED`s mit mehren verschiedenen Programmen in den Sprachen Python und C [[BR]] - Ansteuern der I/O Ports und erstellen einer extern angesteuerten Platine [[BR]] - Messen einer Spannung (bis 5V) an dem A/D-Wandler und Auswertung per C-Programm [[BR]] - Auswerten der analog Temperatursensormesswerte mittels A/D-Wandler und C-Programm [[BR]] * BLDC Motor [[BR]] Schoonhoven, Trommer, Kleiber * Elektor Internet Radio [[BR]] (wird von Prof. Bayer betreut) * Raupenfahrzeug mit RN-Control (gemeinsam mit EKON) [[BR]] Hackinger, Kaerner, Hiemer, Wang [[BR]] http://www.hs-augsburg.de/~hac/EKON === Vorschlaege fuer Projekte === 1. Versuch mit dem CAN Feldbus. Vor ein paar Jahren habe ich den Prototyp des "TinyCAN" Adapters als Hardware fuer eine Diplomarbeit entwickelt. Die Sache wurde seither staendig weiterentwickelt. Aktuell fertigt eine befreundete Firma das Geraet in groesseren Stueckzahlen, so dass wir nun diese USB-zu-CAN Adapter auch jederzeit im Praktikum einsetzen koennen. Uebrigens ist fuer TinyCAN die komplette Software "Open-Source", d.h. Sie koennen durch Studieren der Quellen der CAN Zugriffsbibliothek und sogar eines grafischen CAN Monitorprogrammes viel lernen! Alle Programme laufen sowohl unter Windows als auch unter Linux und sind in der Sprache C geschrieben. Bei grafischen Programmen wurde das portable Gtk+ Framework verwendet. Hier koennen Sie sich vorab informieren: http://www.mhs-elektronik.de/cgi-bin/mhs.pl?id1=2&id2=0. [[BR]] Was lernen Sie dabei? * Wie funktioniert CAN ueberhaupt? * Wie kommuniziert man unter Windows oder Linux mit einem CAN API? * Wie kommuniziert man zwischen zwei PCs mit CAN? * Wie baut man einen kleinen CAN-faehigen Mikrocontroller-Knoten? 1. Versuch mit Octopus. Der Octopus hat auch seine Wurzeln an der FH. Vor ein paar Jahren haben wir einen low-level USB Controller an einen Atmel AVR gekoppelt, daraus entstanden dann nach viel Arbeit die inzwischen ziemlich bekannten Produkte USBprog und Octopus. Benedikt Sauter, der diese Sachen mit viel Energie vorangetrieben hat, verkauft diese nun auch in seinem Web-Shop, neben anderen Produkten, die nicht von ihm sind. [[BR]] Man schliesst den Octopus ueber die USB Schnittstelle an den PC an und kann dann von einer Programmierschnittstelle aus mit allen I/O Kanaelen auf dem Octopus sprechen: GPIO, SPI, I2C, UART, AD und auch CAN. Somit eignet sich der Octopus gut wenn man irgendeine (selbstgebaute) elektronische Schaltung an den PC koppeln moechte. [[BR]] Web-Shop: http://www.embedded-projects.net 1. Versuch mit HF Datenuebertragung. Ich habe zwei Funkmodule mit nRF903 von [http://www.nordicsemi.com Nordic Semiconductor]. Diese wurden beschrieben in der Zeitschrift c't 24 und 25 2003 (Jens Altenburg, Elektronische Zwerge, Einfuehrung in die Mikrocontroller Praxis). Man koennte ein Modul an den PC ueber das [http://www.embedded-projects.net Octopus Interface] anschliessen und das andere an einen Atmel AVR. [[BR]] Ich habe auch noch Funkmodule von anderen Herstellern in meinem Lager, so dass man sich erst mal alle anschauen sollte. [[BR]] To Do: Noch zwei HF Steckverbinder fuer die nRF903 Antennen besorgen. 1. Versuch, bei dem der Stromverbrauch eines Programmes auf einem AVR Mikrocontroller im Vordergrund steht. Mir schwebt schon lange ein Experiment vor, bei dem die zur Verfuegung stehende Energie in Form z.B. einer Kondensatorladung begrenzt ist. Des weiteren hat man eine Aufgabe auf dem Controller zu erledigen, die moeglichst stromsparend zu realisieren ist, so dass man eine moeglichst lange Laufzeit erzielt. Das "beste" Programm waere das, das am laengsten laeuft. Daraus koennte man sogar einen Wettbewerb machen. Hier lernt man natuerlich die oft vernachlaessigten Stromspar-Betriebsarten von modernen Prozessoren kennen. Den Programmierstil muss man auch darauf einstellen, d.h. die gewoehnliche sequentielle Programmierung scheidet aus. Vielmehr muss man sein Programm oefter schlafen legen, um Strom zu sparen und durch Interrupt wieder aufwachen. Die Rechenaufgabe muesste man sich aber erst noch ueberlegen. [[BR]] Man koennte auch daran denken, den Stromverbrauch eines Mikrocontrollers ueber der Zeit zu messen. In die Stromversorgung koennte man dazu einen empfindlichen Strom/Spannungs-Wandler einbauen (habe ich bereits im Lager). Damit koennte man in Echtzeit die Leistungsaufnahme und den Energieverbrauch bestimmen. [[BR]] 1. Alle kennen diese modernen Lampen, die ihre Farbe und Helligkeit in einem grossen Bereich veraendern koennen. Drin sind meist mehrere Hochleistungs-LEDs in den Grundfarben, so dass man durch Mischung den grossen Farbbereich erzielt. Bauanleitungen, auch mit mehreren Hochleistungs-LEDs je Farbe, findet man z.B. in der Fachzeitschrift Elektor, die in der FH Bibliothek aufliegt. Mir wuerde eine Lampe gefallen, die einen bestimmten Zahlenwert in eine bestimmte konfigurierbare Farbe und/oder Helligkeit umsetzt. Stellen Sie sich vor, man koennte die Aussentemperatur damit visualisieren, je kaelter es draussen wird, um so kraeftiger wird z.B. das Blau der Lampe. Angeschlossen an einen PC koennte man auch die Anzahl der gerade ungelesenen E-mails visualisieren - ein kraeftiges Rot bedeutet ueber 20. Der Kreativitaet sind hier keine Grenzen gesetzt. 1. Nachbau einer klassischen Lichtorgel mit drei LEDs rot, gruen und blau, die an einem Atmel AVR Controller haengen. Das Board/der Controller muesste auch ueber einen analogen Eingang verfuegen (zumindest ein AD-Wandler Eingang) ueber den man die analogen Signale digitalisiert. Die Schwerpunkte des Versuches laegen dann in den Bereichen * Digitalisierung der analogen Eingangssignale * Digitale Filterung in drei Frequenzbereiche tief, mittel und hoch (welche Frequenz schafft man noch?) * Pulsbreitenmodulation der LEDs Um ein digitales Filter realisieren zu koennen, muss man sich einige Messwerte des analogen Signales merken koennen. Dazu braucht man ausreichen RAM (wie viel?), deshalb koennte das bei kleineren AVR Bausteinen knapp werden. 1. Low-speed USB Peripherie mit AVRUSB (http://www.obdev.at/avrusb) machen. Der Atmel AVR, z.B. ein billiger Mega8 erledigt wegen der relativ niedrigen Geschwindigkeit von 1 MBit/s das ganze low-speed USB Protokoll in Software. Damit lassen sich mit minimalem Aufwand (man braucht keinen USB Controller!) wunderbare Geraete bauen, die am USB Bus haengen. Die Kommunikation zwischen PC und AVR wird mit den "HID Feature Requests" gemacht. Sie lernen hier wie USB funktioniert und auch der programmtechnische Zugriff auf ein "Human Interface Device" sollte halbwegs klar werden. Auf der oben angegebenen Projektseite sind viele bereits realisierte spannende Projekte - bitte mal ansehen! 1. Fernsteuern mit dem Mobiltelefon oder einem GSM-Modem. Hier geht es darum zwei Mobiltelefone mit je einem Kabel mit dem PC zu verbinden und die Funkverbindung zum Messen und Steuern zu verwenden. Mit den Kabeln ist es moeglich, programmgesteuert ueber die serielle Schnittstelle mit den Handys zu kommunizieren. Es werden dabei die "AT" Befehle verwendet, die man schon von den vergangenen analogen Modems kennt. Die Nachrichten zwischen den Telefonen kann man z.B. als SMS formatieren (endlich mal eine sinnvolle Verwendung!). In der Praxis ist der entfernte Mess- oder Steuerknoten nicht mit einem Mobiltelefon, sondern mit einem "GSM-Modem" ausgestattet. Das ist nichts anderes als ein normales Mobiltelefon, allerdings nicht mit Tasten und Display, sondern gekapselt in einem Metallgehaeuse (nur der Antennenstecker und der UART Anschluss schauen raus). Ich habe sogar ein GSM-Modem von der Firma Wavecom im Lager. [[BR]] An die Studenten die in meine OOSW-Vorlesung gehen: Es gibt eine Python Bibliothek die bereits mit den AT Befehlen umgehen kann. 1. Internet Radio "EIR" http://www.ethernut.de/en/hardware/eir/index.html [[BR]] Dieser Versuch ist bereits vergeben an Detlef Fischer, Hanspeter Meier und Christian Wengert (evtl. noch Thomas Schweizer). 1. Elektronische Regelung einer Wippe mit Kugel (Elektor Heft 9/2008). Wer Freude an mechanischen Regelexperimenten hat, der findet in den Elektor Heften von diesem Jahr bereits zwei Bauvorschlaege. Das andere Heft war, glaube ich, das Heft 7/8 2008. Bei allen Projekten duerfen (sollen!) Sie natuerlich das Gelernte aus meiner anderen Veranstaltung "Objektorientierte Softwareentwicklung in Python" anwenden. In der Vergangenheit (siehe die Wiki Eintraege der letzten Jahre) wurde das schon oft gemacht.