Projekt 43b: Ansteuerung des LED-Würfels 2.0 mit Matlab
Autoren: Christian Horstknepper und Leon Hundertmark
Betreuer: Prof. Dr. Mirek Göbel
Einleitung
In diesem Artikel werden die Ergebnisse des WS 17/18: Fachpraktikum Elektrotechnik (MTR) der Gruppe 43b: Ansteuerung des LED-Würfels 2.0 mit Matlab festgehalten. Das Projekt wurde im Wintersemester 17/18 von Christian Horstknepper und Leon Hundertmark im Rahmen des Moduls Mechatronische Systeme II des Mechatronik Studiengangs im 5. Semesters bearbeitet. Um nachfolgenden Studierenden die Arbeit am LED-Würfel zu vereinfachen, enthält der Artikel eine ausgiebige Dokumentation, Datenblätter und eine Funktionsbeschreibung des Würfels. Vorhandenen C-Code, Matlab-Code und weitere Dateien stehen im svn und als .zip Datei zur Verfügung.
Aufgabe
Ziel ist es, den Atmega32 so zu programmieren, dass er Daten seriel empfängt und diese in richtiger Form auf die LEDs überträgt. Die Daten sollen aus Matlab gesendet werden. Die Initialisierung des Würfels konnte aus dem Beispielcode von Asaad Mohammed Al-Suleihi übernommen werden und musste somit nicht selbst programmiert werden.
Schwierigkeitsgrad
mittel(***)
Funktionsbeschreibung des Würfels
Projekt
Im folgenden werden die Ergebnisse kurz und prägnant dargestellt.
Erstellen eines Projekts mit Atmel Studio
- Atmel Studio installieren (siehe hier)
- Starte Atmel Studio
- Neues Projekt erstellen
- GCC C Executable Projekt
- Atmega32 auswählen
- Debuggen ermöglichen
- Symbolleiste
- Atmega32
- Toolchain
- Optimization
- Optimization level: none
- Freqeunz der CPU speichern
- Projekt
- Projekteigenschaften
- Symbols
- F_CPU= siehe Datenblatt(1475600UL)
Nutzung des Programmiergeräts
- Atmel-ice[1]
- Anschließen an den Würfel
- USB-Anschluss in den Computer
- Startbereit wenn die die grüne LED leuchtet
- Einstellen in Atmel Studio
- Symbolleiste
- Rechts neben Atmega32(none)
- JTAG Debugger auswählen
- Für Nutzung vorbereiten
- Extras
- Device Programming
- Apply,Read
Einrichten der seriellen Schnittstelle des Atmega32
- Öffne das Datenblatt des Atmega32
- Suche Beschreibung von USART[2]
- In dem Atmel Studio Projekt
#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 14745600UL
#endif
#define BAUD 9600
#define BAUDRATE (((F_CPU)/BAUD*16UL)-1)
void USART_init(void)
{
UBRRH=(BAUDRATE>>8);
UBRRL=BAUDRATE;
UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
UCSRB=(1<<RXEN)|(1<<TXEN);
}
void USART_send(unsigned int data)
{
while (!( UCSRA & (1<<UDRE)));
UDR = data;
}
unsigned int USART_receive(void)
{
while(!(UCSRA) & (1<<RXC));
return UDR;
}
Serielle Übertragung aus Matlab[3]
Erstellung einer GUI[4] in Matlab
Probleme & Schwierigkeiten
- Erstellen eines funktionierenden Atmel Studio Projekts
- Einrichten der seriellen Schnittstelle
- Defekt des Würfels
- Problem:
- Stromversorgung des Würfels defekt
- Die "Spannung ok" LED blingt aufgrund des Kondensators C15
- Vermutung:
- Kurzschluss in der zweiten Ebene
- Problem:
- Spätes Erhalten des Atmel-ice Programmiergeräts
- Zweite Gruppe, die den Würfel benötigte
Zusammenfassung
Insgesamt war der LED-Würfel eine interessante elektrotechnische und informatische Herausforderung. Das Einarbeiten in das Datenblatt des Atmega32, das Einrichten der seriellen Schnittstelle und das Modellieren innerhalb von Matlab konnte erfolgreich umgesetzt werden. Desweiteren wurde eine GUI eingerichtet, welche die Funktionalität des Würfels simulieren und die serielle Übertragung vereinfachen soll. Aufgrund oben genannter Probleme konnte die serielle Übertragung nicht konfiguriert und parametrisiert werden.
Ausblick
- Aufgaben
- Reparieren des Würfels
- Testen der vorhandenen seriellen Schnittstelle
- Möglichkeiten
- Vereinfachtes Erzeugen von 8x8x8-Matrizen
- Verbesserung der seriellen Übertragung allgemein
Literaturverzeichnis
→ zurück zum Hauptartikel: WS 17/18: Fachpraktikum Elektrotechnik (MTR) und Angewandte Elektrotechnik (BSE)