diff --git a/.pdm-python b/.pdm-python deleted file mode 100644 index 9965068..0000000 --- a/.pdm-python +++ /dev/null @@ -1 +0,0 @@ -/home/jbenicek/Programovani/SequentMicrosystems_API/.venv/bin/python \ No newline at end of file diff --git a/scripts/read_rpm.py b/scripts/read_rpm.py deleted file mode 100644 index 8b9bd26..0000000 --- a/scripts/read_rpm.py +++ /dev/null @@ -1,33 +0,0 @@ -import datetime, megaind, asyncio -from src.variables.service import set_variable - - - -async def run(): - impuls_count_per_rpm: int = 4 - - last1: bool = False - last1_time: datetime.datetime = datetime.datetime.now() - - lock = asyncio.Lock() - average = [] - while True: - puls = megaind.getOptoCh(0, 1) - if puls == 1 and last1 == False: - last1 = True - pulse_time = datetime.datetime.now() - delay = pulse_time - last1_time - last1_time = pulse_time - rising_per_second = 1 / (delay.microseconds / 1000000) - average.append((rising_per_second / impuls_count_per_rpm) * 60) - if len(average) > 4: - average.remove(average[0]) - - averaged = 0 - for i in average: - averaged += i - async with lock: - set_variable("actual_rpm", round(averaged / len(average), 1), False) - - elif puls == 0: - last1 = False \ No newline at end of file diff --git a/scripts/speed_controller.py b/scripts/speed_controller.py index 95f59c7..37cac11 100644 --- a/scripts/speed_controller.py +++ b/scripts/speed_controller.py @@ -83,6 +83,7 @@ def rpm_control(): if requested_rpm == 0: set_output(0) + return #algorithm for RPM control if ((requested_rpm - float(get_variable(variable_control_step_rpm))) < actual_rpm) or (actual_rpm < (requested_rpm + float(get_variable(variable_control_step_rpm)))): diff --git a/scripts/speed_reader.py b/scripts/speed_reader.py index ab56fe0..a6f2f65 100644 --- a/scripts/speed_reader.py +++ b/scripts/speed_reader.py @@ -2,10 +2,13 @@ from src.variables.service import get_variable, set_variable from gpiozero import Button import datetime +from scripts.speed_controller import rpm_control + pulses_per_rotation = 1 reader = Button(4, pull_up=False, bounce_time=0.0005) set_variable("speed_reader_last_impulse_time", datetime.datetime.now(), False) +rpm_last = 0 def event(): actual = datetime.datetime.now() @@ -13,12 +16,16 @@ def event(): difference = (actual - last).total_seconds() set_variable("speed_reader_last_impulse_time", actual, False) - rpm = (60 / difference) / pulses_per_rotation + rpm = (60 / difference) / pulses_per_rotation + + actual_rpm = (rpm_last + rpm) / 2 + rpm_last = rpm + + set_variable("actual_rpm", round(actual_rpm, 1), False) + rpm_control() - set_variable("actual_rpm", round(rpm, 1), False) -reader.when_pressed = event -reader.when_activated \ No newline at end of file +reader.when_pressed = event \ No newline at end of file diff --git a/scripts/timer.py b/scripts/timer.py index 6aeaf18..0675157 100644 --- a/scripts/timer.py +++ b/scripts/timer.py @@ -11,8 +11,8 @@ if bool(os.getenv("BACKGROUND_SCRIPTS_RUN", 0)): #control speed -from scripts.speed_controller import rpm_control -scheduler.add_job(rpm_control, trigger=IntervalTrigger(seconds=0.2)) +#from scripts.speed_controller import rpm_control +#scheduler.add_job(rpm_control, trigger=IntervalTrigger(seconds=0.5)) #control fans from scripts.fan_controller import fan_control @@ -20,5 +20,3 @@ scheduler.add_job(fan_control, trigger=IntervalTrigger(minutes=1)) #speed_reader import scripts.speed_reader - - diff --git a/src/main.py b/src/main.py index 8ca57a4..4119872 100644 --- a/src/main.py +++ b/src/main.py @@ -12,10 +12,6 @@ import scripts.timer app = FastAPI(root_path="/api") -@app.on_event("startup") -async def startup(): - from scripts.read_rpm import run - asyncio.create_task(run()) app.include_router(router=modulesrouter)