۲۸-تير-۱۳۸۸, ۱۷:۲۹:۳۷
سلام
من پروژه زیر رو انجام دادم
ولی وقتی گزینه refrence رو که تو برنامه نیست تو میکرو میریزم دما رو 232 و زمانی که ولتاژ داخیشو برای میکرو مینویسم دما خیلی تغیر میکنه مثلا از 2 میره به 40 و...
البته من از غیلتر استفاده نکردم میتونه از اون هم باشه؟ ( تو دماسنج با ntc بدون فیلتر هم کار میکرد)
اگه کسی با این سنسور کار کرده یه ندایی هم به ما بده
من پروژه زیر رو انجام دادم
کد php:
$regfile = "m16def.dat"
'We use internal osc 4000000 for atmega16
$crystal = 4000000
Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = _
Portc.4 , E = Portd.2 , Rs = Portd.3
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto, [size=medium][b]Reference = Internal[/b][/size]
Start Adc
Config Timer0 = Timer , Prescale = 1024
Enable Interrupts
Enable Timer0
On Timer0 Temp_sample
Start Timer0
Dim Sample As Word
Dim Temp As Word
Dim Temp_final As Integer
Dim Sum As Integer
Deflcdchar 0 , 24 , 24 , 32 , 32 , 32 , 32 , 32 , 32 '' sign -> (')
Cursor Off
Cls
Do
Loop
end 'end program
Temp_sample:
Incr Sample 'incr sampling counter
Temp = Getadc(0) 'read adc(0) every 65ms
Sum = Sum + Temp 'sum the sample data
If Sample = 15 Then '20 samples
Sample = 0 'reset sample counter
Stop Timer0 'stop timer to calculation
Sum = Sum / 15 'mean calculation
Sum = Sum - 558 'decrementing offset
Temp_final = Sum / 2 'every 10mv is almost 2 step of adc (adc step=5/1023=4.88mv)
Select Case Temp_final
Case Is =< 10 : 'compare temperature
Home L
Lcd " Low "
Case 11 To 34 : 'compare temperature
Home L
Lcd " Normal "
Case Is >= 35 : 'compare temperature
Home L
Lcd " High "
End Select
Home
Lcd Temp_final ; Chr(0) ; "C " 'show temperature
Start Timer0
Sum = 0
End If
Return
ولی وقتی گزینه refrence رو که تو برنامه نیست تو میکرو میریزم دما رو 232 و زمانی که ولتاژ داخیشو برای میکرو مینویسم دما خیلی تغیر میکنه مثلا از 2 میره به 40 و...
البته من از غیلتر استفاده نکردم میتونه از اون هم باشه؟ ( تو دماسنج با ntc بدون فیلتر هم کار میکرد)
اگه کسی با این سنسور کار کرده یه ندایی هم به ما بده