nagut dann wert ich mich mal an der Programmierung versuchen... das wird bestimmt nicht einfach.![]()
![]()
wert erst mal mit normalen text anfangen, und dann die werte versuchen Azeigen zulassen....
das bereitet mir jetzt schon schlaflose Nächte![]()
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
anzeigen lassen (hier den Text "Temperatur" und den Wert der Variablen "temp")Code:lcd "Temperatur" ; temp
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
nagut dann wert ich mich mal an der Programmierung versuchen... das wird bestimmt nicht einfach.![]()
![]()
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.
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
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
auf der Anzeige sieht es schon mal gut aus, nur die werte sind total verrückt mal 358. 2258,0,245,18045Code: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
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)
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
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....
![]()
![]()
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.
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
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
=D>Code: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
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)
hier deklarierst du Temp2, nachdem schon Arbeitsanweisungen gegeben wurden.Code:... Locate 1 , 1 Lcd Chr(0) ; "L: " ; Temp1 Dim Temp2 As Word , Kanal2 As Byte Kanal2 = 0 Do Temp2 = Getadc(4) ...
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):
damit sollten alle ADC-Pins nacheinander im Sekundentakt abgefragt und die Werte angezeigt werden.Code: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
wenn du nur die Kanäle 0 bis X abfragen möchtest (z.B. nur bis Kanal 2), dann musst du nur bei
die 7 durch X (also Bspw 2) ersetzen)Code:if Kanal > 7 then
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
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....
Lesezeichen