Innehållsförteckning:

DIY 3D Controller: 8 steg (med bilder)
DIY 3D Controller: 8 steg (med bilder)

Video: DIY 3D Controller: 8 steg (med bilder)

Video: DIY 3D Controller: 8 steg (med bilder)
Video: Guess what they pulled out of his ear! 2024, November
Anonim
DIY 3D -styrenhet
DIY 3D -styrenhet

Gör ett 3D -gränssnitt med sex motstånd, aluminiumfolie och en Arduino. Ta det, Wii. Update: en mycket mer grundlig förklaring av detta projekt finns från Make Magazine. Det kan vara lättare att följa deras instruktioner, och jag tror att deras kod är mer uppdaterad. Det grundläggande målet här var att göra ett 3D-handpositionsavkänningssystem som de flesta kan bygga, samtidigt som de behåller en viss funktion. För att få en uppfattning om möjliga applikationer, kolla in demovideon. Om du tror att du kan bygga en som är enklare och lika exakt, eller lite mer komplex och mer exakt, dela i kommentarerna! DIY 3D -gränssnitt: Tic Tac Toe från Kyle McDonald på Vimeo.

Steg 1: Material

Material
Material
Material
Material

Verktyg

  • Arduino
  • Bearbetning
  • Avbitartång
  • Lödkolv
  • Kartongkniv

Material

  • (3) 270k motstånd
  • (3) 10k motstånd
  • Löda
  • Tråd
  • Aluminiumfolie
  • Kartong

Frivillig:

  • Tejp (t.ex. Scotch)
  • Skärmad tråd (t.ex. koaxialkabel, ~ 3 ')
  • (3) krokodilklämmor
  • 3-stifts rubrik
  • Buntband
  • Krympslang eller varmt lim

Steg 2: Gör tallrikarna

Gör tallrikarna
Gör tallrikarna
Gör tallrikarna
Gör tallrikarna

Denna sensor fungerar med enkla RC -kretsar, där varje kretsavkänningsavstånd är i en dimension. Jag fann att det enklaste sättet att ordna tre kapacitiva plattor för detta ändamål är i hörnet av en kub. Jag skar hörnet av en kartong i en 8,5 kub och klippte sedan lite aluminiumfolie för att passa som lite mindre rutor. Tejp på hörnen håller dem på plats. Tejpa inte ner hela omkretsen, vi behöver det senare för att fästa krokodilklämmorna.

Steg 3: Gör kontakterna

Gör kontakterna
Gör kontakterna
Gör kontakterna
Gör kontakterna
Gör kontakterna
Gör kontakterna

För att ansluta Arduino till plattorna behöver vi lite skärmad tråd. Om tråden inte är skärmad fungerar själva ledningarna mer uppenbart som en del av kondensatorn. Jag har också funnit att krokodilklämmor gör det väldigt enkelt att ansluta saker till aluminium - men det finns nog många andra sätt också.

  • Skär tre lika långa skärmade kablar. Jag valde ungefär 12 ". Ju kortare desto bättre. Koaxialkabel fungerar, men ju lättare/mer flexibel desto bättre.
  • Ta bort den sista halv tummen eller så för att avslöja avskärmningen, och den sista kvarten tum för att avslöja tråden.
  • Vrid krokodilklämmorna till trådarna på trådarna och löd ihop dem.
  • Lägg till lite värmekrympslang eller varmt lim för att hålla ihop sakerna.

Steg 4: Gör kretsen

Gör kretsen
Gör kretsen
Gör kretsen
Gör kretsen
Gör kretsen
Gör kretsen
Gör kretsen
Gör kretsen

"Kretsen" är bara två motstånd per bit aluminium. För att förstå varför de är där hjälper det att veta vad vi gör med Arduino. Vad vi ska göra med varje stift, i följd, är:

  • Ställ in stiftet på utgångsläge.
  • Skriv en digital "låg" till stiftet. Detta betyder att båda sidorna av kondensatorn är jordade och det kommer att urladdas.
  • Ställ in stiftet på ingångsläge.
  • Räkna hur lång tid det tar för kondensatorn att ladda genom att vänta på att stiftet blir "högt". Detta beror på värdena för kondensatorn och de två motstånden. Eftersom motstånden är fasta kommer en förändring i kapacitansen att vara mätbar. Avståndet från marken (din hand) kommer att vara den primära variabeln som bidrar till kapacitansen.

270k -motstånden ger spänningen för att ladda kondensatorerna. Ju mindre värde, desto snabbare laddar de. 10k -motstånden påverkar också timingen, men jag förstår inte helt deras roll. Vi kommer att göra denna krets vid basen av varje tråd.

  • Löd 10k motståndet till änden av tråden mitt emot krokodillen
  • Löd 270k motståndet mellan skärmen och tråden (plattan). Vi skyddar tråden med samma 5 V som vi använder för att ladda kondensatorerna

Steg 5: Slutför och fäst kontakten

Slutför och fäst kontakten
Slutför och fäst kontakten
Slutför och fäst kontakten
Slutför och fäst kontakten
Slutför och fäst kontakten
Slutför och fäst kontakten

När de tre kontakterna är klara kanske du vill lägga till värmekrympslang eller varmt lim för att isolera dem från varandra, eftersom du lödar av skärmen/5 V -punkterna tillsammans.

För mig var det lättast att löda ihop de två yttersta kontakterna och sedan lägga till den tredje. När du har lödt de tre kontakterna lägger du till en fjärde kabel för att mata skärmen/5 V.

Steg 6: Anslut och ladda upp kod

Anslut och ladda upp kod
Anslut och ladda upp kod
Anslut och ladda upp kod
Anslut och ladda upp kod
  • Anslut kontakten till Arduino (stift 8, 9 och 10)
  • Fäst krokodilklämmorna på tallrikarna (8: x: vänster, 9: y: botten, 10: z: höger)
  • Ge ström genom att ansluta den fjärde ledningen (min röda ledning) till Arduino 5 V
  • Anslut Arduino, starta Arduino -miljön
  • Ladda upp koden till kortet (notera: om du befinner dig utanför Nordamerika måste du förmodligen ändra #define elnätet till 50 istället för 60).

Arduino -koden är bifogad som Interface3D.ino och bearbetningskoden är bifogad som TicTacToe3D.zip

Steg 7: Gör något coolt

Om du tittar på seriefönstret i Arduino -miljön märker du att det spottar ut råa 3D -koordinater vid 115200 baud, vid ungefär 10 Hz = 60Hz / (2 hela cykler * 3 sensorer). Koden mäter så många gånger som möjligt på varje sensor under två cykler av nätfrekvensen (vilket är förvånansvärt stabilt) för att avbryta en koppling. Det första jag gjorde med detta var att göra en enkel 3D Tic Tac Toe -gränssnitt. Om du vill börja med en fungerande demo är koden tillgänglig här, släpp bara mappen "TicTacToe3D" i mappen Processing sketches. Tre användbara saker som Tic Tac Toe -koden visar:

  • Lineariserar rådata. Laddningstiden följer faktiskt en kraftlag i förhållande till avståndet, så du måste ta kvadratroten på en över tiden (dvs avstånd ~ = sqrt (1/tid))
  • Normaliserar data. När du startar skissen håller du vänster musknapp intryckt medan du flyttar handen för att definiera gränserna för det utrymme du vill arbeta med.
  • Lägga till "momentum" i data för att jämna ut eventuella skakningar.

I praktiken kan jag använda denna inställning med aluminiumfolie för att få en rad av den största dimensionen av folie (den största biten jag har testat är 1,5 kvadratfot).

Steg 8: Variationer och anteckningar

Variationer

  • Bygg massiva sensorer
  • Optimera motstånden och koden för saker som vibrerar snabbt och använd det som en pickup/mikrofon
  • Det finns förmodligen andra knep för att koppla bort systemet från AC -brum (en enorm kondensator mellan plattorna och marken?)
  • Jag har experimenterat med att skydda plattorna på botten, men det verkar bara orsaka problem
  • Gör en RGB- eller HSB -färgväljare
  • Kontrollera video- eller musikparametrar; sekvens ett slag eller melodi
  • Stor, lätt böjd yta med flera plattor + ett projektor = "Minoritetsrapport" -gränssnitt

Anteckningar

Arduino -lekplatsen har två artiklar om kapacitiv beröringsavkänning (CapSense och CapacitiveSensor). Till slut gick jag med en inversion av en design jag snubblat över i en väns kopia av "Physical Computing" (Sullivan/Igoe) som beskriver hur man använder RCtime (kretsen hade kondensatorn och ett motstånd fixat och mätte värdet på en Mikrosekundstimingen uppnåddes med hjälp av lite optimerad kod från Arduino -forumet. Återigen: bara från massor av thereminscheman som jag inte helt förstår, jag är väl medveten om att det finns bättre sätt att göra kapacitiv distansavkänning, men jag ville göra något så enkelt som möjligt som fortfarande är funktionellt. Om du har en lika enkel och funktionell design, posta den i kommentarerna! Tack till Dane Kouttron för att tolerera alla mina grundläggande elektroniska frågor och hjälpa mig att förstå hur en enkel heterodyne theremin -krets fungerar (ursprungligen tänkte jag använda dessa - och, om den är rätt inställd, skulle den förmodligen vara mer exakt).

Första priset i The Instructables -boktävlingen

Rekommenderad: