I have noticed that if more than one pin is set to output-HIGH, the most recent pin output request provides 3.3v out while the others are sacraficed (1.5v, .5v, etc). I am using the Adafruit_BBIO.GPIO library to control the pins. I am building a “climate control” system, and using the BBB and a DHT22 temperature/humidity sensor to operate relays to supply 120vAC to components (lights, heater, water pump).
I have: a door switch SPDT(P9_11) for safety override, a DPDT(P8_10 and P8_12) for automatic and manual operation, and a 3-24vDC/0-240vAC relay for suppling power to a lamp.
The P8_12 and P9_11 always have power. If the door switch is activated(P9_11) it activates the relay and bypasses the DPDT switch. If the DPDT switch is set to “manual”(P8_12) the relay is activated. Otherwise if the temperature from the DHT22 is above or below a set limit, and the DPDT switch is in “automatic”(P8_10), the relay is activated accordingly.
Pseudo code:
import libraries
Set pins P8_12 and P9_11 to output 3.3v
GPIO.output(P8_12,HIGH)
GPIO.output(P9_11,HIGH)
while 1:
read temperature
Decide to turn P8_10 on/off based on temperature
if temp<28:
GPIO.output(P8_10,HIGH)
else:
GPIO.output(P8_10,LOW)
Loop indefinately
Here is the problem:
If I run a test program with only the door switch the light turn on/off as expected. If I execute the above code the DPDT switch and auto/manual control works as expected however the door switch will not supply enough power to activate the relay. When the above code is running and P8_10 turn on, or if the DPDT switch is set to manual(P8_12) the voltage across the door switch(P9_11) drops to ~1.5v and is less than the required 3v to activate the relay.
Question:
Can the BBB supply 3.3v out for more than one pin simultaneously, or will i need to add an amplifier circuit to each output?
I can attach full code and schematic if it would be helpful. In the end there will be 8 relays, of which up to 5 will be activated simultaneously.