Схема цифрового измерителя емкости с использованием Arduino

Попробуйте наш инструмент устранения неполадок





В этой статье мы собираемся построить схему цифрового измерителя емкости с использованием Arduino, которая может измерять емкость конденсаторов в диапазоне от 1 до 4000 микрофарад с разумной точностью.



Вступление

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

Чтобы определить емкость, мы можем легко измерить ее с помощью цифрового мультиметра, но не все мультиметры имеют функцию измерения емкости, и только дорогие мультиметры имеют эту функцию.



Итак, вот схема, которую можно легко построить и использовать.

Мы ориентируемся на конденсаторы с большей емкостью от 1 мкФ до 4000 мкФ, которые склонны терять свою емкость из-за старения, особенно электролитические конденсаторы, которые состоят из жидкого электролита.

Прежде чем переходить к деталям схемы, давайте посмотрим, как мы можем измерить емкость с помощью Arduino.

Большинство измерителей емкости Arduino используют свойство постоянной времени RC. Так что же такое постоянная времени RC?

Постоянная времени RC-цепи может быть определена как время, за которое конденсатор достигает 63,2% от полного заряда. Нулевое напряжение - это 0% заряда, а 100% - это полный заряд конденсатора.

Произведение значения резистора в омах на значение конденсатора в фарадах дает постоянную времени.

Т = R x C

T - постоянная времени

Изменив приведенное выше уравнение, мы получим:

C = T / R

C - неизвестное значение емкости.

T - постоянная времени RC-цепи, которая составляет 63,2% от полного заряда конденсатора.

R - известное сопротивление.

Arduino может определять напряжение через аналоговый вывод, и известное значение резистора можно ввести в программу вручную.

Применяя в программе уравнение C = T / R, мы можем найти неизвестное значение емкости.

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

В этом посте я предложил два типа измерителей емкости: один с ЖК-дисплеем, а другой с последовательным монитором.

Если вы часто пользуетесь этим измерителем емкости, лучше выбрать дизайн ЖК-дисплея, а если вы не частый пользователь, лучше выбрать дизайн монитора с последовательным подключением, потому что это сэкономит вам немного денег на ЖК-дисплее.

Теперь перейдем к принципиальной схеме.

Измеритель емкости на базе последовательного монитора:



Как вы можете видеть, схема очень проста: для определения неизвестной емкости требуется пара резисторов. 1 кОм - это известное значение резистора, а резистор 220 Ом используется для разряда конденсатора во время процесса измерения. Arduino распознает повышение и понижение напряжения на выводе A0, который подключен между резисторами 1 кОм и 220 Ом. Пожалуйста, соблюдайте полярность, если вы используете поляризованные конденсаторы, например, электролитические. Программа:
//-----------------Program developed by R.Girish------------------//
const int analogPin = A0
const int chargePin = 7
const int dischargePin = 6
float resistorValue = 1000 // Value of known resistor in ohm
unsigned long startTime
unsigned long elapsedTime
float microFarads
void setup()
{
Serial.begin(9600)
pinMode(chargePin, OUTPUT)
digitalWrite(chargePin, LOW)
}
void loop()
{
digitalWrite(chargePin, HIGH)
startTime = millis()
while(analogRead(analogPin) <648){}
elapsedTime = millis() - startTime
microFarads = ((float)elapsedTime / resistorValue) * 1000
if (microFarads > 1)
{
Serial.print('Value = ')
Serial.print((long)microFarads)
Serial.println(' microFarads')
Serial.print('Elapsed Time = ')
Serial.print(elapsedTime)
Serial.println('mS')
Serial.println('--------------------------------')
}
else
{
Serial.println('Please connect Capacitor!')
delay(1000)
}
digitalWrite(chargePin, LOW)
pinMode(dischargePin, OUTPUT)
digitalWrite(dischargePin, LOW)
while(analogRead(analogPin) > 0) {}
pinMode(dischargePin, INPUT)
}
//-----------------Program developed by R.Girish------------------//

Загрузите приведенный выше код в Arduino с завершенной настройкой оборудования, сначала не подключайте конденсатор. Откройте серийный монитор, он говорит: «Подключите конденсатор».

Теперь подключите конденсатор, его емкость будет отображаться, как показано ниже.

Он также показывает время, необходимое для достижения 63,2% напряжения полной зарядки конденсатора, которое отображается как прошедшее время.

Цифровой измеритель емкости с использованием Arduino

Принципиальная схема емкостного измерителя на ЖК-дисплее:

Вышеупомянутая схема представляет собой соединение между ЖК-дисплеем и Arduino. Потенциометр 10K предназначен для регулировки контрастности дисплея. Остальные соединения говорят сами за себя.

Вышеупомянутая схема точно такая же, как и у последовательного монитора, вам просто нужно подключить ЖК-дисплей.

Программа для измерителя емкости на ЖК-дисплее:

//-----------------Program developed by R.Girish------------------//
#include
LiquidCrystal lcd(12,11,5,4,3,2)
const int analogPin = A0
const int chargePin = 7
const int dischargePin = 6
float resistorValue = 1000 // Value of known resistor in ohm
unsigned long startTime
unsigned long elapsedTime
float microFarads
void setup()
{
Serial.begin(9600)
lcd.begin(16,2)
pinMode(chargePin, OUTPUT)
digitalWrite(chargePin, LOW)
lcd.clear()
lcd.setCursor(0,0)
lcd.print(' CAPACITANCE')
lcd.setCursor(0,1)
lcd.print(' METER')
delay(1000)
}
void loop()
{
digitalWrite(chargePin, HIGH)
startTime = millis()
while(analogRead(analogPin) <648){}
elapsedTime = millis() - startTime
microFarads = ((float)elapsedTime / resistorValue) * 1000
if (microFarads > 1)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Value = ')
lcd.print((long)microFarads)
lcd.print(' uF')
lcd.setCursor(0,1)
lcd.print('Elapsed:')
lcd.print(elapsedTime)
lcd.print(' mS')
delay(100)
}
else
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Please connect')
lcd.setCursor(0,1)
lcd.print('capacitor !!!')
delay(500)
}
digitalWrite(chargePin, LOW)
pinMode(dischargePin, OUTPUT)
digitalWrite(dischargePin, LOW)
while(analogRead(analogPin) > 0) {}
pinMode(dischargePin, INPUT)
}
//-----------------Program developed by R.Girish------------------//

После завершения настройки оборудования загрузите приведенный выше код. Первоначально не подключайте конденсатор. На дисплее отображается «Подключите конденсатор !!!» теперь вы подключаете конденсатор. На дисплее будет отображаться емкость конденсатора и время, необходимое для достижения 63,2% полной зарядки конденсатора.

Авторский прототип:




Предыдущая статья: Схема тахометра Arduino для точных показаний Далее: Как управлять серводвигателем с помощью джойстика