Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va vazifali tsiklni qanday o'lchash mumkin: 4 qadam
Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va vazifali tsiklni qanday o'lchash mumkin: 4 qadam

Video: Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va vazifali tsiklni qanday o'lchash mumkin: 4 qadam

Video: Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va vazifali tsiklni qanday o'lchash mumkin: 4 qadam
Video: STM32 Mikrokontroller Dastur Tuzish Led Yoqish.#0 2025, Yanvar
Anonim
Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va vazifali tsiklni qanday o'lchash mumkin
Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va vazifali tsiklni qanday o'lchash mumkin
Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va ish tsiklini qanday o'lchash mumkin
Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va ish tsiklini qanday o'lchash mumkin
Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va ish tsiklini qanday o'lchash mumkin
Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va ish tsiklini qanday o'lchash mumkin

Men nima deb o'ylayotganingizni bilaman: "Ha? Signal chastotasini o'lchash uchun mikrokontrollerlardan foydalanish bo'yicha ko'plab ko'rsatmalar mavjud. Yaw." Lekin kuting, bunda yangilik bor: men mikrokontroller (MCU) dosh bera oladigan chastotalarni va signalning ish aylanish davrini bir vaqtning o'zida o'lchash usulini tasvirlayman!

Qurilmaning chastota diapazoni ~ 43 Gts dan ~ 450 kHz gacha, ish aylanishi 1% dan 99% gacha.

Keling, "bardoshli" qismni tushuntirib beray: MCU to'rt to'lqinli signalning T davrini keyingi ikkita o'tish hodisasi orasidagi vaqtni kuzatish orqali o'lchaydi. Masalan, past-baland kuchlanish uning kirish-chiqish pinlaridan biriga sakraydi. Bu o'z ichki soatining impulslar sonini hisoblash orqali amalga oshiriladi. Sodda qilib aytganda, o'lchangan chastotalarning yuqori chegarasi Nyqvist-Shennon tanlab olish teoremasiga bo'ysunishi kerak; ya'ni, bu MCU soat chastotasining yarmiga teng bo'ladi. Aslida, chegara ancha past, chunki MCU uzilishlarni boshqarish, o'zgaruvchilarni saqlash, arifmetik operatsiyalarni bajarish, natijalarni ko'rsatish va boshqalarni bajarish uchun kodni bajarishi kerak. 48 MGts chastotali MCU bilan o'tkazgan tajribalarimda o'lchovli o'tishlar orasidagi soat tsikllarining minimal soni. taxminan 106. Demak, bu holda o'lchanadigan chastota diapazonining yuqori chegarasi 48 000/212/2 = 226,4 kHz bo'ladi.

MCU signal davrini o'lchasa -da, uning impuls kengligini ham aniqlay oladi: P: signal kuchlanishining yuqori bo'lib qolishi vaqti. Boshqacha qilib aytganda, pastdan yuqoriga va pastdan pastgacha o'tish vaqti. Keyin signalning ish aylanishi quyidagi foiz sifatida belgilanadi:

Burch = 100% * P / T

Xuddi chastotada bo'lgani kabi, puls kengligining amaliy chegarasi mavjud. Yuqoridagi misol yordamida 106 soatlik tsikl pulsning kengligini 2,21 mikrosaniyadan kam bo'lmasligi kerak. Yoki 226,4 kHz chastotasida 50% dan kam emas.

Kvadrat to'lqin signallarining yuqori chastotali chegarasini oshirish usullaridan biri-bu flip-floplardan foydalanadigan raqamli bo'linuvchilarni qo'llash. Kirish chastotasini n ga bo'lish, o'lchanadigan yuqori diapazonni n marta kengaytiradi. Bu ajoyib yangilik, raqamli bo'linuvchilarning bitta asosiy kamchiliklari bor: bo'linadigan signal puls kengligi (va ish aylanishi) haqidagi ma'lumotni yo'qotadi! Bo'linuvchilarning ish uslubi tufayli ularning chiqishi har doim 50% ish aylanishiga ega. Bumer…

Keyingi sahifalarda men chastotani raqamli ravishda qanday ajratish va pulsning asl kengligini saqlashni ko'rsataman, bu esa signallarni to'g'ridan -to'g'ri hisoblash chegaralaridan ancha yuqori o'lchash imkonini beradi.

1 -qadam: Raqamli chastotalar bo'limi

Raqamli chastotalar bo'limi
Raqamli chastotalar bo'limi
Raqamli chastotalar bo'limi
Raqamli chastotalar bo'limi
Raqamli chastotalar bo'limi
Raqamli chastotalar bo'limi

An'anaviy raqamli chastotali bo'linmalar flip-floplardan foydalanadi; Ushbu qo'llanmada standart JK flip-floplari yordamida bo'linuvchilarni qurish tamoyillari tushunarli. Bu MCU uchun juda yuqori kirish chastotalari muammosini hal qiladi, lekin bitta katta kamchilikka ega: bo'lingan signal kirish signalining vazifasidan qat'i nazar, 50% ish aylanishiga ega! Nima uchun bunday bo'lganini bilish uchun birinchi ikkita raqamga qarang. T davri va puls kengligi P bo'lgan asl signal JK flip-flopining soat piniga uzatiladi, uning J va K pinlari esa har doim balandda (birinchi rasm). 3.3V mantiq butun vaqt davomida qabul qilinadi. Faraz qilaylik, flip-flop soatning ijobiy (ya'ni ko'tarilgan) qirrasidan kelib chiqadi. Bunday sharoitda, chiqish pimi holatining o'zgarishi (individual "burilishlar" va "burilishlar") soat pimi pastdan yuqoriga ko'tarilganda sodir bo'ladi. Soatning balanddan pastgacha o'tishi (ya'ni, salbiy tomoni) umuman e'tiborga olinmaydi. Ikkinchi rasmga qarang. Chiqish pimi Q signalini chiqaradi, uning davri dastlabki davrdan ikki barobar ko'p, ya'ni uning chastotasi ikki baravar kamayadi. Chiqish pulsining kengligi har doim T ga teng. Shunday qilib, asl impuls kengligi P yo'qoladi.

Uchinchi rasmda ko'rsatilgan konfiguratsiyada boshqa JK flip-flopini qo'shish asl chastotani 4 ga bo'linadi.

Muammo: puls kengligini saqlagan holda, kvadrat to'lqin chastotasini qanday ajratish mumkin?

Fikr, aralashmaning salbiy tomonini ishga tushirgan JK flip-flopini to'g'ri qo'shishdir. Keling, uni "Neg FF" deb ataymiz; to'rtinchi rasmga qarang. Bu erda "to'g'ri" degani, yangi flip-flopning J va K pinlari mos ravishda oldingi rasmda ko'rsatilgan 4-bo'linuvchi ("Pos FF") Q va Qbar chiqish pinlariga bog'langanligini anglatadi. (Bu erda "bar" - mantiqiy rad etishni ko'rsatuvchi Q belgisi ustidagi gorizontal chiziq.) Bu nimaga erishganini bilish uchun beshinchi rasmdagi "Neg FF" funktsiyalar jadvaliga qarang: Negning chiqish pimi, Q va Qbar, mos ravishda J va K kirish pinlarining holatini aks ettiring. Bu shuni anglatadiki, ular Pos 'Q va Qbar holatini aks ettiradi. Biroq, Negning teskari aylantiruvchi harakati ijobiy signaldan keyin P vaqtida keladigan asl signalning salbiy chekkasini kutishi kerak. Aha!

Olingan to'lqin shakllari oltinchi rasmda tasvirlangan. "Pos Q" signalini 1/4 chastotada chiqaradi, "Pos Qbar" - teskari, "Neg Q" - "Pos Q" dan keyin, puls kengligi P ga siljiydi va "Neg Qbar" - teskari. Siz "Pos Qbar" va "Neg Q" mantiqiy V va pulsli poezdni ishlab chiqarishining asl puls kengligi P va 1/4 chastota chastotasi bilan ajralib turishini tekshirishingiz mumkin. Bingo!

Avvaliga men MCUni oziqlantirish uchun aynan shu chiqish signalidan foydalandim. Biroq, kirish qismida aytib o'tilgan MCUning 106 tsikli cheklanganligi sababli, juda qisqa puls kengligi uchun muammoli bo'lib chiqdi. Men bu kichik muammoni "Pos Qbar" VA "Neg Qbar" o'rniga boshqa chiqishni tanlab hal qildim. To'lqin shakllariga bir qarash, bu to'lqin shakli P 'ning puls kengligi P. uchun (0, T) diapazoni o'rniga T va 2T oralig'ida o'zgarib turishiga sizni ishontirishi kerak. P ni P' dan osongina tiklash mumkin:

P = 2T - P '

2 -qadam: Tavsiya etilgan apparat

Tavsiya etilgan apparat
Tavsiya etilgan apparat
Tavsiya etilgan apparat
Tavsiya etilgan apparat
Tavsiya etilgan apparat
Tavsiya etilgan apparat

Menga elektron havaskorlarning nisbatan yangi kelgani yoqadi: Atmel SAM D21 MCU 32 bitli ARM Cortex M0+ protsessoriga asoslangan, 48 MGts chastotada ishlaydi, bu eski Atmellardan ancha yuqori. Ushbu loyiha uchun men sotib oldim:

  • Adafruit -dan ItsyBitsy M0 Express MCU kartasi
  • Menda Adafruit -dan qayta zaryadlanuvchi LiPo batareyasi bor edi
  • Monoxrom 128x32 SPI OLED -displey (siz buni taxmin qildingiz: Adafruit)
  • Texas Instruments kompaniyasidan SN74HC109 dual-pozitiv ikki tomonlama ishlangan flip-flop.
  • Texas Instruments kompaniyasidan SN74HC112 dublyajli, ikki tomonlama salbiy tetikli.
  • Texas Instruments kompaniyasidan CD74AC08E to'rtburchaklar va eshiklari
  • Texas Instruments kompaniyasidan CD74AC32E to'rtburchaklar yoki eshiklari

3 -qadam: O'chirish davri

O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri

Birinchi rasmda chastota/vazifa o'lchagichining soddalashtirilgan sxemasi ko'rsatilgan. 3.3 V CMOS mantig'i butun vaqt davomida qabul qilinadi. Shunday qilib, kirish kvadrat to'lqinining amplitudasi mos keladigan V o'rtasida bo'lishi kerakIH darajasi (ya'ni, 2 V) va 3.3 V. Agar bo'lmasa, uni mos ravishda kattalashtirish yoki kamaytirish kerak. Ko'p hollarda oddiy kuchlanish bo'linishi etarli bo'ladi. Agar siz hisoblagichingizning versiyasini boshqa mantiq darajasida loyihalashtirmoqchi bo'lsangiz, u holda boshqa mikro -kontroller (MCU), batareya va kerakli darajada ishlaydigan displeydan foydalanishingiz kerak bo'ladi. Ushbu loyihada ishlatiladigan mantiq eshiklari va flip-floplar 2 V dan 6 V gacha bo'lgan har qanday joyda mantiq darajasida ishlaydi va ko'p hollarda yaxshi bo'lishi kerak.

Ko'rsatilganidek, ItsyBitsy MCU displey bilan SPI protokoli orqali aloqa qilish uchun 9-13-pinlardan foydalanadi. 3V pin butun kontaktlarning zanglashiga olib keladi. Raqamli kirish pimi 3 tahlil qilingan signalni qabul qiladi, 2 va 4 -pinlar signal manbasini boshqaradi: to'g'ridan -to'g'ri signal AND3 (past kirish chastotalari) yoki 2 -bosqichda ta'riflanganidek, AND4 (yuqori kirish chastotalari) orqali 4 ga bo'lingan signal. Keyingi bosqichda muhokama qilinadigan kod, kiruvchi chastota diapazonini avtomatik ravishda aniqlaydi va signal manbasini mos ravishda o'zgartiradi.

Sxema raqamli chip ulanishlarining haqiqiy murakkabligini ko'rsatmaydi. Ikkinchi rasmda loyihaning taxtada qanday ko'rinishini ko'rsatadi. Kirish signali qizil sim orqali ikki qirrali flip-flopning 2CLK piniga keladi. OGOHLANTIRISH: Odatda, bu flip -flopning barcha J va K pinlari baland bo'lishi kerak, lekin SN74HC109, xususan, Kbar pinini - teskari K pinini - o'z ichiga oladi. Shunday qilib, bu pin erga ulangan bo'lishi kerak! SN74HC112 dagi birinchi salbiy qirrali flip-flopda SN74HC109 ning 1Q va 1Qbar pimlariga ulangan 1K va 1J pinlari bor. SN74HC112 dagi ikkinchi flip-flop ishlatilmayapti va uning kirish pinlari (2K, 2J, 2CLRbar) erga ulangan. Boshqa flip-floplardagi PREbar (oldindan o'rnatilgan) va CLRbar (aniq) boshqa barcha qo'shimcha pinlar mantiqiy balandlikka ulangan bo'lishi kerak. Ishlatilmagan soat va chiqish pinlari ulanmagan holda qoladi. Xuddi shunday, barcha eshiklardagi ishlatilmaydigan kirish pinlari erga ulangan, ishlatilmagan chiqish pinlari esa ulanmagan holda qoldirilgan. Men "Telefon qo'ng'irog'ining ko'rinmas qotili" da muhokama qilganimdek, mantiqiy chiplarning ishlatilmaydigan kirish pinlari tasodifiy tebranishlarni yo'q qiladi va batareya quvvatini tejaydi.

4 -qadam: Kod va past chastotalarni o'lchash

Tabiiyki, barcha harakatlar quyida ko'rsatilgan kodda sodir bo'ladi. 3 -pinga kiruvchi kirish raqamli pastdan yuqori darajaga o'tganda, MCU o'zining 48 MGts chastotali ichki pulslarini hisoblashni boshlaydi. U pastdan pastgacha o'tish vaqtini qayd etadi va hisobni keyingi pastdan yuqori darajaga o'tguncha davom etadi, u butun jarayonni qayta boshlaganda. Birinchi hisoblash pulsning kengligini, butun hisoblash signalning davrini bildiradi. Va bu butun sir.

CPU bu o'tishni apparat uzilishlari orqali qayd qiladi. SAMD21 -da bir nechta soatlar mavjud; mening kodim TC3 birini ishlatadi. Dastlab, men M0 ma'lumot varag'ini o'qishni to'xtatib ishlov beruvchini kodlashda ko'p harakatlarni o'qishdan boshladim, lekin tez orada Arduino Forumidagi foydalanuvchilarning elektron_95, MartinL va Rucus xabarlari bilan bog'liq bo'lgan kodni topdim. tegishli ravishda tan olingan. Men ularning kombinatsiyalangan kodini o'z kodimga qo'shdim va o'zgartirdim; menga ko'p vaqtni tejaydi!

Yuqorida aytib o'tganimdek, uzilishlar orasidagi kodni bajarish uchun signal o'lchamlari ~ 106 protsessor tsikli bilan cheklangan. Puls kengligi saqlanadigan raqamli bo'linish yuqori chastotalarga e'tibor beradi. Boshqa tomondan, past chastotalar yana bir qiyinchilik tug'diradi: TC3 soat taymerining uzunligi 16 bit, chunki u 65, 536 sanoq chegarasini kesib o'tganidan keyin toshib ketadi. Bu vaziyatni to'la-to'kis uzilish qo'shib hal qilish mumkin, lekin boshqa echimni tanlash mumkin: TC3 48 MGtsli apparat o'rniga oldindan o'rnatilgan (ya'ni dasturiy ta'minotga bo'lingan) protsessor soatidan foydalanishi mumkin. Shunday qilib, agar signal davri oshib ketish chegarasiga yaqinlashsa, kod TC3ga keyingi davr uchun 24 MGts tezlikdan foydalanishni ko'rsatishi mumkin va voila hisoblagich 32, 768 sonidan pastga tushadi. Hatto pastroq chastotalar uchun TC3 ga 12 MGts chastotali pulslarni va boshqalarni sanashni buyurish mumkin. TC3 hisoblagichini haddan oshib ketish chegarasida ushlab turish uchun tegishli prescaler avtomatik ravishda signal chastotasiga asoslangan holda histerezis bilan aniqlanadi. Natijada, qurilma diapazonining pastki uchi taxminan 43 Gts ni tashkil qiladi.

Siz kodni ajratib, uni loyihangizda ishlatishingiz mumkin, lekin natijalarni e'lon qilishda uning manbasini aytib bering.

Kodga havola.