Мазмұны:

ATTiny85 конденсаторы: 4 қадам
ATTiny85 конденсаторы: 4 қадам

Бейне: ATTiny85 конденсаторы: 4 қадам

Бейне: ATTiny85 конденсаторы: 4 қадам
Бейне: ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino 2024, Қараша
Anonim
ATTiny85 конденсаторлық есептегіш
ATTiny85 конденсаторлық есептегіш
ATTiny85 конденсаторлық есептегіш
ATTiny85 конденсаторлық есептегіш

Бұл нұсқаулық келесі мүмкіндіктері бар ATTiny85 конденсаторына арналған.

  • ATTiny85 (DigiStamp) негізінде
  • SSD1306 0,96 дюймдік OLED дисплейі
  • 555 осциллятор көмегімен 1pF - 1uF төмен мәнді конденсаторлар үшін жиілікті өлшеу
  • 1uF - 50000uF жоғары конденсаторлар үшін зарядтау уақытын өлшеу
  • Тұрақты сыйымдылықты азайту әдістері үшін 2 бөлек порт қолданылады
  • Үлкен конденсаторлардың уақытын азайту үшін зарядтау уақыты үшін токтың екі мәні қолданылады
  • Іске қосылған кезде 555 әдіспен нөлдік мәнді басу түймесімен қайта өзгертуге болады
  • Өлшеудің әр циклі үшін қандай әдісті қолдану керектігін таңдау үшін қолданылатын жылдам тест.
  • Зарядтау уақытының дәлдігін OSCVAL сағат жиілігін реттеу арқылы жақсартуға болады

1 -қадам: Схема және теория

Схема және теория
Схема және теория

Схемада ATTiny IDC интерфейсі арқылы SSD1306 OLED дисплейін басқаратынын көрсетеді. Ол LiOn 300mAh батареясынан тікелей қуатталады және LiOn үйлесімді сыртқы зарядтағышпен пайдалануға болатын зарядтау нүктесі қосылған.

Бірінші өлшеу әдісі 555 бос жұмыс істейтін осциллятордың жиілігін өлшеуге негізделген. Бұл резисторлармен анықталатын базалық жиілік пен жоғары дәлдіктегі конденсаторға ие, себебі бұл өлшеу дәлдігін анықтайды. Менде 820pF 1% полистирол конденсаторы қолданылды, бірақ 1nF айналасындағы басқа мәндерді қолдануға болады. Бағаны бағдарламалық жасақтамаға кез келген адасқан сыйымдылықтың бағасымен бірге енгізу керек (~ 20pF). Бұл шамамен 16 кГц негізгі жиілікті берді. 555 шығысы аппараттық есептегіш ретінде бағдарламаланған ATTiny PB2 -ге беріледі. Шамамен 1 секунд ішінде санауды өлшеу арқылы жиілікті анықтауға болады. Бұл базалық жиілікті анықтау үшін іске қосу кезінде жасалады. Егер базалық конденсаторға параллель сыналатын конденсатор қосылған болса, жиілік төмендетіледі, ал оны өлшегенде және базалық жиілікпен салыстырған кезде қосылған сыйымдылықтың мәнін есептеуге болады.

Бұл әдістің жағымды ерекшелігі - есептелген мән тек негізгі конденсатордың дәлдігіне байланысты. Өлшеу мерзімі маңызды емес. Ажыратымдылық өте жоғары жиіліктегі өлшемдердің ажыратымдылығына байланысты, сондықтан өте аз сыйымдылықты да өлшеуге болады. Шектеу факторы 555 осциллятордың «жиіліктегі шуылына» ұқсайды, ол мен үшін шамамен 0.3pF тең.

Әдісті лайықты диапазонда қолдануға болады. Диапазонды жақсарту үшін мен импульстердің жиектерін анықтау үшін өлшеу кезеңін синхрондадым. Бұл дегеніміз, 12 Гц сияқты төмен жиілікті тербеліс (1uF конденсаторы бар) дәл өлшенеді.

Үлкен конденсаторлар үшін схема зарядтауды есептеу әдісін қолданады. Бұл жағдайда тексерілетін конденсатор разрядталады, ол 0 -ден басталады, содан кейін қоректену кернеуінен белгілі кедергі арқылы зарядталады. ATTiny85 -тегі ADC конденсатордың кернеуін бақылау үшін қолданылады және зарядтың 0% -дан 50% -ға дейінгі уақыт өлшенеді. Бұл сыйымдылықты есептеу үшін қолданылуы мүмкін. ADC анықтамасы қоректену кернеуі болғандықтан, бұл өлшеуге әсер етпейді. Алайда, қабылданған уақыттың абсолюттік өлшемі ATTiny85 сағат жиілігіне байланысты және оның өзгеруі нәтижеге әсер етеді. ATTiny85 тюнинг регистрінің көмегімен осы сағаттың дәлдігін жақсарту үшін процедураны қолдануға болады және бұл кейінірек сипатталады.

Конденсаторды 0В-қа шығару үшін разряд тогын шектеу үшін n-каналды MOSFET төмен мәнді резистормен бірге қолданылады. Бұл тіпті үлкен мәндегі конденсаторларды да тез зарядтауға болатынын білдіреді.

Конденсаторды зарядтау үшін зарядтау резисторының 2 мәні қолданылады. Негізгі мән конденсаторлардың зарядтау уақытын шамамен 1Ф -тан 50Ф -қа дейін береді. Р-каналды MOSFET жоғары конденсаторларды ақылға қонымды аралықта өлшеуге мүмкіндік беру үшін төменгі резисторға параллель болу үшін қолданылады. Таңдалған мәндер 2200uF дейінгі конденсаторлар үшін шамамен 1 секунд өлшеу уақытын береді және үлкен мәндер үшін пропорционалды түрде ұзағырақ. Мәннің төменгі бөлігінде 50% шегінен өтуді жеткілікті дәлдікпен анықтау үшін өлшеу кезеңі жеткілікті ұзақ сақталуы керек. ADC іріктеу жылдамдығы шамамен 25uSec құрайды, сондықтан минималды 22mSec кезеңі дәлдік береді.

ATTiny шектеулі IO (6 түйреуіш) болғандықтан, бұл ресурсты бөлу мұқият жасалуы керек. Дисплейге 2 түйреуіш қажет, таймердің кірісі үшін 1, ADC үшін 1, разрядты бақылау үшін 1 және зарядты реттеу үшін 1. Мен кез келген сәтте қайта нөлдеуге мүмкіндік беретін батырманы басқару керек болды. Бұл I2C SCL желісін жоғары ажырату арқылы жасалады. I2C сигналдары ашық дренаж болғандықтан, түймені осы сызықты төмен түсіруге мүмкіндік беру арқылы электрлік қақтығыстар болмайды. Дисплей түймені басқан кезде жұмысын тоқтатады, бірақ бұл ешқандай нәтиже бермейді, себебі түйме босатылған кезде қайта қосылады.

2 -қадам: құрылыс

Құрылыс
Құрылыс
Құрылыс
Құрылыс
Құрылыс
Құрылыс

Мен мұны 55 мм x 55 мм өлшемді 3D басылған кішкентай қорапқа айналдырдым. 4 негізгі компонентті ұстауға арналған; ATTiny85 DigiStamp тақтасы, SSD1306 дисплейі, LiOn аккумуляторы және 55 таймер мен зарядты басқару электроникасын ұстайтын прототип тақтасының кішкене бөлігі.

Https://www.thingiverse.com/thing:4638901 мекенжайы бойынша қоршау

Қажетті бөлшектер

  • ATTiny85 DigiStamp тақтасы. Мен микробағдарламаны жүктеуге арналған microUSB қосқышы бар нұсқаны қолдандым.
  • SSD1306 I2C OLED дисплейі
  • 300 мАч LiOn батареясы
  • Прототип тақтасының шағын жолағы
  • CMOS 555 таймер чипі (TLC555)
  • n-арна MOSFET AO3400
  • p-арна MOSFET AO3401
  • 4R7, 470R, 22K, 2x33K резисторлары
  • Конденсаторлар 4u7, 220u
  • Precision Capacitor 820pF 1%
  • Миниатюралық сырғытқыш
  • Зарядтау портына және өлшеу порттарына арналған 2 х 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 әдістері 555 жиілігін өлшеу үшін қажетті таймер/есептегішті енгізуге қайшы келетін PB2 пайдаланады.

Бағдарламалық қамтамасыз ету күйлер циклі арқылы өлшеуді алатын мемлекеттік машинаның айналасында құрылымдалған. ISR 8 биттік жабдықты кеңейту үшін таймер санауышынан асып кетуді қолдайды. Екінші ISR үздіксіз режимде жұмыс істейтін ADC қолдайды. Бұл зарядтау тізбегінің табалдырықты кесіп өтуіне ең жылдам жауап береді.

Әрбір өлшеу циклінің басында getMeasureMode функциясы әр өлшеу үшін ең қолайлы әдісті анықтайды.

555 әдісі қолданылған кезде санау уақыты санауыш өзгерген кезде ғана басталады. Дәл осылай уақыт номиналды өлшеу интервалынан кейін және жиек анықталған кезде ғана тоқтатылады. Бұл синхрондау тіпті төмен жиіліктер үшін де жиілікті дәл есептеуге мүмкіндік береді.

Бағдарламалық жасақтама басталғанда, конденсатор қосылмай 555 -тің негізгі жиілігін анықтау үшін қолданылатын алғашқы 7 өлшеулер «калибрлеу циклдары» болып табылады. Соңғы 4 цикл орташа.

Сағатты реттеу үшін OSCAL регистрін реттеу үшін қолдау бар. Мен бастапқыда эскиздің жоғарғы жағында OSCCAL_VAL мәнін 0 мәніне қоюды ұсынамын. Бұл зауыттық калибрлеу баптау орындалғанға дейін қолданылатынын білдіреді.

555 базалық конденсатордың мәнін реттеу қажет. Мен сондай -ақ адасқан сыйымдылықтың есептік мөлшерін қосамын.

Егер зарядтау әдістері үшін әр түрлі резисторлар қолданылса, бағдарламалық жасақтамадағы CHARGE_RCLOW және CHARGE_RCHIGH мәндерін де өзгерту қажет болады.

Бағдарламалық жасақтаманы орнату үшін бағдарламалық қамтамасыз етуді жүктеудің және usb портын қосудың қалыпты әдісін қолданыңыз. Қуат қосқышын сөндірулі күйде қалдырыңыз, себебі бұл әрекетті орындау үшін қуат USB -ден беріледі.

4 -қадам: жұмыс және кеңейтілген калибрлеу

Операция өте қарапайым.

Құрылғыны қосқаннан кейін және калибрлеу нөлінің аяқталуын күткеннен кейін тексерілетін конденсаторды екі өлшеу портының біріне қосыңыз. <1uF төмен конденсаторлар үшін 555 портты, ал жоғары конденсаторлар үшін зарядтау портын қолданыңыз. Электролиттік конденсаторлар үшін теріс терминалды жалпы жер нүктесіне қосыңыз. Тексеру кезінде конденсатор шамамен 2 В дейін зарядталады.

555 портын басу түймесін шамамен 1 секунд ұстап тұрып, қайта жіберу арқылы қайта қарауға болады. Бұл үшін 555 портына ештеңе қосылмағанына көз жеткізіңіз.

Кеңейтілген калибрлеу

Зарядтау әдісі уақытты өлшеу үшін ATTiny85 абсолюттік сағат жиілігіне сүйенеді. Сағат 8 МГц номиналды сағатты беру үшін реттелген ішкі RC осцилляторын қолданады. Осциллятордың тұрақтылығы кернеу мен температураның өзгеруіне өте жақсы болғанымен, оның жиілігі зауыттық калибрленген болса да бірнеше пайызға азайтылуы мүмкін. Бұл калибрлеу іске қосылған кезде OSCCAL регистрін орнатады. Зауыттық калибрлеу жиілігін тексеру және ATTiny85 тақтасына сәйкес OSCCAL мәнін оңтайлы реттеу арқылы жақсартылуы мүмкін.

Мен микробағдарламаға автоматты әдіске ене алмадым, сондықтан келесі қолмен рәсімді қолданамын. Қандай сыртқы өлшемдер бар екеніне байланысты екі вариация болуы мүмкін; 555 портындағы үшбұрышты толқын пішінінің жиілігін өлшеуге қабілетті жиілік өлшегіш, немесе белгілі жиіліктегі квадраттық толқын көзі. 10 кГц 0В/3.3В деңгейлері бар, оны 555 портына қосуға болады және бұл жиілікті есептегішке мәжбүрлеу үшін толқын формасын ауыстырады. Мен екінші әдісті қолдандым.

  1. Есептегішті конденсаторларсыз қалыпты қуатына қосыңыз.
  2. Жиілік өлшегішті немесе шаршы толқын генераторын 555 портына қосыңыз.
  3. Түймені басу арқылы калибрлеу циклін қайта бастаңыз.
  4. Калибрлеу циклінің соңында дисплей есептегішпен анықталатын жиілікті және ағымдағы OSCCAL мәнін көрсетеді. Есіңізде болсын, калибрлеу циклін қайталап қолдану өлшенген жиілікті көрсету мен дисплейдің қалыпты болмауы арасында ауысады.
  5. Егер көрсетілген жиілік белгіліден аз болса, онда бұл жиілік тым жоғары және керісінше. Менің ойымша, OSCCAL қадамы сағатты шамамен 0,05% реттейді.
  6. Сағатты жақсарту үшін жаңа OSCCAL мәнін есептеңіз.
  7. Микробағдарламаның жоғарғы жағындағы OSCCAL_VAL мәніне жаңа OSCCAL мәнін енгізіңіз.
  8. Жаңа микробағдарламаны қайта құрыңыз және жүктеңіз. Жаңа OSCCAL мәнін және жаңа жиілікті өлшеуді көрсететін 1-5 қадамдарды қайталаңыз.
  9. Қажет болса, ең жақсы нәтижеге жеткенше әрекеттерді қайталаңыз.

Бұл кернеудің әсерінен жиіліктің ауысуын азайту үшін USB емес, қалыпты қуатпен жұмыс істегенде, бұл баптаудың өлшеу бөлігін жасау маңызды.

Ұсынылған: