Найти в Дзене
MyOwnDevice

Насколько точно измеряет напряжение твой микроконтроллер

У меня, как и у многих других, для измерений есть такой вот мультиметр:

Стоит недорого, меряет все точно. Чего ещё нужно?

Появилась задача — с помощью микроконтроллера измерить уровень питающего напряжения. Тоже не сложно. На борту есть ADC модуль (сам МК STM32F030). Делаем резисторный делитель, чтобы привести в соответствие измеряемое напряжение с диапазоном измерения модуля ADC и получаем нужное значение. Интересное началось тогда, когда я получил готовые цифры.

Итак, входное напряжение, которое будет измерять микроконтроллер — аккумулятор 18В. Напряжение питания 3.3В. Разрешение ADC модуля — 12бит. Резисторный делитель на входе 1kOm к 10kOm, получается коэффициент деления в 11 раз. Попробуем посчитать погрешность измерения напряжения микроконтроллером. Разрешение ADC с таким резисторным делителем составляет 8мВ. Берем datasheet и смотрим точность нашего ADC.

-2

Максимальная ошибка 4 единицы — то есть +/- 32 мВ для нашего случая. Неплохая точность, но еще есть делитель. К сожалению, резисторы обычно в арсенале обычные, а не точные, поэтому у них сопротивление гуляет +/- 5%. Ошибка сильно растет (резисторов то два) до +/- 1.6В. Есть еще ошибка по питанию МК, а значит и модуля ADC. Например, если у нас регулятор питания ncp603, то он выдает 3.3в с точностью 2%.

-3

Это еще добавляет нам погрешности. Получаем +/- 1.9В. Никуда не годится. Хотелось бы точнее. Резисторный делитель можно просчитать более точно, если иметь точный вольтметр. Он же у нас есть — китайский мультиметр. Меряем им напряжение 18.14В. Отлично, измеряем через МК — 17.352В. Корректируем. А на сколько же точный сам мультиметр? Лезем в инструкцию.

-4

И видим, в диапазоне до 20В погрешность составляет +/- 120мВ. Не очень точно. Если убрать погрешность в делителе и снизить погрешность питания от 3.3в (ниже будет описано как это сделать), то от МК можно добиться точности +/-70мВ. Но если пользоваться этим мультиметром, то добавится еще его 120мВ и будет больше 200мВ. Вывод - откалибровать по такому мультиметру не получится. Чем же точно измерить напряжение?

На помощь приходит вот такая микросхема: MCP3421 — внешний ADC, со встроенным прецизионным источником питания. На сайте этого канала вы можете найти приборы на его основе — паяльная станция и измеритель УФ излучения, в них он используется для измерения температуры термопары.

Смотрим его datasheet и видим:

-5

0.05% точность — это очень точно. В диапазоне до 2.048 вольт — это составляет 1мв. Получить данные с него совсем не сложно. Никаких погрешностей при получении данных — все передаётся в цифровом виде по протоколу I2C. Можно собрать совсем простой прибор — индикатор 3 цифры светодиодный, микроконтроллер и данный ADC. Данные можно выдавать попеременно — сначала целая часть, потом дробная часть. Питание аккумуляторное или от батареек.

Теперь измеряем пальчиковую батарейку — 1.5В с помощью этого ADC с точностью до 1мВ и нашим микроконтроллером и корректируем коэффициенты резисторного делителя. Снижаем дрейф в питании микроконтроллера за счёт использования встроенного в STM32 внутреннего референсного источника питания — его точность 0.3% при комнатной температуре.

-6

После всех правок и корректировок обычный МК с обычными резисторами точно измеряет напряжение! Получилось +/- 70мВ в диапазоне до 20В. Желаю и вам точных измерений!

Подписывайтесь на канал. Заходите на сайт. Делайте дома только точную и качественную электронику.