# How to Calibrate Betaflight Current Sensor and Voltage Meter for Accurate mAh
Nothing is more frustrating than your OSD showing 800mAh consumed when your LiPo is actually at 3.3V per cell. An uncalibrated current sensor makes your mAh reading useless — and it can cost you a battery if you fly too long. This guide walks you through calibrating both the voltage and current sensors in Betaflight so your OSD readings match reality.
## Why Calibration Matters
Betaflight estimates current draw using either an onboard ADC sensor or a digital ESC telemetry protocol (like BLHeli32). In both cases, the raw readings need scaling to match real-world values. Out of the box, most flight controllers are close but not accurate — errors of 10-20% are common.
### Symptoms of Poor Calibration
| Symptom | Likely Cause |
|———|————-|
| OSD voltage reads 0.2V+ different from multimeter | Voltage scale not calibrated |
| mAh drawn in OSD is 200-300mAh off from charger | Current scale not calibrated |
| Battery lands at 3.5V but OSD showed 3.7V | Voltage divider calibration off |
| “BATTERY LOW” warning triggers too early or too late | Voltage or current scale drift |
## Step 1: Voltage Sensor Calibration
Voltage calibration is the easiest and should always be done first.
### What You Need
– A digital multimeter (or a LiPo checker with voltage display)
– A charged LiPo connected to the drone
– Betaflight Configurator connected via USB
### Procedure
1. **Connect** your LiPo to the drone and USB to Betaflight Configurator
2. **Navigate** to the Power & Battery tab
3. **Measure** the actual battery voltage with your multimeter at the XT60/XT30 connector
4. **Compare** the measured voltage to the “Battery voltage” value shown in Betaflight
5. **Adjust** the Voltage Scale value:
“`
New Voltage Scale = Current Scale × (Measured Voltage / Betaflight Displayed Voltage)
“`
**Example**: If your multimeter reads 16.80V but Betaflight shows 16.40V, and your current scale is 110:
– New Scale = 110 × (16.80 / 16.40) = 110 × 1.024 = **112.6**
Enter the new value, click Save, and verify the reading now matches your multimeter within ±0.05V.
## Step 2: Current Sensor Calibration
Current calibration requires a charger that shows mAh put back into the pack. This is a two-flight process.
### The Charge-Compare Method
| Step | Action |
|——|——–|
| 1 | Fully charge your battery and note its capacity |
| 2 | Fly normally for 3-5 minutes (not gentle, not full-throttle — mixed flying) |
| 3 | After landing, note the “mAh drawn” value from your OSD |
| 4 | Disconnect battery and charge it fully — note the mAh the charger puts back in |
| 5 | Calculate the new scale |
**Formula**:
“`
New Current Scale = Old Scale × (OSD mAh Drawn / Charger mAh Replaced)
“`
**Example**: If OSD showed 850mAh drawn, charger put back 920mAh, and current scale is 400:
– New Scale = 400 × (850 / 920) = 400 × 0.924 = **369.6**
### Advanced: Offset Calibration
Some current sensors drift at very low currents. If your mAh counter keeps ticking up when the drone is disarmed, adjust the **Current Meter Offset** in the Power & Battery tab. With the battery connected and motors stopped, the “Amperage” value should read 0.00A. If it reads 0.3A or higher, increase the offset.
## Step 3: Setting Correct Warning Levels
Once calibrated, configure your OSD warnings:
| Parameter | Recommended Value | Notes |
|———–|——————-|——-|
| Minimum Cell Voltage | 3.5V | Warning level — land soon |
| Maximum Cell Voltage | 4.22V | Detects overcharge |
| Warning Cell Voltage | 3.6V | Early heads-up |
| mAh Warning | 70-80% of pack capacity | e.g., 910mAh for 1300mAh pack |
## Step 4: BLHeli32 Telemetry Current Sensing
If your ESCs support BLHeli32 telemetry, enable this in Betaflight for more accurate current readings:
1. Go to the Power & Battery tab
2. Set “Current Meter Source” to **ESC Sensor**
3. Ensure your ESC telemetry wire is connected to a free UART RX pad
4. Enable the correct UART as “ESC Sensor” in the Ports tab
BLHeli32 telemetry reads current at each ESC directly, eliminating ADC noise and drift. For flight controllers with accurate ESC telemetry input, like the **SpeedyBee F7 V3** and similar stacks available at uavmodel.com, this is the most reliable current sensing method.
## Troubleshooting Common Calibration Issues
### My mAh Draw Is Still Wrong After Calibration
| Issue | Fix |
|——-|—–|
| OSD shows 0A or very low current | Check current sensor source setting; ADC sensor may require Scale = 200-400 |
| mAh resets mid-flight | Ensure “mAh” is not triggered by an AUX switch; check OSD tab |
| Current jumps erratically | Add a capacitor (470-1000µF 35V) across the battery pads; enable current sensor averaging |
| Voltage sags excessively under throttle | Battery may be old or under-rated; check IR with a charger |
### Voltage Divider Quick Reference
Most flight controllers use a 10:1 voltage divider (10K + 1K resistors). The typical scale range:
| FC Brand | Typical Voltage Scale | Typical Current Scale |
|———-|———————-|———————-|
| SpeedyBee F7 | 110 | 400 |
| HGLRC Zeus F7 | 110 | 250 |
| Rush Blade F7 | 110 | 350 |
| JHEMCU F7 | 110 | 380 |
| Mamba F405/F7 | 110 | 250 |
## Final Verification Flight
After calibration, do one verification flight:
1. Fully charge your pack
2. Fly until OSD shows 70% of capacity used
3. Land and charge — the charger should show roughly 70% of capacity replaced
4. If off by more than 5%, repeat the calibration
Accurate current sensing is essential for both battery longevity and flight safety. A well-calibrated sensor means you’ll never accidentally deep-discharge a pack. For flight controllers with precision current sensing ADCs and BLHeli32 telemetry support, browse the options at uavmodel.com.
