Skip to content

Controller#

Controller with modular design

The controller is capable of managing up to four syringe pumps. The interface consists of a color display (240x135 pixels), three buttons, and a rotatable knob that can also be pressed as a button. Remote commands are received through a UART serial connection.

Connector modules

Through-hole pads on the backside of the controller provide access to the power and communication connections. Connector modules can be created and attached to the controller to add particular interfaces. This modular approach allows the controller to be compatible with a variety of systems.

modules

On the left, the controller with a pyControl module attached. On the right, the controller with a USB module attached.

Fancy motor driver

Precise control of the stepper motor's rotation is essential for accurately dispensing liquid from the syringe pump. This typically involves control software running on a computer that communicates with a microcontroller to determine:

  • When to start rotating
  • Which direction to rotate
  • How far to rotate
  • How fast to rotate

Traditionally, the microcontroller is responsible for calculating the number and timing of partial rotations (steps) based on the target position and acceleration/velocity curves. It sends precisely timed step and direction signals to a stepper motor driver IC, which then supplies current to the motor coils in a specific sequence, creating a rotating magnetic field that moves the motor shaft incrementally1.

There are algorithms and some great software libraries (AccelStepper, TeensyStep, TMCStepper, TMC2209, FastAcelStepper, stepper_pio) that assist with this timing and signal generation, but depending on the microcontroller chosen, compatibility and performance can be limited.

This controller utilizes are a really neat motor driver that takes care of all of the timing and step generation itself. The microcontroller simply sets acceleration and velocity parameters, provides a target position, and the driver executes the motion profile. This drastically simplifies the microcontroller’s firmware and frees up processing for other tasks.

Controller#

rotating controller gif

Circuit Board#

Ordering PCBs

Order the PCB and stencil from OSH Park or Aisler, or manually upload the gerber files to your preferred PCB manufacturer.

Download gerber files

Order from OSH Park Order from Aisler

controller pcb

Controller PCB render

  • Schematic#


  • Layout#


Bill of Materials#

View interactive BOM

Quantity Reference Description Value/MPN
4 C4, C5, C9, C10 1206 capacitor 22µF
2 C13, C14 0603 capacitor 4.7µF
2 C11, C12 0603 capacitor 0.47µF
8 C1-C3, C6-C8, C15, C16 0603 capacitor 0.1µF
2 C17, C18 0603 capacitor 0.022µF
2 DRA1, DRA2 DIN rail adapter 1201578
4 H1-H4 10 mm standoff 24886
1 J1 14-pin right angle female header PPTC141LGBN-RC
1 J2 14-pin right angle male header PH1RB-14-UA
1 J6 10-pin female header PPPC101LFBN-RC
1 J7 16-pin female header PPTC161LFBN-RC
8 R12-R19 0603 resistor 4.7KΩ
2 R1, R2 0603 resistor 2.2Ω
8 R3-R10 1206 resistor 0.270Ω
1 SW1 Rotary encoder with button PEC11R-4220F-S0024
2 U1, U2 Motor driver TMC5041

Additional Components#

Adafruit ESP32-S3 Reverse TFT Feather

An Adafruit ESP32-S3 Reverse TFT Feather is used to display the user interface and communicate with the stepper driver. It can respond to commands from control software for automated/remote control, or signals from the physical buttons and knobs for manual control.

Quantity Description Part Number Supplier
1 ESP32-S3 Reverse TFT Feather 5691 Digi-Key
1 Encoder Knob2 OEDNI-63-4-7 Digi-Key
4 M3 x 8 mm flat head screw 92010A118 McMaster-Carr

3D Printed Case#

A 3D printed case provides a protective housing for the controller. There is a single piece version that is simpler to print, and a two piece version with raised buttons that can be printed in a contrasting color.

On the left, 2-piece multicolor design with raised buttons. On the right, an easier to print 1-piece design.

single print single print

Print settings

For best results it is recommended to print the case with a 0.08 mm layer height on a smooth surface.

Download 2-piece 3D files

USB Module#

Circuit Board#

Download gerber files

Order from OSH Park Order from Aisler

controller pcb

USB Module PCB render

  • Schematic#


  • Layout#


Bill of Materials#

View interactive BOM

Quantity Reference Description Value/MPN
1 C1 0805 capacitor 10µF
1 C2 0805 capacitor 100nF
1 D1 LED Green
1 D2 LED Red
1 J2 USB Type C connector USB4105-GF-A
1 J4 DC Barrel Jack PJ-037A
4 R1,R2,R6,R7 0805 resistor 5.1KΩ
1 R3 0805 resistor 1KΩ
1 R4 0805 resistor 22KΩ
1 R5 0805 resistor 47KΩ
1 U2 TVS diode USBLC6-2SC6
1 U3 USB to UART bridge CP2102N-A02-GQFN24R

pyControl Module#

Circuit Board#

Download gerber files

Order from OSH Park Order from Aisler

pyControl module PCB

pyControl module PCB render

  • Schematic#


  • Layout#


Bill of Materials#

Quantity Reference Description Value/MPN
2 J1,J3 6-pin male header 0022285064
1 J2 Vertical RJ45 PJ012-8P8C1

  1. See this video for a great explanation of how hybrid stepper motors work. 

  2. At $10, this knob is may be excessive, but at the same time, can you really put a price on the experience of a nicely knurled metal knob? Much less expensive alternatives that fit the encoder's 6mm diameter shaft do exist though.