Indholdsfortegnelse:

CNC feed-rate måleværktøj fremstillet af skrot: 5 trin
CNC feed-rate måleværktøj fremstillet af skrot: 5 trin

Video: CNC feed-rate måleværktøj fremstillet af skrot: 5 trin

Video: CNC feed-rate måleværktøj fremstillet af skrot: 5 trin
Video: Foxalien Vasto XXL Cnc Router - Ballscrews, Linear Rails Build, Test & Review 2024, Juli
Anonim
CNC feed-rate måleværktøj fremstillet af skrot
CNC feed-rate måleværktøj fremstillet af skrot

Har nogen nogensinde ønsket at måle den faktiske fremføringshastighed på en CNC-maskine? Sandsynligvis ikke, før fræserne er intakte efter et CNC -job … men når de begynder at gå i stykker regelmæssigt, er det måske på tide at undersøge. I denne instruktive kan du følge en mission for at bestemme den faktiske feed-rate for en CNC-maskine. Det vil dække reverse engineering-delen af en printer, arduino-firmware, pc-software og de resultater, jeg fik ved hjælp af mine kolleger, og en skraldespand blev til en skat.

Trin 1: Materialer, værktøjer, enheder, der bruges til at få projektet til at køre

Da jeg begyndte at arbejde med dette, tænkte jeg på en kort liste over de ting, vi skal bruge:

  • demonteret printervognmekanisme
  • håndværktøj til at justere det
  • loddejern, lodde, ledninger
  • multimeter
  • oscilloskop eller logisk analysator - dette er ikke absolut nødvendigt
  • Strømforsyning
  • mikroskop
  • Arduino nano + pinout
  • PC med Arduino IDE, Visual Studio 2008 Express + MS -kortlægningsværktøjer installeret
  • (MPU6050 - jeg endte ikke med at bruge dette)
  • villig til at søge efter alt, hvad du ikke ved, hvordan du gør

I begyndelsen troede jeg, at et MPU6050-kort ville give mig mulighed for at måle feed-rate på alle tre akser på én gang. Da jeg havde accelerometeret inde i det, var jeg sikker på, at opsummering af accelerometerdata vil give mig den ønskede værdi - hastigheden på hver akse. Efter at have downloadet og ændret et Arduino -udsnit, der viste rådata på den serielle skærm, skrev jeg et lille pc -program i Visual Studio, der behandlede dataene og afbildede det på et diagram for lettere fortolkning. Jeg var nødt til at downloade både Visual Studio C# Express 2008 og kortlægningsværktøjerne til dette.

Efter at have kodet et stykke tid og slået op på alle de ting, jeg havde brug for til seriel kommunikation, endte jeg med de planlagte værdier, men uanset hvad jeg gjorde, var det ikke brugbart. Små, men pludselige bevægelser ville resultere i enorme pigge, mens længere rejser ikke engang ville dukke op på diagrammerne. Efter to dage med at have hamret MPU6050, gav jeg endelig op og vendte mig til noget andet - en demonteret printerens positionsfeedback -mekanisme.

Trin 2: Hardware -ting, der skulle gøres

Hardware ting, der skulle gøres
Hardware ting, der skulle gøres
Hardware ting, der skulle gøres
Hardware ting, der skulle gøres
Hardware ting, der skulle gøres
Hardware ting, der skulle gøres
Hardware ting, der skulle gøres
Hardware ting, der skulle gøres

Omvendt teknik

Selvfølgelig havde printermekanismen ikke noget varenummer, jeg kunne have brugt til at bestemme dens nøjagtige egenskaber, der var behov for lidt reverse-engineering for at nå, hvor vi ville. Efter at have undersøgt mekanismen og elektronikken nøje, besluttede jeg, at det første skal være identifikationen af de optiske sensorstifter. Dette skulle gøres for at grænseflade det hele til Arduino. Jeg adskilte den sorte plastdel, ekstraherede printkortet og undersøgte sensoren: den havde ROHM RPI-2150 skrevet på den. Det gjorde mig glad, håbet var stort, at jeg fandt et datablad. Desværre er dette enten en gammel eller en brugerdefineret del - der var intet datablad at finde nogen steder på nettet. Dette betød, at jeg var nødt til at tage sagen i egen hånd: vel vidende at disse sensorer normalt har en infrarød LED og to fototransistorer indeni, greb jeg et multimeter, satte det til diodemålingstilstand og begyndte at måle mellem stifter.

Power pins er normalt lette at finde - de vil have kondensatorer på tværs af dem, og de er normalt forbundet med brede spor på PCB'erne. Jordspor er ofte forbundet med flere puder for bedre støjafvisning.

Indgangs- og udgangsstifterne er dog ikke så trivielle. Ved måling på tværs af en diode viser måleren sin fremspænding i den ene retning og overbelastning (uendelig) i den anden. Jeg var i stand til at identificere fire dioder mellem benene, jeg konkluderede, at den fjerde diode skal være en slags zener eller TVS -diode, da den var lige mellem komponentens strømstifter. Det var let at finde den infrarøde sender, der var en 89R -modstand i serie med den. Jeg stod tilbage med to diodemålinger på de resterende to ben, det skulle være de to modtagere.

Bemærk: Disse sensorer har to modtagere for at kunne bestemme bevægelsesretningen ud over at bestemme positionen ved at tælle pulserne. Disse to outputbølgeformer er 90 ° ude af fase, dette bruges til at producere en optællings- eller en nedtællingspuls. Ved at følge antallet af disse impulser kan printhovedets nøjagtige position bestemmes.

Da senderen og de to modtagere blev fundet, lodde jeg ledninger på deres stifter, så jeg kan interface sensoren med Arduino. Inden jeg gjorde det, forsynede jeg sensoren med 3,3V, trak strimlen mellem sensoren et par gange og observerede firkantbølgen på udgangene. Frekvensen af firkantbølgen varierede med bevægelseshastigheden, og jeg konkluderede, at målesystemet nu er klar til at blive tilsluttet Arduino.

Tilslutning af Arduino

Tilslutning af denne nye 'sensor' er meget let. Tilslut bare sensorudgange til D2 og D3 (afbrydelseskompatible stifter!), Og strømforsyningsledningerne, og kodningen kan begynde.

Trin 3: Arduino -kodning

Arduino kodning
Arduino kodning

Arduino -koden er ganske enkel. Jeg tildelte en funktion, der udføres hver gang D2 ser en stigende kant, dette er funktionen forløb fra Arduino -koden, jeg vedhæftede. Hvis du kigger på signalerne fra en kvadratisk encoder, vil du se dette:

  • i en retning er fase A logisk højt på hver fase B stigende kant
  • i den anden retning er fase A logisk lav for hver fase B stigende kant

Dette var egenskaben for encoderen, jeg udnyttede: da funktionen forløb udføres hver gang D2 har en stigende kant, skrev jeg bare en, hvis det øger en tæller, når D3 er høj, og formindsker den, når D3 er lav. Dette virkede ved første forsøg, jeg sendte tællerværdien ud til den serielle skærm og så den stige/falde, da jeg flyttede printerhovedet på akslen.

Lang historie kort, firmwaren gør følgende i loop -funktionen:

  1. kontrollerer den serielle modtagelsesbuffer for indgående data
  2. hvis der er indgående data, skal du kontrollere, om det er et '1' eller ej
  3. hvis det er en '1', betyder det, at pc -softwaren anmoder om tællerværdien
  4. sende tællerværdien til pc'en via seriel
  5. start forfra ved 1.

Med dette er bolden i pc -softwarens bane nu. Lad os komme ind på det!

Trin 4: Visual Studio C# Software

Formålet med VS C# -programmet var at flytte beregningsbyrden fra Arduino til pc'en. Denne software modtager de data, Arduino leverer, beregner og viser hastigheden i form af en graf.

Det jeg først gjorde var at google hvordan man laver seriel kommunikation i C#. Jeg fandt en masse god info på MSDN.com sammen med et godt eksempel, så smed jeg bare det, jeg ikke havde brug for - stort set alt undtagen læsedelen. Jeg konfigurerede COM-porten og hastigheden, der matchede Arduinoens, og gav den derefter et par forsøg og dumpede alt, hvad der kom på den serielle port, i en tekstlinje med flere linjer.

Efter at værdierne var læst, kunne jeg bare bruge readto & split -funktionerne til at isolere en måling fra hinanden og fra afgrænsningstegn. Disse blev afbildet på en diagramkontrol, og værdierne begyndte at blive vist på skærmen.

Hvis du ikke kan se diagramkontrollen i din VS -værktøjskasse, kan du google problemet og finde løsningen her (se efter svar nr. 1): link

Måleprincippet

For at finde sammenhængen mellem antallet af tællinger og den afstand, hovedet bevæger sig, nulstillede vi tællingsværdien, flyttede printerhovedet 100 mm i hånden og observerede ændringen i tællinger. Vi kom endelig frem til følgende andel: 1 count = 0.17094mm.

Da vi kan forespørge om afstanden, og vi kan måle tiden mellem prøverne, kan vi beregne den hastighed, hvormed positionsskiftet sker - vi kan beregne hastigheden!

Der er en grov softwaretiming på 50 ms takket være TMR0, men vi observerede, at disse tidspunkter ikke var for præcise. Faktisk fandt vi efter nogle softwarehastighedsmålinger, at de tidsbestemte 50 ms slet ikke var 50 ms. Dette betød, at prøverne ikke blev taget med et fast interval, så hastighedsberegningen kunne heller ikke bruge et fast tidsgrundlag. Når vi fandt dette problem, var det let at komme videre: vi tog forskellen i afstand og forskellen i tid og beregnede hastigheden som D_distance/D_time (i stedet for D-distance/50ms).

Fordi vores ligning også ville returnere hastigheden i enheder på mm/50ms, skal vi gange dette med 1200 for at få den afstand, hovedet ville gå på et minut, i [mm/minut].

Bemærk: Mach 3 CNC-møllestyringssoftwaren definerer fremføringshastighederne i enheder på [mm/minut]

Filtrering

Fra dette tidspunkt syntes målingerne at være ret nøjagtige, men der var en vis støj på det målte signal. Vi formodede, at dette skyldtes mekaniske uoverensstemmelser i akslen, akselkoblingen osv., Så besluttede at filtrere det ud for at få en pæn middelværdi af det, der måles.

Fine justeringer af softwaren

For at ændre prøvehastigheden og filterhastigheden under runtime blev der tilføjet rullepaneler - en for hver. Evnen til at skjule parcellerne blev også introduceret.

Trin 5: Resultater

Resultater
Resultater
Resultater
Resultater
Resultater
Resultater
Resultater
Resultater

Efter hardware- og softwaredelene var klar, kørte vi tre sæt målinger med mach 3 + my software, du kan se resultaterne på de vedhæftede billeder. Senere eksperimenter viste bedre nøjagtighed, med både filter- og prøvehastigheder øget. Plotterne viser den målte hastighed med fast rød, og gennemsnittet med bindestreg-blå.

Når det er sagt, ser det ud til at Mach 3 håndterer disse hastighedsindstillinger ganske præcist, men nu ved vi det sikkert:)

Jeg håber, at du nød denne korte instruktion om reverse-engineering og at gøre vand til vin!

Skål!

Anbefalede: