Innehållsförteckning:
- Steg 1: Material, verktyg, enheter som används för att få projektet igång
- Steg 2: Hårdvarusaker som behövde göras
- Steg 3: Arduino -kodning
- Steg 4: Visual Studio C# -programvara
- Steg 5: Resultat
Video: Mätverktyg för CNC-matningshastighet tillverkat av skrot: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
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
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 -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:
- kontrollerar den seriella mottagningsbufferten för inkommande data
- om det finns inkommande data, kontrollera om det är ett '1' eller inte
- om det är ett 1 betyder det att PC -programvaran begär räknarvärdet
- skicka räknarvärdet till datorn via serie
- 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
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:
Arbetar med överstorlek 9 volt batteri tillverkat av gamla blysyraceller: 11 steg (med bilder)
Arbeta överstor 9 -voltsbatteri tillverkat av gamla blysyraceller: hände det dig någonsin, att du mumsade lite snacks och plötsligt insåg att du förbrukade dem, mycket mer än vad din dagliga kostkvot tillåter eller att du gick på lite shopping och eftersom av en viss beräkning har du överfylld några produkter
280Wh 4S 10P Li-ion-batteri tillverkat av återvunna bärbara batterier: 6 steg (med bilder)
280Wh 4S 10P Li-ion-batteri tillverkat av återvunna bärbara batterier: Under det senaste året eller så har jag samlat bärbara batterier och bearbetat och sorterat 18650 celler inuti. Min bärbara dator börjar bli gammal nu, med en 2dn gen i7, den äter ström, så jag behövde något för att ladda den när jag var på språng, även om jag bär den här ba
Altoids -fodral tillverkat av gammal iPod -blandning: 9 steg (med bilder)
Altoids-fodral tillverkat av gammal iPod Shuffle: Som grafiker gillar jag att förvara extra x-acto-blad i en stålbehållare för säkerhets skull. Altoids -behållare är de bästa …. men vad gör du då med Altoids?
IPhone -fodral tillverkat av Papier Mache: 7 steg
IPhone -fodral Tillverkat av Papier Mache: Papier mache, galet, va? Jag gjorde några masker på sistone med pappersmaskin, så när jag undrade runt Instructables letade efter ett sätt att sätta min iPhone 3G i min bil med stil, tänkte jag bara att jag ' prova. Vad jag ska göra är i grunden en form av
Datorstativ tillverkat av Dell Mini 10 -fodral: 3 steg
Laptopställ tillverkat av Dell Mini 10 -fodral: Jag hittade precis att mitt Dell mini 10 -fodral har en perfekt form. Sedan bestämmer jag mig för att göra ett fläktkylande bärbart stativ för min mini 10. Du vet, det finns ingen fläkt inuti den här Dell -produkten. Du kan få den kinesiska versionen här. http://jerryatdell.blogspot.com/2009/04/dell