Orodha ya maudhui:

Voltage za Analog za Haraka Kutoka Arduino: Hatua 10 (na Picha)
Voltage za Analog za Haraka Kutoka Arduino: Hatua 10 (na Picha)

Video: Voltage za Analog za Haraka Kutoka Arduino: Hatua 10 (na Picha)

Video: Voltage za Analog za Haraka Kutoka Arduino: Hatua 10 (na Picha)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Julai
Anonim
Image
Image

Hii inayoweza kufundishwa inaonyesha jinsi ya kutoa mabadiliko ya kasi ya Analog voltage kutoka Arduino na kontena rahisi na jozi ya capacitor. Programu moja ambapo hii ni muhimu ni kutengeneza picha kwenye oscilloscope. Kuna miradi mingine kadhaa ambayo imefanya hivi. Johngineer anaonyesha mti rahisi wa Krismasi akitumia upimaji wa mpigo wa mpigo (PWM). Wengine wameboresha mradi huo kwa kutumia ngazi ya kupinga au kutumia chip ya kujitolea ya dijiti-kwa-analog.

Kutumia PWM husababisha kutingisha sana, wakati wa kutumia ngazi ya kupinga au kibadilishaji cha dijiti-kwa-analog inahitaji pini zaidi za pato na vifaa ambavyo haviwezi kupatikana kwa urahisi. Mzunguko mimi kutumia ni sawa wafu rahisi resistor na jozi capacitor kama kutumika katika demo mti wa Krismasi, lakini kazi na flicker kiasi kikubwa chini.

Kwanza, nitakuongoza kupitia mchakato wa kujenga mzunguko. Kisha nitakufundisha jinsi ya kuongeza picha yako mwenyewe. Mwishowe, nitaanzisha nadharia juu ya kile kinachofanya iwe haraka.

Ikiwa ulipenda Agizo hili, tafadhali fikiria kuipigia kura!:)

Hatua ya 1: Kuunda Mzunguko

Kujenga Mzunguko
Kujenga Mzunguko

Ili kujenga mzunguko, utahitaji yafuatayo:

a) Arduino kulingana na Atmel 16MHz ATmega328P, kama Arduino Uno au Arduino Nano.

b) Vipinga viwili vya thamani R ambayo ni angalau 150Ω.

c) Vipimo viwili vya thamani C kama C = 0.0015 / R, mifano:

  • R = 150Ω na C = 10µ
  • R = 1.5kΩ na C = 1µ
  • R = 15kΩ na C = 100nF
  • R = 150kΩ na C = 10nF

Sababu za kuchagua maadili haya ni mara mbili. Hasa, tunataka kuweka sasa kwenye pini za Arduino chini ya kiwango cha juu cha sasa cha 40mA. Kutumia thamani ya 150Ω inapunguza sasa hadi 30mA wakati inatumiwa na voltage ya usambazaji wa Arduino ya 5V. Thamani kubwa za R zitapungua za sasa na kwa hivyo zinakubalika.

Kikwazo cha pili ni kwamba tunataka kuweka wakati mara kwa mara, ambayo ni bidhaa ya R na C, sawa na karibu 1.5ms. Programu imewekwa haswa kwa wakati huu kila wakati. Ingawa inawezekana kurekebisha maadili ya R na C katika programu, kuna anuwai nyembamba ambayo itafanya kazi, kwa hivyo chagua vifaa karibu na uwiano uliopendekezwa iwezekanavyo.

Ufafanuzi kamili juu ya kwanini kila wakati RC ni muhimu utapewa katika sehemu ya nadharia, baada ya kukuonyesha jinsi ya kukusanya mzunguko wa maandamano.

Hatua ya 2: Kuweka Oscilloscope

Kuanzisha Oscilloscope
Kuanzisha Oscilloscope

Maonyesho yanahitaji oscilloscope iliyowekwa kwenye modi ya X / Y. Miongozo ya mtihani inahitaji kushikamana kama inavyoonyeshwa kwenye skimu. Oscilloscope yako itatofautiana na yangu, lakini nitatembea kwa hatua zinazohitajika kusanidi hali ya X / Y kwenye kitengo changu:

a) Weka kufagia kwa usawa kudhibitiwa na Channel B (mhimili wa X).

b) Weka oscilloscope kwa hali ya kituo mbili.

c) Weka volts / div kwenye chaneli zote mbili ili iweze kuonyesha voltages kutoka 0V hadi 5V. Niliweka yangu hadi 0.5V / div.

d) Weka hali ya kuunganisha kwa DC kwenye chaneli zote mbili.

e) Rekebisha nafasi ya X na Y ili nukta iwe kwenye kona ya chini kushoto ya skrini wakati Arduino imezimwa.

Hatua ya 3: Pakua na Endesha Programu

Image
Image

Pakua programu kutoka kwa Onyesho la haraka la Vector kwa Hifadhi ya Arduino. Programu hiyo ina leseni chini ya Leseni ya Umma ya GNU Affero v3 na inaweza kutumika kwa hiari na kurekebishwa chini ya masharti ya leseni hiyo.

Fungua faili ya "haraka-vector-display-arduino.ino" katika Arduino IDE na upakie kwenye Arduino yako. Kwa muda mfupi, utaona uhuishaji wa "Heri ya Mwaka Mpya" kwenye skrini yako ya oscilloscope.

Nilitengeneza mradi huu kama hackaton ya kibinafsi katika wiki zinazoongoza kwa Krismasi, kwa hivyo kuna ujumbe wa Krismasi na Mwaka Mpya ambao unaweza kuona kwa kubadilisha muundo wa PATTERN kwenye nambari.

Hatua ya 4: Unda Mchoro Wako mwenyewe

Fahamu kwanini PWM ni polepole sana
Fahamu kwanini PWM ni polepole sana

Ikiwa unataka kuunda mchoro wako mwenyewe, unaweza kubandika kuratibu za sehemu kwenye mchoro wa Arduino kwenye mstari ambao unafafanua USER_PATTERN.

Niligundua kuwa Inkscape ni zana nzuri ya kutengeneza kuchora ya kawaida:

  1. Unda maandishi kwa kutumia font kubwa, yenye ujasiri kama Impact.
  2. Chagua kitu cha maandishi na uchague "Kitu cha Njia" kutoka kwa menyu ya "Njia".
  3. Chagua herufi binafsi na uwapatanishe ili kutengeneza umbo lililounganishwa
  4. Chagua "Muungano" kutoka kwa menyu ya "Njia" ili kuwachanganya kwenye curve moja.
  5. Ikiwa kuna mashimo kwenye barua yoyote, kata kidokezo kidogo kwa kuchora mstatili na zana ya mstatili na uiondoe kutoka kwa contour ukitumia zana ya "Tofauti".
  6. Bonyeza mara mbili njia kuonyesha nodi.
  7. Mstatili chagua nodi zote na ubonyeze zana ya "Fanya kona ya nodi zilizochaguliwa".
  8. Hifadhi faili ya SVG.

Jambo muhimu ni kwamba kuchora kwako kunapaswa kuwa na njia moja iliyofungwa na hakuna mashimo. Hakikisha muundo wako una chini ya alama kama 130.

Hatua ya 5: Bandika Kuratibu Kutoka kwenye Faili ya SVG Kwenye IDE ya Arduino

  1. Fungua faili ya SVG na unakili kuratibu. Hizi zitaingizwa kwenye kipengee cha "njia". Jozi za kwanza za kuratibu zinaweza kupuuzwa; badala yao na 0, 0.
  2. Bandika kuratibu kwenye mchoro wa Arduino ndani ya mabano mara tu baada ya "#fasili USER_PATTERN".
  3. Badilisha nafasi zote na koma, vinginevyo utapata kosa la kukusanya. Zana ya "Badilisha na Utafute" inaweza kusaidia.
  4. Kusanya na kukimbia!
  5. Ikiwa una shida, angalia koni ya serial kwa makosa yoyote. Hasa, utaona ujumbe ikiwa muundo wako una alama nyingi sana kwa bafa ya ndani. Katika hali kama hizo, picha itaonyesha kupindukia kupita kiasi.

Hatua ya 6: Elewa kwanini PWM ni polepole sana

Kuanza, wacha tuangalie tabia ya capacitor kwani inachaji.

Capacitor ambayo imeunganishwa na chanzo cha voltage Vcc itaongeza voltage yake kulingana na curve ya kielelezo. Curve hii haina dalili, ikimaanisha itapungua wakati inakaribia voltage inayolengwa. Kwa madhumuni yote ya vitendo, voltage ni "karibu kutosha" baada ya sekunde 5 za RC. RC inaitwa "wakati wa mara kwa mara". Kama tulivyoona hapo awali, ni bidhaa ya maadili ya kontena na capacitor katika mzunguko wako. Shida ni kwamba 5 RC ni muda mrefu wa kusasisha kila hatua kwenye onyesho la picha. Hii inasababisha kuteremka sana!

Tunapotumia upimaji wa mpigo wa mpigo (PWM) kuchaji capacitor, sisi sio bora zaidi. Na PWM voltage inabadilika haraka kati ya 0V na 5V. Katika mazoezi, hii inamaanisha tunabadilishana haraka kati ya kushinikiza malipo ndani ya capacitor na kuivuta kidogo nje tena - hii kushinikiza na kuvuta ni kama kujaribu kukimbia marathon kwa kuchukua hatua kubwa mbele na kisha kurudi kidogo nyuma tena na tena.

Wakati unakadiria yote nje, tabia ya kuchaji capacitor kwa kutumia PWM ni sawa kabisa na ikiwa ungetumia voltage thabiti ya Vpwm kuchaji capacitor. Bado inachukua sekunde 5 za RC kupata "karibu ya kutosha" kwa voltage inayotaka.

Hatua ya 7: Pata kutoka kwa B, Tad Bit haraka

Toka kwa B hadi B, kasi kidogo ya Tad
Toka kwa B hadi B, kasi kidogo ya Tad

Tuseme tuna capacitor ambayo tayari imeshtakiwa hadi Va. Tuseme tunatumia AnalogWrite () kuandika thamani mpya ya b. Je! Ni kiwango gani cha chini cha muda unaosubiri Vb ya voltage ipatikane?

Ikiwa umebashiri sekunde 5 za RC, hiyo ni nzuri! Kwa kusubiri sekunde 5 za RC, capacitor itashtakiwa kwa karibu sana Vb. Lakini ikiwa tunataka, tunaweza kusubiri tad kidogo kidogo.

Angalia curve ya malipo. Unaona, capacitor tayari ilikuwa kwa Va wakati tulipoanza. Hii inamaanisha kuwa sio lazima tungoje wakati t_a. Tutalazimika tu ikiwa tunachaji capacitor kutoka sifuri.

Kwa hivyo kwa kutosubiri wakati huo, tunaona maboresho. Wakati t_ab ni mfupi sana kuliko 5 RC.

Lakini shikilia, tunaweza kufanya vizuri zaidi! Angalia nafasi hiyo yote hapo juu v_b. Hiyo ndio tofauti kati ya Vcc, kiwango cha juu cha voltage inayopatikana kwetu, na Vb tunakusudia kufikia. Je! Unaweza kuona jinsi voltage hiyo ya ziada inaweza kutusaidia kufika tunakotaka kwenda haraka zaidi?

Hatua ya 8: Toka kwa B, Na Chaja ya Turbo

Pata kutoka kwa B, Ukiwa na Chaja ya Turbo!
Pata kutoka kwa B, Ukiwa na Chaja ya Turbo!

Hiyo ni sawa. Badala ya kutumia PWM kwa voltage lengwa V_b, tunaishikilia kwa Vcc thabiti kwa muda mfupi sana. Ninaita hii njia ya Chaja ya Turbo na inatufikisha mahali tunapotaka kwenda kweli, haraka sana! Baada ya kuchelewa kwa wakati (ambayo lazima tuhesabu), tunapiga breki kwa kubadili PWM huko V_b. Hii inafanya voltage kutoka kupita juu kwa lengo.

Kwa njia hii, inawezekana kubadilisha voltage kwenye capacitor kutoka V_a hadi V_b kwa sehemu ya wakati kuliko kutumia PWM tu. Hivi ndivyo unapata maeneo, mtoto!

Hatua ya 9: Fahamu Kanuni

Kuelewa Kanuni
Kuelewa Kanuni

Picha ina thamani ya maneno elfu, kwa hivyo mchoro unaonyesha data na shughuli ambazo zinafanywa kwenye nambari. Kutoka kushoto kwenda kulia:

  • Takwimu za picha zimehifadhiwa kwenye PROGMEM (ambayo ni, kumbukumbu ndogo) kama orodha ya alama.
  • Mchanganyiko wowote wa shughuli za kutafsiri, kuongeza na kuzungusha zinajumuishwa kuwa tumbo la mabadiliko ya affine. Hii imefanywa mara moja mwanzoni mwa kila fremu ya uhuishaji.
  • Pointi husomwa moja kwa moja kutoka kwa data ya picha na kila moja huzidishwa na tumbo la mabadiliko iliyohifadhiwa.
  • Vitu vilivyobadilishwa vinalishwa kupitia hesabu ya kukataza ambayo hupanda vidokezo vyovyote nje ya eneo linaloonekana.
  • Kutumia meza ya kutafuta ucheleweshaji wa RC, vidokezo hubadilishwa kuwa voltages za kuendesha gari na ucheleweshaji wa wakati. Jedwali la kutafuta ucheleweshaji wa RC linahifadhiwa katika EEPROM na inaweza kutumika tena kwa kukimbia kwa nambari nyingi. Wakati wa kuanza, meza ya utaftaji wa RC inakaguliwa kwa usahihi na maadili yoyote yasiyo sahihi yanasasishwa. Matumizi ya EEPROM huokoa kumbukumbu muhimu ya RAM.
  • Voltages za kuendesha gari na ucheleweshaji zimeandikwa kwa sura isiyotumika katika bafa ya fremu. Bafa ya fremu ina nafasi ya fremu inayotumika na fremu isiyotumika. Mara fremu kamili inapoandikwa, fremu isiyotumika inafanywa hai.
  • Utaratibu wa usumbufu wa huduma unaendelea tena kuchora picha kwa kusoma kwa maadili ya voltage na ucheleweshaji kutoka kwa bafa ya fremu inayotumika. Kulingana na maadili hayo, inarekebisha mizunguko ya ushuru ya pini za pato. Timer 1 hutumiwa kupima ucheleweshaji wa muda chini ya nanoseconds chache za usahihi, wakati timer 2 inatumika kudhibiti mzunguko wa ushuru wa pini.
  • Pini iliyo na mabadiliko makubwa ya voltage daima ni "turbo kushtakiwa" na mzunguko wa ushuru wa sifuri au 100%, ikitoa malipo ya haraka sana au wakati wa kutokwa. Pini iliyo na mabadiliko kidogo ya voltage inaendeshwa na mzunguko wa ushuru uliochaguliwa kulingana na wakati wa mpito wa pini ya kwanza-kulinganisha wakati huu ni muhimu kuhakikisha kuwa mistari imechorwa moja kwa moja kwenye oscilloscope.

Hatua ya 10: Kwa kasi kubwa, Inakuja Wajibu Mkubwa

Kwa kuwa njia hii ni haraka sana kuliko PWM, kwa nini analogWrite () haitumii? Kweli, kwa sababu kutumia PWM tu kunatosha kwa programu nyingi na ni kusamehe zaidi. Njia ya "Chaja ya Turbo", hata hivyo, inahitaji kuweka alama kwa uangalifu na inafaa tu kwa kesi maalum:

  1. Ni nyeti sana kwa wakati. Mara tu tunapofikia kiwango cha voltage lengwa, pini ya kuendesha lazima ibadilishwe mara moja kuwa modi ya kawaida ya PWM ili kuepusha kupitisha voltage ya lengo.
  2. Inahitaji ujuzi wa RC mara kwa mara, kwa hivyo maadili haya lazima yaingizwe kabla. Kwa maadili yasiyo sahihi, muda utakuwa mbaya na voltages itakuwa sio sahihi. Na PWM ya kawaida, kuna dhamana kwamba utakaa kwenye voltage sahihi baada ya muda, hata kama RC haijulikani.
  3. Kuhesabu muda sahihi wa kuchaji capacitor inahitaji equations logarithmic ambayo ni polepole sana kwa hesabu ya wakati halisi kwenye Arduino. Hizi lazima zihesabiwe kabla ya kila fremu ya uhuishaji na kuhifadhiwa kwenye kumbukumbu mahali pengine.
  4. Programu zinazoshughulikia njia hii lazima zishindane na ukweli kwamba ucheleweshaji sio wa kawaida sana (kwa kweli, ni wa kuelezea). Voltages za kulenga karibu na Vcc au GND itachukua maagizo mengi ya ukubwa mrefu kufikia kuliko voltages karibu na midpoint.

Ili kushinda mapungufu haya, nambari yangu ya picha ya vector hufanya mambo yafuatayo:

  1. Inatumia Timer 1 saa 16kHz na usumbufu wa kawaida wa huduma kwa udanganyifu sahihi wa pato na muda.
  2. Inahitaji thamani maalum ya wakati wa RC kutumika, kupunguza uchaguzi wa maadili ya capacitor na resistor.
  3. Inahifadhi ucheleweshaji wa wakati kwa vidokezo vyote kwenye fremu ya uhuishaji katika bafa ya kumbukumbu. Hii inamaanisha utaratibu ambao unachelewesha ucheleweshaji wa wakati unaendesha polepole zaidi kuliko utaratibu wa usumbufu wa huduma ambao unasasisha pini za pato. Sura yoyote inayopewa inaweza kupakwa rangi mara kadhaa kabla ya ucheleweshaji mpya wa fremu inayofuata iko tayari kutumika.
  4. Matumizi ya bafa ya kumbukumbu huweka kikwazo kwa idadi ya vidokezo ambavyo vinaweza kuchorwa kwa kila fremu. Ninatumia usimbuaji mzuri wa nafasi ili kupata zaidi kutoka kwa RAM inayopatikana, lakini bado imepunguzwa kwa karibu alama 150. Zaidi ya alama mia moja au zaidi, onyesho hilo lingeanza kuteremka hata hivyo, kwa hivyo ni hatua ya moot!

Ilipendekeza: