Moin alle zusammen, hab da ein Problem uns zwar hab ich eine Temperatur regelnde Lüftersteuerung mit Lcd Anzeige und 2 Temperatursensoren gebaut. ich verwende den Atmega 8 als Sensor einen Lm 235 und ja eine selbst entworfenen Platine. funktioniert auch zeigt die Temperatur richtig an nur wird bei meinem ersten durch lauf bei beiden Zeilen der wert des einen Temperaturfühler angegeben und beim 2 durch lauf der des anderen bei beiden findet von euch einer meinen Denkfehler im Code. sry hab es aus versehen 2 mal an gehängt dank schon viel Mals Knut
Ganz ehrlich, da blicke ich net durch: :D Erkläre mal, wo wird Sensor 1 gelesen und wo Sensor 2?
1 | Schleife1: |
2 | |
3 | B = 206 'Steigung 1° = 2,06 bit mehr und da man keine Kommastellen angeben kann * 100 |
4 | |
5 | C = 56300 'Offset wert bei 0° hat die Schaltung 563 Bit * 100 für die Rechnung |
6 | |
7 | |
8 | |
9 | Lb1 = Adcl 'Abfrage des Lowbits |
10 | |
11 | Hb1 = Adch 'Abfrage des Highbits |
12 | |
13 | Hb1 = Hb1 And &B00000011 'Highbit mit 3 und verknüpfen um eventuele Störsignale ich ein zu Beziehen |
14 | |
15 | Hb1 = Hb1 * 256 'High bit * 256 um 1023 bit zu bekommen |
16 | |
17 | A = Lb1 + Hb1 |
18 | 'Variable A = Gesamt bit High- und Lowbit |
19 | D = A * 100 'Umwandlung von A für die Berechnung der Temperatur |
20 | |
21 | Y = D - C |
22 | 'Bitwert der Temperatur - Offset |
23 | X = Y / B |
24 | |
25 | Cls |
26 | |
27 | Incr Curch |
28 | |
29 | If Curch > 1 Then Curch = 0 |
30 | |
31 | |
32 | Temp = Admux And &B11110000 |
33 | |
34 | Admux = Temp Or Curch |
35 | |
36 | Lb2 = Adcl.1 |
37 | |
38 | Hb2 = Adch.1 'Abfrage des Highbits |
39 | |
40 | Hb2 = Hb1 And &B00000011 'Highbit mit 3 und verknüpfen um eventuele Störsignale ich ein zu Beziehen |
41 | |
42 | Hb2 = Hb1 * 256 'High bit * 256 um 1023 bit zu bekommen |
43 | G = Lb1 + Hb1 |
44 | |
45 | |
46 | |
47 | H = G * 100 |
48 | I = H - C |
49 | 'Resultierenden Wert Y durch die Steigung B X= Temperatur |
50 | J = I / B |
Sensor 1 wird an Portd.0 gelesen und Sensor 2 wird an Portd.1 gelesen
> Ganz ehrlich, da blicke ich net durch: :D Vorgeschichte: Beitrag "LCD ansteuerung mit Atmega8" Beitrag "ADC Vergleichen und Variable ändern"
Helfer schrieb: >> Ganz ehrlich, da blicke ich net durch: :D > > Vorgeschichte: > Beitrag "LCD ansteuerung mit Atmega8" > Beitrag "ADC Vergleichen und Variable ändern" schon wieder so ein schlau Meyer der hier rumspamt
Also ich kann ihn verstehen ich versteh auch nicht was du da programmiert hast. Und deine Art und Weise ist auch nicht wirklich die feine Englische Art. Er sagt dir das er es nicht versteht was du programmiert hast und du schreibst: "Sensor 1 wird an Portd.0 gelesen und Sensor 2 wird an Portd.1 gelesen" Was soll man denn damit anfangen ? Du erwartest doch Hilfe oder ?!
Die Sensoren hängen an PortD.0 und PortD.1? Die AD-Wandler_Eingänge sitzen aber auf Port C. Du bist doch bestimmt auf PortC.0 und PortC.1.... Der Fehler muß aber in diesen Zeilen liegen: Incr Curch If Curch > 1 Then Curch = 0 Temp = Admux And &B11110000 Admux = Temp Or Curch Offenbar wird nicht der richtige Wandlerkanal gewählt. MfG Paul
Rene K. schrieb: > Erkläre mal, wo wird Sensor 1 gelesen und wo Sensor 2? hab nur die Frage bentwortet Paul Baumann schrieb: > Die AD-Wandler_Eingänge sitzen aber auf Port C. > Du bist doch bestimmt auf PortC.0 und PortC.1.... Jepp Sry hab mich vertippt sind an Portc.0 und Portc.1 an geschloßen
so hab das Problem behoben. Man muss das Incr Curch If Curch < 1 Then Curch = 1 Temp = Admux And &B11110000 Admux = Temp Or Curch vor beide rechnungen setzen einmal so und das andere mal so Incr Curch If Curch > 1 Then Curch = 0 Temp = Admux And &B11110000 Admux = Temp Or Curch hatte bei mir noch einen anderen Fehler drin so hier ist der Code der Funtioniert.
1) Wenn du eine Variable brauchst die abwechselnd 0 und 1 ist, dann it die einfachste Version Variable = 1 - Variable 2) Was soll der Müll mit den ADC Registern? Schon mal ins BASCOM Handbuch (Online-Hilfe) geschaut? In BASCOM gibt es den wunderbaren Befehl GETADC( Kanal ) dein ganzes Herumgemurxe mit dem ADC (welches im übrigen sowieso falsch ist - du musst auch drauf warten, dass der ADC fertig ist ehe du dir die Wetre abholen kannst) kannst du dir sparen. ADC konfigurieren und GETADC benutzen! Aber dafür müsste man ja mal in die BASCOM Doku schauen, was BASCOM Neulinge ja bekanntlich nie tun, weil ja eh alles so einfach ist. PS: wenn ein Programm ständig den Namen seines Programmierers ausgibt, dann macht sich der Programmierer damit zum Gespätt unter den Profis.
Gleich kommt der Nächste und erklärt, dass der Befehl GETADC jede Menge Ressourcen verbraucht und man doch lieber die Register benutzen sollte. Allen Leuten Recht getan, ist ein Kunst, die niemand kann. Jüntha
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.