Innholdsfortegnelse:

Objektsporingskamera -glidebryter med rotasjonsakse. 3D -trykt og bygget på RoboClaw DC -motorstyringen og Arduino: 5 trinn (med bilder)
Objektsporingskamera -glidebryter med rotasjonsakse. 3D -trykt og bygget på RoboClaw DC -motorstyringen og Arduino: 5 trinn (med bilder)

Video: Objektsporingskamera -glidebryter med rotasjonsakse. 3D -trykt og bygget på RoboClaw DC -motorstyringen og Arduino: 5 trinn (med bilder)

Video: Objektsporingskamera -glidebryter med rotasjonsakse. 3D -trykt og bygget på RoboClaw DC -motorstyringen og Arduino: 5 trinn (med bilder)
Video: Hubble - 15 years of discovery 2024, Juli
Anonim
Image
Image
Maskinvaredesign + Bygg + 3D -utskrift
Maskinvaredesign + Bygg + 3D -utskrift

Fusion 360 -prosjekter »

Dette prosjektet har vært et av mine favorittprosjekter siden jeg fikk kombinere interessen min for å lage video med DIY. Jeg har alltid sett på og ønsket å etterligne de filmatiske opptakene i filmer der et kamera beveger seg over en skjerm mens du panorerer for å spore objektet. Dette gir en veldig interessant dybdeeffekt til en ellers 2d video. Lyst til å replikere dette uten å bruke tusenvis av dollar på Hollywood -utstyr, bestemte jeg meg for å bygge en slik kameraslider selv.

Hele prosjektet er bygget på deler du kan 3D -skrive ut, og koden kjører på det populære Arduino -kortet. Alle prosjektfilene, for eksempel CAD -filer og kode, er tilgjengelige for nedlasting nedenfor.

CAD/ 3D -utskriftsfiler tilgjengelig her

Arduino Code -fil tilgjengelig her

Prosjektet dreier seg om de 2 girede børstede DC -motorene og Basic Micro Roboclaw Motor -kontrolleren. Denne motorstyringen kan forvandle børstede likestrømsmotorer til en overlegen type servo med utrolig posisjonsnøyaktighet, tonn med dreiemoment og hele 360 graders rotasjon. Mer om dette senere.

Før du fortsetter, må du se videoopplæringen som er lenket til her først. Denne opplæringen vil gi deg en oversikt over hvordan du bygger dette prosjektet, og denne instruksjonsguiden vil gå mer i dybden i hvordan jeg bygde dette prosjektet.

Materialer-

  • 2x 1 meter lange m10 gjengestenger som brukes til å koble alle delene
  • 8x M10 muttere for å montere delene på gjengestengene
  • 2x 95 cm lange 8 mm glatte stålstenger for glidebryteren å gli på
  • 4x lm8uu -lagre for glidebryteren for å gli jevnt på stålstavene
  • 4x 10 mm lange m3 muttere for montering av motoren
  • 2 x skateboardlagre (22 mm ytre diameter, 8 mm indre diameter) for rotasjonsaksen
  • 1x 15 mm lager for tomgangssiden
  • 1x 4 cm lang m4 bolt med m4 låsemutter for montering av tomgangslageret på tomgang 3d -trykt del.
  • 20 tannhjul med 4 mm innvendig diameter for glidemotoren. Den eksakte remskiven er ikke veldig viktig siden DC -motoren din skal være gearet for nok dreiemoment. Bare sørg for at det er samme tonehøyde som beltet ditt
  • 2 meter langt GT2 belte. Igjen kan du bruke et hvilket som helst belte så lenge det stemmer overens med tannhjulets tenner.

Elektronikk

  • 2 * Geared DC -motorer med encoders (den ene styrer sidebevegelsen, mens den andre styrer rotasjonsaksen). Her er den jeg brukte. Mer om dette i elektronikkdelen av guiden
  • RoboClaw DC motorstyring. (Jeg brukte den doble 15Amp -kontrolleren siden den tillot meg å kontrollere begge motorene med en kontroller)
  • Enhver Arduino. Jeg brukte Arduino UNO
  • Batteri/ strømkilde. (Jeg brukte et 7,4V 2 -cellers LiPo -batteri)
  • Skjerm (For å vise menyen. Enhver U8G -kompatibel skjerm vil fungere, jeg brukte denne 1,3 tommers OLED -skjermen)
  • Rotatry encoder (For navigering og konfigurering av alternativer i menyen)
  • Fysisk trykknapp (For å utløse glidebryterens bevegelse)

Trinn 1: Maskinvaredesign + Bygg + 3D -utskrift

Elektronikk
Elektronikk

La oss deretter gå videre til elektronikken. Elektronikken er der dette prosjektet har mye fleksibilitet.

La oss starte med kjernen i dette prosjektet- de to børstede likestrømsmotorene.

Jeg valgte børstede likestrømsmotorer av flere grunner.

  1. Børstede motorer er mye enklere å koble til og betjene sammenlignet med trinnmotorer
  2. Børstede likestrømsmotorer er mye lettere enn likestrømsmotorer, noe som er spesielt viktig for rotasjonsaksmotoren siden motoren beveger seg sidelengs med kameraet og gjør at så lett som mulig er viktig for å forhindre overdreven belastning på hovedkameraets glidemotor.

Jeg valgte akkurat denne likestrømsmotoren. Denne motoren ga meg en ekstremt høy dreiemoment som var nødvendig for å flytte en så tung kameralast. Videre betydde det høye giret at toppturtallet var tregt, noe som betydde at jeg kunne filme langsommere bevegelser, og det høye giret førte også til høyere posisjonsnøyaktighet, da en 360 graders rotasjon av utgangsakselen betydde 341,2 tellinger av motorens encoder.

Dette bringer oss til RoboClaw -bevegelseskontrolleren. Roboclaw -motorens dobbel DC -motorstyring tar enkle instruksjoner fra din Arduino via enkle kodekommandoer og gjør all den tunge behandlingen og kraftleveransen for å få motoren til å fungere etter hensikten. Arduino kan sende signaler til Roboclaw via PWM, analog spenning, enkel serie eller pakkeserie. Pakkeserie er den beste måten å gå siden den lar deg få informasjon tilbake fra Roboclaw som er nødvendig for posisjonssporing. Jeg vil dykke dypere inn i programvare/programmeringsdelen av Roboclaw i neste trinn (programmering).

I hovedsak kan Roboclaw forvandle en DC børstet motor med en encoder til å bli mer som en servo takket være RoboClaws evne til å utføre posisjonskontroll. Men i motsetning til en tradisjonell servo, har nå den børstede likestrømsmotoren mye mer dreiemoment, mye mer posisjonsnøyaktighet på grunn av høy motorgiring, og viktigst av alt kan likestrømsmotoren rotere 360 grader kontinuerlig, ingen av de tradisjonelle servoene kan gjøre.

Den neste elektronikkdelen er skjermen. For skjermen min valgte jeg dette OLED -panelet på grunn av størrelsen og høy kontrast. Denne høye kontrasten er utrolig og gjør skjermen veldig enkel å bruke i direkte sollys, samtidig som den ikke gir for mye lys som kan forstyrre et potensielt mørkt kameraskudd. Denne skjermen kan enkelt byttes ut mot en annen U8G -kompatibel skjerm. Hele listen over kompatible skjermer er tilgjengelig her. Faktisk ble dette prosjektet med vilje kodet rundt U8G -biblioteket, så DIY -byggherrer som deg hadde større fleksibilitet i sine deler

De siste elektronikkdelene for dette prosjektet var den roterende encoderen og trykknappen for å starte skyvebevegelsen. Koderen lar deg navigere på skjermmenyen og konfigurere alle glidebryterens menyer med bare ett hjul. Den roterende omkoderen har ingen 'ende' posisjon som et tradisjonelt potensiometer, og dette er spesielt nyttig for justering av x- og y -koordinater for objektsporingen på skjermen. Trykknappen brukes utelukkende for å starte glidebryterens bevegelse uten å måtte fikle med den roterende encoderen.

Trinn 3: Programmering av kameraslideren

Programmering av kameraslideren
Programmering av kameraslideren
Programmering av kameraslideren
Programmering av kameraslideren

Koding var den desidert vanskeligste utfordringen med dette prosjektet. Du skjønner, fra starten ønsket jeg at glidebryteren skulle kunne kontrolleres fra en skjerm. For å gjøre dette prosjektet kompatibelt med så mange skjermer som mulig, måtte jeg bruke U8Glib -biblioteket til Arduino. Dette biblioteket har støtte for over 32 skjermer. U8Glib -biblioteket brukte imidlertid en bildesløyfe for å tegne menyen på skjermen, og dette kom i konflikt med Arduinoens evne til samtidig å samle informasjon om kameraets posisjon som var nødvendig for kameravinkelberegningsfunksjonaliteten (Dette dekkes i de neste par avsnittene). U8Glib2 har et alternativ til bildesløyfen ved å bruke noe som kalles et fullsidebufferalternativ, men biblioteket brukte for mye minne og gjorde det vanskelig å passe til resten av koden gitt minnebegrensningene til Arduino Uno. Dette betydde at jeg satt fast med U8G og måtte omgå problemet ved å forhindre at skjermen oppdateres når glidebryteren var i bevegelse og Arduino trengte å samle posisjonsdata fra Roboclaw. Jeg ble også tvunget til å aktivere glidebryteren til å begynne å bevege seg utenfor menysløyfen, da jeg først var inne i undermenyene, og glidebryteren ville ikke fungere etter hensikten. Jeg har også omgått dette problemet ved å ha en egen fysisk knapp som utløser glidebryterens bevegelse.

La oss deretter snakke om det roterende sporingselementet. Denne delen virker veldig kompleks å integrere, men den er faktisk ganske enkel. Implementeringen for dette er under ‘motor ()’ -funksjonen inne i min Arduino -kode. Det første trinnet er å lage et todimensjonalt rutenett og bestemte hvor objektet du vil spore er plassert. Basert på det kan du tegne en trekant til din nåværende posisjon. Du kan få din nåværende posisjon fra koderverdien til motoren. Hvis du ønsker å konfigurere posisjonen til objektet som spores i cm/mm, må du oversette koderverdien til en cm/mm -verdi. Dette kan ganske enkelt gjøres ved å flytte glidebryteren for kameraet 1 cm og måle økningen i koderverdien. Du kan legge inn denne verdien øverst i koden under encoder_mm -variabelen.

Nå skal vi bruke den inverse tangentfunksjonen for å få vinkelen kameraet må vende mot for å peke på objektet ditt. Den omvendte tangenten tar inn den motsatte og tilstøtende siden av trekanten. Den motsatte siden av trekanten endres aldri da det er y -avstanden fra glidebryteren til objektet. Den tilstøtende siden av kameraslideren endres imidlertid. Denne tilstøtende siden kan beregnes ved å ta objektets x -posisjon og trekke din nåværende posisjon fra den. Etter hvert som glidebryteren beveger seg gjennom bevegelsesområdet, fortsetter den å oppdatere Arduino om verdien på koder. Arduino vil gjentatte ganger konvertere denne koderverdien til en cm/mm x posisjonsverdi og deretter beregne den tilstøtende sidelengden, og til slutt beregne vinkelen kameraet må vende til enhver tid for å peke på objektet.

Nå som vår Arduino dynamisk behandler kameravinkelen, kan vi takle å konvertere denne vinkelen til en posisjonsverdi for rotasjonsmotoren å flytte til. Dette bringer oss til RoboClaws største funksjon for dette prosjektet. Ved å gi Roboclaw en posisjonsverdi, kan den i hovedsak få en DC -børstet motor til å oppføre seg som en servo. Bortsett fra i motsetning til en servo, har motoren tonn mer dreiemoment, mye høyere nøyaktighet og kan også snurre 360 grader.

Arduino -koden for å flytte Roboclaw til en bestemt posisjon er som følger:

roboclaw. SpeedAccelDeccelPositionM1 (adresse, 'hastighet', 'akselerasjon', 'retardasjon', 'posisjon du vil gå til', 1);

For å justere posisjonsverdien til motoren slik at den samsvarer med kameravinkelen, må du manuelt flytte kameraplaten 180 grader. Se deretter hvor mye koderverdien har endret seg fra å flytte kameraplaten fra 0 grader til 180 grader. Dette gir deg koderområdet. Du kan legge inn dette området i motorfunksjonen som kartlegger Arduinos kameravinkel til en posisjonsverdi. Dette er også kommentert i koden, så det skal være enkelt å finne *****

RoboClaw ga meg også muligheten til å justere andre faktorer som akselerasjon, retardasjon og PID -verdier. Dette tillot meg ytterligere å jevne rotasjonsaksebevegelsen, spesielt når vinkelendringene var små og la til ryk uten høy 'D' PID -verdi. Du kan også justere PID-verdiene dine automatisk via skrivebordsprogrammet til Roboclaw.

Trinn 4: Bruke glidebryteren for kamera

Bruke kameraslideren
Bruke kameraslideren

Nå kommer vi til den morsomme delen ved å bruke glidebryteren Menyen har 4 hovedfaner. Den øverste kategorien er dedikert til hastighetskontroll. Den midtre raden i menyen inneholder faner for å konfigurere det spore objektets X & Y -posisjon i mm, og også konfigurere om vi vil at glidebryteren skal rotere og spore objektet vårt eller bare gjøre en enkel glidebevegelse uten rotasjon. Ved å vri på den roterende encoderen kan vi navigere i de forskjellige alternativene i menyene. For å konfigurere noen av alternativene, naviger til alternativet og trykk på dreiekoderen. Når du har trykket på den, vil rotering av omkoderen endre verdien til den uthevede undermenyen i stedet for å skrubbe gjennom menyen. Når du har nådd ønsket verdi, kan du klikke på dreiekoderen igjen. Nå er du tilbake til hovedmenyen og kan navigere mellom de forskjellige fanene. Når du er klar, trykker du bare på go -knappen ved siden av skjermen, og glidebryteren gjør sine ting!

Sørg for at kameraet er i “hjemmeposisjon”: siden av glidebryteren det startet på når du er ferdig med å bruke kameraslideren. Grunnen til dette er at motorkoderen ikke er en absolutt omkoder, noe som betyr at Roboclaw/Arduino ikke kan fortelle hvor koderen er. De kan bare fortelle hvor mye koderen har endret seg siden den sist ble slått på. Dette betyr at når du slår av glidebryteren for kameraet, vil glidebryteren 'glemme' glidebryterposisjonen og nullstille koderen til en 0. Hvis du slår av glidebryteren på den andre siden, når du slår den på, vil glidebryteren Prøv å bevege deg lenger enn kanten og krasje inn i skyveveggen. Denne koderens oppførsel er også grunnen til at kameraet tilbakestiller rotasjonsvinkelen etter hver glidebevegelse. Rotasjonsaksen beskytter seg også mot å krasje mot slutten av bevegelsesområdet.

Du kan fikse dette ved å legge til sluttstopp og en hjemmeprosedyre når du starter opp. Dette er hva 3d -skrivere bruker.

Trinn 5: Endelige tanker + fremtidige forbedringer

Jeg anbefaler på det sterkeste at hver byggherre lager sine egne versjoner av denne glidebryteren i stedet for å bygge nøyaktig den samme glidebryteren. Ved å tilpasse designet mitt kan du bygge glidebryteren til dine eksakte spesifikasjoner, samtidig som du bedre forstår hvordan elektronikk og kode fungerer.

Jeg gjorde koden så lesbar og konfigurerbar som mulig, slik at du kan justere/kalibrere de forskjellige kodevariablene for skyvekontrollspesifikasjonene. Koden er også fullt bygd rundt funksjoner, så hvis du vil kopiere/ tilpasse/ skrive om visse oppførselen til glidebryteren, trenger du ikke å ombygge og omarbeide hele koden, men bare delene du vil redigere.

Til slutt, hvis jeg laget en versjon 2.0, er det noen forbedringer jeg ville gjøre

  1. Høyere girforhold for rotasjonsaksmotoren. Et høyere girforhold betyr at jeg kan gjøre mer presise små trekk. Dette er spesielt kritisk når kameraet er langt borte fra objektet og kameravinkelen endrer seg veldig sakte. For øyeblikket er motoren min ikke for høy, og det kan resultere i litt rykkete bevegelser når glidebryteren for kamera går for sakte eller når det er veldig lite rotasjonsvinkelendring. Å legge til en høy 'D' PID -verdi har hjulpet meg med å bli kvitt dette, men har kostet litt lavere objektsporingsnøyaktighet.
  2. Modulær lengde. Dette er et langt hentet mål, men jeg vil gjerne at glidebryteren til kameraet har en modulær lengde, noe som betyr at du enkelt kan feste lengre spor for at kameraet skal gli på. Dette er ganske vanskelig siden man helt må justere begge sporene og finne ut hvordan beltesystemet skal fungere. Likevel ville det vært en kul oppgradering!
  3. Egendefinert bevegelse Nøkkelraming. Jeg vil gjerne introdusere konseptet med nøkkelrammede bevegelser i denne kameraslideren. Keyframing er en teknikk som er veldig vanlig i video- og lydproduksjon. Det ville muliggjøre ikke-lineære kamerabevegelser der kameraet går til en posisjon, venter og deretter beveger seg til en annen posisjon med en annen hastighet, venter og deretter går til en tredje posisjon etc.
  4. Bluetooth/ trådløs telefonkontroll. Det ville være veldig kult å kunne konfigurere kameraets glidebryteres parametere trådløst og kunne distribuere kameraslideren på steder som er vanskelig tilgjengelige. Telefonappen kan også åpne opp muligheter for å integrere keyframing som nevnt i det siste avsnittet.

Det er det for denne opplæringen. Legg gjerne igjen spørsmål i kommentarfeltet nedenfor.

For mer innholds- og elektronikkopplæring kan du også sjekke ut YouTube -kanalen min her.

Anbefalt: