看起来,如果火花熄灭了,就要减小间隙直到短路,然后缓慢拉开一点。这个减小间隙的过程如何防止电极对工件造成冲撞呢?
分享一下前段时间制作的单片机+步进电机控制的电火花打孔机,下面是源程序。电路设计当时不注意保存,现找不到了,但控制思路是利用高速比较器lm319(lm339速度达不到要求)检测火花输出端电压,以判断开路、短路及正常工作状态,将信号反馈给单片机的开路检测端和短路检测端,从而控制步进电机的精确进给。希望能给电火花打孔爱好者一点帮助。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code smg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar c,n,t,m,tt=2,dd=2,fm=10;
uint a,b=24000,r,s,q;
sbit SN=P2^0; /*****电机受控信号**************************************/
sbit JGLSZ=P2^1; /*****加工量设置指示**************************************/
sbit MCSZ=P2^2; /*****脉冲设置指示**************************************/
sbit BJ=P2^3; /************报警蜂鸣*******************************/
sbit GW=P2^6; /*****数码管个位**************************************/
sbit SW=P2^7; /*****数码管十位**************************************/
sbit QR=P3^0; /*****设置确认键**************************************/
sbit YX=P3^4; /*****确认运行键**************************************/
sbit KLJC=P1^0;/*****开路检测位**************************************/
sbit DLJC=P1^1;/*****短路检测位**************************************/
sbit SXW=P1^2; /*****上限位,用于开机自动回原位设置**************************************/
sbit FX=P1^3; /*****方向给定输出端**************************************/
sbit JGL=P1^4; /*****进给脉冲输出端**************************************/
sbit SZ=P1^5; /*****工作进给量设定**************************************/
sbit HHMC=P1^6;/*****电火花脉冲输出端**************************************/
/********************************************************/
/*
/* 延时t毫秒
/* 11.0592MHz时钟,延时约0.13ms
/*
/********************************************************/
void delay(t)
{
uchar k;
while(t--)
{
for(k=0; k<15; k++)
{HHMC=0; }
}
}
/********************************************************/
/*
/* 报警蜂鸣
/*
/********************************************************/
void mfbj()
{
while(fm--)
{
BJ=1;
delay(1);
BJ=0;
delay(1);
}
}
/********************************************************/
/*
/* 延时t毫秒
/* 11.0592MHz时钟,延时约0.008ms
/*
/********************************************************/
void delay2(m)
{
uchar j;
while(m--)
{
for(j=0; j<1; j++)
{;}
}
}
/********************************************************/
/*
/*
/* 数码管显示
/*
/********************************************************/
void disp(n)
{
HHMC=0;
while(n--)
{
SW=1;
P0=smg[a/10];
delay(5);
SW=0;
GW=1;
P0=smg[a%10];
delay(5);
GW=0;
}
}
/********************************************************/
/*
/*
/* 加工量设置程序
/*
/********************************************************/
void shezh()
{
JGLSZ=1;/**********加工量设置指示灯开*******************/
HHMC=0; /***********设置时高压脉冲关闭******************************/
SN=0;
while(1)
{ if (YX==0)
break;
{ if(SZ==0)
delay(500);
if(SZ==0)a++;
if(SZ==0)mfbj();
if(a==61)
a=0;
if(QR==0)b=a*400;
if(QR==0)q=b;/**********工作短路回退的过程中防止回退过度*******************/
if(QR==0)mfbj();
disp(1);
}
}
mfbj();
JGLSZ=0; /**********加工量设置指示灯关*******************/
}
/********************************************************/
/*
/*
/* 脉冲百分比设置程序
/*
/********************************************************/
void shezh1()
{
a=0;
MCSZ=1; /*************脉冲设置指示灯开*********************/
HHMC=0;
SN=0;
while(1)
{ if (YX==0)
break;
{ if(SZ==0)
delay(500);
if(SZ==0)a++;
if(SZ==0)mfbj();
if(a==11)
a=0;
if(QR==0)mfbj();
{
if (a==1){tt=1;dd=5;} /*************频率4.93kh,占空比26%*********************/
else if(a==2){tt=1;dd=4;} /*************频率5.65kh,占空比30%*********************/
else if(a==3){tt=1;dd=3;} /*************频率6.63kh,占空比35%*********************/
else if(a==4){tt=1;dd=2;} /*************频率8kh,占空比43%*********************/
else if(a==5){tt=2;dd=3;} /*************频率5.65kh,占空比48%*********************/
else if(a==6){tt=2;dd=2;} /*************频率6.63kh,占空比53%*********************/
else if(a==7){tt=3;dd=2;} /*************频率4.93kh,占空比60%*********************/
else if(a==8){tt=2;dd=1;} /*************频率8kh,占空比63.5%*********************/
else if(a==9){tt=3;dd=1;} /*************频率6.63kh,占空比70%*********************/
else if(a==10){tt=4;dd=1;} /*************频率5.65kh,占空比75%*********************/
}
disp(1);
}
}
mfbj();
MCSZ=0;/*************脉冲设置指示灯关*********************/
}
/********************************************************/
/*
/*
/* 对刀置零
/*
/********************************************************/
void ddzl()
{
SN=1;
while(1)
{
if(DLJC==0||b==0)break; /******如果短路检测等于0或达到行程极限则停止*****/
if(b==0)
FX=0;
JGL=0;
delay2(1);
JGL=1;
delay2(1);
--b;
a=b/400;
HHMC=1; /*************高压测试脉冲开*********************/
}
HHMC=0; /*************高压测试脉冲关*********************/
a=0;
disp(1);
mfbj();
delay(1000) ; /*************对刀结束3声报警********************/
mfbj();
delay(1000) ;
mfbj();
delay(1000) ;
}
/********************************************************/
/*
/*
/* 复位回零
/*
/********************************************************/
void fwhl()
{
SN=1;
HHMC=0;
while(1) /*有条件不确定循环,使电机反转,上限位开关(SXW)接通则退出*/
{
if(SXW==0)break;
FX=1;
JGL=0;
delay2(1);
JGL=1;
delay2(1);
a=b/400;
}
delay(1000); /*************复位结束2声报警********************/
mfbj();
delay(1000) ;
mfbj();
}
/********************************************************/
/*
/*
/* 循环进给 ,每加工1mm,快速回退1次
/*
/********************************************************/
void yhjg()
{
SN=1;
HHMC=0;
while(1)
{
if(r==s+1200||SXW==0)break;/***快速回退量等于加工量另加3mm(400个脉冲1mm)************/
HHMC=0;
FX=1;
JGL=0;
delay2(1);
JGL=1;
delay2(1);
r++;
}
disp(1) ;
while(r--) /***快速进给量等于回退量************/
{
HHMC=0;
FX=0;
JGL=0;
delay2(1);
JGL=1;
delay2(1);
}
}
/********************************************************/
/*
/*
/* 正常工作
/* KLJC开路时为1,正常工作时为0;50v左右翻转,DLJC正常工作时为1,短路时为0,
/*翻转电压为30v左右。
/*要另加比较器探测。
/********************************************************/
void gongz()
{
while(1)
{
if(b==0||SXW==0||b==q)break;/******达到行程极限或上限位或短路回退到极限时则停止*****/
HHMC=1;
SN=1;
if(KLJC==1&&DLJC==1) /***开路检测开路和短路检测正常时单步进给*****/
{
HHMC=0;
FX=0;
JGL=0;
delay2(1);
JGL=1;
delay2(1);
--b;
++s; /******回退量,回退进给中使用*************/
if(s%400==0)
{HHMC=0;
yhjg();}
}
else if(KLJC==0&&DLJC==1) /***开路检测正常和短路检测正常时电机停止,给火花脉冲*****/
{
while(1)
{
if(KLJC==1||DLJC==0)break;
HHMC=1;
delay2(tt); /***变量tt和dd为脉冲宽度设置而设*****/
HHMC=0;
delay2(dd);
HHMC=~HHMC;
}
}
else if(DLJC==0) /***短路检测短路时单步回退*****/
{
FX=1;
JGL=0;
delay2(1);
JGL=1;
delay2(1);
++b;
--s; /***变量s为循环进给而设*****/
}
a=s/400;
disp(1);
}
}
/********************************************************/
/*
/*
/* 主程序入口
/*
/********************************************************/
void main()
{
P2=0; /**************输出口置0******************/
mfbj();mfbj();mfbj();mfbj();mfbj();
HHMC=0;
fwhl(); /**********上电自动回退到最上限**************************/
SN=0;
while(1)
{
if(SZ==0) break;
disp(1); /**********启用显示器*****************************/
}
ddzl(); /***********用设置键调用对刀程序***********************************/
SN=0;
shezh(); /**********设置加工深度***************************/
delay(1500);
shezh1(); /**********设置脉冲占空比**********************************/
while(b--)
{
gongz();
} /*********正常加工状态**********************************/
}
[修改于 5年8个月前 - 2019/03/30 00:24:05]
看起来,如果火花熄灭了,就要减小间隙直到短路,然后缓慢拉开一点。这个减小间隙的过程如何防止电极对工件...
起弧是不是能借鉴一下氩弧焊机的起弧方式,话说原理我不是很懂
电极用钍钨合金针,间隙调整到引弧范围内再打开开关
不需要减至短路状态就可正常放电了,实际上检测装置检测的是3个状态:开路状态(满电压80v左右,向工件进给);正常放电状态(30-80v之间,进给停止,正常放电);短路状态(30v以下,回退)。只是火花放电太复杂,无法避免短路出现。至于你说的对工件冲击那是不用当心的,因为进给电机还不到短路时就停止进给了。
引用zhushiqing发表于3楼的内容不需要减至短路状态就可正常放电了,实际上检测装置检测的是3个状态:开路状态(满电压80v左右,向工件...
谢谢指教。
发贴时忘了传火花打孔的相关效果图片了,现在传上
本机因是高频火花机,不用rc振荡,所以电容不是关键,图上用的电容是5uf的电磁炉电容。
刚开始确有找工厂代工成品的想法,但我们这找加工厂商不好找,也就搁置了,就当自己的一兴趣制作算了
楼主的电火花打火效果比我的好很多,想看看功率输出部分是怎么做的。
楼主用的是普通的自来水吗?
之前我也试过火花打孔,但是如果用自来水的话,貌似是因为自来水电导率太高,只有电解的气泡,没有火花……后来换了瓶装的娃哈哈纯净水才能正常打火……然后水的成本太高以至于根本不敢考虑给大件打孔
楼主是咋解决这个问题的?
本火花机用的是自来水,至于要用纯净水才能工作的说法,是因为你的短路电压值设定过高,本机中用的功率部分供电电压是72v3a充电器(空载电压85v左右),我的短路检测电压设置在30v左右。正常火花放电电压区间在30v至70v之间,关键是70v这一电压值的设定决定了火花间隙,如果设定过高,如84v,电极刚靠近,电压就因电解降至84以下而停止进给,而这时停止进给,输出火花脉冲,因间隙还比较大,就会出现电解冒泡就停止进给而无火花的情况。
功率部份其实很简单,就是单片机输出的脉冲信号通过图腾柱直接驱动一只大功率mos(我用的是47n60c3),大致原理力如下:
电极进给的速度是固定的,还是可调的,如是固定的,速度取多少较好?
电极进给速度随机的,只要检测到开路就进给一步,每步理论值是0.02mm。
建议楼主把套件打包列清单,出教程,让我们这些没技术的人也可以做一个,然后每个使用教程的同志捐助你一定金额
楼主,你发的功率驱动部分电路图太小了,看不清楚,麻烦可以发个大点的吗?
看着火花不错 也想做一台玩玩 楼主能不能发份原件
楼主
我看论坛有那种简单的电容电阻的 能给科普下么
加工的尺寸跟什么有关系呢? 如果开20孔 用20的空心铜管是否可以?
电容的大小跟火花的频率有关系么?
电阻我看有人用灯泡代替的,是否只要功率足够的灯泡就可以替代电阻?
引用zhushiqing发表于30楼的内容加工形状及尺寸决定于工具电极的形状与大小。
楼主,这个间隙电压的检测电路能参考下吗?我自己测试了很多电路都不行
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。