Оглавление:

Конденсаторный измеритель ATTiny85: 4 шага
Конденсаторный измеритель ATTiny85: 4 шага

Видео: Конденсаторный измеритель ATTiny85: 4 шага

Видео: Конденсаторный измеритель ATTiny85: 4 шага
Видео: Эмулятор токовой петли 4-20ma железо 2 2024, Июль
Anonim
Конденсаторный измеритель ATTiny85
Конденсаторный измеритель ATTiny85
Конденсаторный измеритель ATTiny85
Конденсаторный измеритель ATTiny85

Эта инструкция предназначена для измерителя конденсатора на базе ATTiny85 со следующими функциями.

  • На основе ATTiny85 (DigiStamp)
  • SSD1306 0,96-дюймовый OLED-дисплей
  • Измерение частоты конденсаторов малой емкости 1 пФ - 1 мкФ с помощью генератора 555
  • Измерение времени заряда конденсаторов высокой емкости 1 мкФ - 50000 мкФ
  • 2 отдельных порта, используемых для методов минимизации статической емкости
  • Два значения тока, используемые для времени зарядки, чтобы минимизировать время для больших конденсаторов
  • 555 метод обнуления при запуске, может быть повторно обнулен с помощью кнопки
  • Быстрый тест, используемый для выбора метода, который следует использовать для каждого цикла измерения.
  • Точность метода времени зарядки можно повысить за счет поддержки регулировки тактовой частоты OSCVAL.

Шаг 1: Схема и теория

Схема и теория
Схема и теория

На схеме показано, как ATTiny управляет OLED-дисплеем SSD1306 через интерфейс I2C. Он питается напрямую от литий-ионного аккумулятора емкостью 300 мАч, а в комплект входит точка зарядки, которую можно использовать с внешним зарядным устройством, совместимым с LiOn.

Первый метод измерения основан на измерении частоты автономного генератора 555. Он имеет базовую частоту, определяемую резисторами и конденсатором, которая должна иметь высокую точность, поскольку это определяет точность измерений. Я использовал конденсатор из 1% полистирола емкостью 820 пФ, но можно использовать и другие значения около 1 нФ. Значение должно быть введено в программное обеспечение вместе с оценкой любой паразитной емкости (~ 20 пФ). Это дало базовую частоту около 16 кГц. Выходной сигнал 555 подается в PB2 ATTiny, который запрограммирован как аппаратный счетчик. Частота может быть определена путем измерения счета за период около 1 секунды. Это делается при запуске для определения базовой частоты. Когда тестируемый конденсатор добавляется параллельно базовому конденсатору, частота понижается, и когда она измеряется и сравнивается с базовой частотой, можно рассчитать значение добавленной емкости.

Приятной особенностью этого метода является то, что вычисленное значение зависит только от точности базового конденсатора. Период измерения значения не имеет. Разрешение зависит от разрешения частотных измерений, которое довольно велико, поэтому можно измерить даже очень небольшую добавленную емкость. Ограничивающим фактором, по-видимому, является «частотный шум» генератора 555, который для меня эквивалентен примерно 0,3 пФ.

Этот метод можно использовать в приличном диапазоне. Чтобы улучшить диапазон, я синхронизирую период измерения с обнаружением фронтов входящих импульсов. Это означает, что даже низкочастотные колебания, такие как 12 Гц (с конденсатором 1 мкФ), измеряются точно.

Для конденсаторов большей емкости схема предназначена для использования метода синхронизации заряда. При этом тестируемый конденсатор разряжается, чтобы убедиться, что он начинается с 0, а затем заряжается через известное сопротивление от напряжения питания. АЦП в ATTiny85 используется для контроля напряжения конденсатора, и измеряется время перехода от 0% до 50% заряда. Это можно использовать для расчета емкости. Поскольку эталоном для АЦП также является напряжение питания, это не влияет на измерения. Однако абсолютная мера затраченного времени зависит от тактовой частоты ATTiny85, и ее вариации влияют на результат. Можно использовать процедуру для повышения точности этих часов с помощью регистра настройки в ATTiny85, и это будет описано позже.

Для разряда конденсатора до 0 В используется n-канальный MOSFET вместе с резистором низкого номинала для ограничения тока разряда. Это означает, что даже конденсаторы большой емкости могут быстро разряжаться.

Для зарядки конденсатора используются 2 номинала зарядного резистора. Базовое значение обеспечивает разумное время зарядки конденсаторов от 1 мкФ до примерно 50 мкФ. MOSFET с каналом p-типа используется для параллельного подключения резистора с меньшим сопротивлением, что позволяет измерять конденсаторы с более высокой номинальной стоимостью в разумный интервал. Выбранные значения дают время измерения около 1 секунды для конденсаторов емкостью до 2200 мкФ и пропорционально больше для больших значений. При нижнем конце значения период измерения должен быть достаточно длинным, чтобы можно было определить переход через 50% -ный порог с достаточной точностью. Частота дискретизации АЦП составляет около 25 мсек, поэтому минимальный период 22 мсек дает разумную точность.

Поскольку ATTiny имеет ограниченный ввод-вывод (6 контактов), выделение этого ресурса требует осторожности. 2 контакта необходимы для дисплея, 1 для входа таймера, 1 для АЦП, 1 для управления разрядкой и 1 для управления скоростью заряда. Мне нужен был кнопочный элемент управления, который позволял бы обнулить в любой момент. Это делается путем перехвата линии I2C SCL. Поскольку сигналы I2C являются сигналами с открытым стоком, электрический конфликт не возникает, если кнопка подтягивает эту линию к низкому уровню. Дисплей перестанет работать при нажатой кнопке, но это не имеет значения, так как он возобновится, когда кнопка будет отпущена.

Шаг 2: Строительство

Строительство
Строительство
Строительство
Строительство
Строительство
Строительство

Я сделал из него небольшую коробку размером 55 x 55 мм, напечатанную на 3D-принтере. В нее поместились 4 основных компонента; плата ATTiny85 DigiStamp, дисплей SSD1306, аккумулятор LiOn и небольшой кусок прототипной платы с таймером 55 и электроникой управления зарядом.

Приложение на

Необходимые детали

  • Плата ATTiny85 DigiStamp. Я использовал версию с разъемом microUSB, которая используется для загрузки прошивки.
  • SSD1306 I2C OLED-дисплей
  • Литий-ионный аккумулятор 300 мАч
  • Небольшая полоска макетной платы
  • Чип таймера CMOS 555 (TLC555)
  • n-канальный полевой МОП-транзистор AO3400
  • p-канальный полевой МОП-транзистор AO3401
  • Резисторы 4R7, 470R, 22K, 2x33K
  • Конденсаторы 4у7, 220у
  • Прецизионный конденсатор 820 пФ 1%
  • Миниатюрный ползунковый переключатель
  • 2 x 3-контактных разъема для порта зарядки и измерительных портов
  • Нажать кнопку
  • Вложение
  • Подключите провод

Необходимые инструменты

  • Паяльник с мелким наконечником
  • Пинцет

Сначала соберите схему таймера 555 и зарядные компоненты на макетной плате. Добавьте гибкие выводы для внешних подключений. Закрепите ползунковый переключатель, точку зарядки и измерительный порт в корпусе. Прикрепите аккумулятор и подключите основную силовую проводку к точке зарядки, сдвиньте переключатель. Подключите заземление к кнопке. Прикрепите ATTiny85 на место и завершите подключение.

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

www.instructables.com/Reducing-Sleep-Curre…

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

Шаг 3: Программное обеспечение

Программное обеспечение для этого измерителя конденсатора можно найти на сайте

github.com/roberttidey/CapacitorMeter

Это скетч на основе Arduino. Ему нужны библиотеки для дисплея и I2C, которые можно найти по адресу

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Они оптимизированы для ATTiny, чтобы занимать минимум памяти. Библиотека I2C - это высокоскоростной метод битового взрыва, который позволяет использовать любые 2 контакта. Это важно, поскольку методы I2C, использующие последовательный порт, используют PB2, что противоречит использованию входа таймера / счетчика, необходимого для измерения частоты 555.

Программное обеспечение построено вокруг конечного автомата, который выполняет измерения через цикл состояний. ISR поддерживает переполнение счетчика таймера для расширения 8-битного оборудования. Второй ISR поддерживает работу АЦП в непрерывном режиме. Это дает самый быстрый ответ на переход схемы зарядки через пороговое значение.

В начале каждого цикла измерения функция getMeasureMode определяет, какой метод наиболее подходящий для каждого измерения.

Когда используется метод 555, отсчет времени начинается только после изменения счетчика. Точно так же отсчет времени останавливается только после номинального интервала измерения и при обнаружении фронта. Эта синхронизация позволяет точно рассчитать частоту даже для низких частот.

Когда программное обеспечение запускается, первые 7 измерений являются «циклами калибровки», используемыми для определения базовой частоты 555 без добавленного конденсатора. Усредняются последние 4 цикла.

Имеется поддержка настройки регистра OSCAL для настройки часов. Я предлагаю сначала установить для OSCCAL_VAL значение 0 в верхней части скетча. Это означает, что заводская калибровка будет использоваться до выполнения настройки.

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

Если для методов заряда используются разные резисторы, то значения CHARGE_RCLOW и CHARGE_RCHIGH в программном обеспечении также необходимо будет изменить.

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

Шаг 4: Эксплуатация и расширенная калибровка

Операция очень проста.

После включения устройства и ожидания завершения калибровки нуля подключите тестируемый конденсатор к одному из двух измерительных портов. Используйте порты 555 для конденсаторов малой емкости <1 мкФ и порт зарядки для конденсаторов более высокой емкости. Для электролитических конденсаторов подключите отрицательную клемму к общей точке заземления. Во время тестирования конденсатор будет заряжен примерно до 2 В.

Порт 555 можно сбросить на нуль, удерживая кнопку примерно на 1 секунду и отпуская. Убедитесь, что для этого к порту 555 ничего не подключено.

Расширенная калибровка

Метод зарядки основан на абсолютной тактовой частоте ATTiny85 для измерения времени. В часах используется внутренний RC-генератор, обеспечивающий номинальную тактовую частоту 8 МГц. Хотя стабильность генератора неплохая для колебаний напряжения и температуры, его частота может отличаться на несколько процентов, даже если он откалиброван на заводе. Эта калибровка устанавливает регистр OSCCAL при запуске. Заводскую калибровку можно улучшить, проверив частоту и сделав более оптимальную настройку значения OSCCAL, подходящую для конкретной платы ATTiny85.

Мне пока не удалось внедрить в прошивку более автоматический метод, поэтому я использую следующую ручную процедуру. Возможны два варианта в зависимости от доступных внешних измерений; либо частотомер, способный измерять частоту треугольной формы волны на порте 555, либо источник прямоугольной волны известной частоты, например 10 кГц с уровнями 0 В / 3,3 В, которые могут быть подключены к порту 555 и переопределить форму волны, чтобы принудительно ввести эту частоту в счетчик. Я использовал второй способ.

  1. Запустите счетчик на обычном питании без подключенных конденсаторов.
  2. Подключите частотомер или генератор прямоугольных сигналов к порту 555.
  3. Перезапустите цикл калибровки, нажав кнопку.
  4. В конце цикла калибровки на дисплее будет отображаться частота, определенная счетчиком, и текущее значение OSCCAL. Обратите внимание, что при повторном использовании цикла калибровки будет происходить переключение между отображением измеренной частоты и нормальным отсутствием отображения.
  5. Если отображаемая частота меньше известной, это означает, что тактовая частота слишком высока, и наоборот. Я обнаружил, что приращение OSCCAL регулирует часы примерно на 0,05%.
  6. Вычислите новое значение OSCCAL, чтобы улучшить часы.
  7. Введите новое значение OSCCAL в OSCCAL_VAL в верхней части прошивки.
  8. Пересоберите и загрузите новую прошивку. Повторите шаги 1–5, которые должны показать новое значение OSCCAL и новое измерение частоты.
  9. При необходимости повторите шаги еще раз до достижения наилучшего результата.

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

Рекомендуемые: