Inhoudsopgave:

DIY 3D-controller - Ajarnpa
DIY 3D-controller - Ajarnpa

Video: DIY 3D-controller - Ajarnpa

Video: DIY 3D-controller - Ajarnpa
Video: I Made my own Space Mouse for Fusion 360 using Magnets (DIY) 2024, Oktober
Anonim
DIY 3D-controller
DIY 3D-controller

Maak een 3D-interface met behulp van zes weerstanden, aluminiumfolie en een Arduino. Neem dat, Wii. Update: een veel uitgebreidere uitleg van dit project is verkrijgbaar bij Make Magazine. Het is misschien gemakkelijker om hun instructies te volgen, en ik denk dat hun code meer up-to-date is. Het basisdoel hier was om een 3D-handpositiedetectiesysteem te maken dat de meeste mensen kunnen bouwen, met behoud van enige schijn van functionaliteit. Bekijk de demovideo om een idee te krijgen van mogelijke toepassingen. Als je denkt dat je er een kunt bouwen die eenvoudiger en even nauwkeurig is, of iets complexer en nauwkeuriger, deel het dan in de reacties! DIY 3D-interface: Tic Tac Toe van Kyle McDonald op Vimeo.

Stap 1: Materialen

Materialen
Materialen
Materialen
Materialen

Gereedschap

  • Arduino
  • Verwerken
  • Draadsnijders
  • Soldeerbout
  • Stanleymes

Materialen

  • (3) 270k-weerstanden
  • (3) 10k weerstanden
  • Soldeer
  • Draad
  • Aluminiumfolie
  • Karton

Optioneel:

  • Tape (bijv. scotch)
  • Afgeschermde draad (bijv. coaxkabel, ~3')
  • (3) krokodillenklemmen
  • 3-pins kop
  • Ritssluiting
  • Krimpfolie of hete lijm

Stap 2: Maak de platen

Maak de platen
Maak de platen
Maak de platen
Maak de platen

Deze sensor werkt met eenvoudige RC-circuits, waarbij elk circuit de afstand in één dimensie meet. Ik ontdekte dat de gemakkelijkste manier om drie capacitieve platen voor dit doel te rangschikken in de hoek van een kubus is. Ik heb de hoek van een kartonnen doos in een kubus van 8,5 inch gesneden en vervolgens wat aluminiumfolie gesneden om als iets kleinere vierkanten te passen. Tape op de hoeken houdt ze op hun plaats. Plak niet de hele omtrek vast, we hebben het nodig later voor het bevestigen van de krokodillenklemmen.

Stap 3: Maak de connectoren

Maak de connectoren
Maak de connectoren
Maak de connectoren
Maak de connectoren
Maak de connectoren
Maak de connectoren

Om de Arduino op de platen aan te sluiten, hebben we afgeschermde draad nodig. Als de draad niet is afgeschermd, werken de draden zelf duidelijker als onderdeel van de condensator. Ik heb ook ontdekt dat krokodillenklemmen het heel gemakkelijk maken om dingen aan aluminium te bevestigen - maar er zijn waarschijnlijk ook tal van andere manieren.

  • Knip drie gelijke lengtes afgeschermde kabel af. Ik koos ongeveer 12". Hoe korter hoe beter. Coaxkabel werkt, maar hoe lichter/flexibeler hoe beter.
  • Strip de laatste halve inch of zo om de afscherming te onthullen, en de laatste kwart inch om de draad te onthullen.
  • Draai de krokodillenklemmen om de draden op de draden en soldeer ze aan elkaar.
  • Voeg wat krimpkous of hete lijm toe om de boel bij elkaar te houden.

Stap 4: Maak het circuit

Maak het circuit
Maak het circuit
Maak het circuit
Maak het circuit
Maak het circuit
Maak het circuit
Maak het circuit
Maak het circuit

Het "circuit" is slechts twee weerstanden per stuk aluminium. Om te begrijpen waarom ze er zijn, helpt het om te weten wat we met de Arduino doen. Wat we achtereenvolgens met elke pin doen, is:

  • Zet de pin in de uitvoermodus.
  • Schrijf een digitale "laag" naar de pin. Dit betekent dat beide zijden van de condensator geaard zijn en zal ontladen.
  • Zet de pin in de invoermodus.
  • Tel hoeveel tijd de condensator nodig heeft om op te laden door te wachten tot de pin "hoog" gaat. Dit hangt af van de waarden voor de condensator en de twee weerstanden. Omdat de weerstanden vast zijn, zal een verandering in capaciteit meetbaar zijn. De afstand tot de grond (uw hand) is de belangrijkste variabele die bijdraagt aan de capaciteit.

De 270k weerstanden zorgen voor de spanning om de condensatoren op te laden. Hoe kleiner de waarde, hoe sneller ze worden opgeladen. De 10k-weerstanden hebben ook invloed op de timing, maar ik begrijp hun rol niet helemaal. We zullen dit circuit aan de basis van elke draad maken.

  • Soldeer de 10k-weerstand aan het uiteinde van de draad tegenover de krokodillenklem
  • Soldeer de 270k weerstand tussen de afscherming en de draad (plaat). We zullen de draad afschermen met dezelfde 5 V die we gebruiken om de condensatoren op te laden

Stap 5: Voltooi en bevestig de connector

Voltooi en bevestig de connector
Voltooi en bevestig de connector
Voltooi en bevestig de connector
Voltooi en bevestig de connector
Voltooi en bevestig de connector
Voltooi en bevestig de connector

Als de 3 connectoren klaar zijn, wil je misschien krimpkous of hete lijm toevoegen om ze van elkaar te isoleren, omdat je de afscherming/5 V-punten aan elkaar soldeert.

Voor mij was het het gemakkelijkst om de twee buitenste connectoren aan elkaar te solderen en vervolgens de derde toe te voegen. Nadat u de drie connectoren hebt gesoldeerd, voegt u een vierde draad toe voor het voeden van de afscherming/5 V.

Stap 6: Verbind en upload code

Verbind en upload code
Verbind en upload code
Verbind en upload code
Verbind en upload code
  • Steek de connector in de Arduino (pinnen 8, 9 en 10)
  • Klik de krokodillenklemmen op de platen (8:x:links, 9:y:onder, 10:z:rechts)
  • Zorg voor stroom door de vierde draad (mijn rode draad) aan te sluiten op de 5 V. van de Arduino
  • Sluit de Arduino aan, start de Arduino-omgeving op
  • Upload de code naar het bord (let op: als u zich buiten Noord-Amerika bevindt, moet u waarschijnlijk #define mains wijzigen in 50 in plaats van 60).

De Arduino-code is bijgevoegd als Interface3D.ino en de verwerkingscode is bijgevoegd als TicTacToe3D.zip

Stap 7: Doe iets cools

Als je naar het seriële venster in de Arduino-omgeving kijkt, zul je merken dat het onbewerkte 3D-coördinaten uitspuugt op 115200 baud, bij ongeveer 10 Hz = 60 Hz / (2 volledige cycli * 3 sensoren). De code meet zo vaak mogelijk op elke sensor gedurende de periode van twee cycli van de netvoedingsfrequentie (die verrassend stabiel is) om elke koppeling op te heffen. Het eerste wat ik hiermee deed, was een eenvoudige 3D Tic maken Tac Toe-interface. Als je wilt beginnen met een werkende demo, de code is hier beschikbaar, laat de map "TicTacToe3D" in je map Processing sketches vallen. Drie handige dingen die de Tic Tac Toe-code laat zien:

  • Lineariseert de onbewerkte gegevens. De oplaadtijd volgt eigenlijk een machtswet ten opzichte van de afstand, dus je moet de vierkantswortel van één over de tijd nemen (d.w.z. afstand ~= sqrt(1/time))
  • Normaliseert de gegevens. Wanneer u de schets start, houdt u de linkermuisknop ingedrukt terwijl u uw hand beweegt om de grenzen te bepalen van de ruimte waarmee u wilt werken.
  • "Momentum" toevoegen aan de gegevens om eventuele kriebels weg te werken.

In de praktijk kan ik met deze opstelling met aluminiumfolie een reeks van de grootste afmeting van folie krijgen (het grootste stuk dat ik heb getest is 1,5 vierkante voet).

Stap 8: Variaties en opmerkingen

variaties

  • Bouw enorme sensoren
  • Optimaliseer de weerstanden en code voor dingen die snel trillen, en gebruik het als een pickup/microfoon
  • Er zijn waarschijnlijk andere trucs om het systeem te ontkoppelen van AC-brom (een enorme condensator tussen de platen en de aarde?)
  • Ik heb geëxperimenteerd met het afschermen van de platen aan de onderkant, maar het lijkt alleen maar problemen te veroorzaken
  • Maak een RGB- of HSB-kleurkiezer
  • Bedien video- of muziekparameters; een beat of melodie in volgorde zetten
  • Groot, licht gebogen oppervlak met meerdere platen + een projector = "Minority Report"-interface

Opmerkingen:

De Arduino-speeltuin heeft twee artikelen over capacitieve aanraakdetectie (CapSense en CapacitiveSensor). Uiteindelijk ging ik met een omkering van een ontwerp dat ik tegenkwam in het exemplaar van "Physical Computing" (Sullivan/Igoe) van een vriend waarin werd beschreven hoe RCtime moest worden gebruikt (de schakeling had de condensator en één weerstand vast en mat de waarde van een potentiometer). De timing van de microseconden werd bereikt met behulp van een enigszins geoptimaliseerde code van de Arduino-forums. Nogmaals: al beginnend met tonnen theremin-schema's die ik niet helemaal begrijp, weet ik heel goed dat er betere manieren zijn om capacitieve afstandsdetectie te doen, maar ik wilde iets zo eenvoudig mogelijk maken dat nog steeds functioneel is. Als je een even eenvoudig en functioneel ontwerp hebt, plaats het dan in de reacties! Met dank aan Dane Kouttron voor het tolereren van al mijn elementaire elektronicavragen en voor het helpen begrijpen hoe een eenvoudig heterodyne theremin-circuit werkt (oorspronkelijk ging ik deze gebruiken - en, indien correct afgesteld, zou het waarschijnlijk nauwkeuriger zijn).

Eerste prijs in de The Instructables Book Contest

Aanbevolen: