Orodha ya maudhui:

Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer: Hatua 6 (na Picha)
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer: Hatua 6 (na Picha)

Video: Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer: Hatua 6 (na Picha)

Video: Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer: Hatua 6 (na Picha)
Video: UTACHEKA...!! mtoto wa Diamond Platnumz #Tiffah aogopa Helcopter 🙌 2024, Novemba
Anonim
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer
Cheza Nyimbo (MP3) Na Arduino Kutumia PWM kwenye Spika au Flyback Transformer

Halo Jamaa, Hii ni ya kwanza kufundishwa, natumai utaipenda !!

Kimsingi, Katika Mradi huu nimetumia Mawasiliano ya Siri kati ya Arduino yangu na Laptop yangu, kusambaza data ya muziki kutoka kwa laptop yangu kwenda Arduino. Na kutumia TIMERS za Arduino kucheza data kama ishara ya PWM.

Nilitaka kutaja kwamba, mradi huu sio wa Kompyuta !!!.

Kweli, mradi huu ulikuwa moja ya miradi ndefu zaidi, kwa sababu lazima tufanye vitu vingi kuifanya ifanye kazi.

UMAKINI

Nimefanya sehemu ya pili ya hii kufundisha, ambayo ni njia rahisi zaidi na inahitaji shida ndogo kufanya kazi

Unganisha na Sehemu ya pili (rahisi zaidi).

Hatua ya 1: Vitu Tunavyohitaji kwa Mradi huu (Mahitaji)

1. Bodi ya Arduino (tunaweza kutumia Bodi yoyote (328, 2560) yaani Mega, Uno, Mini, nk lakini kwa pini maalum tofauti)

2. PC au Laptop na Linux (nimetumia Fedora 29) Au USB Moja kwa Moja na Linux

3. Bodi ya mkate au ubao wa ubao

4. Kuunganisha waya

5. TC4420 (Dereva wa Mosfet au kitu kama hicho)

6. Power Mosfet (kituo cha N au P, tafadhali waya kisha ipasavyo) (nimetumia N-channel)

7. Spika au Flyback Transformer (Ndio unaisoma sawa !!)

8. Ugavi wa Nguvu unaofaa (0-12V) (nimetumia Ugavi wangu wa Nguvu wa ATX)

9. Kuzama kwa joto (nimeokoa kutoka kwa PC yangu ya zamani)

10. PC na Windows na gari la kalamu.

Ili kujua kazi ya kina ya kila sehemu na mradi huu tafadhali soma hatua inayofuata.

Nimefanya sehemu ya pili ya hii kufundisha, ambayo ni njia rahisi zaidi na inahitaji shida ndogo kufanya kazi. Unganisha na Sehemu ya Pili (rahisi zaidi).

Hatua ya 2: Kuelewa Kanuni ya Kufanya kazi

Ahhh !! sehemu ndefu zaidi ya kusoma, na kusoma sehemu hii ni ya kuchosha.

Kwanza kabisa, tunahitaji kupata Muhtasari, jinsi jambo hili linafanya kazi kweli.

tunachofanya hapa ni kwamba kwanza, tunabadilisha wimbo wetu wa MP3 kuwa Faili ya WAV na faili hii kuwa faili ya kichwa cha C kwa kutumia programu, ambayo iko kwenye kiunga. Nambari hii ya C ina 8-bit (kwa nini 8-bit? Soma zaidi) sampuli za data ambazo tunahitaji kucheza kwa kutumia Arduino yetu kwa kiwango kilichowekwa au kasi, ambayo imeainishwa kulingana na Kiwango chetu cha Sampuli.

Nadharia ya Ishara ya Sauti.

Kwa wale ambao hawajui nini Kiwango cha Sampuli au Kiwango kidogo ni: -

Kiwango cha Sampuli hufafanuliwa kama idadi ya Sampuli, tunacheza kwa sekunde (kawaida hupimwa katika Hz au KHz).

Ili kujua zaidi kwa undani: -Bofya Hapa

Viwango vya Sampuli za Kiwango ni 44100 Hz (ubora bora), 32000 Hz, 22050 Hz, nk

ambayo inamaanisha kuwa Sampuli 44100 hutumiwa kwa sekunde kutoa wimbi ipasavyo.

Yaani Kila Sampuli inahitajika kuchezwa kwa muda uliowekwa wa 1/44100 = 22.67 uS.

Halafu inakuja kina cha Kidogo cha Ishara ya Sauti, ambayo kawaida ni kipimo cha jinsi sauti inavyowakilishwa katika sauti ya dijiti. Ya juu ya kina kidogo, sauti ya dijiti ni sahihi zaidi.

Lakini na Arduino au Mdhibiti-Mdogo yeyote aliye na saa ya 16Mhz anatuwezesha kutumia hadi 8-bit tu. Nitaelezea kwa nini.

Kuna fomula kwenye ukurasa nambari 102 katika data ya 328p: - Hati ya data

Sitakwenda kwa maelezo, kwa nini ninatumia fomula hii.

mzunguko wa Ishara = Saa ya Saa / N x (1 + TOP)

Ishara ya Saa = 16Mhz (bodi ya Arduino)

N = prescaler (1 ni thamani ya mradi wetu)

TOP = thamani 0 hadi 2 ^ 16 (Kwa kaunta ya saa 16-bit) (255 = 2 ^ 8 (8-bit) kwa mradi wetu)

tunapata thamani ya masafa ya Ishara = 62.5 kHz

Hii inamaanisha mzunguko wa mawimbi ya mtoaji hutegemea Kina cha Kidogo.

Tuseme, ikiwa tunatumia TOP value = 2 ^ 16 = 65536 (i.e kina cha 16-bit)

basi tunapata thamani ya masafa ya Ishara = 244 Hz (ambayo hatuwezi kutumia)

OKK… Kwa hivyo nadharia hii ya Jinsi Ishara za Sauti inafanya kazi ni ya kutosha, Kwa hivyo rudi kwenye Mradi.

Nambari C iliyotengenezwa kwa Wimbo inaweza kunakiliwa kwa Arduino na inaweza kuchezwa, lakini tumezuiliwa hadi uchezaji wa sauti wa sekunde 3 na kiwango cha sampuli ya 8000 Hz. Kwa sababu nambari hii ya C ni faili ya maandishi na kwa hivyo haikubanwa badala ya kukandamizwa. Na inachukua nafasi nyingi. (k. faili ya kificho ya C iliyo na sauti ya sekunde 43 na sampuli 44, 1 KHz inachukua nafasi hadi 23 MB). Na Arduino Mega yetu inatupa nafasi ya karibu 256 Kb.

Kwa hivyo tutachezaje nyimbo kwa kutumia Arduino. Haiwezekani. Hii inayoweza kufundishwa ni bandia. Usijali wasomaji, Ndio sababu tunahitaji kutumia aina fulani ya mawasiliano kati ya Arduino kwa kasi kubwa ya sooo (hadi 1 Mb / s) kutuma data ya Sauti kwa Arduino.

Lakini tunahitaji kasi gani haswa, kufanya hivyo?

Jibu ni ka 44000 kwa sekunde ambayo inamaanisha kasi zaidi ya 44000 * 8 = 325, 000 Bits / s.

Tunahitaji pembeni nyingine na hifadhi kubwa kutuma data hii kwa Arduino yetu. Na hiyo itakuwa PC yetu na Linux (kwanini PC na Linux ??? tafadhali soma zaidi kujua zaidi juu yake.)

Ahaa… Hiyo inamaanisha tunaweza kutumia Mawasiliano ya Televisheni… Lakini subiri… serial inawezekana kwa kasi tu hadi 115200 Bits / s ambayo inamaanisha (325000/115200 = 3) kwamba, ni polepole mara tatu kuliko inavyotakiwa.

Hapana, marafiki zangu, sivyo. Tutatumia kasi au Baud Rate ya 500, 000 Bits / s kasi na kebo hadi 20-30 cm max, ambayo ni mara 1.5 haraka kuliko inavyotakiwa.

Kwa nini Linux, sio Windows ???

Kwa hivyo, tunahitaji kutuma sampuli kwa muda (pia imeainishwa hapo juu) ya 1/44100 = 22.67 uS na PC yetu.

Kwa hivyo tunawezaje kuipanga ili kufanya hivyo?

Tunaweza kutumia C ++ kutuma data byte kupitia Serial kwa muda kutumia aina fulani ya kazi ya kulala

kama kulala, chrono, nk, nk …

kwa (int x = 0; x

tumaData (x);

kulala nanos (22000); // 22uS

}

Lakini haifanyi kazi kwenye Dirisha pia haikufanya kazi kwa njia hii kwenye Linux (lakini nimepata njia nyingine ambayo unaweza kuona kwenye Nambari yangu iliyoambatanishwa.)

Kwa sababu hatuwezi kufikia granularity kama hiyo kwa kutumia windows. Unahitaji Linux kufikia granularity kama hiyo.

Shida nimepata hata na Linux…

tunaweza kufikia chembechembe kama hizo kwa kutumia Linux, lakini sikupata kazi yoyote ya kulala mpango wangu wa 22uS.

Kazi kama vile kulala, chanono kulala, nk, nk. Pia hazifanyi kazi, kwani hutoa usingizi zaidi ya 100 uS. Lakini nilihitaji haswa, haswa 22 uS. Nimechunguza kila ukurasa mmoja kwenye google na nimejaribu kazi zote zinazowezekana ambazo zinapatikana katika C / C ++ lakini hakuna kitu kilichonifanyia kazi. Kisha nikapata kazi yangu mwenyewe, ambayo ilinifanyia kazi kama haiba halisi.

Na nambari yangu sasa inatoa usingizi kamili wa 1uS au hapo juu !!!!

Kwa hivyo tumefunika sehemu ngumu na zingine ni rahisi…

Na tunataka kutoa ishara ya PWM kutumia Arduino na masafa maalum pia masafa ya mawimbi ya kubeba. (62.5KHz (kama ilivyohesabiwa hapo juu) kwa kinga nzuri ya Ishara).

Kwa hivyo, Tunahitaji kutumia kinachoitwa WAPIMAZI wa Arduino kuunda PWM. Kwa njia, sitaenda kwa maelezo mengi juu ya hilo, kwa sababu utapata mafunzo mengi juu ya mada ya TIMERS, lakini ikiwa hautapata, basi toa maoni hapa chini nitatoa moja.

Nimetumia dereva wa Mosfet TC4420, kuokoa Pini zetu za Arduino, kwa sababu haziwezi kutoa sasa nyingi kuendesha MOSFET wakati mwingine.

Kwa hivyo, hiyo ilikuwa karibu nadharia ya mradi huu, tunaweza kuona sasa mchoro wa mzunguko.

TAHADHARI KWA TAHADHARI

Kwa kweli, mradi huu ulifanywa kuwa mgumu sana kwa kukusudia (nitakuambia kwanini), kuna njia nyingine ambayo inahitaji noPC tu Arduino na spika katika inayoweza kuamriwa yangu. Link iko hapa.

* Kusudi kuu la mradi huu ni kutumia Mawasiliano ya Siri na kujua ni nguvu na kujifunza jinsi tunaweza kusanikisha PC yetu kufanya kazi haswa kwa vipindi vizuri vile.

Hatua ya 3: Mpangilio

Mpangilio
Mpangilio

Unganisha Vipengele vyote kama inavyoonekana katika skimu. Kwa hivyo una chaguzi mbili hapa: -

1. Unganisha Spika (Imeunganishwa na 5V)

2. Unganisha Flyback Transformer (Imeunganishwa na 12V)

Nimejaribu zote mbili. Na wote hufanya kazi vizuri.

Kanusho: -

* Ninapendekeza kutumia Flyback Transformer na Tahadhari kwani inaweza kuwa hatari kwa sababu inazalisha Voltages High. Na sitawajibika kwa uharibifu wowote. *

Hatua ya 4: Badilisha MP3 kuwa Faili ya WAV Kutumia Ushupavu

Badilisha MP3 kuwa Faili ya WAV Kutumia Ushupavu
Badilisha MP3 kuwa Faili ya WAV Kutumia Ushupavu
Badilisha MP3 kuwa Faili ya WAV Kutumia Ushupavu
Badilisha MP3 kuwa Faili ya WAV Kutumia Ushupavu
Badilisha MP3 kuwa Faili ya WAV Kutumia Ushupavu
Badilisha MP3 kuwa Faili ya WAV Kutumia Ushupavu

Kwa hivyo, Kwanza kabisa, pakua programu

1. Ushupavu, tafuta na upakue kutoka Google

2. Kubadilisha Faili ya WAV kuwa C-Code, pakua programu tumizi ya dirisha, iliyoitwa WAVToCode

Unaweza kujifunza jinsi ya kutumia programu ya WAVToCode kutoka kwa kiunga hiki na kuipakua kutoka kwa kiunga hiki.

Pia nitatoa hatua za kina juu ya jinsi ya kutumia programu zote mbili.

Tafadhali Tazama picha zilizounganishwa na hii inayoweza kufundishwa.

Katika hatua hii, tutabadilisha MP3 kuwa Wav. (Fuata picha, kiwango cha Mradi lazima kiwe 44100Hz)

Katika hatua inayofuata, tutabadilisha faili ya wav kuwa C Code.

Hatua ya 5: WAV kwa C-Code

WAV kwa C-Code
WAV kwa C-Code
WAV kwa C-Code
WAV kwa C-Code
WAV kwa C-Code
WAV kwa C-Code

Fuata picha.

Tazama picha mbili za mwisho, mabadiliko lazima yawe sawa, Herufi kubwa inapaswa kuwa mtaji na herufi ndogo iwe chini, Au utapata kosa la sintaksia wakati wa kuandaa.

(Unaweza kuona kuwa wimbo wa 1min 41s ulichukua nafasi ya 23mb.)

Badilisha jina la wimbo na urefu na jina na muda wa wimbo wako mtawaliwa.

Na Hifadhi faili ya Msimbo wa C.

Fanya hivi kwa Nyimbo zote unazotaka kucheza na Arduino

Hatua ya 6: Fanya Faili ya Mwisho na Moto Moto Linux yako

Fanya Faili ya Mwisho na Moto Moto Linux yako
Fanya Faili ya Mwisho na Moto Moto Linux yako
Fanya Faili ya Mwisho na Moto Moto Linux yako
Fanya Faili ya Mwisho na Moto Moto Linux yako
Fanya Faili ya Mwisho na Moto Moto Linux yako
Fanya Faili ya Mwisho na Moto Moto Linux yako

Ongeza nyimbo zako zote zilizobadilishwa kuwa Faili iliyotolewa kwenye kiunga hiki.

Na fuata picha.

Pakia nambari hiyo kwenye Arduino, ambayo nimeiambatanisha.

Kumbuka majina ya faili ya C Code.

Mwishowe moto Fedora Moja kwa moja USB yako au nyingine na usanikishe mkusanyaji wa gcc na kisha utumie maagizo ya kukusanya kutoka kwa folda kukusanya programu na kuiendesha.

Mwishowe, utaweza kusikiliza nyimbo kutoka kwa Spika au Flyback.

Asante kwa kusoma hii inayoweza kufundishwa na tafadhali maoni ikiwa unapenda.

Nimefanya sehemu ya pili ya hii kufundisha, ambayo ni njia rahisi zaidi na inahitaji shida ndogo kufanya kazi. Unganisha kwa Sehemu ya pili (rahisi zaidi)

Ilipendekeza: