在修电脑的地方买了俩刻录光驱,本来想直接用上面的激光头的,结果一个是坏的,还有一个在测试的时候万用表笔插到20A的孔去了,表是拨到200ma的档位,THEN一上电觉得电流太小了就一直升电压,估计当时脑子抽了,然后它就华丽地牺牲了。。。做的过程中没有拍照,这是成品图
采用的是arduino+grbl,上位机用的Grbl Controller软件,也试过一个位图雕刻软件,用了三块arduino pro mini,本来一个就行的,不过手上没有脉冲+方向的步进电机驱动板所以驱动部分弄得比较复杂,于是就自己用了两块arduino pro mini做了两个二细分步进电机驱动板,可能比较浪费,但重在过程吧,还用了两块L9110S放大IO口电流,L9110S特写
这是代码,用的arduino官网上下的软件就能编译
void stepx(int); //驱动函数
int dir; //记录方向
int steps; //记录脉冲长度,其实没什么用
int xx=1; //记录电机状态
void setup() //设置初始参数
{
int c;
pinMode(A0,INPUT);
pinMode(A1,INPUT);
digitalWrite(A0,LOW);
digitalWrite(A1,LOW);
for(c=2;c<6;c++)
{
pinMode(c,OUTPUT);
}
stepx(1);
}
void loop()
{
dir=analogRead(A0); //读取方向
steps=pulseIn(A1,HIGH,600000000); //等待脉冲信号
if(dir<512) //判断方向
{
if(xx==8)
{
xx=0;
}
xx++;
stepx(xx);
}
else
{
if(xx==1)
{
xx=9;
}
xx--;
stepx(xx);
}
}
void stepx(int x) //这里是电机的八拍工作状态,不懂可自行百度
{
switch(x)
{
case 1:
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
break;
}
case 2:
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
break;
}
case 3:
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
break;
}
case 4:
{
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
break;
}
case 5:
{
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
break;
}
case 6:
{
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
break;
}
case 7:
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
break;
}
case 8:
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
break;
}
}
}
激光是用的MOS管控制的,与上位机通讯用的是USB转串口
效果还挺好,理论精度0.075mm,凭手感没有感觉到回差,就是滑块太弱,是塑料的,电机力矩也比较小。作品图
手机外壳由于专门驱动电机的电池没电了所以没刻完,还有些是用笔画的。淘的激光管参数250mw红光,不要在意参数,虚标没说的。。。。
制作过程中参考了极客工坊的一篇帖子和本论坛的帖子,不知道什么原因自己编译的grbl的hex文件用不了所以在极客工坊下了一个hex文件
200字以内,仅用于支线交流,主线讨论请采用回复功能。