Hi and welcome,
that's pretty good code for a newbie but can I make a couple of suggestions to make life easier for yourself (not that I'm a pro by a long shot!):
1). At the start of your program set up some variables so that you don't need to keep referring to which pin does what. By this I mean:
'INPUTS
Pressure_sw var portb.4 'Pressure_sw could be anything really so it could be smaller, say prsuresw instead or whatever you want that's easy to remember!
Wlevel_sw var portb.5
vaccum_sw var portb.6
'etc,etc
'OUTPUTS
Airpump_relay var portc.0
'etc,etc
now in your program you can write:
while Pressure_sw = 1 'Turn air pump on while pressure switch hi
Airpump_relay = 1 'Keep it on until pressure is high enough
wend
Airpump_relay = 0 'Turn off air pump now that it is ready
This is just a suggestion but it makes things a lot easier to read (especially when you come back to a program several months later!)
2). Using the 'else' command I noticed you had problems so I thought I would re-write the code you posted with the proposed variables added and also showing how to use 'else'. You need to add a new line for the else and then add an endif after your instruction(s) also with their own lines:
I can't see where your problem is with the pump turning off but you could try commenting out this line:Code:'Switches are a +5V HIGH on the input 'Inputs (on Port B) are as follows: 'Pin4 = Pressure switch 'Pin5 = Water Level Float Switch 'Pin6 = Vacuum switch 'Pin7 = Temperature switch (preset value on the switch) ' Outputs (on Port C) are as follows: 'Pin0 = Air Pump relay 'Pin1 = "Water Low" LED or water pump relay 'Pin2 = Injector Power relay (not currently used) 'Pin3 = Injector "open" pulse TRISB = %11111111 ' Set all PORTB to inputs TRISC = %00000000 ' Set all PortC to outputs AllOff: PortC = 0 ' Turn off all outputs 'Initial Air Pressure check to get pump going 1st if needed while Pressure_sw = 1 'Turn air pump on while pressure switch hi Airpump_relay = 1 'Keep it on until pressure is high enough wend Airpump_relay = 0 'Turn off air pump now that it is ready InitialOn: 'Wait for vacuum and temp to come up 'and blink LED while waiting ' 'LED pulse Repeat WATER_LOW = 1 'Pulse the LED while in this loop PAUSEus 500 WATER_LOW = 0 PAUSEus 500 Until Vac_sw = 1 and Temp_sw = 1 'Check Vacuum and Temp 'Turn on injector power only if Vacuum 'is detected and temp is High enough 'Loop until ready pauseus 1000 'Pause to be sure engine running SensorCheck: 'Check Air Pressure If Pressure_sw = 1 then Airpump_relay=1 else Airpump_relay=0 endif 'CheckWater Level If Wlevel_sw = 1 Then Water_low=1 else Water_low=0 endif 'Send pulse to injector while there is vacuum present. If Vac_sw = 1 Then PULSOUT Injector,50 'Check Temperature and restart if too low (wait for temp to come up) If Temp_sw = 0 then AllOff: Goto SensorCheck: 'Loop the sensor check unless temp goes low End
If portB.7 = 0 then AllOff
or if you use the code I posted above, then it would be this line:
If Temp_sw = 0 then AllOff
I could be barking up the wrong tree but from a quick glance at your code I'm thinking the temperature switch might not be high?
I hope this helps and your project sounds quite interesting
Regards
Rob
Bookmarks