Mündəricat:
- Addım 1: Tələb olunan komponentlər
- Addım 2: Siqnal Yaratma Arduino Taymerlərinə Baxış
- Addım 3: LED yanıb sönür
- Addım 4: LED Dimmer
- Addım 5: Rəqəmsal-Analog Dönüştürücü (DAC)
- Addım 6: Metronom
- Addım 7: Səs Spektri
- Addım 8: Servo Motors
- Addım 9: Gərginlik Doubler və İnverter
- Addım 10: Simsiz Güc Transferi
Video: Arduino Timers: 8 Layihə: 10 Addım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
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
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
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
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)
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
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
İ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
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
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
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ə:
Dub Siren Synth - 555 Layihə V2: 13 Addım (Şəkillərlə birlikdə)
Dub Siren Synth - 555 Project V2: İlk dub siren quruluşum bir az mürəkkəb idi. Yaxşı işləsə də, gücünü artırmaq üçün 3 x 9V batareyaya ehtiyacınız var idi və əsas dövrəni prototip lövhəsində qurmalı oldum. İlk video, səslərinizin bir demosudur
WIND - Adafruit Tüyü üçün Layihə Sürətləndiricisi: 9 Addım (Şəkillərlə birlikdə)
WIND - Adafruit Tüyü üçün Layihə Sürətləndiricisi: Yavaş -yavaş Adafruit -dən mövcud olan müxtəlif Adafruit Feather mikrokontrolörlərini və sensor lövhələrini toplayıram. Prototip hazırlamağı və test etməyi çox asanlaşdırırlar və mən lövhənin düzülüşünün böyük bir tərəfdarıyam. Özümü burada tapdığım üçün
Robot Gong: Satış və Məhsul Geeksləri üçün Ultimate Hackaton Layihə Fikri (Kodlaşdırma Lazım deyil): 17 Addım (Şəkillərlə birlikdə)
Robot Gong: Satış və Məhsul Geeksləri üçün Hackaton Layihəsi İdeyası (Kodlaşdırma Tələb olunmur): E -poçtla tetiklenen bir robot musiqi gong quraq. Bu, gongu söndürmək üçün avtomatik e -poçt siqnalları qurmağa imkan verir … (SalesForce, Trello, Basecamp vasitəsilə …) Komandanız bir daha " GONGGG " yeni kod çıxanda, bir dea
Layihə 2 Ağıllı Dəbilqə: 6 Addım (Şəkillərlə birlikdə)
Layihə 2 Ağıllı Dəbilqə: Biz, Benoot Sven, Staelens Lennert və Dujardin Laurens, məktəb üçün bir layihə hazırlamalı olduq. IPO (Sənaye Məhsul Dizaynı) tələbəsi ilə birlikdə işləmək məcburiyyətində qaldıq. Ağıllı bir motosiklet dəbilqəsi düzəltmək fikri ilə gəldi. Dizaynını hazırladı
USB ilə işləyən brülör! Bu Layihə Plastik / Ağac / Kağızdan Yanar (Əyləncəli Layihə Çox İncə Taxta Olmalıdır): 3 Addım
USB ilə işləyən brülör! Bu Layihə Plastik / Ağac / Kağızdan Yandırıla bilər (əyləncəli Layihə Çox İncə Taxta Olmalıdır): BU USB İSTİFADƏ ETMƏYİN !!!! Bütün şərhlərdən kompüterinizə zərər verə biləcəyini öyrəndim. mənim kompüterim yaxşıdır 600ma 5v telefon şarj cihazı istifadə edin. Bunu istifadə etdim və yaxşı işləyir və elektrik enerjisini dayandırmaq üçün təhlükəsizlik fişindən istifadə etsəniz heç bir şey zədələnə bilməz