INHOUDSOPGAWE:

DIY laserstuurmodule vir Arduino: 14 stappe (met foto's)
DIY laserstuurmodule vir Arduino: 14 stappe (met foto's)

Video: DIY laserstuurmodule vir Arduino: 14 stappe (met foto's)

Video: DIY laserstuurmodule vir Arduino: 14 stappe (met foto's)
Video: Measure up to 500A DC Current with Shunt Resistor using Arduino 2024, Julie
Anonim
Image
Image

In hierdie Instructable, sal ek die konstruksie van 'n dubbel-as, enkel-spieël laserstraal stuurmodule demonstreer met behulp van 3D-gedrukte onderdele en goedkoop komponente van eBay.

Hierdie projek het ooreenkomste met Arduino Laser Show met Full XY Control en Arduino Laser Show With Real Galvos, maar ek glo dat dit die eerste is wat 'n 3D -gedrukte ontwerp met goedkoop solenoïede gebruik het. Ek plaas al die ontwerp lêers onder die GPLv3 sodat die ontwerp verbeter en verbeter kan word.

Alhoewel ek tans slegs die module saamgestel en 'n baie basiese toetskode saamgestel het, is dit my hoop dat ek dit eendag na die volgende vlak kan neem deur die vektorgrafiese kode van my vorige Instructable, Super Fast Analog Voltages van Arduino op te neem.

Stap 1: Versamel die dele wat nie in 3D gedruk is nie

Die lasermontering bestaan uit die volgende dele:

  • 4 mikro -solenoïdes
  • Een 1/2 duim spieël
  • Vier M3 -skroewe

Die spesifieke solenoïede wat ek gebruik het, is op $ 1,45 elk op eBay gekoop. Die ronde spieël is gevind in die handwerk -gang by HobbyLobby - 'n pakkie van 25 het my minder as $ 3 dollar gekos. U kan ook spieëls op eBay vind.

U benodig ook weer 'n goedkoop laserwyser van eBay. 'N Violet laser saam met 'n gloei-in-die-donker vel vinyl is 'n uitstekende kombinasie vir hierdie projek!

'N Stel helpende hande is nie nodig nie, maar dit sal baie handig wees om die laserwyser vas te hou en te posisioneer. 'N Groot bindknip kan gebruik word om die aan / uit -knoppie ingedruk te hou.

U benodig 'n Arduino (ek het 'n Arduino Nano gebruik) en 'n manier om die solenoïdes aan te dryf. Soos VajkF in die kommentaar gesê het, kan u voorafgemaakte H-brug gebruik, soos dié gebaseer op die L298 of die L9110. Dit is geredelik beskikbaar op eBay vir 'n paar dollar en kan ook gebruik word vir die bestuur van motors en robotiese projekte.

Aangesien ek nie 'n H-brug gehad het nie, het ek my eie bestuurder uit diskrete komponente gebou:

  • Vier bipolêre NPN -transistors (ek het 'n MPS3704 gebruik)
  • Vier weerstande (ek het 'n weerstand van 1.2k ohm gebruik)
  • Vier diodes (ek het 'n 1N4004 gebruik)
  • 'N 9V -battery en batteryaansluiting

Die elektroniese komponente kom uit my laboratorium, so ek het nie 'n presiese koste daarvoor nie, maar tensy u reeds die onderdele het of dit kan opspoor, is dit waarskynlik meer koste-effektief om 'n voorafgeboude H-brug te gebruik. Nietemin gee ek die skemas vir die bou van u eie.

Stap 2: Druk die Mirror -stuurmodule 3D af

3D -druk die spieëlstuurmodule uit
3D -druk die spieëlstuurmodule uit
3D -druk die spieëlstuurmodule uit
3D -druk die spieëlstuurmodule uit

Die laserstuurmodule bestaan uit twee 3D -gedrukte dele: 'n basis vir die bevestiging van vier solenoïdes en 'n gelede platform vir die spieël.

Ek het die twee STL -lêers vir u by 3D -druk, sowel as FreeCAD -lêers, aangeheg as u die ontwerp moet verander. Alle inhoud is onder die GPLv3, dus u is vry om u verbeteringe aan te bring en te deel!

Stap 3: Monteer die lasermodule

Monteer die lasermodule
Monteer die lasermodule
Monteer die lasermodule
Monteer die lasermodule
Monteer die lasermodule
Monteer die lasermodule
  • Gebruik warm gom om die vier solenoïdes op die onderste stuk vas te maak.
  • Gebruik warm gom om die spieël op die middel van die boonste stuk te plak.
  • Plaas die metaal suiers in die solenoïede en plaas die boonste stuk op die paaltjies (maar moenie dit vasskroef nie). Draai die boonste stuk effens en lig elke suier met 'n klein skroewedraaier in posisie. Die lip van die skyf moet in die groef van die suier gly. Wees versigtig, want die 3D -gedrukte skarniere is baie broos. Met geduld en moontlik 'n paar mislukte pogings, moet u al vier suiers kan plaas sonder om te draai of druk op die skarniere te plaas.
  • Sodra alle suiers geplaas is, steek die M3 -skroewe gedeeltelik in, maar druk elke suier saggies neer voordat u dit vasdraai en maak seker dat die spieël vry kan kantel. As dit nie vrylik beweeg of vang nie, kan dit nodig wees om die boonste plaat te verwyder, een of meer solenoïdes los te maak en dit weer teen 'n effense uitwaartse hoek vas te maak (afstandhouers tussen dit en die sentrale paal kan help).

Stap 4: Druk die laserwyserkraag af

Druk die laserwyserkraag af
Druk die laserwyserkraag af
Druk die laserwyserkraag af
Druk die laserwyserkraag af

Die laserwyser kraag pas op die kop van die laserwyser. U kan dan 'n stel helpende hande gebruik om die kraag vas te gryp en die laser presies op u bank te plaas.

Stap 5: Monteer die bestuurskring

Monteer die bestuurskring
Monteer die bestuurskring

Die dryfkring word in die skema getoon. Soos vroeër gesê, is my weergawe opgebou uit diskrete komponente, maar u kan ook 'n geredelik beskikbare H-brug gebruik. As u kies om u eie te bou, moet u vier kopieë van hierdie stroombaan bou, een vir elk van die vier solenoïdes.

Elke stroombaan sal aansluit by 'n Arduino -pen, twee vir die beheer van die linker en regter solenoïde, en twee vir die op en af solenoïede. Hierdie moet gekoppel word aan PWM -geskikte penne, soos volg:

  • Speld 9: Solenoid op
  • Speld 3: Solenoid af
  • Speld 11: linker solenoïde
  • Speld 10: regter solenoïde

'N Enkele 9V -battery kan gebruik word vir die bestuur van al vier die solenoïedbestuurderbane, of u kan 'n kragtoevoer gebruik. Die Arduino werk sonder USB en moet nie aan die positiewe kant van die 9V -battery gekoppel wees nie. Die negatiewe kant van die battery word egter as grondverwysing gebruik en moet aan die GND-pen op die Arduino sowel as na die emitterpenne op die transistors gekoppel word.

Stap 6: Laai die voorbeeldkode op

Laai die voorbeeldkode op
Laai die voorbeeldkode op

Die voorbeeldkode is opgedateer met die volgende funksies:

  • Pas die PWM -frekwensie so aan dat die meganisme by lae spoed byna stil is. Die gons in Motion Test 1 is heeltemal weg!
  • Voeg by as spanningsvergelykings gebaseer op die papier van Schimpf om die nie-lineêre reaksie van die solenoïede te "lineariseer".

Ek het ook 'n implementering van 'n Lorenz Attractor ingesluit op grond van die kode van hierdie blog.

Die getrouheid van die resultate laat nogal te wense oor, maar ek werk nog steeds daaraan!:)

Die daaropvolgende stappe illustreer sommige van die tegnieke wat in die kode gebruik word.

Stap 7: Verlaag die volume

In my Motion Test 1 kan u 'n harde gons hoor, veral tydens op en af beweging. Dit blyk dat dit veroorsaak is deur die standaard PWM -kapfrekwensie van die Arduino binne die hoorbare omvang. Die vinnige aan- en afskakeling van die spoelspanning sou veroorsaak dat hulle op daardie frekwensie vibreer, wat tot klein luidsprekers verander.

Om hierdie probleem op te los, het ek die PWM -frekwensie in die kode verhoog:

#define PWM_FREQ_31372Hz 0x01 // Stel die PWM -frekwensie in op 31372,55 Hz #definieer PWM_FREQ_3921Hz 0x02 // Stel die PWM -frekwensie in op 3921,16 Hz #define PWM_FREQ_980Hz 0x03 // Stel die PWM -frekwensie (TCB1_TW1_TQ1_TW1) & 0b11111000) | frekwensie; // Stel timer1 (penne 9 en 10) frekwensie TCCR2B = (TCCR2B & 0b11111000) in | frekwensie; // Stel timer2 (penne 3 en 11) se frekwensie in}

Om die Arduino PWM -frekwensie in te stel, is 'n nuttige truuk vir die stilmaak van solenoïdes of motors. Eksperimenteer met die verskillende frekwensiekeuses om te sien watter een die beste resultate bied. Alhoewel dit meer gevorderde programmering behels, is hier 'n goeie bron van hoe die tydtellers werk.

Stap 8: Stel die spanning in om vervorming te verminder

Stel die spanning in om vervorming te verminder
Stel die spanning in om vervorming te verminder

My aanvanklike bewegings toetse het getoon dat die reaksie van die solenoïede beduidend verwring is. In Motion Test 3 (linker figuur) het 'n sirkelvormige spiraal in plaas daarvan 'n reghoekige baan geword met rande.

Om hierdie probleem op te los, verg 'n bietjie wiskunde, maar ek kon 'n wonderlike vraestel op die internet vind wat my gehelp het om die probleem goed genoeg te verstaan om dit in sagteware op te los.

Wat hierna volg, lei u deur die proses wat ek deurgemaak het om die stelsel af te stel en die voorkoms van die gevolglike spore te verbeter!

Stap 9: Die sagteware vervolmaak, met wiskunde

Die sagteware vervolmaak, met wiskunde
Die sagteware vervolmaak, met wiskunde
Die sagteware vervolmaak, met wiskunde
Die sagteware vervolmaak, met wiskunde

Die geheim om die stelsel in te stel, was 'n uitstekende artikel genaamd 'A Detailed Explanation of Solenoid Force' deur Paul H. Schimpf van die Eastern Washington University (skakel). In die besonder het vergelyking 17 my die solenoïde krag gegee in terme van verskillende terme.

Die volgende terme was maklik om te meet:

  • R - Die weerstand van my solenoïde
  • l - Die lengte van die solenoïde
  • x - Die verplasing van die suier in die solenoïde
  • V - Die spanning oor die solenoïde

Ek het ook geweet dat die krag wat deur die solenoïde uitgestraal word, die krag van die 3D-gedrukte vere op die dubbele as-spieël moet balanseer. Die krag van 'n veer word beheer deur die wet van Hooke, wat soos volg lui:

F = -kx

Alhoewel ek nie die waarde van k geweet het nie, het ek ten minste geweet dat die krag wat ek uit vergelyking 17 uit Schimpf se papier gekry het, gelykstaande was aan die krag uit Hooke se wet.

Die waarde van alfa (α) was moeilik. Alhoewel vergelykings 13 en 14 getoon het hoe om hierdie waardes uit die gebied van die solenoïde (A), die aantal draaie (N) en magnetiese deurlaatbaarheidswaardes (μ) te bereken, wou ek nie 'n solenoïde uitmekaar skeur om die aantal draaie, en ek het ook nie die materiaal waarvan die kern van my solenoïde gemaak is, geweet nie.

Stap 10: 'n Goedkoop komponenttoetser bespaar die dag

'N Goedkoop komponenttoetser bespaar die dag!
'N Goedkoop komponenttoetser bespaar die dag!
'N Goedkoop komponenttoetser bespaar die dag!
'N Goedkoop komponenttoetser bespaar die dag!
'N Goedkoop komponenttoetser bespaar die dag!
'N Goedkoop komponenttoetser bespaar die dag!

Dit blyk egter dat vergelyking 15 en 16 my gegee het wat ek nodig gehad het. Ek het 'n goedkoop M328 -komponenttoetser gehad wat ek vir $ 10 by eBay gekoop het. Dit kon dit gebruik om die induktansie van my solenoïde te meet, en ek het gevind dat deur die armatuur op verskillende dieptes in te druk, my verskillende induktiewe waardes gegee word.

Om dit te meet met die anker heeltemal ingesit, het my die waarde van L (0) gegee.

Die lengte van my solenoïde was 14 mm, so ek het die induktansie met die anker op vyf posisies gemeet en dit het my verskillende waardes vir L (x) gegee:

  • L (0,0) = 19,8 mH
  • L (3.5) = 17,7 mH
  • L (7,0) = 11,1 mH
  • L (10,5) = 9,3 mH
  • L (14) = 9,1 mH

Toe gebruik ek 'n sigblad om my waardes teenoor die waarde van vergelyking 15 en 16 vir 'n spesifieke keuse van μr te teken en dan my keuse te verander totdat ek 'n goeie pasmaat gevind het. Dit het gebeur toe μr 2,9 was, soos in die grafiek getoon.

Stap 11: Vind die lente konstante K, los die probleem op

Image
Image
Ontleding van huidige probleme en moontlike oplossings
Ontleding van huidige probleme en moontlike oplossings

Die enigste onbekende was K, die veerkonstante. Ek het dit gemeet deur 9V toe te pas op een van die solenoïede in my dubbel-as-eenheid en die afstand te meet waarin die spieël afgetrek is. Met hierdie waardes kon ek die vergelykings vir K oplos, wat ek gevind het was ongeveer 10.41.

Ek het nou die waardes gehad wat ek nodig gehad het om die trek van die solenoïde op verskillende posisies langs die slag te bereken. Deur F (x) gelyk te stel aan die veerkrag uit Hooke se wet, kan ek die vereiste spanning V oplos.

Die grafiek toon die spanning wat nodig is vir die verskuiwing van die solenoïde na enige gewenste posisie x.

Aan die regterkant, waar die spanning nul is en die posisie 3 mm is, kom dit ooreen met die neutrale ruspunt van die solenoïde wanneer die 3D -gedrukte skarniere heeltemal verslap is. As u op die grafiek na links beweeg, kom dit ooreen met die trek van die anker in die solenoïde teen die trek van die 3D-gedrukte skarniere-dit verg aanvanklik meer spanning, maar namate die anker dieper in die solenoïde kom, neem die trek toe en neem die benodigde dryfspanning af.

Hierdie verhouding is beslis nie-lineêr, maar met die vergelykings van Schimpf se papier kan ek my Arduino-kode skryf om die korrekte spannings uit te voer, sodat die straalafwyking lineêr is:

float positionToVoltage (float x) {

// Herstel krag wat deur skarniere uitgeoefen word (Hooke's Law) op gewenste x. const float spring_F = -spring_K * (x - spring_X0); // Spanning sodanig dat die trekkrag van die solenoïde ooreenstem met die // herstelkrag van die skarniere retour sqrt (-2*R*R*(-spring_F)*solenoid_len/(a*L_0*exp (-a*x/solenoid_len))); }

Dit lei tot 'n baie meer sirkelvormige spiraal as in my oorspronklike bewegingstoets. Taak voltooi!

Stap 12: Vraag en antwoorde oor die bestuurerskring met diskrete komponente

Waarom kan ek nie die solenoïde direk aan die Arduino koppel nie?

Dit is 'n kwessie van hoeveel stroom die Arduino kan lewer sonder om skade aan te rig. Dit is ongeveer 40mA per pen. Omdat ons weet dat die Arduino op 5V werk, kan ons die wet van Ohm gebruik om die vereiste minimum weerstand van die las (in hierdie geval, die solenoïde) te bereken. Deur 5 volt met 0,040 ampère te deel, kry ons 125 ohm. As die las 'n groter weerstand het, kan ons dit direk aan die Arduino koppel, anders kan ons dit nie. 'N Klein solenoïde het gewoonlik 'n weerstand van 50 ohm, dus kan ons dit nie direk vanaf die Arduino dryf nie. As ons dit gedoen het, sou dit 100mA trek, wat duidelik te veel is.

Waarom gebruik u 9V vir die solenoïde, maar 5V vir die Arduino?

Die Arduino loop op 5V, maar dit is 'n bietjie te min vir 'n solenoïde. Deur 'n transistor te gebruik, kan ons 'n spanning vir die solenoïde kies wat onafhanklik is van die 5V wat vir die Arduino gebruik word.

Hoe weet ek of 'n transistor geskik is vir hierdie projek?

Net soos die Arduino, is die belangrikste vereiste dat die stroom wat deur die solenoïde vloei, nie die maksimum waardes vir die transistor (veral die kollektorstroom) oorskry nie. Ons kan die ergste scenario maklik bereken deur die weerstand van die solenoïde te meet en dan die voedingsspanning daarmee te deel. In die geval van 'n 9V-voedingsstroom vir die solenoïede en 'n solenoïdeweerstand van 50 ohm, bring ons in die ergste geval 180mA. Die MPS3704 word byvoorbeeld gegradeer vir 'n maksimum kollektorstroom van 600 mA, wat ons 'n marge van ongeveer 3 gee.

Hoe bepaal ek die minimum waarde van die weerstand tussen die uitset van die Arduino en die basis van die transistor?

Die uitset van die Arduino verbind die basisbeen van die bipolêre transistors deur 'n stroombeperkende weerstand. Aangesien die Arduino op 5V werk, kan ons weer die wet van Ohm gebruik om die weerstand te bereken wat nodig is om die stroom onder 40mA te beperk. Dit wil sê, deel 5 volt met 0,04 ampère om 'n waarde van ten minste 125 ohm te verkry. Hoër weerstandswaardes sal die stroom verlaag, wat ons 'n nog groter veiligheidsmarge bied.

Is daar 'n maksimum waarde vir die weerstand wat ek nie moet oorskry nie?

Dit blyk, ja. 'N Transistor het 'n stroomsterkte. As die versterking byvoorbeeld 100 is, beteken dit dat as ons 1mA in die basis plaas, tot 100mA deur die las sal vloei wat die transistor beheer. As ons 1.8mA in die basis sit, vloei tot 180mA deur die las. Aangesien ons vroeër bereken het dat by 9V 180mA deur die solenoïde vloei, dan is 'n basisstroom van 1.8mA die 'sweet spot', en minder en ons solenoïde sal nie heeltemal aanskakel nie.

Ons weet dat die Arduino 5V uitsluit en ons wil hê dat 1.8mA se stroom vloei, daarom gebruik ons Ohm se wet (R = V/I) om die weerstand te bereken (R = V/I). 5V gedeel deur 1.8mA gee 'n weerstand van 2777 ohm. Gegewe die aannames wat ons gemaak het, verwag ons dat die weerstand tussen 125 en 2777 moet lê - as ons iets soos 1000 ohm kies, kry ons in elk geval 'n redelike goeie veiligheidsmarge.

Stap 13: Ontleding van huidige probleme en moontlike oplossings

Ontleding van huidige probleme en moontlike oplossings
Ontleding van huidige probleme en moontlike oplossings

Die huidige prototipe toon potensiaal, maar daar bly verskeie probleme:

  1. Beweging langs die X- en Y -as blyk nie loodreg te wees nie.
  2. Daar is 'n sprong as die spieël van rigting verander.
  3. Die resolusie is redelik laag en daar is sigbare trappatrone.
  4. By hoër bewegingsnelhede word die pad van die laser verdraai deur trillings en lui.

Uitgawe 1) kan veroorsaak word deur die ontwerp van die buigsame skarniere met 3D -druk wat bewegings langs een as na die loodregte as stuur.

Uitgawe 2) is omdat die koppeling tussen die drywende suiers en die spieëlplatform verslap, dit veroorsaak dat die spieël ruk en spring by oorgange tussen die X- en Y -as. Hierdie skielike beweging lei tot 'n verduisterde X -vormige gaping waar die laserkol vinniger onbeheerde beweeg.

Uitgawe 3) kom voor omdat die standaard Arduino PWM slegs 255 vlakke het, en 'n hele paar daarvan word vermors weens die vorm van die spanningskurwe. Dit kan aansienlik verbeter word deur die gebruik van timer1, wat 16-bisse is en 65536 unieke waardes het.

Uitgawe 4) kom voor omdat die spieël en die magneet se glyarmatuur (suiers) 'n beduidende hoeveelheid bewegende massa vorm.

Aangesien kwessies 1) en 2) verband hou met die meganiese ontwerp, kan 'n moontlikheid wees om die metaal suiers te verwyder en te vervang deur klein seldsame aardmagnete wat direk op die kantelplaat aangebring word. Die solenoïede sou 'n oop spoel wees wat die magnete sou aantrek of afstoot sonder om fisies kontak te maak. Dit sal lei tot gladder beweging en die moontlikheid van ruk uitskakel, terwyl die totale massa verminder word.

Die vermindering van massa is die primêre oplossing vir probleem 4), maar die oorblywende probleme kan direk in sagteware geteiken word deur 'n bewegingsbeheerprofiel in sagteware te implementeer om die spieël op 'n beheerde manier te versnel en te vertraag. Dit word reeds wyd gedoen in die firmware van 3D -drukkers, en soortgelyke metodes kan ook hier werk. Hier is 'n paar bronne wat verband hou met bewegingsbeheer, soos dit van toepassing is op 3D -drukkers:

  • "Wiskunde van bewegingsbeheerprofiele", Chuck Lewin (skakel)
  • "Rukbeheerde beweging verduidelik", (skakel)

Ek vermoed dat die toevoeging van 'n trapeziumvormige bewegingsbeheerprofiel die spieël teen baie hoër snelhede kan laat ry sonder om te lui of trillingsvoorwerpe.

Stap 14: Toekomstige werk en moontlike toepassings

Alhoewel dit baie werk sal verg om oplossings vir hierdie probleme op te los, is ek hoopvol dat hierdie open source balk-stuurmodule 'n bekostigbare alternatief kan wees vir galvanometer-gebaseerde projekte in toepassings soos:

  • 'N Goedkoop laservertoning vir DJ's en VJ's.
  • 'N Elektro-meganiese vektorvertoning vir 'n vintage arcade game soos die Vectrex.
  • 'N DIY hars-tipe SLA 3D-drukker wat in die gees van die RepRap-beweging sy eie laserstuurmodule kan druk.
  • Digitale panering of optiese beeldstabilisering vir kameras.
Arduino wedstryd 2017
Arduino wedstryd 2017
Arduino wedstryd 2017
Arduino wedstryd 2017

Tweede prys in die Arduino -wedstryd 2017

Aanbeveel: