Closed ammaratef45 closed 11 months ago
@ammaratef45 looks like there is some current info attached to the pump: cat yplant148/FactoryTest/water_pump_sensor.py
# coding=utf-8
from ina219 import INA219
from ina219 import DeviceRangeError
SHUNT_OHMS = 0.08
#MAX_EXPECTED_AMPS = 1.2
#ina = INA219(SHUNT_OHMS, MAX_EXPECTED_AMPS)
#ina.configure(ina.RANGE_12V)
def read_ina219():
ina = INA219(SHUNT_OHMS)
ina.configure()
try:
print('Voltage: {} V'.format(round(float(ina.voltage()),1)))
print('Power: {} W'.format(round(float(ina.power()),1)))
except DeviceRangeError as e:
print(e)
finally:
return (ina.voltage(),ina.power())
Looks like the GPIO for the pump is a PWM signal so you can control how pump speed.
cat water_pump_switch.py
# coding=utf-8
import RPi.GPIO as GPIO
import time
from water_pump_sensor import read_ina219
from config import CHANNEL_WATER_PUMP, FREQ_WATER_PUMP, INIT_DUTY_WATER_PUMP, LAST_SECS_WATER_PUMP
Pump_power = 30 #Set the duty cycle of the pump to 30%
def init():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(CHANNEL_WATER_PUMP, GPIO.OUT)
return GPIO.PWM(CHANNEL_WATER_PUMP, FREQ_WATER_PUMP)
def pump_n_current():
pump_power = 0
pump_voltage = 0
pwm = init()
duty = INIT_DUTY_WATER_PUMP
pwm.start(duty)
start_time = int(time.time())
try:
print("Starting the pump")
pwm.ChangeDutyCycle(Pump_power)
time.sleep(4)
(pump_voltage,pump_power) = read_ina219()
pump_working = input('Is the pump working (Y/N)? ')
pwm.ChangeDutyCycle(0)
except KeyboardInterrupt:
pass
finally:
return ((pump_working=='Y' or pump_working=='y'),pump_voltage,pump_power)
pwm.stop()
GPIO.cleanup()
@iot-root yeah, we can expand to allow control either by on/off switch or by pwm (I believe the same goes for the LED)
I've used this code to test the pump on my device and it worked