找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18138|回复: 21
打印 上一主题 下一主题
收起左侧

电容点焊机制作 附单片机程序与PCB文件

  [复制链接]
跳转到指定楼层
楼主
咸鱼买了个48V165F电容,拆开了里面18个电容,3个电容串联做了个点焊机,带均压,STC89C52控制,一个数码管静态显示时间ms,可以保存上一次设置的时间,6个串联做了两个应急电源,实验了可以不用电瓶启动轿车,新手发贴

制作出来的实物图如下:


Altium Designer画的PCB图如下:(51hei附件中可下载工程文件)

51hei图片_20210322191745.jpg (125.91 KB, 下载次数: 167)

51hei图片_20210322191745.jpg

51hei图片_20210322192712.jpg (104.24 KB, 下载次数: 185)

网购电容

网购电容

51hei图片_20210322193025.jpg (79 KB, 下载次数: 176)

两个应急电源

两个应急电源

51hei图片_20210322193030.jpg (1.06 MB, 下载次数: 175)

应急电源均压板

应急电源均压板

51hei图片_20210322193320.jpg (1.05 MB, 下载次数: 165)

均压板PCB

均压板PCB

电路图.jpg (41.9 KB, 下载次数: 198)

均压板电路图

均压板电路图

电容点焊机.rar

21.19 KB, 下载次数: 161, 下载积分: 黑币 -5

点焊机PCB和程序,注意PCB只能用Protel99打开

超级电容均压板.rar

6.16 KB, 下载次数: 126, 下载积分: 黑币 -5

均压板PCB文件

评分

参与人数 2黑币 +115 收起 理由
51hei团团 + 15 很给力!
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏24 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:328014 发表于 2021-3-22 20:16 | 只看该作者
好东东,大家注意PCB只能用Protel99才能打开,其他版本均不行.楼主的单片机程序:
  1. #include <reg52.h>                                        //定义头文件
  2. #include <intrins.h>
  3. #define uchar unsigned char                        //宏定义
  4. #define uint unsigned int                 //宏定义
  5. #define D P2   //段选用D代替
  6. sbit s1=P3^0;//定义加按键
  7. sbit s2=P3^1;//定义减按键
  8. sbit q1=P0^2;//定义蜂鸣器
  9. sbit s3=P1^0;//定义点焊开始
  10. sbit m=P0^0;//定义点焊脉冲输出
  11. uchar a;         //设置全局变量

  12. #define RdCommand 0x01        //定义ISP的操作命令
  13. #define PrgCommand 0x02
  14. #define EraseCommand 0x03        
  15. #define Error 1
  16. #define Ok 0
  17. #define WaitTime 0x01 //定义CPU的等待时间
  18. sfr ISP_DATA=0xe2;  //寄存器申明
  19. sfr ISP_ADDRH=0xe3;
  20. sfr ISP_ADDRL=0xe4;
  21. sfr ISP_CMD=0xe5;
  22. sfr ISP_TRIG=0xe6;
  23. sfr ISP_CONTR=0xe7;

  24. uchar code d[]={0x88,0xEE,0x94,0xC4,0xE2,0xC1,0x81,0xEC,0x80,0xC0};  //不带小数点

  25. void DelayMs(unsigned int t);    //ms级延时
  26. void anjian( );            //按键函数
  27. void mchshch( );            //脉冲输出函数


  28. /* ================ 打开 ISP,IAP 功能 ================= */
  29. void ISP_IAP_enable(void)
  30. {
  31.         EA        =        0;                                                        /* 关中断                 */
  32.         ISP_CONTR =        ISP_CONTR & 0x18;       /* 0001,1000        */
  33.         ISP_CONTR =        ISP_CONTR | WaitTime;        /* 写入硬件延时        */
  34.         ISP_CONTR =        ISP_CONTR | 0x80;       /* ISPEN=1                */
  35. }
  36. /* =============== 关闭 ISP,IAP 功能 ================== */
  37. void ISP_IAP_disable(void)
  38. {
  39.         ISP_CONTR        =        ISP_CONTR & 0x7f;        /* ISPEN = 0 */
  40.         ISP_TRIG        =        0x00;
  41.         EA                        =   1;                        /* 开中断 */
  42. }
  43. /* ================ 公用的触发代码 ==================== */
  44. void ISPgoon(void)
  45. {
  46.         ISP_IAP_enable();                        /* 打开 ISP,IAP 功能        */
  47.         ISP_TRIG        =        0x46;                /* 触发ISP_IAP命令字节1        */
  48.         ISP_TRIG        =        0xb9;                /* 触发ISP_IAP命令字节2        */
  49.         _nop_();
  50. }
  51. /* ==================== 字节读 ======================== */
  52. unsigned char byte_read(unsigned int byte_addr)
  53. {
  54.         ISP_ADDRH = (unsigned char)(byte_addr >> 8);/* 地址赋值        */
  55.         ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff);
  56.         ISP_CMD   = ISP_CMD        & 0xf8;                        /* 清除低3位         */
  57.         ISP_CMD   = ISP_CMD        | RdCommand;        /* 写入读命令        */
  58.         ISPgoon();                                                        /* 触发执行                */
  59.         ISP_IAP_disable();                                /* 关闭ISP,IAP功能        */
  60.         return (ISP_DATA);                                /* 返回读到的数据        */
  61. }
  62. /* ================== 扇区擦除 ======================== */
  63. void SectorErase(unsigned int sector_addr)
  64. {
  65.         unsigned int iSectorAddr;
  66.         iSectorAddr = (sector_addr & 0xfe00); /* 取扇区地址 */
  67.         ISP_ADDRH = (unsigned char)(iSectorAddr >> 8);
  68.         ISP_ADDRL = 0x00;
  69.         ISP_CMD        = ISP_CMD & 0xf8;                        /* 清空低3位         */
  70.         ISP_CMD        = ISP_CMD | EraseCommand;        /* 擦除命令3         */
  71.         ISPgoon();                                                        /* 触发执行                */
  72.         ISP_IAP_disable();                                /* 关闭ISP,IAP功能        */
  73. }
  74. /* ==================== 字节写 ======================== */
  75. void byte_write(unsigned int byte_addr, unsigned char original_data)
  76. {
  77.         ISP_ADDRH =        (unsigned char)(byte_addr >> 8);         /* 取地址         */
  78.         ISP_ADDRL =        (unsigned char)(byte_addr & 0x00ff);
  79.         ISP_CMD         = ISP_CMD & 0xf8;                                /* 清低3位        */
  80.         ISP_CMD  = ISP_CMD | PrgCommand;                /* 写命令2        */
  81.         ISP_DATA = original_data;                        /* 写入数据准备        */
  82.         ISPgoon();                                                        /* 触发执行                */
  83.         ISP_IAP_disable();                                        /* 关闭IAP功能        */
  84. }
  85. /*------------------------------------------------
  86.                     主函数
  87. ------------------------------------------------*/
  88. void main (void)
  89. {          DelayMs(5);
  90.           a=byte_read(0x2000);//程序开始时读取EEPROM中数据
  91.      //SectorErase(0x2000);//擦除扇区
  92.     // byte_write(0x2000,5);//重新写入数据
  93.          while (1)        //主循环
  94.    { D=d[a];
  95.          anjian( );
  96.          mchshch( );
  97.          
  98.          }

  99.                                 }




  100. void anjian( )           //按键函数
  101. {  if(s1==0)
  102.     {DelayMs(5);
  103.          if(s1==0)
  104.         {while(!s1)                                                          //按键不松开调用显示函数
  105.          DelayMs(5);
  106.         a++;         
  107.         if(a==10)
  108.         a=1;
  109.         SectorErase(0x2000);//擦除扇区
  110.     byte_write(0x2000,a);//重新写入数据
  111.         
  112.         
  113.         
  114.         }                 }

  115.         
  116.         
  117.         if(s2==0)
  118.     {DelayMs(5);
  119.          if(s2==0)
  120.         {while(!s2)                                                          //按键不松开调用显示函数
  121.          DelayMs(5);
  122.         a--;         
  123.         if(a==0)
  124.         a=9;
  125.         SectorErase(0x2000);//擦除扇区
  126.     byte_write(0x2000,a);//重新写入数据
  127.         
  128.         
  129.         }                 }

  130. }


  131. void mchshch( )            //脉冲输出函数
  132. {        if(s3==0)
  133.         {DelayMs(1000);
  134.          if(s3==0)
  135.          {DelayMs(500);
  136.          m=0;
  137.          q1=0;
  138.          DelayMs(a);
  139.          m=1;
  140.          q1=1;
  141.          DelayMs(100);
  142.          m=0;
  143.          q1=0;
  144.          DelayMs(a);
  145.          m=1;
  146.          q1=1;
  147.          DelayMs(100);
  148.          while(!s3)
  149.          DelayMs(50); }
  150.         
  151.         }   }





  152. /*------------------------------------------------
  153. uS延时函数,含有输入参数 unsigned char t,无返回值
  154. unsigned char 是定义无符号字符变量,其值的范围是
  155. 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
  156. 长度如下 T=tx2+5 uS
  157. ------------------------------------------------*/
  158. void DelayUs2x(unsigned char t)
  159. {   
  160. while(--t);
  161. }






  162. /*------------------------------------------------
  163. mS延时函数,含有输入参数 unsigned char t,无返回值
  164. unsigned char 是定义无符号字符变量,其值的范围是
  165. 0~255 这里使用晶振12M,精确延时请使用汇编
  166. ------------------------------------------------*/
  167. void DelayMs(unsigned int t) //大致延时1mS
  168. {
  169.      
  170. while(t--)
  171. {
  172.      
  173.      DelayUs2x(245);
  174.          DelayUs2x(245);
  175. }
  176. }
复制代码

评分

参与人数 1黑币 +30 收起 理由
wpppmlah + 30 很给力!

查看全部评分

回复

使用道具 举报

板凳
ID:739610 发表于 2021-3-22 22:28 | 只看该作者
应急电源均压板那块  用修电机的绝缘漆抹一层 抠出焊盘再焊接元件  也比你像啃得似的强
回复

使用道具 举报

地板
ID:381496 发表于 2021-6-13 16:30 | 只看该作者
这个是个好东西,准备做一个。
回复

使用道具 举报

5#
ID:362097 发表于 2021-8-18 02:56 | 只看该作者
谢谢楼主分享这么好的教程,有时间试试做一个。
回复

使用道具 举报

6#
ID:829622 发表于 2021-8-19 14:32 | 只看该作者
值得收藏一下,学习学习。想做一个试试
回复

使用道具 举报

7#
ID:898320 发表于 2021-9-12 21:46 | 只看该作者
学习学习。想做一个
回复

使用道具 举报

8#
ID:128560 发表于 2021-9-23 14:41 | 只看该作者
很感兴趣,也想仿制一个。
回复

使用道具 举报

9#
ID:128560 发表于 2021-9-27 16:04 | 只看该作者
下载了,电路图都没有一个,是诚心分享吗
回复

使用道具 举报

10#
ID:672895 发表于 2021-11-29 21:23 | 只看该作者
电路图都没有,是诚心分享吗
回复

使用道具 举报

11#
ID:993738 发表于 2021-12-19 22:10 | 只看该作者
楼主,能贴个电路原理图吗?
回复

使用道具 举报

12#
ID:253767 发表于 2021-12-20 07:37 | 只看该作者
好东西,谢谢分享!!!
回复

使用道具 举报

13#
ID:994031 发表于 2021-12-20 22:22 | 只看该作者

楼主,贴个电路图啊,
回复

使用道具 举报

14#
ID:292518 发表于 2021-12-23 15:54 | 只看该作者
值得收藏一下,学习学习。想做一个试试
回复

使用道具 举报

15#
ID:1043826 发表于 2022-9-5 08:18 | 只看该作者
楼主厉害了,也想制作个玩玩,赚分下载
回复

使用道具 举报

16#
ID:1045132 发表于 2022-9-18 21:52 | 只看该作者
头大看不懂程序
回复

使用道具 举报

17#
ID:1045132 发表于 2022-9-18 22:22 | 只看该作者
pcb文件怎么导入到立创eda
回复

使用道具 举报

18#
ID:1045132 发表于 2022-9-19 12:00 | 只看该作者
没有原理图,这个pcb软件看不懂
回复

使用道具 举报

19#
ID:1050833 发表于 2022-11-7 13:04 来自手机 | 只看该作者
能贴个电路原理图吗?
回复

使用道具 举报

20#
ID:1048397 发表于 2022-11-10 10:33 | 只看该作者
感谢楼主的分享!均压板地方够,还用贴片原件,实力强呀。
回复

使用道具 举报

21#
ID:993738 发表于 2023-2-1 14:10 | 只看该作者
贴pcb还不如直接发电路图,,太丑了。。。
回复

使用道具 举报

22#
ID:993738 发表于 2023-2-4 20:21 | 只看该作者
不发电路图也就罢了,最起码画图,该标的名称应该有吧?还有,protel也可以画双层吧。你焊盘直接放上,啥都不标,而且,做出来的实物图,你拍个照也可作为参考,结果,啥都没,,是诚心分享么。。。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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