Forum: Projekte & Code DVM mit DOGM162W-A, ATMEGA8A, AVRASM


von Klaus D. (rodo38)



Lesenswert?

Geschätztes Forum,

hier kommt ein kleines DVM mit dem LCD DOGM162W-A, ATMEGA8A, Programm in 
Studio 4 Assembler.

Funktionen:

Rote  Taste: Batteriespannung Ein Aus
Gelbe Taste: Backlight Ein Aus
Weiße Taste: Kalibriermodus, die Werte werden ohne Korrekturberechnung 
angezeigt
Grüne Taste: Wahl des Modus

Modi, zu wählen mittels der grünen Taste:

DC Range Auto (automatisch bei Einschalten der Batteriespannung)
DC Range   0,25 V, Auflösung 0,00025 V
DC Range   2,5  V, Auflösung 0,0025  V
DC Range  25    V, Auflösung 0,025   V
DC Range 250    V, Auflösung 0,25    V
AC Range Auto
AC Range   0,25 V, Auflösung 0,00025 V
AC Range   2,5  V, Auflösung 0,0025  V
AC Range  25    V, Auflösung 0,025   V
AC Range 250    V, Auflösung 0,25    V

Anzeigen in LCD_line2, falls zutreffend:

"LOW BATTERY"       Batteriespannung < 3,48 V
"OVERFLOW"          Erreichen der Ziffernfolge 25575 (z.B. 1023 * 0,25 = 
255.75)
"CALIBRATION MODE"  kurzzeitig, dann der Wert des Registers R24

Die Datei "Kalibrierwerte des DVM.xls" zeigt, dass man bei DC-Messungen 
ohne die Berechnung von Korrekturwerten auskommt, bei AC-Messungen 
jedoch nicht. So "ideal", wie der Gleichrichter (N3/3 + N3/4) in der 
Literatur dargestellt wird, scheint er demnach nicht zu sein.

In der LCD_line2 soll eigentlich ein Fortschrittsbalken aus 0 bis 80 
"Balken" angezeigt werden (Quasi-Analog-Anzeige). Das ist mir mit diesem 
LCD bisher nicht gelungen, wohl aber mit dem LCD CP594V-0. Da in diesem 
Forum nur Projekte und Code vorgestellt, aber keine Fragen gestellt 
werden sollen, gibt es einen weiteren Beitrag zu diesem Thema im Forum 
"µC und Elektronik", Titel "LCD DOGM162W-A CGRAM".

Für jegliche Kritik, insbesondere an meinem Stil der Programmierung in 
Assembler, bin ich sehr dankbar, ganz besonders dann, wenn ich etwas 
lernen kann.

Beste Grüße

Klaus

von Klaus D. (rodo38)



Lesenswert?

Geaschätztes Forum,

das DVM hat alle Merkmale desjenigen im vorherigen Beitrag.

Mittels der weißen Taste kann jetzt zusätzlich folgendes gewählt werden:

1.
Die LCD Line 2 bleibt leer.
2.
Die LCD Line 2 zeigt als Quasi-Analog-Anzeige einen Bar Graphen mit den 
bis zu 80 maximal möglichen Bars. Zwischen den LCD-Zeichen ergibt sich 
jeweils eine Lücke weil sich dort keine Pixel befinden.
Bilder dazu: DSC22639.pdf und "5. CGRAM TYPE 1.pdf"
3.
Die LCD Line 2 zeigt als Quasi-Analog-Anzeige einen Bar Graphen mit bis 
zu 48 Bars. Diese sind so angeordnet, dass der Graph unterbrechungsfrei 
dargestellt wird.
Bilder dazu: DSC22640.pdf und "6. CGRAM TYPE 2.pdf"
4.
Die LCD Line 1 zeigt die Werte so, wie sie vom ADC gelesen wurden ohne 
Korrekturberechnung.
Die LCD Line 2 zeigt " CALIBR. R24=xxx" wobei xxx 000 bis 080 sein 
können.
Die Funktion dient der Kalibrierung des DVM, s. die Datei 
"Kalibrierwerte_des_DVM.xls" im vorherigen Beitrag.
Bild dazu: DSC22641.pdf

Der Schaltplan "1. Entire Diagram.pdf" enthielt einen Fehler: Die gelbe 
Taste für die Background Beleuchtung war falsch angeschlossen. Die hier 
angefügte gleichnamige Datei ist korrigiert.

Die Datei "DVM mit Quasi-Analoganzeige.zip" enthält den kompletten Satz 
aller Dateien. Dazu gehört auch die Datei "DVM Modell.spl7". Eine 
kostenlose Datei zum Ansehen und Drucken ist der "sPlan 7.0 Viewer".

MfG

Klaus

von Florian O. (simuru)


Lesenswert?

Hallo Klaus

Genau sowas wollte ich auch schonmal machen aber bin leider nie dazu 
gekommen. Ich finds super, dass du deine Sachen hier zur Verfuegung 
stellst und habe als Laie noch ein zwei Fragen.


Zur Nullpunkteinstellung:
Ich nehme an, dass die dazu da ist, die Offset Spannung am OpAmp 
auszugleichen. Hat das ganze nicht durch die beiden Dioden einen 
schrecklichen Temperaturkoeffizienten? Denn dann koennte man auch die 
Dioden weglassen und nur einen Spannungsteiler nehmen, oder?


Zum Verhalten bei Wechselspannung:
Muesste nicht an N3/3 der Widerstand hinter beide dioden?
Also:
1
OpAmpAus --+-->--+
2
          |     +--[__]--- OpAmpEin
3
          +--<--+

Und dann sind da ja noch 2x 10uF Kondensatoren drin, brauchen die 
vielleicht zu lange zum laden?


Und zum schluss noch eine Frage: Was passiert wenn man ausversehen + und 
- vertauscht?

Die Spannung sollte ja durch die beiden antiparallelen Dioden auf 0.7V 
begrenzt sein. Also fallen aus N3/1 maximal -0.7V, welche durch den 
Spannugsfolger von N3/2 dann auf den ATmegapin gehen oder irre ich mich?


Wie gesagt ich finde es ist ein super Projekt, nur die paar Punkte sind 
mir unklar.

Grusz Florian

von Klaus D. (rodo38)


Lesenswert?

Hallo Florian Otte,

vielen Dank für Dein Lob und Deinen Beitrag.

Ich bitte Dich mit meiner Antwort bis morgen Nachmittag zu warten. Heute 
Abend habe ich keine Lust mehr (ich bin 76) und befürchte auch, dass es 
bei den Antworten auf Deine Fragen an der nötigen Sorgfalt mangeln wird, 
wenn ich sie jetzt hinschludere. Deine Fragen sind mehr als berechtigt 
und verdienen es, korrekt bearbeitet zu werden. Immerhin kann ich bei 
bei der Beschäftigung mit der Materie sicher auch noch einiges lernen.

Beste Grüße

Klaus

von Florian O. (simuru)


Lesenswert?

Guten Morgen Klaus.

Die Geschichte zur Offseteinstellung ist mir nun etwas klarer:
Da beide Dioden einen aehnlichen Temperaturkoeffizienten aufweisen 
sollte sich dieser ausgleichen. Aber gilt das gleiche nicht auch fuer 
die Widerstaende?

von Klaus D. (rodo38)


Lesenswert?

Hallo Florian,

ich bitte Dich höflich um Entschuldigung für die verspätete Antwort auf 
Deine Fragen.
Zunächst: Die Schaltung <1. Entire Diagram.pdf> hier enthält einen 
kapitalen Fehler: Die Ausgänge von N3/2 (Pin7) und N3/4 (Pin14) sind 
laut Schaltplan mit je einem Kondensator und dahinter einem Widerstand 
beschaltet. Das geht natürlich nicht.

Bitte sieh Dir mal folgenden Link an:

Beitrag "ADC Atmega 16 richtig beschalten"

und darin meinen Beitrag vom 02.02.2015 20:30. Hier findest Du auch den 
korrigierten Schaltplan. Die R's und C's bilden je einen Tiefpass.
Evtl. ist das gesamte Frage- und Antwort Spiel für Dich interessant und 
hilfreich.

Nun zu Deinen Fragen:

> Zur Nullpunkteinstellung:
> Ich nehme an, dass die dazu da ist, die Offset Spannung am OpAmp
> auszugleichen. Hat das ganze nicht durch die beiden Dioden einen
> schrecklichen Temperaturkoeffizienten? Denn dann koennte man auch die
> Dioden weglassen und nur einen Spannungsteiler nehmen, oder?

Statt der Dioden können auch Widerstände eingebaut werden. Die Schaltung 
mit den Dioden ist aber nach meiner Erfahrung sehr stabil. Sie befand 
sich auch in einer Reihe von Elektronik-Modulen meines früheren 
Arbeitgebers.

> Zum Verhalten bei Wechselspannung:
> Muesste nicht an N3/3 der Widerstand hinter beide dioden?
> Also:

> OpAmpAus --+-->--+
>          |     +--[__]--- OpAmpEin
>          +--<--+

Im Netz gibts einige Varianten für den sog. "idealen" Gleichrichter. Ich 
habe diejenige aus dem Buch von Seifart "Analoge Schaltungen", ISBN 
3-341-01298-2 Seite 431, Bild 16.10 genommen. Ob dies aber die idealste 
der "idealen" Gleichrichterschalungen ist, weiß ich nicht. Falls Du 
Versuche dazu machst wäre ich am Ergebnis sehr interressiert. Meine 
E-Mail Adresse: rodo38@gmx.net.

> Und dann sind da ja noch 2x 10uF Kondensatoren drin, brauchen die
> vielleicht zu lange zum laden?

Ich vermute mal, dass Du auf den Fehler im Schaltplan gestossen bist. 
Der tritt übrigens nicht auf im Schaltplan <2._Upper_Circuit_Board.pdf".

> Und zum schluss noch eine Frage: Was passiert wenn man ausversehen + und
> - vertauscht?

> Die Spannung sollte ja durch die beiden antiparallelen Dioden auf 0.7V
> begrenzt sein. Also fallen aus N3/1 maximal -0.7V, welche durch den
> Spannugsfolger von N3/2 dann auf den ATmegapin gehen oder irre ich mich?

Wenn Du die Dioden 1N4007 meinst: Das siehst Du vollkommen richtig. N3/1 
wird auch durch sehr große negative Spannungen (z.B. -300V) am 
Messeingang U DC oder am Messeingang U AC nicht zerstört. Wie sich 
nachträglich herausgestellt hat ist einer der beiden überflüssig, weil 
beide mit je 4 x 39kOhm beschaltet sind.
Weil der ADC des µP's nur positive Spannungen digitalisiert, wird bei 
negativen Spannungen am Messeingan 0V angezeigt.
Wenn man das ändern wollte, dann ginge das nur duch Verzicht auf eines 
der sowieso schon mageren 10 Bits des ADC, weil man ja irgendwie das 
Minus kenntlich machen müßte.

Beste Grüße

Klaus

von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

Geschätztes Forum,

das DVM wurde noch mit einem kleinen Lautsprecher ausgerüstet. Damit 
kann es jetzt auch zu Durchgangsprüfungen benutzt werden.

Im Gesamtschaltplan wurde ein Fehler korrigiert: Die RC Glieder
15k / 10 µF an den µC Pins 27 und 28 waren falsch rum gezeichnet.

Das für die Durchgangsprüfung erweiterte Programm sowie der korrigierte 
Schaltplan sind angehängt:

<DOGM162W-A_Assembler_Programm.zip> und
<DVM_Modell_korr.pdf>

Beste Grüße

Klaus

von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

Geschätztes Forum,

hier noch ein Nachtrag: Die Excel Datei mit den Kalibrierwerten des DVM 
wurde erweitert. Die Tabelle 1 enthält jetzt eine Kurve für den Bereich
2.5 VAC mit einer polynomischen Näherungskurve 4. Grades. Diese Kurve 
passt sich recht ordentlich den Meßwerten an.

In Tabelle 2 habe ich diese Näherungskurve 4 mal mit unterschiedlich 
gekürzten Nachkommastellen durchgerechnnet:
1. volle Stellenzahl
2. gekürzt auf 2 Stellen
3. gekürzt auf 1 Stelle
4. gekürzt auf 0 Stellen

Die Version 2. ist ausreichend.

Jetzt wäre es natürlich schön, diese Formel auch im Assembler Programm 
zu benutzen statt der häßlichen Listen, welche bis jetzt verwendet 
werden.
Ich habe aber keine Idee, wie ich die Formel

Y = 2.47*X^2 - 15.61*X^3 + 35.81*X^2 - 28.59*X^1 - Konstante

in Assembler umsetzen könnte und ob das mit einem ATMEGA8 überhaupt 
ginge.

Hilfe hierzu wäre natürlich mehr als erwünscht. Aber auch die fundierte 
Aussage, dass es tatsächlich nicht geht, wäre für mich hilfreich.

Die Kalibrier Datei

<Kalibrierwerte des DVM.xls>

ist hier angehängt.

Grüße

Klaus

von Ingo (Gast)


Lesenswert?

Hallo Klaus,

Du musst jeden Therm einzeln mit Festkommaarithmetik rechnen. In 
Assembler sicher kein Geschenk...

von Paul B. (paul_baumann)


Lesenswert?

Ingo schrieb:
> Du musst jeden Therm einzeln mit Festkommaarithmetik rechnen.

Es wird nichts so heiß gerechnet, wie es gekocht wird.

MfG Paul

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.