Mündəricat:
- Addım 1: Bu Layihə üçün Ehtiyac duyduğumuz Şeylər (Tələblər)
- Addım 2: ADC -dən PWM nəzəriyyəsi
- Addım 3: Şematik
- Addım 4: Final Testi
Video: Flyback Transformator və ya Dinamikdə PWM üçün ADC istifadə edərək Arduino ilə Mahnı Çalın: 4 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Salam uşaqlar, Bu, başqa bir təlimatlandırmağımın ikinci hissəsidir (çox çətin idi), Əsasən, bu Layihədə, Arduino -da ADC və TIMERS -dən istifadə edərək Audio Siqnalını PWM Siqnalına çevirdim.
Bu, əvvəlki Təlimatçımdan daha asandır, görmək istəyirsinizsə ilk təlimatçımın bağlantısı budur. keçid
Səs siqnalı, Bit Hızı, Bit dərinliyi, Nümunə götürmə dərəcəsi nəzəriyyəsini başa düşmək üçün nəzəriyyəni Instructable mövzusunda son dərsliyimdə oxuya bilərsiniz. Link yuxarıdadır.
Addım 1: Bu Layihə üçün Ehtiyac duyduğumuz Şeylər (Tələblər)
1. Arduino Board (hər hansı bir lövhədən (328, 2560) istifadə edə bilərik, yəni Mega, Uno, Mini və s.
2. Arduino Studio ilə kompüter.
3. Breadboard və ya Perfboard
4. Tellərin birləşdirilməsi
5. TC4420 (Mosfet sürücüsü və ya belə bir şey)
6. Power Mosfet (N və ya P kanalı, zəhmət olmasa müvafiq olaraq tel çəkin) (N kanalından istifadə etdim)
7. Dinamik və ya Flyback Transformatoru (Bəli düzgün oxudunuz!)
8. Uyğun Güc Təchizatı (0-12V) (öz ATX Güc Təchizatımdan istifadə etmişəm)
9. İstilik Sink (köhnə kompüterimdən xilas oldum).
10. Gücləndirici (normal Musiqi Gücləndiricisi) və ya Gücləndirici Dövrə.
Addım 2: ADC -dən PWM nəzəriyyəsi
Beləliklə, bu Layihədə bir Audio Siqnalının məlumat nümunələrini götürmək üçün Arduino qurulmuş ADC -dən istifadə etdim.
ADC (Analog-to-Digital Converter) adının təyin etdiyi kimi, ADC Analog siqnalını rəqəmsal nümunələrə çevirir. Və maksimum 10 bit dərinliyə malik Arduino üçün. Ancaq bu Layihə üçün 8 bitlik Nümunə götürmədən istifadə edəcəyik.
Arduino ADC -dən istifadə edərkən ADC_reference Voltajını nəzərə almalıyıq.
Arduino Uno, 1.1V, 5V (Kodda təyin edilə bilən Daxili arayış) və ya xarici bir istinad (AREF pininə xaricdən tətbiq etməli olduğumuz) təklif edir.
Təcrübəmə görə, ADC -dən yaxşı nəticə əldə etmək üçün minimum 2,0V referans gərginlik kimi istifadə edilməlidir. 1.1V heç olmasa mənim üçün yaxşı getmədi. (Şəxsi təcrübə)
*Vacib**Vacib ** Vacib ** Vacib ** Vacib*Vacib*
Yüksək gərginlikli (Maks. Gərginlik) 5V olan bir Gücləndiricidən və ya Gücləndirici Dövrdən gücləndirilmiş səs siqnalından istifadə etməliyik
Layihəmiz üçün 5V daxili Gerilim Referansını təyin etdiyim üçün. Mən ümumiyyətlə evimizdə mövcud olan normal bir Gücləndirici (Musiqi Gücləndiricisi) istifadə edərək gücləndirilmiş bir Siqnal istifadə edirəm və ya özünüz üçün qura bilərsiniz.
Beləliklə, indi əsas hissə. Nümunə götürmə dərəcəsi, ADC -nin saniyədə nə qədər nümunə götürdüyünü, dönüşüm nisbətinin nə qədər çox olduğunu, çıxış nəticəsinin daha yaxşı olacağını, giriş dalğasına nisbətən daha çox oxşar çıxış dalğasının olacağını göstərir.
Beləliklə, ADC saatını 500Khz olaraq təyin edərək, bu Layihədə 33.33Khz nümunə götürmə sürətindən istifadə edəcəyik. Bunun necə olduğunu başa düşmək üçün Atmega (328p) çipinin məlumat cədvəlində ADC Zamanlama Səhifəsini görməliyik.
Bir nümunəni avtomatik seçmə ilə tamamlamaq üçün 13.5 ADC saat dövrünə ehtiyacımız olduğunu görə bilərik. 500Khz tezliyi ilə, bir ADC dövrü üçün 1/500Khz = 2uS deməkdir, yəni avtomatik nümunə götürmə zamanı nümunəni tamamlamaq üçün 13.5*2uS = 27uS lazımdır. Mikrodenetleyiciye (daha təhlükəsiz tərəf üçün) 3uS daha verərək, bir nümunə üçün cəmi 30 uS edir.
Beləliklə 30uS -də 1 Nümunə 1/30uS = 33.33 KSamples/S deməkdir.
Arduinonun TIMER0 -dan asılı olan Nümunə götürmə sürətini təyin etmək üçün ADC avtomatik nümunə götürmə tətiki vəziyyətimizdən asılıdır, kodda və məlumat cədvəlində də gördüyünüz kimi OCR0A = 60 dəyərini etdik (Niyə belə ???)
Çünki məlumat cədvəlində verilən düstura görə.
tezlik (və ya burada Nümunə Hızı) = Arduino/Prescaler -in saat tezliyi*OCR0A dəyəri (bizim vəziyyətimizdə)
İstədiyimiz tezlik və ya nümunə dərəcəsi = 33.33KHz
Saat tezliyi = 16 MHz
Prescaler dəyəri = 8 (bizim vəziyyətimizdə)
OCR0A dəyəri = tapmaq istəyirik ??
sadəcə Arduino kodumuzda OCR0A = 60 verən.
TIMER1 bir səs siqnalının daşıyıcı dalğası üçün istifadə olunur və bunun bir çox detalına girməyəcəyəm.
Beləliklə, bu, Arduino ilə PWM -ə ADC anlayışının qısa nəzəriyyəsi idi.
Addım 3: Şematik
Bütün komponentləri sxematik şəkildə göstərildiyi kimi bağlayın. Beləliklə, burada iki seçiminiz var:-
1. Dinamik qoşun (5V ilə bağlanır)
2. Flyback Transformatorunu qoşun (12V ilə əlaqələndirilir)
Hər ikisini sınamışam. Və hər ikisi olduqca yaxşı işləyir.
*Vacib**Vacib ** Vacib ** Vacib ** Vacib*5 V gücündə (Maksimum Gərginlik) bir Gücləndiricidən və ya Gücləndirici Dövrdən gücləndirilmiş səs siqnalından istifadə etməliyik
İmtina:-
*Yüksək Gərginlik istehsal etdiyi üçün təhlükəli ola biləcəyi üçün Flyback Transformerini Ehtiyatla istifadə etməyi məsləhət görürəm. Və heç bir ziyana görə məsuliyyət daşımayacağam.
Addım 4: Final Testi
Beləliklə, verilən kodu Arduino -ya yükləyin və Gücləndirilmiş Siqnalı A0 pininə qoşun.
Və bütün torpaq pinlərini ümumi bir yerə bağlamağı unutmayın.
Və yalnız musiqi dinləməkdən zövq alın.
Tövsiyə:
Neopixel Ws2812 M5stick-C ilə Göy qurşağı LED Glow - Arduino IDE -dən istifadə edərək M5stack M5stick C -dən istifadə edərək Neopixel Ws2812 -də Göy qurşağının Çalışması: 5 addım
Neopixel Ws2812 M5stick-C ilə Göy qurşağı LED Glow | Arduino IDE istifadə edərək M5stack M5stick C istifadə edərək Neopixel Ws2812 üzərində Göy qurşağı çalıştırın: Salam uşaqlar bu təlimatlarda Arduino IDE ilə m5stack m5stick-C inkişaf lövhəsi ilə neopixel ws2812 LED və ya led şerit və ya led matris və ya led üzük istifadə etməyi öyrənəcəyik. onunla bir göy qurşağı nümunəsi
HT12D HT12E istifadə edərək RF 433MHZ Radio İdarəetmə - 433mhz ilə HT12E və HT12D istifadə edərək Rf Uzaqdan İdarəetmə edilməsi: 5 addım
HT12D HT12E istifadə edərək RF 433MHZ Radio İdarəetmə | HT12E və HT12D -dən 433mhz istifadə edərək Rf Uzaqdan İdarəetmə edilməsi: Bu təlimatda sizə HT12E kodlu 433mhz ötürücü qəbuledici modulu istifadə edərək RADIO uzaqdan idarə etməyi göstərəcəyəm. HT12D kod deşifratoru IC. Bu təlimatda çox ucuz komponentləri istifadə edərək məlumat göndərə və ala bilərsiniz: HT
Arduino ilə 2.4Ghz NRF24L01 Modulundan istifadə edən Simsiz Uzaqdan - Nrf24l01 4 Kanal / Quadcopter üçün 6 Kanal Verici Alıcısı - Rc Helikopteri - Arduino istifadə edərək Rc təyyarəsi: 5 addım (şəkillərlə)
Arduino ilə 2.4Ghz NRF24L01 Modulundan istifadə edən Simsiz Uzaqdan | Nrf24l01 4 Kanal / Quadcopter üçün 6 Kanal Verici Alıcısı | Rc Helikopteri | Arduino istifadə edərək Rc Plane: Rc avtomobili idarə etmək | Quadcopter | Drone | RC təyyarəsi | RC qayığı, həmişə bir alıcıya və ötürücüyə ehtiyacımız var, RC QUADCOPTER üçün 6 kanallı bir vericiyə və alıcıya ehtiyacımız olduğunu və bu tip TX və RX -in çox bahalı olduğunu düşünürük, buna görə də özümüzdə hazırlayacağıq
Dinamik və ya Flyback Transformatorda PWM istifadə edərək Arduino ilə Mahnılar (MP3) Çalın: 6 Addım (Şəkillərlə)
Dinamik və ya Flyback Transformatorda PWM istifadə edərək Arduino ilə Mahnı (MP3) Çalın: Salam Uşaqlar, bu mənim ilk təlimatımdır, ümid edirəm bəyənəcəksiniz !! Əsasən, bu layihədə Arduino ilə Laptopum arasındakı Serial Əlaqədən istifadə etdim. musiqi məlumatlarını dizüstü kompüterimdən Arduino -ya ötürmək. Arduino TIMERS -dən istifadə edərək
Step Motoru ilə Mahnı Çalın !!: 11 Addım (Şəkillərlə)
Step Motordan İstifadə edərək Mahnı Çalın !!: Bu layihə, bir step motoru ilə iki fərqli şəkildə qarşılıqlı əlaqə qurmağa imkan verəcək sadə bir dinamik interfeys dizaynıdır. sadə GUI, hansı