Indholdsfortegnelse:

Objektsporingskamera -skyder med rotationsakse. 3D -printet og bygget på RoboClaw DC Motor Controller & Arduino: 5 trin (med billeder)
Objektsporingskamera -skyder med rotationsakse. 3D -printet og bygget på RoboClaw DC Motor Controller & Arduino: 5 trin (med billeder)

Video: Objektsporingskamera -skyder med rotationsakse. 3D -printet og bygget på RoboClaw DC Motor Controller & Arduino: 5 trin (med billeder)

Video: Objektsporingskamera -skyder med rotationsakse. 3D -printet og bygget på RoboClaw DC Motor Controller & Arduino: 5 trin (med billeder)
Video: Hubble - 15 years of discovery 2024, Juli
Anonim
Image
Image
Hardwaredesign + Bygning + 3D -udskrivning
Hardwaredesign + Bygning + 3D -udskrivning

Fusion 360 -projekter »

Dette projekt har været et af mine foretrukne projekter, siden jeg kom til at kombinere min interesse for videofremstilling med DIY. Jeg har altid kigget på og ønsket at efterligne de filmiske optagelser i film, hvor et kamera bevæger sig hen over en skærm under panorering for at spore objektet. Dette tilføjer en meget interessant dybdeeffekt til en ellers 2d video. Ønsker at gentage dette uden at bruge tusindvis af dollars på Hollywood -gear, besluttede jeg at bygge sådan en kameraskyder selv.

Hele projektet er bygget på dele, du kan 3D -udskrive, og koden kører på det populære Arduino -bord. Alle projektfilerne, såsom CAD -filer og kode, kan downloades herunder.

CAD/ 3D -udskrivningsfiler tilgængelige her

Arduino -kodefil tilgængelig her

Projektet kredser om de 2 gearede børstede DC -motorer og Basic Micro Roboclaw Motor -controlleren. Denne motorstyring kan omdanne børstede DC -motorer til en overlegen type servo med en utrolig positionsnøjagtighed, masser af drejningsmoment og hele 360 graders rotation. Mere om dette senere.

Inden vi fortsætter, skal du først se den videoundervisning, der er linket hertil. Denne vejledning giver dig et overblik over, hvordan du bygger dette projekt, og denne Instructables -guide vil gå mere i dybden med, hvordan jeg byggede dette projekt.

Materialer-

  • 2x 1 meter lange m10 gevindstænger bruges til at forbinde alle delene
  • 8x M10 møtrikker til montering af delene på gevindstængerne
  • 2x 95 cm lange 8 mm glatte stålstænger, som skyderen kan glide på
  • 4x lm8uu lejer til glideren til glat at glide på stålstængerne
  • 4x 10 mm lange m3 møtrikker til montering af motoren
  • 2 x skateboardlejer (22 mm udvendig diameter, 8 mm indvendig diameter) til rotationsaksen
  • 1x 15 mm leje til tomgangssiden
  • 1x 4 cm lang m4 bolt med m4 låsemøtrik til montering af tomgangslejet på tomgang 3d printet del.
  • 20 tandhjul med 4 mm indvendig diameter til skydermotoren. Den nøjagtige remskive er ikke særlig vigtig, da din DC -motor skal være gearet til nok drejningsmoment. Bare sørg for, at det er den samme tonehøjde som dit bælte
  • 2 meter langt GT2 bælte. Igen kan du bruge et hvilket som helst bælte, så længe det matcher tonehøjden på din remskives tænder.

Elektronik

  • 2 * Gearede DC -motorer med encodere (den ene styrer den laterale bevægelse, mens den anden styrer rotationsaksen). Her er den, jeg brugte. Mere om dette i elektronikdelen af guiden
  • RoboClaw DC motor controller. (Jeg brugte den dobbelte 15Amp controller, da den tillod mig at styre begge motorer med en controller)
  • Enhver Arduino. Jeg brugte Arduino UNO
  • Batteri/ strømkilde. (Jeg brugte et 7,4V 2 -cellet LiPo -batteri)
  • Skærm (Til visning af menuen. Enhver U8G -kompatibel skærm fungerer, jeg brugte denne 1,3 tommer OLED -skærm)
  • Rotatry encoder (til navigation og konfiguration af muligheder i menuen)
  • Fysisk trykknap (til at udløse skyderens bevægelse)

Trin 1: Hardwaredesign + Byg + 3D -udskrivning

Elektronik
Elektronik

Lad os derefter gå videre til elektronikken. Elektronikken er, hvor dette projekt har stor fleksibilitet.

Lad os starte med kernen i dette projekt- de 2 børstede DC-motorer.

Jeg valgte børstede DC -motorer af et par grunde.

  1. Børstede motorer er meget mere enkle at føre og betjene i forhold til trinmotorer
  2. Børstede jævnstrømsmotorer er meget lettere end jævnstrømsmotorer, hvilket er særligt vigtigt for rotationsaksmotoren, da motoren fysisk bevæger sig sideværts med kameraet og gør, at så let som muligt er vigtigt for at forhindre overdreven belastning af den primære kameraskydemotor.

Jeg valgte netop denne DC -motor. Denne motor gav mig en ekstremt høj mængde drejningsmoment, som var nødvendig for at flytte en så tung kameralast. Ydermere betød den høje gearing, at top -omdrejningstallet var langsomt, hvilket betød, at jeg kunne filme langsommere bevægelser, og den høje gearing førte også til højere positionsnøjagtighed, da en 360 graders rotation af udgangsakslen betød 341,2 tællinger af motorens encoder.

Dette bringer os til RoboClaw motion controller. Roboclaw motor dual DC motor controller tager enkle instruktioner fra din Arduino via enkle kodekommandoer og udfører al den tunge behandling og kraftlevering for at få din motor til at fungere efter hensigten. Arduino kan sende signaler til Roboclaw via PWM, analog spænding, enkel serie eller pakkeserie. Pakkeserie er den bedste vej at gå, da den giver dig mulighed for at få oplysninger tilbage fra Roboclaw, som er nødvendige for positionssporing. Jeg vil dykke dybere ned i software/programmeringsdelen af Roboclaw i det næste trin (programmering).

I det væsentlige kan Roboclaw transformere en DC -børstet motor med en encoder til at ligne en servo mere takket være RoboClaws evne til at udføre positionskontrol. Men i modsætning til en traditionel servo, har din børstede jævnstrømsmotor nu meget mere drejningsmoment, meget mere positionsnøjagtighed på grund af højt motorgear, og vigtigst af alt kan din jævnstrømsmotor rotere 360 grader kontinuerligt, og ingen af dem kan en traditionel servo ikke.

Den næste elektronikdel er skærmen. Til min skærm valgte jeg dette OLED -panel på grund af dets størrelse og høje kontrast. Denne høje kontrast er utrolig og gør skærmen meget let at bruge i direkte sollys, uden at den afgiver for meget lys, der kan forstyrre et potentielt mørkt kameraskud. Denne skærm kan let byttes til en anden U8G -kompatibel skærm. Den fulde liste over kompatible skærme er tilgængelig her. Faktisk var dette projekt bevidst kodet omkring U8G -biblioteket, så byggemodtagere som dig havde mere fleksibilitet i deres dele

De sidste elektroniske dele til dette projekt var den roterende encoder og trykknap til at starte skyderbevægelsen. Koderen giver dig mulighed for at navigere på skærmens menu og konfigurere alle skyderens menu med kun en skive. Den roterende encoder har ingen 'slut' -position som et traditionelt potentiometer, og dette er især nyttigt til justering af x- og y -koordinater for objektsporing på skærmen. Trykknappen bruges udelukkende til at starte skyderens bevægelse uden at skulle rode med den roterende encoder.

Trin 3: Programmering af kameraslideren

Programmering af kameraslideren
Programmering af kameraslideren
Programmering af kameraslideren
Programmering af kameraslideren

Kodning var langt den hårdeste udfordring ved dette projekt. Du ser, fra starten ønskede jeg, at skyderen kunne styres fra en skærm. For at gøre dette projekt kompatibelt med så mange skærme som muligt, var jeg nødt til at bruge U8Glib -biblioteket til Arduino. Dette bibliotek har understøttelse af over 32 skærme. U8Glib -biblioteket brugte imidlertid et billedsløjfe til at tegne menuen på skærmen, og dette var i konflikt med Arduino's evne til samtidig at indsamle oplysninger om kameraets position, som var nødvendig for kameravinkelberegningsfunktionen (Dette er dækket i de næste par afsnit). U8Glib2 har et alternativ til billedsløjfen ved at bruge noget, der kaldes en helsides bufferindstilling, men biblioteket forbruger for meget hukommelse og gør det svært at passe til resten af koden i betragtning af Arduino Uno's hukommelsesbegrænsninger. Dette betød, at jeg sad fast i U8G og måtte omgå problemet ved at forhindre skærmen i at opdatere når som helst skyderen var i bevægelse, og Arduino havde brug for at indsamle positionsdata fra Roboclaw. Jeg blev også tvunget til at aktivere skyderen til at begynde at bevæge sig uden for menukredsen, da jeg først var kommet ind i undermenuerne, og skyderen ville ikke fungere efter hensigten. Jeg har også omgået dette problem ved at have en separat fysisk knap til at udløse skyderens bevægelse.

Lad os derefter tale om det roterende sporingselement. Denne del virker meget kompleks at integrere, men den er faktisk ret enkel. Implementeringen for dette er under funktionen 'motor ()' inde i min Arduino -kode. Det første trin er at lave et 2 -dimensionelt gitter og besluttede, hvor det objekt, du vil spore, er placeret. Baseret på det kan du tegne en trekant til din nuværende placering. Du kan få din nuværende placering fra motorens encoderværdi. Hvis du ønsker at konfigurere placeringen af objektet, der spores i cm/mm, skal du oversætte din encoderværdi til en cm/mm -værdi. Dette kan simpelthen gøres ved at flytte kameraets skyder 1 cm og måle stigningen i encoderværdien. Du kan indtaste denne værdi øverst i koden under encoder_mm variablen.

Ved at gå videre, nu vil vi bruge den inverse tangentfunktion til at få den vinkel, kameraet skal vende mod for at pege på dit objekt. Den omvendte tangent indtager den modsatte og tilstødende side af trekanten. Den modsatte side af trekanten ændres aldrig, da det er y -afstanden fra din skyder til objektet. Den tilstødende side af kameraslideren ændres dog. Denne tilstødende side kan beregnes ved at tage objektets x -position og trække din nuværende position fra den. Når skyderen bevæger sig gennem sit bevægelsesområde, vil den blive ved med at opdatere Arduino på encoderværdien. Arduino konverterer gentagne gange denne encoderværdi til en cm/mm x positionsværdi og derefter beregner den tilstødende sidelængde og til sidst beregner den vinkel, kameraet hele tiden skal vende for at pege på objektet.

Nu hvor vores Arduino dynamisk behandler kameravinklen, kan vi klare at konvertere denne vinkel til en positionsværdi for rotationsmotoren at flytte til. Dette bringer os til RoboClaws største funktion for dette projekt. Ved at give Roboclaw en positionsværdi kan den i det væsentlige få en DC børstet motor til at opføre sig som en servo. Bortset fra i modsætning til en servo, har vores motor tons mere drejningsmoment, meget højere nøjagtighed og kan også dreje 360 grader.

Arduino -koden til at flytte Roboclaw til en bestemt position er som følger:

roboclaw. SpeedAccelDeccelPositionM1 (adresse, 'hastighed', 'acceleration', 'deceleration', 'position, du vil gå til', 1);

For at indstille motorens positionsværdi, så den svarer til din kameravinkel, skal du manuelt flytte kamerapladen 180 grader. Se derefter, hvor meget encoderværdien har ændret sig fra at flytte kamerapladen fra 0 grader til 180 grader. Dette giver dig dit koderinterval. Du kan indtaste dette område i motorfunktionen, der kortlægger Arduinos kameravinkel til en positionsværdi. Dette er også kommenteret i koden, så det skal være let at finde *****

RoboClaw gav mig også muligheden for at indstille andre faktorer, såsom acceleration, deceleration og PID -værdier. Dette tillod mig yderligere at udjævne rotationsaksebevægelsen, især når vinkelændringerne var små og tilføjede ryk uden høj 'D' PID -værdi. Du kan også automatisk indstille dine PID-værdier via Roboclaws desktop-app.

Trin 4: Betjening af kameraslideren

Betjening af kameraslideren
Betjening af kameraslideren

Nu kommer vi til den sjove del, der betjener skyderen Menuen har 4 hovedfaner. Den øverste fane er dedikeret til hastighedskontrol. Den midterste række i menuen indeholder faner til at konfigurere det sporede objekts X & Y -position i mm, og også konfigurere, om vi vil have skyderen til at rotere og spore vores objekt eller bare lave en simpel glidebevægelse uden rotation. Ved at dreje den roterende encoder kan vi navigere i de forskellige muligheder i menuerne. For at konfigurere en af mulighederne skal du navigere til indstillingen og trykke på den roterende encoder. Når den er trykket på, vil rotation af den roterende encoder ændre værdien af den fremhævede undermenu frem for at skrubbe gennem menuen. Når du har nået den ønskede værdi, kan du klikke på drejekoderen igen. Nu er du tilbage til hovedmenuen og kan navigere mellem de forskellige faner. Når du er klar, skal du blot trykke på gå -knappen ved siden af skærmen, og skyderen gør sine ting!

Sørg for, at når du er færdig med at bruge kameraslideren, at kameraet er i 'hjemmeposition': siden af skyderen, det startede på. Årsagen til dette er, at motorens encoder ikke er en absolut encoder, hvilket betyder, at Roboclaw/Arduino ikke kan fortælle, hvor encoderen er. De kan kun fortælle, hvor meget encoderen har ændret sig siden den sidst blev tændt. Det betyder, at når du slukker for din kameraskyder, glider skyderen 'skyderens position og nulstiller encoderen til en 0. Hvis du slukker skyderen på den anden side, når du tænder den, vil skyderen Prøv at bevæge dig længere end kanten og styrte ind i skydervæggen. Denne encoderadfærd er også grunden til, at kameraet nulstiller sin rotationsvinkel efter hver kameraslidebevægelse. Rotationsaksen beskytter også sig selv mod at gå ned i slutningen af dens bevægelsesområde.

Du kan løse dette ved at tilføje slutstop og en hjemmeprocedure, når du starter op. Det er, hvad 3d -printere bruger.

Trin 5: Endelige tanker + fremtidige forbedringer

Jeg anbefaler på det kraftigste, at hver bygherre laver deres egne versioner af denne skyder frem for at bygge præcis den samme skyder. Tilpasning af mit design giver dig mulighed for at bygge din skyder til dine nøjagtige specifikationer, samtidig med at du bedre forstår, hvordan elektronik og kode fungerer.

Jeg gjorde koden så læselig og konfigurerbar som muligt, så du kan justere/kalibrere de forskellige kodevariabler til dine skyder specifikationer. Koden er også fuldt opbygget omkring funktioner, så hvis du vil kopiere/ finjustere/ omskrive visse adfærd i skyderen, behøver du ikke at bakke om og omarbejde hele koden, men snarere bare de dele, du vil redigere.

Endelig, hvis jeg lavede en version 2.0, er der nogle forbedringer, jeg ville foretage

  1. Højere gearforhold til rotationsaksmotoren. Et højere gearforhold betyder, at jeg kan foretage mere præcise små bevægelser. Dette er især kritisk, når kameraet er langt væk fra dit objekt, og din kameravinkel ændrer sig meget langsomt. I øjeblikket er min motor ikke gearet for højt, og det kan resultere i lidt rykkende bevægelse, når kameraslideren kører for langsomt, eller når der er meget lidt rotationsvinkelændring. Tilføjelse af en høj 'D' PID -værdi har hjulpet mig med at slippe af med dette, men er kommet på bekostning af lidt lavere objektsporingsnøjagtighed.
  2. Modulær længde. Dette er et langt hentet mål, men jeg ville elske, at kameraslideren var modulær i længden, hvilket betyder, at du nemt kan vedhæfte længere længder af sporet, så kameraet kan glide på. Dette er ret svært, da man perfekt skal justere begge spor og finde ud af, hvordan man får bæltesystemet til at fungere. Ikke desto mindre ville det være en sej opgradering!
  3. Brugerdefineret bevægelse Keyframing. Jeg ville elske at introducere konceptet med keyframed -bevægelser i denne kameraslider. Keyframing er en meget almindeligt anvendt teknik i video- og lydproduktion. Det ville muliggøre ikke-lineære kamerabevægelser, hvor kameraet går til en position, venter og derefter bevæger sig til en anden position med en anden hastighed, venter og derefter går til en tredje position osv.
  4. Bluetooth/ trådløs telefonstyring. Det ville være virkelig fedt at kunne konfigurere kamerasliderens parametre trådløst og være i stand til at implementere kameraslideren på svært tilgængelige steder. Telefonappen kan også åbne muligheder for at integrere keyframing som nævnt i det sidste afsnit.

Det er det for denne vejledning. Du er velkommen til at slippe eventuelle spørgsmål ned i kommentarfeltet herunder.

For mere indholds- og elektronikundervisning kan du også tjekke min YouTube -kanal her.

Anbefalede: