Archiv verlassen und diese Seite im Standarddesign anzeigen : lcd display ausfahrsteuerng
hallo,
ich möchte nun langsam mal in microcontroller einsteigen. hierzu habe ich denke ich doch ein einfaches projekt gewählt.
ich möchte in mein auto ein lcd display einbauen. ich habe eine kleine ablage in meinem auto auf dem amaturenbrett wo es genau reinpassen würde.
nun möchte ich mittels schrittmotor das display ausfahren lassen.
hab es mir so vorgestellt:
zündschloss ein display stellt sich auf sprich 90 Grad
Schlüssel abziehen display dreht sich zurück.
Nun meine frage was brauch ich da alles? ist es so empfehlenswert? wie krieg ich die spannung konstant hin ohne große schwankungen?
Und wie schaffe ich es dass der motor nach herausziehen des schlüssels immernoch strom bekommt zum einfahren?
Steinigtmich
14.12.2007, 19:52
Ja, das sollte gut zum Einstieg geeignet sein.
Ich rate hierbei allerdings von einem Schrittmotor ab. Nimm ein Servo, das ist genau für solche Stellaufgaben gebaut und sehr einfach anzusteuern. Dokumentation zu diesem Thema gibts jede Menge hier im Forum bzw im RN-Wissen.
Der Strom im KFZ ist so ziemlich das unsauberste was man bekommen kann. Das müsste schön geglättet werden. Einfachsterweise würde ich einen Linearregler benutzen um auf die 5V für die Elektronik zu kommen, hierbei mit Stütz- und Glättungskondensatoren nicht sparsam sein, eventuell sogar noch eine Spule als Tiefpass hinter den Regler.
Dadran irgendeinen Microcontroller der das Servo ansteuert bzw ggf. auch das Display (was solls denn eigentlich anzeigen, wenn man fragen darf? - falls der µC es ansteuert, drauf achten dass er genug Pins für alle Aufgaben hat)
Zum Thema Zündung: betreibe den Controller und das Servo auf Dauer+, hänge (natürlich mit entsprechenden Schutzmassnahmen, auch das findest Du hier im Forum) die Zündungsleitung an einen Pin vom µC.
Nun ist das Teil permanent in Betrieb (lässt sich allerdings im Falle eines AVR auch in Schlafmodi versetzen, so dass der Stromverbrauch gering bleibt) und kann das einschalten der Zündung bzw abziehen des Schlüssels detektieren und reagieren.
Solche Stromgeschichten kann man sinnigerweise vom Radiostecker abzweigen, da ist alles rangeführt.
controller habe ich an einen atmega8 gedacht müsste denk ich reichen.
das display wird ein touchscreen werden und wird nicht angesteuert. es wird nur das auf und zu klappen vom servo und controller übernommen.
Aber das mit dem glätten hab ich net ganz verstanden. da brauch ich ja 4 dioden und nen kondensator.
kondensator darf nicht zu groß sein soweit ich weiß. stimmt das so?
Steinigtmich
15.12.2007, 00:15
Warum 4 Dioden? Ein Brückengleichrichter?? Hast Du Wechselspannung auf dem Boardnetz?
Les Dich mal durch die Grundlagen von Spannungsreglern durch.
Empfehlenswert wäre hier: http://www.elektronik-kompendium.de/public/schaerer/ureg3pin.htm
Das mit der Spule meinte ich so: Die Spannung im KFZ-Netz ist völlig versifft. Da sind recht viele Impulse und Restwelligkeiten drauf. Um die Spannung etwas zu "reinigen" kann man eine Spule in den Stromkreis legen. Als Tiefpass. Ok kann man, wird man wohl nicht zwingend müssen. Wenn man Verstärker am KFZ-Netz betreibt wäre das ganz sinnig, aber für den Controller wirds wahrscheinlich auch ohne gehen. Vergiss den Part also und probier es nur mit einem Linearregler.
BlackDevil
15.12.2007, 10:33
Hm das geht doch eigentlich viel Einfacher...
Wenn ich das Richtig in Erinnerung hab müsste der Servo sich sollange Bewegen wie Spannung Anliegt und dann die Position halten.
Zündung an > Stromimpuls über eine gewisse Zeit (könnte man mit nem Timer IC Lösen) und man hat die 90°.
Zündung aus > Schalter Öffnet sich und ein Kondensator entlädt sich und das ganze fährt runter.
Gute alte Analoge Technik,das sollte eigentlich zu Realisieren sein. Auszurechnen wie groß man den Kondensator Dimensionieren muss ist ja auch nich das ding. Man weis wie viel Spannung der Servo brauch (12V) man weis wieviel Strom fliest und mann kann wissen oder messen wie lange der Servo brauch bis man wieder auf 0° ist, also wiellange sich der Kondensator zu Entladen hat.
Soweit meine Theorie. Da ist dann die Spannung im AUto auch relativ Wayne. Es is Gleichspannung und die 5V fürs TimerIC kriegt man mit nem Spannungsregler rel.Glatt runter geregelt. Das sollte funzen
also hab mich jetzt entschlossen einen LM2940-xx baustein zu verwenden kling für mich einfacher. bloß hier is das problem dass ich ja nie 12v hinbekomme. da die spannung immer 0,5-1V höher sein soll als die betriebsspannung des zu betreibenden gerätes.
BlackDevil
15.12.2007, 11:02
also hab mich jetzt entschlossen einen LM2940-xx baustein zu verwenden kling für mich einfacher. bloß hier is das problem dass ich ja nie 12v hinbekomme. da die spannung immer 0,5-1V höher sein soll als die betriebsspannung des zu betreibenden gerätes.
Wie meinst du das? Im Auto hast du, wenn du misst, immer zwischen 11.5 und 14V und das Verkraftet eigentlich ein jedes IC soweit ich schlau bin
Steinigtmich
15.12.2007, 11:14
Wenn ich das Richtig in Erinnerung hab müsste der Servo sich sollange Bewegen wie Spannung Anliegt und dann die Position halten.
Nein. Ein Servo (zum Verständnis, ich rede von Modellbauservos) bewegt sich überhaupt nicht, solange die Betriebsspannung (übrigens 5V, nicht 12V) anliegt.
Servos werden über PWM zum Bewegen veleitet. Und zwar so: Alle 20 ms muss ein Puls an die Steuerleitung vom Servo angelegt werden. Die Pulslänge liegt zwischen ca 1 und 2 ms, danach wird das Servo dann gestellt. 1ms bedeutet z.B. Linksausschlag, 2ms Rechtsausschlag, 1.5ms Mittelstellung.
Das lässt sich einfachsterweise mit einem Microcontroller bewerkstelligen, erfordert keinerlei sonstige Motortreiber oder Timer-Chips, was auch bei normalen Motoren so nicht funzen kann, dass einfach nur der Motor eine bestimmte Zeit anbleibt. Wenn sich die Reibung der Konstruktion mal erhöht, sei es durch Staub, Alterung oder Sonneneruptionen, dann stimmt der Winkel schon nicht mehr.
Den LM2940 kann man nehmen. Nur, warum willst Du die 12V-Variante betreiben?? Du brauchst 5V für Microcontroller und Servo!
da die spannung immer 0,5-1V höher sein soll als die betriebsspannung des zu betreibenden gerätes.
Das verstehe ich jetzt nicht so ganz. Ich glaube Du meinst die Dropout-Spannung. Die besagt (simpel formuliert), wenn Du z.B. einen 5V-Spannungsregler dieses Typs benutzen willst, musst Du am Eingang mindestens 6V haben - dürfte bei den ca 13V im KFZ-Netz nicht wirklich ein Problem darstellen...
die 12 volt brauch ich ja seperat für das display dann noch schon klar dass ich einen mit 5 volt brauche will dann aber alles auf einer platine unterbingen. steuerung, und spannungsversorgung ic, lcd.
deshalb das display braucht nämlich 12V und da muss ich ja auch irgendwie 12V bekommen.
BlackDevil
15.12.2007, 14:58
Wenn ich das Richtig in Erinnerung hab müsste der Servo sich sollange Bewegen wie Spannung Anliegt und dann die Position halten.
Nein. Ein Servo (zum Verständnis, ich rede von Modellbauservos) bewegt sich überhaupt nicht, solange die Betriebsspannung (übrigens 5V, nicht 12V) anliegt.
Servos werden über PWM zum Bewegen veleitet. Und zwar so: Alle 20 ms muss ein Puls an die Steuerleitung vom Servo angelegt werden. Die Pulslänge liegt zwischen ca 1 und 2 ms, danach wird das Servo dann gestellt. 1ms bedeutet z.B. Linksausschlag, 2ms Rechtsausschlag, 1.5ms Mittelstellung.
Das lässt sich einfachsterweise mit einem Microcontroller bewerkstelligen, erfordert keinerlei sonstige Motortreiber oder Timer-Chips, was auch bei normalen Motoren so nicht funzen kann, dass einfach nur der Motor eine bestimmte Zeit anbleibt. Wenn sich die Reibung der Konstruktion mal erhöht, sei es durch Staub, Alterung oder Sonneneruptionen, dann stimmt der Winkel schon nicht mehr.
Den LM2940 kann man nehmen. Nur, warum willst Du die 12V-Variante betreiben?? Du brauchst 5V für Microcontroller und Servo!
da die spannung immer 0,5-1V höher sein soll als die betriebsspannung des zu betreibenden gerätes.
Das verstehe ich jetzt nicht so ganz. Ich glaube Du meinst die Dropout-Spannung. Die besagt (simpel formuliert), wenn Du z.B. einen 5V-Spannungsregler dieses Typs benutzen willst, musst Du am Eingang mindestens 6V haben - dürfte bei den ca 13V im KFZ-Netz nicht wirklich ein Problem darstellen...
Aaah okay dann Funktioniert das ganze nicht... klar. Gut tschuldigung *g+ Bin wieder ne kante schlauer
Nabend hat einer von euch schon mal so ein 20x4 Display mit temp Anzeigen im PKW eingebaut?
mir gehts darum wie ich die Messwerte auf´s display bekomme...
STS-Robotics
02.07.2008, 09:37
Nabend hat einer von euch schon mal so ein 20x4 Display mit temp Anzeigen im PKW eingebaut?
mir gehts darum wie ich die Messwerte auf´s display bekomme...
Moin...
Schon mal mit einem IC DS1621 gearbeitet? Ist ein Temperatur IC was du über I²C ansteuern/auslesen kannst. Es ist möglich eine Hysterese für Beispielweise Warnungen zu initalisieren und der Temperaturmessbereich liegt bei -50 bis +125 ºC in 0,5 ºC Schritten.
Nachteil: mit 5€ recht teuer!!!
Beim CodeVision AVR sind sogar fertige Bibiotheken vorhanden!
Datenblatt
http://www.datasheetcatalog.net/de/datasheets_pdf/D/S/1/6/DS1621.shtml
Ja ich will mehrere Temperaturen und 2 Drücke anzeigen lassen daher meine Frage O:)
So hab jetzt mein Bausatz fertig
http://www.myavr.de/de/articles/pic/avr_bausatz_plus2_g.gif
hab jetzt an euch eine Frage wie ich ein Temperaturfühler anschlißen kann....
und zwar in die richtig mit zweidraht technik.
So Temperaturen ca um die 0-200grad
und davon so um 3 Stück...
http://www.bubthermo.de/shop/system/Media/Shop/0625%201055-90.jpg
Sind das NPCs/PTCs? (also temperaturabhängige Widerstände? für Digital bräuchte man ja noch ne Versorgungsspannung)
Wenn dem so ist:
Einen Spannungsteiler aus NPC/PTC und nem Festwiderstand machen und die dazwischen anliegende Spannung auf einen ADC-Eingang legen.
Dann per Software diese Spannung in nen Wert umwandeln, ein wenig rechnen, um die Temperatur zu bekommen, und dann ausgeben (anzeigen) lassen.
gut soweit hab ich alles verstanden. nur mit dem ADC-Eingang komm ich nicht so klar. wo isz bei meinem Bausatz( so soll ich das da anschließen?)
was darf da max für eine Spannung anliegen wenn ich im auto 12V :-s habe(Spannungsteile) damit ich den widerstand berechnen kann
Du hast nen ATMega8.
Dessen Pins können oft für mehrere verschiedene Funktionen benutzt werden.
so auch die Pins des Port C. Die haben, neben der Funktion als digitale I/O-Pins, auch die ADC-Funktion.
Wenn du ein Programm schreibst, kannst du die an einem Pin des Ports C anliegende Spannung mit einer Referenzspannung (an Aref, max. 5V) vergleichen lassen. Du kannst also 8 (soviele Pins hat der Port C) verschiedene Spannungen zwischen 0V (Masse) und 5V (VCC) anlegen und auswerten lassen. das wären 8 Temperaturen (Bsp. Motorblock, Kühlwasser, Innenraum vorne, innenraum hinten, Ausentemperatur, mit einem Feuchtigkeitssensor (auch in nem Spannungsteiler) auch die Luftfeuchte innen und evtl auch ausen und Abgastemperatur oder Katalysatortemperatur)
da du deine Microcontrollerschaltung ja eh mit 5V betreibst, nimm die davon. um Kabel zu sparen, kannst du den Temperaturabhängigen Widerstand mit einem Anschluss an Masse schließen, das wäre dann das Chassis von deinem Auto. (natürlich vorausgesetzt, du regelst die 5V von deinen 12V im Auto, so dass "Masse MC-Schaltung = Masse Auto" ist)
Dann wäre bei höherem Widerstand des Temp.-Widerstands die Ausgangsspannung des Spannugsteiler größer. (temp. höher => Spannugn höher => ausgelesene Zahl höher)
Den anderen Anschluss vom Temperaturabhängigen Widerstand schließt du an nen Festwiderstand, der mit dem anderen Anschluss an VCC, also den 5V aus der MC-Versorgungsspannung hängt. und von der Stelle, wo Festwiderstand und Temp.-Widerstand verbunden sind, zweigst du ne Leitung zu nem ADC-Pin ab. An dem kannst du die Spannung auslesen.
Danke für Deine gute Beschreibung
gut das habe ich verstanden. das bekomm ich hin. was würdest du mir für einen Festwiderstand empfehlen?
in der Beschreibung zu meinem Baustaz steht das man ihn an einen 9V spannungsquellen (9V Block) klemmen soll... aber mit 5V müßte es auch gehen.... muß ich mir nur noch was zusammen löten um auf die 5V zukommen 8-[
ftp://vag-competition.selfip.com/avr_bausatz_plus2_g.gif
so der port C hat bei mir auf der Platine nur 5 eingänge (wie auf dem bild zusehen), wie bist du auf 8 gekommen?
gut also kommt die abgezweigte spannung denn an den port 0 auf der platine...
wozu kann ich die D, B Ports noch verwenden? :-k
wie bist du auf 8 gekommen?
nicht genau hingeschaut! Normalerweise kannst du über einen Port ein Byte ausgeben, die einzelnen Pins des Ports nehmen dann die Zustände der 8 Bits des Bytes an. Byte = 8 Bit, das kennst du wohl.
Du hast recht, es sind nur 6 (0 bis 5), weil das Gehäuse "zuwenig" Anschlüsse hat.
Es sind eigentlich 7 Port C-Pins, aber der 7. (PC.6) ist mit RESET belegt.
die anderen Ports sind eigentlich auch alle mit Pins 0 bis 7, aber da wird einiges für andere Sachen verwendet.
Es gibt den Atmega8 auch in anderen Gehäusen, da gibt es mehr ADCs (aber trotzdem nicht mehr Port C -Pins. haha.
n der Beschreibung zu meinem Baustaz steht das man ihn an einen 9V spannungsquellen (9V Block) klemmen soll... aber mit 5V müßte es auch gehen.... muß ich mir nur noch was zusammen löten um auf die 5V zukommen
da ist ein 5V Spannungsregler in der Schaltung. ATMegas brennen bei mehr als 5,5V auf Dauer durch.
mess mal die Spannung an den "LO" und "HI" Anschlüssen (Steckplätze auf der Hauptplatine unten rechts. Evtl. kannst du da 5V (und GND) abzapfen.
was würdest du mir für einen Festwiderstand empfehlen?
Das hängt vom Temperaturabhängigen Widerstand ab.
Ist das ein PTC oder ein NPC (Temp hoch => Widerstand hoch oder Temp hoch => Widerstand niedrig?)
wozu kann ich die D, B Ports noch verwenden?
Einen Port benötigst du schonmal, um das LCD zu betreiben.
mit dem dritten Port kannst du verschiedenes machen: Die Ausfahrvorrichtung steuern (mit Servo => 1 Pin benötigt, mit Gleichstrommotor 4 Pins benötigt (noch 2 Endschalter und 2 Pins für die Motorsteuerung))
Du kannst noch ein Paar Lichteffekte reinbringen (du hast jau auch 3 LEDs auf der Platine) du kannst die Taster auf der Platine nutzen (z.B. um die Anzeige umzuschalten (nach jedem Tastendruck Moduswechsel, Modus 1: Bordspannung und Motorblocktemperatur werden angezeigt. Modus 2: Temperatur innen und Temp. ausen wird angezeigt. Modus 3: alle Temperaturen werden im (2?)Sekundentakt nacheinander angezeigt)
Was mir noch einfällt: du kannst die Bordspannung überwachen! einfach mit zwei Festwiderständenzwischen Masse und 12V vom Auto. wenn die 12V sich verändern, dann merkt das dein MC.
soweit habe ich alles verstanden.... mit die Bits und so
dann werde ich mir mal erst die Temp Sensoren besorgen damit ich weiß was ich für ein widerstand brauche..
wenn ich bei dem Temp Sensor den wiederstand messe bei der Temperatur so um die 20 grad.
(mal abgesehen ob NPC oder PTC)
(Temp hoch => Widerstand hoch oder Temp hoch => Widerstand niedrig?)
Und wenn ich dann einen Wert habe, in welchen Verhältniss muß sich die größe des Festwiederstandes zum gemessenen verhalten?
Bsp. 20 Ohm gemessen ..... Ohm Festwiderstand????? :-k
so jetzt komm ich nochmal zum LCD. Kannst du auf dem Bild erkennen an welchen port das LCD dran ist? so wie ich das sehen bleibt mir Port-C für die Eingänge, aber ich würde sagen das LCD ist zum Teil an Port D und Port-B
ftp://vag-competition.selfip.com/avr%202.jpg
hast du schon mal so etwas entworfen für ein Auto? oder änliches?
LCDs hab ich schon angesteuert, Spannungen auch schon "gemessen"
ich hoffe, dass der NTC/PTC mehr als 500Ohm hat, sonst würde einiges an Strom fliesen. (sry, beim ersten kommt auch ein "T" rein, das heist "Negative Temperature irgendwas" bzw. "Positive Temperature irgendwas" , ich weis nicht mehr, für was das "C" stand..)
Ich würde nach dem Mittelwert schauen, den der Widerstand bei den zu erwartenden Temperaturen hat. Diesen Wert nimmst du etwa für den Festwiderstand. Dann hast du eine große mögliche Schwankung der Spannung und kannst genauer auswerten.
EDIT:
Am Display sind 6 Anschlüsse zum MC geführt, dann kann es per 4-Bit-Ansteuerung angesteuert werden (es wird immer ein halbes Byte übertragen). die Anschlüsse sind(nicht unbedingt nach der Reihenfolge):
- DB4 (Datenbit4)
- DB5 (Datenbit5)
- DB6
- DB7
- RS (Daten oder Anweisung)
- E (Enable)
so kann man bei Bascom (mit diesen Kürzeln und den zugehörigen Pins) das Display angeben, initialisieren lassen und dann einfach mittels
lcd "Temperatur" ; temp
anzeigen lassen (hier den Text "Temperatur" und den Wert der Variablen "temp")
nagut dann wert ich mich mal an der Programmierung versuchen... das wird bestimmt nicht einfach. :-k :-k
wert erst mal mit normalen text anfangen, und dann die werte versuchen Azeigen zulassen....
das bereitet mir jetzt schon schlaflose Nächte ](*,)
I wo.
im RN-Wiki steht alles drin, was du brauchst, keine Sorge!
Nur logisch denken musst du selber können, dann geht das.
gute Idee, das mit dem "erst klein anfangen". versuch erstmal ne LED zum Blinken zu bringen, dann "Hallo Welt!" oder anderes zu schreiben, dann mal n bisschen rechnen und dann mal die Ersten ADC-Sachen machen.
Hallo,
so hab mir jetzt mal 2 tempsensoren besorgt einer ist ein Öl Temp Sensor(NPC) betriebszustand 1,8kohm festwiderstand für spannungsteiler 1,8kohm
der andere für Abgas(PTC NiCr Sensor)
zum probieren hab ich den NPC genommen.
folgen code hab ich mir zusammen geschrieben
Config Adc = Single , Prescaler = Auto
Start Adc
Dim Temp1 As Word , Portc.5 As Byte
Portc.5 = 0
Do
Temp1 = Getadc(portc.5)
Print "ADC-Pin " ; Portc.5 ; ": Wert " ; Temp1
Incr Portc.5
If Portc.5 > 7 Then Portc.5 = 0
Waitms 300
Cls
Locate 1 , 1
Lcd "Temp" ; Temp1
Loop
End
auf der Anzeige sieht es schon mal gut aus, nur die werte sind total verrückt mal 358. 2258,0,245,18045
kann mir einer ein tip geben was ich ändern muß?
Du fragst ja alle ADC-Pins ab. und ADC-Pins, die mit nichs verbunden sind, spielen Antenne, sie nehmen mal dieses und mal jenes Potentieal an. frag mal NUR den ADC-Pin ab, an dem dein Temp-Sensor hängt!
(z.B. durch "Temp1 = getadc(0) " )
eventuell gibt es auch Probleme mit der Variablen "Portc.5".
nenn diese Variable sicherheitshalber mal "Pinnummer" oder "ADCkanal" o.Ä. , zumindest nicht so, wie eine Standartvariable für die Porteinstellung.
vor das erste Print würde ich auch ein "CLS" zu setzen. (zur Sicherheit)
ja hat gut geklappt... aber mit dem CLS hinter dem Print, hat nicht funktioniert da war das dislpay leer..
so der Wert der im LCD angezeigt wird steht so bei 632 verändert sich auch je nach temperatur unterschied...
wie kann ich jetzt den Wert kalibrieren. da gibt es doch bestimmt mehre möglichkeiten also den spannungsteiler den ich benutze hat ein festwiderstand von 1,8k Ohm und der Temp sensor bei raumtemperatur 1,8k Ohm. dann liegen am pin so um die 2,35V an also fast genau die hälfte von der batterie spannung 4,7... die Werte schwanken natürlich....
8-[ O:)
eeeh, ja bei dem CLS war ein Denkfehler.... :)
Zum Spannung variieren: da hilft ein Potentiometer statt dem Festwiderstand. Du sagtest, es wäre ain NTC, also sinkt der Widerstand, wenn die Temperatur steigt.
Kennst du die Werte von dem NTC, wenn er X Grad warm ist/ um wieviel Ohm sein Widerstand pro Grad mehr sinkt?
Dann könnte man berechnen, was für einen Widerstand du etwa benötigst.
Du kannst natürlich auch einfach das Poti nehmen und herumexperimentieren. Solange dein Vref gleich Vcc ist, besteht keine Gefahr.
ja das mit dem Poti hab ich mir schon gedacht..... gibt es auch noch eine möglichkeit die man ins programm schreiben kann?
als nächstes versuche ich den abgastemp sensor... 30 ohm und mit der temperatur nimmt widerstand zu......
hier nochmal mein code wollte den zweiten wert anzeigen lassen. bekomm immer ein fehler "LOOP expected"
100% hab ich den dreh mit dem schreiben noch nicht raus ](*,)
deine Hilfe ist echt super. danke echt nett
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4
Deflcdchar Print , 17 , 32 , 14 , 17 , 17 , 17 , 14 , 32 ' replace ? with number (0-7)
Cls
Config Adc = Single , Prescaler = Auto
Start Adc
Dim Temp1 As Word , Kanal1 As Byte
Kanal1 = 0
Do
Temp1 = Getadc(5)
Print "ADC-Pin " ; Kanal1 ; ": Wert " ; Temp1
Incr Kanal1
If Kanal1 > 7 Then Kanal1 = 0
Waitms 100
Cls
Locate 1 , 1
Lcd Chr(0) ; "L: " ; Temp1
Dim Temp2 As Word , Kanal2 As Byte
Kanal2 = 0
Do
Temp2 = Getadc(4)
Print "ADC-Pin " ; Kanal2 ; ": Wert " ; Temp2
Incr Kanal2
If Kanal2 > 7 Then Kanal2 = 0
Waitms 100
Cls
Locate 2 , 1
Lcd "Abgas: " ; Temp2
Loop
End =D>
Du hast 2X "Do" drin, aber nur einmal "loop".
Außerdem müssen Variablen immer VOR dem eigentlichen Programm deklariert werden (zumindest afaik) (das ist das, was du mit "dim" machst)
...
Locate 1 , 1
Lcd Chr(0) ; "L: " ; Temp1
Dim Temp2 As Word , Kanal2 As Byte
Kanal2 = 0
Do
Temp2 = Getadc(4)
...
hier deklarierst du Temp2, nachdem schon Arbeitsanweisungen gegeben wurden.
dein 2. "Do" ist hier übrigens zu sehen.
warum zählst du zweimal die ADC-Pins durch???? das ist wirgendwie sinnlos.
probiere es damit (oder etwas ähnlichem):
Dim Temp as Word , Kanal as Byte
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4
Config Adc = Single , Prescaler = Auto
Start Adc
cls
Kanal = 0
Do
Temp = getadc(Kanal)
cls
locate 1 , 1
lcd "ADC-Pin: " ; Kanal ; "Wert: " ; Temp
wait 1
incr Kanal
if Kanal > 7 then
Kanal = 0
end if
loop
End
damit sollten alle ADC-Pins nacheinander im Sekundentakt abgefragt und die Werte angezeigt werden.
wenn du nur die Kanäle 0 bis X abfragen möchtest (z.B. nur bis Kanal 2), dann musst du nur bei
if Kanal > 7 then
die 7 durch X (also Bspw 2) ersetzen)
Naja alle Funktionen kenne ich nocht nicht so ganz... wird aber langsam.
so hab dein Code probiert.... also da werden die werte nacheinander Angezeigt... ich wollte sie aber Gleichzeitig auf dem Display angezeigt bekommen.... das sich nur der wert Aktualisiert....
gut habe noch hin bekommen das mit den Anzeigen gleichzeitig aud dem Display...
so jetzt noch mal zum einstellen der Werte ich glaube ich hab mal gelesen man kann im Programm so einen art umrechner oder das einbinden einer reference Spannung mit einbauen um an den wert näher ranzukommen... geht sowas? also was ich noch zusätzlich zu den potis machen kann....
ja, du kannst an Vref eine Referenzspannung kleiner/gleich Vcc anlegen. am einfachsten mit einem (hochohmigen) Poti, das du als Spannungsteiler verwendest.
das könnte helfen, wenn du die Temp-Widerstände in den Spannungsteilern gegen GND schaltest (und de Festwiderstand gegen Vcc)
du musst aber an die Spannungen denken, die du bekommen kannst (nimm zur sicherheit nicht gleich 2,5V, sondern 3 oder eine Zahl, mit der du gut rechnen kannst wie z.B. 3,072V, dann lägen 0,003V*ADC-Wert an.
(im ATMega8 ist ein 10-Bit-ADC, er gibt dir also Werte von 0 bis 1024 aus. 3,072V bei 1024 Abstufungen ergibt 0,003V pro Stufe. sollte genau genug sein)
gut muß ich da im Programm noch irgend was zu schreiben?
hast du da ein beispiel?
Wenn sich das auf die Referenzspannung bezieht:
keine Ahnung. woher bezieht es denn bisher seine Referenzspannung? die internen 2,5V (o.ä.) oder etwas von Vref, oder noch wo anderst her?
In der Zeile, wo du den ADC konfigurierst, muss, jeh nach dem wie es bisher ist, eventuell noch etwas dahinter. etwas à la "ref = Vref" oder so... (da ich aber gerade auf Linux umgestiegen bin, kann ich leider nicht nachschauen)
schau mal in der Bascom-Hilfe nach.
wenn sich das "muss ich da noch was anderes schreiben" auf das Umrechnen bezieht:
einfach
Temp = Temp * 0.003 'damit hast du die Spannung
oder
Temp = Temp * <hier Wert einsetzen> 'damit bekommst du die Temperatur, wenn du weißt, mit welchem Wert du multiplizieren Musst.
' geht natürlich auch, wenn du davor die Spannung ausgerechnet hast
' (Spannung * best. Wert = Temperatur)
Hoffe, das war verständlich...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.