{"id":98,"date":"2018-07-15T14:18:39","date_gmt":"2018-07-15T12:18:39","guid":{"rendered":"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/?page_id=98"},"modified":"2018-07-15T21:14:03","modified_gmt":"2018-07-15T19:14:03","slug":"mikrocontroller","status":"publish","type":"page","link":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/gruppe-5-steuerung\/mikrocontroller\/","title":{"rendered":"Mikrocontroller"},"content":{"rendered":"<div class=\"page\" title=\"Page 89\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p>F\u00fcr die Steuerungsgruppe war eine der ersten Fragen, welcher Mikrocontroller sich gut eignete. Die Entscheidung fiel dabei auf Empfehlung der Projektlabor-Tutoren auf den ATmega32-16PU.\u00a0Hierf\u00fcr sprach unter Anderem der interne ADC, der genutzt wurde, um die analogen Signale der Sensoren der anderen Kleingruppen auszuwerten und entsprechend zu verarbeiten.\u00a0Wichtig bei der Erstellung der Schaltung war, die analogen Signale der anderen Gruppen an Port A des Mikrocontroller zu legen, da nur dieser \u00fcber einen Analog-Digital Umsetzer verf\u00fcgte, mit dem die anliegenden Spannungen ausgelesen werden k\u00f6nnen. Daher wurden diese Signale, die auf dem Bus auf jeder zweiten Leitung zwischen 7 und 17 lagen, mit den Pins PA0-PA5 verbunden. Alle anderen Signale auf dem Bus lagen in digitaler Form vor und konnten daher beliebig an die Pins des Mikrocontrollers gelegt werden. Des weiteren \u00fcber die digitalen Eing\u00e4nge verbunden wurde der Verbindungsstecker zu der Platine des Displays. Als Verbindungsstecker dient ein Wannenstecker der Art con-ml ML 16L. Au\u00dferdem wurde in die Schaltung ein Quarz verbaut um den Mikrocontroller mit 16 MHz zu takten. Um f\u00fcr den Fall eines Kurzschlusses (beispielsweise beim L\u00f6ten) vorzusorgen, wurde in Reihe vor die digitalen Ausg\u00e4nge kleine Widerst\u00e4nde als Schutz verbaut. Dimensioniert wurden diese nach dem Ohm\u2019sche Gesetz. Da die Eingangsspannung bei 5V liegt und der maximal vertr\u00e4gliche Strom der Pins laut dem Datenblatt 40mA betr\u00e4gt m\u00fcssen die Widerst\u00e4nde mindestens einen Wert von 125\u03a9 haben.<\/p>\n<p><a href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-content\/uploads\/sites\/22\/2018\/07\/busverteilung1.jpg\"><img loading=\"lazy\" class=\"alignnone wp-image-303 size-full\" src=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-content\/uploads\/sites\/22\/2018\/07\/busverteilung1.jpg\" alt=\"busverteilung\" width=\"1162\" height=\"1058\" srcset=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-content\/uploads\/sites\/22\/2018\/07\/busverteilung1.jpg 1162w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-content\/uploads\/sites\/22\/2018\/07\/busverteilung1-300x273.jpg 300w, https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-content\/uploads\/sites\/22\/2018\/07\/busverteilung1-1024x932.jpg 1024w\" sizes=\"(max-width: 1162px) 100vw, 1162px\" \/><\/a><\/p>\n<div class=\"page\" title=\"Page 90\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<h1>Platinenlayout<\/h1>\n<div class=\"page\" title=\"Page 90\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p>Das Hauptaugenmerk der Mikrocontroller Gruppe lag auf der Programmierung eines lauff\u00e4higen Programmes welches Messdaten der Sensoren auswertet und entsprechende auf diese reagiert.<br \/>\nUm den Mikrocontroller Messdaten zuzuf\u00fchren und mit den Platinen der anderen Grup- pen verbinden zu k\u00f6nnen wurde ein entsprechendes Board erstellt. Die auf dem Board befindliche elektrische Schaltung sollte den Mikrocontroller mit Strom versorgen, die Pins des Mikrocontrollers mit dem Bus-Stecker verbinden und \u00fcber einen Anschluss f\u00fcr den Displays verf\u00fcgen. Zudem sollte ein Reset-Knopf integriert werden durch den der Mikrocontroller neu gestartet werden kann. Die analogen Signale wurden so gelegt, dass sie am ADC anliegen, die Belegung der anderen Pins richtete sich nach der Position der Bauteile auf der Platine wodurch Kreuzungen von Leiterbahnen vermieden werden konnten. Als Vorlage f\u00fcr die Stromversorgungsschaltung mit integriertem Reset-Button diente eine Platine aus dem Projekt-Labor die ebenfalls mit dem ATmega32-16PU arbeitete.\u00a0Die zu dieser Schaltung zugeh\u00f6rigen Bauteile wurden m\u00f6glichst nah an die entsprechenden Pins des Mikrocontrollers gesetzt, um diesen pr\u00e4zise zu takten und versorgen zu k\u00f6nnen. Besonders wichtig ist die N\u00e4he des 100nF-Kondensators zur Stromversorgung, da dieser durch seinen Auf- und Entladevorgang dazu dient die hochfrequenten St\u00f6rschwingungen zu gl\u00e4tten. Als zweiter Abblockkondensator wirkt der Elektrolytkondensator, der auf dem gleichen Prinzip aufbauend dazu dient gr\u00f6\u00dfere Spannungseinbr\u00fcche der Versorgungsspannung abzufangen. Ohne diese best\u00e4nde die Gefahr von Spannungsschwankungen, die sich negativ auf die gesamte Schaltung auswirken w\u00fcrden. Die Widerst\u00e4nde an den digitalen Ausg\u00e4ngen sch\u00fctzen den Mikrocontroller im Falle eines Kurzschlusses, da die Kurzschlusssicherung gegen L\u00f6tfehler erst nach den Widerst\u00e4nden greift. Der 16-polige Anschluss f\u00fcr den Display wurde an Port B und Port D des Mikrocontrollers angeschlossen wobei Pin 1-11 des Steckers f\u00fcr digitale Signale, Pin 13 f\u00fcr die Versorgungsspannung und Pin 15 als Masse festgelegt wurde. Da von dem Busstecker nur 32 Pins ben\u00f6tigt wurden und nicht die 64 wurden die einander gegen\u00fcberliegenden Pins jeweils kurzgeschlossen.<\/p>\n<p><span style=\"color: #0000ff\"><a style=\"color: #0000ff\" href=\"http:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-content\/uploads\/sites\/22\/2018\/07\/Beschaltung-des-Mikrocontrollers.pdf\">Beschaltung des Mikrocontrollers<\/a><\/span><\/p>\n<div class=\"page\" title=\"Page 91\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<div class=\"page\" title=\"Page 91\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<h1>Programmierung<\/h1>\n<div class=\"page\" title=\"Page 91\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p>Um auf die Programmierung des \u03bcC einzugehen, muss zun\u00e4chst betrachtet werden, was der Anspruch an das Endprojekt war. Wirft man einen Blick auf die Busbelegung, so bekommt man einen groben Eindruck der Schnittstellen, die es galt in die Steuerung einzubinden.\u00a0Die Grundidee war, \u00fcber den Mikrocontroller die analogen Eingangssignale auszuwerten und den momentanen Wert auf dem Display auszugeben. Dort w\u00fcrde neben dem Momentanwert ein manuell eingestellter Sollwert angezeigt. Je nachdem ob dieser kleiner oder gr\u00f6\u00dfer ist w\u00fcrde folglich \u00fcber die digitalen Pins des Mikrocontrollers das entsprechende digitale Signal angesteuert.\u00a0Beispielsweise wird der Feuchtigkeitssensor ausgelesen und der Wert auf dem Display angezeigt. Ebenfalls auf dem Display sichtbar w\u00e4re der vom Bediener eingestellte Sollwert. Angenommen dieser \u00fcbersteigt den Momentanwert, so w\u00fcrde anschlie\u00dfend der Tank angesteuert werden und das eine Bew\u00e4sserung zur Folge haben.\u00a0Der erste Schritt in der Programmierung bestand folglich darin, die an Pin A angeschlossenen analogen Signale in Digitale zu konvertieren. Da der ADC nicht mehrere Eing\u00e4nge\u00a0gleichzeitig konvertieren kann, diente eine Funktion mit einer switch-case-Anweisung\u00a0dazu, dass die insgesamt 6 Werte nacheinander angesteuert, und konvertiert werden. In\u00a0der main-Funktion wurden die Eing\u00e4nge alle einmal ausgelesen und in einem Array abgespeichert. Anschlie\u00dfend werden Umrechnungsfaktoren f\u00fcr Temperatur (\u25e6C) , Feuchtigkeit\u00a0( g ), F\u00fcllstand (l) und Helligkeit ( lm ) auf die jeweiligen Daten angewandt. Mit Hilfe eines Pointers wurden diese Werte an die Display-Teilgruppe weitergegeben. Ein weiterer Pointer diente dazu, den auf dem Display eingestellten Sollwert an unsere Teilgruppe weiterzugeben, um diesen mit dem Momentanwert vergleichen zu k\u00f6nnen. Je nachdem ob der Momentanwert den Sollwert \u00fcber- oder unterschreitet, werden entsprechende digitale Ausg\u00e4nge gesetzt bzw. gecleart. Eine Problematik bietet dabei noch der Fall, dass der Momentanwert genau um den Sollwert schwankt und ihn in kurzen Zeitr\u00e4umen wiederholt \u00fcber- und unterschreitet. Daher wurde in einer if-Bedingung noch eine Art Schmitt-Trigger realisiert, der zur Folge hat, dass nicht sofort das Erreichen des Sollwertes den Schaltvorgang hervorruft. Stattdessen gibt es eine Grenzzone in der der momentane Zustand aufrecht erhalten wird und erst unter- bzw. \u00fcberschreiten dieser Grenzen hat ein Umschalten zur Folge.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>F\u00fcr die Steuerungsgruppe war eine der ersten Fragen, welcher Mikrocontroller sich gut eignete. Die Entscheidung fiel dabei auf Empfehlung der Projektlabor-Tutoren auf den ATmega32-16PU.\u00a0Hierf\u00fcr sprach unter Anderem der interne ADC, der genutzt wurde, um die analogen Signale der Sensoren der &hellip; <a href=\"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/gruppe-5-steuerung\/mikrocontroller\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":72,"featured_media":0,"parent":39,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/pages\/98"}],"collection":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/users\/72"}],"replies":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/comments?post=98"}],"version-history":[{"count":13,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/pages\/98\/revisions"}],"predecessor-version":[{"id":304,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/pages\/98\/revisions\/304"}],"up":[{"embeddable":true,"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/pages\/39"}],"wp:attachment":[{"href":"https:\/\/service.projektlabor.tu-berlin.de\/wordpress\/zuchthaus\/wp-json\/wp\/v2\/media?parent=98"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}