Orodha ya maudhui:

Vipima muda vya Arduino: Miradi 8: Hatua 10 (na Picha)
Vipima muda vya Arduino: Miradi 8: Hatua 10 (na Picha)

Video: Vipima muda vya Arduino: Miradi 8: Hatua 10 (na Picha)

Video: Vipima muda vya Arduino: Miradi 8: Hatua 10 (na Picha)
Video: Pro Micro ATMEGA32U4 Arduino Pins and 5V, 3.3V Explained 2024, Juni
Anonim
Vipima muda vya Arduino: Miradi 8
Vipima muda vya Arduino: Miradi 8

Arduino Uno au Nano inaweza kutoa ishara sahihi za dijiti kwenye pini sita za kujitolea kwa kutumia vipima vitatu vilivyojengwa. Wanahitaji tu amri chache za kusanidi na kutumia mizunguko ya CPU kukimbia!

Kutumia vipima muda kunaweza kutisha ikiwa utaanza kutoka kwa hati kamili ya ATMEGA328, ambayo ina kurasa 90 zilizojitolea kwa maelezo yao! Amri kadhaa zilizojengwa katika Arduino tayari hutumia vipima muda, kwa mfano millis (), kuchelewesha (), toni (), AnalogWrite () na maktaba ya servo. Lakini kutumia nguvu yao kamili, utahitaji kuiweka kupitia sajili. Ninashiriki hapa baadhi ya macros na kazi kufanya hii iwe rahisi na ya uwazi zaidi.

Baada ya muhtasari mfupi sana wa vipima muda, fuata miradi 8 mizuri ambayo inategemea kizazi cha ishara na vipima muda.

Hatua ya 1: Vipengele vinavyohitajika

Vipengele vinavyohitajika
Vipengele vinavyohitajika

Ili kufanya miradi yote 8 utahitaji:

  • Arduino Uno au inayoambatana
  • Ngao ya mfano na kitabu kidogo cha mini
  • Kamba za jumper 6 za ubao wa mkate
  • Rukia fupi za mikate 6 (jitengeneze kutoka kwa waya thabiti wa msingi wa 10cm)
  • 2 mamba inaongoza
  • 1 nyeupe 5mm LED
  • kinzani cha 220 Ohm
  • kipinzani cha 10kOhm
  • potentiometer ya 10kOhm
  • 2 kauri 1muF capacitors
  • 1 elektroni ya 10muF capacitor
  • Diode 2, 1n4148 au sawa
  • Motors 2 ndogo za servo SG90
  • 1 8Ohm spika
  • 20m ya waya nyembamba (0.13mm) iliyoshonwa

Hatua ya 2: Muhtasari wa Vipima muda vya Arduino kwa Uzazi wa Ishara

Timer0 na timer2 ni vipima muda vya 8-bit, ikimaanisha kuwa wanaweza kuhesabu kutoka 0 hadi 255 kabisa. Timer1 ni kipima muda cha 16-bit, kwa hivyo inaweza kuhesabu hadi 65535. Kila timer ina pini mbili zinazohusiana za pato: 6 na 5 kwa timer0, 9 na 10 kwa timer1, 11 na 3 kwa timer2. Kipima muda huongezeka katika kila mzunguko wa saa ya Arduino, au kwa kiwango ambacho hupunguzwa na sababu ya mapema, ambayo ni 8, 64, 256 au 1024 (32 na 128 pia zinaruhusiwa kwa timer2). Vipima muda huhesabu kutoka 0 hadi 'TOP' na kisha tena (haraka PWM) au kushuka (awamu sahihi PWM). Thamani ya 'TOP' kwa hivyo huamua masafa. Pini za pato zinaweza kuweka, kuweka upya, au kupindua kwa thamani ya Sajili ya Kulinganisha Pato, kwa hivyo hizo huamua mzunguko wa ushuru. Timer1 tu ina uwezo wa kujitegemea kuweka masafa na mizunguko ya ushuru kwa pini zote mbili za pato.

Hatua ya 3: LED Blink

Image
Image
Kuangaza kwa LED
Kuangaza kwa LED
Kuangaza kwa LED
Kuangaza kwa LED

Mzunguko wa chini kabisa ambao unaweza kufikiwa na vipima muda vya 8-bit ni 16MHz / (511 * 1024) = 30, 6Hz. Kwa hivyo kufanya mwangaza wa LED na 1Hz, tunahitaji timer1, ambayo inaweza kufikia masafa mara 256 ndogo, 0.12 Hz.

Unganisha LED na anode yake (mguu mrefu) kwa pin9 na unganisha kathode yake na kontena la 220 Ohm chini. Pakia nambari. LED itaangaza kabisa 1Hz na mzunguko wa ushuru wa 50%. Kazi ya kitanzi () haina kitu: kipima muda kimeanzishwa katika usanidi () na haiitaji umakini wowote.

Hatua ya 4: Dimmer ya LED

Image
Image
Dimmer ya LED
Dimmer ya LED
Dimmer ya LED
Dimmer ya LED

Moduli ya upana wa mpigo ni njia bora ya kudhibiti ukali wa LED. Na dereva sahihi, pia ni njia inayopendelewa kudhibiti kasi ya elektroni. Kwa kuwa ishara imezimwa kwa 100% au 100%, hakuna nguvu inayopotezwa kwenye upinzani wa safu. Kimsingi, ni kama kuangaza LED haraka kuliko jicho linavyoweza kufuata. 50Hz kimsingi inatosha, lakini bado inaweza kuonekana kuteremka kidogo na wakati LED au macho yakisogea, njia ya kukasirisha isiyo endelevu inaweza kusababisha. Kutumia mkusanyiko wa 64 na kipima muda cha 8-bit, tunapata 16MHz / (64 * 256) = 977Hz, ambayo inafaa kusudi. Tunachagua timer2, ili timer1 ibaki inapatikana kwa kazi zingine, na hatuingiliani na kazi ya Arduino time (), ambayo hutumia timer0.

Katika mfano huu mzunguko wa ushuru, na hivyo nguvu, inasimamiwa na potentiometer. LED ya pili inaweza kudhibitiwa kwa kujitegemea na kipima muda sawa kwenye pini 3.

Hatua ya 5: Digital-to-Analog Converter (DAC)

Image
Image
Ubadilishaji wa Digital-to-Analog (DAC)
Ubadilishaji wa Digital-to-Analog (DAC)
Ubadilishaji wa Digital-to-Analog (DAC)
Ubadilishaji wa Digital-to-Analog (DAC)

Arduino haina pato la kweli la analog. Moduli zingine huchukua voltage ya analog kudhibiti parameter (onyesha kulinganisha, kizingiti cha kugundua nk). Na capacitor moja tu na kontena, timer1 inaweza kutumika kuunda voltage ya analog na azimio la 5mV au bora.

Kichujio cha kupitisha chini kinaweza 'wastani' ishara ya PWM kwa voltage ya analog. Capacitor imeunganishwa kupitia kontena kwa pini ya PWM. Tabia zimedhamiriwa na masafa ya PWM na maadili ya kontena na capacitor. Azimio la vipima muda vya 8-bit itakuwa 5V / 256 = 20mV, kwa hivyo tunachagua Timer1 kupata azimio la 10-bit. Mzunguko wa RC ni kichujio cha kupitisha cha kupitisha cha kwanza na kitakuwa na kiwambo. Kiwango cha wakati cha mzunguko wa RC kinapaswa kuwa kikubwa zaidi kuliko kipindi cha ishara ya PWM ili kupunguza kiwiko. Kipindi tunachopata kwa usahihi wa 10-bit ni 1024 / 16MHz = 64mus. Ikiwa tunatumia 1muF capacitor na 10kOhm resistor, RC = 10ms. Mkubwa wa kilele hadi kilele ni zaidi ya 5V * 0.5 * T / (RC) = 16mV, ambayo inachukuliwa kuwa ya kutosha hapa.

Kumbuka kuwa DAC hii ina impedance kubwa sana ya pato (10kOhm), kwa hivyo voltage itashuka sana ikiwa inachora ya sasa. Ili kuepukana na hilo, inaweza kubanwa na opamp, au mchanganyiko mwingine wa R na C unaweza kuchaguliwa, kwa mfano 1kOhm na 10muF.

Kwa mfano, pato la DAC linaongozwa na potentiometer. Kituo cha pili cha kujitegemea cha DAC kinaweza kuendeshwa na timer1 kwenye pini 10.

Hatua ya 6: Metronome

Image
Image
Metronome
Metronome
Metronome
Metronome

Metronome husaidia kuweka wimbo wa densi wakati wa kucheza muziki. Kwa kunde fupi sana, pato la timer arduino linaweza kulishwa moja kwa moja kwa spika, ambayo itatoa mibofyo dhahiri inayosikika. Na potentiometer, frequency ya kupigwa inaweza kudhibitiwa kutoka beats 40 hadi 208 kwa dakika, kwa hatua 39. Timer1 inahitajika kwa usahihi unaohitajika. Thamani ya 'TOP', ambayo huamua masafa, hubadilishwa ndani ya kitanzi (), na hiyo inahitaji umakini! Unaona hapa kwamba hali ya WGM inatofautiana na mifano mingine ambayo imeweka mzunguko: mode hii, na TOP iliyowekwa na rejista ya OCR1A, ina bafa mara mbili na inalinda dhidi ya kukosa TOP na kupata glitch ndefu. Walakini, hii inamaanisha tunaweza kutumia pini 1 tu ya pato.

Hatua ya 7: Spectrum ya Sauti

Image
Image
Wigo wa Sauti
Wigo wa Sauti
Wigo wa Sauti
Wigo wa Sauti

Wanadamu wanaweza kusikia zaidi ya maagizo 3 ya ukubwa wa masafa ya sauti, kutoka 20Hz hadi 20kHz Mfano huu unazalisha wigo kamili na potentiometer. Capacitor ya 10muF imewekwa kati ya spika na Arduino kuzuia sasa DC. Timer1 hutoa wimbi la mraba. Njia ya kizazi cha Waveform hapa ni PWM iliyosahihishwa na Awamu. Katika hali hiyo, kaunta inaanza kuhesabu kurudi nyuma inapofika juu, ambayo inasababisha kunde ambazo zina maana ya kudumu, hata wakati mzunguko wa ushuru unatofautiana. Walakini, pia inasababisha kipindi ambacho ni (karibu) maradufu, na inajitokeza tu kwamba na prescale 8, timer1 inashughulikia wigo kamili wa kusikika, bila kuhitaji kubadilisha kanuni. Pia hapa, kwa kuwa thamani ya TOP inabadilishwa popote, kwa kutumia OCR1A kama juu inapunguza glitches.

Hatua ya 8: Servo Motors

Image
Image
Servo Motors
Servo Motors
Servo Motors
Servo Motors

Kuna maktaba yenye nguvu ya servo, lakini ikiwa una servos mbili tu za kuendesha, unaweza kuifanya moja kwa moja na timer1, na kwa hivyo kupunguza CPU, utumiaji wa kumbukumbu, na epuka usumbufu. Servo maarufu ya SG90 inachukua ishara ya 50Hz, na urefu wa kunde huweka msimamo. Bora kwa timer1. Mzunguko umewekwa, kwa hivyo matokeo yote kwenye pin9 na pin 10 yanaweza kutumiwa kuelekeza servos kwa uhuru.

Hatua ya 9: Voltage Doubler na Inverter

Voltage Doubler na Inverter
Voltage Doubler na Inverter
Voltage Doubler na Inverter
Voltage Doubler na Inverter
Voltage Doubler na Inverter
Voltage Doubler na Inverter

Wakati mwingine mradi wako unahitaji voltage iliyo juu kuliko 5V au voltage hasi. Inaweza kuwa kuendesha MOSFET, kuendesha kipengee cha piezo, kuwezesha opamp, au kuweka upya EEPROM. Ikiwa sare ya sasa ni ndogo ya kutosha, hadi ~ 5mA, pampu ya kuchaji inaweza kuwa suluhisho rahisi zaidi: diode 2 tu na capacitors mbili zilizounganishwa na ishara iliyopigwa kutoka kwa timer kuruhusu kuzidisha arduino 5V hadi 10V. Katika mazoezi, kuna matone 2 ya diode, kwa hivyo itakuwa zaidi ya 8.6V kwa mazoezi ya mtu anayerudufu, au -3.6V ya inverter.

Mzunguko wa wimbi la mraba inapaswa kutosha kusukuma malipo ya kutosha kupitia diode. 1muF capacitor inasonga 5muC ya mabadiliko wakati voltage inabadilika kati ya 0 na 5V, kwa hivyo kwa sasa ya 10mA, masafa lazima iwe angalau 2kHz. Katika mazoezi, masafa ya juu ni bora, kwani hupunguza kiwiko. Kwa kuhesabu timer2 kutoka 0 hadi 255 bila prescale, masafa ni 62.5kHz, ambayo inafanya kazi vizuri.

Hatua ya 10: Uhamisho wa Nguvu isiyo na waya

Image
Image
Uhamisho wa Nguvu isiyo na waya
Uhamisho wa Nguvu isiyo na waya
Uhamisho wa Nguvu isiyo na waya
Uhamisho wa Nguvu isiyo na waya

Sio kawaida kuchaji saa nzuri bila nyaya, lakini hiyo hiyo inaweza kuwa sehemu ya mradi wa Arduino. Coil iliyo na ishara ya masafa ya juu inaweza kuhamisha nguvu kwa coil nyingine iliyo karibu kupitia kuingizwa, bila mawasiliano ya umeme.

Kwanza andaa koili. Nilitumia roll ya karatasi ya kipenyo cha 8.5cm na waya wa enameled ya kipenyo cha 0.13mm kutengeneza coils 2: msingi na zamu 20, sekondari na zamu 50. Kujitegemea kwa aina hii ya coil na N vilima na radius R ni ~ 5muH * N ^ 2 * R. Kwa hivyo kwa N = 20 na R = 0.0425 inatoa L = 85muH, ambayo ilithibitishwa na kipimaji cha sehemu. Tunatoa ishara na masafa ya 516kHz, na kusababisha kukosekana kwa 2pi * f * L = 275Ohm. Hii ni ya kutosha kwamba Arduino haingii kupita kiasi.

Ili kuendesha coil kwa ufanisi zaidi, tungependa kutumia chanzo cha kweli cha AC. Kuna ujanja ambao unaweza kufanywa: matokeo mawili ya kipima muda yanaweza kuendeshwa kwa awamu tofauti, kwa kubadilisha moja ya matokeo. Ili kuifanya iwe sawa zaidi na wimbi la sine, tunatumia PWM iliyo sahihi ya Awamu. Kwa njia hii, kati ya pini 9 hadi 10, voltage hubadilika kati ya zote 0V, pini 9 + 5V, zote 0V, pini 10 + 5V. Athari imeonyeshwa kwenye picha kutoka kwa wigo wa wigo (na muhtasari wa 1024, wigo huu wa toy hauna bandwidth nyingi).

Unganisha coil ya msingi kubandika 9 na 10. Unganisha LED kwenye coil ya sekondari. Wakati coil ya sekondari imeletwa karibu na msingi, taa za taa huangaza.

Ilipendekeza: