基于单片机控制的电火花打孔机
zhushiqing2019/03/19极客DIY IP:云南

分享一下前段时间制作的单片机+步进电机控制的电火花打孔机,下面是源程序。电路设计当时不注意保存,现找不到了,但控制思路是利用高速比较器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();
} /*********正常加工状态**********************************/

微信图片_20190319093520.jpg

 

微信图片_20190319093541.jpg

 

微信图片_20190319093547.jpg

 

微信图片_20190319093552.jpg


  20170503_111723.mp4 点击下载  
  73d961552e22a3f74fa407c6cb0f20fb.mp4 点击下载  

[修改于 5年1个月前 - 2019/03/30 00:24:05]

来自:综合交流区 / 极客DIY
32
 
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
虎哥
5年1个月前 IP:四川
855936

看起来,如果火花熄灭了,就要减小间隙直到短路,然后缓慢拉开一点。这个减小间隙的过程如何防止电极对工件造成冲撞呢?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽
5年1个月前 修改于 5年1个月前 IP:山西
855960
引用虎哥发表于1楼的内容
看起来,如果火花熄灭了,就要减小间隙直到短路,然后缓慢拉开一点。这个减小间隙的过程如何防止电极对工件...

起弧是不是能借鉴一下氩弧焊机的起弧方式,话说原理我不是很懂

电极用钍钨合金针,间隙调整到引弧范围内再打开开关

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
5年1个月前 IP:云南
855962

不需要减至短路状态就可正常放电了,实际上检测装置检测的是3个状态:开路状态(满电压80v左右,向工件进给);正常放电状态(30-80v之间,进给停止,正常放电);短路状态(30v以下,回退)。只是火花放电太复杂,无法避免短路出现。至于你说的对工件冲击那是不用当心的,因为进给电机还不到短路时就停止进给了。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
虎哥
5年1个月前 IP:四川
855999
引用zhushiqing发表于3楼的内容
不需要减至短路状态就可正常放电了,实际上检测装置检测的是3个状态:开路状态(满电压80v左右,向工件...

谢谢指教。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
5年1个月前 修改于 5年1个月前 IP:云南
856005


73d961552e22a3f74fa407c6cb0f20fb.mp4 点击下载  

  20170503_111723.mp4 点击下载  

微信图片_20190319093552.jpg

 

微信图片_20190319093547.jpg

 

微信图片_20190319093541.jpg

 

微信图片_20190319093520.jpg

 

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
5年1个月前 IP:云南
856006

发贴时忘了传火花打孔的相关效果图片了,现在传上😀

+1
科创币
暮光之羽
2019-03-21
赞扬
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
3DA502
5年1个月前 IP:北京
856073

老板   拍一下电容   

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wuxicili
5年1个月前 IP:江苏
856154

做完善点出套件。

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
5年1个月前 IP:云南
856217

本机因是高频火花机,不用rc振荡,所以电容不是关键,图上用的电容是5uf的电磁炉电容。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
5年1个月前 IP:云南
856218

刚开始确有找工厂代工成品的想法,但我们这找加工厂商不好找,也就搁置了,就当自己的一兴趣制作算了

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ehco
5年1个月前 IP:贵州
856440

相当牛叉 给刀具开V靠谱 俺也做一个耍耍

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
slof
5年1个月前 IP:山东
856463

楼主的电火花打火效果比我的好很多,想看看功率输出部分是怎么做的。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
三水合番
5年1个月前 IP:四川
856473

楼主用的是普通的自来水吗?

之前我也试过火花打孔,但是如果用自来水的话,貌似是因为自来水电导率太高,只有电解的气泡,没有火花……后来换了瓶装的娃哈哈纯净水才能正常打火……然后水的成本太高以至于根本不敢考虑给大件打孔😥

楼主是咋解决这个问题的?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
314152
5年1个月前 IP:广东
856502
引用三水合番发表于13楼的内容
楼主用的是普通的自来水吗?之前我也试过火花打孔,但是如果用自来水的话,貌似是因为自来水电导率太高,只...

那就氪金大法,氪个RO鸡搞水😂顺面饮用水的问题也一并解决了😁

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
5年1个月前 IP:云南
856987

本火花机用的是自来水,至于要用纯净水才能工作的说法,是因为你的短路电压值设定过高,本机中用的功率部分供电电压是72v3a充电器(空载电压85v左右),我的短路检测电压设置在30v左右。正常火花放电电压区间在30v至70v之间,关键是70v这一电压值的设定决定了火花间隙,如果设定过高,如84v,电极刚靠近,电压就因电解降至84以下而停止进给,而这时停止进给,输出火花脉冲,因间隙还比较大,就会出现电解冒泡就停止进给而无火花的情况。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
5年1个月前 IP:云南
856989

功率部份其实很简单,就是单片机输出的脉冲信号通过图腾柱直接驱动一只大功率mos(我用的是47n60c3),大致原理力如下:

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
XZGSW1
5年0个月前 IP:江苏
857776

电极进给的速度是固定的,还是可调的,如是固定的,速度取多少较好?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
5年0个月前 IP:云南
857966

电极进给速度随机的,只要检测到开路就进给一步,每步理论值是0.02mm。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
987518529
5年0个月前 IP:江苏
857967

建议楼主把套件打包列清单,出教程,让我们这些没技术的人也可以做一个,然后每个使用教程的同志捐助你一定金额

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jyh138
5年0个月前 IP:江西
858450

元件太多了头疼


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
白纸扇001
4年11个月前 IP:江西
859527

楼主,你发的功率驱动部分电路图太小了,看不清楚,麻烦可以发个大点的吗?😂

引用
评论
3
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
月光曲
4年11个月前 IP:河南
859592

我也想做一个

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
黑开水
4年10个月前 IP:浙江
860226

大神,有没有套件或者详细的原件列表或者教程?

引用
评论
2
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
linrongcheng
4年10个月前 IP:广西
860681

看着火花不错  也想做一台玩玩  楼主能不能发份原件  

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
花小开
4年9个月前 IP:广东
861553

楼主,能给张功率板的正面照片吗?   谢谢!

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
mcubest
4年0个月前 IP:福建
878446

做的非常好,丝杆要怎么选择?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
梦想网络
4年0个月前 修改于 4年0个月前 IP:河北
878999

楼主

我看论坛有那种简单的电容电阻的 能给科普下么

加工的尺寸跟什么有关系呢? 如果开20孔 用20的空心铜管是否可以?

电容的大小跟火花的频率有关系么?

电阻我看有人用灯泡代替的,是否只要功率足够的灯泡就可以替代电阻?


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
2年11个月前 IP:云南
893534
引用mcubest发表于27楼的内容
做的非常好,丝杆要怎么选择?

丝杆没有要求,我用的是8mm导程的丝杆。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zhushiqing作者
2年11个月前 IP:云南
893535
引用梦想网络发表于28楼的内容
楼主我看论坛有那种简单的电容电阻的 能给科普下么加工的尺寸跟什么有关系呢? 如果开20孔 用20的空...

加工形状及尺寸决定于工具电极的形状与大小。

引用
评论(1)
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
白纸扇001
2年11个月前 IP:陕西
893541
引用zhushiqing发表于30楼的内容
加工形状及尺寸决定于工具电极的形状与大小。

楼主,这个间隙电压的检测电路能参考下吗?我自己测试了很多电路都不行🙏

引用
评论(1)
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
梦想网络
2年9个月前 IP:河北
895010

那怎么提高放电频率? 我有看到一个搬运油管的视频 放电的频率很高 肉眼可见的火花一直

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
zhushiqing
机友 笔友
文章
2
回复
16
学术分
0
2011/06/12注册,1天21时前活动

本人祝世清,人民教师,酷爱电子制作,近期热忠于微电脑电火花打孔及电磁枪的探究与制作,望各位高手多指教!

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}