Перейти к содержанию

Измерить Емкости И Индуктивности На Arduino


Рекомендуемые сообщения

Собрал на arduino uno пока только измеритель емкости

Первый опыт

скетч arduino

long t_1 = 0; // переменная для хранения времении работы программы в мкс

long t_2 = 0; // переменная для хранения времении работы программы в мкс

int vxod = 0; // здесь будет хранится переменная считанная с входа

int R = 9900; // сопротивление резистора в Омах

float C = 0; // вычесленное значение емкости

void setup()

{

pinMode(13, OUTPUT); // установка выхода 13 на выход

Serial.begin(9600); // будем записывать в COM-порт

}

void loop()

{

// блок контроля полного разряда конденсатора

digitalWrite(13, LOW);

while (analogRead (0) != 0 )

{

}

// собственно сам блок вычисления емкости в мкф

digitalWrite(13, HIGH); // +5В вольт на ножку 13

t_1 = micros(); // чтение времении от начала работы программы в мкс

while ( analogRead (0) < 647 ) // пустой цикл работает когда напряжение на ножке 0 менее 3,16 В (63,5% от 5В.)

{

}

t_2 = micros(); // чтение времении от начала работы программы в мкс

C = (t_2 - t_1) / R; // вычисление емкости в мкф.

Serial.println ( C ); // вывод значения емкости на экран

}

Снимок на экране- работа последовательного порта, конденсатор 10мкф запаралелил таким же конденсатором.

Пока не понял один момент- переменная С с плавающей запятой, а результат все время выводится - нули после запятой.

Далее найду индуктивной с известным номиналом и немного модифицирую скетч для нахождения индуктивности...

post-157642-0-97556500-1341775229_thumb.jpg

post-157642-0-39575100-1341776115_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Пользуйся Serial.println (C,2);

Что, не помогает всеравно после запятой нули.

Чуть модифицировал скетч для измерения индуктивности в мкГн.

long t_1 = 0; // переменная для хранения времении работы программы в мкс

long t_2 = 0; // переменная для хранения времении работы программы в мкс

int R = 9900; // сопротивление резистора в Омах

float L = 0; // вычесленное значение индуктивности в мкГн

void setup()

{

pinMode(13, OUTPUT); // установка выхода 13 на выход

Serial.begin(9600); // будем записывать в COM-порт

}

void loop()

{

  // блок контроля нулевого тока через резистор

  digitalWrite(13, LOW);

  while (analogRead (0) != 0 )

  {  

  }

  

  // собственно сам блок вычисления индуктивности в мкГн

  digitalWrite(13, HIGH); // +5В вольт на ножку 13

  t_1 = micros(); // чтение времении от начала работы программы в мкс

  while ( analogRead (0) < 647 ) // пустой цикл работает когда напряжение на ножке 0 менее 3,16 В (63,2% от 5В.)

  {

  }

  t_2 = micros(); // чтение времении от начала работы программы в мкс

    

  L = float(t_2 - t_1)* R/1000000; // вычисление индуктивности L.

  Serial.print("Induktivnosti katuski: ");

  Serial.print(L); // вывод значения индуктивности на экран

  Serial.print (" mkGn");

  Serial.println();

}

Постояная времени для RL цепи равна T=L/R. Она соответствует времени возрастания тока от 0 до 63,2% Imax.

Для электрической схемы это соответствует поднятие потенциала ножки A0 до 63,2% от 5В т.е. 3,16 В. для входа А0 это соответствует числу 647.

Отсюда L=T*R.

R=9900 Ом. T= t_2-t_1. Работа счетчика времени такаже как при измерении емкости.

Изменилась только формула для расчета индуктивности и добавил вывод тестовой информации.

Катушка- накрутил провод на карандаш.

l=3,5 см

D=0,85 см

w=27

При подстановке значений в формулу для расчета индуктивности (см. верхний рисунок)дает L=1,36мкГн.

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

Другие фото различные виды катушки. Обмотал скотчем катушку, чтобы она не расширялась.

post-157642-0-95405700-1341927455_thumb.jpg

post-157642-0-03594700-1341927474_thumb.jpg

post-157642-0-71378900-1341927506_thumb.jpg

post-157642-0-01615800-1341927524_thumb.jpg

post-157642-0-05759900-1341927543_thumb.jpg

post-157642-0-23334600-1341927563_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Улучшеная версия измерителя емкости (добавил вывод значения после запятой и вывод текстовой информации для удобства чтения )

скетч

long t_1 = 0; // переменная для хранения времении работы программы в мкс

long t_2 = 0; // переменная для хранения времении работы программы в мкс

int R = 9900; // сопротивление резистора в Омах

float C = 0; // вычесленное значение емкости начальная установка

void setup()

{

pinMode(13, OUTPUT); // установка выхода 13 на выход

Serial.begin(9600); // будем записывать в COM-порт

}

void loop()

{

  // блок контроля полного разряда конденсатора

  digitalWrite(13, LOW);

  while (analogRead (0) != 0 )

  {  

  }

  

  // собственно сам блок вычисления емкости в мкф

  digitalWrite(13, HIGH); // +5В вольт на ножку 13

  t_1 = micros(); // чтение времении от начала работы программы в мкс

  while ( analogRead (0) < 647 ) // пустой цикл работает когда напряжение на ножке 0 менее 3,16 В (63,5% от 5В.)

  {

  }

  t_2 = micros(); // чтение времении от начала работы программы в мкс

    

  C = float(t_2 - t_1) / R; // вычисление емкости в мкф.

  Serial.print ("Emkosti kondensatora: "); //

  Serial.print ©; // вывод значения емкости на экран

  Serial.println (" mkF"); //

}

На фото результат проверки:

1. Вставил конденсатор на 10мкФ

2. Запаралелил таким же дополнительным конденсатором.

3. Убрал дополнительный конденсатор.

post-157642-0-31275300-1341932139_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...