Целью данного проекта, является создание устройства с нуля. В процессе разработки использованы: Компас 3D - для проектирования электрических схем и корпуса устройства, EasyEDA - для проектирования печатной платы, Proteus - для тестирования работы устройства. Выбор программных средств обусловлен их функциональностью, удобством проектирования и возможностью бесплатного использования.

1. Теория

Ёмкость — это способность электрического компонента накапливать электрический заряд, измеряется в фарадах (Ф) и определяется как отношение заряда (Q), накопленного на обкладках конденсатора, к напряжению (U), приложенному к этим обкладкам:

C=\frac{Q}{U}

Измерение ёмкости с помощью микроконтроллера основывается на принципе зарядки и разрядки конденсатора через резистор. В процессе важным параметром является время, необходимое для достижения определённого уровня напряжения на конденсаторе, которое связано с его ёмкостью. Конденсатор подключается по схеме:

Схема подключения конденсатора к микроконтроллеру
Схема подключения конденсатора к микроконтроллеру

Алгоритм измерения емкости:

  1. Установить разрядный штырь в положение «ВХОД», что предотвращает возможность разряда конденсатора в процессе измерения, это обеспечит корректность измерения, так как конденсатор должен оставаться заряженным на протяжении всего времени, необходимого для его зарядки;

  2. Запись времени начала процесса заряда;

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

    Характеристика заряда конденсатора
    Характеристика заряда конденсатора

    Когда конденсатор подключается к источнику напряжения через резистор, он начинает заряжаться. Напряжение на конденсаторе изменяется по экспоненциальному закону, что можно описать уравнением: Tc=R*C,

    где Тс – постоянная времени (показывает, сколько времени требуется для зарядки конденсатора до примерно 63,2% от максимального напряжения), с; 

    R – сопротивление резистора, Ом;

    C – ёмкость конденсатора, Ф.

  4. Произвести расчет емкости и вывести на экран;

  5. Разрядить конденсатор для подготовки к следующему циклу измерений. Для этого разрядный штырь устанавливается в положение «ВХОД», а вывод разряда устанавливается на «ВЫХОД» и делается «НИЗКИМ». Это позволяет конденсатору разрядиться, контролируем напряжение на конденсаторе до полного разряда.

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=\frac{S'}{Kз},мм^2

где S'  – суммарная установочная площадь электрорадиоэлементов;

Kз – коэффициент заполнения (обычно 0,3…0,6). Ограничивает коэффициент заполнения наличие радиочастотных компонентов, площадки под микроконтроллером, которым необходимо дополнительное пространство на плате.

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

Аддитивные методы основаны на избирательном осаждении токопроводящего покрытия на диэлектрическое основание, на которое предварительно может наноситься слой клеевой композиции.

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

Ширину печатных проводников рассчитывают и выбирают в зависимости от допустимой токовой нагрузки, свойств токопроводящего материала, температуры окружающей среды при эксплуатации. Также в расчетах учитываются табличные значении на основании выбранного способа изготовления ПП.

b_{min}=\frac{I_{max}}{j_{доп}*t},мм

где Imax – максимальный постоянный ток через проводник, А;

jдоп – допустимая плотность тока, выбираемая в зависимости от метода изготовления ПП (табличные значения), А/мм2 ;

t – толщина проводника (табличные значения), мм.

Определяем номинальное значение диаметров монтажных отверстий:

d=dэ=|∆dно|+r, мм

где dэ – максимальный диаметр вывода компонентов, мм;

∆dно – нижнее предельное отклонение от номинального диаметра монтажного отверстия (определяется классом точности ПП и диаметром отверстия), мм;

r – разница между минимальным диаметром отверстия и максимальным диаметром вывода радиоэлемента (0,1…0,4), мм.

Также необходимо рассчитывать диаметры площадок, расстояния между проводами и тд. Расчеты показывают минимально допустимые размеры, основываясь на способе изготовления, расположения компонентов и простоте схемы выбираем наиболее подходящие параметры: размер ПП 30х38 мм, ширина дорожек 0,254 мм, тк диаметры ножек электронных радиоэлементов до 1 мм выбираем размер отверстия 1,2 мм. Эти значения внесем в раздел правил трассировки, среды проектирования.

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

По компоновочному эскизу можно выполнить предварительный расчет теплового режима блока и затем по этим данным рассчитать надежность с учетом электрических коэффициентов и температурного режима.

Печатная плата устройства
Печатная плата устройства
3Д изображение печатной платы
3Д изображение печатной платы

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
Схема устройства в среде Proteus

В среде Proteus устройство корректно измеряет значения конденсаторов от 1 нФ и более (большее значение емкости требует большего времени).

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