ADC/DAC
Unter ADC versteht man eine Funktion, die analoge Signale zu Digitalen umwandelt. Genau das Gegenteil wird mit dem DAC erzielt. Ein digitales Signal wird zu einem Analogen übersetzt. Die Aufgabe der DAC/ADC Gruppe, bestehend aus den Mitgliedern Mehdi , Ahmed B, Ahmed M und mit freundlicher Unterstützung von Miriam Zeineddine, war es den Digital-Analog-Umwandler, sowie den Analog-Digital-Umwandler zu realisieren und die Werte des Infrarotsensors zu verarbeiten.
Zunächst haben wir Überlegungen getroffen, wie wir den DAC realisieren möchten. Hierbei haben sich verschiedene Schaltungsmöglichkeiten erwiesen. Wir haben uns für die Realisierung des Digital-Analog-Umwandlers als R2R-Widerstandsnetzwerk entschieden, weil es einfacher war, dieses Netzwerk zu realisieren. Hierbei sind wir auf verschiedenen Internetseiten fündig geworden. Wir haben uns für die R2R Realisierung von https://de.wikipedia.org/wiki/R2R-Netzwerk entschieden. In Abbildung 2 sei die Schaltung schematisch dargestellt.
Zunächst haben wir das R2R Netzwerk mit ca. R=15kΩ und 2R=30kΩ auf dem Steckbrett realisiert. Nachdem der DAC realisiert worden ist, blieb es uns nur noch übrig die Schaltung mit einem Testdurchlauf auf Funktionalität zu prüfen. Danach wurde der Mikrocontroller ans Steckbrett gesteckt und mittels USB-Anschluss an den PC verbunden. Die jeweiligen Bits wurden mit den Pins des Mikrocontrollers auf dem Steckbrett verbunden. Mit der Programmierumgebung Atmel Studio 7 haben wir eine Testdatei erstellt und das Programm mittels Programmer auf den Mikrocontroller geladen. Aufgrund des Widerstandsnetzwerks haben die LEDs wie gewünscht geblinkt.
Der DAC wurde benötigt, um der Gruppe „Klangerzeugung“ die Noten als analoges Signal weiterzugeben. Dieser wandelt das digitale Signal der Noten in ein analoges Signal um. Näheres dazu im nächsten Abschnitt.
Der Aufbau dieser Schaltung sei in Abbildung 3 dargestellt:
Als nächstes war es unsere Aufgabe mittels ADU den Infrarotsensor zu realisieren. Infrarotsensoren erfassen Strahlungen, die sich in einem Bereich befinden, der sich unterhalb dem vom menschlichen Auge wahrnehmenden Rotlicht befindet. Wir haben als Infrarotsensor den Distanzsensor GP2-0215k verwendet. Je nach Entfernung vom Sensor leitet der Distanzsensor eine unterschiedliche Spannung an den ATmega32 weiter. Das Verhalten der Spannung in Abhängigkeit der Distanz ist in Abbildung 4 einzusehen. Es werden verschiedene Spannungsabfälle erzeugt, die dann verschiedenen Tönen zugewiesen werden. Bei einer Entfernung kleiner als 20 cm und größer als 150 cm entfällt der Ton. Der ATmega32 beinhaltet einen Analog Digital Umwandler. Damit wird unser analoges Signal, welches aus dem Infrarotsensor kommt in ein 10 Bit digitales Signal umgewandelt. Dessen Auflösung haben wir in 14 Bereiche unterteilt. Wir haben 12 Töne zur Verfügung und bei dem ersten sowie letzten Bereichen soll kein Ton erzeugt werden.
Um zwischen den 12 Bereichen unterscheiden zu können, haben wir uns für eine switch-case Anweisung Anweisung entschieden. Dies erleichtert den Programmieraufwand und verbessert die Lesbarkeit des Codes.
Folgende Methoden wurden implementiert:
- void InitADC()
- uint16t ReadADC(void)
- uint16t CreatADCResult(void)
- uint8t CreatNoteFromADCResult(uint16t adcresult)
- uint8t CreateDistanceFromADCResult(uint16t adcresult)
- void NoteToDAC(uint8t Note)
Der Code ist im Codeverzeichnis zu sehen.
Um für die Klangerzeugungsgruppe die ausgegebenen Noten als analoges Signal weiterzuleiten, verwenden wir den zu Beginn erwähnten DAC.
Der Code ist im Codeverzeichnis zu sehen.
Nachdem der Schaltplan in Eagle fertiggestellt wurde, konnte mit der Erzeugung des Layouts begonnen werden. Hierbei musste darauf geachtet werden, dass der Mikrocontroller auf der Unterseite der Platine verbunden wird. Außerdem haben sich die Widerstände aus dem R2R-Netzwerk hervorragend dafür geeignet, Brücken zu bilden, um die Leiterbahnen besser platzieren zu können. Da zunächst die Pinbelegung sehr ungünstig gewählt worden war, konnte das Layout nicht optimal erstellen werden. Der Grund war, dass die Leitbahnen sich sonst zu oft gekreuzt hätten und somit so viele Vias verwendet werden mussten. Um dies zu vermeiden, wurden die Pinbelegung des SV1-Steckers nachträglich verändert.
Das resultierende Layout ist in Abbildung 6 und 7 dargestellt.
Nachdem die Platine fertig bestückt war, wurde sie auf Funktionalität geprüft. Es wurden Fehler in der Hardware, sowie in der Software festgestellt. Es traten Hardwarefehler durch Fehler beim Ätzen und einige Kurzschlüsse durch ungünstiges Löten, sowie durch kalte Lötstellen auf. Diese wurden jedoch glücklicherweise alle gefunden und behoben. Unter kalten Lötstellen versteht man, eine scheinbare richtig gelötete Stelle, die jedoch zu kurzem Anwenden von Wärme nicht richtig haften geblieben ist. Da optisch betrachtet dennoch eine Verbindung vorliegt, ist es umso schwieriger die Fehlerquellen herauszufiltern.
Zusammenfassung
Zusammenfassend lässt sich sagen, dass unsere vorgenommenen Ziele erreicht worden sind. Wir haben den DAC auf dem Steckbrett erfolgreich realisieren können. Zudem haben wir mittels der Programmierungsumgebung Atmel Studio 7 den Mikrocontroller programmiert. Mithilfe des ADCs konnten wir schließlich die Werte des Infrarotsensors auslesen.