I was wondering if anyone has made some kind of DIY (read cheap) laser alignment system that you can use to align machine ways and tables etc.
I know you can get the expensive commercial ones. Just wondering what is involved in a DIY version.
I was wondering if anyone has made some kind of DIY (read cheap) laser alignment system that you can use to align machine ways and tables etc.
I know you can get the expensive commercial ones. Just wondering what is involved in a DIY version.
My little site on MIG welding http://www.learn-how-to-weld.com/mig-welding/
well, i would be interssted too.
Subscribed
I do quite a bit of laser calibration at work. Are we talking positioning accuracy or straightness? Straightness might be tough, simply because the laser "dot" is fairly large, and would be hard to measure down to a small scale. Laser positioning takes optics, those can get somewhat expensive, and to really get it right, they need a weather station, as well as temperature compensation. I will be watching to see if anyone comes up with an out of the box solution though, would be interesting. The last one I did was +/- .01 micron over the whole travel, so I'm probably dealing with tolerances most DIYers will never see.
I would like to be able to set the lasers 'cross hairs' at the point where I want Zero to be for X and Y. Also, the laser's cross hairs could assist in alligning my stock so my cut will be parallel with the edge of the material.
I have made some test with a quadrant photo-transistor and a 3$ laser with a very stable power supply and a small program with arduino ant it is very encouraging!
Actually my code is very messy and i am ashamed to show it !
Our dro as a precision of 5µ and i manage to light up my system in between 5µ jogging manually(our milling machine is driven directly by our linear encoder and the backlash is exceptionally small)
so one lm311 power supply or equivalent) with a good capacitor just before the laser diode slightly underpowered since we have no need to blind our photo-transistor
One quadrant photo-transistor (recuperation from an encoder used by a small servo motor dunkermotoren of a xerox photocopier)
4 1Kohms (one for each quadrant)
2 leds and 330ohms mimitation resistance
1 arduino
each quadrant goes to analog/digital input (1024 bits ) of the arduino
each led goes to digital ouput
let's take
AB
CD
I have not optimize it at all it was just to check if it could be done answer : it can be done precision better than 2µ
String quadrant[4] ;
String touslesquadrant,xystring ;
int abcd[4];
int Oldmina,Oldmaxa,Oldminb,Oldmaxb,Oldminc,Oldmaxc,Ol dmind,Oldmaxd;
float x,y;
int intrusion;
void setup() {
// initialize the serial communication:
Serial.begin(19200);
Oldmaxa=analogRead(0);//lecture du quadrant A
Oldmina =Oldmaxa; //initialisation des minimax
Oldmaxb=analogRead(1);//lecture du quadrant B
Oldminb =Oldmaxb;
Oldmaxc=analogRead(2);//lecture du quadrant C
Oldminc =Oldmaxc;
Oldmaxd=analogRead(3);//lecture du quadrant D
Oldmind =Oldmaxd;
for (int i=0 ;i<1000;i++){ //determination des variations maximums
int maxa=analogRead(0);
if(maxa < Oldmina){
Oldmina =maxa;}
if(maxa > Oldmaxa){
Oldmaxa =maxa;}
// je doit déterminer si l'utilisation d'une matrice ne serait pas plus économe
int maxb=analogRead(1);
if(maxb < Oldminb){
Oldminb =maxb;}
if(maxb > Oldmaxb){
Oldmaxb =maxb;}
int maxc=analogRead(2);
if(maxc < Oldminc){
Oldminc =maxc;}
if(maxc > Oldmaxc){
Oldmaxc =maxc;}
int maxd=analogRead(3);
if(maxd < Oldmind){
Oldmind =maxd;}
if(maxd > Oldmaxd){
Oldmaxd =maxd;}
//delay(10);
}
String bidon= String(" ");// impression des minimax
bidon= String(" A-=");
bidon=String(bidon+Oldmina+" A+="+Oldmaxa);
touslesquadrant=String(bidon);
Serial.println(touslesquadrant);
bidon= String(" B-=");
bidon=String(bidon+Oldminb+" B+="+Oldmaxb);
touslesquadrant=String(bidon);
Serial.println(touslesquadrant);
bidon= String(" C-=");
bidon=String(bidon+Oldminc+" C+="+Oldmaxc);
touslesquadrant=String(bidon);
Serial.println(touslesquadrant);
bidon= String(" D-=");
bidon=String(bidon+Oldmind+" D+="+Oldmaxd);
touslesquadrant=String(bidon);
Serial.println(touslesquadrant);
touslesquadrant=String("");
}
void loop() {
pinMode(12, OUTPUT); //
pinMode(13, OUTPUT);
// send the value of analog input 0:
for (int i = 0; i < 4; i++){
abcd[i]=analogRead(i);
(touslesquadrant+quadrant[i]);
};
x=(abcd[0]+abcd[1]);
x=x-(abcd[2]+abcd[3]);
x=x/(abcd[0]+abcd[1]+abcd[2]+abcd[3]+.001);// prevenir la division par zero
int xx=int(x*1000);
y=(abcd[1]+abcd[3]);
y=y-(abcd[1]+abcd[2]);
y=y/(abcd[0]+abcd[1]+abcd[2]+abcd[3]+.001);
int yy=int(y*1000);
intrusion=LOW;
digitalWrite(12, LOW) ;
digitalWrite(13, LOW) ;
if (abcd[0]<Oldmaxa){intrusion=1;digitalWrite(13, HIGH); };// debut de l'écriture de la routine de centrage
if (abcd[1]<Oldmaxb){intrusion++;digitalWrite(12, HIGH); };
if (abcd[2]<Oldmaxc){intrusion=4;};
if (abcd[3]<Oldmaxd){intrusion=8;};
xystring=String(' ');//+xx);
xystring=String(xystring+xx+' '+yy+' '+intrusion);
touslesquadrant = String (touslesquadrant+xystring);
Serial.println(touslesquadrant);
touslesquadrant="";
// Serial.println(xx, yy);
// Serial.println(analogRead(A0));
// wait a bit for the analog-to-digital converter
// to stabilize after the last reading:
// delay(50);
}
long range rifle scope with red dot laser site. K-Mart 60 bucks make a an up down left right adjustment block to hold it heck even add a bubble level or two if you want.
i use one for all my barfeeders (32 machines)
I will do it myself it's much more covenient just the time to make the design !
If it interest some one i can go back to this project
actually it work only from side and top
to work on x and y i need another laser (the xy laser in the program is the position of the object in the quadrant photo transistor)
basically when the laser is cut by half a signal the home or another signal will be put down so the precision will be the precision of your encoder and the mistake associate with it (in our case since we drive our table with a linear encoder we have the precision of our encoder 5µ but with perfect repetability since we read the position of the table not the number of turn of the screw)
It work much better than expected but I have a huge problem, the quadrant phototransistor I have cannot be found
Ok I could buy a quadrant photodiode but the price are very high, the cheapest quadrant photodiode I found that make the job is 35€ (without vat and transport)
The size is not critical actually I have 4X1.2mm² and its plenty enough.
The speed is not an issue any diode will be fast enough (photo resistor will not)
I want to offer a system in steel rectified
with air filtration (to avoid parasite dust during measure)
automatic protection by keeping a cap up by air piston
200 mm aperture (so max tools diameter measurement 199mm),
with input enable
output ready
object hit the center of the laser beam
for 500€.
option signal bject penetrate the curtain reduce the speed to measure speed measurement laser beam is (approx) 20 mm ahead (so you can make the calculation for the deceleration and reach the speed of measurement at 2mm of the beam (this save a lot of time)
We will design a retractable system and give it in Gcode and 3D (my eventual customer are supposed to have a real skill and good machine otherwise they have no need for such device).
I am also working on a light curtain that will authorize the maximum speed then when the light curtain hit give a signal to the controller to break and go at very low speed
Any idea for a chip quadrant photodiode (the separation between quadrant should not be more than 25µm the laser is 670nm a psd will not work (photodiode with 4 corner) that could make the job?
also if someone here is very good at writing sophisticate Gcode it will help I have to subtract the separation + the overshot since the repeatability is close to 100% it should be possible to introduce a compensation to obtain a diameter without cheating on the position of the laser beam
Okay I know this thread is kind of ooold but I would like to wake it up again.
Have anyone tried Cmos sensor instead of quad photo transistor?
Kind regards/Stefan