A motor control testbed using the open-source LinuxCNC platform integrated with the Mesa Electronics 7i96S and 7I77 interface cards and the igus® dryve D1 motor controllers.
This system was used to develop and validate the control system for a large high-precision 3-axis gantry robot system.
testbed_video.webm
- Real-time Control: Precise real-time multi-axis motion using LinuxCNC with MESA interface cards and igus® dryve D1 motor controllers.
- Dual Motor System: Stepper and brushless motors.
- Closed Loop Control: High-precision encoder feedback for accurate positioning.
- Safety Systems: Emergency stop and limit switches.
- Visual Indicators: Custom LED status system.
-
Technical Documentation: Sphinx documentation sources of the system documentation in docs/. The documentation has been prepared to be built in HTML and PDF formats. To build the documentation follow the instructions below:
-
Prepare the environment:
cd docs uv venv && uv sync && source .venv/bin/activate
-
Build the documentation:
-
HTML:
make htmlThe HTML documentation index file will be saved in
docs/build/html/index.html. -
PDF (requires a LaTeX installation with LuaLaTeX):
make latexpdfThe PDF file will be saved in
docs/build/latex/linuxcnc_motor_control_testbed.pdf.
-
-
-
Electrical Schematics: KiCAD electrical schematics in schematics/.
| Component | Model | Quantity | Function |
|---|---|---|---|
| Control Computer | PC running LinuxCNC | 1 | Real-time motor coordination |
| Motor Controllers | igus® dryve D1 | 2 | Individual motor control |
| Main Interface | MESA 7I96S | 1 | Ethernet-LinuxCNC bridge. Stepper motor control. Limits detection |
| I/O Expansion | MESA 7I77 | 1 | Brushless motor control. Encoder inputs. Emergency stop detection and LED indicators |
| Stepper Motor | STEPPERONLINE 17HS24-2104-ME1K | 1 | Stepper motor with 1000 PPR magnetic encoder |
| Brushless Motor | STEPPERONLINE 42BLS40-24-01 + CUI Devices AMT102-0512-I5000-S | 1 | Brushless motor with 512 PPR optical encoder |
| Power Supply | Aim-TTI EL302RD | 1 | Dual output (24V/5V) |
| Emergency Stop | Push-button with NO/NC contacts | 1 | System safety shutdown |
| Limit Switches | Push-button switches | 2 | Position boundary detection |
| LED Indicators | 24 V panel mount LEDs | 3 | System state indication |
linuxcnc-testbed/
├── README.md # This file
├── assets/ # Pictures and videos
├── docs/ # Technical Documentation
├── linuxcnc/ # LinuxCNC configurations
├── schematics/ # Wiring diagrams
├── scripts/ # Example control scripts
└── gcode/ # G-code example
LinuxCNC Motor Control Testbed © 2025 by Tomás Domínguez Bolaño, Valentín Barral Vales, Carlos José Escudero Cascón, and José Antonio García Naya (CITIC Research Center, University of A Coruña, Spain) is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). To view a copy of this license, see the LICENSE-CC file or visit https://creativecommons.org/licenses/by-sa/4.0/.
Documentation License (docs/)
Copyright © 2000-2022 LinuxCNC.org
Copyright © 2025 Tomás Domínguez Bolaño, Valentín Barral Vales, Carlos José Escudero Cascón, and José Antonio García Naya.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
This work has been supported by grant PID2022-137099NB-C42 (MADDIE) and by project TED2021-130240B-I00 (IVRY) funded by MCIN/AEI/10.13039/501100011033 and the European Union NextGenerationEU/PRTR.
