Простой ESR — метр (Arduino)

ESR — Equivalent Series Resistance – параметр конденсатора, который показывает активные потери в цепи переменного тока. В эквиваленте его можно представить, как включенный последовательно с конденсатором резистор, сопротивление которого определяется, главным образом, диэлектрическими потерями, а так же сопротивлением обкладок, внутренних контактных соединений и выводов конденсатора. Чем меньше значение ESR (Ом), тем лучшего качества конденсатор. Как правило параметр ESR очень актуален для электролитических конденсаторов емкостью свыше 4,7 мкФ.

На рисунке показана схема простого ESR — метра, уст-во основано на платформе Arduino и содержит минимальный набор внешних элементов, прост в сборке и настройке. Прибор может измерять ESR электролитических конденсаторов до 5 Ом.

Для упрощения схемы используется 18-битный АЦП MCP3421 подключенный к Arduino через шину I2C. Измерение ESR производится на частоте 100 кГц подаваемое с выхода D9 Adruino.

Перед как пользоваться прибором его необходимо откалибровать, так как у меня в наличии не было конденсаторов с известным значением ESR, то пришлось откалибровать прибор при помощи эталонных сопротивлений, методика калибровки ESR-метра при помощи сопротивлений является спорной, но других вариантов у меня нет.

Библиотека — https://github.com/liman324/MCP3421.git

datasheet — MCP3421.pdf

#include <Wire.h>
#include <MCP3421.h>
#include <LiquidCrystal.h>
  MCP3421 mcp;
  LiquidCrystal lcd(7, 8, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
 
  long dig;
  float u;
  const float u0=0.075;// калибровка нуля
  const float call= 2.84;// калибровка диапазона
 void setup(){
    pinMode(9,OUTPUT); // ВЫХОД СИГНАЛА
    TCCR1A = 0x40;TCCR1B = 0x09;OCR1A = 79;
     Serial.begin(9600);Wire.begin();
  mcp.setConfig(3,0); // 12 14 16 18 bit - 0-3 // 1x 2x 4x 8x gain - 0-3
 }
 
 void loop(){
  dig = mcp.readWire();
 u = dig * 2.048 /131071;
 Serial.print(dig);
 Serial.print("  ");
 Serial.print(u,3);
 Serial.print("  ");
 Serial.println((u-u0)*call,3);
 lcd.setCursor(1,0);lcd.print("ESR = ");lcd.print((u-u0)*call,3);lcd.print(" Om ");
 delay(1000);
 }

Калибровка:

  • Замкните вход прибора перемычкой, откройте монитор порта и укажите в переменной const float u0 


  • Далее возьмите сопротивление номиналом 1 Ом и измерьте его сопротивление при помощи ESR-метра, при необходимости измените значение переменной  const float call

На этом калибровка закончена, можно проверить линейность измерения сопротивления при помощи другого резистора.

Измерение сопротивления 0,1 Ом

Далее можно проводить измерения, руководствуясь данной таблицей

Результаты измерений

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=71

Добавить комментарий

Войти с помощью: