Digitales Druckmessgerät (Manometer)
Das Digitale Druckmessgerät (Digitalmanometer, im weiteren Text als "DMM" abgekürzt) ist in ein handliches Kunststoffgehäuse (sp2000sw/Reichelt) eingebaut und kann, dank des auf der Platine befindlichen Spannungsregler, mit einem Handelsüblichen Steckernetzteil mit 9VAC/250mA versorgt werden. Die Genauigkeit von +/- 2,5% ist hauptsächlich dem verwendete Drucksensor MPX5700GS von Freescale zu verdanken. Ich habe den MPX5700 schon zur Steuerung meines Selbstbau-Kompressor verwendet, wollte damals aber schnell zum Ziel kommen und habe deshalb anstatt einer ordentlichen Berechnung (ADC-Wert -> Bar), einfach eine Tabelle (LUT) zur Umrechnung benutzt. Da man sich ja weiterentwickeln möchte, habe ich beim DMM die Umrechnung (10-Bit) im Programm gemacht und gleich noch PSI und Kilopascal hinzugefügt.
Das wesentliche:
- Dreistellige Siebensegmentanzeige
- MPX5700 (Freescale) Sensor mit max. +/- 2,5% Abweichung
- Zeigt den Druck in 3 verschiedene Maßeinheiten an
- Umschaltbar mit Taster
- Modusanzeige über 2 LEDs
- 0..7 Bar, Auflösung 1/100
- 0..700 kPa (Kilopascal) , Auflösung 1/1
- 0..101 PSI Auflösung, 1/10 (bis 99.9) ab 100 1/1
- Nullabgleich wird im EEprom gespeichert
Die hohe Auflösung von 1/100 Bar (2 Stellen hinter dem Komma) ist besonders von nutzen, wenn man ein Drucksystem wie z.B. einen Kompressor auf Dichtheit prüfen will. Hier sieht man sofort, gegenüber einem herkömmlichen Zeigerinstrument, (wenn wenn auch noch so wenig) Luft entweicht und so der Druck sinkt. Meine anfänglichen Befürchtungen, das bei dieser Auflösung das letzte Digit etwas "zappelt" waren unbegründet. Die Anzeige bleibt recht stabil und lässt sich gut ablesen.
Die Schaltung
Die Rechnerei übernimmt ein ATmega48 der intern mit 8 MHz getaktet wird. An Pin 23 (ADC0) ist der Ausgang des Drucksensor MPX5700 angeschlossen, der mit den im Datenblatt empfohlenen Kondensatoren (Seite 4, unten) beschaltet ist. Die 3 grünen Siebensegmentanzeigen werden an den gemeinsamen Anoden über die 3 PNP Transistoren BC557 im Multiplexverfahren angesteuert. Die Taster S1 und S2 für Moduswechsel und Nullabgleich, sind gegen GND geschaltet. Es werden die internen Pullups des ATmega48 verwendet. Die beiden LEDs zeigen hierbei den gewählten Modus (Bar, PSI oder kPa) an. Das Netzteil besteht aus einer einfachen Standardschaltung mit dem Festspannungsregler 7805 und ein paar Kondensatoren. Der Dil-Gleichrichter dient als Verpolungsschutz. Wollte man das Netzteil mit Wechselspannung betreiben, müsste C8 grösser dimensioniert werden. Mindestens 220µF besser 470µF/25V müssten es dann schon sein.
Wissenswertes über den Drucksensor MPX5700GS*
*Soll die Schaltung nur nachgebaut werden, kann dieser Teil übersprungen werden
Der Drucksensor MPX5700 von Freescale ist zwar etwas teuer, dafür aber für einen AVR mit A/D- Wandler einfach zu handhaben. Der Sensor hat eine Genauigkeit von +/- 2,5% und eine Range von 0..700 kPa (Kilopascal). Wikipedia verrät, das dies einem Druck von 0..7 Bar entspricht. Am Ausgang des MPX5700 steigt die Spannung von 0,2 - 4,7 Volt proportional mit dem Druck von 0..7 Bar. Liegen also am Ausgang 4,7 Volt an, ist am Sensor ein Druck von 7 Bar. Bei 0,2V sind es 0 Bar. Zieht man den Offset von 0,2 Volt von den 4,7 Volt ab, bleiben 4,5 Volt für den kompletten Messbereich von 0..7 Bar.
Berechnung
Der A/D Wandler wird mit 10 Bit und die Referenzspannung mit
5 Volt konfiguriert. Da die 5 Volt am Eingang des A/D-Wandlers nicht
ganz erreicht werden und ausserdem die (ca.) 0,2 Volt Offsetspannung
subtrahiert werden, muss zuerst der ADC-Wert bekannt sein, der sich bei
Maximaldruck einstellt. Da +5V am Eingang des A/D-Wandlers 1023
entspricht, rechnen ich 1024 * 4,5 / 5 und erhalte einen ADC-Wert von
921,6 für einen Wert von 4,5 Volt (=7 Bar). Die Anzeige soll später 2
Stellen nach dem Komma anzeigen, deshalb muss bei einem A/D-Wert von
921,6 (gerundet wird zum Schluss) der Wert 700 berechnet werden. Der
Dezimalpunkt der ersten Anzeige wird eingeschaltet und man erhält 7.00
Bar. Das ganze nennt sich Festkommaarithmetik.
Teilt man die 700 auf die 921,6 auf, erhält man 0,7592. Der ausgelesene
A/D-Wert muss also immer mit 0,7592 multipliziert werden um den
momentanen Druck zu berechnen. Da man in Assembler nur schwer mit
Kommazahlen multiplizieren kann, benutze ich folgenden Trick. Die
0,7592 werden zuerst mit 0x10000 (65536 dez.) multipliziert und man
erhält 49778 als Konstante. Dieser 16-Bit Wert kann leicht mit dem
ausgelesenen A/D-Wert multipliziert werden. Das 32-Bit Ergebnis wird
dann wieder durch 0x10000 geteilt. Das geht einfach, indem man die
beiden untersten Bytes (Byte0 und Byte1) des 32-Bit Wert verwirft.
Byte2 und Byte3 ist also das 16-Bit Ergebnis.
Die Berechnung sieht also im Wesentlichen wie folgt aus:
- A/D Wandler auslesen
- Offset 0,2V abziehen
- mit 49778 multiplizieren
- die beiden unteren LSBs verwerfen (Durch 0x10000 teilen)
- In Dezimal wandeln
- Dezimalpunkt der ersten Anzeige einschalten
Platinenlayout
Die Platine ist einseitig und wie oben schon erwähnt, den
maßen des SP2000sw Gehäuse angepasst. Bevor man jedoch mit der
Bestückung beginnt, sollte die gebohrte Platine in das
Gehäuseunterteil gelegt werden um die 4 Bohrungen (Durchmesser 3mm)
rund um den MPX5700 durch das Gehäuseunterteil fortzuführen. Die
Leiterplatte dient also erst einmal als Bohrschablone. Danach kann mit
der Bestückung begonnen werden.
Bedingt durch den einseitigen Aufbau, sind ein paar Drahtbrücken
erforderlich, die zuerst bestückt werden sollten. S2 und den
Drucksensor sollten erst zum Schluss bestückt werden, da hier etwas
Bastelarbeit in Verbindung mit dem Gehäuse erforderlich sind. Für die
LEDs empfield es sich gedrehte Fassungen zu verwenden, da man sich so,
Schrittweise der Einbauhöhe zur Gehäuseoberseite annähern kann. Der
µA7805 Spannungsregler wird (bei 9V am Eingang) nicht sonderlich
gefordert, trotzdem habe ich einen kleinen Kühlkörper aus einem
Aluminiumreststück angefertigt, welchen ich auf der Unterseite des
Spannungsregler montiert habe. Der kleine Kühlkörper ragt etwa 2mm
rings um das TO220 Gehäuse hervor. Eine passende Unterlegscheibe würde
wohl auch genügen. Eine M3 Mutter wird als Abstandshalter zur Platine
verwendet. Im Eagle Brd-File sind noch 3 kleine Platinen enthalten, von
denen 2 Stück zur Montage des MPX5700 benötigt werden. Die Maße der
Montageplatten entsprechen dem gestricheltem Rechteck um den
Sensor.
Stückliste:
Platine: |
||
R1 | 10k | Alle Widerstände bedrahtet, 1/4 Watt |
R2 | 47Ohm | |
R3-R10 | 150Ohm | |
R11-R13 | 1k | |
R14, R15 | 330Ohm | |
C1, C3,C4,C9,C10 | 100nF | Keramikkondensator |
C6 | 10nF | Keramikkondensator |
C5 | 470pF | Keramikkondensator |
C2 | 10µF | Elko |
C7 | 1µF | Elko |
C8 | 100µF | Elko |
Q1-Q3 | BC557B | oder ähnlichen PNP Transistor |
IC1 | ATMega48 | Mikrocontroller (DIL Bauform) + evtl. 28 pol. DIL Fassung schmal |
IC2 | 7805 | Spannungsregler, TO220 + evtl. kleinen Kühlkörper (siehe Text) |
1 | MPX5700GS | Drucksensor Freescale, 0..700 kPa |
B1 | DB107 | DIL Gleichrichter |
D1-D3 | SA52-11GWA | Siebensegmentanzeigen grün, gem. Anode (Kingbright) |
LED1, LED2 | 2 LEDs | Standardleds 3mm, Farbe nach Geschmack |
S1, S2 | Taster 3301 D | Kurzhubtaster 6*6mm 12,5mm hoch /Reichelt |
J1 | Hohlstecker | HEBW21/Reichelt |
JP1 | Pinheader | ISP Stecker, 2*3 polige Leiste RM2,54mm |
Sonstiges: |
||
4 | Schraube M3 | Senkkopf L=6mm |
4 | Schraube M3 | Senkkopf L=16mm |
6 | Abstandsrolle | Messing vernickelt, D=5mm, Innen= 3,2mm, H=8mm |
2 | Abstandsrolle | Kunststoff D=8mm, Innen= 3,6mm, H=8mm |
4 | Abstandsbolzen M3 | Sechskant, mit Innengewinde, H=8mm |
1 | Filterscheibe grün | Plexiglas, (ich glaube meins war von Conrad) |
1 | Taster | Zum Basteln der Tasterkappe |
1 | Gehäuse | SP2000 |
Mechanischer Aufbau
Platine
Es ist einiges an Bastelarbeit nötig, um die Platine mit dem
Gehäuse zu vereinen. Damit der Sensor genügend aus dem Gehäuse ragen
kann, wurde die Platine nicht direkt mit den im Gehäuse vorhandenen
Abstandshalter verschraubt, sondern um 8mm erhöht eingebaut.
Da das auf und abstecken eines Pneumatikschlauchs schon einiges an
Kraft erfordert, muss der Sensor mechanisch stabil auf der Platine und
im Gehäuse befestigt sein, um die Lötstellen nicht zu belasten.
Ich weiss, das der Sensor lt. Datenblatt
auch mit Montagelöchern erhältlich ist, jedoch fand ich zum Zeitpunkt
keinen Händler der mir den Sensor zu einem humanen Preis liefern
konnte. Auf den MPX5700 kann, (wie im Bild links zu sehen)
direkt ein Kunststoffschlauch (Innendurchmesser=4mm) aufgesteckt
werden. Bei mir hält das ohne Schlauchschelle o.Ä. den 7 Bar
Maximaldruck und rutscht dabei nicht ab.
Der Drucksensor wird, wie auf den Bildern zu sehen ist, im
Sandwichverfahren zwischen 2 kleine Platinen montiert. Die Bohrungen
der obere Platte, müssen für die M3 Senkkopfschrauben entsprechend
abgesenkt werden, da Zylinderkopfschrauben an das Gehäuseoberteil ragen
würden.
Den MPX5700 sollte man erst verlöten, wenn der mechanische Aufbau
fertig ist. Nach der Montage, sollte der Sensor fest zwischen den
beiden Platinen sitzen. Sollte er sich noch bewegen lassen, kann man
noch eine (sehr flache) Unterlegscheibe oder Dichtung aus der
Bastelkiste zwischen den Anschlussnippel und der oberen Platine legen.
Auch könnte man die Abstandsrollen etwas abfeilen. Im Bild
rechts (vergrößern möglich) ist zu erkennen wie die Platine mit dem
Sensor und dem Gehäuse verschraubt sind.
Für die beiden Mountholes rechts und links vom Display, sind 2 weitere
8mm Abstandsrollen nötig. Diese lassen sich nach dem
vorsichtigem aufbohren (nicht durchbohren) auf 5mm, einfach auf die im
SP2000sw Gehäuse vorhandenen Abstandshalter aufstecken und
die Platine dann mit passenden Blechschrauben befestigen. Die beiden
vorderen Mountholes können frei bleiben.
Taster
Da ich für den verwendeten
Taster keine passende Kappe fand, entschied ich
mich auch hier für eine Bastellösung.
Dazu habe ich einen 2. Taster (Bild1, links) aus der Bastelkiste etwas
unsanft in seine Bestandteile zerlegt,
sodass ich den roten Knopf für meine Zwecke benutzen konnte. Der Knopf
passt fast in eine Distanzrolle aus Kunststoff (8mm, D=3,6mm). Wenn man
die Distanzrolle innen mit einer kleinen Rundfeile etwas erweitert,
kann der rote Knopf mit etwas Druck bis zum Anschlag in die Rolle
gepresst werden (Bild 4) und muss noch nicht einmal
eingeklebt werden. Die selbstgemachte Tastkappe kann einfach auf den
Taster gesteckt werden und hat auf diesem etwas (0,2mm) Spiel. Wird das
Gehäuse geschlossen, wird der Knopf durch die Bohrung im
Gehäuseoberteil zentriert und durch die Distanzrolle (die ja
etwas grösser vom Durchmesser ist) in Position gehalten. Um die
richtige Höhe zu erreichen, muss der Taster etwas gekürzt werden. Ich
habe den Taster Schritt für Schritt gekürzt und immer wieder zur
Kontrolle das Gehäuseoberteil aufgelegt. Natürlich war der
Taster zu diesem Zeitpunkt noch nicht eingelötet.
Das Endergebnis ist in Bild 5 zu sehen. Wichtig, bei aufgesteckter Kappe, ist der Abstand zwischen Taster und Abstandsrolle.
Gehäuseoberteil
Zum bohren des Oberteils, habe ich im Eaglefile eine
Bohrschablone im Layer 100 erstellt, die man 1:1 ausdruckt und auf dem
Gehäuse befestigt. Natürlich kann man auch die Frontfolie als
Bohrschablone nutzen, dazu benötigt man allerdings den Frontdesigner
von ABACOM,
oder man bringt die JPG (Bild rechts vergrössern, Bild speichern unter)
auf das passende Maß. Im Download unten ist die Fpl-Datei für den
Frontdesigner enthalten.
Den Ausbruch für die grüne Plexiglasscheibe, macht man am besten 1-2 mm
breiter, so werden später, durch den Frontplattenaufkleber kleine
Unregelmäßigkeiten verdeckt. Die Bohrungen der LEDs, Taster und Sensor,
habe ich etwas mit einem Senker bearbeitet, dadurch müssen die
entsprechenden Aussparungen in der Frontfolie etwas grösser
als die Bohrungen ausgestanzt werden. Wie ich meine
Frontfolien herstelle, habe ich hier
etwas ausführlicher beschrieben.
Nullabgleich
Ein Nullabgleich muss immer dann ausgeführt werden, wenn sich
der Umgebungsdruck ändert. Das macht sich dadurch bemerkbar, das bei
offenem Druckeingang ein Wert ungleich Null auf dem Display angezeigt
wird. Auf jeden Fall muss bei der ersten Inbetriebnahme des DMM der
Nullabgleich durchgeführt werden.
Dazu muss bei offenem Druckeingang der Taster für Nullabgleich kurz
gedrückt werden, der mit einem kleinen Schraubenzieher o.Ä.
durch die Bohrung im Gehäuse erreichbar ist.
Die beiden LEDs beginnen nun abwechselnd zu blinken. Auf dem Display
erscheint "CAL" und kurz darauf der dezimale ADC-Wert, der bei 0 Bar
ausgelesen wird. Dieser Wert wird nun im internen EEprom des Mega48
gespeichert und es erscheint "End" auf dem Display. Danach zeigt das
DMM Null auf dem Display und ist Betriebsbereit.
Download
Das komplette Projekt gezippt herunterladen.
Beim brennen des ATmega48, die Fusebits auf 8MHz intern einstellen. Wie das geht erfahrt ihr hier.
Viel Spass beim basteln, Jürgen.
PS. Bitte überprüft euren Reifendruck weiterhin an der Tankstelle. Diese Geräte werden regelmäßig überprüft und kalibriert.