This repository contains a MasterFlex Pump Controller implemented in Python, utilizing a Raspberry Pi Pico for hardware control and a PC-side GUI for pumps automation and operations.
- Python 3.11 or higher
- Pip package manager
- Clone the repository:
git clone https://github.com/intel00000/EChem_Auto_Potential_Optimization.git cd EChem_Auto_Potential_Optimization
- Install required Python libraries:
pip install -r requirements.txt
- Run the Pump Controller Demo with the following command:
python pump_control.py
It is recommended to use a Python virtual environment for better dependency management, especially when compiling the executable. See https://docs.python.org/3/library/venv.html for more details.
- Open a Windows Powershell and navigate to the project directory.
- Create a virtual environment:
python -m venv .venv
- Activate the virtual environment:
If this fail, you might need to run this command first, see https://stackoverflow.com/questions/54776324/powershell-bug-execution-of-scripts-is-disabled-on-this-system
.\.venv\Scripts\Activate.ps1
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
- Install the required packages:
pip install -r requirements.txt
- To run the Pump Controller Demo, ensure the virtual environment is activated and use the following command:
python pump_control.py
-
Open a terminal and navigate to the project directory.
-
Create a virtual environment:
In bash, run the following commands (assuming using apt)
sudo apt-get install python3-venv python3 -m venv .venv
-
Activate the virtual environment:
source ./.venv/bin/activate
-
Install the required packages:
pip install -r requirements.txt
-
To run the Pump Controller Demo, activated the virtual environment first and use the following command:
python3 pump_control.py
To compile the application to a standalone executable using PyInstaller, it is recommended to use a Python virtual environment.
-
Create and activate a virtual environment as described above.
-
Install PyInstaller if you haven't already:
pip install pyinstaller
-
Run PyInstaller to compile the executable:
pyinstaller pump_control_console.spec
OR
pyinstaller pump_control_noconsole.spec
-
After the process completes, you will find the executable in the
dist
directory.
- Connect your Raspberry Pi Pico to your PC via a USB cable.
- Open the executable or run the Python script as described above.
- Select the appropriate COM port and click "Connect".
- Load the recipe file by clicking the "Load Recipe" button and selecting your recipe file (CSV or Excel format).
- Click "Start" to begin the procedure. The GUI will display the progress and status of each pump.
-
main.py
: The main entry point for the Raspberry Pi Pico script. It calls themain
function frompump_control_pico.py
. -
pump_control_pico.py
: Contains the logic for controlling the pumps connected to the Raspberry Pi Pico. -
pwm_dma_fade_onetime.py
: Fade the onboard led of the pi pico using DMA & PWM without using logic core. (Currently don't work for Pi Pico W where the onboard led is controlled by the wifi chip.) -
pump_control.py
: The Python script for the PC-side GUI, allowing users to interact with the pumps, load recipes, and monitor progress.
An example of a recipe file structure (CSV or Excel):
Time point (min),Pump 1,Pump 2,Pump 3,Valve 1,Valve 2,Valve 3,Notes
0,On,Off,Off,CW,CW,CW,Start initial fill with reaction solution
0.5,Off,On,On,CCW,CCW,CCW,For testing
1,On,On,Off,,,For testing
5,Off,,,,,,
125,,On,,CW,CW,CW,Post reaction emptying
130,,Off,,,,
130,,On,CCW,CCW,CCW,3x rinse with solvent
135,,Off,,,,
135,,On,CW,CW,CW,
140,,Off,,,,
140,,On,CCW,CCW,CCW,
145,,Off,,,,
145,,On,CW,CW,CW,
150,,Off,,,,
150,,On,CCW,CCW,CCW,
155,,Off,,,,
Time point (min) Pump 1 Pump 2 Pump 3 Valve 1 Valve 2 Valve 3 Notes
0 OFF OFF OFF CW CW CW 1
0.2 ON ON ON CCW CCW CCW 2
0.4 OFF OFF OFF CW CW CW 3
0.6 ON ON ON CCW CCW CCW 4
0.8 OFF OFF OFF CW CW CW 5
1 ON ON ON CCW CCW CCW 6
1.2 OFF OFF OFF CW CW CW 7
1.4 ON ON ON CCW CCW CCW 8
1.6 OFF OFF OFF CW CW CW 9
1.8 ON ON ON CCW CCW CCW 10
Ensure the Time point (min)
column is sorted in ascending order.
Inside the control_board_Kicad folder is a KiCad project for the control board design. The control board is designed to plug into a pump with a DB25 connector which allow one pico to control one pump respectively. Using a PCB enable secure and reliable connection between the pump and the pico, and also allow for easy expansion of the system.
For any issues or contributions, please open an issue or pull request on GitHub.