Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Hej, i denna instruktionsbara, vill jag visa dig hur du kan bygga ditt eget steg / dir -gränssnitt för ILDA standard galvo laserskannrar.
Som ni kanske vet är jag också uppfinnaren av "DIY-SLS-3D-Printer" och "JRLS 1000 DIY SLS-3D-PRINTER" och medan jag byggde dessa maskiner har jag börjat fundera på hur dessa skrivare kommer att prestera, om jag kommer att använda en Galvo Scanners istället för ett kartesiskt rörelsessystem. Men i dessa dagar hade jag inte kunskapen att programmera en controller för en galvo -skanner. Så jag har använt en befintlig firmware med kartesisk rörelse.
Men idag och efter lite forskning hittade jag en instruerbar där författaren använder en arduino för att skapa en DIY Laser Galvo -show. Jag trodde att det var just det jag letade efter, så jag har beställt delarna som i hans instruerbara och gjort några experiment. Efter en del undersökningar fick jag reda på att Arduino inte kommer att fungera så bra som steg / riktningsgränssnitt, så jag remixade det för STM32 mikrokontroller.
Kom ihåg att denna styrenhet bara är en prototyp, men användbar för många projekt. Till exempel i en DIY SLS 3D -skrivare eller en lasergraver.
Funktionerna i Galvo -kontrollen är:
- konvertering från 5V steg/dir -signaler till ILDA -standard
- 120 kHz ingångsfrekvens för (Steg / riktningssignaler)
- 12bit utgångsupplösning (0, 006 ° per vinkel)
- konvertering från polära till linjära koordinater
- kompatibel med alla rörelsekontroller som skapar en steg- och riktningssignal
- mittjusteringsstift (hemrutin)
video av laser galvo controller: (kommer snart)
Om du gillar min Instructable, vänligen rösta på mig i Remix -tävlingen
Steg 1: Delar du behöver till Galvo Controller
Elektroniska delar till galvo -styrenheten:
Kvantitet | Beskrivning | Länk | Pris |
---|---|---|---|
1x | ILDA 20Kpps galvo galvanometersats | Aliexpress | 56, 51€ |
1x | 6 mm 650 nm laserdiod | Aliexpress | 1, 16€ |
vissa | trådar | - | - |
1x | ST-Link V2 | Aliexpress | 1, 92 |
Elektroniska delar för kretsen:
Här är alla nödvändiga delar för galvostyrningen. Jag försökte köpa alla delar så billigt som möjligt.
Kvantitet | Beskrivning | Namn på krets | Länk | Pris |
---|---|---|---|---|
1x | STM32 "Blue-Pill" mikrokontroller | "BLÅ-PILL" | Aliexpress | 1, 88€ |
1x | MCP4822 12 bitars tvåkanals DAC | MCP4822 | Aliexpress | 3, 00€ |
2x | TL082 dubbel OpAmp | IC1, IC2 | Aliexpress | 0, 97€ |
6x | 1k motstånd | R1-R6 | Aliexpress | 0, 57€ |
4x | 10k trimpotentiometer | R7-R10 | Aliexpress | 1, 03€ |
vissa | stifthuvud | - | Aliexpress | 0, 46€ |
Steg 2: Theory of the Controller
Här kommer jag att förklara hur regulatorn fungerar i allmänhet. Jag kommer också att visa några detaljer till exempel beräkningen av rätt vinkel.
1. RÖRELSESKONTROLL
Rörelsekontrollen är den del där du kommer att skapa steg- och riktningssignalerna. Steg/riktningskontrollen används ofta i stegmotorapplikationer som 3D-skrivare, lasrar eller CNC-kvarn.
Förutom steg- och riktningssignalerna finns det ett behov av en mittjusteringsstift för att göra STM32 och Motioncontroller konsistenta. Det beror på att galvorna är absolut kontrollerade och det inte behövs några gränslägesbrytare.
2. STM32-mikrokontroller
STM32 -mikrokontrollern är hjärtat i denna styrenhet. Denna mikrokontroller har flera uppgifter att göra. Dessa uppgifter är:
Uppgift 1: Mät signaler
Den första uppgiften är att mäta insignalerna. I detta fall kommer det att vara steg- och riktningssignaler. Eftersom jag inte vill att rörelsekontrollen kommer att begränsas av ingångsfrekvensen, konstruerade jag kretsen för 120 kHz (testad). För att uppnå denna ingångsfrekvens utan att förlora data använder jag två hårdvarutimers TIM2 och TIM3 på STM32 för att hantera steg / riktningsgränssnittet. Förutom steg- och riktningssignalerna finns riktningssignalen. Denna inriktning styrs av ett externt avbrott på STM32.
Uppgift 2: Beräkna signalerna
Nu måste regulatorn beräkna signalerna till rätt värde för DAC. Eftersom galvot kommer att skapa ett olinjärt polärt koordinatsystem, behövs en liten beräkning för att skapa ett linjärt beroende mellan steg och verklig flyttad laser. Här kommer jag att visa dig en skiss av beräkningen:
Nu måste vi hitta formeln för beräkningen. Eftersom jag använder en 12bit DAC kan jag ge ut en spänning från -5 - +5V i 0 - 4096 steg. Galvo jag har beställning har en total avsökningsvinkel på 25 ° vid -5 - +5V. Så min vinkel phi ligger i intervallet från -12, 5 ° - +12, 5 °. Slutligen måste jag tänka på avståndet d. Jag personligen vill ha ett skanningsfält på 100x100mm, så min d blir 50mm. Den höga h är resultatet av phi och d. h är 225, 5 mm. För att få avståndet d i förhållande till vinkeln phi använde jag en liten formel, som kommer att använda tangenterna och omvandla vinkeln från radianer till "DAC-värden"
Slutligen behöver jag bara lägga till en bias på 2048, eftersom mitt skanningsfält är mittjustering och alla beräkningar är gjorda.
Uppgift 3: Skicka värden till DAC:
Eftersom STM32 jag har använt har ingen inbyggd DAC, har jag använt en extern DAC. Kommunikationen mellan DAC och STM32 realiseras via SPI.
3. DAC
För kretsen använder jag samma 12bit DAC "MCP4822" som deltaflo. Eftersom DAC är unipolär 0-4, 2V och du behöver -+5V bipolär för ILDA -standarden, måste du bygga en liten krets med några OpAmps. Jag använder TL082 OpAmps. Du måste bygga denna förstärkarkrets två gånger, eftersom du måste styra två galvor. De två OpAmps är anslutna till -15 och +15V som deras matningsspänning.
4. GALVO
Den sista delen är ganska enkel. Utgångsspänningen för de två OPAmps kommer att anslutas till ILDA Galvo -drivrutinerna. Och det är det, nu ska du kunna styra galvorna med steg- och riktningssignaler
Steg 3: Kretsen
För kretsen har jag använt en prototyp PCB.
Du kan ansluta steg- och riktningssignalerna direkt till STM32, eftersom jag har aktiverat interna neddragningsmotstånd. Jag har också använt 5V toleranta stift för steg, riktning och mittstift.
Du kan ladda ner hela schemat över kretsen nedan:
Steg 4: Programmering av STM32
STM32 är programmerad med Attolic TrueStudio och CubeMX. TrueStudio är gratis att använda och du kan ladda ner det här
Eftersom TrueStudio inte är så enkelt som till exempel Arduino IDE har jag skapat en.hex -fil som du helt enkelt behöver ladda upp till STM32 -mikrokontrollern.
I det följande kommer jag att förklara hur du laddar upp filen till STM32 "BluePill":
1. Ladda ner "STM32 ST-LINK Utility": Du kan ladda ner programvaran här
2. Installera och öppna "STM32 ST-LINK Utility":
3. Öppna nu filen Galvo.hex i ST-Link Utility:
Därefter måste du ansluta STM32 "BluePill" till ST-Link-V2. När du är ansluten klickar du på "Anslut till traget -knappen":
Klicka slutligen på "Ladda ner". Nu ska din STM32 blinka korrekt.
Dessutom har jag bifogat alla källfiler för Galvo_Controller i TrueStudio
Steg 5: Anslut alla delar mekaniskt och testa det
Jag har placerat alla elektroniska delar på en 4 mm aluminiumplatta för ett bättre utseende:-)
Nu ska jag visa dig hur du behöver justera potentiometrarna på kretsen förmodligen:
Först lite bakgrundsinformation om ILDA -standarden. ILDA -standarden används vanligtvis för lasershower och består av en 5V och en -5v signal. Båda signalerna har samma amplitud, men med ändrad polaritet. Så det vi måste göra är att trimma utsignalen från DAC till 5V och -5V.
Justera potentiometern:
Vad du kan se här är utgångsspänningen för denna krets vid en ingångsstegsfrekvens på 100 kHz och med en konstant riktningssignal. På den här bilden är allt bra. Amplituden går från 0 till 5V och från 0 till -5. Även spänningarna är sannolikt inriktade.
Nu ska jag visa dig vad som kan gå fel när du justerar potentiometern:
Som du kan se nu är båda spänningarna förmodligen inte inriktade. Lösningen är att justera offset -spänningen från OpAmp. Det gör du genom att justera potentiometrarna "R8" och "R10".
Ett annat exempel:
Som du kan se nu är spänningarna justerade förmodligen, men amplituden är inte 5V utan 2V. Lösningen är att justera förstärkningsmotståndet från OpAmp. Det gör du genom att justera potentiometrarna "R7" och "R9".