
mri's CNC fräs
Tack för de vänliga orden!
hecke: Jo, ytan skall vara plan. Om jag slipar myntet eller tillverkar en rund plåt istället vet jag inte riktigt än. Myntet måste hursomhelst isoleras från den yta som själva fräsen kommer att röra vid. I CNC kontrollern är signaljord separerad från chassit.
jojje: Nej, så länge myntet är plant och ligger plant mot kontakterna förståss. Eftersom myntet stöder mot tre punkter spelar det ingen roll om det bryter bara en kontakt, två kontakter eller alla tre samtidigt.
hecke: Jo, ytan skall vara plan. Om jag slipar myntet eller tillverkar en rund plåt istället vet jag inte riktigt än. Myntet måste hursomhelst isoleras från den yta som själva fräsen kommer att röra vid. I CNC kontrollern är signaljord separerad från chassit.
jojje: Nej, så länge myntet är plant och ligger plant mot kontakterna förståss. Eftersom myntet stöder mot tre punkter spelar det ingen roll om det bryter bara en kontakt, två kontakter eller alla tre samtidigt.
Snyggt Mri! Kommer själv bygga något liknande med 3-punktsprincipen och en liten mikrokontroller eftersom den ger mycket flexibilitet. Annars är väl denna den enklaste formen av zero-setter som jag sett... Tycker dock att det är lite läskigt eftersom den inte ger med sig något om nu skulle vara kabelbrott eller annat som gör att det inte ger någon indikation.
Andax: Då gör du en sån här eller använder mri's ide, men slutande när fräsen kommer åt myntet. Då har du lika mycket säkerhetsfjädring.
mri: Tänk dig hur en gunga är konstruerad. Desto längre ifrån mitten, desto längre blir avståndet i Z. Det är inte mycket, och som jag skrev, så märks det inte i praktiken, men finns teoretiskt. Om brytningen blir vid omedelbar vidrörning av myntet, då stämmer det, men blir det det?
Galvanisk isolering köper jag gärna.
mri: Tänk dig hur en gunga är konstruerad. Desto längre ifrån mitten, desto längre blir avståndet i Z. Det är inte mycket, och som jag skrev, så märks det inte i praktiken, men finns teoretiskt. Om brytningen blir vid omedelbar vidrörning av myntet, då stämmer det, men blir det det?
Galvanisk isolering köper jag gärna.
Med "gunga" menar du gungbräda, dvs en planka, en bock i mitten och två ungar på var ända av plankan? Åtminstone den analogin får jag inte att passa in på myntet som vilar på tre punkter vid myntets ytterkanter. Den enda "gung" effekt jag kan se är om metallen i själva myntet böjer sig, vilket ju nästan även teoretiskt är ointressant. Eller var det just myntets elasticitet du menade?
- Krille Krokodil
- Inlägg: 4062
- Blev medlem: 9 december 2005, 22:33:11
- Ort: Helsingborg
Lugn jojje, jag är inte sur, jag vill verkligen fatta hur du menar.
Jag tror jag fattar vad du menar nu. Om myntet inte vore elastiskt, och oändligt hårt, och samma sak med de tre kontakterna skulle det inte skilja något. Men eftersom myntet är mjukt, dvs fräsen kommer att köra in en bit i det, olika mycket beroende på var fjäderns motkraft ligger, samt att myntet böjer sig något kommer det att skilja lite.
Alltså, teoretiskt skulle det fungera perfekt (såvida man inte börja räkna på elektroner/hål som hoppar vid olika avstånd mellan atomerna på kontaktpunkterna). I praktiken kommer det att variera lite.

Jag tror jag fattar vad du menar nu. Om myntet inte vore elastiskt, och oändligt hårt, och samma sak med de tre kontakterna skulle det inte skilja något. Men eftersom myntet är mjukt, dvs fräsen kommer att köra in en bit i det, olika mycket beroende på var fjäderns motkraft ligger, samt att myntet böjer sig något kommer det att skilja lite.
Alltså, teoretiskt skulle det fungera perfekt (såvida man inte börja räkna på elektroner/hål som hoppar vid olika avstånd mellan atomerna på kontaktpunkterna). I praktiken kommer det att variera lite.
Hmmm..... förutsättningen för optimal funktion måste ju vara att kontaktblecken inte fjädrar någonting alls. Skulle dom fjädra så blir ju indikationen beroende av var på plattan man träffar (gungbrädan).
Men det är ju klart att det räcker ganska bra med en noggrannhet på någon tusendel. Man skall inte vara för petig
Men det är ju klart att det räcker ganska bra med en noggrannhet på någon tusendel. Man skall inte vara för petig

Så var sensorn klar. På kuppen lyckades jag röka en PIC10F222 när jag skulle göra en liten justering i programmet, så det blev att tillverka ett nytt kretskort. (Förväntade mig inte att texten på kapseln skulle vara upp-och-ner jämfört med databladets "Pin Diagram", och därför hade jag satt Vpp till fel pinne... Alltid lär man sig nått.)
Fräste en bricka i aluminium som kontaktmaterial, och en puck av plexi som isolering:

Och det röda skenet infann sig:

Sensorn är mycket känslig, detta pga att fjädern är ganska mjuk.
Och här är den extremt
avancerade programmvaran. Programmerade i C av två orsaker: a) jag slapp ett antal timmars studerande av PIC assembler, och b) jag ville vara lite rebellisk mot diverse assembler-evangelister som anser att asm är förstahandsval för PIC.
Vid power-on gör programmet en självtest av de tre kontakterna. Om någon av kontakterna inte kontaktar, t.ex. pga oxidation, så börjar lysdioden i sensorn blinka.
Fräste en bricka i aluminium som kontaktmaterial, och en puck av plexi som isolering:

Och det röda skenet infann sig:


Sensorn är mycket känslig, detta pga att fjädern är ganska mjuk.
Och här är den extremt


Vid power-on gör programmet en självtest av de tre kontakterna. Om någon av kontakterna inte kontaktar, t.ex. pga oxidation, så börjar lysdioden i sensorn blinka.
Kod: Markera allt
//
// CNC Tool-Sensor-1 firmware v1.0 for PIC10F222
//
// Copyright (c) Mats Byggmästar Consulting Ab 2008
//
// Programming the chip with XWisp & Wisp648 from http://www.voti.nl:
// c:\>xwisp target 10f222 go ToolSensor.hex
//
// References:
// [1] MICROCHIP PIC10F220/222 Data Sheet (DS41270E)
// [2] MICROCHIP PIC10F220/222 Memory Programming Specification (DS41266C)
//
#include <pic.h>
#include "delay.h"
// Configuration word (See [2] 4.0 CONFIGURATION WORD)
// Disable MCLR pin function, we need it as digital input GP3
// Disable MCLR pull-up
__CONFIG(OSC_4MHZ & MCPUDIS & WDTDIS & UNPROTECT & MCLRDIS);
void main()
{
// Setup options (See [1] 4.5 OPTION Register)
// Defaults are okay: Weak pull-ups on GP0,GP1,GP3. T0CKI pin disabled
OPTION = 0;
// Oscillator calibration (See [1] 4.6 OSCCAL Register)
// Frequency not critical: set center frequency
OSCCAL = 0;
// Make GP0,GP1,GP2 digital I/O (See [1] TABLE 5-2)
FOSC4 = 0; // Disable FOSC4 on GP2
ANS0 = 0; // Disable A/D on GP0
ANS1 = 0; // Disable A/D on GP1
// Select directions for GP0,GP1,GP2,GP3 (See [1] 5.2 TRIS Registers)
// GP2 have no internal pull-up, so use it as output. GP3 is hardwired as input
// GP2=0(output), GP0,GP1,GP3=1(input)
TRISGPIO = 0b00001011;
// Set output low
GP2 = 0;
// Wait for things to settle before doing self-test
DelayMs(250);
// Self-test: Check that GP0, GP1 and GP3 are all low, i.e. that they
// all make contact with the sensor plate
if ((GPIO & 0b00001011) != 0)
{
// Error in at least one contact (oxidation?), tool sensor is not safe to use
// --> flash output (LED) forever
for (;;)
{
GP2 = 1;
DelayMs(250);
GP2 = 0;
DelayMs(250);
}
}
// Selftest was okay, run mainloop:
for (;;)
{
// Loop while tool NOT pusing down sensor plate
while ((GPIO & 0b00001011) == 0)
{
// Busy wait
}
// Tool pushed down sensor plate, set output high for 250 ms
GP2 = 1;
DelayMs(250);
GP2 = 0;
// Loop while tool is still pushing down sensor plate
while ((GPIO & 0b00001011) != 0)
{
// Busy wait
}
// Tool retracted from sensor plate, wait for contact bounce to settle
DelayMs(250);
}
}