Hi
Ich wollte mich jetzt mal an die Digitalisierung meiner Tankanzeige
machen. Also ich habe einen Tankgeber, der besteht einfach aus einem
sich änderndem Widerstand. bei Tank leer 1,9 Ohm bei Tank voll 78,3 Ohm.
Der ADC Eingang von meinen Atmega8 (16MHz Quarz) liest ja nur Spannungen
ein. Wenn ich also über einen Spannungsteiler gehe, wie müsste ich die
Schaltung aufbauen und wie müsste die Befehle in Basom lauten? Ich habe
leider noch nie mit ADC Eingängen gearbeitet und kenne mich mit den
Befehlen dafür auch nicht so recht aus.
|-------Vcc-------'
'
---
' '
'1k '
' '
' '
---
'
'--------------- Portc.0
'
'
---
' '
' ' Tankgeber 1,9 - 78,3 Ohm
' '
' '
---
'
'
'
------GND---------'
Wollte die Schaltung über einen Spannungsteiler so aufbauen. Ich habe
leider keinen Schimmer, ob der Vergleichswiderstand so gut ist, oder ob
er zu klein oder zu groß ist und ob die Schaltung überhaupt so geht. Ich
wollte den Füllstand in Prozent anzeigen lassen (auf LCD), aber wie kann
ich das im Atmega berechen. Jetzt ist noch die Frage, wie müsste der
Quellcode dafür aussehen. Ich habe leider keine brauchbares Tut für
Bascom gefunden. Ich habe auch nach Temperaturmessungen geschaut, das es
dort ja ähnlich funktionieren müsste.
Ich hoffe ihr könnte mir ein bischen auf die Sprünge helfen :)
Karsten schrieb:
> Ich hoffe ihr könnte mir ein bischen auf die Sprünge helfen :)
Und Du bist dir ganz sicher daß Deine Schaltung nicht doch nach
Ex-Schutz (Explosionis-Schutz) Richtlinie aufzubauen ist?
Gruß Anja
Als Faustregel kann man sagen, dass der zweite Widerstand etwa in der
Mitte deines Sensorbereiches liegen sollte (also etwa 39 Ohm). Das heißt
jedoch, dass bei dir gute 120 mA durch den Spannungsteiler bei leerem
Tank fließen.
Karsten schrieb:
> Hi>> Ich wollte mich jetzt mal an die Digitalisierung meiner Tankanzeige> machen. Also ich habe einen Tankgeber, der besteht einfach aus einem> sich änderndem Widerstand. bei Tank leer 1,9 Ohm bei Tank voll 78,3 Ohm.
Bist du sicher, dass dein Ohmmeter nicht im falschen Messbereich war?
Chris schrieb:
> Als Faustregel kann man sagen, dass der zweite Widerstand etwa in der> Mitte deines Sensorbereiches liegen sollte (also etwa 39 Ohm). Das heißt> jedoch, dass bei dir gute 120 mA durch den Spannungsteiler bei leerem> Tank fließen.
Einen noch größeren Spannungsunterschied zwischen Minimum und Maximum
erhält man, wenn für den zweiten Widerstand nicht das arithmetische,
sondern das geometrische Mittel nimmt, also etwa 12Ω. Dann liegt aber
der Maximalstrom schon bei 355mA.
Nein, ich würde für den zweiten Widerstand 1kΩ nehmen und die Spannung
mit einem TS912 o.ä. um den Faktor 13 verstärken.
... falls die gemessenen Widerstandswerte tatsächlich stimmen :)
Philipp Karbach schrieb:
> hab noch nicht mit dem thema beschäftigt aber gerade mal nachgeschaut.> Tankgeber liegen wirklich im Ohm bereich! Welch ein unsinn!
Wenn man nicht weiß wie das ganze System funktioniert, könnte man das
wirklich zunächst für Unsinn halten.
Also, erstmal mit dem Thema beschäftigen, bevor man lospoltert!
Am besten mal messen welcher Strom durch den Sensor fliesst wenn er
normal eingebaut ist. Vileicht hängt da ja ein Hitzdrahtinstrument dran.
Das wurde früher gerne genommen da es so träge ist, daß man kein Problem
durch das Schwappen des Kraftstoffs im tank bekommt.
Viel Spass beim Ausmessen den Kennlinie und linearisieren. Und viel
Spass wenn beim Fahren in jeder Kurve der Tankinhalt zwischen 10 und 50
l hin und herpendelt :-).
Da muß ich mich meinem Vorposter anschließen.
Hast Du schon mal gesehen wie kunstvoll ein Tank heute in die
"freien Räume vor der Hinterachse" eingefügt ist? Da ist nichts mehr
mit "linearem Zusammenhang zwischen Füllstand und Grundfläche"-
trotzdem funktionieren die heutigen Tankanzeigen und Bordcomputer-
Infos(Reichweite) erstaunlich genau.
Ob die Anzeige wirklich beim Kurvenfahren schwankt, hängt auch
vom Geber/Schwimmer und dessen (mechanischer) Dämpfung ab.
Ich würde mir das Signal einfach mal anschauen (D.h. Beifahrer(In)
soll das das Multimeter ablesen)
Sonst kann das (die Dämpfung) der µC locker übernehmen.
Hallo,
die Anteilname ist ja enrom hier in dem Forum.
Also der die Ohmwerte stimmen zu 100%, da sie gemessen und verglichen
wurden mit der Werksangabe. Bei meinem Auto handet es sich um einen
Mercedes Benz 190 (W201). Mein Tank befindet sich nicht unterm Auto,
sondern direkt hinter der Rücksitzbank. Es ist ein einfacher viereckiker
Kasten. Gegen das Schwanken haben sich die Benzler damals was einfallen
lassen. Der Tauchrohrgeber (ja, den tollen Namen trägt das Teil) ist ein
Rohr, mit 2 kleinen Löchern drinn. In diesem Rohr ist ein Schwimmer, der
auf Widerstansdraht schleift. Also schwankt es nicht bei Kurvenfahrten,
da das Benzin in dem Rohr ja ne Weile brauchen würde um aus dem Rohr zu
kommen.
Solche Kurve fahre ich eher selten:)
Ih probier mal mit Getad
Hallo nochmal
habe den Spannungsteiler aufgebaut und mal durchgemessen. Also Tankgeber
habe ich jetzt ein 100Ohm Poti genommen (was aber gemessen maximal nur
84 Ohm hat) Wenn ich das Poti fast auf 100 drehe, dann messe ich eine
Spannung von 0,3 V, wenn ich es auf fast null drehe dann zeigt mir mein
Messegerät 3,87 Volt an. Als Versorungsspannung habe ich stabilisierte
5V genommen.
Ich verstehe aber immer noch nicht, welche Befehle ich wie einsetzten
muss. Ich habe jetzt versucht etwas mit dem Befehl Getadc rumprobiert.
Wie muss ich die Befehle definieren und was für Variablen muss ich dazu
definieren? Ich kann ja nicht für jeden Widerstanswert die Füllmenge
eintragen. Ich möchte die Informationen auf einen LCD anzeigen lassen,
so als Prozentangabe. Das LCD funktioniert schon, aber wie kann ich mir
darauf eine Variable anzeigen lassen?
Hättet ihr vllt einen Code-Brocken für mich?
Danke schon mal für die bisherige Hilfe.
Karsten schrieb:
> Ich verstehe aber immer noch nicht, welche Befehle ich wie einsetzten> muss. Ich habe jetzt versucht etwas mit dem Befehl Getadc rumprobiert.> Wie muss ich die Befehle definieren und was für Variablen muss ich dazu> definieren?
Gibt ews in der BASCOM Hilfe kein Beispiel?
> Ich kann ja nicht für jeden Widerstanswert die Füllmenge> eintragen.
Nö.
Aber µC können rechnen.
Mann kann auch eine Formel aufstellen, wie die Füllmenge mit der
gemessenen Spannung (eigentlich dem ADC Wert) verknüpft ist.
> Ich möchte die Informationen auf einen LCD anzeigen lassen,> so als Prozentangabe.
Du musst dir nur die % ausrechnen :-9
> Das LCD funktioniert schon, aber wie kann ich mir> darauf eine Variable anzeigen lassen?
Und schon wieder der Verweis in die BASCOM Hilfe. Diesmal heisst der
Befehl pikanterweise 'LCD'.
Du solltest dir wirklich die BASCOM Hilfe genauer durchsehen oder nach
einem Tutorial dafür suchen.
Karsten schrieb:
> Hallo,>> wenn mir die Bascom Hilfe in diesem fall weitergeholfen hätte,
Du hast doch in Wirklichkeit noch nicht einmal hineingeschaut und dir
angesehen welche Befehle es gibt.
Die "schlauen" Antworten verschiedener Schreiber hier sind mal wieder
typisch für dieses Forum.
Karsten, stell deine Fragen lieber im Roboter-Netz, da gibt es klügere
Antworten und mehr Hilfe.....
Karsten tut sich vieleicht ein bischen schwer mit diesem Thema und auch
mit der dortigen Hilfe. Ich denke mal, es sind hier nicht alle zu faul
zum Lesen, die sich hier mit solchen Fragen melden, die für erfahrene
Bascom-User kein Problem darstellen. Dann hilft man halt mit
vernünftigen Argumenten und Tips und fertig.
mfg
> Karsten tut sich vieleicht ein bischen schwer mit diesem Thema ...
Dann soll er kleiner anfangen und sich das notwendige Wissen erarbeiten,
so wie es ein "Anfänger" macht.
Die Bascom-Hilfe zeigt, wie man einen ADC-Messwert ermittelt. Falls
diese Infos nicht reichen, dann gibt es noch das Datenblatt zum
Controller, in dem die ADC-Einheit recht gut beschrieben ist.
Das Umrechnen des Messwertes in den gewünschten Zahlenwert zur Anzeige
(Skalieren) erfordert das Mathe-Wissen der Grundschule. Wie man das in
BASIC formuliert, erfährt man in der Bascom-Hilfe (oder in der Hilfe
eines anderen Basic-Dialektes, z.B. QBASIC).
Wenn Karsten ein "Anfänger" ist, dann sollte er jetzt langsam Eines tun,
nämlich "anfangen". Und zwar mit eigenen Recherchen und eigenen
Denkprozessen und nicht (nur) damit, anderen Leuten Löcher in den Bauch
zu fragen und die Antworten aufgrund fehlender eigener Mitarbeit ja doch
nicht zu verstehen...
Und nein, fragen ist hier NICHT verboten, aber etwas eigene Mitarbeit
sollte schon mit dabei sein.
...
Noch ein Gast schrieb:
> Karsten tut sich vieleicht ein bischen schwer mit diesem Thema und auch> mit der dortigen Hilfe.
Was bitte ist schwer daran, ein Beispiel aus der Hilfe mit Cut&Paste zu
übernehmen, die Pins anzupassen und das einfach mal auszuprobieren?
Ob wir hier ein Beispiel zusammenstellen oder gleich das Beispiel aus
der Hilfe benutzt wird, ist ja wohl Jacke wie Hose.
Wenn es konkrete Fragen gibt, dann her damit. Aber diese
Rundumschlagfragen "Ich will alles wissen, was es zum Thema ADC zu
wissen gibt, aber bitte in nicht mehr als 20 Wörter" funktionieren
einfach nicht.
Programmieren heißt in erster Linie: Doku lesen, Beispiele ausprobieren,
Beispiele analysieren, Doku lesen, über das Gelesene nachdenken, Doku
lesen ... mit der besonderen Betonung auf 'Doku lesen'
Abgesehen davon, das es seit 5 Posts nicht mehr um das eigentliche Thema
geht, ist das ja ein echt TOP Forum-.-. Aber ich hoffe ihr bekommt mal
solche Antworten auf Gebieten von denen ihr keine Ahnung habt. Vllt
postet ihr ja mal in ein Autoforum und bekommt dann solche netten
Antoworten wie: Lies das Handbuch zum Auto.
Karsten schrieb:
> Ja werd ich wohl machen. Aussagen wie lies die Hilfe bringen mich echt> nicht weiter.
Dann stell konkrete Fragen.
Aber niemand hier wird dir Dinge erzählen, die du genausogut auf eigene
Faust aus der Hilfe herausziehen kannst.
Um den Befehlssatz von BASCOM kennen zu lernen, genügt es am Anfang in
der Hilfe in der linken Leiste mit dem Auge von oben nach unten zu
schweifen. Die Dinge die du nicht kennst und die für dein Problem nicht
relevant erscheinen, lässt du erst mal links liegen.
Du suchst einen Befehl zur Ausgabe auf dem LCD. Wonach wird man in der
Hilfe suchen? Wie wird man so etwas nennen? Da fallen einem Begriffe wie
PRINT, OUTPUT, WRITE sofort ein. Also einfach in der Hilfe nachsehen ob
es die gibt und was sie machen wenn es sie gibt. Nope. Keines trifft zu.
ALso nochmal die Befehlsliste überfliegen. Und dann fällt einem
plötzlich ein Befehl namens 'LCD' auf. Hmm. Ausgabe auf LCD - Befehl
LCD. Da könnte ein Zusammenhang bestehen. Also - draufklicken und
nachlesen - Bingo!
Du musst lernen dir selbst zu helfen. Das ist eines der wichtigsten
Dinge in der Programmierung. Sei froh, dass du wenigstens eine gute
Hilfe hast, in der alles aufgeführt ist. Die andere Fraktion, die der C
Programmierer, sollte sich eigentlich Literatur kaufen und tut es nicht.
Und sie kämpfen mit genau dem gleichen Problem: Sie wissen gar nicht,
was sie fix&fertig zur Verfügung haben bzw. die grundlegensten Dinge
funktionieren. Warum? Weil sie nichts haben, wo sie nachlesen könnten.
Bei ihnen lautet die vernünftigste Lösung: Buchhandlung gehen, Buch
kaufen.
Bei dir lautet eine, nicht unbedingt die vernünftigste, Lösung: In die
Hilfe reinschauen. Die angegebenen Beispiele studieren. Ausprobieren.
Karsten schrieb:
> postet ihr ja mal in ein Autoforum und bekommt dann solche netten> Antoworten wie: Lies das Handbuch zum Auto.
Wenn die Frage lautet "Wie geht die Motorhaube auf", IST das eine
angemessene Antwort.
Und ja: Ich habe das Handbuch zu meinem Auto gelesen. Schon alleine weil
ich wissen wollte
* welche Symbole es am Armaturenbrett gibt und was sie bedeuten
* wo die Einfüllöffnungen für Verbrauchsgüter sind (Waschwasser, Öl)
* welches Motoröl ich brauche
* ob ich zum Fremdstarten eine andere Autobatterie anschliessen darf
und wo das zu machen ist.
* wo der Hersteller den Wagenheber versteckt hat
* bei welchen Drehzahlen ich den geringsten Verbrauch habe
* was es sonst noch so gibt
Das ganze hat mich einen Abend gekostet und wenn ich mir auch nicht
alles gemerkt habe, so weiß ich doch ungefähr was im Handbuch steht und
was nicht, wo mein Handbuch ist und ehe ich Fragen stelle schaue ich
erst mal da rein, ob da nicht zu meiner Frage etwas steht. Zb wie man an
die Blinkerbirnen hinten rann kommt.
Und ja, das Handbuch lesen hat sich für mich auch schon in barer Münze
bezahlt gemacht. Als bei einem Fremdstart mit einem anderen Fahrzeug die
Steuerelektronik den Geist aufgegeben hat, hat zwar die Werkstatt die
Hände über dem Kopf zusammengeschlagen und gemeint, das man das mit den
neuen Autos nicht mehr dürfe. Als ich dann das Handbuch gezückt habe und
ihm gezeigt habe, dass davon nichts im Handbuch steht und dort ganz im
Gegenteil die exakte Prozedur zum Anschluss eines Fremdbatterie mit
laufendem Motor des Spenderfahrzeugs angegeben ist, musste die Werkstatt
und die Aurofirma klein beigeben und den Schaden aus eigener Tasche
zahlen. Den vermeintlichen 'Benutzerfehler', den sie mir anhängen
wollten konnte ich mit Handbuch zu einem Herstellerfehler ummünzen.
Ihr hättet Karsten mehr geholfen wenn ihr nichts gepostert hättet...
Wenn ihr alle nicht bereit seid eine vernünftige Antwort zu posten, dann
lasst es einfach. Irgendwer wird sich schon aufopfern ;)
Karl heinz Buchegger schrieb:
> Wenn die Frage lautet "Wie geht die Motorhaube auf", IST das eine> angemessene Antwort.
Wenn meine Frage gewesen wäre: Wie versorge ich den AVR mit Spannung,
dann hät ich die Antwort so hingenommen. Aber da DU ja nicht in der Lage
bist mir vernünftig und fachlich zu antworten, würd ich sagen du hälst
dich jetzt mal aus diesem Thema fern und machst einen eigen Thread auf
mit dem Namen: Ich suche Streit. Du hast Zeit mir hier halbe Romane zu
schreiben aber, keine Zeit mal einen Codefetzten zu posten oder mal eine
kurze Erklärung abzugeben. Das ist schon echt arm. Wenn du von dem ADC
wie ich keine Ahnung hast, dann halt dich doch einfach mit dem schreiben
zurück und schau fleißig zu was die Leute schreiben, die Ahnung davon
haben.
Ach übrigens, der Öleinfüllstutzen ist immer in der Nähe des Motors
(rein von der Logik her) und da ist auch meistens so eine kleine Ölkanne
drauf bzw es steht OIL drauf. Stell dir vor, ich habe das Handbuch von
meinem Auto NICHT gelesen und ihn trotzdem gefunden.
Zu deinem "Dann stell konkrete Fragen"
Sieh mal in den Startthread. Da stehen Fragen drinn, aber den hast du
wahrscheinlich nicht mal gelesen.
Karsten, Du bist ungerecht. Gerade Karl-Heinz bewundere ich immer wieder
wegen seiner Ausdauer, wenn er Anfängern die ersten Schritte erklärt.
Trotzdem will ich Deinen Wunsch nach Codefetzen erfüllen. Hier findest
Du ein paar Spielereien mit dem ADC:
http://www.hanneslux.de/avr/divers/pm24/index.html
Da ist auch eine Bascom-Lösung dabei:
http://www.hanneslux.de/avr/divers/pm24/VM_tn24_1.bas
Und Du wirst lachen, Das Ding funktioniert sogar, obwohl der Lösungsweg
nicht in irgendwelchen Foren zusammengefragt wurde... ;-)
Natürlich funktioniert die ASM-Version bedeutend besser (sie verfügt
zusätzlich über eine recht derbe Messwertberuhigung):
http://www.hanneslux.de/avr/divers/pm24/vm24ko01.asm
...
Karsten schrieb:
> mit dem Namen: Ich suche Streit. Du hast Zeit mir hier halbe Romane zu> schreiben aber, keine Zeit mal einen Codefetzten zu posten oder mal eine> kurze Erklärung abzugeben.
Das war deine Frage
> Ich verstehe aber immer noch nicht, welche Befehle ich> wie einsetzten muss. Ich habe jetzt versucht etwas mit> dem Befehl Getadc rumprobiert. Wie muss ich die Befehle> definieren und was für Variablen muss ich dazu definieren?
Das ist das Beispiel aus der Hilfe
$hwstack = 32 ' default use 32 for the hardware stack
15
$swstack = 10 'default use 10 for the SW stack
16
$framesize = 40 'default use 40 for the frame space
17
18
'configure single mode and auto prescaler setting
19
'The single mode must be used with the GETADC() function
20
'The prescaler divides the internal clock by 2,4,8,16,32,64 or 128
21
'Because the ADC needs a clock from 50-200 KHz
22
'The AUTO feature, will select the highest clockrate possible
23
Config Adc = Single , Prescaler = Auto
24
25
'Now give power to the chip
26
Start Adc
27
28
'With STOP ADC, you can remove the power from the chip
29
'Stop Adc
30
31
Dim W As Word , Channel As Byte
32
Channel = 0
33
34
'now read A/D value from channel 0
35
Do
36
W = Getadc(channel)
37
Print "Channel " ; Channel ; " value " ; W
38
Incr Channel
39
40
If Channel > 7 Then Channel = 0
41
Loop
42
43
End
Was genau verstehst du jetzt daran nicht? Die eigentliche
Arbeitsschleife besteht aus 4 Anweisungen, die jede für sich den Vorgang
der abläuft gut beschreibt, die Variablennamen sind sogar sprechend und
es sind sogar Kommentare enthalten, die beschreiben was da passiert.
Dass du am Anfang den m163def.dat durch das dat File für deinen eigenen
Prozessor austauchen musst, sollte eigentlich klar sein, wenn man nur
die geringste AHnung hat.
Was also ist dein Problem mit diesem Code Schnipsel?
Ich such keinen Streit. Aber mir stinkt es, wenn du erwartest dass wir
dir hier alles zum Arsch tragen anstatt selbst ein wenig Initiative zu
zeigen. Du hast Problem mit dem Code. Welche sind das? Wo ist der Code
mit dem du Probleme hast? Was denkst du ist das Problem? Woran machst du
dein Problem fest? Welche Überlegungen hast du angestellt?
> Ach übrigens, der Öleinfüllstutzen ist immer in der Nähe> des Motors (rein von der Logik her) und da ist auch meistens> so eine kleine Ölkanne drauf bzw es steht OIL drauf. Stell dir> vor, ich habe das Handbuch von meinem Auto NICHT gelesen und ihn> trotzdem gefunden.
Super! Ich gratuliere. Vielleicht solltest du dich mehr auf Autos
konzentrieren anstatt auf Programmiersprachen, wenn du da so ein
Wiffzack bist, der kein Handbuch braucht :-)
@ Karsten
Das Du Karl Heinz hier angehst ist absolut daneben. Gerade er ist einer
derjenigen, die hier immer wieder und sehr konstant zeigen, das sie
gewillt sind mit sehr viel Geduld auch noch so ungeschickt gestellte
Fragen zu beantworten und den Fragern die Würmer aus der Nase zu ziehen.
Das Problem liegt auch meiner Auffassung nach bei Dir. Lies endlich die
verd... Hilfedatei.
Was mir auffällt ist, das dieses Anspruchsdenken an die freiwilligen
Helfer immer mehr zunimmt. Unzureichend formulierte Fragen ohne
ausreichendes Grundwissen und dann Vorwürfe wenn man die Fragestellung
kritisiert. Projekte mit denen sich die Fragesteller ganz klar selbst
überfordern wobei die Probleme dann hier gelöst werden sollen. Sogar bei
avrfreaks, das vor etwa einem Jahr noch relativ frei von solchen Fällen
war nimmt das zu.
Wenn ich daran denke, das viele von uns hier in den 80ern angefangen
haben, ohne Internet, nur englische Fachbücher und Datenblätter und am
Wochenende dann nur noch die Hoffnung das am Montag die Amerika Gedenk
Bibliothek (oder was sonst so in der Nähe war) wieder aufmacht. Da hat
man das verdammte Datenblatt dann so lange studiert bis man es endlich
verstanden hat. Man hat sich durchgebissen weil man es ums Verrecken
einfach verstehen wollte. Assemblerlistings studiert bis einem die
Zahlen vor den Augen verschwammen. Und jetzt muss man sich von
irgendwelchen Kiddies hier dumm kommen lassen.