The Lizard is a first-principles electro-mechanical model, analytical transfer function derivation, parameter identification, and multi-domain simulation suite for the Maxon DC-max 16 S (24V) graphite-brushed DC motor.
The motor dynamics are implemented and cross-validated across three independent simulation paradigms in MATLAB & Simulink:
-
Analytical Transfer Function Model (
SYS1,SYS2,SYS3via Model Linearizer): Evaluated in the frequency and Laplace$s$ -domains. - Differential Equation Block Diagram Model: Direct state-variable integration of Kirchhoff’s Voltage Law (KVL) and Newton’s second rotational law.
- Simscape Multi-Domain Physical Network: A physics-based causal network modeling real-world electrical (current/voltage sensors, reference grounds) and mechanical (rotor inertia, damping, torque loading) domains.
All three implementations are benchmarked against official manufacturer specifications (Cataloge-Page-EN-122.pdf) across No-Load, Nominal Load, and Stall regimes, achieving
Figure 1: Closed-loop electro-mechanical block diagram with armature back-EMF feedback, torque constant gain $k_\phi$, and mechanical damping.
Figure 2: Simscape physical schematic showing coupled electrical domain (blue) and rotational mechanical domain (green) with physical-signal sensors.
The dynamic behavior of a permanent magnet DC motor is governed by coupled electrical and rotational mechanical equations:
-
Electrical Subsystem (Kirchhoff's Voltage Law):
$$V_a(t) = R_a i_a(t) + L_a \frac{di_a(t)}{dt} + e_b(t)$$ where the counter-electromotive force (back-EMF) is proportional to rotational velocity:$$e_b(t) = k_\phi \omega_m(t)$$ -
Mechanical Subsystem (Newton's Second Law for Rotation):
$$J_m \frac{d\omega_m(t)}{dt} = T_m(t) - B_m \omega_m(t) - T_L(t)$$ where the generated electromagnetic torque is proportional to armature current:$$T_m(t) = k_\phi i_a(t)$$
Assuming zero initial conditions and no external load torque (
Extracted from the official Maxon catalog datasheet:
| Parameter | Symbol | Catalog Value | Units | Description / Derivation |
|---|---|---|---|---|
| Nominal Voltage | Rated input armature voltage | |||
| Terminal Resistance | Phase winding resistance | |||
| Terminal Inductance | Armature winding inductance | |||
| Torque / Speed Constant |
|
Flux linkage constant | ||
| Rotor Inertia | Mass moment of inertia of rotor | |||
| No-Load Current | Idling current draw ( |
|||
| Nominal Torque | Continuous operating load ( |
|||
| Stall Torque | Peak stall torque ( |
|||
| Viscous Friction Coeff. |
Identified via steady-state no-load equation: |
-
Electrical Time Constant (
$\tau_e$ ):$$\tau_e = \frac{L_a}{R_a} = \frac{1.37 \times 10^{-3}\text{ H}}{37.5\ \Omega} = 36.5\ \mu\text{s}$$ -
Mechanical Time Constant (
$\tau_m$ ):$$\tau_m = \frac{R_a J_m}{k_\phi^2} = \frac{(37.5)(1.16 \times 10^{-7})}{(0.0225)^2} = 8.59\text{ ms}$$ Because$\tau_m \gg \tau_e$ (ratio$> 235:1$ ), mechanical inertia dominates the system bandwidth.
| Performance Metric | Datasheet Value | Simulink Block Diagram | Simscape Physical Model | Steady-State Error |
|---|---|---|---|---|
| No-Load Speed (ω_nl) | 9,920 RPM | 9,919 RPM | 9,909 RPM | < 0.11% |
| No-Load Current (I_nl) | 16.8 mA | 16.4 mA | 16.77 mA | < 0.20% |
| Nominal Speed (ω_n) | 6,580 RPM | 6,640 RPM | 6,637 RPM | < 0.91% |
| Nominal Current (I_n) | 0.227 A | 0.2227 A | 0.2226 A | < 1.90% |
| Stall Current (I_s) | 0.640 A | 0.6398 A | 0.6394 A | < 0.09% |
| Angular Velocity Step Response (6,640 RPM) | Armature Current Transient Response (0.22 A) |
|---|---|
![]() |
![]() |
| No-Load Velocity Steady-State (9,919 RPM) | No-Load Current Idling (16.4 mA) |
|---|---|
![]() |
![]() |
| Differential Equation Block Diagram Stall Current | Simscape Physical Network Stall Current |
|---|---|
![]() |
![]() |
Under continuous nominal load operation (
-
Winding Joule Losses:
$$P_{\text{loss}} = I_n^2 R_a = (0.227\text{ A})^2 \times 37.5\ \Omega = 1.93\text{ W}$$ -
Thermal Temperature Rise:
Given the thermal resistance winding-to-housing
$R_{th1} = 9.1\text{ K/W}$ and housing-to-ambient$R_{th2} = 35.0\text{ K/W}$ (total$R_{th} = 44.1\text{ K/W}$ ):$$\Delta T = P_{\text{loss}} \times R_{th} = 1.93\text{ W} \times 44.1\text{ K/W} \approx 85.1^\circ\text{C}$$ -
Maximum Safe Ambient Operating Temperature:
For a maximum rated winding temperature
$T_{\text{max}} = 125^\circ\text{C}$ :$$T_{\text{amb, max}} = T_{\text{max}} - \Delta T = 125^\circ\text{C} - 85.1^\circ\text{C} \approx 39.9^\circ\text{C}$$
- MATLAB (R2022b or later recommended)
- Simulink
- Simscape / Simscape Driveline / Simscape Electrical
- Control System Toolbox
- Clone this repository:
git clone https://github.com/sbbxiii/The-Lizard.git cd The-Lizard - Open MATLAB and navigate to the
simulation/directory. - Run
simulation/mainEMD.m:run('mainEMD.m')- Computes motor parameters and stores variables in the base workspace.
- Derives closed-loop transfer functions
SYS1,SYS2, andSYS3. - Solves partial fraction residue decomposition for the
$24\text{V}$ unit step input.
- Open the Simulink model
simulation/mainEMDmode.slx:open_system('mainEMDmode.slx') - Click Run to execute the multi-domain simulation and observe the transient curves on the Scopes.
The-Lizard/
├── simulation/
│ ├── mainEMD.m # Core MATLAB parameter script & TF derivation
│ ├── mainEMDmode.slx # Simulink & Simscape multi-paradigm model
│ ├── emdlin.mat # Linearized state-space model object
│ └── matlab.mat # Saved workspace variable state
├── docs/
│ ├── DC_Motor_Simulation_Report.pdf # Comprehensive academic technical report
│ ├── Maxon_DC_max_16S_Catalog.pdf # Official Maxon manufacturer datasheet
│ └── images/ # Simulation diagrams & transient response plots
│ ├── simulink_block_diagram.png
│ ├── simscape_physical_model.png
│ ├── nominal_speed_response.png
│ ├── nominal_current_response.png
│ ├── no_load_speed_response.png
│ ├── no_load_current_response.png
│ ├── stall_current_block_diagram.png
│ └── stall_current_simscape.png
├── .gitignore
├── LICENSE
└── README.md
- Engineered by: Osakwe Nmesoma Chukwukadibia (@sbbxiii)
- License: MIT License





