Pressure-control application for a syringe-pump setup using a Fluigent pressure sensor on the PC and an Arduino-controlled stepper motor.
- Python reads pressure from
Fluigent.SDK - Python sends serial commands to the Arduino
- Arduino performs stepper moves and returns explicit acknowledgements
- Closed-loop pressure control runs in Python
Position convention:
- position
0is the empty-syringe / plunger-down start Bincreases tracked positionFdecreases tracked position
Pressure convention:
Fraises pressureBlowers pressure
pressure_syringe_pump/
├─ app.py
├─ config.py
├─ control.py
├─ fluigent_reader.py
├─ gui.py
├─ motor_controller.py
├─ pressure_pump_control_app.py
├─ legacy_tests/
└─ syringe_simple_controls_sketch/
- Create and activate a virtual environment.
- Install Python dependencies:
pip install -r requirements.txt- Install the Fluigent SDK Python package into the environment.
The Fluigent package is not listed in requirements.txt because it is typically installed from Fluigent's local SDK distribution rather than from PyPI.
- Upload the Arduino sketch in pressure_syringe_pump/syringe_simple_controls_sketch/syringe_simple_controls_sketch.ino.
Python sends:
F100B50ZEROPOS?
Arduino replies:
READYOK CMD=F100OK CMD=B50DONE POS=1234OK ZERO POS=0POS=1234ERR INVALID_STEPSERR UNKNOWN_CMD
The Python controller waits for DONE POS=... and OK ZERO POS=... instead of relying on a fixed sleep.
From the repo root:
.venv\Scripts\python.exe -m pressure_syringe_pump.appOr via the compatibility launcher:
.venv\Scripts\python.exe pressure_syringe_pump\pressure_pump_control_app.py