{"id":109,"date":"2015-12-24T19:25:51","date_gmt":"2015-12-24T18:25:51","guid":{"rendered":"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/?page_id=109"},"modified":"2016-01-26T13:03:02","modified_gmt":"2016-01-26T12:03:02","slug":"logik","status":"publish","type":"page","link":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/gruppen\/sound\/logik\/","title":{"rendered":"Control Logic"},"content":{"rendered":"<h2 style=\"text-align: justify\"><em>Herangenehsweise und Schaltungsideen<\/em><\/h2>\n<p style=\"text-align: justify\">Unsere Aufgabe ist es Steuerspannungen f\u00fcr die Oszillator Schaltung so zu generieren,\u00a0dass diese in T\u00f6ne bzw. Melodien umgewandelt werden konnen. Mit dieser Aufgabenstellungergaben sich die folgenden Fragen:<\/p>\n<ul>\n<li style=\"text-align: justify\">Wie soll unterschieden werden, welche\/r Melodie\/Ton abgespielt werden soll ?<\/li>\n<li style=\"text-align: justify\"><span style=\"line-height: 1.71429;font-size: 1rem\">Wie sollen die Steuerspannungen generiert werden ?\u00a0<\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify\">F\u00fcr die Beantwortung der ersten Frage ben\u00f6tigten wir zuerst eine konkrete Vorstellung von\u00a0den Signalen welche unserer Schaltung vermitteln sollten, was passieren soll. Diesbez\u00fcglich\u00a0einigten wir uns mit den hierf\u00fcr verantwortlichen Kleingruppen (Eingabe und Spiellogik) auf\u00a0einfache Bit Signale. Mit diesem Wissen konnten wir uns genauer \u00fcberlegen wie die Unterscheidung\u00a0der einzlenen Zust\u00e4nde ablaufen k\u00f6nnte. Wir entwarfen hierf\u00fcr zunachst ein\u00a0Schaltnetz, welches je nach anliegendem Eingangszustand wie ein Multiplexer agieren und\u00a0so eine Steuerspannung ausw\u00e4hlen sollte. Dieser Entwurf wurde allerdings verworfen, da das\u00a0Schaltnetz in etwa den Umfang von zwei doppelseitig bestuckten Europlatinen gehabt h\u00e4tte\u00a0und somit sehr aufw\u00e4ndig zu best\u00fccken gewesen w\u00e4re und es au\u00dferdem deutlich unflexibler\u00a0als ein Mikrocontroller gewesen w\u00e4re. Genau aus diesem Grund entschieden wir uns letztlich\u00a0f\u00fcr einen solchen.<\/p>\n<p style=\"text-align: justify\">Die ben\u00f6tigten Steuerspannungen wollten wir mit einem mit verschiedenen Spannungsteiler\u00a0erzeugen und anschlie\u00dfend an einen Ausgang weitergeben. Dabei ergab sich die folgende\u00a0Frage:<\/p>\n<ul>\n<li style=\"text-align: justify\">Welches Bauteil w\u00e4hlt zwischen den zu Verf\u00fcgung stehenden Spannungen und schaltet diese an den Ausgang weiter ?<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Unser erste Gedanke galt Mosfet Transistoren welche wir als Schalter benutzen wollten.\u00a0Diese k\u00f6nnten wir mit dem Mikroprozessor ansteuern. Eine andere Idee war es einen Demultiplexer\u00a0zu verwenden welche je nach dem wie seine Steuerleitungen liegen eine an ihm<br \/>\nanliegende Spannung an den Ausgang weiterschaltet. Wir hielten den Demultiplexer f\u00fcr die\u00a0elegantere L\u00f6sung, da dieser weniger Steuerleitungen vom Mikroprozessor gesetzt bekommen\u00a0m\u00fcsste (je Mosfet w\u00e4re eine Schaltung ben\u00f6tigt worden).<\/p>\n<p style=\"text-align: justify\">Zur Vermeidung von Schwankungen der Versorgungsspannung, welche letztlich in einem Variieren der Frequenz eines Tones resultiert h\u00e4tten, riet uns unser Tutor noch dazu einen\u00a0Spannungswandler in die Schaltung zu integrieren. Zus\u00e4tzlich w\u00e4ren bei unserer momentanen\u00a0Schaltungsidee die Ausgangsspannungen nicht belastbar gewesen, was denkbar ung\u00fcnstig f\u00fcr\u00a0alle von den Steuerspannungen Gebrauch machenden Schaltungen gewesen w\u00e4re. Deswegen\u00a0entschieden wir uns noch einen Operationsverst\u00e4rker in die Schaltung mit einzubauen. Damit\u00a0waren die Entscheidungen \u00fcber alle Kernelemente getroffen. Es sei jedoch gesagt, dass diese\u00a0Entscheidungen zumeist w\u00e4hrend des Schaltungsentwurfes und nicht alle im Voraus getroffen\u00a0worden waren.<\/p>\n<h2 style=\"text-align: justify\"><em>Schnittstellen<\/em><\/h2>\n<p style=\"text-align: justify\">Damit aus den, im vorherigen Abschnitt geschilderten, Ideen eine Schaltung entworfen\u00a0werden konnte, ben\u00f6tigten wir konkretes Wissen \u00fcber die Schnittstellen, unserer Schaltung\u00a0mit denen von anderen Gruppen. Wir hatten uns zu Beginn auf Bits als Signale bzgl. des\u00a0jeweils nliegenden Zustandes geeinigt aber nicht auf eine konkrete Anzahl an Bitleitungen\u00a0sowie eine Codierung der einzelnen Bits. Des Weiteren musste gekl\u00e4rt werden welche Versorgungsspanungen\u00a0unsere Bauteile ben\u00f6tigen w\u00fcrden. Die Kl\u00e4rung ergab die in der folgenden\u00a0Tabelle aufgef\u00fchrte Bitcodierung, gleichzeitig wurde die Anzahl der Bits welche wir von der\u00a0Spiellogik erhalten wurden auf 3 und die, welche wir von der Eingabe erhalten werden w\u00fcrden,\u00a0auf 4 festgelegt.<\/p>\n<p style=\"text-align: center\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/Codierung.png\"><img loading=\"lazy\" class=\"size-medium wp-image-407 aligncenter\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/Codierung-300x83.png\" alt=\"Codierung\" width=\"300\" height=\"83\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/Codierung-300x83.png 300w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/Codierung-624x172.png 624w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/Codierung.png 941w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Tabelle 1: Codierung<\/p>\n<p style=\"text-align: justify\">Zu den in der Tabelle genannten Zust\u00e4nden sei noch folgendes gesagt. Die Zust\u00e4nde\u00a0&#8222;Ton1&#8220;\u00a0bis<br \/>\n&#8222;Ton4&#8220; stehen f\u00fcr einzelne T\u00f6ne, von denen jeder je einem Buzzer zugeordnet\u00a0wird. Der Zustand\u00a0&#8222;Lose&#8220; steht f\u00fcr einen Ton welcher abgespielt werden soll, sobald ein Spiel\u00a0endet. Der Zustand\u00a0&#8222;An&#8220; beschreibt eine Melodie welche beim Anschalten des Ger\u00e4tes abgespielt\u00a0werden soll. Liegt Zustand\u00a0&#8222;Highscore&#8220; an so wird von der Spiellogik eine Melodie welche\u00a0das Setzen eines neuen Highscores charakterisiert, gefordert. Der Zustand\u00a0&#8222;Silent&#8220; beschreibt\u00a0nun den Fall, f\u00fcr den unsere Schaltung nichts tun soll.\u00a0Was die Versorgungsspannung angeht, so stellte, die uns daf\u00fcr zust\u00e4ndige Gruppe, zwei Spannung\u00a0von je 5 bzw. 10 V zur Verf\u00fcgung.<\/p>\n<p style=\"text-align: justify\">Zus\u00e4tzlich zu den\u00a0&#8222;globalen&#8220; Schnittstellen haben wir noch eine interne Schnittstelle, \u00fcber\u00a0welche der Oszillator Platine zwei Signale (Tonenable und VCO) \u00fcbergeben werden.<\/p>\n<h2 style=\"text-align: justify\"><em>Schaltungsentwurf<\/em><\/h2>\n<p style=\"text-align: justify\">Mit dem Wissen \u00fcber die elektrischen Bauteile, welche wir verwenden wollten, ergaben\u00a0sich konkretere Fragen \u00fcber deren Beschaltung. Beispielsweise ben\u00f6tigten alle von uns verwendeten\u00a0ICs, Entkoppelkondensatoren. Nachdem die Beschaltung aller Bauteile gekl\u00e4rt war,\u00a0konnte der Schaltplan\u00a0&#8222;aufgesetzt&#8220; werden. Das Resultat war das in dem folgenden Bild dargestellte:<\/p>\n<p style=\"text-align: center\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FresherPlanYo.png\"><img loading=\"lazy\" class=\"size-medium wp-image-411 aligncenter\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FresherPlanYo-300x170.png\" alt=\"FresherPlanYo\" width=\"300\" height=\"170\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FresherPlanYo-300x170.png 300w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FresherPlanYo-1024x580.png 1024w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FresherPlanYo-624x354.png 624w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FresherPlanYo.png 1549w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Abbildung 1: Sound Logik Schaltplan<\/p>\n<p style=\"text-align: justify\">Zum genaueren Verst\u00e4ndnis des Schaltplans seien an dieser Stelle noch ein paar Worte\u00a0erw\u00e4hnt. In der Ecke oben links befindet sich ein 6-Pin ISP Stecker, dieser dient als Schnittstelle\u00a0zum Austausch von Signalen zwischen den Sound Platinen. Rechts daneben befindet\u00a0sich der bereits erw\u00e4hnte Spannungsregler (LM7805), welcher die Versorgungsspannung des\u00a0sich rechts neben ihm befindlichen Spannungsteilers gl\u00e4ttet. Der Spannungsteiler besteht aus\u00a0f\u00fcnf Potentiometern, dies ist praktischer als fixe Widerst\u00e4nde, da so noch nachtr\u00e4glich\u00a0&#8222;gestimmt&#8220;\u00a0werden kann. Wieder weiter rechts davon, ist ein Block aus, f\u00fcr die Schaltung nicht\u00a0relevanten, Operationsverstarkern zu sehen. Diese sitzen auf demselben IC wie der von uns\u00a0verwendete Operationsverst\u00e4rker. Damit die unbeschalteten OPVs nicht hin- und herschwingen\u00a0und so die Haltbarkeit des ICs deutlich verringern, wurden diese noch mit der Masse\u00a0Leitung verbunden. Der von uns verwendete IC ist ganz links zu finden. Die Beschaltung mit\u00a0zwei in Reihe geschalteten Widerst\u00e4nden f\u00fchrt zu einer Verst\u00e4rkung um den Faktor 2, welche\u00a0erforderlich war um Steuerspannungen zu erzeugen, welche in den Ansteuerungsbereich des\u00a0Oszillators voll ausnutzten. Der Demultiplexer (74hc\/hct4054) ist links mittig platziert. Zu\u00a0seiner Beschaltung l\u00e4sst sich nicht viel sagen, au\u00dfer das er wie alle anderen ICs mit einem\u00a0Entkoppelkondensator best\u00fcckt ist, welcher zwischen seinem Massen und Versorgungsspannungspin\u00a0geschaltet ist. Das letzte Bauteil stellt den von uns verwendeten Mikrocontroller\u00a0(Atmega8 -16p) dar. Ihm zugeh\u00f6rig ist noch eine, sich im Schaltplan unter ihm befindliche,\u00a06-Pin Schnittstelle \u00fcber welcher sich der Controller programmieren l\u00e4sst. Zu guter Letzt ist\u00a0am linken Rand noch die\u00a0&#8222;globale&#8220; Schnittstelle zu sehen, \u00fcber welchen unsere Bauteile Ihre\u00a0Versorgungsspannungen etc. erhalten.<\/p>\n<h2 style=\"text-align: left\"><em>Testaufbau<\/em><\/h2>\n<p style=\"text-align: justify\">Der Testaufbau wurde wie \u00fcblich auf einem Steckbrett verwirklicht. Hierbei sind wir wie folgt\u00a0schrittweise vorgegangen:<\/p>\n<ul>\n<li><strong>Beschaltung des Microcontrollers<\/strong><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Wir beschalteten zun\u00e4chst mit die n\u00f6tigen Pins des Microcontrollers zur Programmierung\u00a0und legten die Versorgungsspannung U_V = 5V an, danach f\u00fchrten wir die\u00a0Programmierung durch.\u00a0Zur Simulation der Eingangssignale (insgesamt 7 bit) benutzten wir einen 8-fachen\u00a0Schalter, um die Ausgangssignale (insgesamt 4 bit) zu verdeutlichen wurden 4 LEDs\u00a0angesteuert.<\/p>\n<ul>\n<li style=\"text-align: justify\"><strong>Erg\u00e4nzung des A\/D-Wandlers<\/strong><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Der n\u00e4chste Schritt beinhaltete die Einbindung des A\/D-Wandlers und der Steuerspannungsteiler.\u00a0Das 5 T\u00f6ne erzeugt werden mussten, wurden 5 Potentiometer von\u00a0jeweils 10 kOhm auf Eingang 1-5 des A\/D-Wandlers geschaltet, Eingang 0 musste\u00a0aufgrund des Programms des Microcontrollers freigelassen werden.\u00a0Die Eingangssignale wurden erneut per Schalter erzeugt, die Ausgangsspannungen wurden\u00a0dieses mal direkt gemessen, um sie den vorher eingestellten Potentiometer zuordnen\u00a0zu k\u00f6nnen. Lediglich das TonEnable-Bit wurde erneut per LED visualisiert.<\/p>\n<ul>\n<li style=\"text-align: justify\"><strong>Linearregler und Operationsverst\u00e4rker<\/strong><\/li>\n<\/ul>\n<p style=\"text-align: justify\">Zuletzt mussten nur noch der Linearregler zur Gl\u00e4ttung\/Stabilisierung der Versorgungsspannung der Potentiometer und der Operationsverst\u00e4rker zur Gew\u00e4hrleistung\u00a0einer konstanten Ausgangsleistung hinzugef\u00fcgt werden.<\/p>\n<p style=\"text-align: justify\">Nachdem unsere Schaltung auf dem Steckbrett realisiert wurde, konnten wir die drei Untergruppen\u00a0Logik, Oszillator und Verst\u00e4rker verschalten und mittels eines Lautsprechers die\u00a05 T\u00f6ne und 2 Melodien ausgeben.<\/p>\n<h2 style=\"text-align: justify\"><em>Quellcode<\/em><\/h2>\n<p>Der Programmcode kann in folgende Bl\u00f6cke zusammengefasst werden:<\/p>\n<ol>\n<li>Defines<\/li>\n<\/ol>\n<p><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/defines.png\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-408\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/defines-143x300.png\" alt=\"defines\" width=\"143\" height=\"300\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/defines-143x300.png 143w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/defines.png 277w\" sizes=\"(max-width: 143px) 100vw, 143px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Mithilfe dieser Gruppe k\u00f6nnen Bezeichnungen f\u00fcr den Verlauf des Programmes festgelegt\u00a0werden, die eine nachtr\u00e4gliche Korrektur erleichtern. Au\u00dferdem werden Funktionen\u00a0und ben\u00f6tigte Parameter aufgerufen, Hilfvariablen (state1 und state2) deklariert,\u00a0welche f\u00fcr die sp\u00e4tere if-Verzweigung von Nutzen sind, und Hilfskonstanten f\u00fcr Berechnungen\u00a0erzeugt.<\/p>\n<p style=\"text-align: justify\">2. \u00a0Main- und while-Funktion<\/p>\n<p style=\"text-align: justify\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/mainundwhile.png\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-412\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/mainundwhile-300x121.png\" alt=\"mainundwhile\" width=\"300\" height=\"121\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/mainundwhile-300x121.png 300w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/mainundwhile-624x252.png 624w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/mainundwhile.png 843w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Im main-Abschnitt des Programms werden Ein- und Ausgangspins deklariert sowie interne\u00a0Pull-Up Widerstande aktiviert.\u00a0Nun wird die while-Schleife aufgerufen und die Hilfsvariablen werden initialisiert. Die an\u00a0den Eingangspins anliegenden Zust\u00e4nde werden nun ausgelesen, mithilfe der Hilfskonstanten\u00a0verrechnet und anschlie\u00dfend in den Hilfsvariablen gespeichert. Danach wird\u00a0eine kurze Verz\u00f6gerung ausgef\u00fchrt um der Spiellogik die M\u00f6glichkeit zu geben, bei\u00a0falschem Knopfdruck den &#8222;Lose&#8220; Ton abzuspielen.<\/p>\n<p style=\"text-align: justify\">3. \u00a0T\u00f6ne durch Logik<\/p>\n<p style=\"text-align: justify\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/erstesif.png\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-409\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/erstesif-300x258.png\" alt=\"erstesif\" width=\"300\" height=\"258\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/erstesif-300x258.png 300w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/erstesif.png 623w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">In diesem Block sind die &#8222;T\u00f6ne&#8220; definiert. Per if-Bedingung wird gepr\u00fcft, ob die Spiellogik\u00a0einen Ton oder eine Melodie spielen m\u00f6chte, mit der switch-Funktion und der\u00a0zuvor berechneten Hilfsvariable state1 wird der passende &#8222;case&#8220; ausgew\u00e4hlt.\u00a0Nun werden im jeweiligen &#8222;case&#8220; die passenden Ausg\u00e4nge gesetzt, f\u00fcr 500ms gehalten\u00a0und wieder auf null gesetzt.\u00a0Anschlie\u00dfend springt das Programm wieder an den Anfang der while-Schleife und es\u00a0werden die state-Variablen neu berechnet.<\/p>\n<p style=\"text-align: justify\">4. \u00a0Melodie durch Logik<\/p>\n<p style=\"text-align: justify\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/melodien.png\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-413\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/melodien-293x300.png\" alt=\"melodien\" width=\"293\" height=\"300\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/melodien-293x300.png 293w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/melodien-624x638.png 624w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/melodien.png 631w\" sizes=\"(max-width: 293px) 100vw, 293px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Dieser Block geh\u00f6rt noch zum Logik-Zweig der if-Verzweigung und erzeugt die Melodien.\u00a0Dies geschieht analog zur Tonerzeugung, nur werden die T\u00f6ne aus akustischen\u00a0Gr\u00fcnden halb so lang gehalten.<\/p>\n<p style=\"text-align: justify\">5. \u00a0T\u00f6ne durch Buzzer<\/p>\n<p style=\"text-align: justify\">Abschlie\u00dfend steht der if-Zweig f\u00fcr die Buzzer-T\u00f6ne, der lediglich aus den 4 &#8222;cases&#8220; der\u00a0Grundt\u00f6ne besteht. Allerdings haben diese eine eher un\u00fcbliche Bezeichnung, da state2\u00a0einen bin\u00e4ren Wert gespeichert hat, der aufgrund der Programmarchitektur erst an dritter\u00a0Stelle eine Zahl ungleich eins annehmen kann. Die f\u00fcr die &#8222;cases&#8220; bezeichnenden\u00a0Dezimalzahlen sind somit 7, 11, 13 und 14.<\/p>\n<p style=\"text-align: justify\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/zweitesif.png\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-414\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/zweitesif-300x269.png\" alt=\"zweitesif\" width=\"300\" height=\"269\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/zweitesif-300x269.png 300w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/zweitesif-624x560.png 624w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/zweitesif.png 626w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2 style=\"text-align: justify\"><em>Platine und Layout<\/em><\/h2>\n<p style=\"text-align: justify\">Bei allen, im Voraus gemachten, theoretischen \u00dcberlegung, z\u00e4hlt letztlich nur eine die\u00a0gestellten Aufgaben erf\u00fcllende, funktionierende Platine vorweisen zu k\u00f6nnen. Das f\u00fcr diese\u00a0ben\u00f6tigte Layout wird mit dem Program Eagle erstellt. Was nach einem einfachen Vorgang\u00a0klingt, war in der Praxis a\u00fc\u00dferst Nerven aufreibend, da einem die Funktionsweise des Programms\u00a0zu Beginn nicht gleich erschlie\u00dft, sodass es einige zeitaufw\u00e4ndige Anl\u00e4ufe bedurfte\u00a0bis unser Tutor mit dem Layout zufrieden war. Das Resultat ist in der folgenden Abbildung zu sehen:<\/p>\n<p style=\"text-align: justify\"><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FancyEagleLayoutYo.png\"><img loading=\"lazy\" class=\"size-medium wp-image-410 aligncenter\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FancyEagleLayoutYo-297x300.png\" alt=\"FancyEagleLayoutYo\" width=\"297\" height=\"300\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FancyEagleLayoutYo-297x300.png 297w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-content\/uploads\/sites\/13\/2015\/12\/FancyEagleLayoutYo.png 460w\" sizes=\"(max-width: 297px) 100vw, 297px\" \/><\/a><\/p>\n<p style=\"text-align: center\">Abbildung 2: Sound Logik Board<\/p>\n<h2 style=\"text-align: justify\"><em>Fertigung und Test<\/em><\/h2>\n<p style=\"text-align: justify\">Unser Eagle-Layout wurde mittels \u00c4tzung auf eine doppelseitigen Europlatine \u00fcbertragen.\u00a0Zwei Seiten waren deshalb notwendig, weil unter anderem durch die willk\u00fcrliche Verteilung\u00a0der Eingangspins des A\/D-Wandlers nur so sich \u00fcberkreuzende Leitungen vermieden werden\u00a0konnten. Somit mussten zus\u00e4tzlich zu den Bohrungen f\u00fcr die Bauteile auch welche f\u00fcr seitenwechselnde\u00a0Leiterbahnen gesetzt werden, die anschlie\u00dfend mit einem Draht und L\u00f6tzinn<br \/>\nleitend gemacht wurden.<br \/>\nUm die Funktion der Platine zu testen bauten wir wieder einen 8-fachen Schalter auf einem\u00a0Steckbrett auf und versorgten einen Test BUS mit den notwendigen Signalen und Spannungen,\u00a0jedoch mussten wir nach mehrmaligem Probieren den Schalter verwerfen und schalteten\u00a0nur direkt alle Eing\u00e4nge entweder auf 5V oder auf Masse, je nach dem was wir testen wollten.\u00a0Die Steuerspannung und das TonEnable-Bit lie\u00dfen wir direkt \u00fcber ein Oszilloskop anzeigen.\u00a0Der Test war hilfreich, da er uns erst auf zwei fehlerhafte L\u00f6tstellen aufmerksam machte, aber\u00a0auch zeigte, dass unser verwendeter Microcontroller vermutlich bei einem Kurzschluss kaputt\u00a0gegangen sein muss. Nachdem dieser ausgewechselt und programmiert war funktionierte die\u00a0Platine wie gew\u00fcnscht.<\/p>\n<h2 style=\"text-align: justify\"><em>Auftretende Probleme<\/em><\/h2>\n<ul>\n<li>Schalter<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Es gelang uns zuerst nicht, Eingangssignale zu erzeugen, da wir die Schalter fehlerhaft\u00a0verschaltet hatten.\u00a0<strong>L\u00f6sung:\u00a0<\/strong>Die Schalter mussten auf Masse anstatt auf Versorgungsspannung geschaltet\u00a0werden.<\/p>\n<ul>\n<li style=\"text-align: justify\">Programmierung 1<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Unser erster Programmentwurf war fehlerhaft, sodass der Microcontroller in der ersten\u00a0Stufe des Testaufbaus kein Ausgangssignal ausgab.\u00a0<strong>L\u00f6sung:<\/strong> Interne Pull-Up Widerst\u00e4nde mussten per Programmcode aktiviert werden.<\/p>\n<ul>\n<li style=\"text-align: justify\">Programmierung 2<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Unser Micorcontroller war zuerst nicht in der Lage, T\u00f6ne fur die zugeh\u00f6rigen simulierten\u00a0Buzzer-Eingangssignale zu erzeugen.\u00a0<strong>L\u00f6sung:<\/strong> Die verwendete Funktion switch(state2) rechnet die Variable state2 in eine\u00a0Dezimalzahl um und springt in den case, der durch diese Zahl markiert ist. Da\u00a0die Buzzer-Bits nicht wie bei der Logik an den ersten Stellen einer binaren Zahl stehen,\u00a0mussten wir jeweils die zugeh\u00f6rigen Dezimalzahlen ausrechnen und unsere cases\u00a0dementsprechend benennen.<\/p>\n<ul>\n<li style=\"text-align: justify\">A\/D-Wandler<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Unser erster A\/D-Wandler arbeitete nach der Beschaltung vollkommen willk\u00fcrlich bis\u00a0wir merkten, dass dieser nicht nur maximal 5V als Versorgungsspannung vertr\u00e4gt, sondern\u00a0auch nur maximal 5V durchschalten kann.\u00a0<strong>L\u00f6sung:<\/strong> Die Potentiometer wurden nun mehr mit 5V verschaltet und die urspr\u00fcngliche\u00a0Verst\u00e4rkung des Operationsverst\u00e4rkers wurde von 1 auf 2 erh\u00f6ht, um trotzdem eine\u00a0gen\u00fcgend gro\u00dfe Steuerspannung zu erhalten. Die 5V Spannung f\u00fcr die Potentiometer\u00a0wurden vom Linearregler erzeugt, der die 10V Versorgungsspannung auf 5V zuschneiden\u00a0musste. Die auftretende Verlustleistung liegt jedoch im zweistelligen mW-Bereich.<\/p>\n<ul>\n<li style=\"text-align: justify\">Operationsverst\u00e4rker<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Der urspr\u00fcngliche Operationsverst\u00e4rker konnte nicht den gew\u00fcnschten Verst\u00e4rkungsfaktor\u00a0von 1 gew\u00e4hrleisten.\u00a0<strong>L\u00f6sung:<\/strong> Es wurde ein anderes, leistungsst\u00e4rkeres Modell verwendet.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Herangenehsweise und Schaltungsideen Unsere Aufgabe ist es Steuerspannungen f\u00fcr die Oszillator Schaltung so zu generieren,\u00a0dass diese in T\u00f6ne bzw. Melodien umgewandelt werden konnen. Mit dieser Aufgabenstellungergaben sich die folgenden Fragen: Wie soll unterschieden werden, welche\/r Melodie\/Ton abgespielt werden soll ? Wie sollen die Steuerspannungen generiert werden ?\u00a0 F\u00fcr die Beantwortung der ersten Frage ben\u00f6tigten wir [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":0,"parent":105,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages\/109"}],"collection":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/comments?post=109"}],"version-history":[{"count":12,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages\/109\/revisions"}],"predecessor-version":[{"id":416,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages\/109\/revisions\/416"}],"up":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/pages\/105"}],"wp:attachment":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/stefan\/wp-json\/wp\/v2\/media?parent=109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}