Motorüberwachung, Spritcomputer etc. mit
Mikroprozessor (wie alles begann)
Achtung!
Das auf dieser Seite beschriebene ist mittlerweile überholt
und dient nur noch als Beschreibung des "Werdegangs" der Schaltung.
Mittlerweile ist statt dem AVR Net-IO eine eigens entwickelte
Leiterplatte im Europaformat im Einsatz. Dadurch hat sich der
Verdrahtungsaufwand minimiert.
Eine gute Beschreibung eines Anwenders findet sich unter: Boote-Forum
Hier gehts zur neuen Beschreibung.
Hinweise:
Ich veröffentliche hier in Form eines Blogs mein
neues Projekt "Mikroprozessor an Bord". Wenn das Projekt dann
abgeschlossen ist, werde ich an dieser Stelle eine entsprechende,
zusammengefasste Beschreibung veröffentlichen. Diese
Beschreibung
dient mir selbst als Dokumentation, soll aber auch anderen für
ähnliche Projekte eine Hilfestellung geben. ABER! Wie immer
der
Nachbau erfolgt auf eigene Gefahr, ich übernehme keinerlei
Gewähr für die ordnungsgemäße
Funktion und
eventuell rechtliche Folgen für den Nachbauer.
Über eventuelle Kommentare, Fragen etc. zum Thema freue ich
mich
(Mailadresse siehe Startseite). Bitte aber um Verständnis,
wenn
ich Anfragen erst nach einigen Tagen beantworte. Ich arbeite beruflich
täglich 8-10 Stunden mit dem PC und habe deshalb abends meist
keine Lust mehr meine eigene Kiste an zuwerfen und verschiebe dies
deshalb meist auf das Wochenende.
Links werde ich - wie immer - kaum angeben, ich habe einfach keine Lust
mich eventuell für fremde Inhalte verantwortlich machen zu
lassen.
Aber Tante G.. findet die angegebenen Bezeichnungen etc. auf jeden
Fall.
15.10.2009
Warum ein Mikroprozessor?
Nach den bisherigen, eigentlich guten Erfahrungen mit dem PC
an
Bord, möchte ich die Funktionalität weiter
verbessern.
Der PC hat sich zwar grundsätzlich als geeignet erwiesen (im
Auto
möchte ich meinen Car-PC nicht mehr missen), aber es gibt
leider auch
einige Mankos.
So nützt der beste PC und auch das beste
Überwachungsprogramm nichts,
wenn der PC nicht läuft oder wie bereits einmal (aber nur ein
einziges
Mal) geschehen sich mit einem Bluescreen verabschiedet.
Der PC braucht einiges an Strom, auch die eigentlich geringen 3-4A
saugen über Nacht die Batterie leer.
Und es sind einige Klimmzüge nötig um über
den
Startvorgang (Spannungseinbruch) zu kommen, ohne dass der Rechner
abschmiert.
Trotz Ruhezustand braucht der PC einige Zeit um betriebsbereit zu sein.
Auch das Display ist nicht gerade
“sonnenlicht-tauglich” und zudem
schwer vor Spritzwasser zu schützen.
Was plane ich deshalb?
-Unveränderte Datenerfassung mittels 1-wire Komponenten
-Meßwerterfassung über ATMega
-Grenzwerterfassung und Alarmierung über ATMega
-Weiterleitung der Messdaten an einen PC über serielle
Schnittstelle
-Funktionen:
-Temperaturüberwachung
-Drehzahlmessung Motor
-Spritverbrauch Motor
-Geschwindigkeit (über GPS) und Log (eventuell auf SD-Karte)
-sämtliche denkbaren Spritcomputerfunktionen (u.a. aktueller
Spritverbrauch, l/100km, l/h, Restmenge, voraussichtliche Reichweite..)
-Batteriemonitoring (Spannung, Strom, Batterieladezustand etc.)
-Alarmanlage (eventuell mit Alarmierung über Handy)
-Ausgänge (Relais, LED, Hupe)
-Display: graphisches, transflektives Display 2,1″
Hab ich was vergessen? Dürfte kein Problem sein, die
Software ist geduldig..
Hier das entsprechende Schema:
22.10.2009
AVR-NET-IO
Nachdem das Thema Mikroprozessor für mich neu ist brauche ich
erst
mal eine “Probier-Plattform” im Fachjargon auch
Evaluation Bord
genannt. Da bin ich den AVR-Net-IO von der Fa. Pollin
gestoßen. Das
ist zwar nicht direkt ein Evaluationboard aber sehr günstig,
hat
genügend Ein-/Ausgänge und sogar eine
Netzwerkschnittstelle. Diese
brauche ich zwar bei meinem Vorhaben nicht, aber mal sehen wozu diese
noch gut ist.
Deshalb habe ich mir mal zwei Bausätze bestellt, welche auch
schnell geliefert wurden.
Dass die Qualität, sprich Vollständigkeit der
Bausätze, nicht besonders
gut ist, hatte ich schon im Internet gelesen, war also vorbereitet.
Es hat dann auch so einiges gefehlt:
-Die ATMega32 waren völlig unprogrammiert
-2 Reihenklemmen haben gefehlt
-1x 24-polige Steckerleiste hat gefehlt
-1x 100nF und 2x 10nF Kondensatoren haben gefehlt
-1x 7805 hat gefehlt
Das meiste hat beim zweiten Bausatz gefehlt, als ich das merkte hatte
ich die fehlende Programmierung der ATMegas bereits reklamiert und
bereits einen neuen erhalten.
Die noch fehlenden Teile hat größtenteils meine
Bastelkiste
hergegeben, deshalb konnte ich die beiden Boards auch so in Betrieb
nehmen.
Mit einem der Bausätze werde ich die geplante
Funktionen entwickeln,
den zweiten werde ich für die Simulation der
Zähleingänge
(Drehzahlmesser und Durchflussgeber) verwenden.
30.10.2009
BASCOM
Da ich schon über zwanzig Jahre in Basic programmiere bietet
es
sich an dies auch beim Mikroprozessor zu tun. Ich bin dabei auf Bascom
AVR gestoßen und war echt erstaunt was damit alles
möglich
ist.
02.11.2009
Erste Erfolge..
Die Abfrage von 1-wire Sensoren hab ich als erstes in Angriff genommen
und siehe da, es läuft schon..

Links sieht man das AVR-NET-IO in der Mitte eine selbst gebaute
Erweiterungsplatine, auf welcher die Anschlüsse für
ein
Display, ein Relais, zwei DS18B20, ein DS2405 und ein DS2413 vorhanden
sind. Das Relais ist über einen Transistor mit dem
Mikroprozessor verbunden und steuert einen Summer (Warnton für
Übertemperatur), der DS2413 steuert zwei LEDs an (rot und
grün). Die Platine ganz rechts enthält die
Beschaltung eines
DS2423. Dieser 32-Bit Zähler dient später zur
Ermittlung von
Drehzahl und Spritverbrauch.

Links auf dem Display wird die 1-wire ID ausgegeben, rechts daneben
dann die Zählerstände bzw. die Temperatur.
Als Display wird ein WINTEK WD-C2704M-1HNN mit 4x 20 Zeichen verwendet.
Dieses Display verwende ich aber nur für den Prototyp.
Für
das Display der endgültigen Version habe ich was besseres
gefunden..
07.11.2009
Das Display ist angekommen..

Für das Display werde ich ein 2.1" TFT-Minimodul mit
Mikrocontroller ATMega 128 verwenden. Dieses ist bei Display3000 unter
der Bezeichnung D072 erhältlich. Ich habe es mit 14,7456MHz,
einem
Uhrenquarz, steuerbarer Displaybeleuchtung und Abschaltoption bestellt.
Eine 5V KFZ-Spannungsversorgung und eine Echtzeituhr
vervollständigt das System. Um mir bei der Entwicklung
leichter zu
tun habe ich zudem die große Entwicklungsplatine gekauft.
Hinweis: Das Display und die Mikroprozessorplatine wie sie
später
in einem geeigneten, wasserdichten Gehäuse ins Boot kommt ist
im
Bild auf der linken Seite zu sehen und nur unwesentlich
größer als als Display selbst.
Vorerst werde ich aber mit dem NET-IO weitermachen, da ist nicht so
viel kaputt, wenn mal was schief geht.
08.11.2009
Der Simulator steht...

Links sieht man die beiden AVR-NET-IO. Der untere der beiden simuliert
mittels Rechtecksignal die Drehzahl und den Spritdurchfluss.
Hierzu kann die Frequenz der beiden Signale mittels Drehpoti
eingestellt werden.
Bis jetzt bin ich begeistert wie easy die Mikroprozessor
Programmierung ist. Als
nächstes werde ich mich an die Programmierung eines
Konfigurationsdialoges machen. Wobei ich hier zweigeteilt vorgehen
werde. Der MC wird die Daten (IDs) der angeschlossenen 1-wire Sensoren
an den PC übermitteln (über serielle Schnittstelle).
Auf dem
PC wird dann die Zuordnung der Sensoren und die Festlegung der
Maximalwerte erfolgen, welche im Anschluss wieder an den MC gesendet
und von diesem im EEPROM gespeichert wird.
13.11.2009
Nun läuft auch die RTC (Uhr). Leider erst nach stundenlanger
Fehlersuche. Und was war's: Das Verbindungskabel von der Uhrenplatine
zum MC hatte nur 9 Pole statt 10. Erst als ich anfing das Kabel
durch zumessen ist mir aufgefallen, dass Pin 10 des 10-poligen Steckers
keine Verbindung hatte. Beim Nachzählen dann die Erkenntnis
"Mist
das Flachbandkabel aus der Krustelkiste hat nur 9 Adern. Der Mist hat
mich bestimmt zwei Stunden Suche gekostet...
14.11.2009
Meinen alten Etrex hab ich über eine entsprechende
Wandlerplatine
mit MAX232 an den MC angeschlossen. Nun folgt die Programmierung der
GPS-Datenerfassung..
17:00:
Die Datenerfassung vom GPS steht. Das Einlesen der Geschwindigkeit, der
Position und der UTC-Zeit läuft. Die RTC stelle ich jetzt beim
ersten Lesen auf die UTC-Zeit. Muss nur noch sehen, welche der vielen
NMEA-Datensätze ich verwende. Offen ist auch noch, ob ich die
gefahrene Strecke aus der Geschwindigkeit bestimme oder aus der Strecke
zwischen den einzelnen Positionen errechne. Ersteres wäre
einfacher zu rechnen, zweiteres eventuell genauer.
Werde wohl irgendwann einen Test mit dem Auto durchführen
müssen...
November 2010
Nun ist einige Zeit vergangen. So ganz untätig war ich dabei
nicht.
Die
Verbindung zwischen PC und MC steht. D.h. ich kann die einzelnen
Sensoren incl. untere und obere Warn- und Fehlergrenze mittels
Windows-Programm konfigurieren. Auch Werte wie Tankvolumen etc. werden
auf diese Art und Weise übertragen.
Auch läuft im Boote-Forum ein Projekt zur Einbindung
"meines" Mikroprozessors in den von einem Forumsmitglied
entwickelten GPSMonitor
um diesen
auf diese Weise mit Sensordaten (1-wire, Spannungen, Spritdurchfluss
etc) zu versorgen. (Thread-ID
1996907 und 1996907).
Im Rahmen dieses Projekts werde ich das Hauptaugenmerk auf die
Verwendung des Net-IO-Boards legen. Mein eigenes Vorhaben mit dem
Display 3000 ATMega128 stelle ich deswegen noch etwas zurück.
Im weiteren nun die genaue Beschreibung, wie ich die einzelnen
Komponenten zusammengefügt habe.
Das kann jeder gerne für seine eigenen Zwecke nachbauen. Aber,
wie gesagt, ohne jegliche Gewähr von meiner Seite.
Hier mal die Stückliste
der eingesetzten Bauteile.
Diese
Liste werde ich im Verlauf des Projektes noch ergänzen, so
dass
sie erst nach Abschluss vollständig sein wird.
Stückliste (Tabelle 1)
Pos |
Anzahl |
Bestellnummer |
Benennung |
Lieferant (nur Empfehlung,
kann woanders billiger sein) |
Preis (einzeln)
nur Richtwert |
1 |
1 |
94-810058 |
Bausatz AVR-NET-IO |
Pollin |
19,95 € |
2 |
1 |
94-810036 |
Bausatz RS232-TTL-Wandler |
Pollin |
3,95 € |
3 |
1
*)
|
94-100996
ATMEGA 644P-20PU
101 100
|
AT Mega 644-20PU
ATMEGA 644P-20PU
ATMega 1284P-20PU
|
Pollin
Reichelt
Pollin
|
6,95 €
6,25 €
6,95 €
ACHTUNG! Das ist ein P-Typ auch wenn Pollin Bezeichnung ohne P!
Mittlerweile scheint Pollin leider wieder die "nicht
P"-Typen zu versenden. Also diesen Typ bei Pollin nicht mehr bestellen. -> Besser den 1284P verwenden. |
4 |
4 |
94-420090 |
Taster 145MT00C4001, rot,
Gummihaube |
Pollin |
1,00 € (oder jeder andere) |
5 |
beliebig
nach Bedarf |
- |
DS18B20, Temperatur-Sensor |
ebay |
ca. 1,30 € |
6a |
(1) |
68-614-96 |
SMD-Step-down-Wandler SDW
1, Komplettbausatz |
ELV |
7,95 € |
6b
|
1
|
-
|
Universal KFZ Netzteil
Stabilisiert 1,5-12V 800mA |
ebay |
ca. 7.- € |
7 |
1 (2) |
260 315 |
Sicherungshalter
für
Feinsicherung |
Pollin
|
0,50 €
|
8 |
1+ |
260 001 |
Feinsicherung 0,5 A |
Pollin |
0,08 € |
9 |
2 |
140 300 |
1N4148
- 0,2 A - 100 V - 10 Stück |
Pollin |
0,15 € |
10 |
1 |
250 258 |
Drosselspule, SMCC 47uH,
axial |
Pollin |
0,15 € |
11 |
1 |
220 507 |
VDR-Widerstand 0,10 EUR. |
Pollin |
0,10 € |
12 |
1 |
440 260 |
Punktrasterplatine 2,5mm
Raster mind. 110x75 mm. |
Pollin |
1,60 €. |
13 |
4+ |
451 178
PFL 10 |
Pfostenbuchse 10-polig |
Pollin
oder Reichelt |
0,25 €
0,10 € |
14 |
1 |
561 047 |
Flachbandleitung 20-polig.
3m |
Pollin |
0,90 € (mehr als genug) |
15 |
1 |
YMFC-C1602LDPSWSD |
LCD Display BIG HD44780
2x16 Black chr 8mm 16x2 White |
ebay, Zyscom |
6,15 € |
16 |
1 |
|
Schalter für
Displaybeleuchtung |
beliebig |
ca. 0,50 € |
17 |
1 |
PT 10-L 10K |
Einstellpotentiometer, liegend, 10mm |
Reichelt |
0,23 € |
18 |
2+ |
WSL 10G |
Wannenstecker 10-polig,
gerade |
Reichelt |
0,09 € |
19 |
1 |
DS 1307 |
Real Time Clock
I²C 56B NV SRAM,
DIP-8
|
Reichelt |
2,35 €. |
20 |
1 |
32,768 MS1V-12,5 |
Uhrenquarz 32.768 kHz |
Reichelt |
0,35 € |
21 |
2+ |
10k |
Widerstand 10k |
|
|
22 |
1 |
KZH 20-1
270 624 |
Knopfzellenhalter CR2032 |
Reichelt
Pollin |
0,52 €
0,50 € |
23 |
1 *) |
CR2032
270 104 |
Lithium-Knopfzelle, 3 Volt, 210 mAh, 20,0x3,2mm |
Reichelt
Pollin |
0,33 €
0,35 € |
24 |
3 |
- |
Reihenklemme 2-polig |
aus Net-IO od. Seriell Wandler-Bausatz |
- |
25 |
1
*) |
ILD 74 |
Optokoppler |
Reichelt |
0,50 € |
26 |
2+ |
4k7 |
Widerstand |
|
|
27 |
2+ |
1k |
Widerstand |
|
|
28 |
2+ |
100nF |
Kondensator |
|
|
29 |
5 |
450 856 |
Leiterplatten-Anschlussklemme
XY301 |
Pollin |
0,10 €
(wenn mitgelieferte nicht reichen sollten) |
30 |
1 *) |
ULN2803A |
Darlington-Array, DIL18 |
Reichelt
auch bei Pollin erhältlich |
0,31 € |
31 |
1 |
SPL64
|
Buchsenleiste, 64-polig,
einreihig, RM 2,54, gerade
|
Reichelt |
0,
99€ |
32 |
2+ |
ZD 5,6 |
Zener-Diode 1,3W 5,6V |
Reichelt |
0,07 € |
33 |
1 |
721 034 |
USB-Adapterkabel auf Seriell |
Pollin |
4,80 €
(falls nicht schon vorhanden)
wird zur Verbindung des MC mit dem PC benötigt |
34 |
1 |
je nach verwendeten GPS |
Verbindungskabel (seriell) zu GPS |
|
|
|
|
|
|
|
|
|
nachfolgende |
Teile werden für optische |
Drehzahlmessung benötigt |
|
|
40 |
1 |
130 665 |
BC337 - 10 Stk.
(NPN Transistor) |
Pollin |
0,40 € |
41 |
1+ |
4k7 |
Widerstand 4k7 |
|
|
42 |
2+ |
20k |
Widerstand 20k |
Reichelt |
|
43 |
1 |
962-20 10K
|
Spindeltrimmer, waschbar, 19mm, 10 K |
Reichelt |
0,28 € |
44 |
1 |
LM393 DIP |
Comparator, DIP-8
|
Reichelt |
0,18 € |
45 |
1+ |
CNY 70 |
OPTOKOPPLER
|
Reichelt |
0,70 € |
46 |
7 |
220 Ohm |
Widerstand ca. 220Ohm |
Reichelt |
|
47 |
2 |
ZD 5,6 |
Zener-Diode 1,3W 5,6V |
Reichelt |
0,07 € |
|
|
|
|
|
|
|
nachfolgende |
Teile für Schaltfunktionen |
und Anzeige / akustische Warnung |
|
|
50 |
nach
Bedarf |
340 426 |
Relais AXICOM FP2-D3009 5V |
Pollin |
0,40 € |
51 |
nach
Bedarf |
|
LEDs, Farbe nach Bedarf |
|
|
52 |
nach Bedarf |
|
Vorwiderstand für LED ca. 180 -200 Ohm |
|
|
53 |
1 |
Summer 6V |
Summer 6 V |
Reichelt |
1,10 € |
*) Reserveteile empfehlenswert! ..+ mehr bestellen, immer gut vorrätig zu haben.
Diese Liste dient für mich selbst als Stückliste bei
einem eventuellen Nachbau. Ich garantiere nicht die
Verwendungsmöglichkeit der Teile für bestimmte Zwecke.
zu 2) |
Zum Anschluss eines
"normalen" GPS-Gerätes oder -Modules mit RS232
nötig. Module mit TTL-Pegel können direkt
angeschlossen werden.
|
zu 4) |
Taster zum
steuern des MC, z.B.
Tanken, Anzeige wechseln etc. Kann natürlich jeder
beliebige Taster (Schließer) sein.
|
zu 5) |
Dallas/Maxim
Temperatursensoren. Anzahl
nach Bedarf. Die gibt es bei Pollin auch relativ günstig
(2,50).
Ich
kauf meine immer über Ebay vom Verkäufer Zyscom, da
sind sie
noch günstiger. |
zu 6a) |
Das ist ein
Spannungsregler, welcher
den MC direkt aus dem Bordnetz (12V) versorgen kann. Dazu ist der
Spannungsregler auf Pos. 1) wegzulassen und die entsprechenden Pins
sind zu überbrücken.
|
zu 19) |
Eigentlich ist beim
Anschluss eines
externen GPS-Gerätes keine Uhr nötig, da die Uhrzeit
(UTC)
von den GPS-Satelliten geliefert wird. Bei Verwendung als Spritcomputer
ist jedoch ein unbegrenzt beschreibbarer Speicher (RAM) nötig.
Damit dessen Inhalt nicht verloren geht wird dieser batteriegepuffert.
Dieser Speicher befindet sich im Uhrenbaustein.
Der EEProm-Speicher des MC ist dazu nicht geeignet, da dieser nicht
unbegrenzt oft überschrieben werden kann. |
zu 9) |
Schutzdioden zum Schutz
der Eingänge des MC (Verwendung nach Bedarf) |
|
|
13.11.2010
Der Bootloader ist nun
integriert.
Hintergründe:
Der Bootloader ermöglicht es ein Update des
Mikroprozessor-Programms über die serielle Schnittstelle
einzuspielen.
Der Ablauf ist dabei folgender:
Nach dem Einschalten bzw. nach einem Reset lauscht der MC eine kurze
Weile auf ein bestimmtes Zeichen an der seriellen Schnittstelle.
Erkennt er dieses, so beginnt er eine Kommunikation mit dem
entsprechenden PC-Programm. Diese Programm auf dem PC schickt das neue
MC-Programm an den MC, der es in seinem Flash (=dauerhafter
Programmspeicher) ablegt.
Erhält der MC dieses Zeichen nicht innerhalb der eingestellten
Zeit, so springt er in das normale Programm.
Hier der gesamte Ablauf eines Updates.
- Neues Programm besorgen.
Ich werde vorerst das Programm über eine Mail-Liste verteilen.
Deshalb bei Interesse Mail mit den folgenden Angaben an mich.
Hinweis: Bitte in der Mailadresse das X gegen das übliche @
ersetzen. (Dies ist eine Maßnahme gegen automatische
Adressensammler)
- Nick (Name) im Boote-Forum
- Bootsname (Soll dann später in der Willkommensmeldung angezeigt werden. Kann, wenn gewünscht, auch entfallen)
- Verwendetes Display
- Verwendeter Mikroprozessor (bis jetzt nur
ATMega644P
unterstützt.)
- Auf dem PC das Programm AVRootloader.exe starten
- Im Programm AVRootloader.exe die richtige Schnittstelle z.B.
COM2 und die Baudrate 115200 einstellen. (Es sollte auch die Einstellung "AUTO" funktionieren)
- PC und MC mittels seriellen Kabel verbinden. Dabei
die Schnittstelle auf dem Net-IO-Board verwenden, nicht die auf der
Zusatzplatine.
- Mittels der Schaltfläche mit den drei Punkten "..."
neben der Bezeichnung "FLASH" von mir zur Verfügung gestellte .acy
Datei auswählen
- Nun "Connect to device" ausführen und sofort danach den MC einschalten.
- Unter "Protocol" sollte nun "Device conneted" erscheinen.
- Weider auf "Programming" zurück und dort "Programm" ausführen.
- Der Upload sollte daraufhin starten.
- Anschließend "Disconnect device" ausführen.
- Nach einer kurzen Zeit sollte im Display des MC eine Anzeige erfolgen.
Portbelegung
des Mikroprozessors
Der verwendete ATMega644P hat insgesamt 32 Ports. Teilweise sind diese
frei verfügbar, teilweise haben diese spezielle Aufgaben wie
z.B.
serielle Schnittstelle, A/D-Wandler etc.
Nun mal eine Aufstellung was wir brauchen:
Liste der benötigten Funktionen (Tabelle 2)
Funktion |
Bezeichnung |
Port
am MC |
Sonstiges |
RXD0 |
Serial 0 (Inp) |
PD0 |
fixer Pin |
TXD0 |
Serial 0 (Out) |
PD1 |
Fix |
RXD1 |
Serial 1 (Inp) |
PD2 |
Fix |
TXD1 |
Serial 1 (Out, not nec.) |
PD3 |
Fix |
Analog 0 |
(12V1) Spannung Bat. 0
(eventuell über 1-wire) |
PA0 |
vorerst über 1-wire |
Analog 1 |
(12V2) Spannung Bat. 1
(eventuell über 1-wire) |
PA1 |
vorerst über 1-wire |
Analog 2 |
(12C1) Shuntspannung Bat.
0 (eventuell über
1-wire) |
PA2 |
vorerst über 1-wire |
Analog 3 |
(12C2) Shuntspannung Bat.
0 (eventuell über
1-wire) |
PA3 |
vorerst über 1-wire |
Count 0 |
Durchflussmesser 0 |
PB0 |
Fix |
Count 1 |
Durchflussmesser 1 (wahlweise auch Drehzahl) |
PB1 |
Fix |
1-wire 0 |
1-wire Bus 0 |
PA1 |
beliebiger Pin |
1-wire 1 |
1-wire Bus 1 (optional) |
PA0 |
bel. |
1-wire 2 |
1-wire Bus 2 (optional) |
- |
bel. - vorerst nicht verwendet |
1-wire 3 |
1-wire Bus 3 (optional) |
- |
bel. - vorerst nicht verwendet |
Out 0 |
Ausgang 1 |
PB3 |
bel. |
Out 1 |
Ausgang 2 |
PB6 |
bel. |
Out 2 |
Ausgang 3 |
PB7 |
bel. |
Out 3 |
Ausgang 4 |
PB5 |
bel. |
Out 4 |
Ausgang 5 |
PA3 |
bel. |
Inp 0 |
Taster 1 |
PD4 |
bel. |
Inp 1 |
Taster 2 |
PD5 |
bel. |
Inp 2 |
Taster 3 |
PD6 |
bel. |
Inp 3 |
Taster 4 |
PD7 |
bel. |
SPI SS |
SPI Slave Select |
PB4 |
Fix nicht benötigt |
MOSI |
MOSI |
PB5 |
Fix nicht benötigt |
MISO |
MISO |
PB6 |
Fix nicht benötigt |
SCK |
- |
PB7 |
Fix nicht benötigt |
RS |
Display (4-Bit Mode) |
PA2 |
bel. |
E |
Display (4-Bit Mode) |
PC2 |
bel. |
E2 |
Display
(4-Bit Mode) Displays mit 2 Kontrollern |
PC3 |
bel. |
DB4 |
Display (4-Bit Mode) |
PC4 |
bel. |
DB5 |
Display (4-Bit Mode) |
PC5 |
bel. |
DB6 |
Display (4-Bit Mode) |
PC6 |
bel. |
DB7 |
Display (4-Bit Mode) |
PC7 |
bel. |
SCL |
RTC |
PC0 |
fix |
SDA |
RTC |
PC1 |
fix |
Und nun die Tabelle 3 die zeigt am MC zur Verfügung steht und
wo
dieser Port am Net-IO angeschlossen ist:
Port
|
Sonderfunktion MC
|
Anschluss Net-IO |
Sonstiges |
PA0 |
Analog 0 / PCINT0
(PCI0 = Pin Change Interrupt 0 ) |
J3-10 |
1-wire Data 2 |
PA1 |
Analog 1 / PCINT1
(PCI0) |
J3-11 |
1-wire Data 1 |
PA2 |
Analog 2 / PCINT2
(PCI0) |
J3-12 |
RS Display |
PA3 |
Analog 3 / PCINT3
(PCI0) |
J3-13 |
Ausgang #5 |
PA4 |
Analog 4 / PCINT4
(PCI0) |
Kl-J9b (Net-IO ADC1) |
nuutn |
PA5 |
Analog 5 / PCINT5
(PCI0) |
Kl-J9a (Net-IO ADC2) |
nuutn |
PA6 |
Analog 6 / PCINT6
(PCI0) |
Kl-J7b (Net-IO ADC3) |
nuutn |
PA7 |
Analog 7 / PCINT7
(PCI0) |
Kl-J7a (Net-IO ADC4) |
nuutn |
|
|
|
|
PB0 |
External Timer/Counter Input 0 /
PCINT8 (PCI1) |
Ext-7 |
Zähleingang - Optokoppler Drehzahlmesser
(8-Bit) |
PB1 |
External Timer/Counter Input 1 / PCINT9
(PCI1) |
J11 |
Zähleingang - Optokoppler (16-Bit) |
PB2 |
INT2 (External Interrupt 2) /
PCINT10 (PCI1) |
ENC28J60 |
nuutn |
PB3 |
AIN1 / OC0A / PCINT11
(PCI1) |
Ext-8 |
Ausgang #1 |
PB4 |
SPI SS / PCINT12
(PCI1) |
ENC28J60 |
nuutn |
PB5 |
MOSI / PCINT13
(PCI1) |
ISP-1 + ENC28J60 |
nuutn |
PB6 |
MISO / PCINT14
(PCI1) |
ISP-9 + ENC28J60 |
Ausgang #2 |
PB7 |
SCK / PCINT15
(PCI1) |
ISP-7 + ENC28J60 |
Ausgang #3 |
|
|
|
|
PC0 |
SCL / PCINT16
(PCI2) |
J3-2 |
RTC DS1307 |
PC1 |
SDA / PCINT17
(PCI2) |
J3-3 |
RTC DS1307 |
PC2 |
TCK / PCINT18
(PCI2) |
J3-4 |
E1 Display |
PC3 |
TMS / PCINT19
(PCI2) |
J3-5 |
E2 Display (optional) |
PC4 |
TDO / PCINT20
(PCI2) |
J3-6 |
DB4 Display |
PC5 |
TDI / PCINT21
(PCI2) |
J3-7 |
DB5 Display |
PC6 |
TOSC1 / PCINT22
(PCI2) |
J3-8 |
DB6 Display |
PC7 |
TSOC2 / PCINT23
(PCI2) |
J3-9 |
DB7 Display |
|
|
|
|
PD0 |
RXD0 /
PCINT24 (PCI3) |
MAX232 (RS232 onbord) |
1. serielle Schnittstelle |
PD1 |
TXD0 /
PCINT25 (PCI3) |
MAX232 (RS232 onbord) |
1. serielle Schnittstelle |
PD2 |
RXD1
/ INT0 / PCINT26 (PCI3) |
Ext-1 |
2. serielle Schnittstelle |
PD3 |
TXD1
/ INT1 / PCINT27
(PCI3) |
Ext-2 |
2. serielle Schnittstelle |
PD4 |
OC1B / XCK1 / PCINT28
(PCI3) |
Ext-3 |
Taster #1 |
PD5 |
OC1A / PCINT29
(PCI3) |
Ext-4 |
Taster #2 |
PD6 |
ICP1 / OC2B / PCINT30
(PCI3) |
Ext-5 |
Taster #3 |
PD7 |
OC2A / PCINT31
(PCI3) |
Ext-6 |
Taster #4 |
nuutn = not used up to now (bis jetzt nicht verwendet ;-) )
Zusammenbau
AVR-Net-IO
20.11.2010
Achtung!
Die gedruckte Anleitung, welche dem Net-IO beiliegt ist/war teilweise
falsch (Stückliste fehlerhaft). Deshalb unbedingt nach der
Anleitung arbeiten, welche Pollin als Download anbietet.
Hier gibt es erstmal einige Teile, welche ich gleich auf die Seite
lege, da diese nicht benötigt werden.
Das sind erstmals alle Teile, welche mit der Netzwerkschnittstelle zu
tun haben. Wer beabsichtigt diese später doch mal zu
verwenden,
kann auch alle Teile bis auf den Spannungsregler IC2=LM317
und
den IC3=ENC28J60 einbauen. D.h. der Spannungsregler wird nicht
eingelötet und der ENC28J60 nicht in den Sockel gesteckt.
Theoretisch kann man auch diese Bauteile ohne funktionelle
Probleme einbauen, die Schaltung wird dann jedoch wesentlich mehr Strom
verbrauchen als nötig.
Wegzulassende Teile (Netzwerkschnittstelle): R1, R2, R4, R6,
R7,
R8, R9, R10, R11, C6, C7, C8, C9, C10, IC2, IC3,
L2
und J2.
Um die Leiterplatte und alle sonstigen Schaltungsteile später
vernünftig in ein Gehäuse einbauen zu
können
lasse ich den 25-poligen Stecker J3 ebenfalls weg. Die
Verbindungsdrähte werden später direkt
eingelötet.
Wegzulassende Teile (Sonstige): J3
Auch die blauen Klemmen löte ich nicht auf. Auf dem Boot ist
jede
Klemmstelle eine potentielle Fehlerquelle, deshalb werde ich wenn
möglich auf Lötverbindungen zurückgreifen.
(J1, J6
– J10)
Es verbleiben somit nur noch die Teile: R3, R12, R13, L1, C1, C2, C4,
C11, C14, C15, C16, C17, C12, C13, C4, D3, D5, IC1, IC4, J4, J11, J5,
Ext., ISP, Netz und Q2.
Wer ganz auf Nummer sicher gehen will kann auch noch die 10uF
Kondensatoren C14-C17 durch 1uF ersetzen, dann entspricht die
Beschaltung des MAX232 dem Datenblatt. Funktionieren dürften
aber
beide Beschaltungen.
Die Netzdiode löte ich nicht auf die Leiterplatte sondern
verlängere den Anschluss mittels zweier ca. 15cm langer
Drahtstücke. So kann die LED später ins
Gehäuse
eingebaut werden.
Verwendung des
Netzteils Pos 6b (Spannungsversorgung Typ 1):
Da nicht vorgesehen ist das Teil an Wechselspannung zu betreiben,
aber beim Betrieb im Boot bzw. in einem KFZ erhöhte
Störpegel
auftreten können, wird die Spannungsversorgung etwas umgebaut.
Die Diode D1 entfällt ersatzlos, D2 wird durch eine
Induktivität von 47uH (Pos.10) ersetzt und anstatt
der Diode
D2 eine S10K20 (Pos.11) Überspannungsschutz-Diode
eingesetzt.
Durch die verbleibende Diode D5 ist die Schaltung weiterhin gegen
Verpolung geschützt, benötigt aber ca. 0,6V mehr
Spannung.
Nach diesem Umbau liegt der Plus-Pol der Schaltung am
äußeren Pin von J1 (neben der Bohrung für
die
Befestigung), der negative Pol liegt in Richtung RS232-Schnittstelle.
Der Pluspol der Eingangsspannung wird über einen
Feinsicherungshalter mit einer Feinsicherung von 500mA geführt
(Pos, 7 und 8).
Versorgt wird die Schaltung später mittels eines KFZ
Netzteils (Pos. 6b),
welches 7,5V und mind. 200mA liefert. Das Teil gibt's z.B. bei ebay mit
der
Bezeichnung "Universal KFZ Netzteil Stabilisiert
1,5-12V 800mA" um ca. 7 € incl. Versand.
Hinweis: Der verbaute Linearregler 7805 benötigt
eine
Eingangsspannung, welche ca. 2V über der Ausgangsspannung (5V)
liegt. Da auch an der Diode D5 und an der Induktivität noch
etwas
Spannung abfällt liegt die Mindesteingangsspannung knapp unter
8V.
Theoretisch könnte die Eingangsspannung auch 12V
betragen,
dann muss der 7805 aber entsprechend mehr Leistung
(Differenzspannung * Stromaufnahme der Schaltung) verheizen, wird
entsprechend wärmer und die Leistung sollte über
einen
Kühlkörper abgeführt werden. Ich empfehle
deshalb den
Einsatz eines entsprechenden KFZ-Schaltnetzteils. Auch die gesamte
Leistungsaufnahme wird dadurch geringer.
Verwendung des
Netzteils Pos 6a (Spannungsversorgung Typ
2):
Hier werden die Dioden D1, D2, D3, D4 und D5 weggelassen
und D3
und D5 jeweils durch eine Drahtbrücke ersetzt. Statt D2 wird
der
Feinsicherungshalter (Pos. 7) angeschlossen. Die
Kondensatoren
C1, C2, C3, C5 können ebenfalls weglassen werden. Diese
Schaltung
ist komplett ungeschützt! Liegt nun eine Spannung
über
5,5- 6V an der Klemme J1 oder wird die Spannung verpolt angeschlossen,
so ist der Mikroprozessor hinüber. Der Schutz der Schaltung
wird
komplett vom Netzteil (Pos. 6a) übernommen.
Diese Schaltungsart empfehle ich nur geübten
Elektronikbastlern,
die auch noch das letzte Quäntchen Strom sparen
möchten.
Im weiteren Teil der Beschreibung verwende ich die Spannungsversorgung
vom Typ 1
Nun wird der RS232-TTL-Wandler-Bausatz (Pos. 2) zusammen
gelötet. Auch hier wird auf die Klemmen J2-J4 verzichtet.
Die Leiterplatte Pos. 17 schneiden wir auf die Größe
der
Leiterplatte des Net-IO zu und bohren auch die 4
Befestigungslöcher entsprechend. Achtung es müssen
auf der
Schmalseite mindestens 29 Lochreihen zur Verfügung stehen!
Zwischenstand:
Anzeichnen der Platinenabmessungen
Nun beginnt die Verdrahtung:
Hinweis! Ich
habe zur Anfertigung dieser Beschreibung in der dargestellten
Reihenfolge gearbeitet. Rückwirkend betrachtet werde ich
zukünftig die Verbindung zwischen Net-IO und
Zusatzleiterplatte erst ganz zum Schluss durchführen. Die
umfangreichen Lötarbeiten an der Zusatzplatine sind dann
leichter auszuführen und die Kabelverbindungen werden weniger
belastet.
- Vom Flachbandkabel ein 10-poliges ca. 12cm langes
Stück
abtrennen. An das eine Ende einen 10-poligen Stecker (Pos. 13)
anpressen. Dabei ist darauf zu achten, dass die Nase des Steckers vom
Kabel weg zeigt.
Also Stecker in den Anschluss "Ext." des Net-IOs stecken, das Kabel
muss dann in Richtung Rand der Leiterplatte zeigen. Wenn der Net-IO so
liegt wie im vorstehenden Bild also nach rechts. Siehe auch Bild unten.
Das freie Ende des Kabel vereinzeln und in die Leiterplatte (Pos. 12)
löten. Beginn in der zweiten Reihe von oben und bis
auf die
äußeren Kabel in der dritten Reihe von links. Die
äußersten Kabel bringen wir - wenn nötig -
eine Reihe weiter rechts and um
genügend Abstand von der Befestigungsbohrung zu
haben.


Die Reihe #1 ist die erste
vollständige
Lochreihe!
Diese bleibt vorerst noch frei!
Das erste Kabel in #2 ist hier noch zu nahe an der Befestigungsbohrung.
Ich habe es deshalb später noch eine Bohrung nach rechts
versetzt.
- Vom Flachbandkabel ein 10-poliges ca. 13cm langes
Stück abtrennen. An
das eine Ende einen 10-poligen Stecker (Pos. 13) anpressen. Dabei ist
darauf zu achten, dass die Nase des Steckers zum
Kabel zeigt. Also genau anders herum als beim letzten Stecker.
Also Stecker in den Anschluss "ISP" des Net-IOs stecken, das Kabel
muss dann in Richtung Rand der Leiterplatte zeigen. Wenn der Net-IO so
liegt wie im vorstehenden Bild also nach rechts. Siehe auch Bild unten
Das Kabel am anderen Ende wieder vereinzeln (auf ca. 15mm
Länge).
Nun von unten (genauer gesagt von da, wo am Stecker ein kleiner Pfeil
ist) zählen. Kabel #3, #4, #6
und #8 abzwicken.
Die restlichen Kabel ohne Lücke auf die Leiterplatte (Pos. 12)
löten.
- Nun benötigt man 12 Adern des Flachbandkabels.
Diese
müssen aber nicht zwangsläufig verbunden sein. Damit
werden
die Anschlüsse vom nicht verwendeten Stecker J3 auf die
Leiterplatte (Pos. 12) geführt.
Kabellänge ca. 11 cm. Wir beginnen bei Pin #1 von
J3, dann
#2, #3 usw. bis #12. Wir führen die Kabel in dieser
Reihenfolge
zur Leiterplatte Pos. 12)
(An dieser Stelle ist meines Erachtens die Beschreibung des Net-IOs
fehlerhaft. Auf der LP ist #1 beim "Ext." Stecker. Auf dem Schaltplan
ist die Nummerierung aber genau entgegengesetzt.)

Achtung! Auf den Bildern
sind die
Anschlüsse noch von Pin 2 bis Pin 13 des J3
abgeführt! Ich
habe den Fehler in der Net-IO-Beschreibung erst beim Test der Schaltung
bemerkt! Pin 13 ist also frei!
Nun haben wir auf der Zusatzleiterplatte folgende Anschlüsse
(dazu
liegt die Zusatzleiterplatte so vor uns, dass sich die
angelöteten
Flachbandkabel auf der linken Seite befinden. Wir zählen nun
von
oben nach unten die Lochreihen beginnend mit 1.
Tabelle 4
Zusatzplatine
Reihe
ZP # |
Belegung |
Verwendet
für
(wird nach und nach ergänzt) |
verbunden
mit
(wird nach und nach ergänzt) |
#1 (vorerst noch frei!) |
PB1 |
Counter
|
ILD74 #6 |
#2 |
PD2 |
Seriell 2 |
RS232-Wandler TXD |
#3 |
PD3 |
Seriell 2 |
RS232-Wandler RXD |
#4 |
PD4 |
Taster 1 |
WS2 #3 |
#5 |
PD5 |
Taster 2 |
WS2 #5 |
#6 |
PD6 |
Taster 3 |
WS2 #7 |
#7 |
PD7 |
Taster 4 |
WS2 #9 |
#8 |
PB0 |
Drehzahlmesser - Motor |
ILD 74 Pin #7 |
#9 |
PB3 |
Ausgang #1 |
ULN2803 #4 |
#10 |
Gnd |
|
WS1 #1, (WS1 #10)
WS2 #2-#10, Gnd DS1307 etc. |
#11 |
5V |
|
WS1 #2, Vcc DS1307, LM393,CNY70 etc. |
#12 |
Gnd |
|
Pin #9 ULN2803 |
#13 |
PB6 |
Ausgang #2 |
ULN2803 #5 |
#14 |
PB7 |
Ausgang #3 |
ULN2803 #6 |
#15 |
Reset |
|
|
#16 |
5V |
|
|
#17 |
PB5 |
Ausgang #4 |
ULN2803 #7 |
#18 |
PA3 |
Ausgang #5 |
ULN2803 #8 |
#19 |
PA2 |
RS Display |
WS1 #3 |
#20 |
PA1 |
1-wire Data |
Reihenklemme |
#21 |
PA0 |
optional 2.
1-wire Bus |
opt. Reihenklemme |
#22 |
PC7 |
DB7 Display |
WS1 #9 |
#23 |
PC6 |
DB6 Display |
WS1 #8 |
#24 |
PC5 |
DB5 Display |
WS1 #7 |
#25 |
PC4 |
DB4 Display |
WS1 #6 |
#26 |
PC3 |
E2 Display (optional) |
WS1 #5 |
#27 |
PC2 |
E(1) Display |
WS1 #4 |
#28 |
PC1 |
SDA RTC |
DS 1307 Pin 5 |
#29 |
PC0 |
SCL RTC |
DS 1307 Pin 6 |
Die Bezeichnungen in der zweiten Spalte entsprechen den
Anschlüssen am ATMega 644P.
Da die fehlerfreie Belegung der Anschlüsse von enormer
Wichtigkeit
ist, wird dies folgendermaßen überprüft:
Download des
Datenblatts des ATMega 644P von der Atmel Homepage (doc8011.pdf).
Darin ist auf der Seite 2 "Pinout ATMega164P/324P/644P" die genaue
Pinbelegung dargestellt. Nun wird bei ausgebauten ATMega mittels eines
Durchgangsprüfers der Durchgang zwischen Prozessor-Sockel und
Lötpunkt auf der Zusatzleiterplatte sichergestellt. Diese
Anschlüsse werden im folgenden Text als ZP#.. bezeichnet
werden.
Nun können wir bereits die RS232-Wandlerplatine
anschließen:
- Den Ausgang TXD an der Wandlerplatine verbinden wir mit
PD2, also ZP #2 an der Zusatzplatine (nicht
verwirren lassen, weil PD2=RXD am MC ist! Der RXD des einen Bauteils
ist immer der TXD des jeweils anderen!)
Hierfür führen wir die entsprechende Litze direkt
neben den
bisherigen Anschluß durch die Leiterplatte und verbinden auf
der
Rückseite beide Lötpunkte mit Zinn.
- Den Ausgang RXD an der Wandlerplatine verbinden wir mit
PD3, also Anschluß #3
- Die 5V Spannung und die Masse (GND) holen wir uns vom
Net-IO genauer gesagt von den Lötpunkten des J6.
Zwischenstand (21.11.2010): 
Der nächste Schritt wird der Anschluss der Relais-Platinen und
des
Displays sein. Wegen dem Display warte ich allerdings noch
auf
die Lieferung aus Polen.
Aber hier mal die benötigten Anschlüsse (Tabelle 5):
LCD Pin |
Bez. |
Fkt. |
Anschluss an Verbindungskabel |
Verbindung intern |
Pin # 10-pol. Stecker WS 1 |
Pin MC |
#1 |
Vss |
Gnd |
ja, Gnd |
- |
1 |
- |
#2 |
Vdd |
+5V |
ja, +5V |
- |
2 |
- |
#3 |
Vo |
Kontrast |
- |
Poti |
|
- |
#4 |
RS |
Register select |
ja |
- |
3 |
PA2 |
#5 |
R/W |
read/write |
- |
Gnd |
|
|
#6 |
E |
enable |
ja |
- |
4 |
PC2 |
#7 |
DB0 |
Data |
- |
- |
|
- |
#8 |
DB1 |
Data |
- |
- |
|
- |
#9 |
DB2 |
Data |
- |
- |
|
- |
#10 |
DB3 |
Data |
- |
- |
|
- |
#11 |
DB4 |
Data |
ja |
- |
6 |
PC4 |
#12 |
DB5 |
Data |
ja |
- |
7 |
PC5 |
#13 |
DB6 |
Data |
ja |
- |
8 |
PC6 |
#14 |
DB7 |
Data |
ja |
- |
9 |
PC7 |
#15 |
A |
Backlight +5V |
- |
+5V |
|
- |
#16 |
K |
Backlight Gnd |
ja |
|
10 |
GND |
Wir benötigen also neun über das Kabel
geführte
Anschlüsse, es reicht somit ein 10-poliger Stecker.
Den
verbleibenden Pin verwenden wir für ein zweites "enable" (E2).
Dies ist für Displays mit zwei Kontrollern nötig.
Da die Spannung für das Backlight ebenfalls über das
Kabel
geführt wird, besteht theoretisch die
Möglichkeit dieses
über den MC ein-/auszuschalten. Um dafür nicht einen
kostbaren Port des MC zu "verheizen" werde ich hierfür
(optional)
einen 1-wire Baustein vorsehen. Es erscheint mir aber sinnvoller
(zumindest zusätzlich) einen
mechanischen Schalter direkt ins Displaygehäuse
einzubauen.
23.11.2010
Die Displays und weitere DS18B20 sind gestern angekommen.
Super schnelle Lieferung aus Polen!
Display
Nun wird das 10-polige Flachbandkabel an das Display gelötet,
dabei wird auf der Displayseite das Kabel #5 abgetrennt. Dieses findet
nur bei Displays mit zwei "Enable"-Leitungen Verwendung.
Reihenfolge und genaue Anschlüsse siehe Tabelle oben.
Nun fehlt noch eine Drahtbrücke von LCD Pin#1 (GND) nach LCD
Pin#5 (R/W). Diese wird auf der Displayseite angebracht.
Auf der Rückseite wird ein ca . 7cm langes Kabel am
LCD Pin
#2 (+5V) und ein ca. 7cm langes Kabel am LCD Pin "A"
(Backlight +5V) fest gelötet. Diese beiden Kabel werden dann
über einen Schalter (Pos. 16), der später im
Displaygehäuse sitzt, verbunden (Backlight ein/aus). Der LCD
Pin
#3 (Kontrast) wird mit dem mittleren Pol des Drehpotis (Pos. 17)
verbunden. Die beiden anderen Anschlüsse des Potis werden an
+5V
und an Gnd gelegt. Mit dem Poti kann der Kontrast eingestellt werden.
Achtung: Wie ich leidvoll feststellen musste entspricht der Pin
"A" auf der Display-Schmalseite nicht dem Pin "A" am Anschlussfeld. Der
Pin "A" am Anschlussfeld ist der richtige für den
+5V-Anschluss.
Der Pin "A" an der Schmalseite ist ohne Vorwiderstand!.
Bei den gemessenen 140mA waren am falschen Pol angeschlossen.
Lange hat das das Backlight nicht ausgehalten. Jetzt ist es deutlich
dunkler und braucht nur noch 30mA (richtig angeschlossen).
Der 10-polige Stecker wird so angebracht wie auf dem Foto ersichtlich:

Das rot markierte Kabel ist #1.
Auf die Zusatzplatine wird unten links der Wannenstecker WS 1 (Pos. 18)
so aufgelötet, dass die Öffnung zum Platinenrand
zeigt. Somit
liegt der Pin #1 des Displaykabels links unten. Die Reihe der ungeraden
Pins #1, #3, #5, #7, #9 liegt damit am Leiterplattenrand (Reihe #28)
und die Reihe der geraden Pins #2, #4, #6, #8 , #10 genau eine Reihe
weiter innen (Reihe #27). Abstand des Steckers ca. 2,5-3cm vom linken
Rand der Leiterplatte.
Die einzelnen Pins werden entsprechend der vorstehenden Tabelle(n) mit
dem Flachbandkabel am linken Rand der Platine verbunden. Die vorderste
Reihe macht dabei etwas Probleme. Ich bohre deshalb links und rechts
neben dem Stecker jeweils zwei 1,5mm Löcher und führe
durch
diese Bohrungen die isolierten Drähte nach unten. Das verdient
sicherlich keinen Schönheitspreis, erfüllt aber den
Zweck. WS 1 Pin#10 wird über einen etwas
längeren Draht
auf Masse gelegt. Hier wird in einer späteren Ausbaustufe eine
Schaltung ergänzt, welche es ermöglichen wird, das
Backlight
vom MC aus ein- und auszuschalten.
Anschließend werden dann die Anschlüsse noch mit dem
Durchgangsprüfer getestet (richtige Verbindung zum MC Pin und
kein
Durchgang zu den benachbarten Pins.).
Bedientaster
Nun folgt der Anschluss der Bedientaster. Auch diese werden
über
einen 10-poligen Stecker angeschlossen. Durch die Verwendung eines
eigenen Steckers besteht die Möglichkeit die Taster vom
Display
abzusetzen.
Die Taster werden an die MC Pins PD4, PD5, PD6 und PD7 angeschlossen.
Sie schalten den entsprechenden Pin nach Ground (Gnd). Diesmal wird die
entsprechende Aussparung an der Wanne nach hinten gesetzt. So haben wir
einen gewissen Schutz gegen vertauschen mit dem Displayanschluss.
Die vordersten fünf Anschlüsse (Pin 2, 4, 6, 8, 10)
werden
auf Ground gelegt, die linken vier der hinteren Anschlüsse
werden
zu den entsprechenden Verbindungspunkten geführt. So kann die
Verkabelung einfach durchgeführt werden. Damit liegt Pin #1
des
Wannensteckers WS2 rechts hinten. WS2 Pin #1 bleibt frei, WS2 Pin #3
wird mit Anschluss #4 (PD4), WS2 Pin #5 mit Anschluss #5 (PD5), WS2 Pin
#7 mit Anschluss #6 (PD6) und WS2 Pin #9 mit Anschluss #7 (PD7)
verbunden (siehe Tabelle 4 oben). WS2 Pin#1 bleibt frei.

Durch die Zugentlastung (fehlt im Bild noch) ergibt sich die richtige
Anordnung des Steckers.
RTC
Ich habe mich entschlossen doch nicht auf die käufliche
RTC-Platine zurückzugreifen, sondern die wenigen Bauteile
direkt
auf die Zusatzplatine zu löten.
Das Datenblatt des DS1307 liegt auf der Maxim-Webseite (Datenblatt
DS1307) Hieraus ist die Pinbelegung ersichtlich.
Benötigt werden folgende Anschlüsse:
VCC(+5V), GND, SCL und SDA. Der RTC Clock wir vorerst nicht
verwendet.
Der benötigte Batteriehalter wird rechts neben WS2 auf die
Zusatzplatine gesetzt. Der Plus-Anschluß liegt dabei auf der
linken Seite. Der rechts liegende Minus-Anschluss wird mit den
Groundanschlüssen des WS2 verbunden und weiter zum Pin 4 des
DS1307 geführt. Den Sockel des DS1307 positionieren wir dabei
so,
dass die Kerbe zum Batteriehalter zeigt. Somit liegt der
Groundanschluss hinten rechts (schwarzes Kabel auf dem Bild).
Der Pluspol des Batteriehalters wird mit Pin 3 des DS1307 verbunden.
Der Quarz (Pos. 20) wird auf der Rückseite zwischen Pin 1 und
2
(X1 und X2) des DS1307 gelötet. Das Gehäuse des Quarz
wird an
die darunterliegenden Lötpunkte angelötet
und mit Gnd
verbunden.
Vcc des DS1307 wird mit 5V (Anschluss # 11 Tabelle 4) verbunden.
Zusätzlich werden zwei Pull-Up Widerstände
(Pos26) von
Vcc nach SCL und SDA geführt. Anschließend wird SDA
zum
Anschluss #28 und SCL zum Anschluß #29 (nach Tab.4)
geführt.
Diese beiden Verbindungen sind auf der Lötseite der Platine
besser aufgehoben.
Bevor der DS1307 in den Sockel eingesetzt wird, werden die Verbindungen
zum MC überprüft:
Beginnend unten rechts am DS1307 (Pin 1) und dann gegen den
Uhrzeigersinn herum:
Pin DS1307 |
Angeschlossen an |
1 - X1 |
Quarz |
2 - X2 |
Quarz |
3 - Vbat |
Batteriehalter + Pol
(seitlich) |
4 - GND |
Batteriehalter - Pol
(Mitte)
Gnd (Platine Anschl. # 10) |
5 - SDA |
Platine Anschl. # 28
= MC PC1 |
6 - SCL |
Platine Anschl. # 29
= MC PC0 |
7 - SQW |
unbelegt |
8 - Vcc |
5V (Platine Anschl. # 11)
|
Zusätzlich liegt je ein Widerstand (10k) zwischen Pin
8 und Pin5, bzw. zwischen Pin 8 und Pin 6.

1-wire
Zwei Reihenklemmen (Pos. 24) aus dem Net-IO-Bausatz werden
zusammengesetzt und oben links auf die Platine positioniert.
Daran wird von links nach rechts (von hinten gesehen, Lage wie auf Bild
unten) angeschlossen:
Klemme
# |
Belegung |
angeschlossen
an |
1 |
unbelegt
optional 2. 1-wire Bus |
optional an Platine
Anschluss #21 = MC PA0 |
2 |
Ground (-) |
Platine Anschluss #10 |
3 |
1-wire Data |
Platine Anschluss #20
= MC PA1 |
4 |
+5V |
Platine Anschluss #11 |
Zwischen Klemme 3 und 4 wird ein 4k7 Widerstand (Pos. 26) angebracht.
Das ist der Pull-Up Widerstand für das 1-wire Netz.
Findet der 2. 1-wire Bus Verwendung ist auch zwischen Klemme 1 und 4
ein 4k7 Widerstand anzubringen.
Zum Testen der Schaltung kann an die drei Klemmen (GND, 1-Wire
Data und +5V) direkt ein 1-wire Netzwerk angeschossen werden.
Später auf dem Boot wird zum Schutz vor Überspannung noch
eine entsprechende Schutzschaltung dazwischengeschaltet werden. Am
besten wäre hierfür eine
DS9503 geeignet, leider ist diese relativ schlecht zu bekommen. Deshalb werde ich diese Schutzschaltung selbst erstellen.(
ähnlich siehe)
Stand 27.11.2010 
Optokopplereingänge
für Zähler
Um bei den Zähleingängen möglichst
universell zu sein, werden hierfür Optokoppler (Pos. 25)
eingesetzt. Der Aufbau entspricht hierbei weitestgehend den von
Digmessa in ihren Datenblättern vorgeschlagenen "optocoupler
interface". Damit können diese Sensoren direkt angeklemmt
werden.
Es werden drei 2er-Klemmen aus den Net-IO-Bausatz zusammengesetzt und
rechts aussen auf der Leiterplatte positioniert. Die Zählung
der Klemmen beginnt mit #15 von rechts oben nach unten.
Im Abstand von ca. 5 Lochreihen wird ein entsprechender Sockel
für den Doppeloptokoppler angebracht und zwar mit der Nut nach
unten zeigend. Somit liegt der Pin 1 rechts unten und die
weitere Numemrierung der Pins erfolgt gegen den Uhrzeigersinn.
Verbindungen:
Sockel
bzw. ILD74 Pin # |
verbunden mit |
1 |
+5V +
Klemme #20 |
2 |
über 1k
Widerstand (Pos. 30) mit Klemme #19 |
3 |
über 1k
Widerstand
(Pos. 30) mit Klemme #16 |
4 |
+5V + Klemme #17 |
5 |
GND + Klemme #15 |
6 |
zu ZP#1 = MC PB1 (noch
unbelegt) |
7 |
zu ZP#8 = MC PB0 |
8 |
GND + Klemme #18 |
Zusätzlich werden noch jeweils 1 Widerstand 4k7 von Pin #6 auf
+5V und von Pin #7 auf +5 gelegt (Pullup-Widerstände
Pos. 26).
Zwischen Klemme #2 und GND bzw. zwischen Klemme #5 und GND wird jeweils
ein 100nF Kondensator (Pos. 28) geschaltet.
Wird nur ein Zähleingang benötigt, so reicht die
Verkabelung wie oben beschrieben aus. Theoretisch könnte man
sogar noch die Pins #3, #4, #5 und #6 des Optokopplers unbeschaltet
lassen.
Benötigt man jedoch einen zweiten Zähleingang so muss
nun noch die Verbindung zum MC hergestellt werden. Dazu wird der ZP#1
der Zusatzleiterplatte mit Pin PB1 des Mikroprozessors verbunden.
PB1 liegt beim Net-IO an der Steckerleiste J11 auf dem mittleren Pin.
Von dort wird eine Leitung zu ZP #1 geführt.
Zwischenstand 04.12.2010
Schaltausgänge
(kein 1-wire)
Um auch einige direkt schaltbare Ausgänge zu haben wird ein
ULN2803 (pos. 30) eingesetzt. Dieser schaltet die entsprechenden
Ausgänge nach Masse und hat auch schon Freilaufdioden
eingebaut. So lassen sich (5V-)Relais, LEDs oder sonstige Signalgeber
schalten.
Auch dieser Baustein wird gesockelt um ihn bei Bedarf schnell
austauschen zu können. Es finden 5 2er-Reihenklemmen
Verwendung. Die Zählung dieser Klemmen beginnt links mit #5
und endet ganz rechts mit #14.
Verbindungen:
Sockel bzw. ULN2803 Pin# |
verbunden mit |
Funktion |
1 |
unbelegt |
|
2 |
unbelegt |
|
3 |
unbelegt |
|
4 |
ZP#9 =MC PB3 |
|
5 |
ZP#13 = MC PB6 |
|
6 |
ZP#14 = MC PB7 |
|
7 |
ZP#17 = MC PB5 |
|
8 |
ZP#18 = MC PA3 |
|
9 |
GND (Kabel nicht zu
dünn!) zu ZP#12 |
|
10 |
+5V + Klemme #5,
#7, #9, #11, #13 |
+5V Verbraucher
auf (Lötseite verbunden) |
11 |
Klemme #14 |
Ausgang 1 |
12 |
Klemme #12 |
Ausgang 2 |
13 |
Klemme #10 |
Ausgang 3 |
14 |
Klemme #8 |
Ausgang 4 |
15 |
Klemme #6 |
Ausgang 5 |
16 |
unbelegt |
|
17 |
unbelegt |
|
18 |
unbelegt |
|
Es bleiben noch drei Ein-/Ausgänge des ULN2803 frei.
Theoretisch könnte man diese noch mit freien
Anschlüssen des MC verbinden. Jedoch wären
hierfür weitere Kabel vom Net-IO zur Zusatzplatine
nötig. Da mittles 1-wire aber eine schier unendliche Anzahl
von Schaltmöglichkeiten besteht, werde ich diese nicht
benutzen. Die noch nicht verwendeten Anschlüsse des MC wie
z.B. PA4..7 (Analog/digital-Wandler-Eingänge) können
eventuell später noch Verwendung finden. Vorerst reicht die
bis jetzt erzielte Funktionalität aus.
Die noch unbelegten Lötanschlüsse der Klemmen #5, #7, #9, #11, #13 werden mit +5V verbunden.
Nach Anschluss eines Summers an Ausgang
1 und von 4 LEDs mit Vorwiderstand (330Ohm->schwaches Leuchten, ca.200 Ohm helles Leuchten) an die restlichen 4
Ausgänge ist der Versuchsaufbau nun fast komplett:
Hier mal der Schaltplan:
Was nun noch fehlt ist die Erfassung der Drehzahl! Für diese
fertige ich eine eigene kleine Platine an, welche dann an den
entsprechenden Optokopplereingang angeschlossen wird. Dies hat den
großen Vorteil, dass die Drehzahl auf unterschiedlichste Weise
erfasst werden kann. Es muß nur die Zusatzschaltung entsprechend
modifiziert werden.
Drehzahlmesser
Hierzu verwende ich eine "Quick and Dirty"-Lösung, welche aber in meinem Boot
bereits seit gut zwei Jahren so problemlos funktioniert, dass ich
derzeit keinen Grund sehe etwas daran zu ändern.Die Lösung ist aus
dem Versuch entstanden meinen Gaszähler (im Haus nicht im Boot ;-) )
elektronisch abzutasten. Dazu wird ein sog. Reflexkoppler CNY70
verwendet. Das ist im Grunde genommen eine (IR-)Sende- und
Empfangsdiode in einem Gehäuse.
Das Ausgangssignal wird mittels eines Komparators "digitalisiert" und vom MC gezählt.
Ich
habe dazu auf einer Riemenscheibe am Motor, welche mit
Kurbelwellendrehzahl läuft einen Reflektor aus Alufolie angebracht. Die
Alufolie überdeckt dabei ca. 180°. Der Reflexkoppler befindet sich ca.
5mm davor.
Der große Vorteil dieser Vorgehensweise ist, dass
keinerlei elektrische Verbindung mit der Motorelektronik nötig ist und
somit auch die Gefahr für den MC an Überspannungen zu sterben gering
ist. Auch spielt es keinerlei Rolle, ob es sich beim Motor um einen
Benziner, Diesel, Viertakter, 1-, 2-, 4-, 6- oder 8-Zylinder handelt.
Es treten immer genau zwei Helligkeitswechsel pro Umdrehung auf. Sollte
es mal nicht möglich sein eine mit Kurbelwellendrehzahl laufende
Scheibe abzutasten, so kann der MC selbstverständlich eine
entsprechende Anpassung vornehmen.
Selbstverständlich sind auch
andere Arten der Drehzahlmessung möglich. Wichtig ist nur, dass am
entsprechenden Optokopplereingang ein entsprechendes digitales Signal (open collector) ankommt.
In einer späteren Ausbaustufe werde ich z.B. den
an meinem Motor bereits vorhandenen aber nicht benützten
Kurbelwellensensor verwenden. Aber das ist dann eine Speziallösung für
meinen Mercruiser 4,3L.
Bei "meiner" Lösung auf dem Boot geht
der Ausgang des LM393 nicht direkt zum MC bzw. Optokoppler sondern wird von einem 1-wire
Baustein DS2423 gezählt und der Zählerstand von dort über 1-wire zum
PC (bisher) übertragen. Das hat den Vorteil, dass ich keine langen
Verbindungsdähte zwischen MC und CNY70 bzw. überbrücken muss. Leider
wird dieser Baustein nicht mehr hergestellt, deshalb werde ich dem MC
das Zählen überlassen. Ob sich hier die langen Anschlussdrähte negativ
bemerkbar machen wird sich noch zeigen müssen.
Die
Schaltung wird auf einer eigenen kleinen Leiterplatte aufgebaut. Diese Leiterplatte nenne ich nachfolgend nur DS1.
Sensor (Reflexkoppler) CNY 70:
Diesen Sensor wird über drei Anschlussdrähte mit DS1
verbunden (Länge nach Bedarf), da man zwei der vier Pins zusammenfassen
kann.
Jetzt wird's etwas tricky. Grund ist, dass es den CNY70 von
verschiedenen Firmen und leider mit unterschiedlichen Ausführungen der
Anschlüsse gibt.
Der von mir verwendete Vishay-Typ wird folgendermassen angeschlossen:
Sensor
so halten, dass die Anschlüssen von einem weg zeigen, man also auf die
Linsen blickt. Den Sensor so drehen, dass die beschriftete Seite nach
rechts zeigt (3 Uhr).
Nun den Anschluss der sich links oben befindet
mit dem Anschluss, welcher sich rechts unten befindet, diagonal verbinden. An
die beiden verbundenen Pins einen Anschlussdraht löten. Das ist der +5V
Anschluss. Dieser wird mit einem schwarzen Strich am Kabel markiert.
Den Pin
links unten ebenfalls mit einem Draht verbinden, das ist die Kathode
der Sendediode. Dieses Kabel wird mit zwei schwarzen Strichen markiert.
Dieser Anschluss wird dann über den Vorwiderstand auf Masse gelegt.
Nun wird noch der Pin rechts oben mit einem Draht verbunden, das ist er
Emitter des Fototransistors. Dieses Kabel bleibt unmarkiert.
Das sieht dann so aus:

Auf dem Photo nicht gut zu sehen: Das mittlere Kabel geht an die zwei diagonal liegenden Pins.
Um zu überprüfen, ob der Sensor richtig beschaltet ist,
sprich ob die IR-LED leuchtet verwende ich meine Digitalkamera.
Wenn man damit den eingeschalteten Sensor fotografiert, dann sieht das so aus:
Achtung! Auch wenn man
das Licht nicht, bzw. kaum sieht, kann es für die Augen
schädlich sein! Nicht reinsehen! Nur durch die Digicam!
Hier nun der Schaltplan des Messverstärkers: 
Die Verbindungen können fest verlötet oder über Klemmen ausgeführt werden.
Hier die fertig aufgebaute Schaltung beim Abgleich der Empfindlichkeit:

Im linken Bild befindet sich der Reflexkoppler über der Alufolie -> die LED leuchtet.
Im rechten Bild befindet sich der Reflexkoppler über dem schwarzen Klebeband -> die LED ist aus.
Wer den Abgleich nicht nur nach Gefühl machen will sollte folgendermassen vorgehen:
- CNY70 über die dunkle Fläche halten. Spannung am Anschluss 3 des LM393 gegen Masse messen. (z.B. 0,2V)
- CNY70 über die helle Fläche halten. Spannung am Anschluss 3 des LM393 gegen Masse messen. (z.B. 2,4V)
- Mittelwert der beiden Spannungen bilden (im Beispiel (0,2V + 2,4V) /2 = 2,6V / 2 = 1,3 V )
- Nun das Spindelpoti so einstellen, dass am Pin 2 des LM393 genau diese Spannung (im Bsp. 1,3V) anliegen.
Die LED1 und der Widerstand R5 kann selbstverständlich auch
weggelassen werden. Sie dienen nur zur einfacheren Einstellung des
Sensors.
Für den Test der Schaltung habe ich mir einen Drehzahlsimulator aus einem alten Lüfter gebaut.
Da dieser Lüfter nur mit ca. 2000/min läuft wurde durch
entsprechende Gestaltung des Reflektors dafür gesorgt, dass sich
mehrere Helligkeitswechsel pro Umdrehung ergeben.
So kann ich wesentlich höhere Drehzahlen simulieren. Im gegebenen
Fall mit Faktor 4, also bis zu 8000/min. Das sollte reichen.
Testaufbau Stand: 11.12.2010
Die Plantine DS1
wurde an die Klemmen #18, #19 und #20 angeschlossen. Mit einem
Ozilloskop habe ich nun am Ausgang des Optokopplers bzw. am Eingang PB1
des MC die entsprechenden Drehzahlsignale gemessen.

So wollte ich das haben, astreine Rechtecksignale. Da sollte der MC keine Probleme haben die Drehzahl zu ermittlen.
Nach dem nun der Testaufbau steht, werde ich mich nun wieder der Programmierung zu wenden.
26.12.2010
Verwirrung um Prozessoren
Wie ich leider feststellen mußte liefert die Fa. Pollin nun
nicht mehr wie früher die 644P-Typen (bei Bestellung mittels
Best-Nr.94-100996) , sondern die Typen ohne P. Damit stimmt zwar deren
Bezeichnung ATMega644-20PU wieder mit dem tatsächlichen Teil
überein, aber damit ist mir leider auch nicht geholfen. Ich
muss nun wohl oder übel beide Typen unterstützen.
Der markanteste Unterschied zwischen den 644 und den 644P ist der
zweite serielle UART des 644Ps. Auf diesen hatte ich eigentlich gesetzt
und beide serielle Schnittstellen (zum PC und GPS) damit ausgestattet.
Vorteil des UART ist die gepufferte Ein-/Ausgabe, welche den
Prozessor entlastet und höhere Datenübertragungsraten
ermöglicht.
Bisher hatte ich den PC an COM1 und das GPS an COM2 vorgesehen. Da beim
644 nun nur noch COM1 über einen Puffer verfügt, habe ich die
Schnittstellen getauscht. Nun wird das GPS mit COM1 und der PC mit COM2
verbunden. Da das GPS fortlaufend Daten sendet ist hier der Puffer
absolut nötig, bei der Kommunikation zum PC ist er verzichtbar,
wenn man mit der Datenübertragungsrate kleiner gleich 9600 Baud
bleibt (durch Versuche ermittelt).
Der Tausch der Schnittstellen hatte auch eine Änderung des
Bootloaders zur Folge. Auch er mußte auf COM2 umprogrammiert
werden.
Bei dieser Gelegenheit gibt es aber einen unerwarteten Lichtblick:
Pollin vertreibt nun den ATMega1284P-20PU (Best. 101 100). Das ist ein
644P aber mit doppelt soviel Speicher und das nur für 0,60 €
mehr. Wenn's den schon früher gegeben hätte, hätte ich
von Anfang an darauf gesetzt.
Ich empfehle jeden, der noch keinen ATMega gekauft hat, diesen Typ einzusetzen. Ich werde ihn ebenfalls unterstützen.
30.01.2011
Mittlerweile war ich nicht untätig. Das Programm
umfaßt nun die geplante Grundfunktionalität und wird gerade
einen eingehenden Test unterzogen.
Die Leiterplatten haben sich
leider verzögert. Mein deutscher Leiterplattenlieferant hat sich
erst auf Nachfrage gemeldet und hatte offensichtlich (trotz
Eingangsbestätigung per E-Mail) meine Anfrage nicht erhalten.
Mittlerweile
habe ich ein Angebot über 19,40€ pro LP incl. Versand.
In der Zwischenzeit hatte ich jedoch bereits bei einen Hersteller
in Bulgarien angefragt und auch dort schon zwei Stück bestellt.
Hier kosten die beiden incl. Versand 43,61€. Wenn man
die höheren Versandkosten berücksichtig also in etwa der
selbe Preis pro LP. Ich hab nun bei beiden Lieferanten bestellt
und bin auf den Vergleich der beiden gespannt.
Bisher verwirklichte Funktionalität der MC Software:
- Konfiguration über PC-Programm (Datenaustausch zwischen PC und MC)
- Speicherung der Konfigurationsdaten im EEPROM des MC.
- Speicherung der Zähler für Spritverbrauch, Betriebsstunden und Strecke im EEPROM und in der Realtime-Clock.
- Speicherung
der Zählerstände für Jahres-, Tages- und Tripdaten und
der Daten seit dem letzten Tanken im EEPROM, Ausgabe dieser Daten am
Display.
- Abfrage und Auswertung der GPS-Daten (Position, gefahrene Strecke, Geschwindigkeit)
- Ermittlung der Drehzahl eines Motors
- Ermittlung Spritverbrauch eines Motors einschl. Berechnung von
l/h, l/km, l/NM, Restmenge im Tank und Anzeige dieser Werte
am Display
- Überwachung von Temperaturen und schalten von Aktoren bei Erreichen eingestellter Temperaturgrenzwerte.
- Weitergabe der GPS-Daten an den PC
- Weitergabe der Temperaturdaten an den PC
- Wahlmöglichkeit
von verschiedenen Displayanzeigen. Einstellbare Standardausgabe und
Möglichkeit Anzeige per Knopfdruck zu wechseln.
- Funktion "Zutanken"
- Funktion "Volltanken"
Konfiguration am PC
Das
hierzu erstellte Programm ermöglicht den Zugriff auf
sämtliche im EEPROM gespeicherten Konfigurationswerte und
Zählerstände (Expertenmodus). Bei einer späteren Version
ist ein Usermodus geplant in welchen sich nur allgemeine Werte
beeinflussen lassen.
Hier mal ein paar Screenshots der Einstellungsdialoge:





(c) Erich Freibert, Januar 2011
Hinweis: Sämtliche Warenzeichen, Markennamen, Trademarks etc.
sind
Eigentum der jeweiligen Firmen auch wenn dieses nicht
ausdrücklich
kenntlich gemacht ist und der Trademarks-Eigener nicht namentlich
genannt wird und werden selbstverständlich anerkannt!
Weiterführende Links dienen nur der Information, liegen
deshalb
außerhalb meiner Verantwortung und bedeuten nicht,
automatisch,
dass dortige Inhalte mit meiner eigenen Meinung übereinstimmen
müssen
Das hier gezeigte ist nur eine Beschreibung von mir vorgenommer Um-
bzw. Einbauten. Es ist keine Aufforderung dies ebenfalls zu tun und ist
auch keine entsprechende vollständige Bauanleitung. Fehler und
Irrtum
ist vorbehalten. Auch die rechtliche Zuläßigkeit
wird von mir nicht
garantiert.
Zurück..