Archiv verlassen und diese Seite im Standarddesign anzeigen : Schaltung für Tankgeber basteln. Hilfe gesucht...
Hallo !
Habe vor mir eine digitale Tankanzeige fürs Motorrad zu basteln.
Der Tankgeber ist bereits vorhanden. Er liefert Ohm-Werte zwischen 0 Ohm bei vollem Tank und ca 100 Ohm bei leerem Tank.
Dieser Geber wird aber vom Bordnetz getrennt und nur seperat mit meiner Schaltung betrieben werden.
Habe mir überlegt, eine Schaltung mit OP zu bauen und danach die Analog-Werte auf den Mega32 auf einen AD/wandler zu geben und danach den Wert umzurechnen in eine Liter anzeige.
Leider habe ich was OP's betrifft keine Ahnung. Ich denke mal dass ich einen Differenzverstärker bauen muss oder ?
Aber wie berechne ich die Schaltung ?
Könnt ihr mir ne Hilfestellung dazu geben ?
Gruß Tommy
Hallo,
um den Widerstand des Tankgebers bestimmen zu können, musst du durch selbigen einen konstanten Strom treiben, welcher an dem variablen Widerstand (Tankgeber) einen dem entsprechenden Spannungsabfall verursacht, welchen du mittels µC messen kannst.
Also nach dem allseits bekannten Gesetzt: R = U / I. Wobei eben U gemessen wird, und I konstant ist.
Du könntest die hier im wiki einmal eine Schaltung für eine Konstantstromquelle/senke ansehen.
Um den Spannungsabfall zu Verstärken (um ihn besser AD Wandeln zu können) kannst du dann einen OPV (nicht z.B. invertierenden Verstärker) verwenden. Oder aber du nimmst einen fertigen Instrumentierverstärker von z.B. Analog oder Maxim.
Mfg
Mal davon abgesehen, dass die tankanzeige beim motorrad nur beim stehen sinnvoll ist:
Bau eine Schaltung mit einem LM3914 auf.
Ich würde die 100Ohm abgreifen, dahinter noch einen 1K widerstand
(wäre ein Teiler ca 1:10) setzen und das ganze dann an ne stabilisierte spannung (Linearregler 9V oder 5V entstört)
Mt nem Poti als spannungsteiler vor dem LM3914
zum Einstellen des oberen Wertes.
Das ganze dann angezeigt über 10LEDs..
Vergleichbare Schaltung , mit Lambdasonde als signalquelle (statt Spannungsteiler) findeste hier:
http://www.taunus-biker.de/~mdvp/Lambda/Lambda.html
Das mit dem µC lohnt meiner Meinung nach nicht,
da der Wert eh nur stimmt wenns Mopped komplett still+waagerecht steht,
und auch dann die Genauigkeit des Tanksensors den Aufwand mit umrechnen nicht lohnt, weils eh nie exakt stimmt.
Wenn du eh einen µC benutzt, brauchste nur den teiler 1:10 +stabile grundspannung und kannst den Wert mittels AD-Wandler direkt einlesen und umrechnen.
Ich muss es schon mit µC machen, da die Tankanzeige ein Teil meines Projektes "Bordcomputer" ist.
Konstantstromquelle hört sich nicht übel an.
Es bleibt aber ja auch zu berücksichtigen, dass der max Strom durch den Geber nicht zu hoch sein darf, wegen Erwärmung des Gebers oder?
Ist eine Brückenschaltung denn sinnvoll ?
So in der Art Wheatstone ?
Gruß Tommy
Hallo,
also du kannst das auf ein paar Arten lösen.
Entweder du verwendest eine Konstantstromquelle, und misst die Abfallende Spannung, oder du Baust einen einfachen (Spannungs-)Teiler mittels Vorwiderstand auf, wie es "PsiQ" schon beschrieben hat, und misst einfach die Teilspannung, oder du verwendest eine Messbrücke, und misst die Brückenspannung (zweimal gegen Masse messen, und dann die Differenz bilden).
Es ist halt hauptsächlich eine Frage der Genauigkeit, wobei die ohnedies bei solchen Sensoren zu wünschen übrig lässt…
Wie auch immer, den Strom, welchen du durch den Sensor schicken musst, würde ich nicht höher als 1mA ansetzten, wegen der bereits von dir erwähnten Selbsterwärmung, und außerdem sollte man nicht vergessen, der Sesor befindet sich im Treibstoff - also ein wenig mit repekt betrachten ;-)
Mfg
War jetzt grade mal in der Garage und hab aus Interesse mal den Strom gemessen, der im Originalzustand durch den Geber fließt :-&
Da fließen bei fast vollem Tank fast 70ma durch :-k
Scheinbar ist die Erwärmung hier ned so schlimm.
Also Konstantstromquelle ist im Originalzustand keine verbaut, da man immer schön über die Spannung und den Widerstand den Stromwert errechnen und anschließend auch das Errechnete messen kann.
Gruß Tommy
Also mal angenommen ich baue die Schaltung mittels einer Meßbrücke auf und schalte anschließend einen Messverstärker dran (Differenzverstärker).
Ich habe nur +5V. Welchen OP nehme ich da am besten und wieviel mv braucht der OP denn dann an den Eingängen, damit er schön im linearen Bereich verstärkt ? (Ist ja wichtig um die Brücke zu dimensionieren)
Mein Geberwiderstand variiert zwischen 91 und 9,3 Ohm. Habe ihn nun genau gemessen. Alle 0,5 Liter. Die Kennlinie ist relativ linear.
Sorry dass ich so dumm Frage, aber ich hab von OP's keinen schimmer ned.
Gruß Tommy
ähm..
Wenn du vor deinen Sensor einen 100Ohm widerstand schaltest,
hast du einen Spannungsteiler 1:1.
Das Teil kommt an 5V..
Wenn der Dinger ganz leer ist wären dass dann 2,5V am IC
wenn er ganz voll ist 0V..
Wenn du damit direkt in einen normalen µC AD-Wandler gehst,
also dein "Bordcomputerchip"
hast du wenn man von 8bit=5V= 255 ausgeht, eine messauflösung von
255 : 2 (2,5V max) = 127 Schritten, und brauchst nur einen Pin am IC..
Das wären bei einem 5Liter-Tank ca 40 messwerte pro Liter Sprit..
Da kommt noch ne Schutzbeschaltung in Form von ner z-diode und nem kleinen Kondensator zum puffern ran und fertig ist das,
wofür willst du da eine (evtl wheatstonsche?) messbrücke aufbauen?
Nur weil du genauer misst, bekommst du von dem Sensor keine genaueren Werte..
Mit einem 100Ohm Widerstand wäre der Stromfluß durch den sensor bei vollem tank = 0 Ohm => 5V:100Ohm =50mA ,
also weniger als bisher,
bei leerem tank wärens => 5V:200Ohm also 25mA..
Da brauchst du keine Messbrücke oder sonst einen Aufwand betreiben.
den AD-Wert liest du in deine Software ein, mittelst das ganze etwas, gibst es als Wert aus und Fertig.
Du brauchst keinen weiteren OP,
keinen messverstärker und sonstigem kram,
du hast doch ein starkes Signal.. ? Also warum?
edit:
schaumal was beim atmega32 (ich hoffe ioch hab den richtigen gefunden)
im Datenblatt dabei steht:
http://upload2.postimage.org/355555/adc.jpg (http://upload2.postimage.org/355555/photo_hosting.html)
mehr brauchst du gar nicht..
Unregistriert
09.01.2016, 12:39
Hallo!
Ich möchte das Thema nochmal aufwärmen, da ich das gleiche vorhabe. Nur soll meine originale Tankanzeige ungestört weiterfunktionieren. Es handelt sich dabei um ein Kreuzspulenmesswerk. Den veränderlichen Widerstand mit Spannungsteiler und Arduino messen ist kein Problem. Aber wie wirkt sich das auf die vorhandene Schaltung dann aus? Bin für Tipps dankbar.
LG
Da die originale Anzeige weiter dran bleibt, müsste man den Widerstand des Gebers indirekt messen, indem man die Spannung über den Geber und den gleichzeitig fließenden Strom misst. Es wird aber genügen nur die Spannung zu messen und dann den Geber entsprechend zu kalibrieren (der Widerstand des Gebers wird vermutlich nicht linear zum Tankinhalt sein, also wird man immer kalibrieren müssen).
Worauf man achten sollte ist, ob die Spannung für die Kreuzspulanzeige stabilisiert ist oder unstabilisiert aus dem Bordnetz kommt (die Verwendung eines Kreuzspulmeßwerks legt die letztere Variante nahe). Falls es unstabilisiert ist, sollte man also auch die Bordnetzspannung messen und zum Spannungsabfall am Geber ins Verhältnis setzen. Ansonsten schwankt die elektronische Messung mit der Bordnetzspannung.
Die Spannungsmessung am Geber kann mit einfachen Mitteln so hochohmig erfolgen dass eine Verfälschung der Anzeige im Kreuzspulmeßwerk nicht zu befürchten ist.
Unregistriert
09.01.2016, 15:18
Hallo und vielen Dank! Das hilft schon mal weiter. Spannungsmessung ist eine gute Idee. Ich müsste den Tank dann sowieso auslitern und mir eine Look-up Table machen bzw. eine Funktion interpolieren. Die Versorgung kommt unstabilisiert aus dem Bordnetz. Da könnt ich einen Baustein zum stabiliseiren dazwischenschalten, hätt ich rumliegen. Aber ich messe sowieso auch die Bordspannung und könnte diese Signal dann zum korrigieren verwenden.
Habe den Spannugsabfall mal mit Multimeter gemessen und dieser dürfte 4,5 V nicht übersteigen (muss ich aber nochmal bei allen Zuständen genau prüfen). Dann könnt ich ja zwischen Kreuzmessinstrument und Widerstand direkt abgreifen und damit zum Analog-In des Arduino gehn (eventuell noch 5,1 V Z-Diode). Entsteht da nicht wieder so eine Art Spannungsteiler mit dem Innenwiderstand des Instruments?
12 V o------------o
|
|
R_instrument
|
|
o-------------------o----------o Analog-In
| |
| |
R_tankgeber Z-Diode
| |
| |
GND o-------------- o-------------------o----------o
Korrigieren heißt dann U_tankgeber = U_versorgung * R_tankgeber / (R_instrument + R_tankgeber). Stimmt das so? R_instrument könnt ich einfach mit Multimeter messen, wenn ich Kontakte abschließe, oder? Nein Blödsinn! R_tankgeber ist ja auch unbekannt. Das muss doch mit einer Schlussrechnung gehen, oder?
LG
Korrigieren heißt dann U_tankgeber = U_versorgung * R_tankgeber / (R_instrument + R_tankgeber). Stimmt das so?
Ja stimmt so. Wenn man nach R_tankgeber auflöst erhält man (wenn ich mich nicht vertan habe):
R_tankgeber = (U_tankgeber/U_versorgung)*(1+R_instrument)
R_instrument ist eine Konstante, uns interessieren ja nur die veränderlichen Größen. Wir sehen, dass der Füllstand eine Funktion von U_tankgeber/U_versorgung ist. Diese beiden Größen sind gleichzeitig zu messen und im Arduino der Quotient zu rechnen. Mit diesem Quotient kann man dann in die experimentell ermittelte Look-up Tabelle gehen. Für eine Meßbereichsanpassung kann man Spannungsteiler aus Festwiderständen aufbauen. Unbedingt daran denken dass der Tankgeber bei einem kurzen Wackelkontakt auch mal hochohmig sein kann, der Analog-In sieht dann die volle Bordnetzspannung. Die Analog-In sind recht hochohmig, man macht nichts falsch wenn man nochmal einen 47kOhm Widerstand zum Schutz des Arduino vorschaltet Also etwa so:
12V_______________________________________________ ___________
| |
| |
R_instrument 22kOhm
| |
|_______22kOhm_________47kOhm____o Analog_in_1 |___47kOhm__o Analog_in_2
| | für U_tankgeber | für U_versorgung
| | |
| | |
R_tankgeber 10kOhm 10kOhm
| | |
0V ____|__________________|__________________________ _________|
Die vorgeschlagenen Widerstandswerte sind für einen Analogeingang von 0..5V wohl einigermaßen brauchbar. Der Analogeingang hat Schutzdioden, die geringe Über- und Unterspannungen ableiten können, allerdings nur sehr kleine Ströme. Man muss bei KFZ-Bordnetzen durchaus mit Spannungsspitzen bis weit über 100V rechnen, daher die relativ großen Widerstandswerte.
edit:
irgendwie bekomme ich die Formatierung der Schaltplanskizze nicht hin. Also kurz verbal:
Es gibt 2 Meßpunkte am Bordnetz: einerseits die Bordnetzspannung, sowie der Abgriff zwischen Instrument und Geber. Beide würde ich gleich verschalten wie folgt: Vom jeweiligen Messpunkt ein Spannungsteiler aus 22kOhm und 10kOhm nach Masse. Da können bei 12V dann nicht mehr als 5V anstehen. Von diesem Spannungsteiler über einen Schutzwiderstand von 47kOhm zum Analogeingang.
Unregistriert
10.01.2016, 16:44
Ok, Danke! Ja die Schaltpläne verschieben sich es etwas, aber ich weiß was du meinst. Wenn ich auf R_tankgeber umforme komme ich zwar auf eine andere Gleichung, aber an der Mathematik solls nicht scheitern. Das mit den 47 kOhm macht durchaus Sinn. Ich habe aber beim Spannungsteiler für die Bordspannung 4,7 kOhm und 10 kOhm verwendet - aber das sollte ja nix machen. Nur aus Neugier - was spricht gegen die Z-Diode? Wäre eventuell ein Kondensator (zwischen Analog-In und Masse) sinnvoll um diese großen Spannungsspitzen abzufangen?
Irgendwie scheitere ich gerade an der Berechnung deiner Schaltung. Kann ich annehmen, dass der Strom durch die hohen Widerstände (22, 10 und 47 kOhm) gleich null ist? Dass sollte idealerweise auch so sein um das Messinstrument nicht zu verfälschen. Dann würde die Gleichung ja die selbe bleiben: U_tankgeber = U_versorgung * R_tankgeber / (R_instrument + R_tankgeber). Auf R_tankgeber umformen und Look-up Table mit Litern und Wiederstand des Tankgebers erstellen.
Crazy Harry
10.01.2016, 17:34
Motorrad gerade hinstellen, Tank leer machen und ein Voltmeter an den Geber. Dann immer 0.5L in den Tank und Spannungswerte aufschreiben. Wenn du das hast kann man sich über die nachfolgende Schaltung den Kopf zerbrechen.
Aus Erfahrung kann ich dir sagen: mindestend 10-20 Messwerte (1×/sek) mitteln (Ringspeicher und den ältesten Wert immer ersetzen).
Nochmal ein Versuch einer Skizze:
Meßpunkt (Bordnetzspannung oder Geberspannung)
|
22 kOhm
|
0---47 kOhm--o Analogeingang
|
10 kOhm
|
0 V (Masse)
Das Ganze zweimal identisch aufgebaut ergibt eine Messung für das Bordnetz und eine Messung für den Tankinhalt.
Ein Rechenbeispiel für eine Meßspannung von 12 V: Über den Zweig mit 22kOhm und 10kOhm fließt ein Strom von 12V/33kOhm=0,36mA (bei 5V etwa 1,5mA). Dieser Spannungsteiler dient zur Anpassung der zu messenden Spannung auf den Meßbereich des AD-Wandlers (ich vermute 0..5V, falls das falsch ist, müssten wir die Widerstandswerte nochmal entsprechend anpassen). Bei einer Spannung von 12V am Meßpunkt hat man am Spannungsteiler etwa 3,64 V.
Über den 47kOhm fließt im Normalfall praktisch kein Strom weil die AD-Eingänge sehr hochohmig sind deshalb ist nach dem 47kOhm Widerstand auch 3,64 V.
Der Zweck des 47 kOhm ist ein reiner Schutzwiderstand für den AD-Wandler weil in Bordnetzen durchaus mal Spannungsspitzen auftreten können. Bei einer Eingangsspannung von 100 V hätte man am Spannungsteiler 30,3 V, direkt würde das den Mikrocontroller sofort töten. Der Strom wird aber durch die Widerstandskombination auf etwa 0,46mA in den Analogeingang begrenzt. Der Analogeingang leitet Spannungen über der Betriebsspannung über eine Schutzdiode in die positive Betriebsspannung des Mikrocontrollers ab, ist dann also nicht mehr hochohmig. Die Schutzdiode am Analogeingang hält wohl so etwa 2-3 mA aus (ich meine das mal so aus dem Datenblatt gelesen zu haben, will es jetzt aber nicht raussuchen).
Warum keine Z-Diode?
Könnte man auch machen, ich halte die Widerstandskombination für ausreichend und auch insgesamt sicherer (die Z-Diode stirbt schlagartig aber unbemerkt, falls das Instrument mal versehentlich überbrückt wird). Falls Du eine Lösung "mit Hosenträger und Gürtel" bevorzugst kannst Du die Z-Diode einbauen, es macht aber nur direkt am Geber Sinn, weil die Leckströme der Diode die Genauigkeit des Spannungsteilers kaputtmachen.
Ein Kondensator wäre auch denkbar, dann aber direkt am Analogeingang gegen Masse. Ich würde etwa 100nF vorschlagen aber besser einen Folienkondensator (keramische Vielschicht haben häufig Mikrofonie bei Vibration).
Unregistriert
10.01.2016, 22:10
Danke für die nochmalige Erklärung. Ja der Arduino verträgt zwischen 0 und 5 V. Somit passt das mit den Widerständen. Ich werd auch noch den Kondensator verwenden. Das mit den Spannungsteilern ist auch klar. Die Frage is nur: an dem Messpunkt der Geberspannung (zwischen Instrument und Geber) teilt sich ja der Strom auf. Der fließt zum einen über den Geberwiderstand und zum anderen über den Zweig des Spannungsteilers (22 kOhm und 10 kOhm). Der Stromfluss über den Spannungsteiler muss vernachlässigbar gering sein. Das trifft bei den 1,5 mA aber eh zu.
Ich will nicht nerven, aber nochmal zur Sicherheit ob ich das jetz alles verstanden habe:
mit Spannungsteiler 1 Spannungsabfall U_tankgeber messen: U_tankgeber = U_analog1*(22+10)/10
Das alleine ist nicht Aussagekräftig, da U_tankgeber von U_versorgung abhängt: U_versorgung = R_instrument*I + U_tankgeber
Deshalb mit zweitem Spannungsteiler U_versorgung messen: U_versorgung = U_analog2*(22+10)/10
Mit der Vereinfachung, dass der Strom über den Spannungsteiler 1 vernachlässigbar klein ist gilt auch: U_tankgeber/U_versorgung = R_tankgeber/(R_instrument+R_tankgeber)
Umformen nach R_tankgeber ergibt den gesuchten Geberwiderstand, für den die Look-up Table erstellt wird.
Dann werd ich das am Steckbrettchen mal nachbauen...
an dem Messpunkt der Geberspannung (zwischen Instrument und Geber) teilt sich ja der Strom auf. Der fließt zum einen über den Geberwiderstand und zum anderen über den Zweig des Spannungsteilers (22 kOhm und 10 kOhm). Der Stromfluss über den Spannungsteiler muss vernachlässigbar gering sein. Das trifft bei den 1,5 mA aber eh zu.
Da hatte ich mich vertan, der Strom über 33kOhm bei 5V ist nicht 1,5 mA sondern 0,15 mA. Wie auch immer, er ist sicher hinreichend niedrig um die Anzeige des Kreuzspulinstruments nicht zu verfälschen.
mit Spannungsteiler 1 Spannungsabfall U_tankgeber messen: U_tankgeber = U_analog1*(22+10)/10
Das alleine ist nicht Aussagekräftig, da U_tankgeber von U_versorgung abhängt: U_versorgung = R_instrument*I + U_tankgeber
Deshalb mit zweitem Spannungsteiler U_versorgung messen: U_versorgung = U_analog2*(22+10)/10
Mit der Vereinfachung, dass der Strom über den Spannungsteiler 1 vernachlässigbar klein ist gilt auch: U_tankgeber/U_versorgung = R_tankgeber/(R_instrument+R_tankgeber)
Umformen nach R_tankgeber ergibt den gesuchten Geberwiderstand, für den die Look-up Table erstellt wird.
Ja, das ist alles korrekt. Den Geberwiderstand muss man im Algoritmus nicht explizit ausrechnen (er repräsentiert ja nur in irgendeiner nichtlinearer Weise den gesuchten Tankinhalt). Es genügt eigentlich den Quotienten aus Analog_1 und Analog_2 zu rechnen (oder dessen Kehrwert, falls das sinnvoller erscheint) und nach diesem Wert die look-up Tabelle zu schreiben.
Ein erster Aufbau am Steckbrett ist sicher sinnvoll, man kann dann gleich mal verifizieren ob verschiedene Bordnetzspannungen bei konstantem Geberwiderstand auch eine konstante Füllmenge ergeben.
Unregistriert
12.01.2016, 16:02
Hallo!
Habs mal nachgebaut und ausprobiert. Das Instrument hab ich durch einen konstanten Widerstand von 150 Ohm ersetzt (dürfte real bei ca. 130 Ohm Innenwiderstand sein) und den Tankgeber bei konsantem Füllstand mit einem 82 Ohm Widerstand simuliert. Die Korrektur der Versorgungsspannung hat einwandfrei funktioniert. Die Spannungsteiler lieferten anfangs abweichende Werte. Der Faktor sollte 3,2 sein, lag tatsächlich beim ersten bei 3,4 und beim zweiten bei 3,3. Wie sich herrausstelle sind das einfach die Bauteiltoleranzen - 5% machen bei 22000 Ohm schon was aus. Da ich die Faktoren aber jetzt kenne, funktioniert alles so wie es soll :)
Vielen Dank noch mal!!!
Prima dass es so klappt und danke für die Rückmeldung!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.