Какая минимальная ёмкость может быть измерена Arduino
Это отличный вопрос, поскольку он выявляет ограничения метода измерения ёмкости с помощью Arduino.
И с этим однозначно стоит разобраться.
А уже в следующей статье разберёмся какие есть возможности расширить этот диапазон измерений используя ту же Arduino или подобные микроконтроллеры. Задействовал уже внутренние скрытые возможности контроллера
С помощью предложенной схемы и кода из предыдущей статьи:
минимальная измеряемая ёмкость сильно зависит от нескольких факторов:
- Точность функции
micros()
:- На Arduino Nano (и Uno), который работает на тактовой частоте 16 МГц, функция
micros()
имеет разрешение 4 микросекунды (мкс). Это означает, что она возвращает значения, кратные 4. Вы не можете измерить задержку в 1, 2 или 3 мкс. - Следовательно, минимальное «различимое» время зарядки/разрядки, которое может зафиксировать Arduino, составляет 4 мкс.
- На Arduino Nano (и Uno), который работает на тактовой частоте 16 МГц, функция
- Номинал резистора (R):
- Формула: C=τ/R.
- Если минимальное τ (время) равно 4 мкс, то для определения минимальной измеряемой ёмкости нам нужно выбрать максимально большой резистор, который при этом будет практичен и не будет сильно подвержен внешним наводкам.
- Предположим, мы используем резистор 1 МОм (1000 кОм).
- Тогда минимальная ёмкость = 4 мкс/1000 кОм=4 нс=0.004 нФ=4 пФ (пикофарада).
- Однако, использование таких больших резисторов (МОм) для очень маленьких ёмкостей приводит к другим проблемам (см. ниже).
- Паразитная (собственная) ёмкость:
- Сама схема (провода, входной пин Arduino, макетная плата) имеет собственную паразитную ёмкость, которая может составлять от нескольких пикофарад (пФ) до десятков пФ.
- Когда вы пытаетесь измерить конденсатор, ёмкость которого соизмерима или меньше этой паразитной ёмкости, показания будут сильно искажены. Например, если паразитная ёмкость 20 пФ, а вы пытаетесь измерить 10 пФ, вы увидите что-то около 30 пФ.
- Аналогово-цифровой преобразователь (АЦП):
- Разрешение АЦП Arduino составляет 10 бит (0-1023). Этого обычно достаточно для измерения напряжения, но на очень малых ёмкостях время изменения напряжения может быть настолько коротким, что АЦП не успеет его точно отследить или шум будет слишком велик.
Практический минимум:
Учитывая вышеизложенное, на практике с помощью простой RC-схемы и Arduino можно надежно измерять ёмкости:
- Минимально надёжно: Обычно это около 100 пФ (0.1 нФ).
- С некоторым допуском и осторожностью: Возможно измерение от 50 пФ.
- Для ёмкостей ниже 50 пФ точность становится очень низкой из-за паразитных ёмкостей и ограниченного разрешения
micros()
.
Чтобы измерять меньшие ёмкости (десятки или единицы пФ), требуются гораздо более сложные методы:
- Использование специализированных микросхем (например, LC-метров).
- Применение высокочастотных осцилляторов и измерение частоты, которая изменяется при подключении конденсатора.
- Использование встроенных таймеров микроконтроллера для более точного измерения времени (напрямую в тактах процессора), что дает разрешение до 62.5 наносекунд при 16 МГц.
Итого: текущий код и схема, которые мы разбирали в предыдущей статье, хорошо подходят для диапазона от десятков/сотен нанофарад (нФ) до сотен микрофарад (мкФ). Для пикофарад он уже не столь точен.