Goedemiddag,
Met de zoekfunctie van het forum kan ik geen goed topic vinden waar specifiek beschreven staat hoe ik een temperatuur sensor moet uitlezen met de PIC16F628
Het gaat om de sensor DS1820. De sensor geeft een digitaal signaal, de vraag is alleen hoe ik dit signaal kan uitlezen en omvormen tot graden celcius
M'n programmeer taal is PICBasic
Jep die ken ik
Maar dat vind ik nogal een onoverzichtelijke code.
Ik kan niet goed begrijpen wat er allemaal moet gebeuren om uiteindelijk de temperatuur op je display te zien.
@elektron: Nee die dingen ken ik niet en kan ik ook niet programmeren 
[Bericht gewijzigd door Boeip op (17%)]
elektron_
beetje gek
Jammer...
Ik google een beetje en er is geneoeg te vinden.
http://www.guidecircuit.com/Circuit-Microcontroller-Digital-thermomete…
[Bericht gewijzigd door elektron_ op (88%)]
Ik kan alles wel klakkeloos overnemen en inelkaar solderen. Maar daar leer ik niks van. Van Assambler kan ik helemaal niks, dus aan die source code heb ik niks.
- Welke commando's gebruik je om een DS1820 uit te lezen? (Dallas 1-wire protocol)
- Het signaal is digitaal, maar hoe laat ik nou de daadwerkelijk gemeten temperatuur op een lcd verschijnen?
- Komt er meteen "graden celcius" uit de DS1820 zetten, of moet ik deze eerst berekenen?
Dit alles in PICBasic
Heb jij de handleiding van Proton+ wel eens doorgenomen? Volgens mij niet... Zoek maar eens op OREAD.
elektron_
beetje gek
Ben je gewoon een beetje lui of hoe zit dat ?
Eerste lijn in Google:
http://www.rentron.com/PICX4.htm
[Bericht gewijzigd door elektron_ op (44%)]
Iemands reacties lezen is tegenwoordig ook een vak opzich.
Ik zoek gewoon wat uitleg over de commando's die je moet gebruiken om het geheel werkend te krijgen.
@ZX6RR, ik heb daar eens gekeken. Ik heb alles nu in een PIC16F628 gepropt en het hier en daar aangepast. Morgen probeer ik het in een PIC16F84 waar de code voor bedoeld is
~Galaxy
In the beginning there was nothing.... and even that exploded...
Tip : Neem een T-sensor die met een fatsoenlijk protocol werkt.
Denk aan DS1621 of TC74.
Beide chippies kan je als free sample aanvragen bij Maxim/Microchip.
Code ervoor heb je in een half uurtje geschreven.
~Galaxy
In the beginning there was nothing.... and even that exploded...
Schakelingetje :
Progje :
Device = 16F628A
Config INTRC_OSC_NOCLKOUT, CP_OFF, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, BODEN_off
DelayMS 200
ALL_DIGITAL=true
Declare LCD_DTPIN PORTB.4
Declare LCD_RSPIN PORTB.2
Declare LCD_ENPIN PORTB.3
Declare LCD_LINES 2
Cls
Clear
Declare SCL_PIN PORTB.0
Declare SDA_PIN PORTB.1
Dim T As Word
Dim dummy As Byte
BusOut %10010000,172,[1] ;oneshot mode in t-sensor.
BusOut %10010000,[238] ;start conversie
;-----------------------------
main:
BusIn %10010001,172,[dummy] ;lees config register van T-sensor
If dummy.7=1 Then ;1=conversion ready, 0=busy
BusIn %10010001,170,[T] ;lees T-sensor
BusOut %10010000,[238] ;start nieuwe temperatuur conversie
End If
DelayMS 100
If T.HighByte<128 Then ;positieve temperatuur
Print At 1,1," "
Print DEC2 T.HighByte
If T.LowByte=0 Then
Print ".0"
Else
Print ".5"
End If
Else ;negatieve T
Print At 1,1,"-"
If T.LowByte=0 Then
Print DEC2 256-T.HighByte
Print ".0"
Else
Print DEC2 255-T.HighByte
Print ".5"
End If
End If
Print 223,"C"
GoTo main
Er zit maar 1 nadeel aan deze schakeling; het is niet spannend. 
Doe er dan minstens een RTC bij (DS1307). Dan heb je datum en tijd er ook bij. Anders blijft het LCD'tje zo kaal...
beetje uitbreiden dan maar ...
hoogste waarde onthouden, en laagste waarde onthouden.
is het lcd'tje wat voller.
en-uh...marco , 1-wire ds1820 is ook best te doen in picbasic.
Ik heb dat stukje code uit de help topics van Proton geprobeerd, maar de waarde die de sensor geeft is 655,10. De variabele is gedeclareerd als WORD
DEVICE 16F84
DECLARE XTAL 4
SYMBOL DQ = PORTA.1 ' Place the DS1820 on bit-1 of PORTA
DIM Temp AS WORD ' Holds the temperature value
DIM C AS BYTE ' Holds the counts remaining value
DIM CPerD AS BYTE ' Holds the Counts per degree C value
CLS ' Clear the LCD before we start
Again:
OWRITE DQ, 1, [$CC, $44] ' Send Calculate Temperature command
REPEAT
DELAYMS 25 ' Wait until conversion is complete
OREAD DQ, 4, [C] ' Keep reading low pulses until
UNTIL C <> 0 ' the DS1820 is finished.
OWRITE DQ, 1, [$CC, $BE] ' Send Read ScratchPad command
OREAD DQ, 2,[Temp.LOWBYTE,Temp.HIGHBYTE, C, C, C, C, C, CPerD]
' Calculate the temperature in degrees Centigrade
Temp = (((Temp >> 1) * 100) - 25) + (((CPerD - C) * 100) / CPerD)
PRINT AT 1,1, DEC Temp / 100, ".", DEC2 Temp," ", AT 1,8,"C"
GOTO Again
[Bericht gewijzigd door Boeip op (82%)]
EdwinNadorp
Koop hier uw kristallen bol - in 2008 ga ik m'n projecten afmaken, echt waar ....... nouja in 2009 dan ..... ehh 2010 ....
In het voorbeeld van mikroBasic wordt er 120 uS gewacht na het eerste commando en het werkt perfect.
elektron_
beetje gek
In de datasheet van de DS18S20 staat dat je 750mS moet wachten, maar goed ik ken PicBasic niet.
Misschien zit het in REPEAT
http://www.picbasic.org/forum/archive/index.php/t-6088.html
[Bericht gewijzigd door elektron_ op (19%)]
Op 29 juli 2007 09:06:36 schreef EdwinNadorp:
In het voorbeeld van mikroBasic wordt er 120 uS gewacht na het eerste commando en het werkt perfect.
Dat heb ik aangepast en tot mijn verbazing geeft hij nu sneller een waarde aan. Alleen de waarde is _altijd_ 655.11 graden. Zelfs zonder sensor 
Edwin, wil jij misschien even de code posten die in MikroBasic staat? Dan probeer ik het daar mee
Edit: Mannen, ik heb m werkend. Ik heb verschillende waardes kristallen geprobeerd en de sensor op verschillende poorten aangesloten. Hieruit trek ik de conclusie dat de sensor niet op iedere willekeurige pin kan uitsluiten. Hij zit nu aangesloten op PORTB.1 met 4mhz kristal.
@Galaxy, de DS1307 ga ik ook nog even uitproberen. Bedankt voor de tip
[Bericht gewijzigd door Boeip op (28%)]
Goed, de DS1307 en DS1820 heb ik aan de praat gekregen 
Van allebei de sensoren krijg ik de temperatuur.
Nu nog wat ophelderende vragen.
Hoe kom je aan dit soort codes/waardes?
BusOut %10010000,172,[1] ;oneshot mode in t-sensor.
BusOut %10010000,[238] ;start conversie
BusIn %10010001,172,[dummy] ;lees config register van T-sensor
If dummy.7=1 Then ;1=conversion ready, 0=busy
BusIn %10010001,170,[T] ;lees T-sensor
BusOut %10010000,[238] ;start nieuwe temperatuur conversie
End If
Ik wil graag de DS1307 aan de gang helpen met datum uitlezing
Hoe krijg ik de waardes uit de DS1307 op m'n LCD?
Ik heb zelf wat aan elkaar geknoopt, maar nu blijft er in beeldstaan: 08/08/08 08:08:08
Device 16F628A ;PIC
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF ;Configuratie
ALL_DIGITAL TRUE ;Alles digitaal
Symbol SDA PORTa.1 ;Symbolen
Symbol SCL Porta.0 ;Symbolen
Dim RTCYear as byte ;Variabel
Dim RTCMonth as byte ;Variabel
Dim RTCDate as byte ;Variabel
Dim RTCDay as byte ;Variabel
Dim RTCHour as byte ;Variabel
Dim RTCMinute as byte ;Variabel
Dim RTCSecond as byte ;Variabel
Dim RTCCtrl as byte ;Variabel
Dim TheTime as Word
RTCYear = $07 ;Variabel instellen
RTCMonth = $09 ;Variabel instellen
RTCDay = $16 ;Variabel instellen
RTCHour = $13 ;Variabel instellen
RTCMinute = $30 ;Variabel instellen
RTCSecond = $45 ;Variabel instellen
RTCCtrl = $0 ;Variabel instellen
Gosub settime ;Subroutine settime
Goto start
settime:
busOut SDA, 0, [RTCYear, RTCMonth, RTCDate, RTCDay, RTCHour, RTCMinute, RTCSecond, RTCCtrl]
return
gettime:
busIn SDA, 0, [RTCYear, RTCMonth, RTCDate, RTCDay, RTCHour, RTCMinute, RTCSecond, RTCCtrl]
return
DelayMS 500 ;LCD Opstarten
start:
gosub gettime
print $fe, 1, hex2 RTCMonth, "/", hex2 RTCDate, "/" , hex2 RTCYear,_
" ", hex2 RTCHour, ":", hex2 RTCMinute, ":", hex2 RTCSecond
delayms 500
goto startIk ben ook met een dallas ds18s20 bezig.
krijg het prefect werkend op poort B, maar waarom werkt het niet op poort A?
het staat zelfs zo in de handlijding van PIc-basic
ik wil er 4 paralel naast elkaar uitlezen, maar mijn poorten op B zijn dan niet vodoende daar erals een lcd opzit , kan een lcd ook an port A
Marcel
AVR C tutorial http://expand.xs4all.nl/avr
Die 1-wire sensoren kunnen samen op 1 bus, die hoef je niet elk appart aan een I/O van je uC te hangen.
Ik ben maar een beginner , ik weet dat het kan maar dan moet je eerst de code uitlezen van elke sensor?
ik dacht even snel 4 temperatuuren op een LCD-tje te kwakken , maar dat snel duurt nu al een paar uur 
maar als je een simpel vooreeldje hebt in picbasic (maar volgens mij gebruik je AVR)