Mlx90614 Proteus Library
The MLX90614 is a high-precision, non-contact infrared (IR) thermometer sensor widely used for medical, industrial, and automotive temperature monitoring. Integrating it into a Proteus simulation allows developers to test I2C communication and temperature logic before moving to physical hardware. Overview of the MLX90614 Sensor
The MLX90614 operates by detecting infrared energy emitted by an object and converting it into a digital temperature reading.
Communication Protocol: Uses SMBus, which is highly compatible with the I2C standard used by Arduino and other microcontrollers.
Measurement Range: Typically measures object temperatures from to with a high accuracy of in the medical range.
Pinout: Consists of four main pins: VCC (Power), GND (Ground), SCL (Serial Clock), and SDA (Serial Data). Integrating the MLX90614 Library in Proteus
Since Proteus does not include every specialized sensor by default, you must manually add the library files to the software's directory.
Download the Library: Locate a specialized IR sensor library for Proteus, such as those provided by The Engineering Projects.
Add Library Files: Extract the downloaded folder to find three essential files: .LIB, .IDX, and sometimes .HEX. Install to Proteus Directory:
Navigate to your Proteus installation folder (usually C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\Data\LIBRARY).
Paste the extracted .LIB and .IDX files into this LIBRARY folder.
Restart Proteus: Close and reopen the software to refresh the component database.
Search and Place: In the "Pick Devices" window (press 'P'), search for "MLX90614" or "Infrared Sensor" to add it to your schematic. Simulating with Arduino mlx90614 proteus library
To make the sensor functional in your simulation, you must provide it with firmware.
Arduino IDE Library: Install the Adafruit MLX90614 Library via the Arduino Library Manager to simplify coding.
Generate HEX File: Write your sketch in the Arduino IDE and click "Verify" to compile it. This generates a .HEX file in a temporary folder.
Upload to Proteus: Double-click the Arduino board in your Proteus schematic, click the folder icon next to Program File, and select your generated .HEX file. Typical Applications Medical: Non-contact forehead thermometers.
Industrial: Monitoring moving machine parts where contact sensors are impractical.
Automotive: Real-time monitoring of engine or tire temperatures. MLX90614 IR Thermometer Driver Library for Arduino - GitHub
This report details the integration of the MLX90614 Infrared (IR) Thermometer into Proteus for circuit simulation. Since the MLX90614 is not a built-in component in standard Proteus libraries, it requires custom library files and an I2C-compatible microcontroller (like Arduino) for operation. 1. Component Overview: MLX90614
The MLX90614 is a non-contact IR sensor used for remote temperature measurement. Measurement Range: Typically -70∘Cnegative 70 raised to the composed with power C +380∘Cpositive 380 raised to the composed with power C for object temperature and -40∘Cnegative 40 raised to the composed with power C +125∘Cpositive 125 raised to the composed with power C for ambient temperature. Accuracy: Approximately
±0.5∘Cplus or minus 0.5 raised to the composed with power C at room temperature.
Communication: Uses the SMBus (I2C) protocol for digital data output. Pinout: VCC: Power (3.3V or 5V depending on model). GND: Ground. SCL: Serial Clock for I2C communication. SDA: Serial Data for I2C communication. 2. Proteus Library Installation
Because Proteus does not include the MLX90614 by default, you must download a third-party library (often provided by sites like The Engineering Projects or GitHub). Installation Steps: Download: Obtain the .LIB and .IDX files for the MLX90614. The MLX90614 is a high-precision, non-contact infrared (IR)
Locate Library Folder: Go to your Proteus installation directory (e.g., C:\ProgramData\Labcenter Electronics\Proteus 8 Professional\LIBRARY).
Paste Files: Copy and paste the downloaded files into this folder.
Restart Proteus: Restart the software to refresh the component list. 3. Firmware Integration (Arduino)
To read the sensor values in simulation, you need an Arduino library to handle the I2C communication. Testing MLX90614 and setting up it with other I2C sensors
is a contactless infrared (IR) thermometer sensor. Since it is not a native component in the standard Proteus Design Suite
library, you must install an external third-party library to simulate its behavior. 1. Library Overview Third-party libraries, often provided by resources like The Engineering Projects , typically consist of three critical files:
: Contains the electrical and symbolic data for the component.
: An index file that allows Proteus to search for the component in the "Pick Devices" window.
: (Optional but common) The simulation model that defines how the sensor reacts to inputs (e.g., changes in temperature via a "Test Pin"). 2. Installation Guide
To add the MLX90614 sensor to your Proteus environment, follow these steps: Download and Extract
: Obtain the library zip folder and extract it to your desktop. You should see the , and possibly Locate Proteus Library Folder Proteus 8.x : Typically found at Open Proteus ISIS
C:\ProgramData\Labcenter Electronics\Proteus 8 Professional\Data\LIBRARY Proteus 7.x : Usually at
C:\Program Files (x86)\Labcenter Electronics\Proteus 7 Professional\LIBRARY Copy and Paste : Move the files from your download into this Restart Proteus
: Close any running instances of Proteus and reopen them to refresh the component database. 3. Simulation Components
When using the MLX90614 in a circuit, you will typically interface it with a microcontroller like an Arduino Uno
How to Add Arduino UNO Library to Proteus | Step-by-Step Guide
Part 3: Adding MLX90614 to Your Schematic
- Open Proteus ISIS.
- Click "P" (Pick Devices) from the component toolbar.
- In the Keywords field, type:
MLX90614 - You should see
MLX90614TEP(or similar). Double-click to add it to your parts list. - Place the component on the schematic.
1. The Sensor
The MLX90614 is an infrared thermometer for non-contact temperature measurements. It communicates via I2C (SMBus), making it perfect for Arduino, PIC, or STM32 projects.
4.1 Code Logic
The firmware must perform the following steps:
- Initialize the I2C/SMBus interface.
- Send a "Start" condition.
- Send the device address (Default:
0x5Afor write,0x5Bfor read depending on library implementation). - Send the command for the register to be read (e.g.,
0x07for Object Temperature). - Read the returned 16-bit data.
- Calculate temperature using the sensor's sensitivity coefficient.
Double-click the component to view:
- Ambient Temperature (
TA): Default 25°C. The library will return this when reading RAM address0x06. - Object Temperature (
TOBJ1): Default 25°C. Returns at address0x07. - I2C Slave Address: Usually
0x5A(binary 1011010). Real sensors can be changed to0x5Bby bridging theADDRpin to VDD. - Emissivity Setting: Usually fixed at
0xFFFF(1.00) in basic libraries, but advanced models allow adjustment (Range: 0.1 to 1.0).
Pro Tip: To simulate a fever detection system, set TOBJ1 to 38.0°C and TA to 22.0°C. During simulation, your code will read this difference.
3. Hardware Schematic Design
A functional simulation requires a specific circuit topology. The MLX90614 utilizes an open-drain interface; therefore, pull-up resistors are mandatory for the SCL and SDA lines.
Recommended Circuit Setup:
- Microcontroller: An Arduino UNO (Atmega328P) or PIC microcontroller is commonly used in Proteus simulations.
- Pull-up Resistors: Connect two 4.7kΩ resistors. One connects SCL to VDD, and the other connects SDA to VDD.
- Power Supply: Connect VDD to 5V (or 3.3V depending on simulation parameters) and VSS to Ground.
- Interfacing: Connect SCL to the microcontroller's SCL pin (e.g., Analog Pin A5 on Arduino UNO) and SDA to the SDA pin (e.g., Analog Pin A4 on Arduino UNO).
4. Library Elements
- Schematic symbol: 6-pin symbol with pin names and I2C labels.
- PCB footprint: SOT-23-6 pad layout, mechanical dimensions per datasheet.
- Attributes: default I2C address (0x5A), VDD range, current consumption, emissivity.