У меня есть моя проблема с управлением перистальтическим насосом, потому что наш проект касается дозировки хлора.Я хочу запускать программу динамически по времени.Я хотел бы получить желаемый мл на основе расчетов.Вот мой код,
import RPi.GPIO as GPIO
import time
from time import sleep
GPIO.setmode(GPIO.BOARD)
inpt = 12
motor = 11
GPIO.setup(inpt,GPIO.IN)
GPIO.setup(motor,GPIO.OUT)
motor = GPIO.PWM(11, 100)
motor.start(0)
rate_cnt = 0
tot_cnt = 0
minutes = 0
constant = 0.10
time_new = 0.0
gpio_last = 2
demand=0.5
residual=0.3
pause_time=5
print('Water Flow - Approximate')
print('control C to exit')
while True:
for sec_mult in range(0,1):
time_new = time.time() + 5
rate_cnt = 0
while time.time() <= time_new:
gpio_cur = GPIO.input(inpt)
if gpio_cur != gpio_last:
rate_cnt += 1
tot_cnt +=1
else:
rate_cnt = rate_cnt
tot_cnt = tot_cnt
try:
print(GPIO.input(inpt), end='')
None
except KeyboardInterrupt:
print('\nCTRL C - Extiting nicely')
GPIO.cleanup()
print('Done')
sys.exit()
gpio_last = gpio_cur
minutes += 1
print('\n', round(rate_cnt * constant / 7.5, 4), 'Liters / min approximate')
dosage= demand+residual
dosageRate=(dosage/0.15)*round(rate_cnt * constant / 7.5,4)
dosageConvert=dosageRate*(0.001/1)
if rate_cnt * constant / 7.5 >= 5:
motor.ChangeDutyCycle(100)
time.sleep(dosageConvert)
sleep(pause_time)
if rate_cnt * constant / 7.5 >= 4:
motor.ChangeDutyCycle(80)
time.sleep(dosageConvert)
sleep(pause_time)
if rate_cnt * constant / 7.5 >= 3:
motor.ChangeDutyCycle(50)
time.sleep(dosageConvert)
sleep(pause_time)
if rate_cnt * constant / 7.5 >= 2:
motor.ChangeDutyCycle(40)
time.sleep(dosageconvert)
sleep(pause_time)
if rate_cnt * constant / 7.5 >= 1:
motor.ChangeDutyCycle(30)
time.sleep(dosageConvert)
sleep(pause_time)
if rate_cnt * constant / 7.5 == 0:
motor.ChangeDutyCycle(0)
time.sleep(dosageConvert)
sleep(pause_time)
print('\n', round(dosageConvert, 4), 'mL / min approximate')
print('Total Liters ', round(tot_cnt * constant / 7.5, 4))
print('Time (min & clock) ', minutes, '\t', time.asctime(time.localtime(time.time())), '\n')
Пожалуйста, кто-нибудь может мне помочь решить эту проблему .. Спасибо