Mundarija:

Arduino taymerlari: 8 ta loyiha: 10 qadam (rasmlar bilan)
Arduino taymerlari: 8 ta loyiha: 10 qadam (rasmlar bilan)

Video: Arduino taymerlari: 8 ta loyiha: 10 qadam (rasmlar bilan)

Video: Arduino taymerlari: 8 ta loyiha: 10 qadam (rasmlar bilan)
Video: LDmicro 8: Охранная сигнализация с таймерами (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 2024, Iyun
Anonim
Arduino taymerlari: 8 ta loyiha
Arduino taymerlari: 8 ta loyiha

Arduino Uno yoki Nano uchta o'rnatilgan taymer yordamida oltita ajratilgan pinda aniq raqamli signallarni ishlab chiqarishi mumkin. Ishlash uchun CPU tsikllarini o'rnatish va ishlatmaslik uchun ular faqat bir nechta buyruqlarni talab qiladi!

Taymerlardan foydalanish qo'rqinchli bo'lishi mumkin, agar siz ularning tavsifiga bag'ishlangan 90 sahifali ATMEGA328 to'liq ma'lumotlar jadvalidan boshlasangiz! Bir nechta o'rnatilgan Arduino buyruqlari allaqachon taymerlardan foydalanadi, masalan millis (), delay (), tone (), AnalogWrite () va servo kutubxona. Ammo ularning to'liq quvvatidan foydalanish uchun ularni registrlar orqali sozlash kerak bo'ladi. Men buni osonroq va oshkora qilish uchun ba'zi makrolar va funktsiyalarni baham ko'raman.

Taymerlar haqida qisqacha ma'lumotdan so'ng, taymerlar yordamida signal ishlab chiqarishga asoslangan 8 ta ajoyib loyihani bajaring.

1 -qadam: kerakli komponentlar

Kerakli komponentlar
Kerakli komponentlar

Barcha 8 ta loyihani amalga oshirish uchun sizga kerak bo'ladi:

  • Arduino Uno yoki mos keladi
  • Mini protobardli prototipli qalqon
  • 6 ta taxtali o'tish kabeli
  • 6 ta qisqa taxtali o'tish moslamalari (o'zingizni 10 sm qattiq yadroli ulash simidan yasang)
  • 2 ta timsoh
  • 1 oq 5 mm LED
  • 220 Ohm qarshilik
  • 10 kOhm qarshilik
  • 10 kOt potentsiometr
  • 2 ta keramika 1 mF kondansatör
  • 1 elektrolitik 10muF kondansatör
  • 2 diod, 1n4148 yoki shunga o'xshash
  • 2 mikro servo dvigatel SG90
  • 1 8 Ohm karnay
  • 20 m ingichka (0,13 mm) emallangan sim

2 -qadam: Signal ishlab chiqarish uchun Arduino taymerlari haqida umumiy ma'lumot

Timer0 va timer2-8 bitli taymerlar, ya'ni ular eng ko'pi 0 dan 255 gacha hisoblashlari mumkin. Timer1-16 bitli taymer, shuning uchun u 65535 gacha hisoblashi mumkin. Har bir taymerda ikkita bog'liq chiqish pimi bor: taymer0 uchun 6 va 5, taymer1 uchun 9 va 10, taymer2 uchun 11 va 3. Taymer har bir Arduino soat tsiklida yoki 8, 64, 256 yoki 1024 (oldindan taymer2 uchun 32 va 128 ga ruxsat berilgan) oldindan hisoblangan faktor bilan kamaytiriladigan tezlikda ko'payadi. Taymerlar 0 dan "TOP" gacha, keyin yana (tez PWM) yoki pastga (fazali to'g'ri PWM) sanaladi. Shunday qilib, "TOP" qiymati chastotani aniqlaydi. Chiqish pimlari Chiqish taqqoslash registrining qiymatini o'rnatishi, qayta o'rnatishi yoki o'zgartirishi mumkin, shuning uchun ular ish aylanishini aniqlaydilar. Faqat taymer1 har ikkala chiqish pimi uchun chastota va ish davrlarini mustaqil ravishda sozlash imkoniyatiga ega.

3 -qadam: LED chirog'i

Image
Image
LED chirog'i
LED chirog'i
LED chirog'i
LED chirog'i

8-bitli taymerlar yordamida erishish mumkin bo'lgan eng past chastota-16 MGts/(511*1024) = 30, 6 Gts. Shunday qilib, LEDni 1 Gts bilan miltillash uchun bizga taymer1 kerak bo'ladi, u 256 barobar kichikroq, 0,12 Gts chastotaga etadi.

LEDni anodli (uzun oyog'i) pin9 ga ulang va katodini 220 Ohm qarshilik bilan erga ulang. Kodni yuklang. Svetodiod 1%chastotada miltillaydi va ish aylanishi 50%ni tashkil qiladi. Loop () funktsiyasi bo'sh: taymer setup () da ishga tushiriladi va boshqa e'tiborga muhtoj emas.

4 -qadam: LED Dimmer

Image
Image
LED Dimmer
LED Dimmer
LED Dimmer
LED Dimmer

Darbeli kenglikdagi modulyatsiya-bu LEDning intensivligini tartibga solishning samarali usuli. Tegishli haydovchi bilan, shuningdek, elektromotorlarning tezligini tartibga solishning afzal usuli hisoblanadi. Signal 100% yoqilgan yoki 100% o'chirilganligi sababli, ketma -ket qarshilikka hech qanday kuch sarflanmaydi. Asosan, bu LEDni ko'zni kuzatgandan ko'ra tezroq miltillashga o'xshaydi. 50 Gts printsipial jihatdan etarli, lekin u hali ham biroz miltillab turgandek tuyulishi mumkin va LED yoki ko'zlar harakatlansa, zerikarli uzluksiz "iz" paydo bo'lishi mumkin. 8-bitli taymerli 64-chi oldindan o'lchovdan foydalanib, biz 16 MGts/(64*256) = 977 Gts ni olamiz, bu maqsadga mos keladi. Biz taymer2 ni tanlaymiz, shuning uchun taymer1 boshqa funktsiyalar uchun mavjud bo'lib qoladi va biz taymer0 ishlatadigan Arduino time () funktsiyasiga aralashmaymiz.

Bu misolda ish tsikli va shuning uchun intensivlik potentsiometr bilan tartibga solinadi. Ikkinchi LEDni, xuddi shu taymer yordamida, 3 -pin bilan mustaqil ravishda sozlash mumkin.

5-qadam: Raqamli-analogli konvertor (DAC)

Image
Image
Raqamli-analogli konvertor (DAC)
Raqamli-analogli konvertor (DAC)
Raqamli-analogli konvertor (DAC)
Raqamli-analogli konvertor (DAC)

Arduino haqiqiy analog chiqishga ega emas. Ba'zi modullar parametrni tartibga solish uchun analog kuchlanishni oladi (displey kontrasti, aniqlash chegarasi va boshqalar). Faqat bitta kondansatör va rezistor bilan, taymer1 yordamida 5 mV yoki undan yuqori rezolyutsiyali analog kuchlanishni yaratish mumkin.

Past o'tkazgichli filtr PWM signalini analog kuchlanishga "o'rtacha" berishi mumkin. Kondensator rezistor orqali PWM piniga ulanadi. Xususiyatlar PWM chastotasi va qarshilik va kondansatör qiymatlari bilan belgilanadi. 8-bitli taymerlarning o'lchamlari 5V/256 = 20mV bo'ladi, shuning uchun biz 10-bitli piksellar sonini olish uchun Timer1-ni tanlaymiz. RC sxemasi birinchi darajali past o'tkazgichli filtr bo'lib, u biroz to'lqinli bo'ladi. RC sxemasining vaqt o'lchami to'lqinni kamaytirish uchun PWM signalining davridan ancha katta bo'lishi kerak. 10-bitli aniqlik uchun biz oladigan vaqt-1024/16MGts = 64mus. Agar biz 1muF kondansatör va 10kOm qarshilik ishlatsak, RC = 10ms. Cho'qqining tepalikdagi to'lqini maksimal 5V*0,5*T/(RC) = 16mV, bu erda etarli deb hisoblanadi.

E'tibor bering, bu DAC juda yuqori chiqish empedansiga ega (10kOm), shuning uchun agar u tokni tortsa, kuchlanish sezilarli darajada pasayadi. Bunga yo'l qo'ymaslik uchun uni opamp bilan tamponlash mumkin, yoki boshqa R va C kombinatsiyasini tanlash mumkin, masalan 10muF bilan 1kOm.

Masalan, DAC chiqishi potentsiometr bilan boshqariladi. Ikkinchi mustaqil DAC kanali 10 -pinli taymer1 bilan ishlashi mumkin.

6 -qadam: Metronom

Image
Image
Metronom
Metronom
Metronom
Metronom

Metronom musiqa chalishda ritmni kuzatishga yordam beradi. Juda qisqa pulslar uchun, arduino taymerining chiqishi to'g'ridan -to'g'ri karnayga berilishi mumkin, bu aniq eshitiladigan sekin urishlarni beradi. Potentsiometr yordamida urish chastotasini 39 bosqichda daqiqada 40 dan 208 gacha urish mumkin. Taymer1 kerakli aniqlik uchun kerak. Chastotani aniqlaydigan "TOP" qiymati loop () funktsiyasida o'zgartiriladi va bu e'tiborni talab qiladi! Siz bu erda WGM rejimi boshqa chastotali misollardan farq qilishini ko'rasiz: OCR1A registri tomonidan TOP o'rnatilgan bu rejim ikki baravar buferga ega va TOPni etishmasligidan va uzoq nosozlikdan himoya qiladi. Ammo bu shuni anglatadiki, biz faqat bitta chiqish pinidan foydalanishimiz mumkin.

7 -qadam: Ovoz spektri

Image
Image
Ovoz spektri
Ovoz spektri
Ovoz spektri
Ovoz spektri

Odamlar 20 gigagertsdan 20 kHz gacha bo'lgan 3 ta tovush chastotasi buyrug'ini eshitishi mumkin, bu misol potentsiometr yordamida to'liq spektrni hosil qiladi. DC oqimini blokirovka qilish uchun dinamik va Arduino o'rtasida 10muF kondansatör o'rnatilgan. Timer1 kvadrat to'lqin hosil qiladi. Bu erda to'lqin shaklini yaratish rejimi-bosqichma-bosqich PWM. Bu rejimda hisoblagich tepaga yetganda orqaga hisoblashni boshlaydi, natijada, impulslar o'rtacha, hatto ish aylanishi o'zgarganda ham belgilanadi. Shu bilan birga, bu (deyarli) ikki baravar ko'p bo'lgan davrga olib keladi va shunday bo'ladiki, oldindan o'lchov 8 bilan taymer1 oldindan o'lchovni o'zgartirishga hojat qoldirmasdan, to'liq eshitiladigan spektrni qamrab oladi. Shuningdek, bu erda TOP qiymati yo'lda o'zgarib borayotganligi sababli, OCR1A-ni ishlatish xatolarni kamaytiradi.

8 -qadam: Servo motorlar

Image
Image
Servo motorlar
Servo motorlar
Servo motorlar
Servo motorlar

Quvvatli servo kutubxonalar mavjud, lekin agar sizda faqat ikkita servo haydovchi bo'lsa, siz buni to'g'ridan -to'g'ri taymer1 bilan bajarishingiz va shu bilan CPU, xotiradan foydalanishni kamaytirishi va uzilishlardan saqlanishingiz mumkin. Ommabop SG90 servo 50 gigagertsli signalni oladi va puls uzunligi pozitsiyani kodlaydi. Taymer uchun ideal 1. Chastotasi aniq, shuning uchun pin9 va pin 10 -ning ikkala chiqishi ham servolarni mustaqil boshqarish uchun ishlatilishi mumkin.

9 -qadam: kuchlanish kuchaytirgichi va inverter

Voltaj ikki barobar va inverter
Voltaj ikki barobar va inverter
Voltaj ikki barobar va inverter
Voltaj ikki barobar va inverter
Voltaj ikki barobar va inverter
Voltaj ikki barobar va inverter

Ba'zan sizning loyihangiz 5V dan yuqori kuchlanish yoki manfiy kuchlanish talab qiladi. Bu MOSFETni ishga tushirish, piezo elementni ishga tushirish, opampni yoqish yoki EEPROMni qayta o'rnatish bo'lishi mumkin. Agar oqim chizig'i etarlicha kichik bo'lsa, ~ 5mA gacha bo'lsa, zaryad pompasi eng oddiy echim bo'lishi mumkin: atigi 2 diod va taymerdan pulsatsiyalangan signalga ulangan ikkita kondansatör arduino 5V dan 10V gacha ikki baravar ko'payishiga imkon beradi. Amalda, 2 ta diodli tomchi bor, shuning uchun u amalda dubler uchun 8,6 V ga yoki inverter uchun -3,6 V ga teng bo'ladi.

Kvadrat to'lqinning chastotasi diodlar orqali etarli miqdorda zaryad olish uchun etarli bo'lishi kerak. 1muF kondansatör, kuchlanish 0 dan 5V gacha o'zgarganda, 5muC o'zgaradi, shuning uchun 10mA oqim uchun chastota kamida 2 kHz bo'lishi kerak. Amalda, yuqori chastota yaxshiroq, chunki u to'lqinni kamaytiradi. Taymer2 oldindan o'lchovsiz 0 dan 255 gacha hisoblaganda, chastota 62,5 kHz ni tashkil qiladi, bu yaxshi ishlaydi.

10 -qadam: Simsiz quvvat uzatish

Image
Image
Simsiz quvvat uzatish
Simsiz quvvat uzatish
Simsiz quvvat uzatish
Simsiz quvvat uzatish

Aqlli soatni kabellarsiz zaryad qilish odatiy hol emas, lekin bu osonlikcha Arduino loyihasining bir qismi bo'lishi mumkin. Yuqori chastotali signalga ega bo'lgan lasan, elektr aloqasiz, indüksiyon orqali yaqin atrofdagi boshqa lasanga quvvat uzatishi mumkin.

Avval rulonlarni tayyorlang. Men diametri 8,5 sm bo'lgan qog'oz rulonni va 0,13 mm diametrli emallangan simni ishlatib, ikkita rulon yasadim: birinchisi 20 burilishli, ikkinchisi 50 burilishli. N o'rashli va radiusi R bo'lgan bu turdagi rulonning o'z indüktansi ~ 5muH * N^2 * R. ga teng. Shunday qilib N = 20 va R = 0,0425 uchun L = 85muH beradi, bu komponent tekshirgich bilan tasdiqlangan. Biz 516 kHz chastotali signal ishlab chiqaramiz, natijada empedans 2pi*f*L = 275Ohm bo'ladi. Bu juda yuqori, chunki Arduino haddan tashqari oqimga kirmaydi.

Bobini eng samarali ishlatish uchun biz haqiqiy o'zgaruvchan tok manbaidan foydalanmoqchimiz. Amal qilish mumkin bo'lgan hiyla bor: taymerning ikkita chiqishi qarama -qarshi fazada, chiqishlardan birini teskari burish orqali amalga oshirilishi mumkin. Uni sinus to'lqiniga yanada o'xshash qilish uchun biz Faza-to'g'ri PWM dan foydalanamiz. Shunday qilib, pin 9 dan 10 gacha, kuchlanish 0V, pin 9 +5V, ikkalasi ham 0V, pin 10 +5V o'rtasida o'zgaradi. Effekt rasmda diapazon izidan ko'rsatilgan (1024 oldindan o'lchov bilan, bu o'yinchoq doirasi o'tkazuvchanlik kengligiga ega emas).

Asosiy bobini 9 va 10 -gachasi pinlarga ulang. Ikkilamchi lasan asosiyga yaqinlashtirilganda, LED yorqin yonadi.

Tavsiya: