Projekt DIY 3-axlad CNC
Tänkte jag kunde dela med mig av ett litet projekt jag håller på med. Är ju ingen datormod direkt men kan väl vara kul för den instresserade ändå. Den innehåller ju ändå en Raspberry pi och egenskriven mjukvara
Som titeln hintar om handlar det om en egenbyggd 3axlig CNC-fräs. Mitt mål var att konstruera och bygga en för en mycket låg kostnad men samtidigt hålla en skaplig precision. Ville även att den ska vara konverterbar till en 3d-skrivare samt lasergraverare.
Då jag har intresse av programmering på hobbynivå så ville jag lösa den biten själv också.
Planen var från start att använda mig utav en raspberry pi som "hjärnan" i maskinen, främst för att jag hade 2st liggandes samt att jag har mycket erfarenhet av den och dess GPIO-pinnar.
Hårdvara:
Sagt och gjort så var det bara att börja skissa på hårdvaran. Följande ritning visar vad jag bestämde mig för(ritat i AutoCad Mechanical så inga 3d-renders här inte^^):
Som synes valde jag att ha dubbla motorer på X-axeln, främst för att jag var rädd för byrålådseffekt vilket förmodligen skulle skett med bara 1 motor. Kör 1 motor på Y och 1 motor på Z.
Mycket av hårdvaran är köpt från Kina såsom motorer, linjärskenor, gängstänger. Har även fått tillverka en del detaljer själv vilket jag gjort.
Fick låna en fräs av en verkstad där jag körde fram alla detaljer jag behövde i aluminium.
Elektronik:
Jag är långt ifrån skarp när det gäller elektronik men går ju att läsa mycket på internet såklart. Jag hade en vision om att jag enbart skulle behöva plugga i 1 kabel från väggen för att driva hela maskineriet, ville absolut inte ha en grendosa med olika adaptrar för de olika spänningarna. De spänningar som krävs för allt är 5v,12v samt 48v. 5v är för att driva Raspberry, 12v för att driva stegmotorerna och 48v för att driva spindelmotorn. På detta ville jag har spänning/ström-mätare, strömbytare samt säkring på varje "lina".
48v-linan skall även gå att justera mellan 12v-48v då detta justerar spindelmotorns varvtal. Detta skall lösas med en potentiometer.
För styrning av stegmotorerna så använder jag EasyDriver-kretsen. Vill inte gå in för detaljerat på elen men har ni något ni undrar över så är det bara att fråga.
Mjukvara:
Mjukvaran har varit det största projektet i detta, främst för att jag är amatör så har brottats mycket med problem och har fått läsa mycket. Allting är skrivet i Python3.
Mjukvaran består av 2 delar:
-En serverdel som ligger på Raspberry Pi, vilken kör Raspbian
-En Klientdel som ligger på en klientdator, vilken inte är OS-bundet. Kör själv arch på en liten laptop dock.
Serverdelen:
Serverdelen har jag lagt upp som så att den ligger och lyssnar efter instruktioner från klienten. En instruktion kan tillexempel vara "kör y-axeln 3.04mm". Servern skickar då det korrekta antalet pulser till stegmotordrivaren(EasyDrivern) och rapporterar sedan tillbaka till klienten att uppgiften är utförd. All kommunikation sker via sockets över nätverket(går även att köra över internet).Serverdelen är helt textbaserad och den körs via SSH.
Bild på serverfönstret:
När man ansluter till servern så sker lite utbyte av inställningar etc.. Det är det som syns på bilden ovan, när det är klart väntar servern på en order från klienten.
Klientdelen:
Klienten tänkte jag köra helt textbaserad först men ångrade mig då jag insåg att det kommer bli för rörigt och underlätta något oerhört med ett GUI. Sagt och gjort så bestämde jag mig för att bekanta mig med QT, varför minns jag inte men det bara blev så.
Bilder på GUI:
Bilderna talar lite för sig själv tycker jag. Ska dock uppdaterat GUI't en del då detta var en ursprungsdesign. Mycket under "Run program"-fliken kommer att ändras men det får bli när grundfunktionerna här helt klara. För att undvika onödig belastning på raspberry'n så görs alla mattematiska beräkningar på klientsidan. Har mycket kvar att göra när det gäller programmeringen, främst när det gäller att köra program(G-kod). I dagsläget fungerar endast G00, G01, G90 och G91. Men det är bara att skriva några rader när tid finnes för mig
Maskinen i dagsläget:
Maskinen är monterad idag på en osb-skiva tillsammans med all elektronik. Jag väntar på spindelmotorn fortfarande så har tejpat fast en tuschpenna för att provköra med
Bilder hur den ser ut idag:
Fronten med den elektroniska kontrollpanelen. Displayen/brytare/säkringen till höger är för spindelmotorn.
Kabelkaos...Här syns Raspberry'n och EasyDrivers. Har även 2 egenlödda kretsar. I bakgrunden är ett switchad nätaggregat som ger 12VDC 8A
Övergripande bilder
Närbild Z-axel
Sidovy
Har även en film där jag testkör ett program för första gången. Är ganska feg med hastigheten här då det var första körningen. Är mycket nöjd med resultat dock. Låter lite illa ibland men det är åtgärdat med lite justering av monteringen samt lite smörja
Kvar att göra:
-Byta ut osb-skivan mot något bättre. Ska se om jag kan fixa en aluminiumplåt att montera maskinen på
-Montera spindelmotorn när den anländer
-Fixa elen för spindelmotorn
-Tillverka en elektroniklåda av typ plexi. Skall givetvis fräsas i min egen maskin
-Skriva färdigt mjukvaran, har mycket många funktioner kvar som skall implementeras samt finns en del buggar att reda ut....
-Något annat säkert
Teknisk data:
Stegmotorer: Nema17 storlek, 200steg/varv, 0.4Nm vridmoment.
Spindelmotor: ER11 chuck, 3000-12000RPM(12v-48v). 400W effekt
Max arbetsyta: 325x305x85(X,Y,Z)
Max hastighet: Okänt men har provat 40mm/sekund. Skall mixtra med inställningar för att hitta max.
Teoretisk tolerans: +-0.02mm. Vändglapp i gängor ej medräknat här. Skall testa detta mer noggrant sedan.
Mjukvarukrav: Python3+(klient,server) med PyQT-bibliotek(klient)
Pris: Ca 3000:- , notera att de egentillverkade delarna har kostat mig 0:-. Dessa skulle givetvis vara dyra annars...
Hoppas ni finner det som ett intressant projekt, jag har iallafall hur kul som helst och helt klart det roligaste jag byggt någonsin. Vad ska jag ha den till sedan då? Jag vet inte... Kanske har ni några ideér på kanske plastdetaljer, trädetaljer, graveringar eller så
Är det något ni undrar så är det bara att fråga^^
Bara gammalt skräp...