Sisukord:

Pöörleva teljega objekti jälgimise kaamera liugur. 3D -trükitud ja ehitatud RoboClaw DC mootorikontrollerile ja Arduinole: 5 sammu (koos piltidega)
Pöörleva teljega objekti jälgimise kaamera liugur. 3D -trükitud ja ehitatud RoboClaw DC mootorikontrollerile ja Arduinole: 5 sammu (koos piltidega)

Video: Pöörleva teljega objekti jälgimise kaamera liugur. 3D -trükitud ja ehitatud RoboClaw DC mootorikontrollerile ja Arduinole: 5 sammu (koos piltidega)

Video: Pöörleva teljega objekti jälgimise kaamera liugur. 3D -trükitud ja ehitatud RoboClaw DC mootorikontrollerile ja Arduinole: 5 sammu (koos piltidega)
Video: AHHAA teaduskohvik, esineb Kalev Tarkpea 2024, Juuli
Anonim
Image
Image
Riistvara projekteerimine + ehitamine + 3D -printimine
Riistvara projekteerimine + ehitamine + 3D -printimine

Fusion 360 projektid »

See projekt on olnud üks mu lemmikprojekte sellest ajast, kui sain ühendada oma huvi videote tegemise ja isetegemise vastu. Olen alati vaadanud ja tahtnud jäljendada neid filmivõtteid filmides, kus kaamera liigub objekti jälgimiseks panoraamimise ajal üle ekraani. See lisab muidu 2d videole väga huvitava sügavusefekti. Soovides seda korrata ilma Hollywoodi varustusele tuhandeid dollareid kulutamata, otsustasin sellise kaamera liuguri ise ehitada.

Kogu projekt koosneb osadest, mida saate 3D -printida, ja kood töötab populaarsel Arduino tahvlil. Kõik projektifailid, näiteks CAD -failid ja kood, on allpool allalaadimiseks saadaval.

CAD/ 3D printimisfailid on saadaval siin

Arduino koodi fail on saadaval siin

Projekt keerleb kahe hammasülekandega harjatud alalisvoolumootori ja Basic Micro Roboclaw Motor kontrolleri ümber. See mootorikontroller võib muuta harjatud alalisvoolumootorid suurepäraseks servotüübiks uskumatu positsioonilise täpsuse, tonni pöördemomendi ja 360 -kraadise pöörlemissagedusega. Sellest lähemalt hiljem.

Enne kui jätkame, vaadake kõigepealt siin linkitud videoõpetust. See õpetus annab teile ülevaate selle projekti koostamisest ja see Instructabeli juhend annab selle projekti koostamise kohta põhjalikuma ülevaate.

Materjalid-

  • 2x 1 meetri pikkused m10 keermestatud vardad, mida kasutatakse kõigi osade ühendamiseks
  • 8x M10 mutrit osade kinnitamiseks keermestatud vardadele
  • 2x 95 cm pikkused 8 mm siledad terasvardad liuguri libistamiseks
  • 4x lm8uu laagrit, et liugur saaks sujuvalt terasvardadel libiseda
  • 4x 10mm pikkused m3 mutrid mootori paigaldamiseks
  • 2 x rulalaagrit (välisläbimõõt 22 mm, siseläbimõõt 8 mm) pöörlemistelje jaoks
  • 1x 15 mm laager tühikäigul
  • 1x 4 cm pikkune m4 polt m4 lukustusmutriga tühikäigulaagri kinnitamiseks tühikäigu 3D trükitud osa külge.
  • 20 hamba hammasratas 4 mm siseläbimõõduga liugmootorile. Täpne rihmaratas ei ole väga oluline, kuna teie alalisvoolumootor peaks olema piisava pöördemomendiga. Lihtsalt veenduge, et see oleks teie vööga sama samm
  • 2 meetri pikkune GT2 vöö. Jällegi saate kasutada mis tahes rihma, kui see sobib teie rihmaratta hammaste sammuga.

Elektroonika

  • 2 * Anduriga hammasülekandega alalisvoolumootorid (üks juhib külgmist liikumist, teine pöörlemistelge). Siin on see, mida ma kasutasin. Lisateavet selle kohta leiate juhendi elektroonikaosast
  • RoboClaw alalisvoolumootori kontroller. (Kasutasin kahekordset 15Amp kontrollerit, kuna see võimaldas mul mõlemat mootorit ühe kontrolleriga juhtida)
  • Iga Arduino. Ma kasutasin Arduino UNO -d
  • Aku/ toiteallikas. (Ma kasutasin 7,4 V 2 -cell LiPo akut)
  • Ekraan (menüü kuvamiseks. Iga U8G -ga ühilduv ekraan töötab, kasutasin seda 1,3 -tollist OLED -ekraani)
  • Pöörlev kodeerija (menüüs valikute navigeerimiseks ja konfigureerimiseks)
  • Füüsiline nupp (liuguri liikumise käivitamiseks)

Samm: riistvara projekteerimine + ehitamine + 3D -printimine

Elektroonika
Elektroonika

Järgmisena liigume elektroonika juurde. Elektroonika on see projekt, kus on palju paindlikkust.

Alustame selle projekti tuumast- kahest harjatud alalisvoolumootorist.

Valisin harjatud alalisvoolumootorid mitmel põhjusel.

  1. Harjatud mootoreid on palju lihtsam juhtida ja kasutada, võrreldes samm -mootoritega
  2. Harjatud alalisvoolumootorid on palju kergemad kui alalisvoolumootorid, mis on pöörlemisteljega mootori jaoks eriti oluline, kuna see mootor liigub kaameraga füüsiliselt külgsuunas ja see muudab võimalikult kergeks, et vältida kaamera esmase liugmootori liigset koormust.

Valisin just selle alalisvoolumootori. See mootor andis mulle äärmiselt suure pöördemomendi, mis oli vajalik nii suure kaamerakoormuse teisaldamiseks. Lisaks tähendas kõrge hammasülekanne, et tipp -pöörlemiskiirus oli aeglane, mis tähendas, et võin filmida aeglasemaid liigutusi, ja kõrge käigukast tõi kaasa ka suurema positsioonitäpsuse, kuna väljundvõlli üks 360 -kraadine pöörlemine tähendas 341,2 mootori kodeerija arvu.

See viib meid RoboClaw liikumiskontrolleri juurde. Roboclawi mootoriga kahekordse alalisvoolumootori kontroller võtab teie Arduino käest lihtsaid juhiseid lihtsate koodikäskluste kaudu ning teeb kõik tööd ja võimsust, et teie mootor toimiks ettenähtud viisil. Arduino saab Roboclawile signaale saata PWM, analoogpinge, lihtsa jada- või pakettjada kaudu. Pakettide jada on parim viis, kuna see võimaldab teil Roboclawilt tagasi saada teavet, mis on vajalik positsioonijälgimiseks. Süvenen järgmises etapis (programmeerimine) Roboclawi tarkvara/programmeerimise osas sügavamale.

Sisuliselt saab Roboclaw muuta kodeerijaga alalisvooluga harjatud mootori rohkem servoks, tänu RoboClawi võimele juhtida positsiooni. Kuid erinevalt traditsioonilisest servost on teie harjatud alalisvoolumootoril nüüd palju suurem pöördemoment, palju täpsem positsioon tänu suurele mootoriülekandele, ja mis kõige tähtsam - teie alalisvoolumootor saab pidevalt 360 kraadi pöörata, millest ükski ei saa hakkama.

Järgmine elektroonika osa on ekraan. Ekraani jaoks valisin selle OLED -paneeli selle suuruse ja suure kontrasti tõttu. See suure kontrastsusega uskumatu ja muudab ekraani väga lihtsaks kasutamiseks otsese päikesevalguse käes, samas ei eralda liiga palju valgust, mis võib häirida potentsiaalset tumedat kaameravõtet. Seda ekraani saab hõlpsasti teise U8G ühilduva ekraani vastu vahetada. Ühilduvate ekraanide täielik loend on saadaval siin. Tegelikult kodeeriti see projekt tahtlikult U8G raamatukogu ümber, nii et teiega sarnastel isetegijatel oli oma osades rohkem paindlikkust

Selle projekti viimased elektroonikaosad olid pöörlev kodeerija ja nupp liuguri liikumise käivitamiseks. Kodeerija võimaldab teil navigeerida ekraani menüüs ja konfigureerida kogu liuguri menüüd vaid ühe valimisnupu abil. Pöörleval kodeerijal ei ole lõpp -asendit nagu traditsioonilisel potentsiomeetril ja see on eriti kasulik ekraanil oleva objekti jälgimise x- ja y -koordinaatide muutmiseks. Nuppu kasutatakse eranditult liuguri liikumise käivitamiseks, ilma et peaksite pöörleva kodeerijaga askeldama.

3. samm: kaamera liuguri programmeerimine

Kaamera liuguri programmeerimine
Kaamera liuguri programmeerimine
Kaamera liuguri programmeerimine
Kaamera liuguri programmeerimine

Kodeerimine oli selle projekti kõige raskem väljakutse. Näete, et algusest peale tahtsin, et liugurit oleks võimalik ekraanilt juhtida. Selle projekti võimalikult paljude ekraanidega ühildamiseks pidin kasutama Arduino jaoks U8Glibi raamatukogu. See raamatukogu toetab enam kui 32 ekraani. Siiski kasutas U8Glib raamatukogu ekraanil menüü joonistamiseks pildisilmust ja see oli vastuolus Arduino võimalusega koguda samaaegselt kaamera asukoha kohta teavet, mida oli vaja kaamera nurga arvutamise funktsionaalsuse jaoks (seda käsitletakse järgmises paaris lõigus)). U8Glib2 -l on pildisilmusele alternatiiv, kasutades nn täislehe puhvri valikut, kuid raamatukogu tarbis liiga palju mälu ja muutis ülejäänud koodi sobitamise, arvestades Arduino Uno mälupiiranguid. See tähendas, et olin U8G -ga ummikus ja pidin probleemi lahendama, takistades ekraani värskendamist igal ajal, kui liugur liikuma hakkas, ja Arduino pidi koguma Roboclawilt asukohaandmeid. Samuti olin sunnitud käivitama liuguri, et hakata liikuma väljaspool menüüahelat, kuna alammenüüdesse sisenedes oleksin pildisilmus sees ja liugur ei töötaks ettenähtud viisil. Samuti hoidsin sellest probleemist mööda, lastes liuguri liikumise käivitada eraldi füüsilise nupuga.

Järgmisena räägime pöörlevast jälgimiselemendist. See osa tundub olevat väga keeruline integreerida, kuid tegelikult on see üsna lihtne. Selle rakendamine toimub minu Arduino koodi funktsioonis „motor ()”. Esimene samm on teha kahemõõtmeline ruudustik ja otsustada, kuhu objekt, mida soovite jälgida, asetatakse. Selle põhjal saate joonistada oma praegusele asukohale kolmnurga. Oma praeguse asukoha saate teada mootori kodeerimisväärtusest. Kui soovite konfigureerida jälgitava objekti asukohta cm/mm, peate kodeerija väärtuse teisendama cm/mm väärtuseks. Seda saab teha lihtsalt kaamera liugurit 1 cm võrra nihutades ja kodeerija väärtuse suurenemist mõõtes. Selle väärtuse saate sisestada koodi ülaossa muutuja encoder_mm all.

Jätkates kasutame nüüd pöörd tangentsi funktsiooni, et saada nurk, millega kaamera peab olema suunatud teie objektile. Pöörd tangent võtab kolmnurga vastas- ja külgmise külje. Kolmnurga vastaskülg ei muutu kunagi, kuna see on y kaugus liugurist objektini. Kaamera liuguri külgnev külg muutub aga. Seda külgnevat külge saab arvutada, võttes objekti x -positsiooni ja lahutades sellest teie praeguse asukoha. Kui liugur liigub oma liikumisulatuses, ajakohastab see Arduino kodeerija väärtust. Arduino teisendab selle kodeerija väärtuse korduvalt cm/mm x positsiooniväärtuseks ja arvutab seejärel külgneva küljepikkuse ning lõpuks arvutab nurga, millega kaamera peab kogu aeg olema suunatud objekti suunas.

Nüüd, kui meie Arduino töötleb kaamera nurka dünaamiliselt, saame lahendada selle nurga teisendamise positsiooniliseks väärtuseks, millele pöörlemismootor liigub. See toob meid RoboClawi selle projekti suurima omaduse juurde. Andes Roboclawile positsiooniväärtuse, võib see sisuliselt panna alalisvooluharjatud mootori käituma nagu servo. Välja arvatud erinevalt servost, on meie mootoril palju rohkem pöördemomenti, palju suurem täpsus ja see võib pöörata ka 360 kraadi.

Arduino kood Roboclawi teatud asendisse viimiseks on järgmine:

roboclaw. SpeedAccelDeccelPositionM1 (aadress, 'kiirus', 'kiirendus', 'aeglustus', 'positsioon, kuhu soovite minna', 1);

Mootori positsiooniväärtuse häälestamiseks vastavalt kaamera nurgale peate kaamera plaati käsitsi 180 kraadi nihutama. Järgmisena vaadake, kui palju on kodeerija väärtus muutunud kaamera plaadi nihutamisel 0 kraadilt 180 kraadini. See annab teile kodeerimisvahemiku. Selle vahemiku saate sisestada mootorifunktsioonis, mis kaardistab Arduino kaamera nurga asukohaväärtusele. Seda on ka koodis kommenteeritud, nii et seda peaks olema lihtne leida *****

RoboClaw andis mulle võimaluse häälestada ka muid tegureid, nagu kiirendus, aeglustus ja PID väärtused. See võimaldas mul veelgi pöörlemistelje liikumist siluda, eriti kui nurga muutused olid väikesed ja lisasid tõmblusi ilma kõrge D -väärtuseta. Samuti saate oma PID-väärtusi automaatselt häälestada Roboclawi töölauarakenduse kaudu.

4. samm: kaamera liuguri kasutamine

Kaamera liuguri kasutamine
Kaamera liuguri kasutamine

Nüüd jõuame lõbusa osa juurde, liuguri kasutamine Menüüs on 4 peamist vahelehte. Ülemine sakk on pühendatud kiiruse reguleerimisele. Menüü keskmine rida sisaldab sakke, et konfigureerida jälgitava objekti X & Y positsiooni millimeetrites, samuti konfigureerida, kas tahame, et liugur pööraks ja jälgiks meie objekti või teeksime lihtsalt libisemisliigutuse ilma pöörlemiseta. Pöörleva kodeerija keeramine võimaldab navigeerida erinevates menüüvalikutes. Mis tahes suvandite konfigureerimiseks liikuge suvandile ja vajutage pöördkodeerijat. Pöörleva kodeerija pööramine muudab pärast vajutamist esiletõstetud alammenüü väärtust, selle asemel, et menüüst läbi sirvida. Kui olete soovitud väärtuse saavutanud, võite pöördkodeerijal uuesti klõpsata. Nüüd olete tagasi peamenüüsse ja saate erinevate vahelehtede vahel navigeerida. Kui olete valmis, vajutage lihtsalt ekraani kõrval asuvat nuppu Go ja liugur teeb oma asjad!

Veenduge, et kui olete kaamera liuguri kasutamise lõpetanud, on kaamera koduasendis: liuguri küljel, millega see alustas. Selle põhjuseks on asjaolu, et mootorikooder ei ole absoluutne kodeerija, mis tähendab, et Roboclaw/Arduino ei saa öelda, kus kooder asub. Nad saavad ainult öelda, kui palju kodeerija on pärast viimast sisselülitamist muutunud. See tähendab, et kaamera liuguri väljalülitamisel unustab liugur liuguri asendi ja lähtestab kodeerija väärtuseks 0. Seega, kui lülitate liuguri teisel küljel välja ja lülitate selle sisse, lülitub proovige liikuda servast kaugemale ja kukkuda liuguri seina. See kodeerija käitumine on ka põhjus, miks kaamera lähtestab oma pöördenurga pärast iga kaamera liigutamist. Pöörlemistelg kaitseb end ka oma liikumisulatuse lõppu kukkumise eest.

Selle saate parandada, lisades käivitamisel lõpp-peatused ja suunamisprotseduuri. Seda kasutavad 3D -printerid.

5. samm: lõplikud mõtted ja edasised parandused

Soovitan tungivalt igal ehitajal teha sellest liugurist oma versioonid, mitte ehitada täpselt sama liugurit. Minu kujunduse muutmine võimaldab teil liuguri ehitada vastavalt teie täpsetele spetsifikatsioonidele, mõistes samal ajal paremini ka elektroonika ja koodi toimimist.

Muutsin koodi võimalikult loetavaks ja konfigureeritavaks, et saaksite oma liuguri spetsifikatsioonide jaoks erinevaid koodimuutujaid kohandada/kalibreerida. Kood on samuti täielikult üles ehitatud funktsioonide ümber, nii et kui soovite liuguri teatud käitumist kopeerida/ kohandada/ ümber kirjutada, ei pea te kogu koodi ümber kujundama ja ümber töötama, vaid ainult neid osi, mida soovite muuta.

Lõpuks, kui teeksin versiooni 2.0, siis siin on mõned parandused, mida ma teeksin

  1. Suurem ülekandearv pöörlemistelje mootoril. Suurem ülekandearv tähendab, et suudan teha väiksemaid liigutusi täpsemalt. See on eriti kriitiline, kui kaamera on objektist kaugel ja kaamera nurk muutub väga aeglaselt. Praegu ei ole mu mootor liiga kõrgele pööratud ja see võib põhjustada kergeid tõmblusi, kui kaamera liugur liigub liiga aeglaselt või kui pöördenurk muutub väga vähe. Kõrge D -PID -väärtuse lisamine on aidanud mul sellest vabaneda, kuid selle hinnaks on objektide jälgimise täpsus veidi madalam.
  2. Modulaarne pikkus. See on kaugeleulatuv eesmärk, kuid mulle meeldiks, kui kaamera liugur oleks modulaarse pikkusega, mis tähendab, et kaamera hõlpsaks kinnitamiseks saate hõlpsalt kinnitada pikema raja. See on üsna raske, kuna peate täiuslikult joondama mõlemad rajad ja välja mõtlema, kuidas rihmasüsteem tööle panna. Sellegipoolest oleks see lahe uuendus!
  3. Kohandatud liikumise võtmekaader. Sooviksin sellesse kaamera liugurisse tutvustada võtmekaadriliste liigutuste kontseptsiooni. Võtmeraamimine on tehnika, mida kasutatakse laialdaselt video ja heli tootmisel. See võimaldaks kaamera mittelineaarseid liigutusi, kus kaamera läheb teatud asendisse, ootab, liigub seejärel teise kiirusega teise asendisse, ootab, seejärel läheb kolmandasse asendisse jne.
  4. Bluetooth/ juhtmeta telefoni juhtimine. Oleks väga lahe, kui saaksite kaamera liuguri parameetreid juhtmevabalt konfigureerida ja kaamera liugurit raskesti ligipääsetavates kohtades kasutada. Telefonirakendus võib avada ka võimalusi võtmekaadrite integreerimiseks, nagu on mainitud viimases lõigus.

See on selle õpetuse jaoks. Vabastage kõik küsimused allpool olevasse kommentaaride sektsiooni.

Rohkem sisu ja elektroonikaõpetusi leiate ka minu YouTube'i kanalist siit.

Soovitan: