Problem med DS18B20 temp sensorer.

Övriga diskussioner relaterade till komponenter. Exempelvis radiorör, A/D, kontaktdon eller sensorer.
lennie
Inlägg: 26
Blev medlem: 30 juni 2007, 22:38:44
Ort: Malmö

Inlägg av lennie »

Jag ska börja använda shift tangenten mer..
Jo, att det saknas ) i slutet av raden. och givetviss så testade jag att lägga till ) i slutet av raden, och ta bort ( ifrån början av raden innan jag la ut hjälpen här.
Skulle kanske sagt det i inlägget.
kimmi
Inlägg: 221
Blev medlem: 13 april 2007, 12:25:00

Inlägg av kimmi »

Hi ,

Kod: Markera allt

copy paste error form forum must be  this i thnik  
Raw_temp= (j2 >> 8) or j1   
copy paste error form forum must be this i thnik
Raw_temp= (j2 >> 8) or j1

@EDIT shl not shf sorry

Kod: Markera allt

Raw_temp= (j2 << 8) or j1  
Senast redigerad av kimmi 1 juli 2007, 16:37:47, redigerad totalt 2 gånger.
lennie
Inlägg: 26
Blev medlem: 30 juni 2007, 22:38:44
Ort: Malmö

Inlägg av lennie »

Felet som jag får på den raden är.
Identifer '<<' was not declared
om jag sen använder () eller utan () spelar ingen roll. Får samma fel endå.
Användarvisningsbild
JimmyAndersson
Inlägg: 26571
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Kan du visa hela koden som du använder?
lennie
Inlägg: 26
Blev medlem: 30 juni 2007, 22:38:44
Ort: Malmö

Inlägg av lennie »

Det ser ut som om allt fungerar nu.
När jag mäter ifrån sensor 1. ( sensor på labbkort) säger den att det är 25.1
När jag mäter ifrån sensor 2. ( sensor i kylskåpet ) säger den att det är 9,6C
och det kanske kan stämma.
koden som jag använder mig av är följande.
--------------------------
program DS18B20_test

dim Raw_temp as word
TempC, comma as word
i, j1, j2, minus as byte
text as char[14]

main:
'DDRC.3 =1 ' put RW on GND --> PORTC.3=0
'PORTC.3 =0 ' to work on GLCD connector

Lcd_Init(PORTD, 6, 4, PORTA, LCD_HI_NIBBLE)
Lcd_Out(1,1,"Temeperature :")
Lcd_Cmd(LCD_CURSOR_OFF)
do
ow_reset(PORTC,6) ' onewire reset signal
ow_write($CC) ' issue command to DS1820
ow_write($44) ' issue command to DS1820
delay_us(120)
i = ow_reset(PORTC,6)
ow_write($CC) ' issue command to DS1820
ow_write($BE) ' issue command to DS1820

j1 = ow_read ' get result
j2 = ow_read ' get result (assuming the temperature is positive)

minus= j2 >> 3

if minus = $1F then ' Checking temp.(+ or -)
j2= not j2
j1=-j1
end if

Raw_temp= (j2 << 8) or j1 ' Getting RAW data

if minus = $1F then
Lcd_Chr(2,1,"-") ' Write temp. sign (+ or -) on LCD
else
Lcd_Chr(2,1,"+")
end if

TempC=(Raw_temp and $0FF0) >> 4 ' WHOLE NUMBER
comma=(j1 and $0F) * 625 ' DECIMAL

WordToStr(TempC,text) ' Write temp. whole number on LCD
Lcd_Chr(2, 2, text[0])
Lcd_Chr(2, 3, text[1])
Lcd_Chr(2, 4, 46) '"."
WordToStr(comma,text) ' Write temp. decimal number on LCD
Lcd_Chr(2, 5, text[0])
Lcd_Chr(2, 6, text[1])
Lcd_Chr(2, 7, text[2])
Lcd_Chr(2, 8, text[3])
lcd_chr(2, 9, 223) ' "degree" character
lcd_chr(2, 10,"C")
Delay_ms(500)
loop until false ' endless loop
end.

--------------------------
kimmi
Inlägg: 221
Blev medlem: 13 april 2007, 12:25:00

Inlägg av kimmi »

hi ,
du måste andvenda (code) nær du poster code >>>> 8)

Kod: Markera allt

Raw_temp= (j2 << 8) or j1 ' Getting RAW data 
Kan du testa detta

Kod: Markera allt

Raw_temp= (j2 << 8) + j1 ' Getting RAW data 
se om det blir helt fejl nu ...
Senast redigerad av kimmi 1 juli 2007, 17:15:31, redigerad totalt 1 gång.
lennie
Inlägg: 26
Blev medlem: 30 juni 2007, 22:38:44
Ort: Malmö

Inlägg av lennie »

Jag testade skriva code: innan själva koden började.
men det gjorde ingen skillnad.
men jag ska använda mig av code: i fortsättningen.
kimmi
Inlägg: 221
Blev medlem: 13 april 2007, 12:25:00

Inlägg av kimmi »

hi,
( sensor i kylskåpet ) säger den att det är 9,6C

Hmm No cold beer for me then ... :lol:
lennie
Inlägg: 26
Blev medlem: 30 juni 2007, 22:38:44
Ort: Malmö

Inlägg av lennie »

Vi testar lite.

code:
------------------------------------------
Raw_temp= (j2 << 8) + j1 ' Getting RAW data
------------------------------------------
lennie
Inlägg: 26
Blev medlem: 30 juni 2007, 22:38:44
Ort: Malmö

Inlägg av lennie »

Och ett test till.

Kod: Markera allt

Raw_temp= (j2 << 8) + j1 ' Getting RAW data
Nu funkar det.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Vad funkar ?
Code-taggen eller koden ?
lennie
Inlägg: 26
Blev medlem: 30 juni 2007, 22:38:44
Ort: Malmö

Inlägg av lennie »

Både code-taggen och själva koden fungerar mycket bra.

Ny fråga.
DQ signalen, den som går till PC7 på atmega16. Använder jag ett 10k motstånd.
Enligt information ifrån manualen.
på PC6 har jag en till DS18B20 sensor. den som ligger i kylen just nu.
Den DS18B20 sensorn har en ca 3 meter lång kabel till sig ifrån labbkortet.
Vart är bäst att sätta detta 10k motståndet. och spelar det någon roll vart man sätter det.


EDIT. förtydligande.
mottståndet sitter inte mellan sensorn och ATMega, utan på VCC till kabeln mellan sensorn och ATMega16

alt 1.
<DS18B20 sensor + 10k motstånd> ---------3 meter kabel------- <Atmega16>

alt 2.
<DS18B20 sensor> ------------ 3 meter kabel -------- <10k motstånd + atmega16>

Just nu kör jag på alternativ 1.
det vill säga motståndet sitter vid DS18B20 sensorn ( i kylen) ifrån den går det en 3 meter kabel till labbkortet där ATmega16 sitter
kimmi
Inlägg: 221
Blev medlem: 13 april 2007, 12:25:00

Inlägg av kimmi »

Hi ,
vilken a dom code funker

Kod: Markera allt

Raw_temp= (j2 << 8) or j1 ' Getting RAW data 

ellse 

Raw_temp= (j2 << 8) + j1 ' Getting RAW data 

hint : "or" eller  "+" 

ang: 10 Kohm speller ingen rolle men jeg vill sætta den på avr om noget hender med kablet
lennie
Inlägg: 26
Blev medlem: 30 juni 2007, 22:38:44
Ort: Malmö

Inlägg av lennie »

Denna funkar.

Kod: Markera allt

Raw_temp= (j2 << 8) or j1 ' Getting RAW data 
kimmi
Inlägg: 221
Blev medlem: 13 april 2007, 12:25:00

Inlägg av kimmi »

hi,
Ok :tumupp:
Skriv svar