i really appreciate ur help but I did what u said and the problem still there and the pwm is fixed at 30% duty even when um changing the volt here's the code
sender:
RecieverCode:'Sender Code Define OSC 8 char var byte ' Main program loop start: if (portb.0==0) then 'button pressed char = "A" 'character A sent to the other pic Serout portc.6, 2,[char] pause 50 elseif (portb.0!=0) then char = "B" Serout portc.6, 2,[char] pause 50 endif Goto start End
Code:DEFINE OSC 8 'LCD CONFIGURATION DEFINE LCD_DREG PORTB 'Define PIC port used for LCD Data lines DEFINE LCD_DBIT 4 'Define first pin of portb connected to LCD DB4 DEFINE LCD_RSREG PORTB 'Define PIC port used for RS line of LCD DEFINE LCD_RSBIT 3 'Define Portb pin used for RS connection Communication DEFINE LCD_EREG PORTB 'Define PIC prot used for E line of LCD DEFINE LCD_EBIT 0 'Define PortB pin used for E connection DEFINE LCD_BITS 4 'Define the 4 bit communication mode to LCD DEFINE LCD_LINES 2 'Define using a 2 line LCD DEFINE LCD_COMMANDUS 2000 'Define delay between sending LCD commands DEFINE LCD_DATAUS 50 'Define delay time between data sent. 'PWM CONFIGURATION DEFINE CCP1 REG PORTC 'Port to be used by HPWM1 DEFINE CCP1_BIT 2 'Pin to be used by Hpwm1 DEFINE CCP2 REG PORIIC 'Port to be used by HPWM2 DEFINE CCP2_BIT 1 'Pin to be used by hwmp2 'ADC CONFIGURATION Define ADC_BITS 10 '10 bit result define ADC_clock 3 '8mhz external clock define ADC_Samplus 50 trisA= 255 'all PORTA pins are inputs adcon1= %10000010 ' Set PORTA analog and right justify trisc=0 portc=0 Temp var word 'Temp out of Lm35 Vp var word 'Voltage out of Pressure Sensor Vl var word 'Voltage out of Level Sensor char var byte main: Serin portc.7,2,char 'Receive data sent from the transmitting pic if (char == "A" ) then 'if data is character A pause 50 Adcin 0, Temp ' Read channel 0 to Temp (0-1023) Temp = (Temp */ 500)>>2 ' Equates to: (Temp * 500)/1024 LCDOut ,$fe,$80,"Temp= ",DEC2 Temp 'Display Temp On The First Line Adcin 1, Vp 'Read channel 1 to Vp (0-1023) Vp = (Vp */ 500)>>2 'Equates to: (Vp * 500)/1024 LCDOut $fe,$c0 ,"Pressure = ",DEC (Vp/100),".", DEC2 Vp," volt" 'Display Voltage out of pressure sensor on second line Adcin 2, Vl 'Read channel 2 to Vl (0-1023) Vl = (Vl */ 500)>>2 'Equates to: (Vl * 500)/1024 LCDOut $fe,$94 ,"Level= ",DEC (Vl/100),".", DEC2 Vl," volt" 'Display Voltage out of Level sensor on third line if portd.0==0 then 'Soil Moisture is lower than preset value if Vp<3 then 'Voltage From Pressure Sensor is Less than preset value (3 volt) Hpwm 2, 179,5000 'Solenoid is on with 70% duty cycle at 5 khz if Vl<3 then 'If voltage of Level sensor is Less than preset value (3 volt) hpwm 1,179,5000 'Pump is on with 70% duty cycle at 5 khz elseif Vl>=3 then 'If voltage of Level sensor is more than or equal preset value hpwm 1,77,5000 'Pump is on with 30% duty cycle at 5 khz ENDIF elseif Vp>=3 then 'Voltage From Pressure Sensor is more than or equal preset value (3 volt) hpwm 2,77,5000 'Solenoid is on with 30% duty cycle at 5 khz if Vl<3 then 'If voltage of Level sensor is less than preset value (3 volt) hpwm 1,179,5000 'Pump is on with 70% duty cycle at 5 khz elseif Vl>=3 then 'If voltage of Level sensor is more than or equal preset value hpwm 1,77,5000 'Pump is on with 30% duty cycle at 5 khz endif endif elseif portd.0!=0 then 'Soil Moisture is high or equal to preset value hpwm 1,0,5000 'Turn off Pump hpwm 2,0,5000 'Turn off Solenoid endif elseif char=="B" then lcdout $fe,1 'Clear LCD hpwm 1,0,5000 'Turn off Pump hpwm 2,0,5000 'Turn off Solenoid endif Goto main 'Do it forever End




Bookmarks