======5x-S0-Hutschienencontroller Bauanleitung====== Der [[hutschienencontroller_v2|5x-S0-Hutschienencontroller]] kann selbst aus Einzelteilen zusammen gelötet werden. Da die Hardware nicht trivial ist, insbesondere im Eigenbau, soll hier eine detaillierte Anleitung helfen.\\ Es wird detailliert auf Zusammenbau und Tests eingegangen. Sollte einer der Tests fehlschlagen wird die Diagnose wegen der Fülle an möglichen Fehlern jedoch nicht weiter erläutert. =====Vorbereitungen und Hinweise===== ====Das Wichtigste am Anfang==== Wenn die 3 Platinen erstmal zusammen gelötet sind wird die Fehlersuche und -beseitigung wirklich unangenehm. Also Unbedingt zuerst die einzelnen Module testen und erst ganz am Schluss die 3 Platinen zusammen löten!\\ Nach jedem eingelöteten Bauteil sollte getestet werden ob es ungewollte Verbindungen oder nicht-Verbindungen gibt. Hierzu mit dem Multimeter benachbarte Pins auf Durchgang prüfen, und vom jedem Pin am zum nächstgelegenen Lötpad messen ob es wirklich eine (gewollte) Verbindung gibt. ===Ausrüstung=== Hier eine Liste mit den Dingen, die benötigt werden: * Zusammenbau * {{:hardware:controllers:5xs0-controller_preisliste1.pdf|Bauteile}} * Bestückungspläne aus dem [[hutschienencontroller_v2|Hauptartikel zum Controller]] * Lötkolben * Lötzinn (0,5mm) * Entlötlitzze (so dünn wie möglich) * Entlötpumpe * Flussmittel * Pinzette(n) * Lupe * Testen * Multimeter * Festspannungsquelle 3,3V (bei der sicheren Variante) * Messleitungen (selbsthaltend) * Einbau ins Gehäuse * Bohrmaschine * Kleber (falls ein YPort-Node angeschlossen werden soll) * Schraubendreher ===Tipps zum SMD-Löten=== Grundsätzlich hat jeder seine eigene bevorzugte Methode. Diese Tipps sind also auf keinen Fall ein Muss. ==Bauteile mit 2-3 Pins== - Eins der Lötpads mit Lötzinn versehen - Bauteil mit einer Seite an das verzinnte Pad löten (nun ist es fixiert) - Restliche Pins fest löten ==ICs== - Lötpads mit Flussmittel bestreichen - IC aufsetzen - Ganz sicher gehen dass das IC richtig herum sitzt - 2 Pins fest löten damit das IC fixiert ist (Lötbrücken hier noch ignorieren) - Lötzinn auf die Pins geben und in eine Richtung wegstreichen - Letzte Pins mit Entlötlitze von Lötbrücken befreien [[http://www.youtube.com/watch?v=c3iPpsnHKds|Hier]] gibt es dazu noch ein Video, welches das Ganze anschaulicher machen sollte. ====Spannungsversorgung und D/A-Eingänge==== {{:hardware:controllers:bau_spannungsversorgung_und_digital-analog_eingang.jpg|}} ===Einlöten der Bauteile=== Beim Einlöten der Bauteile ist entsprechend dem Bestückungsplan aus dem [[hutschienencontroller_v2|Hauptartikel]] vorzugehen. Bei ICs und Dioden ist die Einbaurichtung zu beachten. Auf den Bildern des [[hutschienencontroller_v2|Hauptartikels]] ist gut zu erkennen, wie die Plastikschiene der Stiftleiste sitzt. Die Unterkante der Schiene muss mit der Leiterplatte abschließen. Ggf. muss diese Schiene auf den Stiften verschoben werden.\\ Zum Testen mit der sicheren Variante (dringend empfohlen) **wird das Schaltnetzteilmodul erst nach dem testen eingebaut**. ===Testen der Funktionen=== Um im Ansatz sicher stellen zu können, dass kein Fehler auf der Platine ist, testen wir nun einige Funktionen. Es ist empfehlenswert zuerst mit dem Multimeter zu prüfen dass kein Kurzschluss in der Versorgungsspannung vorliegt. Dafür zwischen NETZ_L und NETZ_N, zwischen 3,3V und GND und zwischen 27V und GND auf Durchgang prüfen. ==Testaufbau 1 (sichere Variante)== Über ein Netzteil werden 3,3V direkt am 3,3V-Anschluss (Masse auf Masse.. klar) eingespeist. ==Testaufbau 2 (Achtung Netzspannung! Nur qualifizierte Nutzer!)== Bei Arbeiten an Netzspannung besteht Lebensgefahr. Diese Arbeiten dürfen nur von qualifizierten Fachkräften durchgeführt werden. Bei eingelötetem Netzteil werden die 230V Netzspannung direkt auf NETZ_L und NETZ_N gelegt. ==Messungen== Schlägt eine der Messungen fehl ist mit der Fehlersuche zu beginnen. - Versorgungsspannung je nach Testaufbau einschalten - Die rote LED sollte jetzt leuchten - Am 3,3V-Anschluss werden 3,3V gemessen - Am 27V-Anschluss werden 27V gemessen - An SIG6 - SIG12 werden jeweils 3,3V gemessen ====Grundleiterplatte mit Eingangsklemmen==== Achtung! Die Klemmenbezeichnungen KL1 bis KL5 stimmen nicht.\\ Siehe [[hardware:controllers:hutschienencontroller_v2|]] {{:hardware:controllers:bau_grundplatte_mit_s0_eingaengen.jpg}} ===Einlöten der Bauteile=== Auch hier wieder entsprechend dem Bestückungsplan und Einbaurichtung bei ICs und Dioden beachten. Außerdem ist es ratsam die Anschlüsse der Versorgungsspannungen vorher auf Kurzschlüsse gegen Masse zu prüfen.\\ Sollte keine Möglichkeit bestehen die Spannungsversorgung an den Eingängen zu befestigen müssen entsprechende Stiftleisten eingelötet werden. Um sie wieder auszulöten werden die Stifte an beiden Seiten so nah wie möglich an der Platine abgeschnitten. Dann wird der Pin auf der Bestückungsseite erhitzt bis das Lot auf der gegenüberliegenden Seite flüssig ist. Im Anschluss werden Stift und Lot von der gegenüberliegenden Seite mit einer Entlötpumpe abgesaugt. ===Testen der Funktionen=== ==Testaufbau== Mit Hilfe von Messleitungen vom Spannungsversorgungs-Modul oder von entsprechenden Netzteilen wird die Schaltung mit 3,3V und 27V an den entsprechenden Pins versorgt. Bei der Verwendung von Netzspannung muss diese nicht extra über dieses Modul geleitet werden sonder hängt direkt am Spannungsversorgungs-Modul. ==Messungen== - An den Anschlüssen D_SIG1 - D_SIG5 werden je 0V gemessen - An den Anschlüssen SIG1 - SIG5 werden je 3,3V gemessen - Zwischen den beiden Anschlüssen der Klemmen 1-5 werden je 27V gemessen - Mit einem beliebigen leitenen Gegenstand wird je eine Klemme immer wieder kurzgeschlossen - Am korrespondierenden SIG-Pin wird im Kurzschlussmoment kurzzeitig eine niedrigere Spannung gemessen (2. Nachkommastelle ist realistisch) - Am korrespondierenden D_SIG-Pin wird im Kurzschlussmoment kurzzeitig eine höhere Spannung gemessen (2. Nachkommastelle ist realistisch) Hinweis: Bei einem Fehler in Messung 1 und 2 sollte man zuerst die Masseanschlüsse der Optokoppler prüfen. ====Leiterplatte für den µC, das LAN, USB und die USART-Anschlüsse==== {{:hardware:controllers:bau_prozessor_leiterplatte_bestueckungsseite.jpg}} ===Einlöten der Bauteile=== {{ :hardware:controllers:ic_beispiel.jpg?|}}Auch hier wieder entsprechend dem Bestückungsplan und Einbaurichtung bei ICs und Dioden beachten.\\ Die 3,5mm-Klinkenbuchse passt so leider nicht ins Gehäuse und wird daher nicht verlötet. Sollte diese für einen YNode-Port benötigt werden wird sie später ins Gehäuse geklebt und mit einem Kabel verbunden.\\ Einige ICs haben auf dem Bestückungsplan eine vertikale Linie anstatt einem Punkt. Die entsprechenden ICs sind auf der Seite mit dem Strich abgerundet (siehe Bild). Außerdem ist es ratsam die Anschlüsse der Versorgungsspannungen vorher auf Kurzschlüsse gegen Masse zu prüfen.\\ ===Testen der Funktion=== 3,3V Spannungsversorgung muessen, wie bei den anderen Messungen, anliegen. Dieses Modul wird zu einem kleinen Teil elektrisch getestet. Danach wird mit einem ISP und Ethersex gearbeitet um alle Funktionen zu testen. Beim Erstellen dieser Anleitung wurde auf Linux mit avrdude und einem AVRISP MKII gearbeitet. Die Optionen "-c arvisp2 -P usb" müssen also unter Umständen angepasst werden. Es lassen sich natürlich nach Belieben andere Tools verwenden.\\ Zum kompilieren sollte der gcc Version 4.6.1 oder höher verwendet werden. Weitere Informationen über die benötigten Pakete gibt es hier im Wiki. ==Test der LEDs== Hier können nur die LEDs getestet werden. - Eine Messleitung an 3,3V anschließen - Einzeln mit D_SIG1 bis D_SIG5 verbinden - Es sollte die jeweils zugehörige LED leuchten ==Test der grundlegenden Funktionen== - Verbindung mit dem ISP herstellen - Aufbauen einer Verbindung mit dem Atmega sudo avrdude -c avrisp2 -P usb -p m1284p -v Wenn alles gut gegangen ist sollte die Device signature angezeigt werden und am Ende "Fuses OK" stehen.\\ Jetzt werden die Fuses so eingestellt, dass das Taktsignal vom ENC28J60 kommt, und nicht intern generiert wird. sudo avrdude -c avrisp2 -P usb -p m1284p -U lfuse:w:0xE0:m -U hfuse:w:0x99:m -U efuse:w:0xFF:m Jetzt wird erneut getestet ob eine Verbindung mit dem Atmega aufgebaut werden kann. sudo avrdude -c avrisp2 -P usb -p m1284p -v ==Vorbereitungen== Fuer den Test der S0-Eingänge benötigen wir 5 Testkanäle. Diese erstellt man am besten bei volkszaehler.org und kopiert sich die generierten UUIDs in eine Textdatei. Diese brauchen wir später beim kompilieren vom Ethersex. Sie werden später UUID_Test1 bis UUID_Test5 genannt.\\ Es bietet sich außerdem an die IP-Einstellungen (IP, Subnetmaske, Gateway, DNS-Server) schon vorher mit einem anderen PC an dem gleichen Kabel zu testen. So kann man ausschließen dass hier ein Fehler passiert ist.\\ Nun wird die aktuelle Software aus dem Repository geladen und in das Verzeichnis gewechselt. git clone https://github.com/ethersex/ethersex.git cd ethersex Dann werden die modifizierten Dateien aus dem [[hutschienencontroller_v2|Hauptartikel]] eingepflegt und die Konfiguration gestartet. wget http://wiki.volkszaehler.org/_media/hardware/controllers/volkszaehler_so_server.m4 mv volkszaehler_so_server.m4 pinning/hardware/volkszaehler_hutschienencontroller.m4 wget http://wiki.volkszaehler.org/_media/hardware/controllers/yport-node_enc28j60.zip unzip yport-node_enc28j60.zip rm yport-node_enc28j60.zip mv -f enc28j60.c hardware/ethernet/ ==Kompilieren der Software== make menuconfig Als nächstes werden in der Konfiguration folgendende Werte modifiziert: General Setup --> Target MCU: ATmega1284p General Setup --> MCU frequency: 12500000 General Setup --> Hardware/Periphery Class: Volkszaehler:Hutschienencontroller General Setup --> Enable Debugging: Einschalten General Setup --> VFS --> Atmel SPI Dataflash: Ausschalten General Setup --> VFS --> SD/MMC-Card Access: Einschalten General Setup --> VFS --> VFS File Inlining --> Inline configuration page: Einschalten General Setup --> VFS --> Debugging --> SD-Reader: Einschalten Network --> Ethernet (ENC28J60) support --> Etherrape IP address: 192.168.1.50 (eine freie IP in deinem LAN) Network --> Ethernet (ENC28J60) support --> Netmask: 255.255.255.0 (die Subnetzmaske) Network --> Default gateway: 192.168.1.1 (das Gateway im LAN) Network --> DNS support: Einschalten Network --> DNS support --> DNS-Server IP address: 192.168.1.1 (normalerweise die IP des Gateways) Network --> Debugging Flags --> Networking: Einschalten Network --> Debugging Flags --> NTP: Einschalten Applications --> System clock support: Einschalten Applications --> System clock support --> Date and Time support: Einschalten Applications --> System clock support --> Use 32 kHz crystal to tick the clock: Einschalten Applications --> System clock support --> Adjust clock to NTP clock signal: Einschalten Applications --> System clock support --> Syncronize using NTP protocol: Einschalten Applications --> System clock support --> NTP Server: 0.de.pool.ntp.org (oder einen anderen NTP-Server) Applications --> System clock support --> Uptime: Einschalten Applications --> System clock support --> Debugging Flags --> NTP Clock-Adjust: Einschalten Applications --> Http Server: Einschalten Applications --> Http Server --> Debugging Flags --> HTTPD: Einschalten Applications --> watchasync service: Einschalten Applications --> watchasync service --> Server: volkszaehler.org Applications --> watchasync service --> Path in front of pin identifier: "/demo/middleware.php/data/" Applications --> watchasync service --> Include unix timestamp: Einschalten Applications --> watchasync service --> Path in front of timestamp: ".json?ts=" Applications --> watchasync service --> Path at the end: "" Applications --> watchasync service --> Summarize Events: Einschalten Applications --> watchasync service --> Path in front of eventcount: "000&value=" Applications --> watchasync service --> Pin Configuration --> Port A --> Use Pin 0 of Port A: Einschalten Applications --> watchasync service --> Pin Configuration --> Port A --> Pin 0 on Port A Identifier: UUID_Test5 Applications --> watchasync service --> Pin Configuration --> Port D --> Use Pin 4 of Port D: Einschalten Applications --> watchasync service --> Pin Configuration --> Port D --> Pin 4 on Port D Identifier: UUID_Test1 Applications --> watchasync service --> Pin Configuration --> Port D --> Use Pin 5 of Port D: Einschalten Applications --> watchasync service --> Pin Configuration --> Port D --> Pin 5 on Port D Identifier: UUID_Test2 Applications --> watchasync service --> Pin Configuration --> Port D --> Use Pin 6 of Port D: Einschalten Applications --> watchasync service --> Pin Configuration --> Port D --> Pin 6 on Port D Identifier: UUID_Test3 Applications --> watchasync service --> Pin Configuration --> Port D --> Use Pin 7 of Port D: Einschalten Applications --> watchasync service --> Pin Configuration --> Port D --> Pin 7 on Port D Identifier: UUID_Test4 Applications --> watchasync service --> Debugging Flags --> WATCHASYNC: Einschalten Die gespeicherte Konfiguration wird kompiliert und auf den Controller geflashed. Bei einigen Compilern tritt ein Fehler in der Datei services/watchasync/watchasync_strings.c in Zeile 146 auf. In diesem Fall ist die Verwendung einer Ubuntu-Live-CD zu empfehlen, bei der anstandslos kompiliert wird. make sudo avrdude -c avrisp2 -P usb -p m1284p -U flash:w:ethersex.hex Am Ende sollte der ISP-Programmer fuer die weiteren Tests wieder entfernt werden. ==Test der USB-Schnittstelle== Das Modul wird zunächst über USB an den PC angeschlossen. Es meldet sich als USB-RS232-Adapter und kann über das Programm der Wahl (Hyperterminal bei Windows oder GTKTerm bei Linux) angesprochen werden.\\ Die Einstellungen sind wie folgt:\\ * Speed: 115200 * Parity: none * Bits: 8 * Stopbits: 1 * Flow control: none Wenn man jetzt erstmal nichts sieht schaltet man die Spannungsversorgung aus und wieder an. Spätestens beim Booten werden einige Eigenschaften des Moduls angezeigt. Es ist übrigens Sinnvoll die Verbindung bei den nächsten Tests bestehen zu lassen um Fehlermeldungen zu sehen. ==Test der LAN-Verbindung== Nachdem ein Netzwerkkabel angeschlossen wurde sollte man im Debugfenster "got Link" lesen können. Wenn der DNS-Eintrag stimmt sollte auch irgendwann der NTP-Client melden dass er die Zeit einstellt. Über den Browser der Wahl kann man über http://192.168.1.50 (Hier die entsprechende IP eintragen) auf seinen Controller zugreifen. Es erscheint die Ethersex Begrüßungsseite. ==Test der SD-Karte== Die SD-Karte wird für den Volkszähler nicht zwingend benötigt. Wenn man sowieso keine SD-Karte hat kann man sich diesen Schritt sparen.\\ Die SD-Karte muss mit FAT16 formatiert sein. An einem anderen PC wird eine Textdatei "test.txt" mit beliebigem Inhalt erstellt und auf der Karte gespeichert. Die SD-Karte wird in den Slot am Modul gesteckt und das Modul wieder eingeschaltet. Über das Debugfenster meldet Ethersex dass eine SD-Karte gefunden wurde. Über http://192.168.1.50/test.txt (Hier die entsprechende IP eintragen) sollte die Datei jetzt aufrufbar sein. ==Test der S0-Eingänge== Da die Grundleiterplatte schon getestet wurde und funktioniert, werden jetzt die Grundleiterplatte und die Platine mit dem uC zusammen gelötet.\\ Jetzt werden, wie auch schon bei dem Test der Grundleiterplatte, die einzelnen Kanäle mit einer Drahtbrücke mehrfach überbrückt. Die LEDs unter der Netzwerkbuchse sollten dabei anzeigen, welcher Kanal gerade kurzgeschlossen wird. Über die Debugkonsole zeigt Ethersex an, dass watchasync eine Verbindung zum Server herstellt. Die Verbindung per watchasync kommt nur zustande, wenn permanent ein DNS-Server zur Verfügung steht, der den in E6 hinterlegten application --> watchasync service --> Server auflösen kann. Andernfalls gilt: keine Namensauflösung --> keine Datenspeicherung. Die einzelnen Events sollten nun auf der Demoseite von Volkszaehler.org angezeigt werden.\\ ===TODO=== Test S0-Eingaenge Gehaeuse