找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13146|回复: 25
收起左侧

使用51单片机的点焊机控制装置设计(程序+原理图)

  [复制链接]
ID:116773 发表于 2018-12-19 12:53 | 显示全部楼层 |阅读模式
    最近做了一个用单片机的点焊机控制装置,使用的是89C51单片机、LCD5110显示屏和微型继电器,通过检测按钮信号,精确控制点焊机变压器的导通时间和两次焊接的间隔时间。变压器导通时间从40毫秒到2600毫秒之间,按20毫秒为一档连续可调,两次焊接的间隔时间则为5秒和10秒两档,这两个参数均通过7+1位拨码开关由用户根据需要动态设置,设置结果即时显示在屏幕上。参见下图:

131753t97glg29z7yljzji.jpg 003电子点焊机.jpg(44 KB, 下载次数: 0)
下载附件
前天 13:17 上传





    屏幕中间显示的是设置的点焊时间,以毫秒为单位,通过左起的7位拨码开关设置。下部左边显示的的是设置的间隔时间,为5秒和10秒两档, 通过最右边的拨码开关设置。屏幕右下角显示的是间隔时间倒计时,只有倒计时为零时,单片机才接收点焊按钮的信号。下图是点焊机的正面:

131605whz43xju4x64rtxd.jpg 115控制板制作_通电测试.jpg(140.45 KB, 下载次数: 0)
下载附件
前天 13:16 上传





    机箱面板上有3个LED指示灯,最上面红色的是电源指示灯,面板上开关打开接通控制电源后常亮。中间橙色的是工作指示灯,点焊机变压器接通后点亮,关闭后即灭。下面绿色的是准备好信号灯,当倒计时为零时此灯闪烁,只有绿色信号灯闪烁时点焊按钮才有效,这个信号灯在焊把上也同时存在。
    下面是控制线路的原理图:

131601obifr7kgxdsi3btf.jpg


    整个控制线路用了两块万用板搭焊,一块安装了3个LED信号灯、LCD5110显示屏和8位拨码开关,另一块则是单片机及外围电路、微型继电器以及7805稳压块等。

单片机源程序如下:
  1. /*******************************************************************************
  2. *                                                                                                                                            *
  3. *                                        点焊机控制器                                                                           *
  4. --------------------------------------------------------------------------------
  5. * 结构说明:    51单片机计时控制                                                                                                   *
  6. *              在检测到点焊手柄发出的工作信号时,                                                           *
  7. *              立即接通点焊机的电源,点焊机开始工作,设定的时间结束后切断电源,*
  8. *              在设定的间隔时间内,不接收点焊手柄发出的工作信号。              *
  9. * 版本说明:    胡家峻@2018年8月                                                                                              *
  10. *******************************************************************************/
  11. /*
  12. * 单片机P0^0~P0^4口分配给LCD5110使用:RET、CE、D/C、DIN、CLK(在LCD_5110.h中定义
  13. *       P0^5     设备等待(可以工作)信号灯
  14. *            P0^6     设备工作间隙(不接收点焊信号)信号灯
  15. *
  16. *            P1^0~P1^6   开关设置点焊时间(20毫秒为1单位,0~127单位)
  17. *            P1^7        工作间隙:0=5秒,1=10秒
  18. *******************************************************************************/

  19. #include<reg51.h>
  20. //#include<intrins.h>
  21. #include"LCD_5110.h"      //包含LCD显示驱动文件

  22. #define u8 unsigned char  //单字节
  23. #define u16 unsigned int  //双字节
  24. #define        u64 unsigned long //四字节

  25. #define        SZP1 P1           //P1口为初始设置的数据,低七位为定时数值(0-127)*20ms,                                                                                                  
  26.                           //第八位为间隙时间,0=5秒,1=10秒
  27. sbit LED_work = P0^5;     //设备工作信号(低电平点焊机接通)
  28. sbit LED_read = P0^6;     //设备就绪信号(低电平可以工作)
  29. sbit work     = P0^7;          //点焊按钮信号(低电平按下)
  30.                                                                                                                         
  31. //--定义全局变量--//
  32. u8  sdsj = 0;             //设定的点焊单位
  33. u64 shsj = 0;             //设定的点焊时间(双字节,以毫秒为单位)
  34. u8 wait = 5;                          //设置的间隔时间(5秒或10秒,根据P1.7确定)
  35.                                                            
  36. u8 time_work = 0;         //焊接时间计时(20毫秒/单位)
  37. u8 time_wait = 0;                  //等待时间计时(单位秒)
  38. bit time_1s = 0;              //秒信号
  39. bit time_20ms = 0;                  //20毫秒信号
  40. bit flag = 0;             //定时工作标志(0=待机或间隔,1=正在工作


  41. /*******************************************************************************
  42. * 函 数 名         : ReadSet
  43. * 函数功能                   : 读设置并显示
  44. * 输    入         : 无                                                                                                                                                
  45. * 输    出         : 无
  46. *******************************************************************************/
  47. void ReadSet(void)
  48. {
  49.         sdsj = SZP1;               //从P1口读入一个字节的数据
  50.         if (sdsj>127) wait = 10;   //最高位1,间隔时间=10秒
  51.         else wait = 5;
  52.         LCD_write_val(27,4,2,wait);//显示设定的间隔时间
  53.          
  54.         sdsj = (sdsj & 0x7f) + 3;  //取低7位定时值再加3(60毫秒)
  55.         shsj = sdsj * 20;                   //20毫秒基本单位
  56.         LCD_write_val(27,2,4,shsj);//显示设定的点焊时间
  57. }


  58. /*******************************************************************************
  59. * 函 数 名         : timehand
  60. * 函数功能                   : 20毫秒处理函数,即每隔20毫秒处理一次
  61. * 输    入         : 无
  62. * 输    出         : 无
  63. *******************************************************************************/
  64. void TimeHand(void)
  65. {
  66.     if (flag == 0)        //待机状态
  67.         {
  68.             if (work == 0)    //收到点焊按钮信号
  69.                 {
  70.                         flag = 1;     //设置工作标志
  71.                         time_work = sdsj;//取设定时间
  72.                         LED_work = 0; //开通工作电源
  73.                         LED_read = 1; //关闭等待信号灯
  74.                 }
  75.                 else                          //无点焊按钮信号
  76.                 {
  77.                         ReadSet();          //检查更新设置
  78.                 }                                                                        
  79.         }
  80.         else                          //工作状态
  81.         {
  82.                 time_work--;
  83.                 if (time_work == 0)//定时时间到
  84.                 {
  85.                         LED_work = 1;  //关闭点焊机电源
  86.                         LED_read = 1;  //取消准备好信号灯
  87.                         flag = 0;            //撤销工作标志
  88.                         time_wait = wait;//恢复间隔时间
  89.                         LCD_write_val(61,4,2,time_wait);//显示剩余间隔时间
  90.                 }
  91.         }
  92. }



  93. /*******************************************************************************
  94. * 函 数 名         :
  95. * 函数功能                   : T0中断服务函数
  96. * 输    入         : 无
  97. * 输    出         : 无
  98. *******************************************************************************/
  99. void InterruptTimer0() interrupt 1
  100. {
  101.         static u8 i = 0;           //毫秒
  102.         static u8 j = 0;           //20毫秒

  103.         TH0 = 0xFC;            //重新加载初值,定时1ms
  104.         TL0 = 0x66;

  105.         i++;
  106.         if (i > 19)                   //20毫秒计时到
  107.         {
  108.             i = 0;
  109.                 time_20ms = 1;           //置20毫秒标志
  110.             j++;
  111.             if (j > 49)        //1秒
  112.                 {
  113.                     j = 0;
  114.                         time_1s = 1;   //置1秒标志
  115.             }
  116.         }
  117. }


  118. /*******************************************************************************
  119. * 函 数 名         : main
  120. * 函数功能                   : 主函数
  121. * 输    入         : 无
  122. * 输    出         : 无
  123. *******************************************************************************/
  124. void main(void)
  125. {
  126. //设置初始屏幕显示
  127.     u8 i, x ,y;
  128.         
  129.         LED_work = 1; //测试
  130.         LED_read = 1;
  131.         LCD_init();                   //初始化5110屏幕

  132.         x = 8;                                   //显示的起始位置
  133.         y = 0;
  134.         for (i = 0; i < 5; i++)//显示“电子点焊机”
  135.         {
  136.                 LCD_write_char(x,y,i);//
  137.                 x = x +        14;        //下一字的显示位置
  138.         }
  139.         x = 0;
  140.         y = 2;
  141.         LCD_write_char(x,y,3); //显示“焊”
  142.         x = 14;
  143.         LCD_write_char(x,y,5); //显示“接”
  144.         x = 59;
  145.         LCD_write_char(x,y,8); //显示“毫”
  146.     x = 72;
  147.         LCD_write_char(x,y,9); //显示“秒”
  148.         x = 0;
  149.         y = 4;
  150.         LCD_write_char(x,y,6); //显示“间”
  151.         x = 14;
  152.         LCD_write_char(x,y,7); //显示“隔”
  153.         x = 44;
  154.         LCD_write_char(x,y,9); //显示“秒”
  155.         x = 76;
  156.         LCD_write_ASCII(x,y,12);//显示“s”

  157.         ReadSet();              //读取设定定时时间并显示
  158.         LCD_write_val(61,4,2,time_wait);//显示剩余间隔时间
  159.         LED_read = 0;           //显示准备好信号灯

  160.         TMOD = 0x01;            //设置T0为模式1
  161. //        TH0 = 0xF8;             //为T0赋初值0xF8CD,定时2ms
  162. //        TL0 = 0xCD;
  163.     TH0 = 0xFC;             //为T0赋初值0xFC67,定时1ms
  164.     TL0 = 0x66;
  165. //        TH0 = 0xFC;
  166. //        TL0 = 0xC3;                    //为T0赋初值0xFA02,定时1ms
  167.         ET0 = 1;                //开T0中断
  168.         TR0 = 1;                //启动定时器0
  169.         EA = 1;                 //开总中断
  170.         
  171.         while(1)
  172.         {
  173.                 if (time_1s == 1)   //每秒处理
  174.                 {
  175.                     time_1s = 0;    //重置秒标志
  176.                         
  177.                         if (time_wait > 0)
  178.                         {
  179.                             time_wait--;
  180.                         if (time_wait == 0)
  181.                             {
  182.                                 LED_read = 0;//显示就绪信号
  183.                             }
  184.                                 LCD_write_val(61,4,2,time_wait);//显示剩余间隔时间
  185.                    }
  186.                         else
  187.                         {
  188.                             if (LED_work == 1)
  189.                                 {
  190.                                     LED_read = ~LED_read;//等待时每秒闪一次
  191.                                 }
  192.                     }
  193.                 }        
  194.                         
  195.                 if (time_20ms == 1)
  196.                 {
  197.                         time_20ms = 0;          //重置20毫秒标志
  198.                         if (time_wait == 0)
  199.                         {
  200.                             TimeHand();   //调用20毫秒处理程序
  201.                         }
  202.                 }
  203.         }
  204. }
复制代码
0.png
所有资料51hei提供下载:
点焊机.rar (708.39 KB, 下载次数: 242)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:49574 发表于 2018-12-29 12:09 | 显示全部楼层
楼主有没有电路板的焊接图啊!pcb工程打不开报错

----------
补充:进History目录可以打开原理图文件了,作者没有画PCB图
回复

使用道具 举报

ID:104477 发表于 2019-1-2 00:19 来自手机 | 显示全部楼层
字模用什么软件
回复

使用道具 举报

ID:462163 发表于 2019-1-5 17:15 | 显示全部楼层
你这个能不能改一下,按键调整放电时间,保存数据到内部EEP.
回复

使用道具 举报

ID:104477 发表于 2019-1-6 03:13 来自手机 | 显示全部楼层
已改成按键调放电时间和间隔时间
回复

使用道具 举报

ID:349565 发表于 2019-1-9 10:44 来自手机 | 显示全部楼层
谢谢你呀.找了好久了
回复

使用道具 举报

ID:349565 发表于 2019-1-9 10:44 来自手机 | 显示全部楼层
readghost 发表于 2018-12-29 12:09
楼主有没有电路板的焊接图啊!pcb工程打不开报错

我下载试试看
回复

使用道具 举报

ID:346161 发表于 2019-1-13 00:37 来自手机 | 显示全部楼层
这么高端,我看有一个纯硬件的
回复

使用道具 举报

ID:428674 发表于 2019-2-6 22:45 | 显示全部楼层
感谢楼主无私奉献,静待楼主推出改进版本
回复

使用道具 举报

ID:104477 发表于 2019-2-7 04:39 来自手机 | 显示全部楼层
表示已经改进,用旋转编码器,从最小20任意到5100ms
回复

使用道具 举报

ID:428674 发表于 2019-2-7 19:29 | 显示全部楼层
hs88 发表于 2019-2-7 04:39
表示已经改进,用旋转编码器,从最小20任意到5100ms

我看楼主发布的是拨码开关的呀
不是旋转编码器的
回复

使用道具 举报

ID:134271 发表于 2019-2-19 09:16 | 显示全部楼层
N秒的间隔时间是不是太长了,焊接效率低哦。一般是毫秒级就够了。
回复

使用道具 举报

ID:104477 发表于 2019-2-20 03:39 来自手机 | 显示全部楼层
xyf_71 发表于 2019-2-7 19:29
我看楼主发布的是拨码开关的呀
不是旋转编码器的

楼主发布的没有改,自己改成旋转编码器的
回复

使用道具 举报

ID:106211 发表于 2019-3-23 12:14 | 显示全部楼层
hs88 发表于 2019-2-20 03:39
楼主发布的没有改,自己改成旋转编码器的

你改好的能来一份吗?我也想弄一个玩玩
回复

使用道具 举报

ID:479579 发表于 2019-5-11 10:29 | 显示全部楼层
功能丰富,但不建议实用继电器,容易拉弧烧坏继电器。
回复

使用道具 举报

ID:535538 发表于 2019-5-12 07:55 来自手机 | 显示全部楼层
谢谢 下载看看
回复

使用道具 举报

ID:535538 发表于 2019-5-12 07:56 来自手机 | 显示全部楼层
我也下载试试
回复

使用道具 举报

ID:601757 发表于 2019-8-24 21:51 | 显示全部楼层
pcb我做回头上传到论坛
回复

使用道具 举报

ID:601757 发表于 2019-8-25 08:37 来自手机 | 显示全部楼层
已上传
回复

使用道具 举报

ID:477512 发表于 2019-10-19 15:51 | 显示全部楼层
这个点焊机是用微波炉中的变压器改的吗?微波炉变压器初级线圈直流电阻是2欧,接到交流电上电流很大,会引起火灾的,点焊时间很短,只能是几毫秒才行。
回复

使用道具 举报

ID:624444 发表于 2019-11-7 14:35 | 显示全部楼层
郝小白 发表于 2019-1-13 00:37
这么高端,我看有一个纯硬件的

能分享不
回复

使用道具 举报

ID:375055 发表于 2019-11-17 22:24 | 显示全部楼层
我也下载试试
回复

使用道具 举报

ID:164939 发表于 2020-3-24 16:46 | 显示全部楼层

谢谢你呀.DOWN下来学习一下!
回复

使用道具 举报

ID:626287 发表于 2020-5-29 18:19 | 显示全部楼层
能驱动MOS板或者晶闸管??
回复

使用道具 举报

ID:748246 发表于 2021-2-17 14:23 | 显示全部楼层
pcb工程打不开报错
回复

使用道具 举报

ID:140733 发表于 2023-11-15 11:21 | 显示全部楼层
感谢楼主,这是电容?变压器?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表