Ik wil graag een programma schrijven waarbij een ventilator bij verschillende temperaturen harder gaat draaien.
Bijv. bij 30 graden 10%, 40 graden 20% enz.
Hierbij wil ik gebruik maken van een DS18S20 en een PIC16f628.
Onderstaand heb ik een voorbeeld om de temperatuur weer te geven op een lcd scherm maar verder geen aansturing..
Wie kan mij een beetje op weg helpen..
DEVICE 16F628A ;We gebruiken een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
;Normale constanten
SYMBOL Convert = $44 ;DS1820 commando, de DS1820 moet de temperatuur gaan meten
SYMBOL Graad = 223 ;223 is de ASCII code voor het 'graad' karakter
SYMBOL RdScratchPad = $BE ;DS1820 commando, temperatuur van de DS1820 uitlezen
SYMBOL SkipROM = $CC ;DS1820 commando, geen gebruik maken van het unieke adres
;Poortnamen
SYMBOL DS1820 = PORTA.0 ;Sluit de DS1820 temperatuur sensor aan op deze poort
;Variabelen declareren
;WORD
DIM Temp AS WORD ;Bevat de temperatuur Celsius
;BYTE
DIM Remain AS BYTE ;De remain waarde voor berekening temperatuur achter de komma
DIM Slope AS BYTE ;Bevat de 'counts per graad Celsius' waarde
DIM BD1 AS BYTE ;Byte Dummy 1
CLEAR ;Wis RAM geheugen
DELAYMS 500 ;LCD stabilisatie
;Hoofdprogramma
CLS ;Wis LCD scherm
WHILE 1 = 1
OWRITE DS1820, 1, [SkipROM, Convert] ;Zend 'Convert' opdracht (temperatuur meten)
OWRITE DS1820, 1, [SkipROM, RdScratchPad] ;Zend 'Read ScratchPad' opdracht
OREAD DS1820, 2, [Temp.LOWBYTE, Temp.HIGHBYTE, BD1, BD1, BD1, BD1, Remain, Slope] ',CRC]
Temp = (((Temp >> 1) * 100) - 25) + (((Slope - Remain) * 100) / Slope)
PRINT AT 1, 1, DEC Temp / 100, ".", DEC1 Temp / 10, Graad, "C "
WEND