Taula de continguts:

Control lliscant de càmera de seguiment d'objectes amb eix de rotació. Imprès en 3D i construït al controlador de motor CC RoboClaw i Arduino: 5 passos (amb imatges)
Control lliscant de càmera de seguiment d'objectes amb eix de rotació. Imprès en 3D i construït al controlador de motor CC RoboClaw i Arduino: 5 passos (amb imatges)

Vídeo: Control lliscant de càmera de seguiment d'objectes amb eix de rotació. Imprès en 3D i construït al controlador de motor CC RoboClaw i Arduino: 5 passos (amb imatges)

Vídeo: Control lliscant de càmera de seguiment d'objectes amb eix de rotació. Imprès en 3D i construït al controlador de motor CC RoboClaw i Arduino: 5 passos (amb imatges)
Vídeo: Часть 09 — Аудиокнига «Моби Дик» Германа Мелвилла (гл. 105–123) 2024, De novembre
Anonim
Image
Image
Disseny de maquinari + Build + impressió 3D
Disseny de maquinari + Build + impressió 3D

Projectes Fusion 360 »

Aquest projecte ha estat un dels meus projectes preferits des que vaig poder combinar el meu interès per fer vídeo amb el bricolatge. Sempre he mirat i volgut emular aquelles captures cinematogràfiques de pel·lícules en què una càmera es mou per una pantalla mentre es desplaça per fer un seguiment de l’objecte. Això afegeix un efecte de profunditat molt interessant a un vídeo 2D que no és així. Volent replicar-ho sense gastar milers de dòlars en equipament de Hollywood, vaig decidir construir jo mateix un control lliscant de càmera.

Tot el projecte es basa en peces que podeu imprimir en 3D i el codi s’executa a la popular placa Arduino. Tots els fitxers del projecte, com ara els fitxers i el codi CAD, es poden descarregar a continuació.

Hi ha fitxers d'impressió CAD / 3D disponibles aquí

El fitxer Arduino Code està disponible aquí

El projecte gira al voltant dels 2 motors de corrent continu engranats i del controlador bàsic Micro Roboclaw Motor. Aquest controlador de motor pot transformar motors de corrent continu en un tipus de servo superior amb una precisió de posició increïble, tones de parell i un gir complet de 360 graus. Més informació sobre això més endavant.

Abans de continuar, mireu primer el vídeo tutorial enllaçat aquí. Aquest tutorial us proporcionarà una visió general de com construir aquest projecte i aquesta guia Instructables aprofundirà en la forma en què he creat aquest projecte.

Materials-

  • Varetes roscades m10 de 2x 1 metre de longitud que serveixen per connectar totes les peces
  • 8x femelles M10 per muntar les peces a les barres roscades
  • 2 barres d'acer llises de 8 mm de 95 cm de llargada per lliscar el lliscador
  • Coixinets de 4x lm8uu perquè el control lliscant llisqui sense problemes sobre les barres d'acer
  • 4 femelles m3 de 10 mm de llarg per muntar el motor
  • 2 coixinets de monopatí (diàmetre exterior de 22 mm, diàmetre interior de 8 mm) per a l'eix de rotació
  • 1x coixinet de 15 mm per al costat del ralentí
  • 1x pern m4 de 4 cm de llargada amb rosca de m4 per muntar el coixinet del rodet a la peça impresa en 3D.
  • Engranatge de 20 dents amb diàmetre interior de 4 mm per al motor lliscant. La politja exacta no és molt important, ja que el motor de corrent continu hauria d’estar orientat a un parell suficient. Assegureu-vos que sigui el mateix to que el cinturó
  • Cinturó GT2 de 2 metres de llarg. Una vegada més, podeu utilitzar qualsevol cinturó sempre que coincideixi amb el pas de les dents de la politja.

Electrònica

  • 2 * Motors de corrent continu amb codificadors (un controla el moviment lateral, mentre que l'altre controla l'eix de rotació). Aquí teniu la que vaig fer servir. Més informació a la part electrònica de la guia
  • Controlador de motor CC RoboClaw. (Vaig utilitzar el controlador dual de 15A, ja que em permetia controlar els dos motors amb un controlador)
  • Qualsevol Arduino. He utilitzat Arduino UNO
  • Bateria / font d'alimentació. (He utilitzat una bateria LiPo de 7,4 V 2 cèl·lules)
  • Pantalla (per mostrar el menú. Qualsevol pantalla compatible amb U8G funcionarà, he utilitzat aquesta pantalla OLED de 1,3 polzades)
  • Codificador de rotació (per navegar i configurar les opcions del menú)
  • Polsador físic (per activar el moviment del control lliscant)

Pas 1: disseny de maquinari + compilació + impressió 3D

Electrònica
Electrònica

A continuació, passem a l'electrònica. L’electrònica és on aquest projecte té molta flexibilitat.

Comencem pel nucli d’aquest projecte: els 2 motors de corrent continu.

Vaig triar motors de corrent continu per alguns motius.

  1. Els motors raspallats són molt més senzills de connectar i funcionar en comparació amb els motors pas a pas
  2. Els motors de corrent continu són molt més lleugers que els motors de corrent continu, cosa que és especialment important per al motor de l’eix de rotació, ja que aquest motor es mou físicament lateralment amb la càmera i fer que el més lleuger possible sigui important per evitar una tensió excessiva del motor lliscant de la càmera principal.

Vaig triar aquest motor de corrent continu. Aquest motor em va proporcionar un parell extremadament elevat que era necessari per moure una càrrega de càmera tan pesada. A més, l’engranatge elevat significava que el màxim RPM era lent, cosa que significava que podia filmar moviments més lents, i l’engranatge elevat també conduïa a una precisió posicional més elevada, ja que una rotació de 360 graus de l’eix de sortida significava 341,2 recomptes del codificador del motor.

Això ens porta al controlador de moviment RoboClaw. El controlador de motor CC de doble motor Roboclaw pren instruccions senzilles del vostre Arduino mitjançant ordres de codi senzilles i realitza tot el processament i el subministrament de potència per fer que el vostre motor funcioni com es vol. L'Arduino pot enviar senyals a Roboclaw mitjançant PWM, tensió analògica, sèrie simple o paquet sèrie. El paquet en sèrie és la millor manera d’anar, ja que us permet recuperar informació de Roboclaw necessària per al seguiment posicional. Aprofundiré en la part de programari / programació de Roboclaw en el següent pas (programació).

En essència, el Roboclaw pot transformar un motor raspallat de CC amb un codificador per ser més semblant a un servo gràcies a la capacitat del RoboClaw de fer control de posició. Tanmateix, a diferència d’un servo tradicional, ara el vostre motor de corrent continu té molt més parell, molta més precisió posicional a causa de l’engranatge elevat del motor i, el més important, el vostre motor de corrent continu pot girar 360 graus contínuament, cap dels quals un servo tradicional no ho pot fer.

La següent part electrònica és la pantalla. Per a la meva pantalla, he escollit aquest panell OLED per la seva mida i el seu alt contrast. Aquest alt contrast és increïble i fa que la pantalla sigui molt fàcil d’utilitzar a la llum directa del sol, tot i que no dóna massa llum que pot interferir amb una possible presa de càmera fosca. Aquesta pantalla es pot canviar fàcilment per una altra pantalla compatible amb U8G. La llista completa de pantalles compatibles està disponible aquí. De fet, aquest projecte es va codificar intencionadament al voltant de la biblioteca U8G, de manera que els fabricants de bricolatge com vosaltres tenien més flexibilitat en les seves parts

Les últimes parts de l'electrònica per a aquest projecte van ser el codificador rotatiu i el polsador per iniciar el moviment del control lliscant. El codificador us permet navegar pel menú de la pantalla i configurar tot el menú del control lliscant amb un sol dial. El codificador rotatiu no té cap posició "final" com un potenciòmetre tradicional, i això és especialment útil per ajustar les coordenades x i y del seguiment d'objectes a la pantalla. El polsador s’utilitza exclusivament per iniciar el moviment del control lliscant sense haver de jugar amb el codificador rotatiu.

Pas 3: programació del control lliscant de la càmera

Programació del control lliscant de la càmera
Programació del control lliscant de la càmera
Programació del control lliscant de la càmera
Programació del control lliscant de la càmera

La codificació va ser, amb diferència, el repte més difícil d’aquest projecte. Ja veieu, des del principi volia que el control lliscant fos controlable des d’una pantalla. Per fer aquest projecte compatible amb tantes pantalles com sigui possible, vaig haver d’utilitzar la biblioteca U8Glib per a l’Arduino. Aquesta biblioteca té suport per a més de 32 pantalles. Tanmateix, la biblioteca U8Glib va utilitzar un bucle d'imatge per dibuixar el menú a la pantalla i això entrava en conflicte amb la capacitat de l'Arduino de recollir simultàniament informació sobre la posició de la càmera que era necessària per a la funcionalitat de càlcul de l'angle de la càmera (Això es descriu en els següents paràgrafs). L’U8Glib2 té una alternativa al bucle d’imatges mitjançant l’ús d’alguna opció anomenada memòria intermèdia de pàgina completa, però la biblioteca va consumir massa memòria i va dificultar l’encaix de la resta del codi donades les limitacions de memòria de l’Arduino Uno. Això significava que em quedava enganxat amb U8G i havia de solucionar el problema evitant que la pantalla s'actualitzés en qualsevol moment en què el control lliscant estava en moviment i l'Arduino necessitava recollir dades de posició del Roboclaw. També em vaig veure obligat a activar el control lliscant per començar a moure’s fora del bucle de menú, ja que un cop heu entrat als submenús, estaria dins del bucle d’imatges i el control lliscant no funcionaria com es volia. També he esquivat aquest problema amb un botó físic separat que activi el moviment del control lliscant.

A continuació, parlem de l'element de seguiment rotatori. Aquesta part sembla molt complexa d’integrar, però en realitat és bastant senzilla. La implementació d’això es troba sota la funció ‘motor ()’ dins del meu codi Arduino. El primer pas és fer una quadrícula bidimensional i decidir on es col·loca l’objecte del qual voleu fer el seguiment. En funció d’això, podeu dibuixar un triangle a la vostra ubicació actual. Podeu obtenir la vostra ubicació actual a partir del valor del codificador del motor. Si voleu configurar la posició de l'objecte que es fa el seguiment en cm / mm, haureu de traduir el valor del codificador a un valor de cm / mm. Això es pot fer simplement movent el control lliscant de la càmera 1 cm i mesurant l’increment del valor del codificador. Podeu introduir aquest valor a la part superior del codi a la variable encoder_mm.

Seguint endavant, ara utilitzarem la funció tangent inversa per obtenir l’angle que ha d’estar cap a la càmera per apuntar cap al vostre objecte. La tangent inversa pren el costat oposat i adjacent del triangle. El costat oposat del triangle no canvia mai, ja que es troba a la distància y del control lliscant a l'objecte. Tanmateix, el costat adjacent del control lliscant de la càmera canvia. Aquest costat adjacent es pot calcular prenent la posició x de l'objecte i restant-ne la posició actual. A mesura que el control lliscant es desplaça pel seu rang de moviment, continuarà actualitzant l'Arduino sobre el valor del codificador. L'Arduino convertirà repetidament aquest valor del codificador a un valor posicional de cm / mm x i, a continuació, calcularà la longitud del costat adjacent i, finalment, calcularà l'angle que la càmera ha d'afrontar en tot moment per apuntar cap a l'objecte.

Ara que el nostre Arduino està processant dinàmicament l’angle de la càmera, podem abordar la conversió d’aquest angle a un valor posicional perquè el motor de rotació es desplaci. Això ens porta a la característica més gran de RoboClaw per a aquest projecte. En donar a Roboclaw un valor de posició, essencialment pot fer que un motor raspallat de CC es comporti com un servo. Excepte a diferència d’un servo, el nostre motor té un parell de tones més, una precisió molt superior i també pot girar 360 graus.

El codi Arduino per moure Roboclaw a una posició determinada és el següent:

roboclaw. SpeedAccelDeccelPositionM1 (adreça, "velocitat", "acceleració", "desacceleració", "posició a la qual voleu anar", 1);

Per ajustar el valor posicional del motor perquè correspongui amb l'angle de la càmera, haureu de moure manualment la placa de la càmera 180 graus. A continuació, consulteu quant ha canviat el valor del codificador de passar la placa de la càmera de 0 a 180 graus. Això us proporciona el vostre abast de codificadors. Podeu introduir aquest interval a la funció del motor que assigna l’angle de la càmera d’Arduino a un valor posicional. Això també es comenta al codi, de manera que hauria de ser fàcil de trobar *****

El RoboClaw també em va donar la possibilitat de sintonitzar altres factors com l'acceleració, la desacceleració i els valors PID. Això em va permetre, a més, suavitzar el moviment de l’eix de rotació, especialment quan els canvis d’angle eren minúsculs i afegien sacsejades sense un valor PID ‘D’ elevat. També podeu ajustar automàticament els vostres valors PID mitjançant l’aplicació d’escriptori de Roboclaw.

Pas 4: Funcionament del control lliscant de la càmera

Funcionament del control lliscant de la càmera
Funcionament del control lliscant de la càmera

Ara arribem a la part divertida, amb el control lliscant. El menú té 4 pestanyes principals. La pestanya superior està dedicada al control de velocitat. La fila central del menú conté pestanyes per configurar la posició X i Y de l’objecte rastrejat en mm i també configurar si volem que el control lliscant giri i faci un seguiment del nostre objecte o simplement faci un simple moviment lliscant sense girar. Girar el codificador rotatiu ens permet navegar per les diferents opcions dels menús. Per configurar qualsevol de les opcions, aneu a l'opció i premeu el codificador rotatiu. Un cop premut, girar el codificador rotatiu canviarà el valor del submenú ressaltat en lloc de fregar-lo pel menú. Quan hàgiu assolit el valor desitjat, podeu tornar a fer clic al codificador rotatiu. Ara torneu al menú principal i podeu navegar per les diferents pestanyes. Quan estigueu a punt, només cal que premeu el botó d'anar al costat de la pantalla i el control lliscant farà les seves coses.

Assegureu-vos que un cop hàgiu acabat d’utilitzar el control lliscant de la càmera, la càmera estigui a la posició ‘home’: el costat del control lliscant en què va començar. La raó d’això és que el codificador del motor no és un codificador absolut, cosa que significa que Roboclaw / Arduino no sap on és el codificador. Només poden saber quant ha canviat el codificador des que es va engegar per última vegada. Això significa que quan apagueu el control lliscant de la càmera, el control lliscant "oblidarà" la posició del control lliscant i restablirà el codificador a 0. Per tant, si apagueu el control lliscant de l'altre costat, quan l'engegueu, el control lliscant intenteu avançar més enllà de la vora i xocar contra la paret lliscant. Aquest comportament del codificador és també el motiu pel qual la càmera restableix el seu angle de rotació després de cada moviment de lliscament de la càmera. L'eix de rotació també es protegeix contra impactes al final del seu rang de moviment.

Podeu solucionar-ho afegint parades finals i un procediment de tornada quan arrenceu. Això és el que fan servir les impressores 3D.

Pas 5: Pensaments finals + Millores futures

Recomano encaridament que cada constructor faci les seves pròpies versions d'aquest control lliscant en lloc de construir el mateix control lliscant. Ajustar el meu disseny us permetrà construir el control lliscant segons les vostres especificacions exactes i, alhora, entendre millor el funcionament de l’electrònica i el codi.

He fet que el codi sigui el més llegible i configurable possible perquè pugueu ajustar / calibrar les diferents variables del codi per a les especificacions del control lliscant. El codi també està completament basat en funcions, de manera que si voleu copiar / modificar / reescriure certs comportaments del control lliscant, no cal que realitzeu cap enginyeria inversa i que torneu a treballar tot el codi, sinó només les parts que voleu editar.

Finalment, si realitzés una versió 2.0, aquí teniu algunes millores que faria

  1. Major relació d'engranatges per al motor de l'eix de rotació. Una relació d’engranatges més alta significa que puc fer moviments petits més precisos. Això és especialment important quan la càmera està lluny de l'objecte i l'angle de la càmera canvia molt lentament. Actualment, el meu motor no està engranat massa i pot provocar un moviment lleugerament sacsejat quan el control lliscant de la càmera funciona massa lentament o quan hi ha molt poc canvi d’angle de rotació. Afegir un valor PID ‘D’ elevat m’ha ajudat a desfer-me d’això, però m’ha costat una precisió de seguiment d’objectes lleugerament inferior.
  2. Longitud modular. Aquest és un objectiu descabellat, però m’encantaria que el control lliscant de la càmera tingués una longitud modular, de manera que podeu connectar fàcilment llargs de pista més llargs perquè la càmera llisqui. Això és bastant difícil, ja que caldrà alinear perfectament les dues vies i esbrinar com fer funcionar el sistema de corretges. Tot i això, seria una actualització fantàstica.
  3. Moviment personalitzat Keyframing. M’encantaria introduir el concepte de moviments de fotograma clau en aquest control lliscant de càmera. El fotograma clau és una tècnica molt utilitzada en la producció de vídeo i àudio. Permetria moviments no lineals de la càmera on la càmera es posicionés, espera, es desplaça a una altra posició a una velocitat diferent, espera, i després passa a una tercera posició, etc.
  4. Control de telèfon Bluetooth / sense fils. Seria fantàstic poder configurar els paràmetres del control lliscant de la càmera sense fils i poder desplegar el control lliscant de la càmera en llocs de difícil accés. L'aplicació del telèfon també podria obrir oportunitats per integrar els fotogrames de claus tal com es va esmentar a l'últim paràgraf.

Això és tot per a aquest tutorial. No dubteu a deixar cap pregunta a la secció de comentaris següent.

Per obtenir més tutorials sobre contingut i electrònica, també podeu consultar el meu canal de YouTube aquí.

Recomanat: