Turinys:

„Arduino“laikmačiai: 8 projektai: 10 žingsnių (su nuotraukomis)
„Arduino“laikmačiai: 8 projektai: 10 žingsnių (su nuotraukomis)

Video: „Arduino“laikmačiai: 8 projektai: 10 žingsnių (su nuotraukomis)

Video: „Arduino“laikmačiai: 8 projektai: 10 žingsnių (su nuotraukomis)
Video: сварочный робот-манипулятор, робот для захвата и размещения | конкурировать с ABB Fanuc Yaskawa Kuka и т. д. | как выбрать робота 2024, Birželis
Anonim
„Arduino Timers“: 8 projektai
„Arduino Timers“: 8 projektai

Naudodami tris įmontuotus laikmačius, „Arduino Uno“arba „Nano“gali generuoti tikslius skaitmeninius signalus šešiuose specialiuose kaiščiuose. Jiems nustatyti reikia tik kelių komandų ir paleisti nenaudojant jokių procesoriaus ciklų!

Laikmačių naudojimas gali būti bauginantis, jei pradėsite nuo viso ATMEGA328 duomenų lapo, kuriame yra 90 puslapių, skirtų jų aprašymui! Kelios įmontuotos „Arduino“komandos jau naudoja laikmačius, pavyzdžiui, „millis“(), „delay“(), „tone“(), „AnalogWrite“() ir servo biblioteka. Tačiau norėdami išnaudoti visą savo galią, turėsite juos nustatyti per registrus. Čia dalinuosi kai kuriomis makrokomandomis ir funkcijomis, kad tai būtų lengviau ir skaidriau.

Po labai trumpos laikmačių apžvalgos, sekite 8 šaunius projektus, kurie priklauso nuo signalo generavimo su laikmačiais.

1 žingsnis: reikalingi komponentai

Būtini komponentai
Būtini komponentai

Norėdami įgyvendinti visus 8 projektus, jums reikės:

  • „Arduino Uno“arba suderinamas
  • Skydo prototipas su mini protoboard
  • 6 duonos lentos trumpikliai
  • 6 trumpi kepimo lentos megztiniai (pasidarykite iš 10 cm tvirto laido)
  • 2 krokodilo laidai
  • 1 baltas 5 mm šviesos diodas
  • 220 omų rezistorius
  • 10 kOhm rezistorius
  • 10 kOhm potenciometras
  • 2 keraminiai 1muF kondensatoriai
  • 1 elektrolitinis 10muF kondensatorius
  • 2 diodai, 1n4148 arba panašūs
  • 2 mikro servo varikliai SG90
  • 1 8 omų garsiakalbis
  • 20 m plonos (0,13 mm) emaliuotos vielos

2 žingsnis: „Arduino“signalų generavimo laikmačių apžvalga

„Timer0“ir „timer2“yra 8 bitų laikmačiai, tai reiškia, kad jie gali suskaičiuoti daugiausia nuo 0 iki 255. „Timer1“yra 16 bitų laikmatis, todėl jis gali suskaičiuoti iki 65535. Kiekvienas laikmatis turi du susijusius išvesties kaiščius: 6 ir 5 laikmačiui0, 9 ir 10 laikmačiui1, 11 ir 3 laikmačiui2. Laikmatis padidinamas kiekvieno „Arduino“laikrodžio ciklo metu arba tokiu greičiu, kuris sumažinamas iš anksto nustatyto koeficiento, kuris yra 8, 64, 256 arba 1024 (32 ir 128 taip pat leidžiami laikmačiui2). Laikmačiai skaičiuojami nuo 0 iki „TOP“, o tada vėl (greitas PWM) arba žemyn (fazės teisingas PWM). Taigi „TOP“reikšmė lemia dažnumą. Išvesties kaiščiai gali nustatyti, iš naujo nustatyti arba apversti išvesties palyginimo registro vertę, todėl jie nustato darbo ciklą. Tik laikmatis1 gali savarankiškai nustatyti abiejų išėjimo kaiščių dažnį ir darbo ciklus.

3 žingsnis: mirksi šviesos diodas

Image
Image
LED mirksi
LED mirksi
LED mirksi
LED mirksi

Žemiausias dažnis, kurį galima pasiekti naudojant 8 bitų laikmačius, yra 16 MHz/(511*1024) = 30, 6 Hz. Taigi, kad LED mirksėtų 1 Hz dažniu, mums reikia laikmačio1, kuris gali pasiekti 256 kartus mažesnius, 0,12 Hz dažnius.

Prijunkite šviesos diodą su anodu (ilga koja) prie kaiščio 9 ir prijunkite jo katodą prie 220 omų rezistoriaus prie žemės. Įkelkite kodą. Šviesos diodas mirksės tiksliai 1 Hz dažniu, kai darbo ciklas yra 50%. Ciklo () funkcija tuščia: laikmatis inicijuojamas nustatant () ir jam nereikia daugiau dėmesio.

4 žingsnis: LED apšvietimo reguliatorius

Image
Image
LED dimeris
LED dimeris
LED dimeris
LED dimeris

Impulsų pločio moduliacija yra efektyvus būdas reguliuoti šviesos diodo intensyvumą. Esant tinkamam vairuotojui, taip pat pageidautinas būdas reguliuoti elektromotorių greitį. Kadangi signalas yra 100% įjungtas arba 100% išjungtas, serijos pasipriešinimui nenaudojama jokia galia. Iš esmės tai tarsi mirksi šviesos diodas greičiau nei akys gali sekti. 50 Hz iš esmės pakanka, tačiau gali atrodyti, kad jis šiek tiek mirksi, o kai šviesos diodas ar akys juda, gali atsirasti erzinantis nenutrūkstamas „takas“. Naudodami išankstinę 64 skalę su 8 bitų laikmačiu, gauname 16MHz/(64*256) = 977Hz, tai atitinka tikslą. Mes pasirenkame laikmatį2, kad laikmatis1 liktų pasiekiamas kitoms funkcijoms, ir netrukdome „Arduino time“() funkcijai, kuri naudoja laikmatį0.

Šiame pavyzdyje darbo ciklą, taigi ir intensyvumą, reguliuoja potenciometras. Antrasis šviesos diodas gali būti reguliuojamas atskirai naudojant tą patį laikmatį 3 kaištyje.

5 veiksmas: skaitmeninis-analoginis keitiklis (DAC)

Image
Image
Skaitmeninis-analoginis keitiklis (DAC)
Skaitmeninis-analoginis keitiklis (DAC)
Skaitmeninis-analoginis keitiklis (DAC)
Skaitmeninis-analoginis keitiklis (DAC)

„Arduino“neturi tikros analoginės išvesties. Kai kurie moduliai naudoja analoginę įtampą, kad reguliuotų parametrą (ekrano kontrastą, aptikimo slenkstį ir pan.). Turėdamas tik vieną kondensatorių ir rezistorių, laikmatis1 gali būti naudojamas sukurti analoginę įtampą, kurios skiriamoji geba yra 5 mV arba geresnė.

Žemo dažnio filtras gali „vidutiniškai“įvertinti PWM signalą iki analoginės įtampos. Kondensatorius yra prijungtas per rezistorių prie PWM kaiščio. Charakteristikas lemia PWM dažnis ir rezistoriaus bei kondensatoriaus vertės. 8 bitų laikmačių skiriamoji geba būtų 5V/256 = 20mV, todėl mes pasirenkame „Timer1“, kad gautume 10 bitų skiriamąją gebą. RC grandinė yra pirmosios eilės žemo dažnio filtras ir turės tam tikrą pulsaciją. RC grandinės laiko skalė turėtų būti daug ilgesnė nei PWM signalo laikotarpis, kad sumažėtų pulsacija. 10 bitų tikslumo laikotarpis yra 1024/16MHz = 64mus. Jei naudojame 1muF kondensatorių ir 10kOhm rezistorių, RC = 10ms. Didžiausias pulsas yra iki 5 V*0,5*T/(RC) = 16 mV, o tai čia laikoma pakankama.

Atkreipkite dėmesį, kad šis DAC turi labai didelę išėjimo varžą (10 kOhm), todėl įtampa žymiai sumažės, jei ji ims srovę. Kad to išvengtumėte, jis gali būti buferizuotas naudojant opampą arba pasirinktas kitas R ir C derinys, pavyzdžiui, 1 kOhm su 10 mF.

Pavyzdyje DAC išėjimas valdomas potenciometru. Antrasis nepriklausomas DAC kanalas gali būti paleistas su laikmačiu 1 10 kaištyje.

6 žingsnis: metronomas

Image
Image
Metronomas
Metronomas
Metronomas
Metronomas

Metronomas padeda sekti ritmą grojant muzikai. Esant labai trumpiems impulsams, „arduino“laikmačio išvestį galima tiekti tiesiai į garsiakalbį, kuris pasigirs aiškiai girdimais paspaudimais. Naudojant potenciometrą, smūgių dažnis gali būti reguliuojamas nuo 40 iki 208 dūžių per minutę 39 žingsniais. Laikmatis 1 reikalingas reikiamam tikslumui. „TOP“reikšmė, lemianti dažnį, yra pakeista ciklo () funkcijos viduje, ir tai reikalauja dėmesio! Čia matote, kad WGM režimas skiriasi nuo kitų pavyzdžių, turinčių fiksuotą dažnį: šis režimas, kurio TOP nustatytas OCR1A registro, turi dvigubą buferį ir apsaugo nuo trūkstamo TOP ir ilgo trikdžio. Tačiau tai reiškia, kad galime naudoti tik 1 išvesties kaištį.

7 žingsnis: garso spektras

Image
Image
Garso spektras
Garso spektras
Garso spektras
Garso spektras

Žmonės gali išgirsti daugiau nei tris garso dažnių dydžius, nuo 20 Hz iki 20 kHz. Šis pavyzdys su potenciometru sukuria visą spektrą. Tarp garsiakalbio ir „Arduino“dedamas 10 mF kondensatorius, kuris blokuoja nuolatinę srovę. Laikmatis1 sukuria kvadratinę bangą. Bangos formos generavimo režimas čia yra fazės teisingas PWM. Šiuo režimu skaitiklis pradeda skaičiuoti atgal, kai pasiekia viršų, todėl impulsai, kurių vidutinis dydis yra fiksuotas, net kai darbo ciklas skiriasi. Tačiau taip pat atsiranda (beveik) dvigubas laikotarpis ir tiesiog atsitinka taip, kad naudojant 8 skalę, laikmatis1 apima visą girdimą spektrą, nereikia keisti išankstinės skalės. Taip pat čia, kadangi TOP vertė keičiama kelyje, naudojant OCR1A kaip viršutinę dalį, sumažėja trikdžių.

8 žingsnis: Servo varikliai

Image
Image
Servo varikliai
Servo varikliai
Servo varikliai
Servo varikliai

Yra galingų servo bibliotekų, tačiau jei turite vairuoti tik du servo įrenginius, galite tai padaryti tiesiogiai naudodami laikmatį1 ir taip sumažinti procesoriaus, atminties naudojimą ir išvengti pertraukimų. Populiarusis SG90 servo paima 50 Hz signalą, o impulso ilgis koduoja padėtį. Idealiai tinka laikmačiui 1. Dažnis yra fiksuotas, todėl abu kištuko 9 ir 10 kaiščių išėjimai gali būti naudojami nepriklausomai valdyti servus.

9 žingsnis: įtampos dvigubinimas ir keitiklis

Įtampos dvigubiklis ir keitiklis
Įtampos dvigubiklis ir keitiklis
Įtampos dvigubintojas ir keitiklis
Įtampos dvigubintojas ir keitiklis
Įtampos dvigubiklis ir keitiklis
Įtampos dvigubiklis ir keitiklis

Kartais jūsų projektui reikalinga didesnė nei 5 V įtampa arba neigiama įtampa. Tai gali būti paleisti MOSFET, paleisti pjezo elementą, įjungti opampą arba iš naujo nustatyti EEPROM. Jei srovė yra pakankamai maža, iki ~ 5 mA, įkrovimo siurblys gali būti paprasčiausias sprendimas: vos 2 diodai ir du kondensatoriai, prijungti prie laikmačio impulsinio signalo, leidžia padvigubinti arduino 5V iki 10V. Praktiškai yra 2 diodų lašai, todėl praktikoje dvigubintojui jis bus daugiau kaip 8,6 V, o keitikliui --3,6 V.

Kvadratinės bangos dažnis turėtų būti pakankamas, kad per diodus pumpuotų pakankamai krūvio. 1muF kondensatorius keičia 5 mC pokyčius, kai įtampa keičiasi nuo 0 iki 5 V, taigi esant 10 mA srovei, dažnis turi būti ne mažesnis kaip 2 kHz. Praktiškai aukštesnis dažnis yra geresnis, nes jis sumažina pulsavimą. Kai laikmatis2 skaičiuoja nuo 0 iki 255 be išankstinio skalės, dažnis yra 62,5 kHz, o tai gerai veikia.

10 veiksmas: belaidis energijos perdavimas

Image
Image
Belaidis energijos perdavimas
Belaidis energijos perdavimas
Belaidis energijos perdavimas
Belaidis energijos perdavimas

Neretai išmanųjį laikrodį galima įkrauti be laidų, tačiau tas pats gali būti „Arduino“projekto dalis. Ritė su aukšto dažnio signalu gali perduoti galią kitai netoliese esančiai ritei per indukciją, be elektros kontakto.

Pirmiausia paruoškite ritinius. Aš panaudojau 8,5 cm skersmens popieriaus ritinį ir 0,13 mm skersmens emalinę vielą, kad padarytų 2 ritinius: pirminį su 20 apsisukimų, antrinį - 50 apsisukimų. Šio tipo ritės su N apvijomis ir spinduliu R savaiminis induktyvumas yra ~ 5muH * N^2 * R. Taigi, kai N = 20 ir R = 0,0425, gaunama L = 85muH, o tai buvo patvirtinta komponentų testeriu. Mes gaminame signalą, kurio dažnis yra 516 kHz, todėl varža 2pi*f*L = 275Ohm. Tai pakankamai aukšta, kad „Arduino“nepatektų į viršsrovę.

Norėdami efektyviausiai valdyti ritę, norėtume naudoti tikrą kintamosios srovės šaltinį. Yra triukas, kurį galima padaryti: du laikmačio išėjimus galima paleisti priešinga faze, apverčiant vieną iš išėjimų. Kad jis būtų dar panašesnis į sinusinę bangą, mes naudojame fazę atitinkantį PWM. Tokiu būdu tarp 9 ir 10 kaiščių įtampa kinta tiek tarp 0V, tiek 9 +5V, tiek 0V, 10 +5V. Efektas parodytas paveikslėlyje iš taikymo srities pėdsakų (naudojant 1024 skalę, ši žaislų sritis neturi daug pralaidumo).

Prijunkite pirminę ritę prie 9 ir 10. kaiščio. Prijunkite šviesos diodą prie antrinės ritės. Kai antrinė ritė priartinama prie pirminės, šviesos diodas šviečia ryškiai.

Rekomenduojamas: