Hello Henrik,
thank you for your suggestion
here:
'************************************************* ***************
'* Name : PUMP16F88V1 *
'* Test with 20-23 °C RB0 = HPWM out *
'* Author : M.David *
'* Notice : Copyright (c) 2018 *
'* : All Rights Reserved *
'* Date : 01.01.2018 *
'* Version : AB sensor M12x1,5 *
'* Notes : 16F88 kein LCD funktioniert halbwegs *
'* : PORTA.0 analog IN 0-2V channel 0 *
'* PORTB.1 Fan out PPORTB.0 Water pump out *
'************************************************* ***************
#CONFIG
__config _CONFIG1,_EXTCLK & _WDT_ON & _LVP_OFF & _CP_OFF
#ENDCONFIG
Define OSC 20
TRISB = %00000000
Define ADC_BITS 8 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uSec
DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 2
DEFINE DEBUG_BAUD 19200
DEFINE DEBUG_MODE 0
DEFINE DEBUG_PACING 500
define CCP1_REG PORTB 'für HPWM
DEFINE CCP1_bit 0 'HPWM port B.0
TRISA = %11111111 ' Set PORTA to all input
ADCON1 = %00000010 ' Set PORTA analo
CMCON = 7 ' Disable analog comparator
ANSEL = %00000001 ' set AN0 (RA0) as analog, others to digital
FAN VAR PORTB.1
Uin VAR Word
Temp Var word
speed var word
Pump var word
RX var word
RS var word
B0 var word
Speed = 0
FAN = 0
pause 1000
DEBUG 10,13
main:
ADCIN 0,Uin ' Read channel 0 (RA)
DEBUG "*.*",DEC3 RX,dec3 RS,dec1 FAN,13,10 ' dec3 is important
DEBUG 10,13
HPWM 1,speed,2442
IF Uin => 64 then
B0 = Uin/2
Temp = 100-B0
else
Temp = 131 - Uin
endif
TEMP = Temp-5 ;Korrekturfaktor nach Kalibrierung Anzeige ok bei 75-90°C
RX = TEMP
RS = pump
Select Case temp
Case is < 67
speed = 0
pump = 0
case 68, 69, 70, 71, 72
speed = 8
pump = 3
case 73, 74
speed = 16
pump = 6
case 75, 76
speed = 32
pump = 12
case 77, 78
speed = 64
pump = 25
case 79, 80
speed = 124
pump = 50
case 81,82
pump = 75
Speed = 191
case is > 80
speed = 255
pump = 100
End Select
IF (Temp <= 84 ) then
FAN = 0
else
FAN = 1
endif
goto main
END ' End of program




Bookmarks