Innholdsfortegnelse:
- Trinn 1: Materialer, verktøy, enheter som brukes for å få prosjektet i gang
- Trinn 2: Maskinvare som må gjøres
- Trinn 3: Arduino -koding
- Trinn 4: Visual Studio C# programvare
- Trinn 5: Resultater
Video: CNC feed-rate måleverktøy laget av skrot: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Har noen noen gang ønsket å måle den faktiske matingen på en CNC-maskin? Sannsynligvis ikke før fresebitene er intakte etter en CNC -jobb … men når de begynner å gå i stykker regelmessig, er det kanskje på tide å undersøke. I denne instruksjonsboken kan du følge et oppdrag for å bestemme den faktiske matingshastigheten til en CNC-maskin. Det vil dekke den omvendte konstruksjonsdelen av en skriver, arduino-fastvare, PC-programvare og resultatene jeg fikk ved hjelp av mine kolleger, og søppel ble til skatt.
Trinn 1: Materialer, verktøy, enheter som brukes for å få prosjektet i gang
Da jeg begynte å jobbe med dette, tenkte jeg ut en kort liste over tingene vi trenger:
- demontert skrivervognmekanisme
- håndverktøy for å justere det
- loddejern, loddetinn, ledninger
- multimeter
- oscilloskop eller logisk analysator - dette er ikke absolutt nødvendig
- strømforsyning
- mikroskop
- Arduino nano + pinout
- PC med Arduino IDE, Visual Studio 2008 Express + MS kartverktøy installert
- (MPU6050 - jeg endte opp med å ikke bruke dette)
- villig til å søke etter alt du ikke vet hvordan du gjør
I begynnelsen trodde jeg at et MPU6050-kort vil tillate meg å måle fôrhastigheten på alle tre aksene samtidig. Da jeg hadde akselerometeret inne, var jeg sikker på at oppsummering av akselerometerdata vil gi meg ønsket verdi - hastigheten på hver akse. Etter å ha lastet ned og endret en Arduino -kodebit som viste rådata på den serielle skjermen, skrev jeg et lite PC -program i Visual Studio som behandlet dataene, og plottet det på et diagram for lettere tolkning. Jeg måtte laste ned både Visual Studio C# Express 2008 og kartverktøyene for dette.
Etter å ha kodet en stund og slått opp alle tingene jeg trengte for seriell kommunikasjon, endte jeg opp med verdiene plottet, men uansett hva jeg gjorde, var det ikke brukbart. Små, men plutselige bevegelser ville resultere i store pigger, mens lengre reiser ikke engang ville dukke opp på listene. Etter to dager med hamring av MPU6050 ga jeg til slutt opp og vendte meg til noe annet - en demontert skriverens tilbakemeldingsmekanisme for posisjon.
Trinn 2: Maskinvare som må gjøres
Reverse Engineering
Selvfølgelig hadde skrivermekanismen ikke noe delenummer jeg kunne ha brukt for å bestemme dens eksakte egenskaper. Det var behov for litt omvendt konstruksjon for å komme dit vi ønsket. Etter å ha undersøkt mekanismen og elektronikken nøye, bestemte jeg meg for at det første må være identifiseringen av de optiske sensorpinnene. Dette måtte gjøres for å koble det hele til Arduino. Jeg demonterte den svarte plastdelen, tok ut kretskortet og undersøkte sensoren: den hadde ROHM RPI-2150 skrevet på den. Det gjorde meg glad, håpet var stort at jeg finner et datablad. Dessverre er dette enten en gammel eller tilpasset del - det var ingen datablad å finne noe sted på nettet. Dette betydde at jeg måtte ta saken i egne hender: vel vitende om at disse sensorene vanligvis har en infrarød LED og to fototransistorer inni, tok jeg et multimeter, satte det til diodemåling og begynte å måle mellom pinner.
Kraftpinnene er vanligvis enkle å finne - de vil ha kondensatorer over seg, og de er vanligvis forbundet med brede spor på PCB -ene. Jordspor er ofte koblet til flere pads for bedre støyavvisning.
Inngangs- og utgangspinnene er imidlertid ikke så trivielle. Når du måler over en diode, vil måleren vise fremspenningen i den ene retningen og overbelastning (uendelig) i den andre. Jeg klarte å identifisere fire dioder mellom pinnene, jeg konkluderte med at den fjerde dioden må være en slags zener eller TVS -diode, som den var rett mellom strømpinnene på komponenten. Det var enkelt å finne den infrarøde senderen, det var en 89R -motstand i serie med den. Jeg satt igjen med to diodemålinger på de to gjenværende pinnene, de måtte være de to mottakerne.
Merk: Disse sensorene har to mottakere for å kunne bestemme bevegelsesretningen i tillegg til å bestemme posisjonen ved å telle pulser. Disse to utgangsbølgeformene er 90 ° ute av fase, denne brukes til å produsere en opptelling eller en nedtellingspuls. Ved å følge antallet av disse pulser, kan den eksakte posisjonen til skrivehodet bestemmes.
Da senderen og de to mottakerne ble funnet, loddet jeg ledninger på pinnene deres, slik at jeg kan koble sensoren til Arduino. Før jeg gjorde det, forsynte jeg sensoren med 3,3V, trakk stripen mellom sensoren et par ganger og observerte firkantbølgen på utgangene. Frekvensen til firkantbølgen varierte med bevegelseshastigheten, og jeg konkluderte med at målesystemet nå er klart for å bli koblet til Arduino.
Koble til Arduino
Det er veldig enkelt å koble til denne nye 'sensoren'. Bare koble sensorutgangene til D2 og D3 (pinner som kan bryte!), Og strømforsyningslinjene, og kodingen kan begynne.
Trinn 3: Arduino -koding
Arduino -koden er ganske enkel. Jeg tildelte en funksjon som utføres hver gang D2 ser en stigende kant, dette er funksjonen forløp fra Arduino -koden jeg festet. Hvis du tar en titt på signalene til en kvadratisk encoder, vil du se dette:
- i en retning fase A er logisk høyt på hver fase B stigende kant
- i den andre retningen fase A er logisk lav på hver fase B stigende kant
Dette var egenskapen til koderen jeg tok fordel av: siden funksjonen forløp utføres hver gang D2 har en stigende kant, skrev jeg bare en hvis den øker en teller når D3 er høy, og reduserer den når D3 er lav. Dette fungerte ved første forsøk, jeg sendte tellerverdien ut til den serielle skjermen, og så den øke/minke da jeg flyttet skriverhodet på akselen.
Lang historie kort, fastvaren gjør følgende i loop -funksjonen:
- sjekker den serielle mottaksbufferen for innkommende data
- hvis det er innkommende data, sjekk om det er en 1 eller ikke
- hvis det er en '1', betyr det at PC -programvaren ber om telleverdi
- sende tellerverdien til PC -en via seriell
- start på nytt fra 1.
Med dette er ballen i PC -programvarens bane nå. La oss gå inn på det!
Trinn 4: Visual Studio C# programvare
Hensikten med VS C# -programmet var å flytte beregningsbyrden fra Arduino til PC. Denne programvaren mottar dataene Arduino gir, beregner og viser hastigheten i form av en graf.
Det jeg først gjorde var å google hvordan jeg gjør seriell kommunikasjon i C#. Jeg fant mye god info på MSDN.com sammen med et godt eksempel, så kastet jeg bare ut det jeg ikke trengte - i utgangspunktet alt unntatt lesedelen. Jeg konfigurerte COM-porten og hastigheten for å matche Arduino-hastigheten, så ga det bare et par forsøk og dumpet alt som kom på serieporten i en tekstlinje med flere linjer.
Etter at verdiene ble lest, kunne jeg bare bruke readto & split -funksjonene til å isolere én måling fra hverandre og fra skilletegn. Disse ble plottet på en diagramkontroll, og verdiene begynte å vises på skjermen.
Hvis du ikke kan se diagramkontrollen i VS -verktøykassen, kan du google problemet og finne løsningen her (se etter svar nr. 1): lenke
Måleprinsippet
For å finne sammenhengen mellom antall tellinger og avstanden hodet går, nullførte vi telleverdien, flyttet skriverhodet 100 mm for hånd og observerte endringen i tellinger. Vi kom til slutt opp med følgende proporsjon: 1 count = 0.17094mm.
Siden vi kan spørre om avstanden og vi kan måle tiden mellom prøvene, kan vi beregne hastigheten som posisjonsskiftet skjer med - vi kan beregne hastigheten!
Det er en grov programvaretiming på 50 ms takket være TMR0, men vi observerte at disse tidspunktene ikke var for nøyaktige. Faktisk, etter noen programvarehastighetsmålinger, fant vi ut at tidsbestemt 50ms ikke er 50ms i det hele tatt. Dette betydde at prøvene ikke ble tatt med et fast intervall, så hastighetsberegningen kunne heller ikke bruke en fast tidsbase. Når vi fant dette problemet, var det lett å gå videre: vi tok forskjellen i distanse og tidsforskjell og beregnet hastigheten som D_distance/D_time (i stedet for D-distanse/50ms).
Fordi ligningen vår ville returnere hastigheten i enheter på mm/50 ms, må vi multiplisere dette med 1200 for å få avstanden hodet ville gå på ett minutt, i [mm/minutt].
Merk: Mach 3 CNC-fresekontrollprogramvare definerer matingshastighetene i enheter på [mm/minutt]
Filtrering
Fra dette tidspunktet syntes målingene å være ganske nøyaktige, men det var noe støy på det målte signalet. Vi mistenkte at dette skyldtes mekaniske uoverensstemmelser i akselen, akselkoblingen osv., Så vi bestemte oss for å filtrere den ut for å få en fin gjennomsnittsverdi av det som måles.
Fine justeringer av programvaren
For å endre prøvehastigheten og filterhastigheten under kjøretid ble rullefelt lagt til - en for hver. Evnen til å skjule tomtene ble også introdusert.
Trinn 5: Resultater
Etter at maskinvare- og programvaredelene var klare, kjørte vi tre sett med målinger med mach 3 + my programvare, du kan se resultatene på de vedlagte bildene. Senere eksperimenter viste bedre nøyaktighet, med både filter- og prøvehastigheter økt. Plottene viser målt hastighet med solid rød, og gjennomsnittet med dash-stiplet blå.
Når det er sagt, ser det ut til at Mach 3 håndterer disse hastighetsinnstillingene ganske nøyaktig, men nå vet vi det sikkert:)
Jeg håper du likte denne korte instruksjonen om reverse engineering og å gjøre vann til vin!
Jubel!
Anbefalt:
Jumbo-størrelse teleskopisk lysmaler laget av EMT (elektrisk) ledning: 4 trinn (med bilder)
Jumbo-størrelse teleskopisk lysmaler laget av EMT (elektrisk) ledning: Lysmaling (lysskriving) fotografering utføres ved å ta et langt eksponeringsfoto, holde kameraet i ro og flytte en lyskilde mens kameraets blenderåpning er åpen. Når blenderåpningen stenger, ser det ut til at lysstiene er frosset
Leksetimer laget av Arduino: 5 trinn
Leksetimer laget av Arduino: Skriver barnet ditt leksene sine i timevis? Blir barnet ditt lett distrahert av andre når han/hun gjør leksene sine? I dag prøvde jeg å gjøre den beste løsningen på denne konflikten: en tidtaker laget av Arduino. Hvorfor prøver jeg å lage denne timeren i stedet for
Vannpiano laget med glassburk: 3 trinn
Vannpiano laget med glassburk: Dette er et fantastisk og enkelt prosjekt for alle. Jeg brukte ikke en mikrokontroller eller en IC. Dette vannpianoet bruker små krukker. Dette er virkelig et grunnleggende prosjekt. For å lage dette prosjektet, følg instruksjonene. KRAV- krukker i alle størrelser, minst 4 til maks
Pipboy bygget av skrot: 26 trinn (med bilder)
Pipboy Built From Scrap: Dette er min fungerende Pipboy, bygget fra tilfeldig søppel fra garasjen og et raid av mine elektroniske komponenter. Jeg syntes dette var en utfordrende konstruksjon, og det tok meg flere måneders arbeid, så jeg ville ikke kategorisere dette som et komplett nybegynnerprosjekt. S
Kartonghøyttaler fra skrot !: 5 trinn (med bilder)
Cardboard Speaker From Scrap !: Denne instruksjonsboken er en liten guide til hvordan du lager en solid og sterk bærbar høyttaler som er resirkulert fra gammel papp. Når vi hører ordet papp tenker vi generelt på en pappeske, og etter alles mening er en tavleboks ikke så sterk