Extern styrning av CNC-fräs?
Extern styrning av CNC-fräs?
Ursäkta den kryptiska rubriken. Många CNC program bygger på att programmet själv sköter stegningen av stegmotorerna via parallell porten. T.ex. Mach3 och turbocnc.
Är det någon som byggt en extern modul som t.ex. via serielina får kommandon hur den ska stega och sedan styr stegmotorerna. Ofta är ju en enklare processor mer kapabel att stega än en windowsbaserad maskin. Det känns lite fånigt att man ska behöva ha en 1GHz maskin för att stega några stegmotorer när det skulle gå att göra med en relativt enkel PIC.
Flashcut CNC kör ju enligt den principen, men deras protokoll över serieporten är ju hemligt. Så man måste ju köra med deras styrbox.
Finns det någon standard eller måste man implementera en g-code interpretator i PIC-en?
Såg i en annan tråd "Mach3 frågor" om att Gecko G100 skulle funka så.
Är någon intresserad att göra ett projekt av detta? Eller vet om något liknande?
Är det någon som byggt en extern modul som t.ex. via serielina får kommandon hur den ska stega och sedan styr stegmotorerna. Ofta är ju en enklare processor mer kapabel att stega än en windowsbaserad maskin. Det känns lite fånigt att man ska behöva ha en 1GHz maskin för att stega några stegmotorer när det skulle gå att göra med en relativt enkel PIC.
Flashcut CNC kör ju enligt den principen, men deras protokoll över serieporten är ju hemligt. Så man måste ju köra med deras styrbox.
Finns det någon standard eller måste man implementera en g-code interpretator i PIC-en?
Såg i en annan tråd "Mach3 frågor" om att Gecko G100 skulle funka så.
Är någon intresserad att göra ett projekt av detta? Eller vet om något liknande?
Javisst, jag gjorde det med en AVR. Endast linjär interpolering, inga cirkulära rörelser...
Där är kod och schema
http://www.altronix.se/elwiki/pmwiki.ph ... .CNCMaskin
Jag kände dock inte att jag hade tid att förfina det så jag köpte färdiga grejer till min maskin nu för några månader sedan
/Johan
Där är kod och schema
http://www.altronix.se/elwiki/pmwiki.ph ... .CNCMaskin
Jag kände dock inte att jag hade tid att förfina det så jag köpte färdiga grejer till min maskin nu för några månader sedan
/Johan
Tidigare har jag har försökt små labba lite med att försöka styra en stegmotor med en gammal 68HC11 & försökt att implementera acceleration & de-acceleration, men där tog proccessorkraften slut trots en klocka på 20Mhz.
Det krävs en enorm tidsprecition för att få motorerna att rulla mjukt, & att få en vanlig PIC att reda ut detta & samtidigt styra minst 3 individuella motorer & läsa G-koden i förväg för att besluta om olika åtgärder för motorernas gång låter inte helt enkelt!.
Det krävs en riktigt pigg processor, eller änu bättre en PLD-krets som kan jobba parrarellt i block!.
Det krävs en enorm tidsprecition för att få motorerna att rulla mjukt, & att få en vanlig PIC att reda ut detta & samtidigt styra minst 3 individuella motorer & läsa G-koden i förväg för att besluta om olika åtgärder för motorernas gång låter inte helt enkelt!.
Det krävs en riktigt pigg processor, eller änu bättre en PLD-krets som kan jobba parrarellt i block!.
- funkis
- Utsparkad, på semester
- Inlägg: 1158
- Blev medlem: 28 januari 2006, 16:15:54
- Ort: Lite här och lite där!
Hur mycket gav du för den, ingick fräs motorn?strombom skrev:Javisst, jag gjorde det med en AVR. Endast linjär interpolering, inga cirkulära rörelser...
Där är kod och schema
http://www.altronix.se/elwiki/pmwiki.ph ... .CNCMaskin
Jag kände dock inte att jag hade tid att förfina det så jag köpte färdiga grejer till min maskin nu för några månader sedan
/Johan
/funkis
hoppas inte Andax blir sur för tråd-lånet men men
funkis: köpte den på www.easgmbh.de, ca 1000 euro. nej fräsmotorn ingick inte och jag köpte en ny för några månader sedan från proxxon. så här ser det ut nu http://bildz.altronix.se/mekpro/frasa1.jpg
funkis: köpte den på www.easgmbh.de, ca 1000 euro. nej fräsmotorn ingick inte och jag köpte en ny för några månader sedan från proxxon. så här ser det ut nu http://bildz.altronix.se/mekpro/frasa1.jpg
nejdå, den var bara lite för klen, jag har den för manuella grejer nu: http://www.proxxon.com/images/produkte/28481.jpg
det är ingen dödskalle, det är vår fina robot min grupp i en kurs bygger http://bildz.altronix.se/mekpro/
det är ingen dödskalle, det är vår fina robot min grupp i en kurs bygger http://bildz.altronix.se/mekpro/
- funkis
- Utsparkad, på semester
- Inlägg: 1158
- Blev medlem: 28 januari 2006, 16:15:54
- Ort: Lite här och lite där!
""Ser ut som en"".
Appropå "råbåt" ni ungdommar har det bra ni, på min tid fick man
sitta i en skokartong på motorvägen i hällande ösregn och knappa
dass basic på en ABC80 men tro inte att vi fick bygga nått kul till
styrkoden, näe, de var bara att ta nästa teori kapittel i boken.
Vilken jäkla skit skola/system man gick i, håhåjaja!
/Funkis
Appropå "råbåt" ni ungdommar har det bra ni, på min tid fick man
sitta i en skokartong på motorvägen i hällande ösregn och knappa
dass basic på en ABC80 men tro inte att vi fick bygga nått kul till
styrkoden, näe, de var bara att ta nästa teori kapittel i boken.
Vilken jäkla skit skola/system man gick i, håhåjaja!
/Funkis
Senast redigerad av funkis 17 februari 2006, 21:59:43, redigerad totalt 1 gång.
Utan att kunna speciellt mycket om ämnet skulle inte HPGL vara en lösning.
http://www.luberth.com/cstep/hpgl.htm
Denna fick mig att bli impad...
http://www.luberth.com/cstep/PCBtest.htm
http://www.luberth.com/cstep/hpgl.htm
Denna fick mig att bli impad...
http://www.luberth.com/cstep/PCBtest.htm
Hittade ett paper som beskriver linjär interpolationen i 3D, inkl helix.
http://www.khwarzimic.org/takveen/helix.pdf
Har sedan suttit och lurat på hur man kan implementera detta effektivt och även kunna ta hänsyn acceleration etc.
Med hjälp av en timerinterrupt kan man generera en timer interrupt med ett programmerbart interval där intervallet är proportionellt mot 1/F, dvs låg feed rate ger lång tid. Hur den ska pulsa ligger som en byte i en buffer som den läser en gång per interrupt. Genom att se hur många värden som är kvar i bufferten kan man sedan ändra tiden mellan interrupten (decelerera) om de börjar ta slut.
(Egentligen sker två interrupt per puls, en vid starten och en vid slutet av pulsen, en fix tid efter starten, t.ex. 15 µs, det är totala tiden mellan två start interrupt som är proportionellt mot 1/F)
Skulle nu beräkningarna för att göra t.ex. helix interpoleringen ta längre tid per steg än k*1/F decelererar algoritmen automatiskt tills den hinner med.
Linjär interpolering lär den med den här metoden garanterat hinna med.
http://www.khwarzimic.org/takveen/helix.pdf
Har sedan suttit och lurat på hur man kan implementera detta effektivt och även kunna ta hänsyn acceleration etc.
Med hjälp av en timerinterrupt kan man generera en timer interrupt med ett programmerbart interval där intervallet är proportionellt mot 1/F, dvs låg feed rate ger lång tid. Hur den ska pulsa ligger som en byte i en buffer som den läser en gång per interrupt. Genom att se hur många värden som är kvar i bufferten kan man sedan ändra tiden mellan interrupten (decelerera) om de börjar ta slut.
(Egentligen sker två interrupt per puls, en vid starten och en vid slutet av pulsen, en fix tid efter starten, t.ex. 15 µs, det är totala tiden mellan två start interrupt som är proportionellt mot 1/F)
Skulle nu beräkningarna för att göra t.ex. helix interpoleringen ta längre tid per steg än k*1/F decelererar algoritmen automatiskt tills den hinner med.
Linjär interpolering lär den med den här metoden garanterat hinna med.