Mündəricat:

Arduino Timers: 8 Layihə: 10 Addım (Şəkillərlə birlikdə)
Arduino Timers: 8 Layihə: 10 Addım (Şəkillərlə birlikdə)

Video: Arduino Timers: 8 Layihə: 10 Addım (Şəkillərlə birlikdə)

Video: Arduino Timers: 8 Layihə: 10 Addım (Şəkillərlə birlikdə)
Video: ESP32 Tutorial 10 - Digital counter using Seven Segment Display 74HC595 -ESP32 IoT Learnig kit 2024, Noyabr
Anonim
Arduino Taymerləri: 8 Layihə
Arduino Taymerləri: 8 Layihə

Arduino Uno və ya Nano, üç quraşdırılmış taymerdən istifadə edərək altı xüsusi pin üzərində dəqiq rəqəmsal siqnallar yarada bilər. İşlətmək üçün heç bir CPU dövrü qurmaq və istifadə etmək üçün yalnız bir neçə əmr tələb olunur!

Təsvirlərinə həsr olunmuş 90 səhifəsi olan ATMEGA328 tam məlumat cədvəlindən başlasanız, taymerlərin istifadəsi qorxuducu ola bilər! Bir neçə quraşdırılmış Arduino əmri artıq taymerlərdən istifadə edir, məsələn millis (), delay (), tone (), AnalogWrite () və servo kitabxana. Ancaq bütün güclərindən istifadə etmək üçün onları qeydlər vasitəsi ilə qurmalısınız. Bunu daha asan və daha şəffaf etmək üçün burada bəzi makroları və funksiyaları paylaşıram.

Taymerlərə çox qısa bir baxışdan sonra, taymerlərlə siqnal istehsalına əsaslanan 8 sərin layihəni izləyin.

Addım 1: Tələb olunan komponentlər

Tələb olunan komponentlər
Tələb olunan komponentlər

Bütün 8 layihəni həyata keçirmək üçün sizə lazım olacaq:

  • Bir Arduino Uno və ya uyğun
  • Mini protoboard ilə prototip qalxan
  • 6 ədəd çörək taxtası tullanan kabel
  • 6 qısa çörək taxtası atlayıcısı (özünüzü 10 sm möhkəm nüvəli bağlama teldən düzəldin)
  • 2 timsah aparatı
  • 1 ağ 5 mm LED
  • 220 Ohm müqavimət
  • 10 kOhm müqavimət
  • 10kOhm potansiyometr
  • 2 keramika 1muF kondansatör
  • 1 elektrolitik 10 muF kondansatör
  • 2 diod, 1n4148 və ya buna bənzər
  • 2 mikro servo mühərrik SG90
  • 18Ohm dinamik
  • 20 m nazik (0.13 mm) emaye tel

Addım 2: Siqnal Yaratma Arduino Taymerlərinə Baxış

Timer0 və timer2 8 bitlik taymerlərdir, yəni ən çox 0-dan 255-ə qədər saya bilərlər. Timer1 16 bitlik bir taymerdir, buna görə də 65535-ə qədər saya bilər. Hər bir taymerin iki əlaqəli çıxış pinləri var: timer0 üçün 6 və 5, timer1 üçün 9 və 10, timer2 üçün 11 və 3. Taymer hər bir Arduino saatında və ya 8, 64, 256 və ya 1024 (32 və 128 -ə taymer2 üçün də icazə verilir) olan bir ölçmə faktoru ilə azaldılmış nisbətdə artırılır. Taymerlər 0 -dan "TOP" a, sonra yenidən (sürətli PWM) və ya aşağıya doğru (faza doğru PWM) sayılır. 'TOP' dəyəri beləliklə tezliyi təyin edir. Çıxış pinləri, Çıxış Müqayisəsi Qeydinin dəyərini təyin edə, sıfırlaya və ya çevirə bilər, buna görə də vəzifə dövrünü təyin edirlər. Yalnız timer1, hər iki çıxış sancağı üçün tezliyi və iş dövrlərini müstəqil olaraq təyin etmək qabiliyyətinə malikdir.

Addım 3: LED yanıb sönür

Image
Image
LED yanıb -sönür
LED yanıb -sönür
LED yanıb -sönür
LED yanıb -sönür

8 bitlik taymerlərlə əldə edilə bilən ən aşağı tezlik 16MHz/(511*1024) = 30, 6Hz-dir. Bir LED -in 1Hz ilə yanıb -sönməsi üçün 256 dəfə kiçik, 0.12 Hz tezliklərə çata bilən timer1 lazımdır.

Pin9 -a anodu (uzun ayağı) olan bir LED bağlayın və katotunu 220 Ohm rezistorla yerə bağlayın. Kodu yükləyin. LED tam olaraq 1Hz -də yanıb -sönəcək, işləmə dövrü 50%-dir. Loop () funksiyası boşdur: taymer setup () zamanı işə salınır və əlavə diqqətə ehtiyac yoxdur.

Addım 4: LED Dimmer

Image
Image
LED Dimmer
LED Dimmer
LED Dimmer
LED Dimmer

Darbe eni modulyasiyası, bir LED-in intensivliyini tənzimləmək üçün təsirli bir yoldur. Uyğun bir sürücü ilə, elektromotorların sürətini tənzimləmək üçün də üstünlük verilən bir üsuldur. Siqnal ya 100% açıq, ya da 100% söndürüldüyü üçün seriyalı müqavimətdə heç bir güc sərf edilmir. Əsasən, LED -in gözün izləyə biləcəyindən daha sürətli yanıb -sönməsi kimidir. 50Hz prinsipcə kifayətdir, amma yenə də bir az titrəyir kimi görünə bilər və LED və ya gözlər hərəkət edərkən sinir bozucu fasiləsiz "cığır" yarana bilər. 8 bitlik bir taymer ilə 64-ün bir ön ölçüsünü istifadə edərək, məqsədə uyğun 16MHz/(64*256) = 977Hz alırıq. Taymer2 seçirik ki, timer1 digər funksiyalar üçün mövcud olsun və timer0 istifadə edən Arduino time () funksiyasına müdaxilə etməyək.

Bu nümunədə vəzifə dövrü və beləliklə intensivlik potensiometr tərəfindən tənzimlənir. İkinci bir LED, pin 3 -də eyni taymerlə müstəqil olaraq tənzimlənə bilər.

Addım 5: Rəqəmsal-Analog Dönüştürücü (DAC)

Image
Image
Rəqəmsal-Analog Dönüştürücü (DAC)
Rəqəmsal-Analog Dönüştürücü (DAC)
Rəqəmsal-Analog Dönüştürücü (DAC)
Rəqəmsal-Analog Dönüştürücü (DAC)

Arduinonun əsl analoq çıxışı yoxdur. Bəzi modullar bir parametri tənzimləmək üçün analoq gərginlik götürür (ekran kontrastı, aşkarlama həddi və s.). Yalnız bir kondansatör və rezistorla, timer1 5mV və ya daha yaxşı bir qətnamə ilə analog gərginlik yaratmaq üçün istifadə edilə bilər.

Aşağı keçidli bir filtr, PWM siqnalını analoq bir gərginliyə 'orta' verə bilər. Bir kondansatör bir rezistor vasitəsilə PWM pininə bağlanır. Xüsusiyyətlər PWM tezliyi və müqavimət və kondansatörün dəyərləri ilə müəyyən edilir. 8 bitlik taymerlərin həlli 5V/256 = 20mV olardı, buna görə də 10 bitlik qətnamə əldə etmək üçün Timer1-i seçirik. RC dövrəsi birinci dərəcəli aşağı keçidli bir filtrdir və bir qədər dalğalanacaq. Dalğalanmanı azaltmaq üçün RC dövrəsinin zaman miqyası PWM siqnalının dövründən çox böyük olmalıdır. 10 bitlik dəqiqlik üçün əldə etdiyimiz dövr 1024/16MHz = 64musdur. 1muF kondansatör və 10kOhm rezistor istifadə etsək, RC = 10ms. Zirvədən zirvəyə qədər olan dalğalanma ən çox 5V*0.5*T/(RC) = 16mV-dir, burada kifayət sayılır.

Qeyd edək ki, bu DAC çox yüksək çıxış empedansına malikdir (10kOhm), buna görə də cərəyan çəkərsə gərginlik əhəmiyyətli dərəcədə azalacaq. Bunun qarşısını almaq üçün bir opamp ilə tamponlaşdırıla bilər və ya başqa bir R və C birləşməsi seçilə bilər, məsələn 10muF ilə 1kOhm.

Misalda, DAC çıxışı potensiometrlə idarə olunur. İkinci müstəqil DAC kanalı, pin 10 -da timer1 ilə işlədilə bilər.

Addım 6: Metronom

Image
Image
Metronom
Metronom
Metronom
Metronom

Metronom musiqi çalarkən ritmi izləməyə kömək edir. Çox qısa zərbələr üçün, arduino timer çıxışı birbaşa dinamikə verilə bilər ki, bu da aydın eşidilə bilən kliklərə səbəb olur. Potansiyometr ilə vuruş tezliyi 39 addımda dəqiqədə 40 -dan 208 -ə qədər tənzimlənə bilər. Lazım olan dəqiqlik üçün Timer1 lazımdır. Tezliyi təyin edən 'TOP' dəyəri, loop () funksiyasında dəyişdirilir və bu diqqət tələb edir! Burada WGM rejiminin sabit tezliyə malik digər nümunələrdən fərqləndiyini görürsünüz: OCR1A reyestri tərəfindən təyin olunan TOP ilə bu rejimin ikiqat tamponlaması var və TOP -un itkin düşməsindən və uzun bir arızadan qorunur. Ancaq bu, yalnız 1 çıxış pinindən istifadə edə biləcəyimiz deməkdir.

Addım 7: Səs Spektri

Image
Image
Səs spektri
Səs spektri
Səs spektri
Səs spektri

İnsanlar 20Hz -dən 20kHz -ə qədər səs tezliklərinin 3 əmrini eşidə bilərlər. Bu nümunə potensiometr ilə tam spektr yaradır. DC cərəyanının qarşısını almaq üçün dinamik və Arduino arasında 10muF kondansatör qoyulur. Timer1 bir kvadrat dalğa yaradır. Buradakı Dalğa Forması rejimi, Faza Düzgün PWM-dir. Bu rejimdə sayğac yuxarıya çatdıqda geri saymağa başlayır, bu da vəzifə dövrü dəyişdiyində belə ortalamalarını sabitləşdirmiş impulslarla nəticələnir. Bununla yanaşı, eyni zamanda (demək olar ki) ikiqat bir dövrlə nəticələnir və belə olur ki, əvvəlcədən ölçmə 8 ilə timer1, əvvəlcədən ölçüsünü dəyişməyə ehtiyac olmadan tam səsli spektri əhatə edir. Həm də burada, TOP-un dəyəri yolda dəyişdirildiyindən, yuxarıdakı kimi OCR1A istifadə etmək qüsurları azaldır.

Addım 8: Servo Motors

Image
Image
Servo Motorlar
Servo Motorlar
Servo Motorlar
Servo Motorlar

Güclü servo kitabxanaları var, ancaq sürücülük üçün yalnız iki servo varsa, bunu timer1 ilə də edə bilərsiniz və beləliklə CPU, yaddaş istifadəsini azalda və fasilələrin qarşısını ala bilərsiniz. Məşhur SG90 servo 50Hz siqnal alır və nəbz uzunluğu mövqeyi kodlaşdırır. Taymer üçün idealdır1. Tezlik sabitdir, buna görə pin9 və pin 10dakı hər iki çıxış servoları müstəqil olaraq idarə etmək üçün istifadə edilə bilər.

Addım 9: Gərginlik Doubler və İnverter

Gərginlik Doubler və İnverter
Gərginlik Doubler və İnverter
Gərginlik artırıcı və çevirici
Gərginlik artırıcı və çevirici
Gərginlik artırıcı və çevirici
Gərginlik artırıcı və çevirici

Bəzən layihəniz üçün 5V -dan yuxarı və ya mənfi bir gərginlik tələb olunur. Bir MOSFET işlətmək, bir piezo elementi işə salmaq, bir opampı gücləndirmək və ya bir EEPROMu sıfırlamaq ola bilər. Cari çəkmə ~ 5mA -a qədər kifayət qədər kiçikdirsə, bir doldurma pompası ən sadə həll ola bilər: yalnız 2 diod və bir taymerdən puls siqnalına qoşulmuş iki kondansatör arduino 5V -dən 10V -a qədər ikiqat artırmağa imkan verir. Praktikada, 2 diod damcı var, buna görə praktikada dubler üçün 8.6V və ya çevirici üçün -3.6V kimi olacaq.

Kvadrat dalğanın tezliyi diodlar vasitəsilə kifayət qədər yük vurmaq üçün kifayət olmalıdır. 1muF kondansatör, gərginlik 0 ilə 5V arasında dəyişdikdə 5muC dəyişikliyi hərəkət etdirir, buna görə də 10mA cərəyan üçün tezlik ən az 2kHz olmalıdır. Təcrübədə dalğalanmanı azaldığından daha yüksək tezlik daha yaxşıdır. Ölçmədən əvvəl 0 -dan 255 -ə qədər olan timer2 ilə tezlik 62.5kHz -dir və bu da yaxşı işləyir.

Addım 10: Simsiz Güc Transferi

Image
Image
Simsiz Güc Transferi
Simsiz Güc Transferi
Simsiz Güc Transferi
Simsiz Güc Transferi

Kabel olmadan ağıllı saatı doldurmaq nadir deyil, amma eyni zamanda Arduino layihəsinin bir hissəsi ola bilər. Yüksək tezlikli siqnalı olan bir bobin, elektriklə təmas etmədən induksiya yolu ilə yaxınlıqdakı başqa bir bobinə güc ötürə bilər.

Əvvəlcə rulonları hazırlayın. 2 rulon düzəltmək üçün 8,5 sm diametrli kağız rulonundan və 0,13 mm diametrli emaye teldən istifadə etdim: birincisi 20 döngə, ikincisi 50 növbə ilə. N sarımlı və R radiuslu bu tip bobinin öz indüktansı ~ 5muH * N^2 * R-dir. Buna görə N = 20 və R = 0.0425 üçün komponent test cihazı ilə təsdiqlənmiş L = 85muH verir. 516kHz tezliyi olan bir siqnal istehsal edirik, nəticədə 2pi*f*L = 275Ohm bir empedans əldə edirik. Bu kifayət qədər yüksəkdir ki, Arduino həddindən artıq cərəyana girmir.

Bobini ən təsirli şəkildə idarə etmək üçün əsl AC mənbəyindən istifadə etmək istərdik. Edilə bilən bir hiylə var: bir taymerin iki çıxışı, çıxışlardan birini ters çevirərək əks fazada işlədilə bilər. Bir sinus dalğasına daha da bənzər etmək üçün Faza uyğun PWM-dən istifadə edirik. Bu şəkildə, pin 9 ilə 10 arasında, gərginlik hər iki 0V, pin 9 +5V, hər ikisi 0V, pin 10 +5V arasında dəyişir. Təsir, bir çərçivə izindən şəkildə göstərilmişdir (1024 ön ölçüsü ilə, bu oyuncağın əhatə dairəsi çox genişliyə malik deyil).

Əsas bobini 9 və 10 -cu pinlərə bağlayın. İkincil bobin birinciyə yaxınlaşdırıldıqda, LED parlaq yanır.

Tövsiyə: