Satura rādītājs:

Objektu izsekošanas kameras slīdnis ar rotācijas asi. 3D drukāts un būvēts uz RoboClaw DC motora kontrollera un Arduino: 5 soļi (ar attēliem)
Objektu izsekošanas kameras slīdnis ar rotācijas asi. 3D drukāts un būvēts uz RoboClaw DC motora kontrollera un Arduino: 5 soļi (ar attēliem)

Video: Objektu izsekošanas kameras slīdnis ar rotācijas asi. 3D drukāts un būvēts uz RoboClaw DC motora kontrollera un Arduino: 5 soļi (ar attēliem)

Video: Objektu izsekošanas kameras slīdnis ar rotācijas asi. 3D drukāts un būvēts uz RoboClaw DC motora kontrollera un Arduino: 5 soļi (ar attēliem)
Video: Leap Motion SDK 2024, Novembris
Anonim
Image
Image
Aparatūras dizains + uzbūve + 3D drukāšana
Aparatūras dizains + uzbūve + 3D drukāšana

Fusion 360 projekti »

Šis projekts ir bijis viens no maniem iecienītākajiem projektiem, kopš es spēju apvienot savu interesi par video veidošanu ar DIY. Es vienmēr esmu skatījies un vēlējies līdzināties tiem kinematogrāfiskajiem kadriem filmās, kurās kamera pārvietojas pa ekrānu, kamēr panoramē, lai izsekotu objektam. Tas citam 2d video pievieno ļoti interesantu dziļuma efektu. Vēloties to atkārtot, netērējot tūkstošiem dolāru Holivudas rīkiem, es nolēmu pats izveidot šādu kameras slīdni.

Viss projekts ir veidots uz detaļām, kuras varat izdrukāt 3D formātā, un kods darbojas uz populārās Arduino plates. Visi projekta faili, piemēram, CAD faili un kods, ir pieejami lejupielādei zemāk.

CAD/ 3D drukas faili pieejami šeit

Arduino koda fails ir pieejams šeit

Projekts ir saistīts ar diviem matētiem līdzstrāvas motoriem un Basic Micro Roboclaw Motor kontrolieri. Šis motora kontrolieris var pārveidot matētus līdzstrāvas motorus par izcilu servo tipu ar neticamu pozīcijas precizitāti, tonnu griezes momentu un pilnu 360 grādu rotāciju. Vairāk par šo vēlāk.

Pirms turpināt, vispirms noskatieties šeit norādīto video pamācību. Šī apmācība sniegs jums pārskatu par šī projekta izveidi, un šī Instructables rokasgrāmata sniegs padziļinātu informāciju par to, kā es izveidoju šo projektu.

Materiāli-

  • 2x 1 metru gari m10 vītņstieņi, ko izmanto visu detaļu savienošanai
  • 8x M10 uzgriežņi detaļu piestiprināšanai pie vītņotajiem stieņiem
  • 2x 95 cm gari 8 mm gludi tērauda stieņi slīdņa slīdēšanai
  • 4x lm8uu gultņi, lai slīdnis vienmērīgi slīdētu uz tērauda stieņiem
  • 4x 10 mm gari m3 uzgriežņi motora montāžai
  • 2 x skeitborda gultņi (22 mm ārējais diametrs, 8 mm iekšējais diametrs) rotācijas asij
  • 1x 15 mm gultnis tukšgaitas pusei
  • 1x 4 cm gara m4 skrūve ar m4 fiksācijas uzgriezni tukšgaitas gultņa piestiprināšanai pie brīvgaitas 3d drukātās daļas.
  • 20 zobu zobrats ar 4 mm iekšējo diametru slīdņa motoram. Precīzs skriemelis nav ļoti svarīgs, jo jūsu līdzstrāvas motoram jābūt vērstam uz pietiekamu griezes momentu. Vienkārši pārliecinieties, vai tas ir tāds pats kā jūsu jostas solis
  • 2 metrus gara GT2 josta. Atkal varat izmantot jebkuru jostu, ja vien tā atbilst jūsu skriemeļa zobu slīpumam.

Elektronika

  • 2 * Zobrati ar līdzstrāvas motoriem ar kodētājiem (viens kontrolē sānu kustību, bet otrs - rotācijas asi). Šeit ir tas, ko es izmantoju. Vairāk par to rokasgrāmatas elektronikas daļā
  • RoboClaw līdzstrāvas motora kontrolieris. (Es izmantoju duālo 15Amp kontrolieri, jo tas ļāva man vadīt abus motorus ar vienu kontrolieri)
  • Jebkurš Arduino. Es izmantoju Arduino UNO
  • Akumulators/ barošanas avots. (Es izmantoju 7,4 V 2 šūnu LiPo akumulatoru)
  • Ekrāns (izvēlnes parādīšanai. Darbosies jebkurš ar U8G saderīgs ekrāns, es izmantoju šo 1,3 collu OLED ekrānu)
  • Rotācijas kodētājs (Navigācijai un opciju konfigurēšanai izvēlnē)
  • Fiziska spiedpoga (slīdņa kustības aktivizēšanai)

1. darbība. Aparatūras projektēšana + uzbūve + 3D drukāšana

Elektronika
Elektronika

Tālāk pāriesim pie elektronikas. Elektronika ir vieta, kur šim projektam ir liela elastība.

Sāksim ar šī projekta kodolu- 2 matētiem līdzstrāvas motoriem.

Es izvēlējos matētus līdzstrāvas motorus vairāku iemeslu dēļ.

  1. Matēti motori ir daudz vienkāršāk vadāmi un darbināmi salīdzinājumā ar pakāpju motoriem
  2. Brushed DC motori ir daudz vieglāki nekā līdzstrāvas motori, kas ir īpaši svarīgi rotācijas ass motoram, jo šis motors fiziski pārvietojas sāniski kopā ar kameru, un tas ir pēc iespējas vieglāks, lai novērstu primārā kameras slīdņa motora pārmērīgu slodzi.

Es izvēlējos šo konkrēto līdzstrāvas motoru. Šis motors man deva ārkārtīgi lielu griezes momentu, kas bija nepieciešams, lai pārvietotu tik lielu kameras slodzi. Turklāt augstā pārnesumkārba nozīmēja, ka maksimālais apgriezienu skaits bija lēns, kas nozīmēja, ka es varētu filmēt lēnākas kustības, un augsts pārnesums arī noveda pie augstākas pozicionēšanas precizitātes, jo viena izejas vārpstas 360 grādu rotācija nozīmēja 341,2 motora kodētāja skaitļus.

Tādējādi mēs nonākam pie RoboClaw kustības kontroliera. Roboclaw motora dubultās līdzstrāvas motora kontrolleris, izmantojot vienkāršas koda komandas, saņem vienkāršus norādījumus no jūsu Arduino un veic visu smago apstrādi un enerģijas piegādi, lai jūsu motors darbotos kā paredzēts. Arduino var nosūtīt signālus Roboclaw, izmantojot PWM, analogo spriegumu, vienkāršu sēriju vai pakešu sēriju. Pakešu sērija ir labākais veids, kā iet, jo tā ļauj no Roboclaw atgūt informāciju, kas nepieciešama pozīcijas izsekošanai. Nākamajā solī (programmēšana) es iedziļināšos Roboclaw programmatūras/programmēšanas daļā.

Būtībā Roboclaw var pārveidot līdzstrāvas suku motoru ar kodētāju, lai tas vairāk atgādinātu servo, pateicoties RoboClaw spējai kontrolēt stāvokli. Tomēr atšķirībā no tradicionālā servo, jūsu matētajam līdzstrāvas motoram ir daudz lielāks griezes moments, daudz lielāka pozīcijas precizitāte, pateicoties lielam motora pārnesumam, un pats galvenais, jūsu līdzstrāvas motors var nepārtraukti griezties 360 grādos, un to nevar izdarīt neviens tradicionālais servo.

Nākamā elektronikas daļa ir ekrāns. Ekrānam es izvēlējos šo OLED paneli tā izmēra un augsta kontrasta dēļ. Šis neticami augstais kontrasts padara ekrānu ļoti viegli lietojamu tiešos saules staros, vienlaikus neizlaižot pārāk daudz gaismas, kas var traucēt iespējamo tumšās kameras uzņemšanu. Šo ekrānu var viegli nomainīt pret citu U8G saderīgu ekrānu. Pilns saderīgo ekrānu saraksts ir pieejams šeit. Faktiski šis projekts tika apzināti kodēts ap U8G bibliotēku, tāpēc tādiem DIY celtniekiem bija lielāka elastība

Šī projekta pēdējās elektronikas daļas bija rotējošais kodētājs un spiedpoga slīdņa kustības sākšanai. Kodētājs ļauj jums pārvietoties ekrāna izvēlnē un konfigurēt visu slīdņa izvēlni tikai ar vienu ciparnīcu. Rotējošajam kodētājam nav “beigu” stāvokļa kā tradicionālajam potenciometram, un tas ir īpaši noderīgi, lai ekrānā mainītu objektu izsekošanas x un y koordinātas. Spiedpoga tiek izmantota tikai, lai sāktu slīdņa kustību, neizmantojot rotējošo kodētāju.

3. darbība: kameras slīdņa programmēšana

Kameras slīdņa programmēšana
Kameras slīdņa programmēšana
Kameras slīdņa programmēšana
Kameras slīdņa programmēšana

Kodēšana bija līdz šim grūtākais šī projekta izaicinājums. Redzi, no sākuma es vēlējos, lai slīdni varētu kontrolēt no ekrāna. Lai šis projekts būtu saderīgs ar pēc iespējas vairāk ekrāniem, man bija jāizmanto Arduino U8Glib bibliotēka. Šī bibliotēka atbalsta vairāk nekā 32 ekrānus. Tomēr U8Glib bibliotēka izmantoja attēla cilpu, lai uzzīmētu izvēlni uz ekrāna, un tas bija pretrunā ar Arduino spēju vienlaicīgi apkopot informāciju par kameras stāvokli, kas bija nepieciešama kameras leņķa aprēķināšanas funkcijai (tas ir apskatīts nākamajos pāris punktos)). U8Glib2 ir alternatīva attēla cilpai, izmantojot kaut ko tādu, ko sauc par pilnas lapas bufera opciju, taču bibliotēka patērēja pārāk daudz atmiņas un apgrūtināja pārējā koda iekļaušanu, ņemot vērā Arduino Uno atmiņas ierobežojumus. Tas nozīmēja, ka es biju iestrēdzis U8G un man bija jānovērš šī problēma, neļaujot ekrānam atjaunināties jebkurā laikā, kad slīdnis kustējās, un Arduino vajadzēja savākt pozīcijas datus no Roboclaw. Es arī biju spiests iedarbināt slīdni, lai tas sāktu kustēties ārpus izvēlnes cilpas, jo, kad es ieeju apakšizvēlnēs, es atrastos attēla cilpā, un slīdnis nedarbotos, kā paredzēts. Es arī apieju šo problēmu, liekot atsevišķai fiziskai pogai izraisīt slīdņa kustību.

Tālāk runāsim par rotācijas izsekošanas elementu. Šķiet, ka šo daļu ir ļoti sarežģīti integrēt, taču patiesībā tā ir diezgan vienkārša. Tā ieviešana ir saistīta ar funkciju “motor ()” manā Arduino kodā. Pirmais solis ir izveidot divdimensiju režģi un izlemt, kur atrodas objekts, kuru vēlaties izsekot. Pamatojoties uz to, jūs varat uzzīmēt trīsstūri uz savu pašreizējo atrašanās vietu. Jūs varat iegūt savu pašreizējo atrašanās vietu no motora kodētāja vērtības. Ja vēlaties konfigurēt izsekojamā objekta atrašanās vietu cm/mm, kodētāja vērtība ir jāpārveido par cm/mm. To var vienkārši izdarīt, pārvietojot kameras slīdni par 1 cm un izmērot kodētāja vērtības pieaugumu. Šo vērtību varat ievadīt koda augšdaļā zem mainīgā encoder_mm.

Turpinot, tagad mēs izmantosim apgriezto pieskares funkciju, lai iegūtu leņķi, ar kādu kamerai jābūt vērstai pret jūsu objektu. Apgrieztā pieskare aizņem trīsstūra pretējo un blakus esošo malu. Trijstūra pretējā puse nekad nemainās, jo tas ir y attālums no slīdņa līdz objektam. Tomēr kameras slīdņa blakus esošā puse mainās. Šo blakus esošo pusi var aprēķināt, ņemot objekta x pozīciju un atņemot no tā jūsu pašreizējo atrašanās vietu. Slīdnim pārvietojoties pa savu kustības diapazonu, tas turpinās atjaunināt Arduino kodētāja vērtību. Arduino atkārtoti pārveidos šo kodētāja vērtību cm/mm x pozīcijas vērtībā un pēc tam aprēķinās blakus esošo sānu garumu un visbeidzot aprēķinās leņķi, ar kādu kamerai vienmēr jābūt vērstai, lai vērstu uz objektu.

Tagad, kad mūsu Arduino dinamiski apstrādā kameras leņķi, mēs varam risināt šī leņķa pārveidošanu par pozīcijas vērtību, lai rotācijas motors pārvietotos. Tādējādi mēs nonākam pie RoboClaw lielākās iezīmes šajā projektā. Piešķirot Roboclaw pozīcijas vērtību, tas būtībā var likt līdzstrāvas matētajam motoram darboties kā servo. Izņemot atšķirību no servo, mūsu motoram ir par vairāk griezes momenta, daudz lielāka precizitāte un tas var griezties arī 360 grādos.

Arduino kods Roboclaw pārvietošanai noteiktā pozīcijā ir šāds:

roboclaw. SpeedAccelDeccelPositionM1 (adrese, “ātrums”, “paātrinājums”, “palēninājums”, “pozīcija, uz kuru vēlaties doties”, 1);

Lai noregulētu motora pozīcijas vērtību atbilstoši jūsu kameras leņķim, jums manuāli jāpārvieto kameras plāksne par 180 grādiem. Tālāk skatiet, cik daudz kodētāja vērtība ir mainījusies, pārvietojot kameras plāksni no 0 grādiem uz 180 grādiem. Tas dod jums kodētāja diapazonu. Šo diapazonu varat ievadīt motora funkcijā, kas kartē Arduino kameras leņķi līdz pozīcijas vērtībai. Tas ir arī komentēts kodā, tāpēc to vajadzētu viegli atrast *****

RoboClaw arī deva man iespēju noregulēt citus faktorus, piemēram, paātrinājumu, palēninājumu un PID vērtības. Tas vēl vairāk ļāva man izlīdzināt rotācijas ass kustību, it īpaši, ja leņķa izmaiņas bija niecīgas un pievienoja raustījumus bez augstas “D” PID vērtības. Varat arī automātiski noregulēt savas PID vērtības, izmantojot Roboclaw darbvirsmas lietotni.

4. darbība. Kameras slīdņa lietošana

Kameras slīdņa lietošana
Kameras slīdņa lietošana

Tagad mēs nonākam pie jautrības daļas, izmantojot slīdni Izvēlnei ir 4 galvenās cilnes. Augšējā cilne ir paredzēta ātruma kontrolei. Izvēlnes vidējā rindā ir cilnes, lai konfigurētu izsekotā objekta X un Y pozīciju milimetros, kā arī konfigurētu, vai mēs vēlamies, lai slīdnis pagrieztos un izsekotu mūsu objektu, vai vienkārši veicam vienkāršu bīdāmu kustību bez rotācijas. Rotējošā kodētāja pagriešana ļauj mums orientēties dažādās izvēlņu opcijās. Lai konfigurētu kādu no opcijām, dodieties uz opciju un nospiediet rotējošo kodētāju. Pēc nospiešanas rotējošā kodētāja pagriešana mainīs iezīmēto apakšizvēlņu vērtību, nevis skries pa izvēlni. Kad esat sasniedzis vēlamo vērtību, varat vēlreiz noklikšķināt uz rotējošā kodētāja. Tagad esat atgriezies galvenajā izvēlnē un varat pārvietoties starp dažādām cilnēm. Kad esat gatavs, vienkārši nospiediet pogu poga blakus ekrānam, un slīdnis dara savu!

Kad esat pabeidzis lietot kameras slīdni, pārliecinieties, vai kamera atrodas “mājas” stāvoklī: slīdņa pusē, ar kuru tā sākās. Iemesls tam ir tas, ka motora kodētājs nav absolūts kodētājs, kas nozīmē, ka Roboclaw/Arduino nevar pateikt, kur atrodas kodētājs. Viņi var pateikt tikai to, cik daudz kodētājs ir mainījies kopš pēdējās ieslēgšanas reizes. Tas nozīmē, ka, izslēdzot kameras slīdni, slīdnis “aizmirsīs” slīdņa pozīciju un atiestatīs kodētāju uz 0. Tāpēc, ja izslēgsiet slīdni otrā pusē, ieslēdzot to, slīdnis mēģiniet pārvietoties tālāk par malu un ietriekties slīdņa sienā. Šī kodētāja uzvedība ir arī iemesls, kāpēc kamera pēc katras kameras slīdēšanas kustības atiestata rotācijas leņķi. Rotācijas ass arī pasargā sevi no iekļūšanas kustības diapazona beigās.

To var novērst, pievienojot beigu pieturvietas un sākuma procedūru. Tas ir tas, ko izmanto 3D printeri.

5. solis: galīgās domas + uzlabojumi nākotnē

Es ļoti iesaku ikvienam celtniekam izveidot savu šī slīdņa versiju, nevis veidot tieši tādu pašu slīdni. Pielāgojot manu dizainu, jūs varēsit izveidot slīdni atbilstoši savām specifikācijām, vienlaikus labāk saprotot, kā darbojas elektronika un kods.

Es padarīju kodu pēc iespējas lasāmāku un konfigurējamu, lai jūs varētu pielāgot/kalibrēt dažādus koda mainīgos slīdņa specifikācijām. Kods ir arī pilnībā veidots ap funkcijām, tādēļ, ja vēlaties kopēt/ pielāgot/ pārrakstīt noteiktu slīdņa uzvedību, jums nav jāpārveido un jāpārstrādā viss kods, bet tikai tās daļas, kuras vēlaties rediģēt.

Visbeidzot, ja es izveidotu versiju 2.0, šeit ir daži uzlabojumi, kurus es varētu veikt

  1. Augstāka pārnesumu attiecība rotācijas ass motoram. Augstāks pārnesumskaitlis nozīmē, ka varu veikt precīzākas nelielas kustības. Tas ir īpaši svarīgi, ja kamera atrodas tālu no jūsu objekta un kameras leņķis mainās ļoti lēni. Pašlaik mans motors nav pārnests pārāk augstu, un tas var izraisīt nedaudz saraustītas kustības, kad kameras slīdnis darbojas pārāk lēni vai ja rotācijas leņķis ir ļoti maz mainīts. Augstas “D” PID vērtības pievienošana man ir palīdzējusi no tā atbrīvoties, taču tas ir izmaksājis nedaudz zemāku objektu izsekošanas precizitāti.
  2. Modulārais garums. Šis ir tālejošs mērķis, taču es vēlētos, lai kameras slīdnis būtu modulāra garuma, kas nozīmē, ka jūs varat viegli piestiprināt garāku sliežu ceļu, lai kamera varētu slīdēt. Tas ir diezgan grūti, jo būs pilnīgi jāsaskaņo abas sliedes un jāizdomā, kā jostas sistēmai darboties. Tomēr tas būtu foršs jauninājums!
  3. Pielāgota kustība Atslēgu kadrēšana. Es labprāt šajā kameras slīdnī ieviestu atslēgas kadru kustību jēdzienu. Atslēgu kadrēšana ir tehnika, ko ļoti bieži izmanto video un audio ražošanā. Tas ļautu veikt nelineāras kameras kustības, kad kamera nonāk pozīcijā, gaida, pēc tam pārvietojas citā pozīcijā ar citu ātrumu, gaida, pēc tam pāriet uz trešo pozīciju utt.
  4. Bluetooth/ bezvadu tālruņa vadība. Būtu patiešām forši, ja bezvadu režīmā varētu konfigurēt kameras slīdņa parametrus un varētu izvietot kameras slīdni grūti pieejamās vietās. Tālruņa lietotne varētu arī pavērt iespējas integrēt atslēgu kadrēšanu, kā minēts pēdējā rindkopā.

Tā tas ir šai apmācībai. Jūtieties brīvi nomest visus jautājumus zemāk esošajā komentāru sadaļā.

Lai iegūtu vairāk satura un elektronikas pamācību, varat arī apskatīt manu YouTube kanālu šeit.

Ieteicams: