Ви не увійшли.
Сторінки 1
Я знайшов дуже цікавий код, який не потребує апаратного облаштування, а виконує вимірювання ємкості на програмному рівні.
У випадку коли конденсатор підключен до arduino - усе дуже добре і нема ніяких зауважень!
Але, якщо, у системі з'єднань з'являються провідники - усе летить шкереберть...
Якщо провідники мають відносно-невелику довжину, то я отримую зниження ємкості. А при довжені провідників більше 1 м - все падає до 1 пкФ... Хоча, стандартний тестер, з функцією вимірювання ємкості, при додаванні до конденсатора, паралельно-прокладених провідників - видає у результаті зростання ємкості.
Чому, при використанні цього коду виникає це відхилення, і як його можна вирішити на програмному рівні, без застосування апаратних рішень?
Неактивний
Ще зауважу, що при коли конденсатор пшдключен з відносно- короткими провідниками, то при підключенні до нього додаткових довгих провідників, які більше нікуди не підключаються - то і в цьому випадку виміряні показники ємкості дуже знижуються...
Неактивний
Є ще один цікавий варіант - але в мене він працує лише між аналоговими контактами...
Неактивний
Але, якщо, у системі з'єднань з'являються провідники - усе летить шкереберть...
Провідники теж мають свою ємність.
Хоча, стандартний тестер, з функцією вимірювання ємкості, при додаванні до конденсатора, паралельно-прокладених провідників - видає у результаті зростання ємкості.
Тестер вимірює саме ємність між входами. Ємність між провідниками просто додається до ємності конденсатора.
Цей "метод" (припускаю, бо в код не вникав) вимірює відношення ємності між пінами до паразитної ємності пінів (щось біля 7 пФ для AVR). При підключенні провідників ця паразитна ємність значно зростає.
як його можна вирішити на програмному рівні, без застосування апаратних рішень?
Хіба що калібрувати кожен раз для конкретних провідників з їх розташуванням у просторі та іншими зовнішніми факторами. Або використовувати класичні методи вимірювання ємності. Було би все так просто - цей "метод" давно б використовували у вимірювальних приладах.
Неактивний
Є так званий тестер Маркуса. Буває і на Алі в готовому вигляді, і в вигляді набору для пайки.
Є так званий тестер Маркуса. Буває і на Алі в готовому вигляді, і в вигляді набору для пайки.
Вивачте, є потреба використання багато-адресних звернень до МК, ваша пропозиція не є конструктивною у площіні програмного рішення задачі.
Неактивний
Виходячи з ідеї, яка тут використовується, додавання довгих провідників (опорів, індуктивностей) не вплине на результат, але мають закінчитись перехідні процеси. Додайте в коді безпосередньо перед analogRead() невеликий delay().
Активний
Так я і не пропоную купляти. До нього є програма, можна вивчати. В мануалі розписані всі формули. Просто якщо люди провели роботу, і навіть задокументували - навіщо проходити по тим же граблям самостійно?
dimich, навіщо писати відповідь, якщо ви нічого не зрозуміли у запитанні!???
З чого ви зробили такий висновок, що я нібито чогось не зрозумів у запитанні? Ви спитали, чому результати вимірювання ненадійні, я відповів - тому що метод вимірювання ненадійний.
А які саме фактори там впливають - то вже інше питання. Ви б хоч вказали, яку ємність вимірювали і який результат отримали при якій довжині провідників. Чи змінюється результат, коли провідники розведені в різні сторони, і коли скручені між собою.
Взагалі АЦП у AVR призначений для вимірювання напруги від джерела з відносно невеликим вихідним опором. З довгими провідниками, окрім ємності та індуктивності, ще й 50 Гц від мережі можуть впливати.
Неактивний
Виходячи з ідеї, яка тут використовується, додавання довгих провідників (опорів, індуктивностей) не вплине на результат
Чому ж не вплине, коли там припускається, що ємність піна A2 відносно шин живлення - 7 26.3 пФ. А з довгими провідниками вона більша. Так, взаємна ємність між пінами збільшуєтсья на взаємну ємність провідників, але й заряд розподіляється на більшу ємність (Cstray + ємність провідника на A2 відносно землі), тому напруга на A2 стає менша. Не здивуюсь, якщо впливає саме провідник на A2.
Остання редакція dimich (2025-12-22 20:22:01)
Неактивний
Цей "метод" (припускаю, бо в код не вникав) вимірює відношення ємності між пінами до паразитної ємності пінів (щось біля 7 пФ для AVR). При підключенні провідників ця паразитна ємність значно зростає. .
Не зовсім це розумію, чому ця паразитна ємкість не додається до наяної, а взагалі усе перекриває?
Неактивний
а Я питаю!!! - чому вказаний код у такому випадку ЗМЕНШУЄ показники???
Тому що значення ємності обчислюється як
capacitance = (long)val * _inCapToGnd / (max(_maxAdcValue - val, 1));Де val - напруга на піні A2 відносно землі, а _inCapToGnd - очікувана ємність між цим піном та землею. Для Atmega328P дефолтове значення - 26.3 пФ.
Підключений провідник збільшує цю ємність фактично, а в програмі значення залишається тим же дефолтовим. Напруга обернено пропорційна ємності, тому фактичне прочитане значення val стає менше. Але множиться на ту ж саму константу, отриману для підключення без провідників.
Вимірюваний конденсатор (разом з провідниками) та паразитна ємність піна A2 (також разом з провідниками) утворюють дільник заряду (аналогічно як дільник напруги на резисторах). Тому фактична на напруга на A2 залежить як від ємності між пінами (вимірюваний конденсатор + провідники), так і від паразитної ємності між піном A2 і землею (Cstray + провідники).
Неактивний
Не зовсім це розумію, чому ця паразитна ємкість не додається до наяної, а взагалі усе перекриває?
Вона додається, тільки не лише до ємності вимірюваного конденсатора, але й до паразитної ємності між піном та землею. Її вплив на значення фактичної паразитної ємності виявляється більшим, ніж на ємність вимірюваного конденсатора.
Неактивний
Доречі, як писав Honey вище, періхідний процес там також присутній. Але у мене з провідником 30 см і конденсатором 100 пФ там буквально три коливання на частоті ≈60 МГц, чим у порівнянні з часом sample-and-hold АЦП можна знехтувати.
Неактивний
То в вас індуктивність проводів теж трохи грає.
Нормально буде порахувати окремо ємність провода і окремо провода з конденсатором. І порахувати різницю.
То в вас індуктивність проводів теж трохи грає.
На те воно й перехідний процес. Але ж кажу, в моєму експерименті цей фактор виявився ніхтовно малий.
Нормально буде порахувати окремо ємність провода і окремо провода з конденсатором. І порахувати різницю.
Це й називається "калібровка". Там навіть API є
Тільки просто "порахувати різницю" буде недостатньо. Намалюйте еквівалентну схему: до схеми у статті вище домалюйте ємності між пінами, а також між кожним піном і землею, і проаналізуйте, як при цьому змінюється напруга на вимірюваному піні (A0 в статті, A2 в бібліотеці).
Остання редакція dimich (2025-12-23 14:08:56)
Неактивний
Сторінки 1