Sida 8 av 11
Postat: 4 maj 2008, 14:33:23
av Fagge
Riktigt Snyggt!

Postat: 4 maj 2008, 17:28:21
av hecke
Skall du inte ha något som är planare än ett mynt?
Präglingen på myntet kan ju ge onödig feltolerans.
Postat: 4 maj 2008, 17:43:43
av jojje
Blir det inte olika om man trycker ner myntet i mitten eller på sidorna?
Postat: 4 maj 2008, 19:09:03
av mri
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.
Postat: 4 maj 2008, 19:56:48
av jojje
OK. Teoretiskt blir det väl lite olika beroende vart på myntet det trycks, men i praktiken märks nog ingen skillnad alls.
Ser helfint ut iaf tycker jag.
En fråga: Varför inte göra som dom flesta andra, att känna av elektriskt att det blir en slutning mellan fräsen och "pucken"?
Postat: 4 maj 2008, 20:07:18
av Andax
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.
Postat: 4 maj 2008, 20:47:08
av mri
jojje: Kan du förklara hur du menar? Jag kan inte se att det ens teoretiskt skulle ge olika resultat beroende på var fräsen trycker...
Jag valde det här systemet eftersom jag ville behålla den galvaniska isoleringen.
Postat: 4 maj 2008, 20:59:10
av jojje
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.
Postat: 4 maj 2008, 21:27:17
av mri
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?
Postat: 4 maj 2008, 21:30:34
av Krille Krokodil
Det stämmer att trepunktsystemet har variationer beroende på var beröringen sker men det handlar bara om ett antal 0.0001 mm. Renishaws probar som är byggda på detta sättet har en repeternogrannhet på under 0.001 mm.
Postat: 4 maj 2008, 21:43:13
av jojje
mri, nu missförstår du också. Allt jag skriver är inte att klaga å jävlas med folk.
Vi skiter i det. Jag är lika glad för det.

Postat: 4 maj 2008, 21:45:36
av mri
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.
Postat: 4 maj 2008, 22:43:25
av sm7tjc
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

Postat: 4 maj 2008, 23:31:01
av Andax
De tre kontakterna måste sitta i samma höjd, annars ger det givetvis ett beroende på var man träffar myntet. Men det är ju mer en tillverkningsteknisk detalj än en teoretisk begränsning i metoden.
Postat: 27 maj 2008, 13:25:02
av mri
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.
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);
}
}