Innehållsförteckning:

CNC -robotplotter: 11 steg (med bilder)
CNC -robotplotter: 11 steg (med bilder)

Video: CNC -robotplotter: 11 steg (med bilder)

Video: CNC -robotplotter: 11 steg (med bilder)
Video: Такие секреты уже все забыли, но их стоит знать! Полезные советы на все случаи жизни! 2024, November
Anonim
Image
Image
CNC -robotplotter
CNC -robotplotter
CNC -robotplotter
CNC -robotplotter

Denna instruerbara beskriver en CNC -styrd robotplotter. Roboten består av två stegmotorer med en pennlyft monterad mitt emellan hjulen. Genom att rotera hjulen i motsatta riktningar får roboten att svänga kring pennan. Rotera hjulen i samma riktning får pennan att dra en rak linje. Den har följande rörelser … framåt, bakåt, rotera vänster och rotera höger.

Under drift roterar roboten mot nästa koordinat, beräknar antalet steg och rör sig sedan. För att påskynda sakerna är roboten programmerad att ta den kortaste svängvinkeln innan den rör sig vilket innebär att den ofta drar när den kör i back.

Kommunikation med roboten sker via en bluetooth -länk. Roboten accepterar både tangentbordskommandon och g-kodutmatningen från Inkscape.

Om du är "i" akvarellmålning kan den här enheten överföra din skiss till papper. Om du ändrar SKALA ändras bildstorleken vilket innebär att du inte är begränsad till fasta pappersmått.

Tänk på att denna robot inte är ett precisionsinstrument. Med det sagt att resultaten inte är så dåliga.

Steg 1: Monteringsfäste

Monteringsfäste
Monteringsfäste
Monteringsfäste
Monteringsfäste

Monteringsfästet var tillverkat av en 60 mm remsa av 18 gauge aluminiumplåt. Aluminium valdes till fästet eftersom det är lätt och lätt att arbeta. En 3 mm borr användes för de små hålen. Var och en av de större hålen började livet som ett 9 mm hål som förstorades med hjälp av en "råttsvans" -fil.

Ändplattorna för motorerna i bilderna ovan är 56 mm x 60 mm åtskilda 110 mm från varandra när de är vikta. Detta gav ett mellanrum mellan mitten och mitten på 141 mm. Hjuldiametern för denna robot är 65 mm. Anteckna dessa dimensioner när deras förhållande (CWR) bestämmer hur många steg som behövs för att rotera roboten 360 grader.

Om du tittar noga på bilderna kommer du att se en hack-såg klippa på var och en av hjulets "kjolar". "Skivan" av metall under vart och ett av dessa sågsnitt har böjts ner så lätt att:

  • plattformen (konsolens topp) är plan,
  • och roboten stenar knappt.

Det är viktigt att pennlyftmekanismen är mitt emellan och i linje med hjulen. Annat än det är robotdimensionerna inte kritiska.

Pennlyften består av en plastmedicinflaska som monteras genom aluminiumfästet enligt bilden. Hål borras genom locket och botten för pennan. Pennlyftskivan består av änden av en tom plastrulle som är limmad på mässingscentrum i en radioknopp som har borrats för att passa pennan. En liten blyfiskefat, lämpligen borrad, har placerats över pennan för att säkerställa kontakt med papperet hela tiden.

Roboten drivs från sex AA -batterier monterade nära hjulen för att minimera belastningen på det tredje stödet.

[Tips: Plåtaluminium kan skäras utan att det behövs en giljotin eller tennskär (som har för vana att deformera metallen). "Rita" tungt båda sidorna av arket längs skärlinjen med hjälp av en linjal i stål och en kraftig kniv för avbrott. Placera nu mållinjen över kanten på ett bord och böj arket något nedåt. Vänd arket och upprepa. Efter några böjar går arket sönder längs hela längden på mållinjen och lämnar en rak kant.]

Steg 2: Pennlyft och sköld

Pennlyft och sköld
Pennlyft och sköld

Jag experimenterade med det ursprungliga buntbandet och valde istället en plastskiva limmad på mässingscentrum i en "radioknopp". Mässingscentrum borrade för att passa pennan. Stödskruven möjliggör exakt placering av pennan. Plastskivan skars från änden av en trådrulle.

Pennlyftmekanismen består av en liten servo som följde med mitt ursprungliga Arduino-kit, men alla små servon som reagerar på 1mS och 2mS pulser med 20ms mellanrum bör fungera. Roboten använder 1mS pulser för pen-up och 2mS pulser för pen-down.

Servon fästs på medicinflaskan med små buntband. Servohornet lyfter plastskivan, och därmed pennan, när ett kommando för upptagning tas emot. När ett kommando för nedtagning tas emot är servohornet klart från skivan. Skivans vikt och mässingsbeslag säkerställer att pennan förblir i kontakt med papperet. En blyvikt kan glidas över pennan om du vill ha "tunga" linjer.

Hela min krets var konstruerad på en Arduino -prototypsköld. Koppla ur skölden när du vill ladda upp en skiss till din Arduino. När din skiss har laddats upp tar du bort USB -programmeringskabeln och byter sedan ut skärmen.

Batteriet matas till Arduino via "Vin" -nålen när skölden är fäst. Detta gör att snabba ändringar kan göras i din programvara utan att stöta på batteri- och bluetooth -konflikter.

Steg 3: Krets

Krets
Krets

Alla komponenter är monterade på en arduino proto-shield.

BJY48 -stepparna är anslutna till arduino -stift A0.. A3 och D8.. D11

Pennlyfts servomotorn är ansluten till stift D3 som har programmerats att mata ut 1mS (millisekund) och 2mS pulser med 20mS intervall.

Servo- och stegmotorerna drivs från sin egen 5 volt 1 amp strömförsörjning.

HC-06 bluetooth-modulen drivs från arduino.

Arduino drivs via Vin -stiftet.

Med undantag för HC-06 bluetooth-modulen, som har en spänningsdelare som består av 1K2 och 2K2 ohm motstånd för att sänka bluetooth RX ingångsspänning till 3,3 volt, är alla motstånd 560 ohm. Syftet med 560 ohm motstånden är att erbjuda kortslutningsskydd till arduino. De gör det också lättare att sätta på skärmen.

Steg 4: Anteckningar om programvarudesign

. Ino -koden för detta projekt utvecklades med "codebender" på https://codebender.cc/. "Codebender" är en molnbaserad IDE (integrerad utvecklingsmiljö) som är gratis att använda, har utmärkt felsökning och automatiskt detekterar din arduino.

SKALA- och CWR -konstanterna som används i koden bestäms av:

  • robotens dimensioner,
  • motorspecifikationen,
  • och ditt val av "stegläge".

Motorspecifikationer

"28BYJ-48-5V Steppmotorer" som används i detta projekt har en "stegvinkel" på 5.625 grader / 64 och ett "hastighetsvariationskvot" på 64/1. Detta översätter till 4096 möjliga steg för ett varv av utgående axel men förutsätter att du använder en teknik som kallas "halvsteg".

Hur Stepper Motors fungerar

"28BYJ-48-5V Stepper Motors" har fyra spolar var och en med en formad järnkärna som innehåller åtta poler. Var och en av de fyra polstyckena förskjuts så att det finns 32 poler på 360/32 = 11,25 graders avstånd.

Om vi aktiverar (steg) en spole i taget (vågstegning), eller två spolar åt gången (fullstegning), kommer rotorn att göra ett komplett varv i 32 steg. Eftersom den inre kugghjulet är 64/1, kräver ett varv på den utgående axeln 2048 steg.

Half-Stepping

Denna robot använder halvsteg.

Halvstegning är en teknik där halvsteg skapas genom att växelvis aktivera en enda spole, sedan två intilliggande spolar, vilket fördubblar antalet steg från 32 till 64 för ett varv av rotorn. Detta motsvarar 64 poler på 360/64 = 5.625 graders avstånd (stegvinkel).

Eftersom det inre kugghjulet är 64/1, kräver ett varv på den utgående axeln 4096 steg.

De binära mönstren för att uppnå halvsteg dokumenteras i funktionerna flytta () {…} och rotera () {…}.

SKALA

SCALE kalibrerar robotens rörelse framåt och bakåt.

Om vi antar en hjuldiameter på 65 mm rör sig roboten framåt (eller bakåt) PI*65/4096 = 0,04985 mm per steg. För att uppnå 1 mm per steg (Inkscape använder mm för sina koordinater) måste vi använda en SKAL-faktor på 1/0,04985 = 20,0584. Detta innebär att antalet steg som krävs för att resa mellan två punkter är "avstånd* SKALA".

CWR

CWR (förhållande cirkeldiameter till hjuldiameter) [1] används för att kalibrera robotens vridvinkel. En hög CWR erbjuder störst upplösning och minsta kumulativa fel, men nackdelen är att det kommer att ta längre tid för roboten att vända.

Om vi antar att robothjulen är 130 mm från varandra måste hjulen färdas PI*130 = 408,4 mm för att roboten ska rotera 360 grader. Om diametern på varje hjul är 65 mm kommer ett varv på ett hjul att flytta roboten PI*65 = 204,2 mm runt cirkeln. För att hjulen ska kunna resa hela cirkelavståndet måste de svänga 407,4/204,2 = 2,0 (två gånger).

Detta översätter till en CWR på 2 och en upplösning på 360/(CWR*4096) = 0,0439 grader per steg.

För största noggrannhet bör SCALE och CWR båda använda så många decimaler som möjligt.

[1]

Hjulspåren bildar en cirkel när robotarna svänger 360 grader. Eftersom hjulspåren överlappar varandra är formeln för CWR:

CWR = hjulavstånd/hjuldiameter.

GCODE -tolk

Roboten svarar bara på Inkscape -kommandon som börjar med G00, G01, G02 och G03.

Den ignorerar alla F (matningshastigheter) och Z (vertikala positioner) koder eftersom roboten bara kan färdas med en hastighet, och pennan är alltid upp för kod G00 och ned för alla andra koder. I- och J -koder ("biarc") som används vid plottning av kurvor ignoreras också.

Den oanvända koden M100 används för "MENY" (M för meny).

Extra T-koder har lagts till för teständamål (T för test)

Koden för min tolk inspirerades av

Steg 5: Installera robotprogramvaran

Stäng av och dra sedan ur "motor / blå-tand" -skyddet. Detta uppnår två saker:

  • Det tar bort batteripaketet medan du programmerar arduino via din USB-kabel
  • Det tar bort HC-06-blåtandanordningen eftersom programmering INTE är möjlig medan Blåtandsmodulen är ansluten. Anledningen till detta är att du inte kan ha två seriella enheter anslutna samtidigt.

Kopiera innehållet i "Arduino_CNC_Plotter.ino" till en ny arduino -skiss och ladda upp det till din arduino. Koppla ur din USB -kabel när programvaran har laddats upp.

Återanslut ovanstående sköld … din robot är "redo att rulla".

Steg 6: Konfigurera din Bluetooth

Konfigurera din Bluetooth
Konfigurera din Bluetooth
Konfigurera din Bluetooth
Konfigurera din Bluetooth
Konfigurera din Bluetooth
Konfigurera din Bluetooth
Konfigurera din Bluetooth
Konfigurera din Bluetooth

Innan du kan "prata" med roboten måste HC-06 Bluetooth-modulen "paras" med din dator.

Om din dator inte har en blå tand måste du köpa och installera en Bluetooth USB-dongel. De nödvändiga drivrutinerna finns i dongeln. Anslut bara den och följ instruktionerna på skärmen.

Följande sekvens förutsätter att du använder Microsoft Windows 10.

Vänsterklicka på "Start | Inställningar | Enheter | Bluetooth". Din skärm visar Bluetooth -status för varje enhet som kan anslutas. Skärmbilden längst ned till vänster visar att datorn för närvarande känner till några Bluetooth-hörlurar.

Slå på roboten. HC-06 Bluetooth-modulen börjar blinka och enheten visas i Bluetooth-fönstret som visas i skärmdumpen längst ned.

Vänsterklicka på "Ready to pair | Pair" och ange lösenordet "1234" som visas i den övre skärmdumpen.

Vänsterklicka på "Nästa" för att para ihop enheten. Din skärm ska nu likna den nedre högra skärmbilden där det står "HC-06 Connected".

Steg 7: Installera terminalemuleringsprogramvaran

Installera terminalemuleringsprogramvaran
Installera terminalemuleringsprogramvaran
Installera terminalemuleringsprogramvaran
Installera terminalemuleringsprogramvaran

För att "prata" med din robot behöver du ett terminalemuleringsprogrampaket vars syfte är att ansluta ditt tangentbord till roboten och skicka g-kodfiler till roboten via Bluetooth-länken.

Mitt val av terminalemuleringsprogramvara för detta projekt är "Tera Term" eftersom det är mycket konfigurerbart. Programvaran är gratis att använda och den senaste versionen är tillgänglig från:

osdn.jp/projects/ttssh2/downloads/64798/term-4.90.exe

Dubbelklicka på "teraterm-4.90.exe" från mappen "Ladda ner" och följ instruktionerna på skärmen. Välj standardinställningarna. Vänsterklicka på "Serial" och sedan "OK" på öppningsskärmen.

Konfigurera Teraterm

Innan vi kan "prata" med roboten måste vi konfigurera "Teraterm":

Steg 1:

Vänsterklicka på "Setup | Terminal" och ställ in skärmvärdena på:

Termstorlek:

  • 160 x 48
  • Avmarkera de två rutorna direkt nedan

Ny linje:

  • Ta emot: CR+LF
  • Överföring: CR+LF

Lämna resten av skärmen med standardvärdena.

Klicka på "OK"

Steg 2:

Vänsterklicka på "Setup | Window" och ställ in skärmvärdena på:

Klicka på "Omvänd" (ändrar bakgrundsfärgen på skärmen till vit)

Lämna resten av skärmen med standardvärdena.

Klicka på "OK"

Steg 3:

Vänsterklicka på "Setup | Font" och ställ in skärmvärdena på:

  • Teckensnitt: Droid Sans Mono
  • Teckensnitt:: Regular
  • Storlek: 9
  • Manus: Western

Klicka på "OK"

Steg 4:

Vänsterklicka på "Setup | Serial" och ställ in skärmvärdena på:

  • Port: COM20
  • Baudhastighet: 9600
  • Data: 8 bitar
  • Paritet: ingen
  • Stopp: 1 bit
  • Flödeskontroll: ingen
  • Sändningsfördröjning: 100 ms/char, 100 ms/line

Klicka på "OK"

Stäng varningsskärmen "Kan inte öppna COM20"

Anmärkningar:

  1. Min blå tand använder COM20 för blåttandskick och COM21 för blåttandmottagning. Dina blå-tand-portnummer kan skilja sig åt.
  2. Överföringsförseningarna är att sakta ner saker när du använder "Arkiv | Skicka …". Arduino verkar missa linjer om du försöker påskynda saker. "Arkiv | Skicka …" verkar tillförlitligt med de värden som visas men experimentera gärna.

Steg 5:

Vänsterklicka på "Setup | Save setup …" och vänsterklicka på "Save"

Stäng Teraterm

Steg 6:

Slå på din robot. Blåttand-lysdioden börjar blinka.

Öppna Teraterm och vänta tills meddelandet "COM20 - Tera Term VT" visas i det övre vänstra hörnet av Teraterm -skärmen. Blåtandslampan ska nu vara fast

Skriv "M100" utan citattecken … en meny ska visas. Siffrorna 19: och 17: som visas på skärmen är Xon- och Xoff -handskakningskoderna från arduinoen.

Grattis … din robot är nu konfigurerad.

Steg 8: Testa diagram

Testa diagram
Testa diagram
Testa diagram
Testa diagram

"Menyn" innehåller två testdiagram.

T103 ritar en enkel kvadrat. Alla hörn ska mötas. Justera CWR -konstanten och kompilera om din kod om de inte gör det.

Den teoretiska CWR för min design var CWR = 141/65 = 2.169. Tyvärr mötte hörnen inte riktigt. För att minska kalibreringstiden plottade jag två rutor … en med en CWR = 2 och den andra med en CWR = 2,3. Om du studerar ovanstående foto kommer du att se att ändarna på en ruta är "öppna" medan de andra ändarna "överlappar". Mät avståndet från ände till ände för var och en av rutorna och ta ett ark grafpapper. Rita en horisontell linje med (i detta fall) 30 divisioner märkta 2.0 till 2.3. Använd en så stor skala som möjligt, rita avståndet "överlappning" ovanför den horisontella linjen och det "öppna" avståndet under linjen. Anslut dessa två punkter med en rak linje och läs av CWR -värdet vid den punkt där den diagonala linjen skär CWR -axeln. För min robot var denna CWR -punkt 2.173 … en skillnad på 0.004 !!

T104 visar ett mer komplext testdiagram.

Inkscape g-koder för detta testdiagram finns i filen "test_chart.gnc". Parametrarna "biarc" "I", "J" som visas i koden har ignorerats som står för den segmenterade cirkeln.

Steg 9: Skapa en disposition

Skapa en disposition
Skapa en disposition
Skapa en disposition
Skapa en disposition

Följande procedur använder "Inkscape" och förutsätter att vi vill rita en blomma från en bild med titeln "flower.jpg".

Inkscape version 0.91 levereras med gcode -tillägg och kan laddas ner från https://www.inkscape.org Klicka på "Nedladdningar" och välj rätt version för din dator.

Steg 1: Öppna din bild

Öppna Inkscape och välj "File | Open | flower.jpg".

Välj följande alternativ från popup-skärmen:

Bildimporttyp: ………… Bädda in

  • Bild DPI: ……………………. Från fil
  • Bildåtergivningsläge: … Ingen
  • OK

Steg 2: Centrera bilden

Klicka på F1 (eller verktyget längst upp till vänster i sidofältet)

Klicka på bilden … pilarna visas

Tryck samtidigt på och håll ned "ctrl" och "shift" -tangenterna och dra sedan en hörnpil inåt tills sidans kontur visas. Din bild är nu centrerad.

Steg 3: Skanna din bild

Välj "Path | Trace Bitmap" och välj sedan följande alternativ från popup-skärmen:

  • färger
  • avmarkera "stack scans"
  • upprepa: uppdatera … skanna nummer … uppdatera
  • klicka på OK när du är nöjd med antalet skanningar

Stäng popup-fönstret genom att klicka på X i det övre högra hörnet.

VARNING: Håll antalet skanningar till ett absolut minimum för att minska robotens plottningstid. Enkla konturer är bäst.

Steg 4: Skapa en disposition

Välj "Object | Fill and Stroke |". En popup med tre menyflikar visas.

  • Välj "Stroke paint" och klicka på rutan bredvid X
  • Välj "Fyll" och klicka på X

Stäng popup-fönstret genom att klicka på X i det övre högra hörnet. En kontur läggs nu över bilden

Avmarkera din bild genom att klicka utanför sidan.

Klicka nu inuti bilden. Meddelandet "Bild: 512 x 768: inbäddat i rot" eller liknande visas längst ned på skärmen.

Klicka på "ta bort". Bara konturen återstår.

Steg 5: Time-out

Dags för lite utforskning.

Klicka på F2 (eller det 2: a från översta verktyget i sidofältet) och flytta markören över konturen. Observera hur konturen blinkar rött när markören passerar över de olika banorna.

Klicka nu på konturen. Lägg märke till hur ett antal "noder" visas. Dessa "noder" måste konverteras till g-kod koordinater men innan vi kan göra det måste vi tilldela en referenskoordinat till vår sida.

Steg 6: Tilldela sidkoordinaterna

Tryck på F1 och klicka sedan på konturen.

Välj "Lager | Lägg till lager" och klicka på "Lägg till" i popup-fönstret. De g-kodstillägg som vi ska använda kräver minst ett lager … även om det är tomt!

Välj "Tillägg | Gcodetools | Orienteringspunkter". Välj "2-point mode" i popup-fönstret och klicka på "Apply".

Avvisa alla varningsmeddelanden.

Klicka på "Stäng" för att stänga popup-fönstret

Det nedre vänstra hörnet på din sida har tilldelats koordinaterna "0, 0; 0, 0; 0, 0"

Steg 7: Välj ett verktyg

Välj "Tillägg | Gcodetools | Verktygsbibliotek" och klicka på:

  • kon
  • Tillämpa
  • OK…. (för att rensa varningen)
  • Stänga

Tryck på F1 och dra den gröna skärmen från sidans kontur.

Steg 8: Justera verktygs- och matningsinställningarna

Detta steg är inte nödvändigt men har inkluderats för fullständighet eftersom det visar hur man ändrar verktygets "diameter" och "matning" om du har en fräsmaskin.

Klicka på "A" -symbolen i sidofältet och ändra sedan inställningarna som visas i den gröna skärmen från:

  • diameter: från 10 till diameter 3
  • foder: från 400 till 200

Steg 9: Skapa g-koden

Tryck på F1

Välj bilden

Välj "Tillägg | Gcodetools | Sökväg till Gcode | Inställningar" och ändra:

  • Fil: flower.ncg ……………………………………… (numeriskt kontrollnamn g-kod filnamn)
  • Katalog: C: / Användare / ditt namn / Skrivbord … (lagringsplats för flower.ncg)
  • Z Säker höjd: 10

Utan att lämna popup-fönstret, välj "Path to Gcode" -menyn och klicka på:

  • Ansök … (det kan ta lång tid … vänta !!)
  • OK ……. (avvisa alla varningar)
  • Stäng … (när koden har skapats)

Om du undersöker konturen består den nu av blå pilhuvuden (nedre bild).

Stäng Inkscape.

Steg 10: Verifiera din kod

Verifiera din kod
Verifiera din kod
Verifiera din kod
Verifiera din kod

nraynaud.github.io/webgcode/ är ett onlineprogram för att visualisera bilden som din g-kod kommer att skapa. Släpp bara din g-kod på den vänstra panelen i simulatorn så visas motsvarande visualisering på höger sida av skärmen. De röda linjerna visar verktygsbanan och robotpennlyften.

Inställningarna "Path | Trace Bitmap" för den översta bilden var:

  • "Färger"
  • "Skannar: 8"

Inställningarna "Path | Trace Bitmap" för den nedre bilden var:

  • "Kantdetektering"
  • "Tröskel: 0,1"

Om du inte behöver detaljerna skapar du alltid en enkel bild.

Steg 11: Skicka en Inkscape -fil till roboten

Skicka en Inkscape -fil till roboten
Skicka en Inkscape -fil till roboten
Skicka en Inkscape -fil till roboten
Skicka en Inkscape -fil till roboten
Skicka en Inkscape -fil till roboten
Skicka en Inkscape -fil till roboten

Låt oss anta att vi vill skicka en fil "Hello_World_0001.ngc" till roboten.

Steg 1

Slå på roboten.

Placera roboten i det nedre vänstra hörnet av ritningssidan och rikta den mot klockan tre. Detta är standard utgångsläge.

Öppna Teraterm och vänta tills Bluetooth -lampan slutar blinka. Detta indikerar att du har en länk.

Steg 2

Kontrollera att de maximala X- och max -Y -värdena i filen som du ska skicka får plats på sidan. Till exempel visar bifogade "Hello_World_0001.ngc" det maximala X -värdet som ska vara:

G00 X67.802776 Y18.530370

och det maximala Y -värdet ska vara:

G01 X21.403899 Y45.125018 Z-1.000000

Om du vill att din bild ska vara större än 67,802776 med 45,125018 mm ovan kan du ändra plotstorleken med följande menyalternativ:

M100

T102 S3.5

Denna kommandosekvens visar menyn så att du kan se T-koder och ökar sedan bildstorleken 3,5 gånger (350%)

Steg 2

Vänsterklicka på "Fil | Skicka fil …"

"Bläddra" efter filen "Hello_World_0001.ngc".

Vänsterklicka på "Öppna". Filen skickas nu till roboten rad för rad.

Det är så enkelt … glad planering:)

Anmärkningar:

  • Alla MENY-kommandon MÅSTE vara versaler.
  • 19: och 17: visas på bilden ovan är arduino -handskakningskoderna (decimaler) för "Xoff" och "Xon". Kolonerna tillsattes för att förbättra det visuella utseendet. Ett Inkscape -kommando följer varje "Xon".
  • Du ska aldrig se två X, Y-koordinater i samma rad. Om detta händer, öka de seriella fördröjningstiderna från deras nuvarande värde på 100 ms per tecken. Kortare förseningar kan fungera …
  • "Hej världen!" plot visar tecken på kumulativt fel. Justering av CWR borde fixa detta.

Klicka här för att se mina andra instruktioner.

Rekommenderad: