Translate

19 Mai 2011

Energiezähler "RELOADED"

Jetzt wirds ernst mit dem Energiezähler..........

Nachdem ich in den letzten Tagen und Wochen nicht
nur am Layout gefeilt habe, sondern auch noch nebenbei
den ersten "Vor-Prototyp" auf "Herz und Nieren" getestet
habe, und da noch ein paar kleinere Bugs gefunden und
beseitigt habe würde ich mal sagen, es ist an der Zeit,
das Ding mal wieder in der Praxis zu testen.
( Michael, halte Dich bereit ;-) )

Ich fasse mal kurz zusammen, was alles "Stand der Dinge" ist

Die Messung des Stromes funktioniert schon von Anfang an
Die Umsetzung auf 33Hz je 100A ebenfalls
Eine Temperaturmessung ist drin, aber die fliegt wohl raus ???

große Probleme bereitete die Umsetzung der Restenergieanzeige
auf die Tankuhr des Beetle. Zunächst versuchte ich,
per PWM einen Widerstand zu simulieren, was grundsätzlich sogar
sehr gut klappte. 300 bis 30 Ohm waren zu simulieren.
also nahm ich einen 270Ohm Widerstand und einen mit
ca.30 Ohm (50Ohm Trimmpoti) in Reihe.
Den 270Ohm Widerstand taktete ich, indem ich parallel dazu
per PWM einen Mosfet schalten liess. Mit sämtlichen
Multimetern und Messgeräten schien das wunderbar zu
funktionieren, nur nicht in der Praxis...............
Weil die Tankuhr selber taktet, also nur dann Strom schickt
wenn gemessen wird war der Elko den ich zum Glätten
parallel geschaltet hatte immer leer und so kam keine
brauchbare Anzeige zustande. Mit jeder altherkömmlichen
Tankuhr mit Gleichstrom-Versorgung hätte es wohl geklappt.
egal...... jetzt ist umgestellt auf einen Spannungsausgang,
das muss funktionieren! im Menue ist das Ganze jetzt
sehr luxuriös einstellbar, ganz gleichgültig, wie herum
das Signal des Tankgebers läuft. Auch kann man den Mittelpunkt
also 50% eigens einstellen, um "krumme Kennlinien"
auszugleichen.

Nehmen wir das Ding doch einfach mal in Betrieb!

Folgende Leitungen sind anzuklemmen:
GND
12V Dauerplus
12V "Zündung"
5V Versorgung des LEM
Signal des LEM
GND des LEM
Signal zum Drehzahlmesser
Signal zur Tankuhr
Reset (z.B.vom Ladegerät, +12V = Reset)
Temp-Fühler +
Temp-Fühler GND
Warnausgang (Relaiskontakt, schaltet nach GND)

Den Stromwandler simuliert man zunächst einfach mit
einem Poti

Jetzt kommen die ganzen Grundeinstellungen............
Ins Setup-Menue kommt man, indem man bei
gedrückter Enter-Taste einen Reset auslöst.

Dann erscheint eine Meldung:
"Starte Setup
Taste loslassen"
das sollte man befolgen ;-)

Es gibt zum Einstellen aller Werte nur vier Tasten
Rauf, Runter, Weiter(=Enter) und Reset
Ich werde diese Tasten aber durch einen Drehimpulsgeber
mit integrierter Taste ersetzen, dann gibts nur noch
einen einzigen Knopf. (schon getestet....das geht prima!)
links = runter ; rechts = hoch ; kurz drücken = Enter
und lange drücken = reset
Die Auswertung muss nur noch ins Programm integriert werden.




















Menue Seite 1
Das erste Menue ist zum Einstellen der Akkukapazität.
Wert einstellen mit Rauf oder Runter
Bestätigen mit Enter oder vorher abbrechen mit Reset
Enter speichert den eingestellten Wert und man landet
in der nächsten Menue-Seite.



















Menue Seite 2 , 3, und 4 :
Hier wird der Reihe nach die Ausgangsspannung zur
Tankuhr für 100% 50% und 0% (=leer) eingestellt.
Während man im Menue ist wird die gerade eingestellte
Spannung bereits ausgegeben, so dass man das Ergebnis gleich
kontrollieren kann.
Der im Display angezeigte Richtwert stimmt nicht ganz, müsste etwa
Faktor 0,027 statt o,o2 sein, aber das hilft auch niemandem weiter....
also nach der Tankanzeige richten, darauf kommts ja an!
























Menue Seite 5:
Einstellen des Nullpunktes des Stromwandlers
hier ist der Wert auf den angezeigten Istwert einzustellen.
Das könnte man automatisieren, aber dann hat man auch
keine Kontrolle mehr......deshalb von Hand!




















Menue Seite 6:
Messung beim Laden Ein oder Aus
Aus: In die Akkus zurüchfliessender Strom wird nicht gemessen
Ein: Es wird sowohl Entnahme als auch Nachladen gemessen.
Bei einer Auflösung von ca. 3A (1,56 wären auch möglich, aber dann
wirds zu unruhig) kann man bei kleinen Strömen keine Wunder
an Genauigkeit erwarten....... obs Sinn macht wird sich zeigen.






















Bei eingehendem Strom wird dann auch "Ladevorgang" angezeigt





















Menue Seite 7:
Schwelle des Relais
hier kann man einstellen unterhalb welcher Grenze das
Melderelais anzieht (Schaltet nach GND)
Bezogen auf % an Restenergie. Der Restenergiezähler
zählt übrigens bis -25% weiter, das hilft beim Rantasten an den
korrekten Wert.




















Menue Seite 8:
Hier kann man die Anzeige des Drehzahlmessers abgleichen
in 1%-Schritten. 80% -120% Std= 100%
Im derzeitigen Programm zwar noch nicht
vorgesehen, aber bei einem erweiterten Verstellbereich
könnte man so auch auf Sechs- und Achtzylinder-Drehzahlmesser
abgleichen. 100% = 4zyl 150% = 6zyl 200% = 8zyl.
Mal erkundigen, wo die Frequenzen bei Diesel-DZM liegen
Ich habe gerade keíne Lust, nochmal umzuprogrammieren.
Das kommt dann in der nächsten Version.

nochmal Enter gedrückt, und die Box sollte laufen!




















Durch die mögliche Berücksichtigung des Nachladens
gabs noch ein ganz neues Problem........
Ich schicke den Prozessor derzeit noch nicht "schlafen"
Das Gerät braucht ohne Beleuchtung und Sensoren
gerade mal 20mA ......was solls? Alle Verbraucher
und auch die Ausgangstreiber für DZM und Tankuhr
laufen über "Zündung", der Rest immer.
Wenn also nun der Stromwandler nicht mehr versorgt
ist, ebenso der Temperaturfühler, dann wurden
plötzlich 800A Nachladen angezeigt und -270°C........
Das war nicht schön, deshalb wird dann jetzt
Standby/OFF angezeigt und 0A. Es dauert zwar beim
Ausschalten der "Zündung" ein paar Sekunden, aber
das soll nicht weiter stören. (Das krieg ich auch noch hin!)





















Falls noch jemand gute Ideen hat, was noch verbessert werden
soll.....bitte melden!!!!

Mein Plan für die Zukunft sieht so aus, dass ich in der zweiten
oder in der zweiten und ev. dritten Zeile die Funktionen meines BMS
unterbringen möchte. Also zumindest die Anzeige der Zellen mit
der höchsten und der niedrigsten Spannung.
Noch besser die aktuell gemessene Zelle und die Gesamtspannung,
schliesslich wären mir KWh lieber als Ah -Anzeige,
aber das ist noch Zukunftsmusik, aber machbar!

Die Anzeige der bereits entnommenen Energie und der Gesamtkapazität
ist nicht so wichtig bzw lässt sich z.T. in die 4.Zeile quetschen
Rest 90.1/100Ah=90% ......oder so ähnlich......max 20 Zeichen je Zeile!!
Die Temperatur braucht wohl keiner und die Hz die der DZM kriegt
sind noch eine "Altlast" aus der Anfangsphase.
jetzt muss erst mal die Tankuhr was vernünftiges anzeigen.
Ich kann das leider nicht selber testen, weil ich andere Autos habe.
(und da hätte das bisherige System auch funktioniert!)
........und der Drehgeber statt der Tasten muss rein! (kein Problem!)

mfG
Franz

............kleiner Nachtrag........ich habe mal versuchsweise einen Atmega168
genommen und das Energiezähler-Programm draufgeladen. Das lief, klar doch!!
dann habe ich das Programm des BMS-Master aus der Versenkung geholt
und beide Programme zusammengemischt. gar nicht so einfach, da
kollidierten so manche Dinge, aber erst mal alle Variablen umbenannt
auch für etwas Überblick meinerseits......um unterscheiden zu können
was denn nun für Energiezähler und was für BMS gedacht ist.
nach ein paar kleinen Fehlermeldungen-irgendwas übersieht man doch immer...
liefen tatsächlich beide Programme  zugleich auf dem selben Prozessor.
 derzeit noch nacheinander, und das Display schaltet immer komplett um,
aber darum gings auch gar nicht, aber zumindest ist klar, dass zum Einen der
Platz reicht (derzeit 71%, noch nichts optimiert, vieles doppelt) und dass wirklich die
BMS-Master Geschichte auch noch nebenbei im Energiezähler laufen kann.
(alles im Hauptprogramm, da ist nichts Zeitkritisches drin, die Energiezählung und die
DZM-Umsetzung laufen in Interrupt-gesteuerten Unterprogrammen, wobei
Unterprogramm nicht gut ausdrückt, dass die Unterprogramme eigentlich
absoluten Vorrang haben..)

Da ist noch einiges zu tun bis das wirklich passt ohne irgendwo zu kollidieren,
AD-Wandler sind doppelt belegt, unterschiedliche Menue-Strukturen
aus Platzgründen stillgelegte Funktionen etc.
ich muss mich da erst wieder so richtig reinversetzen in alles,
das ist nun schon wieder eine Weile her,
aber es ist alles problemlos kombinierbar, soviel steht schon mal fest,.
und es ist noch immer Platz für zusätzliche Features!
(insbesondere Menuepunkte zum Konfigurieren)
Die Preisgestaltung bei den Atmegas ist auch ein wenig seltsam.......
Der Atmega 48 ist in letzter Zeit teurer geworden, aber die größeren
werden eher billiger und der Preisunterschied zwischen dem Atmega88
und dem Atmega 168 mit doppelt so viel Flash-Speicher beträgt gerade
mal 5 Cent!!!. den genauen Betrag habe ich grad nicht im Kopf, aber es sind
keine vier Euro. ....eigentlich geschenkt angesichts der ganzen Funktionen!

Das größte Problem wird letztlich sein, all die gesammelten Infos auf dem
EA-DIP 204 mit 4 x 20 Zeichen lesbar und übersichtlich darzustellen.

Ich habs einfach mal so angeordnet:

















Da ich keine Messwandler dran habe, ist der Spannungswert jetzt nur simuliert.
Zelle 07 wurde gerade erfasst mit 4,05V.  Die 12V Bord"batterie" hat 12,15V
Höchste Zelle: Zelle01 mit 4,05V  Niedrigste Zelle: Zelle01 mit 4,05V
Stromstärke 792A  , 1Minute ist seit letztem Reset vergangen
rechts davon ist noch etwas Platz für Statusmeldungen.........
Die könnten ja z.B. auch die Zeitanzeige überdecken.
Restenergie = 114,2 von 128Ah = 89%

Ein bisschen hab ichs nochmal umgestaltet,
und die Statusmeldung nach links versetzt,
( Entn.  ;    Laden    ;    Standby   ;    Alarm  ;    ?????  )
so ist das besser lesbar.
Noch ein wenig mit der Formatierung spielen,
(Stunden und Minuten mind.2-stellig , die %-Angabe unten immer ganz rechts etc.)
dann sollte das so allmählich passen!


















Mehr geht wohl nicht, ohne unlesbar zu werden.

Nachtrag 25.05.2011:
Die Formatierung ist optimiert, ich habe beschlossen, dass das jetzt einfach mal so passt!
Das Problemchen mit zu langem Text bei negativen %-Werten ist behoben.
jetzt wird bei über 100% und unter 0% ein anderer Text gezeigt.
z.B.: " Voll! 107.7Ah =107% " bzw "Leer!  -27.3Ah    = -27%"
Bei negativen Zahlen kommt das Vorzeichen zusätzlich dazu.
Das Vorzeichen müsste ich entweder dauernd zeigen, das gefällt mit aber nicht,
oder man legt für negative Werte eine andere Formatierung fest...
ich habe mich für letzteres entschieden.
Beim Laden steht ein - vor der Amperezahl, das ist irgendwie"doppelt gemoppelt",
aber das lasse ich vorerst mal so da müsste ich sonst eine neue Variable festlegen
und den Betrag des Wertes anzeigen.... das ist mir zu viel Aufwand
nur für die Optik. Eigentlich ist es ja auch so korrekt, wenn ich die Entnahme
als positiven Wert anzeige.

Heute Abend habe ich den Drehimpulsgeber in Betrieb genommen und ins
Programm integriert. Puuuuhhh....... war nicht ganz so einfach.........
Der "Encoder"-Befehl in Bascom ist offenbar ziemlich unbrauchbar, sobald das
Programm etwas größer ist, oder wenn da sogar wie in diesem Fall
"wait" Befehle drin sind.(in der Zeit passiert halt NICHTS !)
Die Impulse kommen einfach zu schnell hintereinander,und mein
Programm ist incl. Kommentaren und Leerzeilen doch mittlerweile
auf über 1300 Zeilen angewachsen.........
Im Testprogramm gings noch halbwegs, aber im doch schon recht umfangreichen
Energiezähler + BMS-Programm wurde ich nicht mehr froh damit.
Eigentlich wollte ich keinen der "wertvollen" Interrupt-Eingänge mit Eingabetasten
belegen, aber das reagierte alles zu langsam, daher nahm ich doch zumindest einen
Interrupt-Eingang für den Encoder. Damit funktioniert die Eingabe auch, wenn man
etwas schneller am Knopf dreht.In diesem Fall ist das eigentlich völlig egal, die
Kontakte hängen sowieso an den Interrupt-Pins, aber man denkt ja weiter......
Manchmal braucht man diese Eingänge ganz einfach für was Anderes.
Den Drehimpulsgeber finde ich halt ganz besonders praktisch,
weil er 3 - 4 Tasten ersetzen kann und die komplette Bedienung ermöglicht
Ich werte nur die negative Flanke einer Taktspur per Interrupt aus und
vergleiche dann im Unterprogramm den Zustand der zweiten Spur
um Drehrichtung und Takt zu erkennen. Es ginge auch feiner aufgelöst, aber das möchte
ich gar nicht feiner haben. Ich werde ev. noch versuchen, die Flanke mit dem
"debounce"-Befehl und kürzerer Zeiteinstellung auszuwerten......mal sehen obs was bringt.
Der "Encoder"-Befehl war mir einfach zu langsam. Ich habe einiges versucht, die
Entprellung anzupassen, aber das war zwecklos!
Das war auch nicht die Ursache der Probleme!
Vielleicht sollte noch erwähnt werden, dass die aktuelle Programmversion die
Ports und Pins benutzt, die ich auf meiner "Universalplatine" vorgesehen habe.
Da ist fast jeder Port anders belegt, als im "Vor-Prototyp" aber so macht das einfach
noch mehr Sinn, insbesondere weil man so mehrere PWM-Ausgänge, die serielle Schnittstelle,
die Interrupt-Eingänge und die AD-Wandler gleichzeitig nutzen kann.
Das sollte schon so passen!Bisher funktionierts wie erhofft. Ich hoffe, die Platinen
noch am Freitag zu bekommen, dann gibts vielleicht da schon einen ersten Test.
wird aber wohl Montag werden.

Jetzt gehts eh drum, wie ich am Besten weiter mache.
Wenn die Tankuhr- Ansteuerung klappt, dann wäre zumindest die Energiezähler-
Variante einsatzfähig. Die BMS-Master-Funktionen könnte ich ev. abschaltbar machen.
oder einfach entfernen bis ich benutzbare Messwertaufnehmer habe.
da gibts noch viel zu tun, und ich bin mir immer noch nicht sicher, wie ich es denn
aufbauen soll. Die Variante, mit einem Baustein gleich vier Zellen zu messen
wäre mir die liebste aber der unterschiedliche Strom in den Eingangsspannungsteilern
gefällt mir nicht. Das kann man aber anpassen.
Ein Attiny je Zelle wäre diesbezüglich besser, aber dann brauche ich auch je eine
galv. getrennte Schnittstelle pro Zelle.
Die Messung an sich funktioniert schon lange.

Die Energiezähler-Einheit läuft so weit wie gewünscht, da fehlt nur noch der
Praxistest...........Insbesondere die Tankanzeige bereitete Probleme!
Eine kleine Änderung habe ich doch noch gemacht:
So wie bisher schon bei Tiefentladung von mehr als 25% gibt es jetzt
auch eine Meldung bei Laden auf mehr als 125%.
Der Wert ist einfach mal willkürlich gewählt, könnte man auch noch ins
Menue mit reinpacken.......???????

Beim BMS gibt es auch wieder ein paar neue Features.
Neben den Einstellmöglichkeiten für oberen und unteren Grenzwert sowie
der Zellenanzahl per Menue ist nun auch die Geschwindigkeit des Weiterspringens
zur nächsten Zelle im Menue einstellbar (Programmlaufzeit + 10 - 2550 ms)
Ausserdem fehlte noch die Möglichkeit einzelne Zellen gezielt zu messen.
Das ist jetzt auch möglich. Ein kurzer Druck auf den Knopf schaltet um auf
Einzelmessung (Min-Max Anzeige ist in diesem Modus nicht aktiv)
Drehen am Knopf wählt die nächsten Zellen.
ein weiterer kurzer Druck schaltet wieder zurück auf automatischen Durchlauf.
Im Normalbetrieb ist die Drehung des Knopfes ohne Funktionalität.

Kurzer Druck schaltet um auf Einzelmessung und wieder zurück.
ein langer Druck (ca 7s) setzt die Messwerte zurück ("Warmstart")
und ein noch längerer Druck bzw gehaltene Taste nach Reset startet das
Setup-Menue. Die BMS-Menuepunkte kommen nach den Zähler-Einstellungen.

Derzeit:
Ah voller Akku
Tankuhr 100%
Tankuhr 50%
Tankuhr 0%
Nullpunkt LEM-Wandler
Messung beim Laden
Schwelle Relais
Abgleich Drehzahlmesser
--------------------------BMS
Alarm unten (Spannung einer Zelle)
Alarm oben (Spannung einer Zelle)
Zellenzahl
Geschwindigkeit

Eventuell noch zusätzlich einstellbar geplant:
Schwelle für Alarm "Ueberladen" (mehr als ....%)
Schwelle für Alarm "Tiefentladen"(mehr als ....%)
Warnschwelle oben (Vorwarnung ohne Alarm)
Warnschwelle unten (Vorwarnung ohne Alarm)
Anziehen des Melderelais bei BMS-Alarm
Alarm bei Fehler Bordbatterie

Na ja, irgendwann ist Schluss.......Das reicht doch, oder??
wenn das so weitergeht dann muss ich im Menue noch
verzweigen......... Letzter Stand an Programmumfang:
derzeit sind 69% Flash belegt, da geht noch vieles......
aber anzeigen wird immer schwieriger!
Die Warnmeldungen kommen derzeit in der untersten Zeile.
eigentlich könnte man meinen, sie wären in der dritten Zeile besser aufgehoben,
aber da ich die %-Werte mit Erscheinen der Meldung festlege
würde sich der Wert dann ohnehin nicht mehr ändern.
Es würde also gar keinen Sinn machen, SOC weiter anzuzeigen.
Man bekommt die Meldungen nur per Reset wieder weg.
Eigentlich ist das durch Zufall entstanden, weil "früher" nur die
Tiefentlade-Meldung existierte und ein Nachladen nicht vorgesehen war,
aber das ist ganz gut so! Das bleibt so!

Nachtrag 30.5.2011:
Eigentlich hätten die Platinen heute ankommen sollen...na ja dann halt morgen...
An dieser Stelle ist gerade Zeit, ein wenig über die Messmodule nachzudenken.
Da gibt es einige noch nicht wirklich gelöste Problemchen, aber die sind
vom Ansatz her wichtig, also von direktem Einfluss aufs Gesamtkonzept.
Hier gehts um die Frage der Referenzspannung, der Versorgung und
der galv.Trennung der Datenübertragung und der Versorgung.
Alles hat Vor- und Nachteile perfekt ist keine Version.Und da ich die Daten
seriell übertragen will brauche ich auch noch einen Quarz je Messmodul.
Wie weiter oben schon erwähnt habe ich zwei "Favoriten"
Variante1 : Je ein attiny25 pro Zelle +Quarz + Optokoppler, der könnte
direkt aus der Zelle versorgt werden,wenn er mit interner Referenz von 1,1V
arbeitet. die 2,5V Referenz kann ich nicht nehmen, da die Zellenspannung
so weit abfallen kann.
Vorteil: Messauflösung, Stromverbrauch(?), Stromaufnahme alle gleich
Nachteil: Quarz und 2 Optokoppler je Zelle

Variante2: Je ein Atmega48 für je vier (bzw fünf(?)) Zellen
Spannung wird aus der Differenz von zwei Eingängen ermittelt. nur 1/8 der
Genauigkeit bzw Auflösung, aber das genügt gerade noch.
Immer vier Zellen als Einheit uberwacht, Versorgung aus den Zellen,
oder auch per "ADUM"-Wandler. Hierzu fehlen noch Versuche, was letztlich Sinnvoller ist.
Die "Adum" brauchen ziemlich viel Leistung, und die Ausgangsspannung ist nicht
geregelt und 5,2V am Ausgang ist ein "doofer" Wert. also entweder direkt
den Atmega damit betreiben und die interne Referenz von 1,1V nutzen oder
auf 3,3V ausweichen. Die Qualität der internen Referenz ist hier entscheidend.
Dazu fehlen noch Versuchsergebnisse.Bei einem "ADUM" für vier Zellen
ist die Optokoppler-Frage auch gleich gelöst.Mit "ADUMWürden die Wandler
vom 12V-System versorgt und an den Akkus wären "nur" noch die Eingangsspannungsteiler.
Die sind aber nicht zu vernachlässigen, und da jeweils gegen ein und die selbe Masse
gemessen wird sind die Stromstärken nicht identisch.
Das müsste man auf gleiches Niveau erhöhen und das möchte ich nicht.....
Aus den 14V könnte man den Atmega aber auch versorgen , dann aber nicht abschalten,
aber geht das überhaupt? über die Schutzdioden würde der Mikroprozessor
auch mit Spannung versorgt werden. das muss ich auch noch testen!
trotzdem ist mir diese Variante lieber, zumal da auch noch vier PWM-Ausgänge da wären
um eine Balanzier-einrichtung anzusteuern. (gar nicht ganz einfach, wegen der
spannungspotenziale bis 14V und der Betriebsspannung des Atmega von 5V)

Ich werde vorrangig versuchen die Version "1 Atmega für vier Zellen" in eine
praxistaugliche Form umzusetzen und vielleicht kann ich sogar auf die Optokoppler
bzw "ADUM" verzichten....mal sehen.....da war mal was....
siehe   Seiko S-8209BAA bei denen werden die Daten über eine Kette von
Mosfet durchgereicht (Daisychain) aber ich sehe da Probleme beim Anklemmen.
Siehe hierzu:

http://vehikelfranz.blogspot.com/2009/09/jawohl-der-ladereglerbalancer.html

....das Projekt zieht sich in die Länge....

Damals hatte ich auch schon den LTC6802 im Visier.....abgesehen von der nicht ganz
einfachen Auswertung habe ich auch schon negative Meinungen zu dem Chip gehört.
Es soll angeblich Betriebszustände bzw Defkte geben, bei denen der Spannungswert einer
Zelle "einfriert" und weiter ausgegeben wird ohne sich noch zu ändern.
(Ich konnte das nicht selbst nachprüfen, das ist also keineswegs belegt, eigenntlich wäre der
Baustein sehr gut geeignet für das, was ich vorhabe!!)
siehe dazu auch:
http://www.linear.com/demo/DC1393B


mfG
Franz











03 Mai 2011

Platinen entwerfen mit Eagle

Es ist mal wieder an der Zeit, dass sich was tut.......
Heute hab ich mal begonnen, eine halbwegs universell
einsetzbare Platine zu zeichnen, die man je nach Einsatzzweck
unterschiedlich bestücken kann.........
Ich habe mich dafür entschieden, das mit EAGLE zu machen.
(Das verwenden wir auch in der Firma und es hat sich
bestens bewährt) Die kostenlose Demoversion ist
bis zum halben Euro-Format verwendbar, das reicht in diesem Fall.
Das Programm ist aber auch als "Vollversion mit Einschränkungen"
nicht allzu teuer.Erst wenn man "alles" haben will gehts richtig
ins Geld!

Ich habe damit noch kaum gearbeitet, aber es scheint
nicht allzu schwer zu sein......wenn ich da an "früher" denke,
als ich in den 90er Jahren mit ORCAD und TANGO ein paar
Leiterplatten entworfen habe und dann der 386er PC über Nacht
rechnete und dann meist eine Leitung nicht verlegen konnte.......

Zunächst muss ein Projekt angelegt werden.
Da sind dann Schaltpläne und Platine etc. zusammengefasst

Ein Anfänger steht zunächst vor Allem vor dem Problem
mit den Bibliotheken, das sind die Dateien mit den
Bauteil-Definitionen und Zeichnungen der Pads etc.
Da werde ich mir wohl noch einige Male helfen lassen müssen.
Lädt man die falschen Bibliotheken ,dann findet man genau das
Teil nicht, das man gerade platzieren will. Bei Bibliotheken
unklarer Herkunft sind oft irgendwelche Fehler verborgen.
Da kann schon mal eine Bohrung zu klein sein....
Es ist wichtig, hier nicht den Überblick zu verlieren.
Am Besten ist es fast schon sich eine Eigene mit den wichtigsten
Komponenten anzulegen, die man meist verbaut.
das spart viel Sucherei, und man kann sich drauf verlassen.
insbesondere, wenn man ein Projekt auch mal auf einem anderen
Rechner weiterbearbeitet ist es von Vorteil, die passenden
Bauteilbibliotheken zur Hand zu haben.
(....das war damals mit den alten Programmen oft ein
riesen Drama.....wenn man später mal an einer alten Platine
was ändern musste passte oft gar nichts mehr. Deshalb
erwähne ich das hier.

Aber der erste Schaltplan nahm recht schnell Gestalt an.
Da passen noch keine Bauteilnamen und Typen, und so manches
wie Schutzbeschaltungen etc. fehlt noch
aber das sollte nur mal grundsätzlich zeigen, wie ich mir das so vorstelle.
Einfach so zum Einarbeiten
Kern der Platine ist ein Atmega der Reihe 8, 48, 88, 168 etc....
mit denen arbeite ich am liebsten, weil die sehr universell verwendbar sind.
(Und mit Bascom wunderbar einfach zu programmieren!!!)
Ich möchte einige der AD-Wandler nutzen können, dazu brauche ich einige
Spannungsteiler an den Eingängen, alle freien Ports sollen über Widerstände
nach draußen geführt werden.Das kann man später als Ein- oder Ausgang nutzen.
Das Ganze soll mit 12V laufen, ggfs zwei getrennte 12V (Dauer- und Zündung)
5V sollen zusammen mit einem AD-Wandler-Eingang auf eine Klemme rausgehen für
den LEM HASS200 Stromwandler bzw für den Positionsgeber bei der
Positionier-Geschichte oder für den "Fahrtregler" bei PWM-Einsatz.
Die Mosfet bilden eine PWM H-Brücke, das brauche ich für ein
"ganz anderes Projekt" da muss ein kräftiger Stellmotor exakt in Position fahren.
Die später vorgesehenen Transistoren schaffen kurze Zeit (ca.1min) ca 30A ohne
Kühlung, damit kann man schon einiges anfangen, selbst wenn man damit nur was
schaltet. Als Mosfet-Treiber sind TC4431 vorgesehen, die an sich schon als
recht kräftige Treiber nutzbar sind und auch für die Umsetzung von 5 auf 12V
gute Dienste leisten. (leider nicht ganz kurzschlussfest-schade.......)

Ich hatte schon überlegt, als Steuer-Rechner für die Mosfet einen ATtiny 26
einzusetzen, aber dann wäre die Platine nicht mehr so universell konfigurierbar
gewesen. Aber für reine PWM-Geschichten sollte man sich den mal genauer
anschauen.Der hat zwei PWM-Kanäle mit je einem invertierten und einem nicht invertierte
und nicht überlappendem Ausgang, sowie bis zu elf (?) AD-Wandler-Eingänge
Ebenso recht interessant ist der ATtiny 24 der hat u.a. einen 16bit-Timer
wie ich ihn für die Umsetzung Stromwandler-Signal zu Drehzahlmesser-Takt
brauche.Aber das kann der Atmega 48 und seine "großen Brüder" auch.

Deshalb ist der Atmega48 HIER die bessere Wahl.
An Port B betreibe ich normalerweise mein Display (EA-DIP204)
Da halte ich mich an die Belegung des STK500 - Boards,
so brauche ich nur umstecken.

(Da ist alles auf einem 10-Pol Bandkabel vereint, incl. Versorgung)
Da sind auch noch die Programmier-Eingänge drauf und leider auch die
PWM-Ausgänge von Timer 1 und 2, die dadurch blockiert sind.
Das macht aber nichts, wenn ich Timer 1 und 2 nicht für PWM
benutze, sondern nur als Zeitbasis und da per Interrupt
irgendwelche Unterprogramme steuere.
Wenigstens die PWMAusgänge von Timer 0 liegen auf Port D,
und da kann ich sie benutzen. Im Notfall müsste man halt den betreffenden
Anschluss fürs Display auf einen anderen Port legen.
Programmieren geht auch mit Display, das zeigt dann eben wirres Zeug.
Da alle Programmierleitungen auch auf den Displaystecker gehen
kann ich auf den ISP-Anschluss verzichten und mit einem Adapter
über den Display-Anschluss umprogrammieren.
(über kurz oder lang wird wohl eine SMD-Version des Atmega
rein kommen, und die ist dann fest eingelötet, da muss das Programmieren
des Gerätes funktionieren)

Port C sind die AD-Wandler-Eingänge, die aber auch als Ausgang benutzt
werden können.

Port D hat die ganzen "spezialisierten" Ein-und Ausgänge.
D0 und D1 ist für die serielle Schnittstelle.
Wenns vom Platz noch geht sollte ev noch ein MAX232 drauf!???

Der Platz reicht aber nicht, aber bei einer SMD-Variante muss das sein!
D2 und D3 sind die Interrupt-Eingänge, z.B. für zeitkritische
Flankenerkennung bei Trigger- und Zähl-Funktionen
D4 ist meist frei verwendbar (XCK)
D5 und D6 sind die PWM-Ausgänge von Timer 0
D6 und D7 sind die Analog-Komparator-Eingänge
Da muss ich noch überlegen, wie ich das mache, dass man
D6 ggfs für den Komparator nutzen kann.Das hab ich
aber noch nie gebraucht.
Das wird zwar nicht die eierlegende Wollmilchsau,
aber als Energiezähler, BMS-Zentrale, Positioniersteuerung
und Fahrtregler, halt als kleine SPS (als Bausatz ???)
will ich das selbe Layout nutzen können.Sollte klappen!
Mal schaun ob ich das alles auf die nutzbaren 60 *70 mm

der 70 * 83 mm großen Platine packen kann.
Möglichst mit bedrahteten Teilen zwecks Lötbarkeit.
(da gibts bei Conrad so geniale kleine Modulgehäuse,
und da soll das rein! Best.Nr. 521256)
Ev noch ein Relais vorsehen? das wird eng!
























Das reicht fürs Erste.
Ich werde in der nächsten Zeit sowohl am Layout als auch am Energiezähler
weiterbasteln, um alle neuen Ideen auch im Layout zu berücksichtigen.
Da hat sich in den letzten Tagen nochmal einiges geändert bzw. ist noch
einiges dazugekommen.
Das mit der frei konfigurierbaren Tankanzeige hatte ich schon erwähnt.
Die Umschaltung, ob Nachladen erfasst wird oder nicht ebenfalls.
Der Nullpunkt des Messwandlers kann eingestellt werden.
Ganz neu ist ein Relaisausgang der in %Restenergie konfiguriert
werden kann. Das Relais zieht bei Unterschreiten der Schwelle an.
Der Schliesser geht nach Gnd. (Ob da der Platz reicht.........
Die Temperaturmessung steht ebenfalls auf der Streich-Liste........)
Und......man kann jetzt den Drehzahlmesser abgleichen
(in 1%-Schritten, 100% = Std= 4-Zyl; 150%=6-Zyl; 200=8-Zyl)
Alle Konfigurationen erfolgen per Menue, das Menue wird gestartet
indem bei gehaltener "Enter"-Taste ein Reset ausgelöst wird.
So genügen vier Tasten zum Bedienen. (rauf runter weiter und Reset)
Bei Reichelt (anderswo auch....) gibt es ganz tolle Drehimpulsgeber
mit integriertem Taster. Ein Auswerteprogramm dafür hab ich schon
mal geschrieben.....Das wär auch was! links rechts und Enter ist kein
Problem, und wenn man dann noch per Zeitschleife mit der Enter-Taste
den Reset auslösen würde......... warum eigentlich nicht?
Ein Knopf für die gesamte Bedienung!
antippen = Enter, sehr lange drauf = Reset......... Das geht!!!!!!!!!!!
Vom Programm her ganz einfach, ein paar verschachtelte If..then-Schleifen
mit Wartezeit und eine Sprungmarke an den Anfang wo alle Variablen
zurückgesetzt werden. Das ist eigentlich nur ein "Warmstart", aber
das erfüllt seinen Zweck perfekt.Man muss eigentlich nur mit
dem "DEBOUNCE"-Befehl aufpassen! der muss vorher stehen
bzw vorher und nachher, je nach Funktion.
Der wertet schliesslich die selbe Taste aus!


Nachtrag 5.5.11:
Heute hab ich mal versucht, alles auf die Platine zu bringen.
Das sieht schon sehr gut aus!
Noch ein bisschen besser anordnen, aber das passt alles drauf!
Da haben also auch ein paar Extras noch locker Platz.
Den Spannungsregler über den Atmega, Treiber und Transistoren drehen,
damit links die Leistung und rechts der Prozessor ist.
Das ist fast schon gut so!
So macht das Spass!

























13.05.2011:
Alles ein bisschen besser angeordnet und noch einige Teile zusätzlich
für alle möglichen und unmöglichen Fälle und schon schaut alles
ganz anders aus.


























So passt das hoffentlich einigermaßen!
Ich lasse mal ein paar dieser Platinen fertigen, und
dann wirds interessant!
ganz ohne Drähte wirds nicht gehen, aber mehr
Brücken und Jumper konnte ich hier nicht mehr
unterbringen.....Wir werden sehen!....

















.....so sieht das dann aus!
Ich bin begeistert! Natürlich habe ich eine Kleinigkeit übersehen,
aber das ist nicht wirklich schlimm, eine Leiterbahn ist zu dünn,
ein 2cm langer Draht auf der Rückseite korrigiert das.....na ja.....
(Da hat Eagle eine Leitung neu verlegt, bzw ich hab das selbst veranlasst,
und dann hab ich die kurze dünne Leitung übersehen....Typischer Fehler!
passiert auch den Profis regelmässig.....)

mfG
Franz