Hello friends, I hope you all are doing great. Today, I am going to share the new 120mm 230V AC Fan Library for Proteus Simulation, the 42nd library of our motor series. If you have searched for a Proteus simulation of an AC fan, or of AC fan speed control with an Arduino, this is the fan you meet in control cabinets, amplifiers and machines: a 120 mm axial fan that runs straight from the 230 V mains, with a shaded-pole induction motor inside its hub.
120mm 230V AC Fan Library for Proteus Simulation
Latest version: V1.0 (November 2026, this tutorial)
Other motors: SG90 Servo · TT Gear Motor · 28BYJ-48 Stepper · NEMA 17 Stepper · MG996R Servo · N20 Encoder Motor · JGA25-370 Encoder Motor · FS90R 360 Servo · 130 DC Motor · A2212 Brushless · X27.168 Gauge · Analog Panel Meter · DC Tachogenerator · LM393 Speed Sensor · MG90S Servo · DS3218 Servo · L12 Linear Servo · JGB37-520 Motor · RS-775 Motor · JGY-370 Worm Motor · 12V Linear Actuator · Coin Vibration Motor · Mini Submersible Water Pump · 12V Peristaltic Pump · 4-Pin PC Fan · 12V Push-Pull Solenoid · NEMA 23 Stepper Motor · Micro Linear Stepper · TYJ50 Synchronous Motor · Quartz Clock Movement · Air-Core Gauge · Electromechanical Counter · Split-Flap Display · Electric Bell · Wind Turbine · 8520 Coreless Motor · Car Wiper Motor · Car Door Lock Actuator · 12V Solenoid Water Valve · 12V Holding Electromagnet · Mini Air Pump · Planetary Gear Motor · 540 RC Motor · LRA Vibration Motor · 42BLF Hall BLDC Motor · 2204 Gimbal Motor · NEMA 17 Closed-Loop Stepper · NEMA 17 Linear Stage · Pan-Tilt Bracket · 4-DOF Robot Arm
Motor drivers: L298 · L9110S · TB6612FNG · BTS7960 · A4988 / DRV8825 · 28BYJ-48 + ULN2003 · PCA9685 Servo · Relay Module · 30A Brushless ESC · TB6600 Stepper Driver · 60A Brushed ESC · DRV2605L Haptic Driver · ZS-X11H BLDC Driver · SimpleFOC Mini Driver · AC Dimmer Module · TMC2209 Stepper Driver · DRV8833 Motor Driver · L293D Motor Shield
Helping Tools
- Serial Monitor Advance: a serial terminal window for the UART of your board
- Serial Monitor Expert: the serial monitor with extra debugging tools
- LCD Library for Proteus V3.0: 16x2, 20x4 and I2C LCDs to show your readings
Our library brings that fan into your Proteus simulation at its true size, the 119 mm frame with its four corner holes, five swept metal blades and the rating label on the hub; at run time the blades turn, and over 400 RPM they become a blur, as the eye sees them. The simulation model is a real induction motor: a forward and a backward magnetic field, the slip, the torque and the power factor at every speed, fitted to the figures of this class of fan, and the fan's air load that rises with the speed squared. In the demo an Arduino sets the fan's speed through our AC dimmer module on 230 V 50 Hz: full speed, two lower settings and off.
NOTICE: Our team has put a lot of effort into these small parts: the bodies, the animation and the pop-ups are all our own design, and you get them free. Your feedback is the fuel that keeps us going, so please tell us what you think in the comments below or in the Motor Driver board of our forum. And if our free libraries help you, you can buy us a coffee. So, let's get started with the 120mm 230V AC Fan Library for Proteus Simulation:
What is a 230 V AC Axial Fan?
An AC axial fan is a fan with an induction motor that runs directly from the mains, with no electronics inside. The common 120 mm size, 119 x 119 x 38 mm, has an external-rotor motor: the winding sits still in the middle, and the rotor, a steel cup with the blades moulded or pressed onto it, turns around it. Because there is nothing to wear out but the bearings and nothing to fail but the winding, these fans run for years in places where a 12 V PC fan would need a power supply of its own.
The motor is a shaded-pole motor. A single-phase winding on its own only makes a field that pulses back and forth, which cannot start a rotor. So part of each pole carries a thick copper ring, the shading ring. The current induced in the ring delays the flux in that part of the pole, and the field sweeps across the pole from the unshaded part to the shaded part: a weak turning field. That is enough to start a fan, always in the same direction, with no capacitor and no switch. The price is efficiency: the rings and the iron turn a large part of the 19 W into heat.
| The 120 mm 230 V AC fan (this class) | |
|---|---|
| Size | 119 x 119 x 38 mm, four 4.3 mm holes 104.8 mm apart |
| Supply | 230 V AC, 50 Hz (60 Hz runs it a little faster) |
| Motor | external-rotor shaded-pole induction motor, 2 poles: 3000 RPM synchronous at 50 Hz |
| Speed and power | 2650 RPM, 19 W |
| Current | about 0.12 A; power factor about 0.7 |
| Airflow and noise | 160 m3/h in free air, 46 dB(A) |
How the Motor Starts, Runs and Slows
An induction motor never quite catches its field. The rotor turns a little slower than the field, and the difference, the slip, is what induces the currents in the rotor that make the torque. For this fan the field turns at 3000 RPM and the rotor at 2650 RPM: a slip of about 12 percent. A shaded-pole motor has a high-resistance rotor, so its torque falls gently as the speed rises instead of collapsing near the top, and the fan settles wherever the motor's torque meets the load of the air.
That is why the voltage sets the speed. The motor's torque grows with the square of the voltage, and the air's load grows with the square of the speed. Lower the voltage and the torque curve drops; the point where it meets the load curve slides down to a lower speed. A triac dimmer lowers the RMS voltage by cutting a part out of every half-cycle, so the same dimmer that dims a lamp slows a shaded-pole fan. Take the voltage too low, around 90 V RMS for this fan, and the torque never reaches the load: the fan stops and only hums.
Our simulation model is the classic double-revolving-field circuit of a single-phase induction motor: the pulsing field of the winding split into a forward field and a backward field, each with its own rotor circuit at its own slip. The shading rings make the forward field the stronger one, 62.5 percent of the whole in our fit, so the motor starts. We fitted the circuit to the class's 0.118 A and 19 W at 2650 RPM; it then gives a power factor of 0.71, about 0.16 A with the rotor blocked and a breakdown torque near 20 mN.m.
Features of the 120mm 230V AC Fan Library for Proteus Simulation
- The fan at true scale: the die-cast frame with its holes, the round opening, five swept blades, the hub with its rating label and the two leads; at run time the blades turn, a blur at speed.
- A real induction motor: the double-revolving-field circuit of a shaded-pole motor, solved with the circuit as a resistance and inductance that follow the slip, so the current lags the voltage as it does on the bench.
- Torque, slip and power factor at every speed: the forward field's air-gap power less the backward one's, divided by the synchronous speed; it pulses at twice the mains frequency, as in any single-phase motor.
- The fan's load: the rotor and the blades with their inertia, the bearing friction and an air load that rises with the speed squared; the pop-up's chips add a dusty filter or block the blades.
- Measurements: the voltage and current RMS, the real power and the power factor, the part of the cycle the current flows (a dimmer cuts it), the frequency, the speed, the slip, the airflow, the noise and the winding's temperature.
- A pop-up: the fan, a scope of its voltage and current, the torque against the speed with the working point, graphs, an event log and a check page.
- A complete package: about 1.2 MB with the library, our Arduino UNO V4.0 and the demo, without the source code of the model.
The 120mm 230V AC Fan in Proteus
The device is FAN120ACTEP in TEPACFAN120.LIB, under Electromechanical > Motors, with the prefix M and the analog model TEPACFAN120.DLL. Search FAN120 in Pick Devices. The two leads, N and L, come out on the left; either way round works, because the shading rings decide the direction. There are no properties to set: the fan's figures are fixed, and the pop-up's chips change the air load at run time.
Download 120mm 230V AC Fan Library for Proteus Simulation
Click the button below to download 120mm-230V-AC-Fan-Library-for-Proteus-v1.0.zip (about 1.2 MB, without the source code of the models):
120mm 230V AC Fan Library for Proteus V1.0- README.txt: installation, the demo, the wiring, troubleshooting and the limits of the simulation.
- Proteus Library Files:
TEPACFAN120.LIBandArduinoV4TEP.LIB. - Proteus Model Files:
TEPACFAN120.DLLandTEPARDUINO.DLL. - Arduino Code: the demo sketch.
- Proteus Simulation: the demo project, its HEX file and copies of the DLLs.
No Proteus yet? Read How to Download and Install Proteus 7 and 8. New to libraries? Follow How to Install a New Library in Proteus.
How to Install 120mm 230V AC Fan Library for Proteus Simulation
- Close Proteus and extract the whole zip file, for example to your Desktop.
- Copy the files from Proteus Library Files into the LIBRARY folder of Proteus.
- Copy the files from Proteus Model Files into the MODELS folder.
- Delete
TEPACFAN120.IDXfrom the LIBRARY folder if it is there. - The demo's dimmer is our separate AC Dimmer Module Library for Proteus Simulation: install its LIB and DLL too.
- Start Proteus, press P and search for FAN120.
Proteus Simulation of the AC Fan with Arduino and a Triac Dimmer
The demo has our Arduino UNO Library for Proteus V4.0 with its built-in monitor, the same window as our TEP Serial Monitor Advance for Proteus. V1 is Proteus's own ALTERNATOR, set to 325 V peak, which is 230 V RMS, at 50 Hz; its minus is the ground, as the neutral of a real supply is earthed. U1 is the AC dimmer module from our separate AC Dimmer Module library (TEPACDIMMER.LIB and TEPACDIMMER.DLL), so install it first. Its AC-IN takes the mains, its LOAD terminal feeds the fan's N and L, its Z-C output goes to the UNO's D2 and its PWM input comes from D3. Open FAN120AC-ACDIMMER-ArduinoUnoV4.pdsprj.
The Sketch
The dimmer's Z-C output is HIGH for about a millisecond around each zero of the mains. The sketch watches both edges with an interrupt and takes the middle of the pulse as the true zero:
void zeroCross() {
const unsigned long now = micros();
if (digitalRead(ZC_PIN) == HIGH) { riseAt = now; return; }
const unsigned long w = now - riseAt;
if (w > 200 && w < 3000) { zcWidth = w; zeroAt = riseAt + w / 2; zeroNew = true; ++zcCount; }
}
After each zero the loop waits the firing delay, then drives the gate high and keeps it high until 8.5 ms after the zero. The long gate matters for a fan: its current lags its voltage, and a triac that is fired with a short pulse can miss the half-cycle while the last one's current is still flowing.
if (!gateOn && fireUs && (long)(now - (z + fireUs)) >= 0 && (long)(now - (z + HOLD_TO)) < 0) {
digitalWrite(GATE_PIN, HIGH); gateOn = true; gateOffAt = z + HOLD_TO; zeroNew = false;
}
The program is a short table of firing delays in microseconds, with the time in tenths of a second:
const Step PLAN[] = { {5, 1500, "FULL"}, {50, 4000, "SLOWER"}, {80, 5000, "SLOWER STILL"}, {120, 0, "OFF - the fan coasts"} };
So the fan gets the full mains from 0.5 s (fired 1.5 ms after each zero), firing at 4 ms from 5 s, at 5 ms from 8 s, and nothing from 12 s. Afterwards you can type d 3.5 to fire 3.5 ms after each zero, or o for off.
120mm AC Fan Simulation Results
Open the project and press Run. The program runs 14 simulated seconds, which Proteus ran in about three and a half minutes on our PC with both pop-ups open and the pictures being taken. Click the fan to open its pop-up, and the dimmer to open its own. Every number below comes from one simulation run, the demo exactly as it ships.
Starting on the Full Mains
At 0.5 s the UNO starts firing the triac 1.5 ms after each zero. The fan was standing still, so its slip is 100 percent and its current is high: at 1.5 s the banner reads STARTING, 892 RPM and rising, with 0.150 A and 29.7 W at a power factor of 0.86. The scope shows the current lagging the voltage; the torque card shows the grey motor curve on 230 V far above the orange air load at this speed, so the fan keeps accelerating.
By 4.6 s it has settled: RUNNING at 2639 RPM on 229 V RMS, 0.115 A, 18.8 W with a power factor of 0.71, a slip of 12 percent, 159 m3/h and 46 dB(A). The blue working point sits where the grey motor curve crosses the orange load curve, close to the class's 2650 RPM and 19 W.
The dimmer's pop-up explains why 1.5 ms means full power. The gate goes high 1.5 ms after the zero, but the triac only turns on at 2.53 ms, 45 degrees: until then the current of the last half-cycle is still flowing through it, lagging the voltage by that angle. When that current ends, the gate is still held, so the triac fires again at once in the other direction and carries the whole cycle.
Firing at 4 ms
At 5 s the UNO moves the firing to 4 ms after each zero. Now the triac waits: the fan gets nothing from the zero until 4 ms, then the rest of the half-cycle. The voltage at the fan falls to 195 V RMS, the current flows 79 percent of the time, and the fan slows; the green motor curve on that voltage now sits under the grey one, and the working point slides down the load curve. By 7.8 s it is steady at 2348 RPM, 0.093 A and 13.0 W, moving 142 m3/h. The Event log notes the PHASE-CUT with the part of the cycle the current flows.
On the dimmer's side the gate rises at 4 ms and the triac fires at 4.03 ms, 72 degrees; the load scope shows the cut sine of the voltage and the current that starts at each firing and runs on past the zero.
Firing at 5 ms
At 8 s the firing moves to 5 ms, half-way through each half-cycle. The fan slows further, and because the air load is light at low speed it takes a few seconds to settle; at 11.8 s it reads 1817 RPM on 165 V RMS, 0.082 A and 9.7 W, the current flowing 66 percent of the time, for 109 m3/h. Fire much later, past about 6.5 ms, and the torque at any speed stays under the load: the fan would stop and hum.
Off: Coasting
At 12 s the UNO stops firing. The current falls to nothing and the banner reads COASTING: only the air and the bearings slow the rotor, so it runs down gently, 1201 RPM at 13 s and 885 RPM at 14 s.
The Graphs, the Event Log and the Check Page
The Graphs page plots the speed, the current, the voltage at the fan and the airflow over the last 2, 6 or 15 simulated seconds: the start, the three steps down and the coast are easy to read. The Event log keeps the power, each phase-cut, the steady speeds with their voltage, current, power, power factor and airflow, and the coast; the Check page sums up the voltage, the current against the rating, the speed, the power, the airflow and the winding.
The monitor shows the program's steps and, every second, the Z-C pulse the UNO measured, 1.03 ms wide, and its count, 100 zeros a second on 50 Hz.
Try It Yourself
- Type
d 3while it runs at full speed: the fan barely slows, because at 3 ms the triac still gets most of the cycle. - Type
d 7: the fan slows towards a stop and the banner turns to HUMMING once it stands still. - Click the Dusty filter chip: the air load grows by 30 percent and the speed drops at every setting.
- Click Blades blocked: the rotor stops, and the current only rises to about 0.16 A - the winding protects itself.
- Change the ALTERNATOR to 60 Hz: the field turns at 3600 RPM and the fan runs a little faster.
Ideas to Extend the Demo
- Read a thermistor on A0 and set the firing delay from the temperature: a cabinet fan that speeds up as it warms.
- Add a potentiometer for a manual speed knob, with a minimum setting so the fan never hums.
- Count the fan's speed with a reflective sensor on a blade and close the loop.
Your Own Sketches
The demo sketch is in the zip file, and you can change it in the Arduino IDE. New to Arduino? Start with our Arduino Tutorial for Beginners. Export the compiled binary, and set the UNO's PROGRAM property to the new file. Our guide on How to get the HEX file from Arduino shows you where the file ends up.
Things to Know Before Using a Real AC Fan
- Mains voltage kills: the fan, the dimmer's AC side and its terminals carry 230 V; build it in an enclosure, fuse it and earth the frame.
- Keep a minimum setting: below about 90 V RMS a shaded-pole fan stalls and only heats; some fans are sold as not suitable for speed control.
- Expect a hum: the chopped voltage makes the motor hum at low settings; that is normal for phase control.
- Hold the gate long: the fan's current lags its voltage by about 45 degrees, so short gate pulses can miss half-cycles.
Troubleshooting
- HUMMING: the RMS voltage is too low to turn the fan; fire the triac earlier.
- It never reaches 2650 RPM: a dusty filter, or a voltage below 230 V.
- BLOCKED: the rotor is held; the current stays near 0.16 A until the blades are free.
- No current: the dimmer never fires, or the fan is not on its LOAD terminal.
- The part is not simulated:
TEPACFAN120.DLLis missing from MODELS and from the project folder.
Limitations of the Simulation
- The circuit is fitted to the class's current, power and speed; the split between the winding, the shading rings and the iron is our fit, not a measurement.
- The harmonics of a chopped voltage see the same circuit as the fundamental; their extra losses and the hum are not modelled.
- The airflow follows the fan law in free air; back pressure and stall are not modelled, and the inertia and thermal figures are our estimates.
- Arduino is a name of Arduino; this library is not made or endorsed by Arduino, Labcenter or any fan maker.
- Tested in Proteus 8.5 in November 2026 (the demo as shipped). Proteus 7 is not supported.
So, that was all about the 120mm 230V AC Fan Library for Proteus Simulation. I hope it helps you try AC fans and their speed control in a simulation first: a shaded-pole motor that starts itself, a slip and a power factor that change with the speed, a torque curve that meets the air's load, and a triac dimmer that moves that point, with a pop-up that shows all of it. If you have any questions, ask in the comments and I will help you out. Till the next tutorial, take care and have fun!