Innehållsförteckning:

Mätverktyg för CNC-matningshastighet tillverkat av skrot: 5 steg
Mätverktyg för CNC-matningshastighet tillverkat av skrot: 5 steg

Video: Mätverktyg för CNC-matningshastighet tillverkat av skrot: 5 steg

Video: Mätverktyg för CNC-matningshastighet tillverkat av skrot: 5 steg
Video: Skjutbordssågen MS750 | See it in Action | Wood-Mizer Europe 2024, November
Anonim
Mätverktyg för CNC-matningshastighet tillverkat av skrot
Mätverktyg för CNC-matningshastighet tillverkat av skrot

Har någon någonsin velat mäta den faktiska matningshastigheten på en CNC-maskin? Förmodligen inte förrän fräsbitarna är intakta efter ett CNC -jobb … men när de börjar gå sönder regelbundet är det kanske dags att undersöka. I denna instruerbara kan du följa ett uppdrag för att bestämma den verkliga matningshastigheten för en CNC-maskin. Det kommer att täcka den omvända konstruktionsdelen av en skrivare, arduino-firmware, PC-programvara och resultaten jag fick med hjälp av mina kollegor och ett skräp förvandlades till en skatt.

Steg 1: Material, verktyg, enheter som används för att få projektet igång

När jag började arbeta med detta tänkte jag ut en kort lista över de saker vi kommer att behöva:

  • demonterad skrivarvagnsmekanism
  • handverktyg för att justera det
  • lödkolv, lödning, trådar
  • multimeter
  • oscilloskop eller logisk analysator - detta är inte absolut nödvändigt
  • strömförsörjning
  • mikroskop
  • Arduino nano + pinout
  • PC med Arduino IDE, Visual Studio 2008 Express + MS Charting -verktyg installerade
  • (MPU6050 - jag slutade inte använda detta)
  • villig att söka efter allt du inte vet hur man gör

I början trodde jag att ett MPU6050-kort skulle tillåta mig att mäta matningshastigheten på alla tre axlarna samtidigt. Med accelerometern inuti var jag säker på att summering av accelerometerdata ger mig önskat värde - hastigheten på varje axel. Efter att ha laddat ner och ändrat ett Arduino -utdrag som visade rådata på den seriella bildskärmen skrev jag ett litet PC -program i Visual Studio som bearbetade data och plottade det på ett diagram för enklare tolkning. Jag var tvungen att ladda ner både Visual Studio C# Express 2008 och kartläggningsverktygen för detta.

Efter att ha kodat ett tag och letat upp alla saker jag behövde för seriell kommunikation hamnade jag med de planerade värdena, men oavsett vad jag gjorde var det inte användbart. Små men plötsliga rörelser skulle resultera i stora spikar, medan längre resor inte ens skulle dyka upp på listorna. Efter två dagar med att ha slagit i MPU6050 gav jag slutligen upp och vände mig till något annat - en demonterad skrivares positionsåterkopplingsmekanism.

Steg 2: Hårdvarusaker som behövde göras

Hårdvarusaker som måste göras
Hårdvarusaker som måste göras
Hårdvarusaker som måste göras
Hårdvarusaker som måste göras
Hårdvarusaker som måste göras
Hårdvarusaker som måste göras
Hårdvarusaker som måste göras
Hårdvarusaker som måste göras

Omvänd teknik

Självklart hade skrivarmekanismen inget artikelnummer jag kunde ha använt för att bestämma dess exakta egenskaper, det behövdes lite omvänd konstruktion för att komma dit vi ville. Efter att ha undersökt mekanismen och elektroniken noggrant bestämde jag mig för att det första måste vara identifieringen av de optiska sensorstiften. Detta måste göras för att ansluta det hela till Arduino. Jag demonterade den svarta plastdelen, extraherade kretskortet och undersökte sensorn: den hade ROHM RPI-2150 skriven på den. Det gjorde mig glad, förhoppningen var stor att jag hittar ett datablad. Tyvärr är detta antingen en gammal eller en anpassad del - det fanns inget datablad att hitta någonstans på webben. Detta innebar att jag var tvungen att ta saken i egna händer: vetande att dessa sensorer vanligtvis har en infraröd lysdiod och två fototransistorer inuti tog jag en multimeter, ställde in den på diodmätningsläge och började mäta mellan stiften.

Kraftstiften är vanligtvis lätta att hitta - de kommer att ha kondensatorer över sig, och de är vanligtvis anslutna med breda spår på kretskortet. Markspår är ofta anslutna till flera kuddar för bättre brusavvisning.

Ingångs- och utgångsstiften är dock inte så triviala. Vid mätning över en diod visar mätaren sin framspänning i ena riktningen och överbelastning (oändlig) i den andra. Jag kunde identifiera fyra dioder mellan stiften, jag drog slutsatsen att den fjärde dioden måste vara någon form av zener eller TVS -diod, eftersom den var rätt mellan komponentens strömstift. Det var enkelt att hitta den infraröda sändaren, det fanns ett 89R -motstånd i serie med det. Jag blev kvar med två diodmätningar på de återstående två stiften, det måste vara de två mottagarna.

Obs: Dessa sensorer har två mottagare för att kunna bestämma rörelseriktningen förutom att bestämma positionen genom att räkna pulserna. Dessa två utgångsvågformer är 90 ° ur fas, detta används för att producera en uppräkning eller en nedräkningspuls. Genom att följa antalet av dessa pulser kan skrivhuvudets exakta position bestämmas.

När sändaren och de två mottagarna hittades lödde jag trådar på deras stift så att jag kan koppla sensorn till Arduino. Innan jag gjorde det gav jag sensorn 3,3V, drog remsan mellan sensorn ett par gånger och observerade kvadratvågan på utgångarna. Kvadratvågens frekvens varierade med rörelsehastigheten, och jag drog slutsatsen att mätsystemet nu är redo att anslutas till Arduino.

Ansluter Arduino

Det är väldigt enkelt att ansluta den här nya sensorn. Anslut bara sensorutgångarna till D2 och D3 (avbrottskompatibla stift!), Så kommer strömförsörjningsledningarna och kodningen att börja.

Steg 3: Arduino -kodning

Arduino kodning
Arduino kodning

Arduino -koden är ganska enkel. Jag tilldelade en funktion som körs varje gång D2 ser en stigande kant, det här är förflutningsfunktionen från Arduino -koden som jag bifogade. Om du tittar på signalerna från en kvadratisk kodare ser du detta:

  • i en riktning fas A är logisk hög på varje fas B stigande kant
  • i den andra riktningen är fas A logisk låg på varje fas B stigande kant

Detta var egenskapen för kodaren som jag utnyttjade: eftersom förflutningsfunktionen körs varje gång D2 har en stigande kant, skrev jag bara en om det ökar en räknare när D3 är hög och minskar den när D3 är låg. Detta fungerade vid första försöket, jag skickade ut räknarvärdet till seriemonitorn och såg hur det ökade/minskade när jag flyttade skrivarhuvudet på axeln.

Lång historia kort, firmware gör följande i loop -funktionen:

  1. kontrollerar den seriella mottagningsbufferten för inkommande data
  2. om det finns inkommande data, kontrollera om det är ett '1' eller inte
  3. om det är ett 1 betyder det att PC -programvaran begär räknarvärdet
  4. skicka räknarvärdet till datorn via serie
  5. börja om från 1.

Med detta är bollen i PC -mjukvarans domstol nu. Låt oss gå in på det!

Steg 4: Visual Studio C# -programvara

Syftet med VS C# -programmet var att flytta beräkningsbördan från Arduino till PC. Denna programvara tar emot data som Arduino tillhandahåller, beräknar och visar hastigheten i form av en graf.

Det jag först gjorde var att googla hur man gör seriekommunikation i C#. Jag hittade mycket bra info på MSDN.com tillsammans med ett bra exempel, sedan slängde jag bara ut det jag inte behövde - i princip allt utom läsdelen. Jag ställde in COM-porten och hastigheten för att matcha den för Arduino, sedan gav jag bara några försök och dumpade allt som kom på serieporten i en textruta med flera rader.

Efter att värdena lästs kunde jag bara använda readto & split -funktionerna för att isolera en mätning från varandra och från avgränsningstecken. Dessa ritades på en diagramkontroll och värdena började visas på skärmen.

Om du inte kan se diagramkontrollen i din VS -verktygslåda kan du googla problemet och hitta lösningen här (leta efter svar nr 1): länk

Mätprincipen

För att hitta sambandet mellan antalet räkningar och avståndet som huvudet färdas nollställde vi räkningsvärdet, flyttade skrivarhuvudet 100 mm för hand och observerade förändringen i räkningar. Vi kom slutligen fram till följande proportion: 1 count = 0.17094mm.

Eftersom vi kan fråga om avståndet och vi kan mäta tiden mellan proverna, kan vi beräkna hastigheten med vilken positionsskiftet sker - vi kan beräkna hastigheten!

Det finns en grov programtid på 50 ms tack vare TMR0, men vi observerade att dessa tider inte var för exakta. Faktum är att efter några mjukvaruhastighetsmätningar fann vi att den tidsinställda 50 ms inte alls är 50 ms. Detta innebar att proverna inte togs med fast intervall, så hastighetsberäkningen kunde inte heller använda en fast tidsbas. När vi väl hittade det här problemet var det lätt att gå vidare: vi tog skillnaden i distans och tidsskillnaden och beräknade hastigheten som D_distance/D_time (istället för D-distans/50ms).

Eftersom vår ekvation skulle returnera hastigheten i enheter på mm/50 ms måste vi också multiplicera detta med 1200 för att få det avstånd huvudet skulle gå på en minut, i [mm/minut].

Obs: Mach 3 CNC-kvarnkontrollprogramvara definierar matningshastigheter i enheter på [mm/minut]

Filtrering

Från och med nu tycktes mätningarna vara ganska exakta, men det var lite brus på den uppmätta signalen. Vi misstänkte att detta berodde på mekaniska inkonsekvenser i axeln, axelkopplingen, etc, så bestämde oss för att filtrera bort det för att få ett bra medelvärde av det som mäts.

Fina justeringar av programvaran

För att ändra samplingsfrekvensen och filterhastigheten under körning, tillkom rullningslister - en för varje. Möjligheten att dölja tomterna introducerades också.

Steg 5: Resultat

Resultat
Resultat
Resultat
Resultat
Resultat
Resultat
Resultat
Resultat

Efter att hårdvaru- och programvarudelarna var klara körde vi tre uppsättningar mätningar med mach 3 + my programvara, du kan se resultaten på de bifogade bilderna. Senare experiment visade bättre noggrannhet, med både filter- och provhastigheter ökade. Diagrammen visar den uppmätta hastigheten med fast rött och genomsnittet med streckprickad blå.

Med detta sagt ser det ut som att Mach 3 hanterar dessa hastighetsinställningar ganska exakt, men nu vet vi säkert:)

Jag hoppas att du gillade denna korta instruktion om omvänd teknik och att göra vatten till vin!

Skål!

Rekommenderad: