Innehållsförteckning:

Objektspårningskamera för skjutreglage med rotationsaxel. 3D -tryckt och byggt på RoboClaw DC Motor Controller & Arduino: 5 steg (med bilder)
Objektspårningskamera för skjutreglage med rotationsaxel. 3D -tryckt och byggt på RoboClaw DC Motor Controller & Arduino: 5 steg (med bilder)

Video: Objektspårningskamera för skjutreglage med rotationsaxel. 3D -tryckt och byggt på RoboClaw DC Motor Controller & Arduino: 5 steg (med bilder)

Video: Objektspårningskamera för skjutreglage med rotationsaxel. 3D -tryckt och byggt på RoboClaw DC Motor Controller & Arduino: 5 steg (med bilder)
Video: Coola gadgets för sommaren 2024, Juli
Anonim
Image
Image
Hårdvarudesign + byggnad + 3D -utskrift
Hårdvarudesign + byggnad + 3D -utskrift

Fusion 360 -projekt »

Detta projekt har varit ett av mina favoritprojekt sedan jag fick kombinera mitt intresse för videotillverkning med DIY. Jag har alltid tittat på och velat efterlikna de filmiska bilderna i filmer där en kamera rör sig över en skärm medan jag panorerar för att spåra objektet. Detta lägger till en mycket intressant djupeffekt till en annars 2d -video. Ville replikera detta utan att spendera tusentals dollar på Hollywood -redskap, bestämde jag mig för att bygga en sådan kamerareglage själv.

Hela projektet är byggt på delar som du kan 3D -skriva ut, och koden körs på det populära Arduino -kortet. Alla projektfiler som CAD -filer och kod finns att ladda ner nedan.

CAD/ 3D -utskriftsfiler tillgängliga här

Arduino Code -fil tillgänglig här

Projektet kretsar kring de två växlade borstade likströmsmotorerna och Basic Micro Roboclaw -motorstyrenheten. Denna motorstyrenhet kan omvandla borstade likströmsmotorer till en överlägsen typ av servo med otrolig lägesnoggrannhet, massor av vridmoment och hela 360 graders rotation. Mer om detta senare.

Innan vi fortsätter, titta på videohandledningen som är länkad här först. Denna handledning ger dig en överblick över hur du bygger detta projekt och den här instruktionsguiden kommer att gå mer i djupet i hur jag byggde det här projektet.

Material-

  • 2x 1 meter långa m10 gängstänger som används för att ansluta alla delar
  • 8x M10 muttrar för att montera delarna på gängstängerna
  • 2x 95 cm långa 8 mm släta stålstavar för reglaget att glida på
  • 4x lm8uu -lager för reglaget att smidigt glida på stålstavarna
  • 4x 10 mm långa m3 muttrar för montering av motorn
  • 2 x skateboardlager (22 mm ytterdiameter, 8 mm innerdiameter) för rotationsaxeln
  • 1x 15 mm lager för tomgångssidan
  • 1x 4 cm lång m4 bult med m4 låsmutter för montering av tomgångslager på tomgång 3d -tryckt del.
  • 20 tänder med 4 mm innerdiameter för reglermotorn. Den exakta remskivan är inte särskilt viktig eftersom din likströmsmotor bör vara inriktad för tillräckligt med vridmoment. Se bara till att det är samma tonhöjd som ditt bälte
  • 2 meter långt GT2 -bälte. Återigen kan du använda vilket bälte som helst så länge det matchar tonhjulets tänder.

Elektronik

  • 2 * Växlade likströmsmotorer med givare (den ena styr sidorörelsen, medan den andra styr rotationsaxeln). Här är den jag använde. Mer om detta i elektronikdelen av guiden
  • RoboClaw DC -motorstyrenhet. (Jag använde den dubbla 15Amp -styrenheten eftersom den tillät mig att styra båda motorerna med en styrenhet)
  • Vilken Arduino som helst. Jag använde Arduino UNO
  • Batteri/ strömkälla. (Jag använde ett 7,4V 2 -cellers LiPo -batteri)
  • Skärm (För att visa menyn. Alla U8G -kompatibla skärmar fungerar, jag använde denna 1,3 tums OLED -skärm)
  • Rotatry encoder (För navigering och konfigurering av alternativ i menyn)
  • Fysisk tryckknapp (för att aktivera skjutreglage)

Steg 1: Hårdvarudesign + Bygg + 3D -utskrift

Elektronik
Elektronik

Låt oss sedan gå vidare till elektroniken. Elektroniken är där detta projekt har stor flexibilitet.

Låt oss börja med kärnan i detta projekt- de två borstade likströmsmotorerna.

Jag valde borstade likströmsmotorer av några skäl.

  1. Borstade motorer är mycket enklare att köra och använda jämfört med stegmotorer
  2. Borstade likströmsmotorer är mycket lättare än likströmsmotorer, vilket är särskilt viktigt för rotationsaxelmotorn eftersom motorn rör sig fysiskt i sidled med kameran och gör att så lätt som möjligt är viktigt för att förhindra överdriven belastning av den primära kamerans reglermotor.

Jag valde just denna DC -motor. Denna motor gav mig ett extremt högt vridmoment som var nödvändigt för att flytta en så stor kameralast. Vidare innebar den höga växlingen att toppvarvtalet var långsamt vilket innebar att jag kunde filma långsammare rörelser, och den höga växlingen ledde också till högre lägesnoggrannhet eftersom en 360 graders rotation av utgående axel innebar 341,2 räkningar av motorns givare.

Detta tar oss till RoboClaw motion controller. Roboclaw -motorens dubbla DC -motorstyrenhet tar enkla instruktioner från din Arduino via enkla kodkommandon och gör all tung bearbetning och kraftleverans för att din motor ska fungera som avsett. Arduino kan skicka signaler till Roboclaw via PWM, analog spänning, enkel serie eller paketserie. Paketserie är det bästa sättet att gå eftersom det låter dig få tillbaka information från Roboclaw som är nödvändig för positionsspårning. Jag kommer att dyka djupare in i programvaru-/programmeringsdelen av Roboclaw i nästa steg (programmering).

I huvudsak kan Roboclaw förvandla en likströmsborstad motor med en kodare till att mer likna en servo tack vare RoboClaws förmåga att utföra positionskontroll. Men till skillnad från en traditionell servo, har din borstade likströmsmotor nu mycket mer vridmoment, mycket mer positionsnoggrannhet på grund av hög motorväxel, och viktigast av allt kan din likströmsmotor snurra i 360 grader kontinuerligt, ingen av dessa kan en traditionell servo inte göra.

Nästa elektronikdel är skärmen. För min skärm valde jag denna OLED -panel på grund av dess storlek och höga kontrast. Denna höga kontrast är otrolig och gör skärmen mycket enkel att använda i direkt solljus samtidigt som den inte ger ut för mycket ljus som kan störa ett potentiellt mörkt kameraskott. Denna skärm kan enkelt bytas ut mot en annan U8G -kompatibel skärm. Hela listan över kompatibla skärmar finns här. I själva verket var detta projekt avsiktligt kodat runt U8G -biblioteket så DIY -byggare som du hade mer flexibilitet i sina delar

De sista elektronikdelarna för detta projekt var den roterande givaren och tryckknappen för att starta reglaget. Med pulsgivaren kan du navigera på skärmmenyn och konfigurera alla skjutreglage -menyer med bara en ratt. Den roterande givaren har ingen "slut" -position som en traditionell potentiometer, och detta är särskilt användbart för att justera x- och y -koordinaterna för objektspårningen på skärmen. Tryckknappen används uteslutande för att starta skjutreglagets rörelse utan att behöva tjata med den roterande givaren.

Steg 3: Programmering av kamerareglaget

Programmering av kamerareglaget
Programmering av kamerareglaget
Programmering av kamerareglaget
Programmering av kamerareglaget

Kodning var det klart hårdaste utmaningen med detta projekt. Du ser, från början ville jag att reglaget skulle kunna styras från en skärm. För att göra detta projekt kompatibelt med så många skärmar som möjligt, var jag tvungen att använda U8Glib -biblioteket för Arduino. Detta bibliotek har stöd för över 32 skärmar. U8Glib -biblioteket använde dock en bildslinga för att rita menyn på skärmen och detta stred mot Arduino: s förmåga att samtidigt samla information om kamerans position som var nödvändig för kameravinkelberäkningsfunktionen (Detta behandlas i nästa par stycken). U8Glib2 har ett alternativ till bildslingan genom att använda något som kallas ett helsidesbuffertalternativ men biblioteket förbrukade för mycket minne och gjorde det svårt att passa resten av koden med tanke på minnesbegränsningarna för Arduino Uno. Detta innebar att jag fastnade för U8G och var tvungen att kringgå problemet genom att förhindra att skärmen uppdaterades när reglaget var i rörelse och Arduino behövde samla positionsdata från Roboclaw. Jag tvingades också att aktivera reglaget för att börja flytta utanför menyslingan, eftersom när jag kom in i undermenyerna skulle jag vara inne i bildslingan och reglaget skulle inte fungera som avsett. Jag kringgick också det här problemet genom att ha en separat fysisk knapp som aktiverar reglaget.

Låt oss sedan prata om rotationsspårningselementet. Den här delen verkar mycket komplex att integrera, men den är faktiskt ganska enkel. Implementeringen för detta är under funktionen ‘motor () i min Arduino -kod. Det första steget är att skapa ett tvådimensionellt rutnät och bestämde var objektet du vill spåra placeras. Baserat på det kan du rita en triangel till din nuvarande plats. Du kan få din nuvarande plats från motorns givarvärde. Om du vill konfigurera positionen för objektet som spåras i cm/mm måste du översätta kodarens värde till ett cm/mm -värde. Detta kan helt enkelt göras genom att flytta kamerans reglage 1 cm och mäta ökningen i pulsvärdet. Du kan mata in detta värde högst upp i koden under variabeln encoder_mm.

Nu går vi vidare med den inversa tangentfunktionen för att få den vinkel som kameran måste vända mot för att rikta mot ditt objekt. Den inversa tangenten tar in den motsatta och intilliggande sidan av triangeln. Triangelns motsatta sida ändras aldrig eftersom det är y -avståndet från skjutreglaget till objektet. Den intilliggande sidan av kameras reglage ändras dock. Denna intilliggande sida kan beräknas genom att ta objektets x -position och subtrahera din nuvarande position från den. När reglaget rör sig genom sitt rörelseomfång, kommer det att fortsätta uppdatera Arduino om kodarens värde. Arduino kommer om och om igen att omvandla detta pulsvärde till ett cm/mm x positionsvärde och sedan beräkna den intilliggande sidolängden och slutligen beräkna vinkeln som kameran alltid måste vända för att peka på objektet.

Nu när vår Arduino dynamiskt bearbetar kameravinkeln kan vi ta itu med att konvertera denna vinkel till ett positionsvärde för rotationsmotorn att flytta till. Detta tar oss till RoboClaws största funktion för detta projekt. Genom att ge Roboclaw ett positionsvärde kan det i huvudsak få en DC -borstad motor att bete sig som en servo. Förutom till skillnad från en servo, har vår motor massor av vridmoment, mycket högre noggrannhet och kan också snurra 360 grader.

Arduino -koden för att flytta Roboclaw till en viss position är följande:

roboclaw. SpeedAccelDeccelPositionM1 (adress, "hastighet", "acceleration", "retardation", "position du vill gå till", 1);

För att ställa in motorns positionsvärde för att motsvara din kameravinkel måste du flytta kameraplattan 180 grader manuellt. Se sedan hur mycket kodarvärdet har förändrats från att flytta kameraplattan från 0 grader till 180 grader. Detta ger dig ditt kodarintervall. Du kan mata in detta intervall i motorfunktionen som kartlägger Arduinos kameravinkel till ett positionsvärde. Detta kommenteras också i koden så det ska vara lätt att hitta *****

RoboClaw gav mig också möjligheten att ställa in andra faktorer som acceleration, retardation och PID -värden. Detta tillät mig vidare att jämna ut rotationsaxelrörelsen, särskilt när vinkelförändringarna var små och tillförde ryck utan högt 'D' PID -värde. Du kan också ställa in dina PID-värden automatiskt via Roboclaws stationära app.

Steg 4: Använda kamerans reglage

Använda kamerans reglage
Använda kamerans reglage

Nu kommer vi till den roliga delen med reglaget. Menyn har 4 huvudflikar. Den övre fliken är tillägnad hastighetskontroll. Den mellersta raden i menyn innehåller flikar för att konfigurera det spårade objektets X & Y -position i mm, och även konfigurera om vi vill att reglaget ska rotera och spåra vårt objekt eller bara göra en enkel glidrörelse utan rotation. Genom att vrida på vridkodaren kan vi navigera i menyernas olika alternativ. För att konfigurera något av alternativen, navigera till alternativet och tryck på vridkodaren. När du har tryckt på den kommer roterande omkodare att ändra värdet på den markerade undermenyn istället för att skruva igenom menyn. När du har uppnått önskat värde kan du klicka på vridkodaren igen. Nu är du tillbaka till huvudmenyn och kan navigera mellan de olika flikarna. När du är redo trycker du bara på startknappen bredvid skärmen och reglaget gör sina saker!

Se till att kameran är i "hem" -läget när du är klar med kamerareglaget: sidan av reglaget som det började på. Anledningen till detta är att motorkodaren inte är en absolut givare vilket betyder att Roboclaw/Arduino inte kan avgöra var givaren är. De kan bara berätta hur mycket kodaren har ändrats sedan den senast slogs på. Det betyder att när du stänger av kamerareglaget, glider reglaget '' skjutreglaget '' och återställer givaren till 0. Om du stänger av reglaget på andra sidan, när du slår på det, kommer reglaget att försök att gå längre än kanten och krascha in i reglaget. Det här kodningsbeteendet är också anledningen till att kameran återställer sin rotationsvinkel efter varje rörelse i kamerans bild. Rotationsaxeln skyddar sig också från att krascha i slutet av sitt rörelseområde.

Du kan åtgärda detta genom att lägga till slutstopp och ett hemprocedur när du startar. Detta är vad 3d -skrivare använder.

Steg 5: Slutliga tankar + framtida förbättringar

Jag rekommenderar starkt att varje byggare gör sina egna versioner av detta reglage snarare än att bygga exakt samma skjutreglage. Genom att anpassa min design kan du bygga ditt reglage till dina exakta specifikationer samtidigt som du bättre förstår hur elektronik och kod fungerar.

Jag gjorde koden så läsbar och konfigurerbar som möjligt så att du kan justera/kalibrera de olika kodvariablerna för dina reglerspecifikationer. Koden är också helt uppbyggd kring funktioner, så om du vill kopiera/ justera/ skriva om vissa beteenden i reglaget behöver du inte bakåtkonstruera och bearbeta hela koden utan bara de delar du vill redigera.

Slutligen, om jag gjorde en version 2.0, här är några förbättringar som jag skulle göra

  1. Högre utväxling för rotationsaxelmotorn. Ett högre växlingsförhållande innebär att jag kan göra mer exakta små rörelser. Detta är särskilt kritiskt när kameran är långt borta från objektet och kameravinkeln förändras mycket långsamt. För närvarande är min motor inte växlad för högt och det kan resultera i lite ryckiga rörelser när kamerans reglage går för långsamt eller när det är väldigt lite rotationsvinkeländring. Att lägga till ett högt 'D' PID -värde har hjälpt mig att bli av med detta men har kostat lite lägre noggrannhet för spårning av objekt.
  2. Modulär längd. Detta är ett långsökt mål, men jag skulle älska att kamerans reglage är modulär i längd, vilket innebär att du enkelt kan fästa längre spårlängder för kameran att glida på. Detta är ganska svårt eftersom man perfekt måste behöva justera båda spåren och ta reda på hur bältessystemet fungerar. Ändå skulle det vara en cool uppgradering!
  3. Anpassad rörelse Nyckelbild. Jag skulle älska att introducera konceptet med nyckelramade rörelser i denna kamerareglage. Keyframing är en teknik som är mycket vanlig i video- och ljudproduktion. Det skulle möjliggöra olinjära kamerarörelser där kameran går till en position, väntar och sedan flyttar till en annan position med en annan hastighet, väntar och sedan går till en tredje position etc.
  4. Bluetooth/ trådlös telefonstyrning. Det skulle vara riktigt häftigt att kunna konfigurera kameraplatsens parametrar trådlöst och kunna distribuera kameraplattan på svåråtkomliga platser. Telefonappen kan också öppna möjligheter att integrera nyckelframing som nämns i det sista stycket.

Det är det för denna handledning. Lämna gärna några frågor i kommentarfältet nedan.

För mer innehålls- och elektronikstudier kan du också kolla in min YouTube -kanal här.

Rekommenderad: