Project Files of NEMA 23 Stepper Motor Library for Proteus V1.0 (TB6600, Arduino)
nema-23-stepper-motor-tep-v1-0-d0f0133ad94040168b8900b4e3cfab87.zip

NEMA 23 Stepper Motor Library for Proteus V1.0
NEMA 23 Stepper Motor Library for Proteus V1.0 comes as a ZIP archive of 10 files (1.2 MB, 2.7 MB unpacked) holding Proteus library files, simulation model DLLs, a Proteus simulation, an Arduino sketch and compiled HEX firmware.
- LIBProteus library
- DLLProteus model
- DSNProteus simulation
- INOArduino sketch
- HEXHEX firmware
Description
NEMA-23-Stepper-Motor-Library-for-Proteus-v1.0.zip with the NEMA 23 stepper motor in Proteus (two coils in the circuit for any driver, microsteps, a ramp, lost steps, a dial on the shaft; TEPNEMA23.LIB and TEPNEMA23.DLL), our Arduino UNO V4.0, the A3 demo project with its sketch and a README.
File Structure
5.2 KB201.9 KB35.3 KB883.5 KB318.5 KB27.1 KB24.8 KB883.5 KB318.5 KB17.3 KBGallery12 images from the tutorialOpen the tutorial
The circuit, the board and the results as they appear in NEMA 23 Stepper Motor Library for Proteus V1.0 (TB6600, Arduino). Open an image for its full size.












README
NEMA 23 STEPPER MOTOR LIBRARY FOR PROTEUS - V1.0 (the 57 mm, 2.8 A bipolar stepper with a dial on its shaft)
Designed by The Engineering Projects
www.TheEngineeringProjects.com
IMPORTANT LINKS
Article (read it first - pictures, step by step, every feature explained):
https://www.theengineeringprojects.com/2026/11/nema-23-stepper-motor-library-for-proteus-v1-0.html
Report a bug or suggest a feature (our forum):
https://www.theengineeringprojects.com/forum/category/motor-driver-proteus-library
The demo runs on our Arduino UNO V4.0 (included) - working LEDs, RESET and a
built-in serial monitor - its own article:
https://www.theengineeringprojects.com/2026/10/arduino-uno-library-for-proteus-v40.html
The demo's driver is our TB6600 Stepper Motor Driver - a SEPARATE library, not
in this package: download and install it first - its own article:
https://www.theengineeringprojects.com/2026/11/tb6600-stepper-motor-driver-library-for-proteus-v1-0.html
Support us (the libraries are free):
https://www.theengineeringprojects.com/donate
FILE STRUCTURE
NEMA-23-Stepper-Motor-TEP-v1.0/
|-- Proteus Library Files/
| |-- ArduinoV4TEP.LIB 201.9 KB TEP Arduino boards V4.0 (UNO) -> LIBRARY
| |-- TEPNEMA23.LIB 35.3 KB the library -> LIBRARY folder
|-- Proteus Model Files/
| |-- TEPARDUINO.DLL 883.5 KB the Arduino board model -> MODELS folder
| |-- TEPNEMA23.DLL 318.5 KB the model -> MODELS folder
|-- Proteus Simulation/
| |-- NEMA23_TB6600_Demo.hex 24.8 KB the demo firmware
| |-- NEMA23-Stepper-Motor-TB6600-ArduinoUnoV4.pdsprj 27.1 KB the demo project
| |-- TEPARDUINO.DLL 883.5 KB copy of the board model
| |-- TEPNEMA23.DLL 318.5 KB copy of the model
|-- Arduino Code/
| |-- NEMA23_TB6600_Demo/NEMA23_TB6600_Demo.ino 5.2 KB the demo sketch (source of the .hex)
|-- README.txt ~18.3 KB this file
Total: 2.65 MB (unzipped). The C++ source code of the models is not included.
WHAT IS IT?
A simulation model of the NEMA 23 - the 57 mm, 1.8 degree bipolar stepper of
CNC routers, laser cutters, big 3D printers and linear stages (the common
23HS22-2804S class: 2.8 A, 0.9 ohm, 2.5 mH, 1.26 N.m) - with a dial on its
shaft. Our own model, a part on its own:
* An analog model with two coils, A (A+ black, A- green) and B (B+ red, B-
blue): each coil is its resistance, its inductance and its back-EMF in the
circuit, so ANY driver drives it - our TB6600 (the usual partner of a
NEMA 23), a DRV8825 or an A4988 at lower current, an L298N (voltage
H-bridges), transistors.
* The physics of the real motor: 50 rotor teeth (200 full steps per turn),
the torque of the two coils, the detent torque, the heavy rotor's inertia,
the friction and a load. It holds about 126 N.cm with both coils at 2.8 A
(about 92 N.cm at the 2.9 A peak of a TB6600 set to 2.8 A, microstepping),
its current drops at speed when the supply cannot push it against the
back-EMF, it cannot start at full speed (a ramp is needed) and it loses
steps when it is driven too fast or loaded too much - like the real one.
* It reads its driver from the coil currents: full step, half step, wave
drive and 1/4 - 1/32 microsteps are recognised; the step rate, the
direction, the position, lost steps, the current against the 2.8 A rating,
a coil that gets no current.
* The dial turns on the schematic to the simulated shaft angle; the two coil
LEDs light green while the coil's current flows + to -, red the other way.
* The load: property LOAD (N.cm), the pop-up's load buttons, or a click on
the dial: a 150 N.cm brake on the shaft - stronger than the motor, so the
shaft stays still and every step is lost.
The symbol shows the motor from its shaft end: the black 57 mm flange with its
four mounting screws, the 38 mm boss, the dial on the 6.35 mm shaft over a
degree scale, the rating line and the four wires (B- blue, B+ red, A+ black, A-
green). The plate, the coil LEDs A and B and the strip under the plate (RPM,
ANGLE, STEPS, OPEN PANEL) are TEP additions; the real motor has none of them.
ONE DEVICE (search "NEMA" or "stepper" in Pick Devices):
NEMA23STEPPERTEP "NEMA 23 Stepper Motor V1.0" (category Electromechanical >
Stepper Motors), model TEPNEMA23.DLL
The pop-up panel "TEP NEMA 23 Stepper Motor" opens at Run (and with OPEN PANEL
on the strip) - the look of the TEP Serial Monitor. Tabs Motor, Graphs, Event
log and Check; gear and ? icons for Settings and Help; the palette icon
switches the theme:
Motor the state in big letters (RUNNING CW / CCW with the RPM, the
step rate and the drive; HOLDING; RELEASED; LOSING STEPS); the
shaft's dial (red: where it is, orange: where the coils ask);
the live values (angle, position in full steps, speed, step
rate, drive, direction, lost steps, the coil currents); the two
coil currents over the last 40 ms - square waves for full steps,
sine and cosine for microsteps. The toolbar: the load on the
shaft (None, 20 - 120 N.cm) and the Brake (150 N.cm).
Graphs the shaft's angle against the position the coils ask for, the
speed and the coil current over the last 2, 6 or 15 s.
Live / Freeze.
Event log the coils on, the drive ("DRIVE 1/8 MICROSTEP (1600 steps per
turn)"), every move ("HOLDING at 450.0 full steps - the move
peaked at 492 steps/s (148 RPM)"), release, the load, lost
steps, warnings; filters All / Motion / Warnings, Pause, Clear
Check Good for: a stepper that does not turn, only vibrates, turns
the wrong way, skips, stalls at speed or gets hot - the coils,
the current, the drive, the rate, lost steps, the load, with the
driver tips
Settings theme, text size, open at Run, window size
Help report a bug, suggest a feature, article, updates, donate,
forum; Copy diagnostics for a bug report
TEST STATUS
V1.0: verified in Proteus 8.5 on 29 Oct 2026 (the demo project as shipped: an
A3 sheet, an Arduino UNO V4.0 with its built-in monitor, our TB6600 driver -
its pop-up version, from its own library - on a +24V supply, the NEMA 23, RV1
on A0 at 40 %; all pop-ups open). What the runs showed:
* The project loads and starts cleanly. RV1 at 40 %: "Pot 410 -> target 640
steps (1/8) = 144.0 deg"; the dial ramps to 144.0 deg and holds at 2.05 A
per coil (the TB6600's 2.9 A peak at 45 deg), the drive read as 1/8
MICROSTEP, the coil LEDs lit.
* "a 90": exactly 90.0 deg. "rpm 120" + "s 400": two turns at 3203 pulses/s
(120 RPM) to 810.0 deg; the Motor page shows the two coil currents as clean
sine and cosine at about 120 RPM.
* "rpm 300" + "s -400": back to 90.0 deg - nothing lost; the short move
"peaked at 492 steps/s (148 RPM)" (it never reached 300 RPM: a ramp).
* "release": RELEASED, 0 A in the coils.
* The TB6600 set to 1/16 from its pop-up + "s 200": half a turn (the sketch
still counts 1/8) - the drive read as 1/16 MICROSTEP.
* The Brake (150 N.cm) + "s 200": the sketch reports "holding", but the
shaft stays put: 200 full steps lost, the log saying "the load is above
the motor's torque" (lost steps are counted in 4s, one rotor tooth) - an
open-loop stepper never knows. With the brake off, "knob": the sketch
reports "At 144.0 deg - holding", the dial stops at 324.0 deg - the half
turn the 1/16 setting cost (the 200 lost full steps are one whole turn,
so the dial hides them).
* The TB6600's own pop-up shows the 1/8 translator, its coil current vector
and the supply current; the motor is a plain load for it.
Plus automatic checks on a PC, 0 failed: 31 on the motor (1600 microsteps at
1/8 = 360.00 deg at 60 RPM, 2.91 A peak; 200 full steps and 400 half steps =
360 deg; the drive read as 1/8, full, half and wave; the rate; 70 N.cm holds;
a 150 N.cm brake while it moves: the rotor stays, 100 full steps lost; ramped
moves at 60 - 300 RPM lose nothing; 600 RPM with no ramp cannot start; an
L298N-style full-step drive turns it and warns over 3.1 A; released = no
current; a coil off is reported); 3 on the pop-up pages rendered; the demo
project read back from disk (90 checks: devices, pins, wires, labels, no
wire through a part, no crossing).
INSTALLATION (about 2 minutes)
1. Close Proteus. Extract the WHOLE ZIP to a normal folder (e.g. Desktop).
2. Copy everything in "Proteus Library Files" (TEPNEMA23.LIB and our Arduino
library V4.0, ArduinoV4TEP.LIB) to the LIBRARY folder of Proteus, for
example:
C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\LIBRARY
(on some PCs: C:\ProgramData\Labcenter Electronics\Proteus 8 Professional\
LIBRARY - use the folder that already holds Proteus's own .LIB files).
3. Copy TEPNEMA23.DLL and TEPARDUINO.DLL from "Proteus Model Files" to the
MODELS folder (...\Proteus 8 Professional\MODELS). The demo's driver is NOT
in this package: install our TB6600 Stepper Motor Driver library the same
way (its own ZIP - see IMPORTANT LINKS): TEPTB6600.LIB and TEPTB6600.DLL.
4. Delete TEPNEMA23.IDX from the LIBRARY folder if it is there.
5. Start Proteus. In Pick Devices (P) search "NEMA".
RUN THE DEMO
"Proteus Simulation\NEMA23-Stepper-Motor-TB6600-ArduinoUnoV4.pdsprj" - keep the
.hex file and the DLLs beside the project (with the TB6600 library installed).
ARD1: Arduino UNO V4.0 running NEMA23_TB6600_Demo.hex, its serial monitor
built in (window "TEP Arduino UNO - ARD1").
DRV1: the TB6600 driver (pop-up version, our TB6600 library), common
cathode: PUL+ D3, DIR+ D4, ENA+ D8, PUL- DIR- ENA- on GND, VCC on a
+24V supply - by net labels; 1/8 microsteps and 2.8 A on its DIP
switches.
M1: the NEMA 23: A+ A- (black, green) and B+ B- (red, blue) on the
TB6600's A+ A- B+ B-.
RV1: a 10k potentiometer on A0: the dial follows it (0 - 360 deg).
1. Press Run. The monitor and the two pop-ups open (move them aside). The
dial ramps to the pot's angle and holds.
2. Click RV1's arrows: the dial follows.
3. Type in the monitor and press Send: a 90, s 200, rpm 120, release, hold,
knob.
4. Click the dial: the brake - the shaft stops and the steps are lost. Or put
a load on the shaft from the pop-up's toolbar (20 - 120 N.cm) and move it
again, faster and faster: the Check page tells whether it kept up.
5. On the TB6600's pop-up: the microstep and current chips (its DIP
switches) - the same pulses turn the motor less at 1/16, more at 1/4.
6. The motor's pop-up: Motor, Graphs, Event log, Check.
WIRING (the same in Proteus and on a real board)
TB6600 Arduino UNO (common cathode)
PUL+ D3
DIR+ D4
ENA+ D8 (LOW = on)
PUL- DIR- ENA- GND
VCC, GND a 24 V supply (9 - 42 V; not the Arduino's 5V), GND
NEMA 23 TB6600 A+ / A-: black / green; B+ / B-: red / blue (other
makers use other colours: find the pairs with a multimeter -
about 0.9 ohm within a coil, open between them)
DIP switches 1/8: SW1 OFF, SW2 ON, SW3 OFF; 2.8 A: SW4 OFF, SW5 OFF, SW6 ON
In the sketch (no library needed):
digitalWrite(DIR, LOW); delayMicroseconds(10); // the direction, before the pulses
digitalWrite(PUL, HIGH); delayMicroseconds(5); digitalWrite(PUL, LOW); // one microstep
1/8 microsteps: 1600 pulses per turn; start slowly and ramp up (the demo
sketch does it; AccelStepper does it too).
REAL HARDWARE:
* Set the TB6600's current to the motor's rating (2.8 A for this class) on
SW4 - SW6 before you power it.
* Never connect or disconnect the motor while VCC is on - it destroys the
driver.
* A held motor draws its current all the time and gets warm: ENA+ HIGH (the
driver off) lets it rest - but then nothing holds the shaft.
* A NEMA 23 needs a ramp: the heavy rotor cannot jump to full speed.
THE DEMO SKETCH ON THE SERIAL MONITOR (NEMA23_TB6600_Demo V1.0, 9600 baud)
a 90 go to 90 deg (and stay - the pot is ignored until "knob")
s 200 200 FULL steps from here (- = the other way; 200 = one turn)
rpm 120 the top speed (1 - 600 RPM)
release the TB6600 off (ENA+ HIGH): no current, no holding torque
hold the TB6600 on again (ENA+ LOW)
knob follow the pot again help the list
EXPECTED MONITOR OUTPUT
NEMA 23 + TB6600 demo - The Engineering Projects
TB6600: PUL+ D3, DIR+ D4, ENA+ D8 (PUL- DIR- ENA- on GND); 1/8 step: 1600 pulses a turn.
The dial follows the pot on A0. (one line on the monitor)
Commands: a 90 | s 200 | rpm 120 | release | hold | knob | help
Pot 410 -> target 640 steps (1/8) = 144.0 deg
At 144.0 deg - holding
PROPERTIES (double-click the part > Edit Properties)
LOAD a constant load on the shaft in N.cm (default 0; it holds about 126
N.cm with both coils at 2.8 A)
START the dial's angle at the start in degrees (default 0)
Every run starts again from the properties.
TROUBLESHOOTING
* The dial never moves and the pop-up says RELEASED: no coil current - the
driver is off (ENA+ HIGH), its VCC is missing or its wiring is wrong (the
TB6600's Check page tells).
* It only vibrates: the coils are mixed up (A+ and B+ on one output pair) -
put one coil's two wires on A+ / A- and the other's on B+ / B-. The Check
page warns when one coil gets no current.
* It turns the wrong way: swap the two wires of ONE coil (or DIR in the sketch).
* It ends short of the target (LOSING STEPS): too fast, no ramp, too little
current or too much load.
* It turns half or twice the angle: the sketch's MICROSTEPS and the TB6600's
DIP switches differ.
* The part is not simulated / the dial never turns: TEPNEMA23.DLL is missing
from MODELS and from the project folder. No driver: install our TB6600
library (TEPTB6600.LIB / .DLL). No UNO / no monitor window: TEPARDUINO.DLL,
or click the UNO's USB port.
* The pop-up does not appear: click OPEN PANEL on the strip, or turn "Open the
panel at Run" on its Settings page back on.
BUG REPORTS AND FEATURE REQUESTS
Please post them in our forum with a screenshot, the Serial Monitor text, the
simulation log and the pop-up's Copy diagnostics text:
https://www.theengineeringprojects.com/forum/category/motor-driver-proteus-library
SUPPORT US
This library is free. If it saves you time, please support our work:
https://www.theengineeringprojects.com/donate
LICENCES AND THIRD-PARTY NOTES
* The motor model (TEPNEMA23.DLL), the symbol and artwork and the Arduino
Library V4.0 (ArduinoV4TEP.LIB / TEPARDUINO.DLL) are made by The Engineering
Projects. The model is an independent implementation written from the typical
data of the 23HS22-2804S-class NEMA 23. The models use only standard Windows
libraries; no Visual C++ redistributable is needed.
The C++ source code is not included.
The demo's driver, our TB6600 Stepper Motor Driver library (TEPTB6600.LIB /
TEPTB6600.DLL), is a separate download.
* The potentiometer is Proteus's own POT-HG.
* The demo's .hex is built from the demo sketch and the Arduino AVR core 1.8.6,
which includes LGPL-licensed code; its source code is available at
https://github.com/arduino/ArduinoCore-avr/tree/1.8.6
* Proteus is a product of Labcenter Electronics and is not included. Arduino is
a trademark of Arduino SA. This library is not made or endorsed by any motor
maker, Arduino or Labcenter.
REBUILDING THE FIRMWARE (OPTIONAL)
The HEX file is supplied; Arduino IDE is not needed to run the demo. To edit the
sketch, open Arduino Code\NEMA23_TB6600_Demo\NEMA23_TB6600_Demo.ino, select
Arduino Uno and use Sketch > Export Compiled Binary. The sketch needs 9,012
bytes of flash (28 % of the UNO) and 303 bytes of RAM.
MODEL SCOPE AND LIMITS
Modelled: the two coils (resistance, inductance, back-EMF), the rotor's 50
teeth (200 steps per turn) with its detent torque, the inertia (with the dial),
the friction, a load torque, lost steps, any drive (full, half, wave, 1/4 -
1/32 microsteps, a voltage H-bridge or a current chopper) and the step timing
as it comes.
How it runs: each coil is in the circuit as its backward-Euler companion over
the analog step (a conductance and a source), so the driver and the coil are
solved together; the rotor follows the solved currents in 10 us sub-steps;
the analog step is held to 100 us while the motor moves or a current changes
(1 ms at rest).
Not modelled: magnetic saturation, the iron losses beyond a damping term,
heating, resonance details of a real machine, the differences between real
motors.
VERSION
TEP NEMA 23 Stepper Motor library V1.0 (Oct 2026). Device NEMA23STEPPERTEP
(TEPNEMA23.LIB / TEPNEMA23.DLL). Demo sketch NEMA23_TB6600_Demo V1.0. Demo
driver: TB6600TEP (TEP TB6600 Stepper Motor Driver library V1.0, a separate
library). Demo board: ARDUINO UNO V4.0 (TEP Arduino Library V4.0) with its
built-in serial monitor.Development1 release
-
V1.0NEMA 23 Stepper Motor Library for Proteus V1.0this page
V1.0 is the only release in the Download Center so far. When a newer version is published, it appears above with its own download page.
Installation8 steps
From the download to a working project, in order. The steps follow what the package contains.
You will need
- Proteus Design SuiteProteus 8 or newer (Labcenter), on Windows
- Arduino IDE1.8 or 2.x, with the board of the tutorial chosen under Tools → Board
- Any archive toolWindows, macOS and Linux extract ZIP files on their own
Steps
- 1
Extract the archive
Right-click nema-23-stepper-motor-tep-v1-0-d0f0133ad94040168b8900b4e3cfab87.zip and choose Extract All (or open it with 7-Zip or WinRAR) into a folder you can find again. Keep its folder structure (NEMA-23-Stepper-Motor-TEP-v1.0) as it is.
- 2
Copy the library files into Proteus
Move ArduinoV4TEP.LIB and TEPNEMA23.LIB and the files into the LIBRARY folder of your Proteus installation: C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\LIBRARY for Proteus 8, or the matching Proteus 7 folder. Older versions keep it under ProgramData\Labcenter Electronics. If Proteus is open, close it first.
- 3
Add the simulation model
Copy TEPARDUINO.DLL and TEPNEMA23.DLL into the MODELS folder next to LIBRARY, so the component can run, not only be drawn.
- 4
Restart Proteus and place the component
Start Proteus, open a schematic, press P (Pick Devices) and search for the component by the name used in the tutorial. It appears with its pins ready to wire.
- 5
Open the sketch in the Arduino IDE
Open NEMA23_TB6600_Demo.ino, select your board and port under Tools, then Verify. Sketch → Export Compiled Binary writes the HEX file a simulation needs.
- 6
Load the HEX file
In Proteus double-click the microcontroller, set Program File to NEMA23_TB6600_Demo.hex and run the simulation. For real hardware, flash the same file with your programmer.
- 7
Open the example simulation
Open NEMA23-Stepper-Motor-TB6600-ArduinoUnoV4.pdsprj in Proteus to see the wiring exactly as in the tutorial. Check the controller's Program File path, then press Play.
- 8
Follow the tutorial
NEMA 23 Stepper Motor Library for Proteus V1.0 (TB6600, Arduino) explains every connection and setting in order; keep it open beside the files while you build.
FAQs9 questionsContact TEP
How do I download NEMA 23 Stepper Motor Library for Proteus V1.0?
Wait for the 30-second guest countdown on this page, then press the download button; the file comes straight from our storage. Members who are logged in skip the wait. If the browser opens the file instead of saving it, use its Save as option. The download link is made for you when the countdown ends and works for 15 minutes; a saved or shared link stops working, so share this page instead.
What is inside the archive?
NEMA 23 Stepper Motor Library for Proteus V1.0 comes as a ZIP archive of 10 files (1.2 MB, 2.7 MB unpacked) holding Proteus library files, simulation model DLLs, a Proteus simulation, an Arduino sketch and compiled HEX firmware. Open the File Structure tab for the full list of 10 files.
What should I do if the download does not start?
Check the browser's download list first; an ad blocker or a company firewall can also hold it back, so try another browser or network. If the file arrives incomplete, download it again. For an installation problem, read the Install tab or tell us in the comments with your software version and the exact error message.
Is this file free?
Yes. Every file in the TEP Download Center is free for learning, personal and student projects. If you share it, link back to this page or the tutorial so others find the latest version.
How do I check that the file arrived complete?
Compare its SHA-256 with the one on this page, 72caa00605c5eb89fc1d3d683faff829a4d7e1e4743f54028981a0ad3f972617. In PowerShell run Get-FileHash "nema-23-stepper-motor-tep-v1-0-d0f0133ad94040168b8900b4e3cfab87.zip"; on macOS or Linux run shasum -a 256 "nema-23-stepper-motor-tep-v1-0-d0f0133ad94040168b8900b4e3cfab87.zip". The same value means the file is exactly the one in our storage; a different one means the download broke off, so download it again.
Do I need WinRAR to open the ZIP file?
No. Windows, macOS and Linux open ZIP archives on their own (Extract All, or double-click). WinRAR and 7-Zip work too. Extract the whole archive before using the files.
Where do I put the LIB and IDX files?
Both files go into the LIBRARY folder of your Proteus installation (Proteus 8: C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\LIBRARY; Proteus 7 has the same folder under its own name). Restart Proteus afterwards and search for the component with P.
Which Proteus version does the library need?
The tutorial names the Proteus version the library was made and tested with. Most TEP libraries work in Proteus 7 and Proteus 8; if the component does not appear after a restart, check that both the LIB and the IDX file were copied and that Proteus was fully closed while copying.
How do I get the HEX file into the simulation?
Compile the sketch in the Arduino IDE (Sketch → Export Compiled Binary gives you the HEX next to the sketch), then in Proteus double-click the board, set Program File to that HEX and run.
Members skip the wait. Log in or join TEP.
- 0Total downloads
- 4%Popularity
- ProteusCategory
- 0Comments
- ssyedzainnasirUploaded by
- 1 Nov 2026Uploaded at
72caa00605c5eb89fc1d3d683faff829a4d7e1e4743f54028981a0ad3f972617























Comments
0