Expressed in SI base units, a volt is one kilogram meter squared per ampere second cubed (kg⋅m²⋅A⁻¹⋅s⁻³), representing the mechanical power required to push one ampere of current through a resistance. Understanding this dimensional breakdown changes how you debug electromechanical systems by forcing you to track energy transfer across physical domains, rather than just looking at isolated electrical numbers. The most common confusion makers face is treating the volt purely as an electrical potential (a derived unit) and forgetting that it inherently contains mechanical base units (mass, length, time), which leads to scaling errors when mapping sensor data to physical work or energy.
The Dimensional Breakdown: Why kg⋅m²/(A⋅s³) Matters
To understand the volt at a foundational level, we have to look at how it is derived from mechanical work and electrical charge. By definition, one volt is one joule of energy per coulomb of charge (V = J/C).
According to the National Institute of Standards and Technology (NIST), the joule (energy) breaks down into base units as kg⋅m²/s². The coulomb (charge) breaks down into A⋅s (amperes times seconds). When you divide the two, the seconds in the denominator multiply, yielding the final SI base unit expression for the volt:
1 V = 1 J / 1 C
1 V = (1 kg⋅m² / s²) / (1 A⋅s)
1 V = kg⋅m²⋅A⁻¹⋅s⁻³
Why does this matter on the workbench? Because when you are writing firmware for an ESP32 or Arduino to read a sensor that bridges the electrical and mechanical worlds—like a load cell, a motor encoder, or a shunt resistor—you are implicitly performing dimensional analysis. If your code's math doesn't balance these base units, your sensor scaling will drift, and your physical measurements will be garbage.
Worked Numeric Example: Stepper Motor Back-EMF
Let’s apply this to a real bench scenario. You are testing a NEMA 17 stepper motor driven by a TMC2209 silent stepstick. You want to estimate the mechanical load on the motor by reading its back-electromotive force (back-EMF) via an analog pin, without using a physical encoder.
You measure a back-EMF of 2.4V while the driver is supplying a current of 0.5A.
- Electrical view: Power (P) = V × I = 2.4V × 0.5A = 1.2 Watts.
- SI Base Unit view: We know 1 Watt is 1 Joule per second (kg⋅m²/s³). Let's verify this using our volt base units.
Voltage: 2.4 kg⋅m²⋅A⁻¹⋅s⁻³
Current: 0.5 A⋅s⁻¹ (since Amperes are a base unit, and we are looking at the rate of charge flow per second for power calculation, though strictly I is just A. Let's stick to P = V × I).
P = (2.4 kg⋅m²⋅A⁻¹⋅s⁻³) × (0.5 A)
The Amperes cancel out: P = 1.2 kg⋅m²⋅s⁻³.
The result is exactly 1.2 Watts (kg⋅m²/s³). By tracking the SI base units, you can mathematically prove that the electrical potential (Volts) multiplied by the current (Amperes) perfectly resolves into the mechanical base units of power. If your ESP32 C++ code attempts to calculate mechanical torque from this value but fails to account for the time cubed (s⁻³) in the denominator, your dimensional analysis will flag the error before you ever wire up the motor.
Where You Meet This in Practice
You rarely calculate kg⋅m²⋅A⁻¹⋅s⁻³ by hand, but the implications of this unit breakdown dictate how you design and debug three common maker scenarios:
1. ESP32 ADC Scaling and Non-Linearity
When mapping a 12-bit ADC read (0-4095) to Volts, you are converting a dimensionless integer into kg⋅m²⋅A⁻¹⋅s⁻³. The Espressif ESP32 ADC documentation explicitly warns that the raw ADC is non-linear. If you use a simple linear map voltage = adc_raw * (3.3 / 4095), your derived Volts will be wrong, which cascades into wrong Joules and wrong mechanical calculations. Always use analogReadMilliVolts() in ESP-Arduino core v2.0+, which applies the factory-calibrated lookup table to ensure your base unit derivation starts from an accurate electrical potential.
2. Transimpedance Amplifiers (Current to Voltage)
When building a photodiode circuit or a precision shunt monitor, you use a transimpedance amplifier to convert current (A) into voltage (V). The feedback resistor (R) dictates this. Since V = I × R, and we know V contains kg⋅m²⋅A⁻¹⋅s⁻³, the resistor must inherently carry the base units of kg⋅m²⋅A⁻²⋅s⁻³ (which is the Ohm). If you select a 1% tolerance resistor but ignore its temperature coefficient (ppm/°C), the physical dimensions of your resistance will shift under thermal load, corrupting your volt derivation.
3. Battery Coulomb Counting
Coulomb counting integrates current over time to find charge (A⋅s). To find total energy capacity (Watt-hours), you must multiply by voltage. If your voltage sags under load (due to internal resistance), the kg⋅m²⋅A⁻¹⋅s⁻³ value drops. A robust battery management system (BMS) algorithm must sample both V and I simultaneously to calculate the true instantaneous energy transfer.
Decision Tree: Selecting Your Measurement Hardware
When your project requires crossing the boundary between electrical potential (Volts) and physical/mechanical domains, choosing the right sensor IC is critical. Use this decision path to select your hardware.
| If your physical domain is... | And you need to measure... | Then choose this architecture... | Concrete Part Pick |
|---|---|---|---|
| Mechanical Force / Strain | mV/V ratio from a Wheatstone bridge | 24-bit Sigma-Delta ADC with programmable gain | HX711 (Avia Semiconductor) |
| High-Side DC Power / Solar | Simultaneous V, I, and Power (W) | I2C Digital Power Monitor with internal shunt | INA260 (Texas Instruments / Adafruit 3350) |
| AC Mains / Motor Back-EMF | Isolated AC/DC current without a shunt | Hall-effect sensor with galvanic isolation | ACS712 (Allegro MicroSystems) 20A variant |
| Ultra-Low Light / Photodiode | picoAmps to Volts (Transimpedance) | Precision Op-Amp with low input bias current | OPA129 (Texas Instruments) |
Frequently Asked Questions
Why not just use Ohm's Law (V = I × R) instead of base units?
Ohm’s Law is perfectly fine for purely resistive DC circuits. However, Ohm's Law falls apart when you introduce time-varying magnetic fields (inductors, motors) or mechanical coupling (piezoelectric sensors, strain gauges). Expressing the volt in SI base units allows you to perform dimensional analysis across these mixed domains, ensuring your firmware's math remains physically valid when energy changes forms.
Did the 2019 SI redefinition change the volt's base units?
No. In 2019, the SI system was redefined to tie base units to fundamental constants (like the Planck constant and the elementary charge). While the realization of the volt in high-end metrology labs now relies on the Josephson effect (using superconducting junctions and microwave frequencies), the dimensional formula (kg⋅m²⋅A⁻¹⋅s⁻³) remains exactly the same. For DIY and engineering purposes, your math and sensor scaling do not need to change.
How do I handle the 'seconds cubed' (s⁻³) in my Arduino code?
You don't code 's⁻³' directly. Instead, you manage it by ensuring your sampling rate is strictly controlled. Power (Watts) is Joules per second. If your ESP32 samples a sensor every 10 milliseconds (0.01s), you must multiply your instantaneous power reading by 0.01 to get the energy (Joules) consumed in that interval. Failing to account for the time delta (the 's' in your base units) is the number one reason battery capacity estimators drift over time.






