Sisällysluettelo:

Kohteen seurantakameran liukusäädin pyörivällä akselilla. 3D -tulostettu ja rakennettu RoboClaw DC -moottorisäätimeen ja Arduinoon: 5 vaihetta (kuvilla)
Kohteen seurantakameran liukusäädin pyörivällä akselilla. 3D -tulostettu ja rakennettu RoboClaw DC -moottorisäätimeen ja Arduinoon: 5 vaihetta (kuvilla)
Anonim
Image
Image
Laitteistosuunnittelu + koontiversio + 3D -tulostus
Laitteistosuunnittelu + koontiversio + 3D -tulostus

Fusion 360 -projektit »

Tämä projekti on ollut yksi suosikkiprojekteistani siitä lähtien, kun sain yhdistää kiinnostukseni videon tekemiseen DIY-tekemiseen. Olen aina katsonut ja halunnut jäljitellä niitä elokuvamaisia otoksia elokuvissa, joissa kamera liikkuu ruudun poikki panoroimalla seuratakseen kohdetta. Tämä lisää erittäin mielenkiintoisen syvyysvaikutuksen muuten 2d -videoon. Halusin toistaa tämän käyttämättä tuhansia dollareita Hollywood -varusteisiin, päätin rakentaa tällaisen kameran liukusäätimen itse.

Koko projekti perustuu 3D -tulostettaviin osiin, ja koodi toimii suositulla Arduino -kortilla. Kaikki projektitiedostot, kuten CAD -tiedostot ja koodi, ovat ladattavissa alla.

CAD/ 3D -tulostustiedostot saatavilla täältä

Arduino -kooditiedosto löytyy täältä

Projekti pyörii 2 -vaihteisella harjatulla DC -moottorilla ja Basic Micro Roboclaw Motor -ohjaimella. Tämä moottorinohjain voi muuttaa harjatut tasavirtamoottorit ylivoimaiseksi servotyypiksi uskomattoman sijaintitarkkuuden, tonnin vääntömomentin ja täyden 360 asteen pyörimissuunnan avulla. Tästä lisää myöhemmin.

Ennen kuin jatkamme, katso ensin tähän linkitetty video -opetusohjelma. Tämä opetusohjelma antaa sinulle yleiskuvan siitä, miten tämä projekti rakennetaan, ja tämä Instructables -opas tutkii tarkemmin, miten rakensin tämän projektin.

Materiaalit-

  • 2x 1 metrin pituiset m10 -kierretangot, joita käytetään kaikkien osien liittämiseen
  • 8x M10 -mutteria osien kiinnittämiseen kierretankoihin
  • 2x 95 cm pitkät 8 mm: n sileät terästangot liukusäätimen liukumista varten
  • 4x lm8uu -laakeria, joiden avulla liukusäädin liukuu tasaisesti terästangoilla
  • 4x 10mm pitkät m3 -mutterit moottorin asennusta varten
  • 2 x rullalautalaakeria (ulkohalkaisija 22 mm, sisähalkaisija 8 mm) pyörimisakselia varten
  • 1x 15mm laakeri tyhjäkäynnin puolelle
  • 1x 4 cm pitkä m4 -pultti, jossa on m4 -lukkomutteri välipyörän laakerin kiinnittämiseen jousipyörän 3D -painettuun osaan.
  • 20 -hampainen hammaspyörä, jonka sisähalkaisija on 4 mm liukusäätimen moottorille. Tarkka hihnapyörä ei ole kovin tärkeä, koska tasavirtamoottorisi on suunnattava riittävään vääntömomenttiin. Varmista vain, että se on sama nousu kuin vyösi
  • 2 metriä pitkä GT2 -vyö. Jälleen voit käyttää mitä tahansa hihnaa niin kauan kuin se vastaa hihnapyörän hampaiden kulmaa.

Elektroniikka

  • 2 * Vaihteelliset tasavirtamoottorit, joissa on enkooderit (toinen ohjaa sivuttaisliikettä, toinen kääntöakselia). Tässä on se, jota käytin. Lisää tästä oppaan elektroniikkaosassa
  • RoboClaw DC -moottorisäädin. (Käytin kaksois 15Amp -ohjainta, koska sen avulla pystyin ohjaamaan molempia moottoreita yhdellä ohjaimella)
  • Mikä tahansa Arduino. Käytin Arduino UNO: ta
  • Akku/ virtalähde. (Käytin 7,4 V 2 -kennoista LiPo -akkua)
  • Näyttö (Valikon näyttämiseen. Mikä tahansa U8G -yhteensopiva näyttö toimii, käytin tätä 1,3 tuuman OLED -näyttöä)
  • Kiertokooderi (Valikon navigointiin ja asetusten määrittämiseen)
  • Fyysinen painike (liukusäätimen liikkeen käynnistämiseksi)

Vaihe 1: Laitteiston suunnittelu + rakentaminen + 3D -tulostus

Elektroniikka
Elektroniikka

Seuraavaksi siirrymme elektroniikkaan. Elektroniikka on tässä projektissa paljon joustavuutta.

Aloitetaan tämän projektin ytimestä- kahdesta harjatusta tasavirtamoottorista.

Valitsin harjatut tasavirtamoottorit muutamasta syystä.

  1. Harjattuja moottoreita on paljon helpompi kytkeä ja käyttää verrattuna askelmoottoreihin
  2. Harjatut tasavirtamoottorit ovat paljon kevyempiä kuin tasavirtamoottorit, mikä on erityisen tärkeää pyörimisakselimoottorille, koska kyseinen moottori liikkuu fyysisesti sivusuunnassa kameran kanssa ja tekee siitä mahdollisimman kevyen, jotta vältytään liialliselta kuormitukselta ensisijaiselle kameran liukusäätimelle.

Valitsin tämän DC -moottorin. Tämä moottori antoi minulle erittäin suuren vääntömomentin, joka oli tarpeen kameran raskaan kuorman siirtämiseksi. Lisäksi suuri vaihteisto merkitsi sitä, että huippukierrosluku oli hidas, mikä tarkoitti sitä, että voisin kuvata hitaampia liikkeitä, ja korkea vaihteisto johti myös parempaan paikannustarkkuuteen, koska yksi 360 asteen kierto lähtöakselilla merkitsi 341,2 moottorin anturin lukemaa.

Tämä tuo meidät RoboClaw -liikkeenohjaimeen. Roboclaw -moottorin kaksois DC -moottorinohjain ottaa Arduinolta yksinkertaiset ohjeet yksinkertaisten koodikomentojen kautta ja suorittaa kaiken raskaan prosessoinnin ja tehonsiirron, jotta moottorisi toimisi suunnitellulla tavalla. Arduino voi lähettää signaaleja Roboclawille PWM, analoginen jännite, yksinkertainen sarja tai pakettisarja. Pakettisarja on paras tapa edetä, koska sen avulla voit saada takaisin tietoja Roboclawilta, mikä on välttämätöntä sijainnin seurantaan. Sukellan syvemmälle Roboclawin ohjelmisto-/ohjelmointiosaan seuraavassa vaiheessa (ohjelmointi).

Pohjimmiltaan Roboclaw voi muuttaa DC -harjatun moottorin kooderilla enemmän servona, koska RoboClaw pystyy hallitsemaan sijaintia. Toisin kuin perinteinen servo, nyt harjatulla tasavirtamoottorillasi on paljon enemmän vääntöä, paljon enemmän sijaintitarkkuutta suuren moottorin vaihteiston ansiosta, ja mikä tärkeintä, tasavirtamoottorisi voi pyöriä 360 astetta jatkuvasti, eikä perinteinen servo pysty siihen.

Seuraava elektroniikkaosa on näyttö. Valitsin näytölle tämän OLED -paneelin koon ja suuren kontrastin vuoksi. Tämä suuri kontrasti on uskomaton ja tekee näytön erittäin helpoksi käyttää suorassa auringonvalossa, mutta se ei anna liikaa valoa, joka voi häiritä mahdollisia tummia kamerakuvia. Tämä näyttö voidaan helposti vaihtaa toiseen U8G -yhteensopivaan näyttöön. Täydellinen luettelo yhteensopivista näytöistä löytyy täältä. Itse asiassa tämä projekti koodattiin tarkoituksella U8G -kirjaston ympärille, joten kaltaisillasi DIY -rakentajilla oli enemmän joustavuutta osissaan

Tämän projektin viimeiset elektroniikkaosat olivat pyörivä anturi ja painike liukusäätimen liikkeen käynnistämiseksi. Kooderin avulla voit navigoida näytön valikossa ja määrittää kaikki liukusäätimen valikot yhdellä valitsimella. Kiertokooderilla ei ole "pääteasentoa" kuin perinteisellä potentiometrillä, ja tämä on erityisen hyödyllistä säätämällä näytöllä olevan kohteen seurannan x- ja y -koordinaatteja. Painonappia käytetään yksinomaan liukusäätimen liikkeen käynnistämiseen ilman, että joudutaan kiertämään kiertokooderia.

Vaihe 3: Kameran liukusäätimen ohjelmointi

Kameran liukusäätimen ohjelmointi
Kameran liukusäätimen ohjelmointi
Kameran liukusäätimen ohjelmointi
Kameran liukusäätimen ohjelmointi

Koodaus oli hankkeen vaikein haaste. Alusta alkaen halusin, että liukusäädintä voidaan ohjata näytöltä. Jotta tämä projekti olisi yhteensopiva mahdollisimman monen näytön kanssa, minun piti käyttää Arduinon U8Glib -kirjastoa. Tämä kirjasto tukee yli 32 näyttöä. U8Glib -kirjasto käytti kuitenkin kuvasilmukkaa valikon piirtämiseen ruudulle, ja tämä oli ristiriidassa Arduinon kyvyn kanssa kerätä samanaikaisesti tietoja kameran sijainnista, jota vaadittiin kamerakulman laskutoiminnolle (Tämä käsitellään seuraavissa parissa kappaleessa)). U8Glib2: lla on vaihtoehto kuvasilmukalle käyttämällä koko sivun puskurivaihtoehtoa, mutta kirjasto kulutti liikaa muistia ja vaikeutti muun koodin sovittamista Arduino Unon muistin rajoitusten vuoksi. Tämä tarkoitti sitä, että olin jumissa U8G: n kanssa ja jouduin kiertämään ongelman estämällä näytön päivittämisen aina, kun liukusäädin oli liikkeessä ja Arduinon oli kerättävä sijaintitietoja Roboclawilta. Minun oli myös pakko käynnistää liukusäädin siirtymään valikkosilmukan ulkopuolelle, kun tulin alivalikoihin, olisin kuvasilmukan sisällä, ja liukusäädin ei toimisi tarkoitetulla tavalla. Kiertelin tämän ongelman myös antamalla erillisen fyysisen painikkeen käynnistämään liukusäätimen liikkeen.

Seuraavaksi puhutaan pyörivästä seurantaelementistä. Tämä osa vaikuttaa erittäin monimutkaiselta integroida, mutta se on itse asiassa melko yksinkertainen. Tämän toteutus on "motor ()" -toiminnon alla Arduino -koodini sisällä. Ensimmäinen askel on tehdä 2 -ulotteinen ruudukko ja päättää, mihin kohde haluat seurata. Tämän perusteella voit piirtää kolmion nykyiseen sijaintiisi. Voit saada nykyisen sijaintisi moottorin anturin arvosta. Jos haluat määrittää seurattavan objektin sijainnin cm/mm, sinun on käännettävä anturin arvo cm/mm -arvoksi. Tämä voidaan tehdä yksinkertaisesti siirtämällä kameran liukusäädintä 1 cm ja mittaamalla anturin arvon nousu. Voit syöttää tämän arvon koodin yläosaan encoder_mm -muuttujan alle.

Siirrymme eteenpäin, nyt käytämme käänteistä tangenttifunktiota saadaksemme kulman, jonka kameran on oltava kohdeasi kohti. Käänteinen tangentti ottaa vastaan kolmion vastakkaisen ja viereisen sivun. Kolmion vastakkaiset sivut eivät koskaan muutu, koska se on y -etäisyys liukusäätimestä kohteeseen. Kameran liukusäätimen viereinen puoli kuitenkin muuttuu. Tämä viereinen puoli voidaan laskea ottamalla kohteen x -sijainti ja vähentämällä nykyinen sijaintisi siitä. Kun liukusäädin liikkuu liikealueellaan, se päivittää jatkuvasti Arduinon anturin arvon. Arduino muuntaa tämän enkooderin arvon toistuvasti cm/mm x sijaintiarvoksi ja laskee sitten viereisen sivun pituuden ja lopuksi laskee kulman, jota kamera tarvitsee aina kohdistaa kohteeseen.

Nyt kun Arduino käsittelee kameran kulmaa dynaamisesti, voimme ratkaista tämän kulman muuttamisen asentoarvoon, jotta pyörivä moottori voi siirtyä. Tämä tuo meidät RoboClawin suurimpaan ominaisuuteen tässä projektissa. Antamalla Roboclawille asema -arvon, se voi saada DC -harjatun moottorin käyttäytymään servona. Paitsi toisin kuin servo, moottorillamme on tonnia enemmän vääntöä, paljon tarkempi ja se voi myös pyöriä 360 astetta.

Arduino -koodi Roboclawin siirtämiseksi tiettyyn paikkaan on seuraava:

roboclaw. SpeedAccelDeccelPositionM1 (osoite, "nopeus", "kiihtyvyys", "hidastuvuus", "sijainti, johon haluat mennä", 1);

Jos haluat virittää moottorin asentoarvon vastaamaan kameran kulmaa, sinun on siirrettävä kameralevyä manuaalisesti 180 astetta. Seuraavaksi näet, kuinka paljon anturin arvo on muuttunut kameran levyn siirtämisestä 0 asteesta 180 asteeseen. Tämä antaa sinulle anturialueesi. Voit syöttää tämän alueen moottoritoiminnossa, joka yhdistää Arduinon kamerakulman paikannusarvoon. Tämä on myös kommentoitu koodiin, joten sen pitäisi olla helppo löytää *****

RoboClaw antoi minulle myös mahdollisuuden virittää muita tekijöitä, kuten kiihtyvyys, hidastuvuus ja PID -arvot. Tämä antoi minulle mahdollisuuden tasoittaa pyörimisakselin liikettä etenkin silloin, kun kulman muutokset olivat pieniä ja lisäsi nykäyksiä ilman korkeaa D -PID -arvoa. Voit myös virittää PID-arvosi automaattisesti Roboclawin työpöytäsovelluksen kautta.

Vaihe 4: Kameran liukusäätimen käyttö

Kameran liukusäätimen käyttö
Kameran liukusäätimen käyttö

Nyt päästään hauskaan osaan, liukusäätimen käyttö Valikossa on 4 päävälilehteä. Ylempi välilehti on omistettu nopeuden säätöön. Valikon keskimmäisellä rivillä on välilehtiä, joilla voidaan määrittää seurattavan objektin X & Y -sijainti millimetreinä, ja myös määrittää, haluammeko liukusäätimen pyörivän ja seuraavan kohdetta tai vain yksinkertaisen liukuvan liikkeen ilman kiertoa. Kiertämällä pulssianturia voit navigoida valikoiden eri vaihtoehdoissa. Jos haluat määrittää minkä tahansa vaihtoehdon, siirry sen kohdalle ja paina kiertokooderia. Kun painat, kiertokooderin kiertäminen muuttaa korostetun alivalikon arvoa sen sijaan, että selaisi valikkoa. Kun olet saavuttanut halutun arvon, voit napsauttaa pyörivää anturia uudelleen. Olet nyt takaisin päävalikkoon ja voit siirtyä eri välilehtien välillä. Kun olet valmis, paina vain näytön vieressä olevaa go -painiketta ja liukusäädin tekee tehtävänsä!

Varmista, että kun olet lopettanut kameran liukusäätimen käytön, kamera on "koti" -asennossa: sen liukusäätimen puolella, josta se alkoi. Syynä tähän on se, että moottorianturi ei ole ehdoton enkooderi, mikä tarkoittaa, että Roboclaw/Arduino ei voi kertoa, missä anturi on. He voivat vain kertoa, kuinka paljon anturi on muuttunut viimeisen käynnistyksen jälkeen. Tämä tarkoittaa sitä, että kun kytket kameran liukusäätimen pois päältä, liukusäädin "unohtaa" liukusäätimen asennon ja palauttaa kooderin nollaan. Siksi, jos sammutat liukusäätimen toisella puolella, kun kytket sen päälle, liukusäädin yritä siirtyä reunaa pidemmälle ja törmätä liukusäätimen seinään. Tämä kooderin käyttäytyminen on myös syy, miksi kamera palauttaa kiertokulman jokaisen kameran liukuliikkeen jälkeen. Pyörivä akseli suojaa myös itseään törmäykseltä liikealueensa loppuun.

Voit korjata tämän lisäämällä päätepysähdyksiä ja kohdistusmenettelyn käynnistyksen yhteydessä. Tätä 3D -tulostimet käyttävät.

Vaihe 5: Viimeiset ajatukset + parannukset tulevaisuudessa

Suosittelen vahvasti, että jokainen rakentaja tekee omat versiot tästä liukusäätimestä sen sijaan, että rakentaisi täsmälleen samaa liukusäädintä. Suunnitteluni säätämisen avulla voit rakentaa liukusäätimen tarkkojen eritelmien mukaan ja samalla ymmärtää paremmin, miten elektroniikka ja koodi toimivat.

Tein koodista mahdollisimman luettavan ja konfiguroitavan, jotta voit säätää/kalibroida eri koodimuuttujia liukusäätimen määritysten mukaan. Koodi on myös täysin rakennettu toimintojen ympärille, joten jos haluat kopioida/ säätää/ kirjoittaa uudelleen tiettyjä liukusäätimen käyttäytymisiä, sinun ei tarvitse muuttaa ja muokata koko koodia, vaan vain osia, joita haluat muokata.

Lopuksi, jos tein version 2.0, tässä on joitain parannuksia

  1. Suurempi pyörimisakselin moottorin välityssuhde. Suurempi velkasuhde tarkoittaa, että voin tehdä tarkempia pieniä liikkeitä. Tämä on erityisen tärkeää, kun kamera on kaukana kohteesta ja kamerakulma muuttuu hyvin hitaasti. Tällä hetkellä moottorini ei ole suunnattu liian korkealle, ja se voi aiheuttaa hieman nykivää liikettä, kun kameran liukusäädin pyörii liian hitaasti tai kun kiertokulman muutos on hyvin pieni. Korkean D -PID -arvon lisääminen on auttanut minua pääsemään eroon tästä, mutta se on johtanut hieman pienempään objektinseurannan tarkkuuteen.
  2. Modulaarinen pituus. Tämä on kaukaa haettu tavoite, mutta haluaisin, että kameran liukusäädin olisi modulaarinen, mikä tarkoittaa, että voit helposti kiinnittää pidempiä raitoja kameran liukumista varten. Tämä on melko vaikeaa, koska joudut täydellisesti kohdistamaan molemmat telat ja selvittämään, miten hihnajärjestelmä toimii. Siitä huolimatta se olisi hieno päivitys!
  3. Mukautetun liikkeen avainkehys. Haluaisin esitellä avainkehyksisten liikkeiden käsitteen tähän kameran liukusäädimeen. Avaimen kehystys on tekniikka, jota käytetään yleisesti videon ja äänen tuotannossa. Se mahdollistaisi epälineaariset kameran liikkeet, joissa kamera menee asentoon, odottaa, siirtyy sitten toiseen asentoon eri nopeudella, odottaa, sitten siirtyy kolmanteen asentoon jne.
  4. Bluetooth-/ langattoman puhelimen ohjaus. Olisi todella hienoa pystyä konfiguroimaan kameran liukusäätimen parametrit langattomasti ja ottaa kameran liukusäädin käyttöön vaikeapääsyisissä paikoissa. Puhelinsovellus voi myös avata mahdollisuuksia integroida avainkehykset, kuten viimeisessä kappaleessa mainitaan.

Se on tässä opetusohjelmassa. Voit vapaasti pudottaa kysymyksiä alla olevaan kommenttiosaan.

Lisää sisältö- ja elektroniikkaoppaita löydät myös YouTube -kanavaltani täältä.

Suositeltava: