Project Files of Air-Core Gauge Library for Proteus V1.0 (Arduino + L9110S)
air-core-gauge-tep-v1-0-411a44af88874bb7b2484447d74fdf3c.zip

Air-Core Gauge Library for Proteus V1.0
Air-Core Gauge Library for Proteus V1.0 comes as a ZIP archive of 10 files (1.2 MB, 2.6 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
Air-Core-Gauge-Library-for-Proteus-v1.0.zip with the air-core gauge in Proteus (a car tachometer on an air-core movement: two crossed coils, the needle following their field, fluid damping, the stop pin; TEPAIRCORE.LIB and TEPAIRCORE.DLL), our Arduino UNO V4.0, the A3 L9110S demo project with its sketch and a README.
File Structure
6.2 KB201.9 KB32.6 KB308.5 KB883.5 KB25.6 KB24.9 KB308.5 KB883.5 KB17.1 KBGallery12 images from the tutorialOpen the tutorial
The circuit, the board and the results as they appear in Air-Core Gauge Library for Proteus V1.0 (Arduino + L9110S). Open an image for its full size.












README
AIR-CORE GAUGE LIBRARY FOR PROTEUS - V1.0 (the air-core movement of car gauges
behind a 52 mm tachometer dial)
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/air-core-gauge-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 L9110S Motor Driver - a SEPARATE library, not in this
package: download and install it first - its own article:
https://www.theengineeringprojects.com/2026/10/l9110s-motor-driver-library-for-proteus-v1-0.html
Support us (the libraries are free):
https://www.theengineeringprojects.com/donate
FILE STRUCTURE
Air-Core-Gauge-TEP-v1.0/
|-- Proteus Library Files/
| |-- ArduinoV4TEP.LIB 201.9 KB TEP Arduino boards V4.0 (UNO) -> LIBRARY
| |-- TEPAIRCORE.LIB 32.6 KB the library -> LIBRARY folder
|-- Proteus Model Files/
| |-- TEPAIRCORE.DLL 308.5 KB the model -> MODELS folder
| |-- TEPARDUINO.DLL 883.5 KB the Arduino board model -> MODELS folder
|-- Proteus Simulation/
| |-- AirCore_Gauge_Demo.hex 24.9 KB the demo firmware
| |-- Air-Core-Gauge-L9110S-ArduinoUnoV4.pdsprj 25.6 KB the demo project
| |-- TEPAIRCORE.DLL 308.5 KB copy of the model
| |-- TEPARDUINO.DLL 883.5 KB copy of the board model
|-- Arduino Code/
| |-- AirCore_Gauge_Demo/AirCore_Gauge_Demo.ino 6.2 KB the demo sketch (source of the .hex)
|-- README.txt ~18.5 KB this file
Total: 2.63 MB (unzipped). The C++ source code of the models is not included.
WHAT IS IT?
A simulation model of the air-core gauge movement - the movement behind the
tachometers, speedometers, fuel and temperature gauges of countless car
dashboards, and a favourite of makers who build their own clusters and sim
racing dashboards. It has no gears and no spring: two coils wound crossed at
90 deg on a plastic bobbin and, inside them, a disc magnet on the needle's
shaft. The magnet turns to the direction of the two coils' field, so the
needle points at atan2(SIN, COS) - anywhere round the full circle. Our own
model:
* The two coils - COS between COS+ / COS-, SIN between SIN+ / SIN- - are in
the circuit with their resistance and inductance: 230 ohm and 25 mH each,
12 V coils (52 mA). An H-bridge drives them (L9110S, L293D, L298N).
* The needle follows the field: the COS coil along the needle's 0, the SIN
coil along 90 deg. Drive COS with cos(angle) and SIN with sin(angle) and
the needle goes to that angle.
* A silicone fluid damps the magnet: a move settles in about half a second
with a small overshoot. A pivot friction and a small return magnet bend
the reading by up to about 1.6 deg (50 r/min) at the full field.
* The return magnet sits at the stop pin: with the coils off the needle
sinks slowly back to 0 (from past 174 deg it falls onto the pin's far
side). Property RETURN NO: no return magnet - the needle stays put.
* The stop pin just below the 0 mark: the needle cannot pass it from either
side (-6 to 354 deg). A field that jumps more than 180 deg sends the
magnet the short way round - onto the pin, where it stays: STUCK AT THE
PIN. Move the field in steps.
* A weak field (under 25 % of the rated current) holds the needle loosely:
the return magnet and the pivot pull it off - WEAK FIELD.
* Warnings: more current than a 12 V coil takes, one coil without current
(a wire off).
* A finger on the needle (a click on the dial) and a tap on the gauge (the
pop-up's chip) - the fluid settles it back.
The symbol shows a 52 mm car tachometer from the front: the chrome bezel, the
black face with its 0 - 8 x1000 r/min scale over 270 deg and the red zone, the
red needle and its hub, and on the left the movement's terminal block with its
four brass terminals and the coil wires. At Run the needle turns to the
simulated angle, the scale follows properties RANGE and REDLINE, and an orange
mark on the rim shows where the field points. The plate, the coil LEDs COS and
SIN (green: the current flows + to -, red: - to +), the rating line and the
strip under the plate (VALUE, ANGLE, FIELD, OPEN PANEL) are TEP additions; the
real gauge has none of them.
ONE DEVICE (search "air-core" or "gauge" in Pick Devices):
AIRCORETEP "Air-Core Gauge V1.0" (category Electromechanical >
Motors), model TEPAIRCORE.DLL
The pop-up panel "TEP Air-Core Gauge" opens at Run (and with OPEN PANEL on
the strip) - the look of the TEP Serial Monitor. Tabs Gauge, Graphs, Event
log and Check; gear and ? icons for Settings and Help; the palette icon
switches the theme:
Gauge the state in big letters (SHOWING 3162 R/MIN, MOVING, WEAK
FIELD, AT THE PIN, STUCK AT THE PIN, OFF); the dial with the
needle and the field; the live values (the reading, the needle,
where the field points, how far off, the field's size, the
state, the two coil currents); the field vector, drawn the
dial's way round; the coil currents over the last second. The
toolbar: Hold it (a finger on the needle), Tap the gauge.
Graphs the needle and the field, the two coil currents and the
field's size over the last 5, 15 or 30 s. Live / Freeze.
Event log FIELD ON / OFF, every move ("STEADY at 6839 r/min (230.8 deg)
- from 3180 r/min in 0.66 s, 1.5 deg off the field"), STUCK AT
THE PIN, WEAK FIELD, the warnings; filters All / Moves /
Warnings, Pause, Clear
Check Good for: a needle that does not move, points the wrong way,
reads low, sticks at the pin or swings past and back - the
coils, the current, the field, the accuracy, the moves, the
pin, the return magnet, with 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 L9110S driver -
its pop-up version, from its own library - on +12V, RV1 and the gauge; all
pop-ups open). What the runs showed:
* The project loads and starts cleanly; the sketch's self-test sweeps the
needle to 8000 r/min and back, then RV1 (40 %) sets it: "STEADY at 3162
r/min (106.7 deg)", COS -17 mA, SIN 49 mA, the field at 100 %.
* "rpm 6800": "STEADY at 6839 r/min (230.8 deg) - from 3181 r/min in 0.66 s,
1.5 deg off the field" - in the red zone.
* "rpm 900", then "jump 7000" - the field jumps 206 deg at once: "STUCK AT
THE PIN - the field jumped to 236 deg the short way round: move it in
steps under 180 deg". "rpm 3000" slews the field back past the far side
and the needle frees itself: "STEADY at 2948 r/min (99.5 deg)".
* "weak 15": "WEAK FIELD - 15 % of the rated current: the needle sits 6.5
deg off the field" - and it sinks further, to 12.5 deg off.
* "angle 300": past the scale, "STEADY at 8928 r/min (301.3 deg)".
* The Tap chip: the needle jumps and settles back in 0.28 s.
* "off": the return magnet takes the needle down, from 133.9 deg to 20.4 deg
in 7 s; "on", "sweep", "rev" (900, a blip to 6800, back to 900).
* The L9110S's own pop-up at 900 r/min (30 deg): motor B (the COS coil)
FORWARD 86 % at 490 Hz, motor A (the SIN coil) FORWARD 51 % at 977 Hz -
cos 0.87 and sin 0.50; its scope draws the two coil voltages as a cosine
and a sine through the sweep and the blip.
Plus automatic checks on a PC, 0 failed: 39 on the movement (the COS coil
alone: 52.2 mA, the needle at 0; 3500 r/min within 2 deg, settled in 0.5 s;
a step to 170 deg overshoots to 175 and settles; a jump 0 to 270 deg sticks
at the pin, the same move in steps gets there; 357 deg and 340 deg end on
the pin; off: back to 0, from 300 deg onto the pin's far side, without the
return magnet it stays; 15 % = WEAK FIELD; a PWM on both coils = the
average; a SIN coil without current is found; 20 V = over-current; a finger
holds the needle, a tap settles back; every event text fits); 2 on the
pop-up pages rendered; the demo project read back from disk (75 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" (TEPAIRCORE.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 TEPAIRCORE.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 L9110S Motor Driver library the same way (its
own ZIP - see IMPORTANT LINKS): TEPL9110S.LIB and TEPL9110S.DLL.
4. Delete TEPAIRCORE.IDX from the LIBRARY folder if it is there.
5. Start Proteus. In Pick Devices (P) search "air-core".
RUN THE DEMO
"Proteus Simulation\Air-Core-Gauge-L9110S-ArduinoUnoV4.pdsprj" - keep the .hex
file and the DLLs beside the project (with the L9110S library installed).
ARD1: Arduino UNO V4.0 running AirCore_Gauge_Demo.hex, its serial monitor
built in (window "TEP Arduino UNO - ARD1").
DRV1: our L9110S driver (pop-up version, a separate library): B-IA on D9,
B-IB on D10, A-IA on D5, A-IB on D6, VCC on +12V, GND - by net labels.
M1: the gauge: COS+ / COS- on the L9110S's B-OA / B-OB (motor B), SIN+ /
SIN- on A-OA / A-OB (motor A) - straight wires.
RV1: 10k pot on A0 (the r/min in knob mode).
1. Press Run. The monitor and the two pop-ups open (move them aside). The
needle sweeps to the end and back, then follows RV1.
2. Turn RV1. Type in the monitor and press Send: rpm 6800, jump 7000, rpm
3000, weak 15, full, angle 300, off, on, sweep, rev.
3. Click the dial: a finger holds the needle. The pop-up's Tap chip knocks
the gauge.
4. Double-click M1: RANGE (e.g. 12000), REDLINE, RETURN NO.
5. The pop-up: Gauge, Graphs, Event log, Check.
WIRING (the same idea on a real gauge)
L9110S Arduino UNO / supply
B-IA, B-IB D9, D10 (PWM): the COS coil
A-IA, A-IB D5, D6 (PWM): the SIN coil
VCC 12 V (the L9110S takes 2.5 - 12 V; its inputs stay 5 V
logic), GND to the UNO's GND
Gauge L9110S
COS+ / COS- B-OA / B-OB
SIN+ / SIN- A-OA / A-OB
In the sketch (no library needed): for each coil a PWM on one input and LOW on
the other; the sign of cos / sin picks the input:
coil(cos(angle), COS_A, COS_B); // analogWrite(COS_A, |x| * 255) or (COS_B)
coil(sin(angle), SIN_A, SIN_B);
REAL HARDWARE:
* Car air-core gauges are 12 V parts with 200 - 250 ohm coils: 50 - 60 mA a
coil - an H-bridge (L9110S, L293D, L298N) or a gauge driver chip (CS4192,
CS8190); never straight from a microcontroller pin.
* Find the coils with a meter: two pairs of terminals, about 230 ohm each.
If the needle turns the wrong way, swap the two wires of one coil.
* Move the field in steps (a few degrees every 10 ms): a jump of more than
180 deg sends the magnet the short way round.
* Keep cos^2 + sin^2 near 1: the field stays the same size and the needle
equally firm all round the dial.
THE DEMO SKETCH ON THE SERIAL MONITOR (AirCore_Gauge_Demo V1.0, 9600 baud)
rpm 3500 show 3500 r/min knob follow RV1
sweep 0 - 8000 - 0 rev a blip: 900 - 6800 - 900
jump 7000 jump there at once (more than 180 deg: stuck at the pin)
angle 300 the field to 300 deg (past the scale)
weak 20 the field at 20 % full the field at 100 %
off / on the coils off (the return magnet takes the needle to 0) / on
help the list
EXPECTED MONITOR OUTPUT
Air-Core Gauge demo - The Engineering Projects
L9110S on 12 V: COS coil on motor B (D9 / D10), SIN coil on motor A (D5 / D6).
Self-test sweep, then the knob (RV1).
Commands: rpm 3500 | knob | sweep | rev | jump 7000 | angle 300 | weak 20 | full | off | on | help
Sweep done - the knob
PROPERTIES (double-click the part > Edit Properties)
RANGE r/min at the end of the 270 deg scale (2000 - 20000; default
8000 - the dial numbers in thousands)
REDLINE where the red zone starts (default 6500)
RETURN YES: the return magnet (with the coils off the needle sinks back
to 0); NO: none (default YES)
Every run starts again from the properties.
TROUBLESHOOTING
* The needle does not move (OFF): no coil current - the L9110S has no 12 V, or
its inputs are not driven.
* It points the wrong way, or turns backwards: one coil's wires are swapped,
or COS and SIN are swapped - the Check page and the field vector show it.
* It sits on the pin and will not come up (STUCK AT THE PIN): the field jumped
more than 180 deg - slew it in steps.
* It reads low and sluggish (WEAK FIELD): too little current - a low supply,
or cos / sin scaled down.
* "only the COS coil carries current": the SIN coil (or its H-bridge) is not
connected.
* The part is not simulated: TEPAIRCORE.DLL is missing from MODELS and from
the project folder. No driver: install our L9110S library (TEPL9110S.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 gauge model (TEPAIRCORE.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 automotive air-core gauge movements. 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 L9110S Motor
Driver library (TEPL9110S.LIB / TEPL9110S.DLL), is a separate download.
* 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 gauge
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\AirCore_Gauge_Demo\AirCore_Gauge_Demo.ino, select
Arduino Uno and use Sketch > Export Compiled Binary. The sketch needs 9,070
bytes of flash (28 % of the UNO) and 316 bytes of RAM.
MODEL SCOPE AND LIMITS
Modelled: the two coils (resistance, inductance, the magnet's back-EMF), the
needle's torque from the field, the fluid damping, the pivot friction, the
return magnet, the stop pin (stuck after a jump of more than 180 deg), the
weak field, the finger and the tap, the over-current and dead-coil warnings.
How it runs: each coil is in the circuit as its backward-Euler companion over
the analog step (a conductance and a source); the needle runs in 100 us steps
between the analog points, which are held to 200 us while the needle moves or
a current changes (2 ms at rest). The field and the needle's speed are judged
from the currents averaged over 10 ms (a PWM straight on the coils is felt as
its average).
Not modelled: the temperature drift of the coils and of the fluid, the
magnet's cogging, a pointer's mechanical imbalance.
VERSION
TEP Air-Core Gauge library V1.0 (Oct 2026). Device AIRCORETEP
(TEPAIRCORE.LIB / TEPAIRCORE.DLL). Demo sketch AirCore_Gauge_Demo V1.0. Demo
driver: L9110SADVTEP (TEP L9110S 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.0Air-Core Gauge 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 air-core-gauge-tep-v1-0-411a44af88874bb7b2484447d74fdf3c.zip and choose Extract All (or open it with 7-Zip or WinRAR) into a folder you can find again. Keep its folder structure (Air-Core-Gauge-TEP-v1.0) as it is.
- 2
Copy the library files into Proteus
Move ArduinoV4TEP.LIB and TEPAIRCORE.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 TEPAIRCORE.DLL and TEPARDUINO.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 AirCore_Gauge_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 AirCore_Gauge_Demo.hex and run the simulation. For real hardware, flash the same file with your programmer.
- 7
Open the example simulation
Open Air-Core-Gauge-L9110S-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
Air-Core Gauge Library for Proteus V1.0 (Arduino + L9110S) explains every connection and setting in order; keep it open beside the files while you build.
FAQs9 questionsContact TEP
How do I download Air-Core Gauge 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?
Air-Core Gauge Library for Proteus V1.0 comes as a ZIP archive of 10 files (1.2 MB, 2.6 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, a265b96ee2098eaceb5a49bbbac70ce585826fae6d3586aae5698706b8e47b72. In PowerShell run Get-FileHash "air-core-gauge-tep-v1-0-411a44af88874bb7b2484447d74fdf3c.zip"; on macOS or Linux run shasum -a 256 "air-core-gauge-tep-v1-0-411a44af88874bb7b2484447d74fdf3c.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
- 2 Nov 2026Uploaded at
a265b96ee2098eaceb5a49bbbac70ce585826fae6d3586aae5698706b8e47b72

















Comments
0