Etherrape/Aufbau
From Lochraster
Contents |
[edit] Aufbau
[edit] Anleitung zum Aufbau des Bausatzes
Die Bilder unter: [1] [2] zeigen ein fertig aufgebautes Etherrape, daran kann man sich orientieren. Die Bilder haben eine Auflösung von 3900 x 2500 Pixel so daß man Details gut erkennen kann.
Weiterhin gibt es die beigelegte Dokumentation auch nochmal als PDF (fuer die Hardware Version v9):
Wenn man schon einige Löterfahrung hat sollte man mit dem SMD Bauteil beginnen (Data Flash). Wenn man erst noch etwas üben möchte kann man als erstes die Sockel für den Atmel und den ENC28J60 Ethernetcontroller einlöten und dann mit dem SMD Bauteil fortfahren.
Zum Einlöten des SMD Bauteils benötigt man einen Lötkolben mit einer sehr feinen Spitze die einem frisch gespitzten Bleistift ähnelt. Zuerst sollte man die Anschlüsse des SMD Bauteils verzinnen und dann die auf der Platine angebrachten Kontaktflächen verzinnen (die sind schon ein wenig vorverzinnt, jedoch reicht das meist fuer manuelle Bestueckung nicht aus). Jetzt setzt man das Bauteil auf die Platine und erhitzt jedes Beinchen um das Lötzinn am Beinchen mit dem Lötzinn auf der Platine zu verschmelzen.
Jetzt können die IC Sockel aufgelötet werden (wenn nicht schon geschehen)
Als nächstes sollte man die Widerstände, Kondensatoren und Jumperpins auflöten.
Dann folgen alle übrigen Bauteile, der Kühlkörper ist für IC3 (7805) gedacht.
Zum Schluss werden die grösseren ICs in ihre Fassungen gesetzt. ACHTUNG: Dabei kann es nötig sein, zunächst die Beinchen auf einer Tischplatte etwas nach innen zu biegen, so dass zwischen Beinchen und IC-Gehäuse ein rechter Winkel entsteht!
[edit] Änderungen im Infrarot Teil
Die Widerstände im Infrarotsendeteil sind so bemessen dass eine relativ geringe Infrarot Leistung abgestrahlt wird. Dadurch funktioniert das Steuren von Infrarot Geräten meisst nur wenn sich das zu steuernde Gerät im direkten Infrarot Strahl des Etherrape befindet. Durch den Austausch einiger Widerstände lässt sich die Infrarot Sendeleistung signifikant erhöhen, so dass auch reflektiertes Infrarotlicht ausreicht um ein Gerät zu steuern. Folgende Widerstände müssen getauscht werden.
R13 von 2K auf 2740 Ohm
R16 von 2K auf 620 Ohm (=36 KHz) oder 430 Ohm (=38 KHz Infrarot Trägerfrequenz (default))
R17 von 390 Ohm auf 100 Ohm
R21 von 51 Ohm auf 4,7 Ohm
C28 von 1 mikro Farad auf 47 mikro Farad (optional -> glättet die Spannungsversorgung etwas hat aber sonst keinen Effekt)
Es ist unbedingt darauf zu achten das ALLE oben beschriebenen Widerstände getauscht werden. Die Widerstände sind so dimensioniert das die Infrarot LED mit 100% ihrer möglichen Pulsleistung betreiben wird, was ein entsprechendes Tastverhältnis voraussetzt. Diese Tastverhältnis wird durch R13 und R16 festgelegt. Daher ist es nötig R17 und R21 zu tauschen um die Sendeleistung zu erhöhen und R13 und R16 zu tauschen um das für diese Leistung benötigte Tastverhältnis einzustellen, ansonsten besteht die Gefahr das die LED zerstört wird.
Beim Austausch der Widerstände ist besondere Sorgfalt nötig da die Lötösen und Leiterbahnen des Eherrape sehr leicht beschädigt werden können. Die stehend eingelöteten Widerstände sollten an oberen Ende mit einem Seitenschneider in zwei Teile geteilt werden, so dass man den Draht der zum oberen Ende des Widerstands führt und den Widerstand selbst getrennt auslöten kann. Der Draht und der Widerstand sollten einzeln am oberen Ende mit einer kleinen Zange oder Pinzette angefasst werden und dann sollte die entsprechende Lötöse von unten erwärmt werden so dass sich der Widerstand oder Draht leicht(!) herausziehen lässt. Jedes Anwenden von Gewalt führt meist zu irreparablen Schäden an der Leiterplatte. Passende Widerstände sind demnächst im Shop verfügbar und können zu jeder normalen Bestellung kostenlos hinzugefügt werden.
[edit] MagJack Ethernet Buchse
Aufgrund extremer Lieferschwierigkeiten existieren 2 verschiedene Typen der MagJack Buchse, SI-60024-F oder SI-60062-F. Bei der Buchse SI-60062-F blinkt nach dem einschalten des Etherrape keine LED die anzeigt das der Atmel sich im Bootloader befindet.
[edit] Jumper auf der Platine
[edit] Serielle Schnittstelle
ACHTUNG: Die zwei Jumper die auf dem Bild unten links zu sehen sind (in grün) müssen gesetzt werden damit die serielle Schnittstelle funktioniert.
[edit] Jumper SV1 (betrifft Sub-D Buchse)
Am Jumper SV1 der sich unten rechts auf der Platine befindet sind die sechs unbelegten Pins der 9 Pol Sub-D Buchse herausgeführt, so dass beliebige Signale auf die Buchse geschaltet werden können.
[edit] Webcam
Unterhalb des Atmels befindet sich ein Anschluss mit der Bezeichnung WEBCAM. Dort kann eine MCA-25 Webcam (ca 10 Euro bei eb*y) angeschlossen werden. Der Jumper JP4 rechts oberhalb des WEBCAM Anschlusses dient zum Aktivieren der Resetleitung der Webcam. Momentan wird die Webcam von der Software noch nicht unterstützt. Wenn jemand Lust hat die Webcam Unterstützung in die Firmware zu implementieren ist er herzlich willkommen.
Am Jumper zwischen der WEBCAM und SV1 ist der I2C Bus des Atmels herausgeführt.
[edit] Dallas 1-Wire
Auf dem Jumper der sich direkt neben dem SMD Flash Speicher Baustein befindet und mit BUS, GND, 5V gekennzeichent ist, ist der Dallas 1-Wire Bus herausgeführt. Damit dieser Anschluss aktiviert ist muss man die Lötbrücke die sich direkt neben den Jumperpins auf der Rückseite der Platine befindet schließen.
[edit] Jumper SV2 (betrifft MAX232)
Auf dem Jumper SV2 der sich direkt unterhalb des 1Wire Bus Jumpers befindet sind die ungenutzten Pegelkonverter des MAX232 herausgeführt.
[edit] Jumper J5 (betrifft Signalmasse)
Der Jumper J5 und der Kondensator C30 sind parallel geschaltet und verbinden die Gehäusemasse (Ethernet Buchse und 9 Pos D-Sub stecker) mit der Signalmasse des Etherrape.
[edit] IR SEND / IR RECV
Die Jumper hinter der IR-LED und dem TSOP Infrarotsensor sind mit diesen verbunden und dienen zum Abgreifen der Signale der LED sowie des Sensors. Wenn der Sensor und/oder die LED nicht bestückt sind können die Jumperpins verwendet werden um eine LED oder Infraotsensor extern anzuschliessen.
[edit] Jumper JP6 / P1 (betrifft Netzteilspannung)
Am Jumper JP6 / P1 oben rechts auf der Platine liegt Masse und die vom Netzteil eingespeiste Spannung an, der Spannungsausgang befindet sich hinter der Sicherung und der Verpolschutzdiode. Hier können maximal 400 mA entnommen werden.
Die anderen Jumper sind meist dazu gedacht Signale herauszuführen. Eine genaue Dokumentation ergibt sich aus dem Schaltplan. Bei Unklarheiten, einfach auf der Mailingliste fragen.
[edit] Stromversorgung
Das etherrape moechte 7.5V-15V haben (ein 7805 regelt das, im Zweifelsfall ins Datenblatt schauen), bei mehr als etwa 10V muss allerdings ein groesserer Kuehlkoerper her.
Mit dem mitgelieferten Netzteil benötigt ein Standard-Etherrape v9 12mA bei 220V (das sind etwa 2,6W) (Netzteil auf 7,5V). Bei einer Versorgungsspannung von 12.6V bei 0.2A wird eine Leistung von 2.52W benötigt. Davon gehen allein im IC3 (7805) (12.6V - 5V) * 0.2A = 1.52W in Form von Wärme verloren. Das ergibt einen Wirkungsgrad von (2.52W - 1.52W) / 2.52W = 39%. (nur als Orientierungswert, wenn jemand bessere Messungen hat, korrigiert das unbedingt)
[edit] Installieren der Firmware
[edit] Auschecken des Source
Um den Sourcecode der Firmware zu bekommen, gibt es zwei Möglichkeiten:
[edit] Möglichkeit 1: Source gepackt als tar.gz
Dazu auf der Repository Webseite einfach auf 'snapshot' klicken.
[edit] Möglichkeit 2: Direktes auschecken mit 'git'
Für diese Möglichkeit muss zunänchst 'git'(>=1.5) installiert werden (Debian Package: 'git-core'). Dann kann mit 'git clone git://igit.ath.cx/fd0/etherrape' das Repository ausgecheckt werden.
In den Branch 'restructure' wechselt man mit 'git checkout -b origin/restructure' (initial), bzw. 'git checkout origin/restructure', ein Update kann man mit 'git pull origin' versuchen.
[edit] Compiler und Libc installieren
Weiterhin wird benötigt:
- gcc-avr
- avr-libc (>= 1.4.2)
- binutils-avr
- avrdude
- libc6-dev
Sollte beim Compilen der avr-gcc "unknown MCU `atmega644'" auswerfen, hat dieser avr-gcc keinen Support fuer den Atmega644. Hier hilft entweder avr-gcc, avr-libc sowie die avr-binutils patchen (Patches jeweils hier und hier), oder (fuer Debian) von fd0 vorkompilierte Packages installieren (avr-libc, binutils-avr, gcc-avr) Die Debian Pakete können dann mittels des Kommandos dpkg -i <PAKETDATEINAME> installiert werden. Bitte darauf achten das keines der Debian Standardpakete versehntlich noch installiert ist.
Zur Installation unter Mac OSX (getestet mit Tiger) kann die Software Fink [3] genutzt werde. Hier kann man nun einfach durch fink install avr-binutils avr-gcc avr-libc avrdude die benötigte Software installieren.
Um einen USB auf Seriell Adapter nutzen zu können, bedarf es etwas mehr Aufwand. Hierzu sollte man die Schritte unter Mac-Serial probieren.
[edit] Vorbereitungen und Bootloader (für Bausätze bereits durchgeführt)
(Für Bausätze wurden die in diesem Abschnitt beschriebenen Dinge bereits durchgeführt, der Atmel ist also bereits eingerichtet und enthält den Bootloader.)
Als erstes muss der Atmel für die Umgebung eingerichtet werden, es müssen die Fuse-Bits entsprechend gesetzt werden. Dafür benötigt man eine Möglichkeit den Controller über ISP zu programmieren, ein Beispiel dafür ist [4], alle Pins sind auf dem Wannenstecker "ISP" herausgeführt.
Für den ATmega644 im Etherrape bedeutet dies (etwas mehr Erklärung kann man in der Datei fuses.txt im Unterverzeichnis bootloader/ finden):
Fuse-Byte | default | neuer Wert |
---|---|---|
high fuse byte | 0x99 | 0xDC |
low fuse byte | 0x62 | 0xE7 |
Danach wird der Bootloader installiert, bei einem avr910/avr109 kompatiblen Programmierer einfach durch Eingabe von "make install" im Unterverzeichnis bootloader/.
Zum Schluss sollten noch die Lock-Bits so konfiguriert werden, dass der Bootloader sich nicht selbst überschreiben darf. Das Lock-Byte muss also von 0x3F (default) auf 0x2F gesetzt werden. Achtung: Dieses Byte wird bei jedem Chip-Erase (über ISP, nicht über seriell) auf 0x3F zurückgesetzt!
[edit] Installieren der Firmware
Sobald der Bootloader installiert ist, kann der Atmel über eine normale serielle Verbindung
mit dem Programm avrdude programmiert werden. Das avrdude Programm muss separat installiert werden und ist nicht in den avr-gcc und avr-binutils Paketen enthalten. Unter debian Linux kann das Program mit apt-get install avrdude
installiert werden. Eventuell muss hier noch die Konfigurationsdatei angepasst werden, damit avrdude den eben installierten Bootloader für den ATmega644 erkennt. Am einfachsten die Datei ~/.avrduderc anlegen (oder mit dem folgenden Absatz ergänzen) Etherrape/avrduderc
(Wichtig ist hier eigentlich nur der Part "avr910-devcode", denn der ATmega644 hat noch keinen offiziellen solchen devcode, deshalb wurde im Bootloader einfach 0x02 festgelegt, was avrdude per default noch nicht kennt.)
Wenn avrdude mit folgender Fehlermeldung abbricht:
avrdude: Device signature = 0x09961e avrdude: Expected signature for ATMEGA644 is 1E 96 09 Double check chip, or use -F to override this check.
ist dies ein Fehler im Bootloader, der die Signatur-Bytes in der falschen Reihenfolge sendet. Dies ist aber nicht weiter schlimm, einfach im Makefile die Zeile
AVRDUDE_FLAGS += -F
einfügen. Dies ist in der aktuellen Version der etherrape-Firmware auch schon enthalten.
Beim Einschalten des etherrape wird zunächst der Bootloader ausgeführt, dieser testet, ob ein gültiges Programm installiert ist (Reset-Vektor ungleich 0xFFFF) und ob innerhalb der ersten 10ms nach dem Start ein "p" gesendet wird (115200 Baud, 8N1, diesem Fall antwortet der Bootloader auch mit einem "S"). Ist eine dieser beiden Bedingungen erfüllt, bleibt der Bootloader im Programmiermodus, ansonsten wird das Hauptprogramm angesprungen. Im Programmiermodus blinkt die Sende-LED an der Magjack (Orange) im 500ms-Takt.
Vom Hauptprogramm aus kann der Bootloader auch direkt via "p" oder ESC angesprungen werden, wenn beim compilen DEBUG=1 gesetzt ist. Alternativ sendet man einfach sehr viele "p" und schaltet gleichzeitig den Strom ein. Um dies zu Automatisieren gibt es im Verzeichnis etherrape/bootloader/launcher ein Programm namens launch-bootloader, was genau dies tut (und auch per default in das Makefile eingebaut ist und bei Bedarf automatisch kompiliert wird (seit ~28.4.07)).
Die Firmware befindet sich zurzeit unter http://igit.ath.cx:2080/fd0/?p=etherrape;a=summary Dort kann der aktuelle Snapshot als tar.gz Archiv heruntergeladen werden.
Nach dem Entpacken mit tar -xvzf <firmware-dateiname>
wechselt man erst in das Verzeichnis etherrape/bootloader/launcher und erstellt mit dem Kommando make
das launch-bootloader Utility, diese muss dann noch installiert werden in dem man es z.B. nach /usr/local/bin kopiert.
Jetzt wechselt man zurück in das etherrape Basis-Verzeichnis.
Die Serielle Schnittstelle an die das Etherrape angeschlossen ist kann in der Datei avr.mk mit
SERIAL_DEV=/dev/ttyS1
eingestellt werden, oder direkt mit make install SERIAL_DEV=/dev/ttyS1
. Standardmäßig ist hier /dev/ttyS0 also die erste serielle Schnittstelle eingestellt. Als Verbindungskabel wird ein normales serielles Kabel benötigt also KEIN Nullmodemkabel.
Jetzt das Etherrape an die gewünschte Schnittstelle anschließen und einschalten, danach kann die Firmware einfach via make install
installiert werden.
[edit] Häufige Fehler (aka: Was tun wenns nicht tut)
- Die beiden Jumper gesetzt? (siehe Abschnitt "Jumper auf der Platine")
- Quarze vertauscht?
- Alle Kondensatoren beim max232 richtigrum eingelötet?
- Dioden richtigrum?
- IC7 bestueckt (blockiert evtl. den TX-Pin des Controllers)?
- IC6 und IC7 gleichzeitig bestueckt (schliessen sich gegenseitig aus)?
- Wirklich alle Pins des Dataflash richtig mit der Platine verbunden (blockiert den SPI-Bus)?
- Wirklich alle Pins des Dataflash richtig mit der Platine verbunder (Dataflash wird warm)?