Projekt 43b: Ansteuerung des LED-Würfels 2.0 mit Matlab: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
(GUI ergänzt)
Zeile 8: Zeile 8:


== Einleitung ==
== Einleitung ==
In diesem Artikel werden die Ergebnisse des [[:Kategorie:ProjekteET_MTR_BSE_WS2017|WS 17/18: Fachpraktikum Elektrotechnik (MTR)]] der Gruppe 43b: Ansteuerung des LED-Würfels 2.0 mit Matlab festgehalten.  
In diesem Artikel werden die Ergebnisse des [[:Kategorie:ProjekteET_MTR_BSE_WS2017|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.
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
Um nachfolgenden Studierenden die Arbeit am LED-Würfel
zu vereinfachen, enthält der Artikel eine Dokumentation, Datenblätter und eine kurze Funktionsbeschreibung des Würfels. Vorhandenen C-Code, Matlab-Code und weitere Dateien stehen im svn und als .zip Datei zur Verfügung.
zu vereinfachen, enthält der Artikel eine Dokumentation, Datenblätter und eine kurze Funktionsbeschreibung des Würfels. Vorhandenen C-Code, Matlab-Code und weitere Dateien stehen im SVN und als .zip-Datei zur Verfügung.


== Aufgabe ==
== 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.
Ziel ist es, den Atmega32 des Würfels so zu programmieren, dass er Daten seriell empfängt und diese in richtiger Form an die LED-Treiber überträgt, um das gewünschte Bild darzustellen. 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.
Die Initialisierung des Würfels konnte aus dem Beispielcode von Asaad Mohammed Al-Suleihi übernommen werden und musste somit nicht selbst programmiert werden.


Zeile 23: Zeile 23:


Der Würfel benötigt eine Versorgungsspannung von 5 Volt. Überspannungen und Unterspannungen werden durch eine Schutz-Schaltung  
Der Würfel benötigt eine Versorgungsspannung von 5 Volt. Überspannungen und Unterspannungen werden durch eine Schutz-Schaltung  
abgefangen. Die Anschlussplatine besitzt zwei dSPACE, einen RS232 und einen USB Anschluss zur Übertragung von Daten zum Atmega32.  
abgefangen. Die Anschlussplatine besitzt zwei dSPACE-, einen RS232- und einen USB-Anschluss zur Übertragung von Daten zum Atmega32.  
Der Atmega32 wird über einen JTAG Anschluss auf der Unterseite des Würfels programmiert. Die LEDs werden über Treiber-ICs
Der Atmega32 wird über einen JTAG-Anschluss auf der Unterseite des Würfels programmiert. Die LEDs werden über Treiber-ICs
gesteuert. Diese werden im Multiplexbetrieb mit einem acht Bit Muster beschaltet und übernehmen es. Die genaue Funktionsweise kann aus dem Datenblatt des Würfels entnommen werden.
angesteuert. Diese werden im Multiplexbetrieb mit einem acht Bit Muster beschaltet, ein Bit repräsentiert dabei jeweils eine LED der aktuellen Reihe. Die genaue Funktionsweise kann aus dem Datenblatt des Würfels entnommen werden.


== Projekt ==
== Projekt ==
Zeile 94: Zeile 94:
</syntaxhighlight>
</syntaxhighlight>
=== Serielle Übertragung aus Matlab<ref>[https://de.mathworks.com/help/matlab/serial-port-devices.html Serielle Kommunikation mit Matlab]</ref> ===
=== Serielle Übertragung aus Matlab<ref>[https://de.mathworks.com/help/matlab/serial-port-devices.html Serielle Kommunikation mit Matlab]</ref> ===
#
1. Erstellen eines Serial-Objekts
#
  atmega = serial('COM3','BaudRate',9600)
#
2. Öffnen des seriellen Ports
#
  fopen(atmega)
3. Senden der entsprechenden Daten
  fwrite(atmega,daten)


=== Erstellung einer GUI<ref>[https://en.wikipedia.org/wiki/Graphical_user_interface Graphical user interface]</ref> in Matlab ===
=== Erstellung einer GUI<ref>[https://de.mathworks.com/discovery/matlab-gui.html Grafische Benutzeroberflächen mit Matlab GUIDE]</ref> in Matlab ===
#
Um die Bedienung des Würfels zu vereinfachen, wurde eine grafische Benutzeroberfläche mit Matlab GUIDE erstellt. Mit Hilfe dieser Benutzeroberfläche vereint mehrere Funktionen:
#
* Herstellen einer seriellen Verbindung zum Würfel (manuelle Auswahl des COM-Ports)
#
* Auswahl einer vordefinierten Figur
#
** Eine Vorschau diese Figur wird in der GUI geplottet
* Senden der gewählten Figur an den Würfel
* Die gesendeten Daten (64 Byte - ein Byte pro Linie) werden zur Kontrolle angezeigt
Da der Würfel am Ende des Praktikums leider nicht mehr funktionierte, wird dieser durch einen Arduino repräsentiert, welcher analog zum Würfel seriell verbunden wird und die Daten empfängt. Sollte der Würfel wieder funktionieren, muss der Code der GUI nicht verändert werden.


== Probleme & Schwierigkeiten ==
== Probleme & Schwierigkeiten ==
Zeile 115: Zeile 120:
#**Kurzschluss in der zweiten Ebene
#**Kurzschluss in der zweiten Ebene
# Spätes Erhalten des Atmel-ice Programmiergeräts
# Spätes Erhalten des Atmel-ice Programmiergeräts
# [http://193.175.248.52/wiki/index.php/Projekt_43a:_Bau_eines_Geh%C3%A4uses_f%C3%BCr_den_LED-W%C3%BCrfel_2.0 Zweite Gruppe], die den Würfel benötigte
# Zeitweise benötigte die [http://193.175.248.52/wiki/index.php/Projekt_43a:_Bau_eines_Geh%C3%A4uses_f%C3%BCr_den_LED-W%C3%BCrfel_2.0 Gruppe 43a], welche für das Gehäuse verantworlich war, den Würfel. Währenddessen konnte neu geschriebener Code nicht getestet werden.


== Zusammenfassung ==
== Zusammenfassung ==

Version vom 21. Januar 2018, 17:13 Uhr


IN BEARBEITUNG

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 Dokumentation, Datenblätter und eine kurze 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 des Würfels so zu programmieren, dass er Daten seriell empfängt und diese in richtiger Form an die LED-Treiber überträgt, um das gewünschte Bild darzustellen. 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

Der Würfel benötigt eine Versorgungsspannung von 5 Volt. Überspannungen und Unterspannungen werden durch eine Schutz-Schaltung abgefangen. Die Anschlussplatine besitzt zwei dSPACE-, einen RS232- und einen USB-Anschluss zur Übertragung von Daten zum Atmega32. Der Atmega32 wird über einen JTAG-Anschluss auf der Unterseite des Würfels programmiert. Die LEDs werden über Treiber-ICs angesteuert. Diese werden im Multiplexbetrieb mit einem acht Bit Muster beschaltet, ein Bit repräsentiert dabei jeweils eine LED der aktuellen Reihe. Die genaue Funktionsweise kann aus dem Datenblatt des Würfels entnommen werden.

Projekt

Im folgenden werden die Ergebnisse kurz und prägnant dargestellt.

Erstellen eines Projekts mit Atmel Studio

  1. Atmel Studio installieren (siehe hier)
  2. Starte Atmel Studio
  3. Neues Projekt erstellen
    • GCC C Executable Projekt
    • Atmega32 auswählen
  4. Debuggen ermöglichen
    • Symbolleiste
    • Atmega32
    • Toolchain
    • Optimization
    • Optimization level: none
  5. Freqeunz der CPU speichern
    • Projekt
    • Projekteigenschaften
    • Symbols
    • F_CPU= siehe Datenblatt(1475600UL)

Nutzung des Programmiergeräts

  1. Atmel-ice[1]
  2. Anschließen an den Würfel
  3. USB-Anschluss in den Computer
  4. Startbereit wenn die grüne LED leuchtet
  5. Einstellen in Atmel Studio
    • Symbolleiste
    • Rechts neben Atmega32(none)
    • JTAG Debugger auswählen
  6. Für Nutzung vorbereiten
    • Extras
    • Device Programming
    • Apply,Read

Einrichten der seriellen Schnittstelle des Atmega32

  1. Öffne das Datenblatt des Atmega32
  2. Suche Beschreibung von USART[2]
  3. 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]

1. Erstellen eines Serial-Objekts

 atmega = serial('COM3','BaudRate',9600)

2. Öffnen des seriellen Ports

 fopen(atmega)

3. Senden der entsprechenden Daten

 fwrite(atmega,daten)

Erstellung einer GUI[4] in Matlab

Um die Bedienung des Würfels zu vereinfachen, wurde eine grafische Benutzeroberfläche mit Matlab GUIDE erstellt. Mit Hilfe dieser Benutzeroberfläche vereint mehrere Funktionen:

  • Herstellen einer seriellen Verbindung zum Würfel (manuelle Auswahl des COM-Ports)
  • Auswahl einer vordefinierten Figur
    • Eine Vorschau diese Figur wird in der GUI geplottet
  • Senden der gewählten Figur an den Würfel
  • Die gesendeten Daten (64 Byte - ein Byte pro Linie) werden zur Kontrolle angezeigt

Da der Würfel am Ende des Praktikums leider nicht mehr funktionierte, wird dieser durch einen Arduino repräsentiert, welcher analog zum Würfel seriell verbunden wird und die Daten empfängt. Sollte der Würfel wieder funktionieren, muss der Code der GUI nicht verändert werden.

Probleme & Schwierigkeiten

  1. Erstellen eines funktionierenden Atmel Studio Projekts
  2. Einrichten der seriellen Schnittstelle
  3. 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
  4. Spätes Erhalten des Atmel-ice Programmiergeräts
  5. Zeitweise benötigte die Gruppe 43a, welche für das Gehäuse verantworlich war, den Würfel. Währenddessen konnte neu geschriebener Code nicht getestet werden.

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 werden.

Ausblick

  1. Aufgaben
    • Reparieren des Würfels
    • Testen der vorhandenen seriellen Schnittstelle
  2. 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)