Winding the wire for a BLDC motor is a time-consuming and labor-intensive process. This winding machine automates this tedious tasks.
This machine uses four motors to perform the winding operation:
- M0: Move M1 unit (closed loop control)
- M1: Rotate the stator (closed loop control)
- M2: Wind the wire (closed loop control)
- M3: Adjust the wire tension (closed loop torque control using voltage)
code: Aotenjo One
All motors are controlled by Aotenjo Master, a master controller board based on the STM32G431CBU6 microcontroller. It communicates with the host computer via USB and controls the motors via CAN bus.
code: Aotenjo Master
You can set up the environment with either conda or uv. Both install the same pinned dependency versions.
Prerequisite: Miniconda.
- Clone the Winder repository and enter it:
git clone https://github.com/aotenjo-xyz/winder.git cd winder - Create a new conda environment and install the required dependencies:
conda env create -f environment.yml
- Activate the conda environment:
conda activate winding export PYTHONPATH=$PWD
- Create a
settings.ymlfile based onsettings-example.ymland update the settings as needed:cp settings-example.yml settings.yml
Prerequisite: install uv.
- Clone the Winder repository and enter it:
git clone https://github.com/aotenjo-xyz/winder.git cd winder - Create the virtual environment and install all dependencies (uv installs
Python 3.12 automatically if needed):
uv sync
- Create a
settings.ymlfile based onsettings-example.ymland update the settings as needed:cp settings-example.yml settings.yml
That's it — no need to set PYTHONPATH. Run any command inside the environment
with uv run, e.g. uv run python scripts/main.py -s or uv run pytest.
- M0: BE4108 75T gimbal motor (built with this machine)
- M1: BE4108 75T gimbal motor (built with this machine)
- M2: BE4108 75T gimbal motor (built with this machine)
- M3: BE4108 60T gimbal motor (built with this machine)
BE4108 75T gimbal motor
This motor was initially a drone motor.
See simulation/README.md for details.