Skip to content

PRO TIP Block youtube.com at the DNS level — Pi-hole, NextDNS or your hosts file — but allow youtube-nocookie.com and i.ytimg.com. These tutorials keep playing; the rabbit hole does not.

Learning without distractions

Lesson: 14 – How to Improve Arduino ADC Accuracy Using LM4040 (External Voltage Reference)

1.3K views on YouTube

Lesson: 14 – How to Improve Arduino ADC Accuracy Using LM4040 (External Voltage Reference)

Hello and Welcome to Electro Nerds Academy! In our last video, we learned how to read DC voltages with Arduino. Today, we’ll test how accurate those readings are—and see how to make them better using the LM4040 precision voltage reference.

What you’ll learn in this video:
✅ Why Arduino ADC readings become inaccurate when supply voltage changes
✅ How to use USB-to-Serial module for communication between the PC and the Arduino
✅ How to install the necessary drivers for this module
✅ The role of reference voltage in Arduino’s ADC
✅ What is LM4040 module and how it works ?
✅ LM4040 pinout and reference voltages explained
✅ How the LM4040 external voltage reference improves ADC accuracy
✅ Step-by-step wiring and code explanation

This tutorial is perfect for anyone who wants to improve the precision of their Arduino projects, especially when working with sensors, data logging, and measurement systems.

Link for the USB to TTL Module drivers:
https://drive.google.com/file/d/1GA3cYv_ejqORMIytU4WjbHqhyEDhrfWi/view?usp=sharing

Arduino code from the previous video:

int adc_value;
float voltage;

void setup()
{
pinMode(A0, INPUT);
Serial.begin(9600);
}

void loop()
{
// Read normal Arduino value (assuming 5V supply)
adc_value = analogRead(A0);
voltage = adc_value * 5.0 / 1023.0;
Serial.print(“ADC-value: “);
Serial.print(adc_value);
Serial.print(“, Voltage: “);
Serial.println(voltage);

delay(500);
}

Arduino Code used in this video:

int adc_value;
float voltage;

void setup()
{
pinMode(A0, INPUT);
Serial.begin(9600);
analogReference(EXTERNAL);
for(int a = 1; a == 10; a++)
{
analogRead(A0);
}
}

void loop()
{
// Read normal Arduino value (assuming 5V supply)
adc_value = analogRead(A0);
voltage = adc_value * 4.096 / 1023.0;
Serial.print(“ADC-value: “);
Serial.print(adc_value);
Serial.print(“, Voltage: “);
Serial.println(voltage);

delay(500);
}

If you found this helpful, don’t forget to 👍 Like, 🔔 Subscribe, and Share this video with your fellow makers!

#ArduinoProjects #ElectronicsDIY #arduino #arduinotutorials #embeddedsystems #electronicsforbeginners #electronerdsacademy #arduinotutorials #ElectronicsForBeginners #arduinoprogramming #circuitbuilding #lm4040 #voltagereference #adc #accuracy