PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Temperatur + Beleuchtung



DaveWagner
14.02.2009, 11:37
Hallo

Ich habe folgendes Problem:
Ich möchte zwei ADCs gleichzeitig laufen lassen und zwar ist eins für die Temperaturmessung zuständig und das andere für Helligkeitsmessung.
Wenn es dunkel ist soll die Displaybeleuchtung sich einschalten.

Das Thermometer allein funktioniert einwandfrei sobald ich jedoch die Beleuchtung mit einbringe zeigt das Display gar nichts oder nur Wirrwarr an.

Ich bin mir nicht sicher ob es an der Hardware oder Software liegt , aber da beide ( Beleuchtung geht an einem anderen Atmega einzeln ohne Temperaturmessung) einzeln funktionieren dachte ich liegt es am Code

Vielleicht könnt ihr einen Fehler finden hier der Code
PinD.1 ist der Ausgang für die Beleuchtung



' *
' * Title : LCD Thermometer LM35.bas
' * Version : 1.0
' * Last Updated : 17.04.2006
' * Target : AT Mega8
' * Author : www.avrprojects.net
' * Program code : BASCOM AVR
' * Hardware req. : LM35
' * Description : read analog value from LM 35 temperature sensor, show the result on a LCD
' * display with bar-graph
' ************************************************** *************************
$regfile = "M8def.dat" ' use the Mega8

$crystal = 1000000


Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32 ' replace ? with number (0-7)'
Deflcdchar 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 2 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 3 , 16 , 16 , 31 , 31 , 31 , 31 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 4 , 1 , 1 , 31 , 31 , 31 , 31 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 5 , 32 , 32 , 28 , 28 , 28 , 28 , 32 , 32 ' replace ? with number (0-7)
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4

Config Lcd = 16 * 2

Config Pind.1 = Output

Config Pinb.0 = Input

Taster1 Alias Pinb.0
Led1 Alias Portd.1

Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADC
Start Adc

Dim X As Word
Const A = 70

Dim W As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As Byte

Cls
Cursor Off
Locate 3 , 1
Lcd "0"
Locate 3 , 4
Lcd "10"
Locate 3 , 8
Lcd "20"
Locate 3 , 12
Lcd "30"
Locate 3 , 16
Lcd Chr(223) ; "C"





Do

X = Getadc(1)
If X > A Then
Led1 = 1
Else Led1 = 0
End If











W = Getadc(0)
Volt = W * 5
Volt_d = Volt Mod 10
Volt = Volt / 10
Locate 1 , 1
Lcd Volt ; "," ; Volt_d

Cols = Volt / 2

Locate 2 , 1
For I = 1 To Cols
Select Case I
Case 1 : Lcd Chr(3)
Case 5 : Lcd Chr(4)
Case 10 : Lcd Chr(4)
Case 15 : Lcd Chr(4)
Case 20 : Lcd Chr(4)
Case Else : Lcd Chr(0)
End Select
Next I

Cols_d = Cols Mod 2
If Cols_d > 0 Then
Lcd Chr(5)
Cols = Cols + 2
Else
Cols = Cols + 1
End If

For I = Cols To 20
Select Case I
Case 1 : Lcd Chr(2)
Case 5 : Lcd Chr(1)
Case 10 : Lcd Chr(1)
Case 15 : Lcd Chr(1)
Case 20 : Lcd Chr(1)
Case Else : Lcd Chr(32)
End Select
Next I

Waitms 1000
Loop
End

Darf ich zweimal AVGND und AVCC als Stromversorgung hernehmen ?
Also für LDR und NTC.

Mfg
David

stefan_Z
14.02.2009, 13:22
Man kann in PINs nicht SCHREIBEN. Nur in PORTS.
Mach mal oben:

Config PORTd.1 = Output
Config Pinb.0 = Input
Taster1 Alias Pinb.0
Led1 Alias Portd.1

Dirk
14.02.2009, 13:30
Darf ich zweimal AVGND und AVCC als Stromversorgung hernehmen ? Also für LDR und NTC.
AVCC und AGND sind keine Stromversorgung für externe Sensoren!

AVCC des ATmega8 wird normalerweise mit VCC verbunden (ggf. über eine Spule 10uH), AGND mit GND.

Deine Sensoren sollten direkt von VCC versorgt sein.

Gruß Dirk