找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17858|回复: 42
收起左侧

利用15w401单片机制作双脉冲点焊机 附源程序

  [复制链接]
ID:663734 发表于 2019-12-22 18:31 | 显示全部楼层 |阅读模式
    本人是单片机小白,来学习的新人,还望大家多多照顾噢
  前段时间去大姐夫家玩,发现大姐夫有很多lsuc这种超级电容,非常适合做储能式点焊机,而且现在点焊18650等电池也越来越多,于是便亲自操刀做一个玩玩!
   设计三层电路板,模块化设计,最底层是固定超级电容的均衡电路板,中间层是mos管矩阵电路板,最上边是单片机控制电路板
下图是用TL431做的均衡充电板,LSUC超级电容耐压2.8v容量3000F,均衡起控电压2.78v 均衡电流800mA webwxgetmsgimg (12).jpg 热转印pc为了降低内阻特意买了铜排进行关键部位连均衡和mos矩阵板放在一起试一下 webwxgetmsgimg (7).jpg 打孔加工 webwxgetmsgimg (4).jpg 安装上一个,感觉很漂亮啊 webwxgetmsgimg (3).jpg 装好的mos管矩阵电路板 webwxgetmsgimg (6).jpg 组装在一起看下效果,感觉还是很漂亮的 webwxgetmsgimg.jpg webwxgetmsgimg (1).jpg 接下来进入正题,进行时间控制板的程序设计和pcb设计

单片机源程序如下:
#include "reg51.h"       //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;//对数据类型进行声明定义
typedef unsigned char u8;//对数据类型进行声明定义
sbit P30=P1^0;                        //数码管第1位
sbit P31=P1^1;                        //数码管第2位
sbit k1=P1^6;        //将单片机的P3.2端口定义为时间加
sbit k2=P1^5;        //将单片机的P3.3端口定义为时间减
sbit k3=P1^7;        //将单片机的P3.4端口定义为检测点焊笔


sbit out=P1^4;       //驱动脉冲输出
//数码管真值表//
u8 code LED_CODE[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //显示0~F的段码


u16 Cntms1=0,Cntms2=0,num1,num2;ke;


u8 num;                //定时变量=毫秒


void Delay(unsigned long int t)
{
        while(--t);
         
}


/*===加按键检测===*/
/*当此函数检测到有效按键时返回1,没有检测到有效值时返回0*/
bit skey0(void)
{
        static unsigned char a = 0;
        if(k1 == 0)                                        //如果检测到按键引脚有低电平,记数变量开始累加.
        {
                if(a < 50)                                //控制延时计数返0,因为当按键不松开时,j一直在累加
                        a++;                                //CPU每检测到一次按键引脚为低电平0,j就累加1次.
        }
        else                                                //如果按键没有按下或者按下后有高电平(抖动)j清0
                a = 0;
        
        if(a == 49)                                //如果变量j的值累加到49,说明按键已跨过抖动区.
                return 1;                                //返回1,说明已检测到按键有效值.
        else
                return 0;                                //返回0,说明没有检测到有效值.
}
/*===减按键检测===*/
/*当此函数检测到有效按键时返回1,没有检测到有效值时返回0*/
bit skey1(void)
{
        static unsigned char i = 0;        //定义静态变量,用来记录延时用.
        if(k2 == 0)                                        //如果检测到按键引脚有低电平,记数变量开始累加.
        {
                if(i < 50)                                //控制延时计数返0,因为当按键不松开时,i一直在累加.
                        i++;                                //CPU每检测到一次按键引脚为低电平0,i就累加1次.
        }
        else                                                //如果按键没有按下或者按下后有高电平(抖动)i清0
                i = 0;
        
        if(i == 49)                                //如果变量i的值累加到49,说明按键已跨过抖动区
                return 1;                                //返回1,说明已检测到按键有效值.
        else
                return 0;                                //返回0,说明没有检测到有效值.
}


bit skey2(void)
{
        static unsigned  int l = 0;        //定义静态变量,用来记录延时用.                   unsigned long int
        if(k3 == 0)                                //如果检测到按键引脚有低电平,记数变量开始累加.
        {
                if(l <5000)                                //控制延时计数返0,因为当按键不松开时,i一直在累加
                        l++;                                //CPU每检测到一次按键引脚为低电平0,i就累加1次.
        }
        else                                                //如果按键没有按下或者按下后有高电平(抖动)i清0
                l = 0;
        
        if(l == 4999)                                //如果变量i的值累加到4999,说明点焊笔已经做好准备,可以焊接了.
                return 1;                                //返回1,说明已检测到按键有效值.
        else
                return 0;                                //返回0,说明没有检测到有效值.
}




/********************************
                数码管动态显示程序
********************************/
void display()
{
        static u8 i=0;
      
                  
         
        if(i==0)
        {
                P30=1;
                P31=0;
                P3=LED_CODE[num/10];
                                for(ke = 0;ke <100;ke++);        //延时一段时间
                            P31=1;
                                P3=0Xff;
                                
                i=1;
                                
        }
        else
        {
                P31=1;
                P30=0;
                P3=LED_CODE[num%10];
                                for(ke = 0;ke <100;ke++);        //延时一段时间
                                P30=1;
                                P3=0Xff;                 //消隐
                                
                i=0;
                        
        }
}





//主函数//
void main()
{      
                  bit m = 0,m1 = 0,m2=0;                        //声明一个位变量.用来存储按键状态.
         unsigned char i;
        out=1; //初始化输出端口
        num=40;//定时变量赋初值
        
            
                k1 = 1;                                                //加按键输入端口电平置高
                k2 = 1;                                                //减按键输入端口电平置高
                k3 = 1;               
                                       
                        while(1)                                        //主循环
                        {
                           
                                m  = skey0();                        //采集加按键
                                m1 = skey1();                        //采集减按键
                            m2 = skey2();                        //采集按键
                                if(m == 1)                                //如果采集到加按键值.
                                {
                                 if(num < 99)
                                        num++;                                //计数自增        
                                }
                                if(m1 == 1)                                //如果采集到减按键值.
                                {
                                 if(num >1)        
                                        num--;                                //计数自减
                                  }
                                 if(m2 == 1)
                                         { for(i=0;i<2;i++)        //加入 for循环,表明for循环大括号中的程序循环执行2次
                                          {
                                                out=0;                        //将P1.0口赋值 0,对外输出低电平
                                                Delay(num*50);        //调用延时程序;更改延时数字可以更改延时长度;用于改变输出脉冲时间
                                                out=1;                        //将P1.0口赋值 1,对外输出高电平
                                                Delay(3000);
                                           }
                                         }                        
                        display();//数码管动态显示        
                    }
}


      



   程序及引脚定义完,接下来设计pcb IMG_20190430_085126.jpg IMG_20190430_111510.jpg 第一次使用绿油技术 IMG_20190430_152334.jpg 接下来下载程序,调试一下 IMG_20190501_140156.jpg 至此大功告成 IMG_20190506_083651.jpg IMG_20190506_083715.jpg 测试一下点焊效果 IMG_20190506_083633.jpg 用力 IMG_20190506_083831.jpg 焊的还是很牢固 IMG_20190506_083847.jpg
  感谢大家观看!

评分

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

查看全部评分

回复

使用道具 举报

ID:237354 发表于 2019-12-23 00:20 | 显示全部楼层
牛啊!有原理图吗
回复

使用道具 举报

ID:56665 发表于 2019-12-23 08:19 | 显示全部楼层
把原理图放上来,手画一个也行
回复

使用道具 举报

ID:206748 发表于 2019-12-24 17:56 | 显示全部楼层
还用升压吗?怎么充电呢?
回复

使用道具 举报

ID:353831 发表于 2019-12-26 17:51 来自手机 | 显示全部楼层
楼主发一个原理图
回复

使用道具 举报

ID:663734 发表于 2019-12-28 18:03 | 显示全部楼层
a838899 发表于 2019-12-24 17:56
还用升压吗?怎么充电呢?

不用升压,用直流稳压电源充电
回复

使用道具 举报

ID:663734 发表于 2019-12-28 18:04 | 显示全部楼层
wl020807 发表于 2019-12-26 17:51
楼主发一个原理图

原理图放在单位了,过几天上班的再发
回复

使用道具 举报

ID:194946 发表于 2019-12-31 23:06 | 显示全部楼层
yfxzhl 发表于 2019-12-28 18:04
原理图放在单位了,过几天上班的再发

楼主不是发一个原理图吗
回复

使用道具 举报

ID:194946 发表于 2019-12-31 23:08 | 显示全部楼层
楼主不是发一个原理图吗?
回复

使用道具 举报

ID:194946 发表于 2019-12-31 23:09 | 显示全部楼层
楼主不是发一个原理图吗
回复

使用道具 举报

ID:474921 发表于 2020-1-16 21:06 | 显示全部楼层
楼主电路图弄丢了?
回复

使用道具 举报

ID:375228 发表于 2020-1-29 22:20 | 显示全部楼层
有空做一个试试
回复

使用道具 举报

ID:294296 发表于 2020-1-30 02:10 | 显示全部楼层
绝世好帖!楼主可以用一个100W左右的环形变压器拿粗电线在磁环绕两匝有1伏多左右接个大功率二极管给电容供电,比可调电源猛多了,另外考虑到其它地方市电电压可能会高变压器输出会高,可以用ADC采集电压,控制可控硅给变压器调压,嘻嘻。
回复

使用道具 举报

ID:208271 发表于 2020-1-30 09:07 | 显示全部楼层
楼主,这种PCB板的制作过程是怎样的?
回复

使用道具 举报

ID:699371 发表于 2020-3-31 14:45 来自手机 | 显示全部楼层
楼主能不能把原理图分享一下
回复

使用道具 举报

ID:194946 发表于 2020-5-23 01:06 | 显示全部楼层
095156fukwwf00rwe44dwy.jpg 我在别的地方找到了电路图
回复

使用道具 举报

ID:626287 发表于 2020-5-31 09:11 | 显示全部楼层
gpckwbg 发表于 2020-5-23 01:06
我在别的地方找到了电路图

保护板的电路图有吗??
回复

使用道具 举报

ID:191376 发表于 2020-5-31 10:51 | 显示全部楼层
技术人牛
回复

使用道具 举报

ID:137055 发表于 2020-6-2 09:07 | 显示全部楼层
有原理图吗
回复

使用道具 举报

ID:194946 发表于 2020-6-8 00:28 | 显示全部楼层
zgchen 发表于 2020-5-31 09:11
保护板的电路图有吗??

点焊机均衡板电路图.png
回复

使用道具 举报

ID:194946 发表于 2020-6-8 00:36 | 显示全部楼层
zgchen 发表于 2020-5-31 09:11
保护板的电路图有吗??

原理图2.png
回复

使用道具 举报

ID:774678 发表于 2020-7-2 16:32 | 显示全部楼层
厉害,pcb可以分享一下儿吗?
回复

使用道具 举报

ID:750209 发表于 2020-7-2 20:35 | 显示全部楼层
pcb可以分享一下儿吗?
回复

使用道具 举报

ID:353831 发表于 2020-8-11 19:26 | 显示全部楼层
楼主,焊笔检测光耦二极管侧接那里?
回复

使用道具 举报

ID:353831 发表于 2020-8-11 19:39 | 显示全部楼层
楼主:单片机时钟设置多兆的?
回复

使用道具 举报

ID:813514 发表于 2020-8-12 16:08 | 显示全部楼层
楼主的阻焊绿油怎么涂的,我得老涂不好,怎么涂的那么均匀啊
回复

使用道具 举报

ID:353831 发表于 2020-10-27 20:35 来自手机 | 显示全部楼层
楼主你好,STC15W401AS单片机下载程序晶振设置多少兆?
回复

使用道具 举报

ID:353831 发表于 2020-10-28 13:47 | 显示全部楼层
yfxzhl 发表于 2019-12-28 18:04
原理图放在单位了,过几天上班的再发

楼主 照你的程序和电路仿制不成功,数码管只显示两个横杠,按键没有反应
回复

使用道具 举报

ID:194946 发表于 2020-11-2 02:28 | 显示全部楼层
wl020807 发表于 2020-10-28 13:47
楼主 照你的程序和电路仿制不成功,数码管只显示两个横杠,按键没有反应

15W401AS点焊机

15W401AS点焊机.zip

924.96 KB, 下载次数: 155, 下载积分: 黑币 -5

回复

使用道具 举报

ID:353831 发表于 2020-11-9 20:15 | 显示全部楼层

楼主你好:STC15W401下载程序晶振设置多少 MHZ ?
回复

使用道具 举报

ID:353831 发表于 2020-11-9 20:22 | 显示全部楼层

楼主 控制电路图中的8脚芯片是什么芯片?
回复

使用道具 举报

ID:491340 发表于 2020-11-10 10:50 | 显示全部楼层
厉害了 不错在电池侧面外皮上直接点焊太疯狂了
回复

使用道具 举报

ID:194946 发表于 2020-11-14 02:12 | 显示全部楼层
wl020807 发表于 2020-11-9 20:15
楼主你好:STC15W401下载程序晶振设置多少 MHZ ?

12MHZ
回复

使用道具 举报

ID:194946 发表于 2020-11-14 02:12 | 显示全部楼层
wl020807 发表于 2020-11-9 20:22
楼主 控制电路图中的8脚芯片是什么芯片?

TLP250
回复

使用道具 举报

ID:194946 发表于 2020-11-14 02:24 | 显示全部楼层
wl020807 发表于 2020-11-9 20:15
楼主你好:STC15W401下载程序晶振设置多少 MHZ ?

12MHZ. 也可以p1.4接三极管驱动用在微波炉变压器上,这个时候就要用开关触发p1.7按住几秒。
回复

使用道具 举报

ID:721185 发表于 2020-12-14 20:40 | 显示全部楼层
楼主你好我想问一下你这个开机默认的40是是输出脉冲多少时间。
回复

使用道具 举报

ID:689120 发表于 2021-10-22 15:50 | 显示全部楼层
很好,论坛有你更精彩,谢谢楼主分享!
回复

使用道具 举报

ID:974131 发表于 2021-10-22 19:33 | 显示全部楼层
论坛有你更精彩,谢谢楼主分享!
回复

使用道具 举报

ID:430492 发表于 2022-3-21 08:42 | 显示全部楼层
在电池侧面外皮上直接点焊太疯狂了
回复

使用道具 举报

ID:430492 发表于 2022-3-24 13:04 | 显示全部楼层
看楼主程序,不是有3个数码管吗?咋只驱动两个管子呢?其实可以将第一位用起来,用于提示当前设置项,比如:脉冲宽度设置,和脉冲间隔时间等信息。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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