Целью данного проекта, является создание устройства с нуля. В процессе разработки использованы: Компас 3D - для проектирования электрических схем и корпуса устройства, EasyEDA - для проектирования печатной платы, Proteus - для тестирования работы устройства. Выбор программных средств обусловлен их функциональностью, удобством проектирования и возможностью бесплатного использования.
1. Теория
Ёмкость — это способность электрического компонента накапливать электрический заряд, измеряется в фарадах (Ф) и определяется как отношение заряда (Q), накопленного на обкладках конденсатора, к напряжению (U), приложенному к этим обкладкам:
Измерение ёмкости с помощью микроконтроллера основывается на принципе зарядки и разрядки конденсатора через резистор. В процессе важным параметром является время, необходимое для достижения определённого уровня напряжения на конденсаторе, которое связано с его ёмкостью. Конденсатор подключается по схеме:

Алгоритм измерения емкости:
Установить разрядный штырь в положение «ВХОД», что предотвращает возможность разряда конденсатора в процессе измерения, это обеспечит корректность измерения, так как конденсатор должен оставаться заряженным на протяжении всего времени, необходимого для его зарядки;
Запись времени начала процесса заряда;
Установить вывод заряда на «ВЫХОД» и сделать его «ВЫСОКИМ», что начинает процесс зарядки конденсатора. Важно отметить, что в процессе зарядки необходимо периодически проверять напряжение на конденсаторе, пока оно не достигнет 63,2% от общего напряжения;

Характеристика заряда конденсатора Когда конденсатор подключается к источнику напряжения через резистор, он начинает заряжаться. Напряжение на конденсаторе изменяется по экспоненциальному закону, что можно описать уравнением: Tc=R*C,
где Тс – постоянная времени (показывает, сколько времени требуется для зарядки конденсатора до примерно 63,2% от максимального напряжения), с;
R – сопротивление резистора, Ом;
C – ёмкость конденсатора, Ф.
Произвести расчет емкости и вывести на экран;
Разрядить конденсатор для подготовки к следующему циклу измерений. Для этого разрядный штырь устанавливается в положение «ВХОД», а вывод разряда устанавливается на «ВЫХОД» и делается «НИЗКИМ». Это позволяет конденсатору разрядиться, контролируем напряжение на конденсаторе до полного разряда.
2. Разработка устройства
2.1 Э1 Cхема электрическая структурная
Структурная схема описывает основные функциональные части устройства и их взаимосвязь.

Мозгом прибора является микроконтроллер со встроенным аналогово-цифровым преобразователем (АЦП) - выполняет функцию преобразования аналогового сигнала с вывода конденсатора в цифровой формат, который может быть обработан арифметико-логическим устройством (АЛУ) - осуществляет перерасчет емкости из полученного времени на основе записанной программы и выводит данные на дисплей.
Зарядные резисторы ограничивают время заряда необходимое для создания RC-цепи. Разрядный резистор служит для снижения тока разрядки конденсатора. В случае моментальной зарядки, то есть анализа конденсатора с маленькой емкостью происходит переключение резистора для более длительной зарядки.
Вывод данных обеспечивается с помощью LCD-дисплея - жидкокристаллический дисплей. Подключается по двухпроводному последовательному интерфейсу для передачи данных. I2C использует всего два провода: SDA (Serial Data Line) для передачи данных и SCL (Serial Clock Line) для синхронизации. Это позволяет использовать только два пина микроконтроллера для управления несколькими и/или многопиновыми устройствами.
Мобильность обеспечивается использованием батареи "Крона" на 9 вольт, так как для питания выбранного микроконтроллера необходимо 5 вольт используется стабилизатор напряжения, который работает по принципу линейного регулирования напряжения, при входном напряжении 9 вольт он преобразует избыточное напряжение в тепло. Что не лучшее решение для мобильного устройства, но учитывая низкий ток потребления, малое время работы и простоту реализации применим этот способ.
2.2 Э3 Cхема электрическая принципиальная

В качестве микроконтроллера был выбран ATmega8 в DIP корпусе. Он обладает достаточной вычислительной мощностью и количеством входов/выходов для реализации поставленных задач. Его популярность и широкое распространение обеспечивают доступность документации и примеров, что упрощает процесс разработки. DIP корпус обеспечивает удобство монтажа и замены компонентов, что удобно при тестировании.
Резисторы используются в схеме для создания цепи зарядки конденсатора. Малое сопротивление приведет к слишком быстрому заряду, что затруднит точное измерение, в то время как слишком большое сопротивление может увеличить время измерения до неприемлемых значений. В качестве резисторов были выбраны компоненты SMD типа 0603.
Стабилизатор LM7805 прост в использовании и обладает хорошей надежностью. Также в схеме используются керамические конденсаторы формата 0603 и электролитические конденсаторы формата 3216 для фильтрации и стабилизации напряжения.

Для начала работы устройства на вход стабилизатора напряжения LM7805 подается напряжение от 5В, в нашем случает 9В, стабилизатора обеспечивает понижение напряжения, подключенные ко входу и выходу конденсаторы сглаживают сигнал питания.
Питание расходится на микроконтроллер и LCD-дисплей для его работы и подсветки экрана. Выходы микроконтроллера Vcc – питание, AREF и AVCC подключены к питанию для создания опорного напряжения в системе контроллера и поддержания напряжения для аналогового входа стабильно на отметке в 5В. К пинам GND подключен общий провод земли.
Ко входам микроконтроллера ATmega8 SCL и SDA подключен LCD-дисплей для вывода информации. Резисторы подключены к пинам контроллера для автоматического переключения диапазона и скорости измерения конденсаторов. Дополнительный резистор необходим для быстрой разрядки конденсаторов и ограничения тока.
2.3 Печатная плата
Важно правильно подойти к разработке печатной платы, ведь от нее зависит работа будущего устройства, возможность ремонта и удобства монтажа. Напряжение помех, вызванное электрическим монтажом, складывается из емкостной, индуктивной или гальванической составляющих. Емкостная составляющая определяется длиной, сечением и типом изоляции проводов, расстоянием между ними и земляными шинами, индуктивная – рабочей частотой, длиной проводов и расстоянием между ними. Гальванические помехи возникают в цепях электропитания при завышении омического сопротивления токопроводящих шин. Для снижения этого вида помех провода питания выполняются плоскими, минимальной длины с поперечным сечением, соответствующим токовой нагрузке.
При работе в среде EasyEDA устанавливаются ограничения на количество задействованных в проекте слоев, и среда проектирования в полуавтоматическом режиме позволяет выбрать вариант размещения компонентов и печатных проводников. Произведем расчет основных параметров.
Площадь ПП с учётом коэффициента заполнения рассчитывается по формуле:
где S' – суммарная установочная площадь электрорадиоэлементов;
Kз – коэффициент заполнения (обычно 0,3…0,6). Ограничивает коэффициент заполнения наличие радиочастотных компонентов, площадки под микроконтроллером, которым необходимо дополнительное пространство на плате.
Методы изготовления ПП разделяют на две группы: субтрактивные и аддитивные. В субтрактивных методах в качестве основания для печатного монтажа используют фольгированные диэлектрики, на которых формируется проводящий рисунок путем удаления фольги с непроводящих участков. Дополнительная химико-гальваническая металлизация монтажных отверстий привела к созданию комбинированных методов изготовления ПП.
Аддитивные методы основаны на избирательном осаждении токопроводящего покрытия на диэлектрическое основание, на которое предварительно может наноситься слой клеевой композиции.
Применение аддитивного метода в массовом производстве ПП ограничено низкой производительностью процесса химической металлизации, интенсивным воздействием электролитов на диэлектрик, трудностью получения металлических покрытий с хорошей адгезией.
Ширину печатных проводников рассчитывают и выбирают в зависимости от допустимой токовой нагрузки, свойств токопроводящего материала, температуры окружающей среды при эксплуатации. Также в расчетах учитываются табличные значении на основании выбранного способа изготовления ПП.
где Imax – максимальный постоянный ток через проводник, А;
jдоп – допустимая плотность тока, выбираемая в зависимости от метода изготовления ПП (табличные значения), А/мм2 ;
t – толщина проводника (табличные значения), мм.
Определяем номинальное значение диаметров монтажных отверстий:
где dэ – максимальный диаметр вывода компонентов, мм;
∆dно – нижнее предельное отклонение от номинального диаметра монтажного отверстия (определяется классом точности ПП и диаметром отверстия), мм;
r – разница между минимальным диаметром отверстия и максимальным диаметром вывода радиоэлемента (0,1…0,4), мм.
Также необходимо рассчитывать диаметры площадок, расстояния между проводами и тд. Расчеты показывают минимально допустимые размеры, основываясь на способе изготовления, расположения компонентов и простоте схемы выбираем наиболее подходящие параметры: размер ПП 30х38 мм, ширина дорожек 0,254 мм, тк диаметры ножек электронных радиоэлементов до 1 мм выбираем размер отверстия 1,2 мм. Эти значения внесем в раздел правил трассировки, среды проектирования.
Компоновка представляет собой размещение элементов в пространстве или на плоскости. Компоновка – это геометрическая модель печатной платы. Компоновочный эскиз – это документ, облегчающий работу конструктора, художника, технолога.
По компоновочному эскизу можно выполнить предварительный расчет теплового режима блока и затем по этим данным рассчитать надежность с учетом электрических коэффициентов и температурного режима.


2.4 Корпус
Спроектируем прототип корпуса для устройства в Компас 3Д.

3. Разработка и тестирование ПО
Программа начинается с инициализации необходимых библиотек, таких как Wire и LiquidCrystal_I2C, которые обеспечивают взаимодействие с LCD-дисплеем. Правильная настройка адреса LCD и его размеров является важной для корректного отображения информации. Устанавливаются начальные значения для переменных, отвечающих за время зарядки и разрядки конденсатора, а также определяются пины, используемые для этих процессов.
#include <Wire.h> //подключение и настройка библиотек #include <LiquidCrystal_I2C.h> #define LCD_ADDRESS 0x3F #define LCD_COLUMNS 20 #define LCD_ROWS 4 #define analogPin 14 //назначение пинов #define dischargePin 7 float resistorValue = 1000.0F; //определение переменных unsigned long startTime; unsigned long elapsedTime; float microFarads; float nanoFarads; int chargePin = 6; // Создаем объект для LCD LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLUMNS, LCD_ROWS); void setup() { //установка начальных значений lcd.begin(LCD_COLUMNS, LCD_ROWS); lcd.backlight(); pinMode(chargePin, OUTPUT); digitalWrite(chargePin, LOW); Serial.begin(9600); } void chargeCap(){ // Зарядка конденсатора digitalWrite(chargePin, HIGH); startTime = millis(); } void disChargeCap(){ // Разрядка конденсатора digitalWrite(chargePin, LOW); pinMode(dischargePin, OUTPUT); digitalWrite(dischargePin, LOW); while (analogRead(analogPin) > 0){}// Ждем, пока значение не станет 0 pinMode(dischargePin, INPUT); } void nextPin(int i){ //функция для изменения вывода для зарядки if (chargePin != i){ digitalWrite(chargePin, LOW); pinMode(chargePin, INPUT); chargePin=i; if (chargePin == 6) resistorValue = 1000.0F; else if (chargePin == 5) resistorValue = 100000.0F; else if (chargePin == 4) resistorValue = 10000000.0F; pinMode(chargePin, OUTPUT); digitalWrite(chargePin, LOW); } } void loop() { //основной цикл выполнения программы elapsedTime = 0; nextPin(6); disChargeCap(); chargeCap(); while (1) { while (analogRead(analogPin) < 648) {}// Ждем, пока значение не достигнет 648 (1025*0,632) elapsedTime = millis() - startTime; if (elapsedTime <10 && chargePin!=4){ Serial.print(«chargePin: «); Serial.println(chargePin); disChargeCap(); nextPin(chargePin-1); chargeCap(); continue; } else break; } microFarads = ((float)elapsedTime / resistorValue) * 1000; // Выводим информацию на LCD lcd.clear(); lcd.setCursor(0, 0); lcd.print(«Time: «); lcd.print(elapsedTime); lcd.print(« mS»); if (microFarads > 1) { lcd.setCursor(0, 1); lcd.print((long)microFarads); lcd.print(« uF»); } else { nanoFarads = microFarads * 1000.0; lcd.setCursor(0, 1); lcd.print((long)nanoFarads); lcd.print(« nF»); } delay(1000); // Задержка перед следующим измерением }
В самом начале для безопасности и корректного расчета разрядить конденсатор. Следующим этапом является зарядка конденсатора, осуществляемая через функцию chargeCap(), которая устанавливает пин зарядки в состояние HIGH, инициируя процесс зарядки. В это время фиксируется текущее время, что позволяет впоследствии вычислить продолжительность зарядки. После завершения зарядки конденсатор разряжается с помощью функции disChargeCap(), которая устанавливает пин зарядки в LOW и ожидает, пока значение на аналоговом пине не достигнет нуля, что гарантирует полное разряжение конденсатора перед следующим измерением.
Алгоритм также включает функцию nextPin(int i), позволяющую переключать пины для зарядки и изменять значение резистора, что обеспечивает возможность проведения измерений с различными значениями резисторов. В основном цикле программы происходит последовательное измерение ёмкости конденсатора: после разрядки конденсатора он снова заряжается, и программа ожидает, пока значение на аналоговом пине не достигнет порогового значения, указывающего на завершение зарядки.
После достижения этого порога вычисляется время зарядки, и ёмкость конденсатора рассчитывается по формуле, учитывающей значение резистора. Результаты выводятся на LCD-дисплей, где отображается время зарядки в миллисекундах и ёмкость в микрофарадах или нанофарадах в зависимости от полученного значения. Завершение измерения сопровождается задержкой в одну секунду.
Если время зарядки меньше 10 миллисекунд и текущий пин зарядки не равен 4, программа выводит информацию о текущем пине зарядки в последовательный монитор и повторяет процесс разрядки и зарядки, переключая пин на предыдущий. В противном случае цикл завершается, и программа переходит к вычислению ёмкости конденсатора.

В среде Proteus устройство корректно измеряет значения конденсаторов от 1 нФ и более (большее значение емкости требует большего времени).
Вывод: таким образом эта разминочная статья для подготовки к созданию более сложных и интересных проектов (GPS модуль для создания маршрутов на основе ESP32). Некоторая теория и схемы не так важны однако хотелось создать полноценный проект, а не просто устройство. В конце проектирования заметил некоторые недочеты (например, тк экран идет сразу с расширителем PCF8574 его не нужно было указывать на схеме Э3), возможно описано слишком простым языком или недостаточно информации.
