Съдържание:

Измервател на кондензатор ATTiny85: 4 стъпки
Измервател на кондензатор ATTiny85: 4 стъпки

Видео: Измервател на кондензатор ATTiny85: 4 стъпки

Видео: Измервател на кондензатор ATTiny85: 4 стъпки
Видео: Как да сглобим платката Тинузавър (2 от 3) видео ръководство 2024, Юли
Anonim
Измервател на кондензатор ATTiny85
Измервател на кондензатор ATTiny85
Кондензатометър ATTiny85
Кондензатометър ATTiny85

Тази инструкция е за измервател на кондензатор, базиран на ATTiny85 със следните функции.

  • Въз основа на ATTiny85 (DigiStamp)
  • SSD1306 0,96 "OLED дисплей
  • Измерване на честотата за кондензатори с ниска стойност 1pF - 1uF с помощта на 555 осцилатор
  • Измерване на времето за зареждане за кондензатори с висока стойност 1uF - 50000uF
  • 2 отделни порта, използвани за методите за минимизиране на стария капацитет
  • Две стойности на тока, използвани за Charge Time за минимизиране на времето за големи кондензатори
  • Самостоятелни нули по метод 555 при стартиране, могат да бъдат пренасочени с натискане на бутон
  • Бърз тест, използван за избор на метод, който трябва да се използва за всеки цикъл на измерване.
  • Точността на метода за време на зареждане може да бъде подобрена чрез поддръжка за регулиране на тактовата честота на OSCVAL

Стъпка 1: Схема и теория

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

Схемата показва ATTiny, управляващ SSD1306 OLED дисплея чрез I2C интерфейс. Захранва се директно от LiOn 300mAh батерия и е включена точка за зареждане, която може да се използва с LiOn съвместимо външно зарядно устройство.

Първият метод на измерване се основава на измерване на честотата на свободно работещ осцилатор 555. Това има базова честота, определена от резисторите и кондензатор, който трябва да бъде с висока точност, тъй като това определя точността на измерванията. Използвах 820pF 1% полистиролов кондензатор, който имах, но могат да се използват и други стойности около 1nF. Стойността трябва да бъде въведена в софтуера заедно с оценка на всеки разсеян капацитет (~ 20pF). Това дава базова честота от около 16KHz. Изходът на 555 се подава в PB2 на ATTiny, който е програмиран като хардуерен брояч. Чрез измерване на броя за период от около 1 секунда може да се определи честотата. Това се прави при стартиране, за да се определи базовата честота. Когато изпитваният кондензатор се добави паралелно към базовия кондензатор, тогава честотата се понижава и когато това се измерва и сравнява с базовата честота, тогава стойността на добавения капацитет може да бъде изчислена.

Хубавото на този метод е, че изчислената стойност зависи само от точността на базовия кондензатор. Периодът на измерване няма значение. Разделителната способност зависи от разделителната способност на честотните измервания, която е доста висока, така че дори много малък добавен капацитет може да бъде измерен. Ограничаващият фактор изглежда е "честотният шум" на осцилатора 555, който за мен е еквивалентен на около 0.3pF.

Методът може да се използва в приличен диапазон. За да подобря обхвата, синхронизирам периода на измерване с откриване на ръбовете на входящите импулси. Това означава, че дори нискочестотните трептения като 12Hz (с 1uF кондензатор) се измерват точно.

За по -големи кондензатори веригата е подредена да използва метод за зареждане на зареждането. В този случай изпитваният кондензатор се разрежда, за да се гарантира, че той започва от 0, след което се зарежда чрез известно съпротивление от захранващото напрежение. ADC в ATTiny85 се използва за наблюдение на напрежението на кондензатора и се измерва времето за преминаване от 0% до 50% заряд. Това може да се използва за изчисляване на капацитета. Тъй като еталонът за ADC е и захранващото напрежение, това не влияе на измерването. Абсолютната мярка за времето обаче зависи от тактовата честота на ATTiny85 и вариациите в това влияят на резултата. Може да се използва процедура за подобряване на точността на този часовник с помощта на регистър за настройка в ATTiny85 и това е описано по -късно.

За разреждане на кондензатора до 0V се използва n-канал MOSFET заедно с резистор с ниска стойност за ограничаване на разрядния ток. Това означава, че дори кондензаторите с голяма стойност могат да се разредят бързо.

За зареждане на кондензатора се използват 2 стойности на зареждащ резистор. Базовата стойност дава разумно време за зареждане на кондензатори от 1uF до около 50uF. P-канален MOSFET се използва за паралел в по-нисък резистор, за да позволи измерване на кондензатори с по-висока стойност в разумен интервал. Избраните стойности дават време за измерване от около 1 секунда за кондензатори до 2200uF и пропорционално по -дълго за по -големи стойности. В долния край на стойността периодът на измерване трябва да се поддържа разумно дълъг, за да може да се определи преходът през 50% прага с достатъчно точност. Честотата на дискретизация на ADC е около 25uSec, така че минимален период от 22mSec дава разумна точност.

Тъй като ATTiny има ограничен IO (6 пина), тогава разпределението на този ресурс трябва да се извършва внимателно. 2 извода са необходими за дисплея, 1 за входа на таймера, 1 за ADC, 1 за контрол на разреждането и 1 за контрол на скоростта на зареждане. Исках управление с бутон, което да позволи повторно нулиране във всяка точка. Това става чрез висококачествено повдигане на I2C SCL линията. Тъй като сигналите на I2C са отворени, тогава няма електрически конфликт, като позволите на бутона да издърпа тази линия ниско. Дисплеят ще спре да работи с натиснат бутон, но това няма никакво значение, тъй като се възобновява при отпускане на бутона.

Стъпка 2: Строителство

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

Направих това в малка 55 мм х 55 мм 3D печатна кутия, предназначена да побере 4 -те основни компонента; платката ATTiny85 DigiStamp, дисплеят SSD1306, батерията LiOn и малка част от прототипната платка, поддържаща 55 таймера и електрониката за контрол на зареждането.

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

Необходими части

  • ATTiny85 DigiStamp платка. Използвах версия с microUSB конектор, който се използва за качване на фърмуер.
  • SSD1306 I2C OLED дисплей
  • 300mAH LiOn батерия
  • Малка лента от прототипираща дъска
  • Чип за таймер CMOS 555 (TLC555)
  • n-Channel MOSFET AO3400
  • p-Channel MOSFET AO3401
  • Резистори 4R7, 470R, 22K, 2x33K
  • Кондензатори 4u7, 220u
  • Прецизен кондензатор 820pF 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 поддържа ADC, работещ в непрекъснат режим. Това дава най -бързия отговор на зареждащата верига, пресичаща прага.

В началото на всеки цикъл на измерване функция getMeasureMode определя кой е най -подходящият метод за всяко измерване.

Когато се използва методът 555, времето за броене започва само когато броячът се е променил. По същия начин времето се спира само след номиналния интервал на измерване и когато се открие ръб. Тази синхронизация позволява точно изчисляване на честотата дори за ниски честоти.

Когато софтуерът стартира, първите 7 измервания са „калибриращи цикли“, използвани за определяне на базовата честота на 555 без добавен кондензатор. Последните 4 цикъла са осреднени.

Има поддръжка за регулиране на регистъра OSCAL за настройка на часовника. Предлагам да зададете OSCCAL_VAL на 0 първоначално в горната част на скицата. Това означава, че фабричното калибриране ще се използва, докато не се извърши настройка.

Необходима е стойността на основния кондензатор 555, който трябва да се регулира. Добавям и прогнозна сума за разсеяния капацитет.

Ако за методите на зареждане се използват различни резистори, тогава стойностите CHARGE_RCLOW и CHARGE_RCHIGH в софтуера също ще трябва да бъдат променени.

За да инсталирате софтуера, използвайте нормалния метод с дигистамп, за да качите софтуера и да свържете USB порта, когато бъдете подканени. Оставете превключвателя на захранването в изключено положение, тъй като USB ще се захранва за тази операция.

Стъпка 4: Работа и разширено калибриране

Операцията е много проста.

След като включите уреда и изчакате калибрационната нула да приключи, свържете тествания кондензатор към един от двата измервателни порта. Използвайте 555 порта за кондензатори с ниска стойност <1uF и порта за зареждане за кондензатори с по -висока стойност. За електролитни кондензатори свържете отрицателния извод към общата земна точка. По време на изпитването кондензаторът ще се зареди до около 2V.

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

Разширено калибриране

Методът на зареждане разчита на абсолютната тактова честота на ATTiny85 за измерване на времето. Часовникът използва вътрешния RC осцилатор, подреден да дава номинален 8MHz часовник. Въпреки че стабилността на осцилатора е доста добра за вариации на напрежението и температурата, неговата честота може да бъде с доста процент, въпреки че е фабрично калибриран. Това калибриране задава регистъра OSCCAL при стартиране. Фабричното калибриране може да бъде подобрено чрез проверка на честотата и по -оптимална настройка на стойността OSCCAL, за да отговаря на конкретна платка ATTiny85.

Все още не съм успял да се впиша в по -автоматичен метод във фърмуера, затова използвам следната ръчна процедура. Възможни са две вариации в зависимост от наличните външни измервания; или честотомер, способен да измерва честотата на триъгълната форма на вълната на порта 555, или източник на квадратна вълна с известна честота, напр. 10KHz с нива 0V/3.3V, които могат да бъдат свързани към порта 555 и да отменят формата на вълната, за да принудят тази честота в брояча. Използвах втория метод.

  1. Стартирайте измервателния уред при нормалната му мощност без свързани кондензатори.
  2. Свържете честотомера или генератора на квадратни вълни към порта 555.
  3. Рестартирайте цикъла на калибриране, като натиснете бутона.
  4. В края на цикъла на калибриране дисплеят ще покаже честотата, определена от брояча и текущата стойност OSCCAL. Обърнете внимание, че многократното използване на калибриращия цикъл ще превключва между показване на измерената честота и нормално без дисплей.
  5. Ако показаната честота е по -малка от известната, това означава, че тактовата честота е твърде висока и обратно. Намирам, че OSCCAL стъпка регулира часовника с около 0,05%
  6. Изчислете нова OSCCAL стойност, за да подобрите часовника.
  7. Въведете нова OSCCAL стойност в OSCCAL_VAL в горната част на фърмуера.
  8. Повторно изграждане и качване на нов фърмуер. Повторете стъпки 1 -5, които трябва да покажат новата OSCCAL стойност и новото измерване на честотата.
  9. Ако е необходимо, повторете стъпките отново, докато се постигне най -добрият резултат.

Забележка: Важно е да направите измервателната част на тази настройка, когато работите на нормално захранване, а не на USB, за да сведете до минимум всяко изместване на честотата поради захранващото напрежение.

Препоръчано: