找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 21935|回復(fù): 21
收起左側(cè)

電容點焊機制作 附單片機程序與PCB文件

  [復(fù)制鏈接]
ID:852609 發(fā)表于 2021-3-22 19:45 | 顯示全部樓層 |閱讀模式
咸魚買了個48V165F電容,拆開了里面18個電容,3個電容串聯(lián)做了個點焊機,帶均壓,STC89C52控制,一個數(shù)碼管靜態(tài)顯示時間ms,可以保存上一次設(shè)置的時間,6個串聯(lián)做了兩個應(yīng)急電源,實驗了可以不用電瓶啟動轎車,新手發(fā)貼

制作出來的實物圖如下:

點焊機

點焊機

點焊機

點焊機


Altium Designer畫的PCB圖如下:(51hei附件中可下載工程文件)

PCB

PCB

51hei圖片_20210322191745.jpg

網(wǎng)購電容

網(wǎng)購電容

兩個應(yīng)急電源

兩個應(yīng)急電源

應(yīng)急電源均壓板

應(yīng)急電源均壓板

均壓板PCB

均壓板PCB

均壓板電路圖

均壓板電路圖

電容點焊機.rar

21.19 KB, 下載次數(shù): 165, 下載積分: 黑幣 -5

點焊機PCB和程序,注意PCB只能用Protel99打開

超級電容均壓板.rar

6.16 KB, 下載次數(shù): 131, 下載積分: 黑幣 -5

均壓板PCB文件

評分

參與人數(shù) 2黑幣 +115 收起 理由
51hei團團 + 15 很給力!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:328014 發(fā)表于 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;         //設(shè)置全局變量

  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};  //不帶小數(shù)點

  25. void DelayMs(unsigned int t);    //ms級延時
  26. void anjian( );            //按鍵函數(shù)
  27. void mchshch( );            //脈沖輸出函數(shù)


  28. /* ================ 打開 ISP,IAP 功能 ================= */
  29. void ISP_IAP_enable(void)
  30. {
  31.         EA        =        0;                                                        /* 關(guān)中斷                 */
  32.         ISP_CONTR =        ISP_CONTR & 0x18;       /* 0001,1000        */
  33.         ISP_CONTR =        ISP_CONTR | WaitTime;        /* 寫入硬件延時        */
  34.         ISP_CONTR =        ISP_CONTR | 0x80;       /* ISPEN=1                */
  35. }
  36. /* =============== 關(guān)閉 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. /* ================ 公用的觸發(fā)代碼 ==================== */
  44. void ISPgoon(void)
  45. {
  46.         ISP_IAP_enable();                        /* 打開 ISP,IAP 功能        */
  47.         ISP_TRIG        =        0x46;                /* 觸發(fā)ISP_IAP命令字節(jié)1        */
  48.         ISP_TRIG        =        0xb9;                /* 觸發(fā)ISP_IAP命令字節(jié)2        */
  49.         _nop_();
  50. }
  51. /* ==================== 字節(jié)讀 ======================== */
  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();                                                        /* 觸發(fā)執(zhí)行                */
  59.         ISP_IAP_disable();                                /* 關(guān)閉ISP,IAP功能        */
  60.         return (ISP_DATA);                                /* 返回讀到的數(shù)據(jù)        */
  61. }
  62. /* ================== 扇區(qū)擦除 ======================== */
  63. void SectorErase(unsigned int sector_addr)
  64. {
  65.         unsigned int iSectorAddr;
  66.         iSectorAddr = (sector_addr & 0xfe00); /* 取扇區(qū)地址 */
  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();                                                        /* 觸發(fā)執(zhí)行                */
  72.         ISP_IAP_disable();                                /* 關(guān)閉ISP,IAP功能        */
  73. }
  74. /* ==================== 字節(jié)寫 ======================== */
  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;                        /* 寫入數(shù)據(jù)準(zhǔn)備        */
  82.         ISPgoon();                                                        /* 觸發(fā)執(zhí)行                */
  83.         ISP_IAP_disable();                                        /* 關(guān)閉IAP功能        */
  84. }
  85. /*------------------------------------------------
  86.                     主函數(shù)
  87. ------------------------------------------------*/
  88. void main (void)
  89. {          DelayMs(5);
  90.           a=byte_read(0x2000);//程序開始時讀取EEPROM中數(shù)據(jù)
  91.      //SectorErase(0x2000);//擦除扇區(qū)
  92.     // byte_write(0x2000,5);//重新寫入數(shù)據(jù)
  93.          while (1)        //主循環(huán)
  94.    { D=d[a];
  95.          anjian( );
  96.          mchshch( );
  97.          
  98.          }

  99.                                 }




  100. void anjian( )           //按鍵函數(shù)
  101. {  if(s1==0)
  102.     {DelayMs(5);
  103.          if(s1==0)
  104.         {while(!s1)                                                          //按鍵不松開調(diào)用顯示函數(shù)
  105.          DelayMs(5);
  106.         a++;         
  107.         if(a==10)
  108.         a=1;
  109.         SectorErase(0x2000);//擦除扇區(qū)
  110.     byte_write(0x2000,a);//重新寫入數(shù)據(jù)
  111.         
  112.         
  113.         
  114.         }                 }

  115.         
  116.         
  117.         if(s2==0)
  118.     {DelayMs(5);
  119.          if(s2==0)
  120.         {while(!s2)                                                          //按鍵不松開調(diào)用顯示函數(shù)
  121.          DelayMs(5);
  122.         a--;         
  123.         if(a==0)
  124.         a=9;
  125.         SectorErase(0x2000);//擦除扇區(qū)
  126.     byte_write(0x2000,a);//重新寫入數(shù)據(jù)
  127.         
  128.         
  129.         }                 }

  130. }


  131. void mchshch( )            //脈沖輸出函數(shù)
  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延時函數(shù),含有輸入?yún)?shù) 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延時函數(shù),含有輸入?yún)?shù) 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. }
復(fù)制代碼

評分

參與人數(shù) 1黑幣 +30 收起 理由
wpppmlah + 30 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:739610 發(fā)表于 2021-3-22 22:28 | 顯示全部樓層
應(yīng)急電源均壓板那塊  用修電機的絕緣漆抹一層 摳出焊盤再焊接元件  也比你像啃得似的強
回復(fù)

使用道具 舉報

ID:381496 發(fā)表于 2021-6-13 16:30 | 顯示全部樓層
這個是個好東西,準(zhǔn)備做一個。
回復(fù)

使用道具 舉報

ID:362097 發(fā)表于 2021-8-18 02:56 | 顯示全部樓層
謝謝樓主分享這么好的教程,有時間試試做一個。
回復(fù)

使用道具 舉報

ID:829622 發(fā)表于 2021-8-19 14:32 | 顯示全部樓層
值得收藏一下,學(xué)習(xí)學(xué)習(xí)。想做一個試試
回復(fù)

使用道具 舉報

ID:898320 發(fā)表于 2021-9-12 21:46 | 顯示全部樓層
學(xué)習(xí)學(xué)習(xí)。想做一個
回復(fù)

使用道具 舉報

ID:128560 發(fā)表于 2021-9-23 14:41 | 顯示全部樓層
很感興趣,也想仿制一個。
回復(fù)

使用道具 舉報

ID:128560 發(fā)表于 2021-9-27 16:04 | 顯示全部樓層
下載了,電路圖都沒有一個,是誠心分享嗎
回復(fù)

使用道具 舉報

ID:672895 發(fā)表于 2021-11-29 21:23 | 顯示全部樓層
電路圖都沒有,是誠心分享嗎
回復(fù)

使用道具 舉報

ID:993738 發(fā)表于 2021-12-19 22:10 | 顯示全部樓層
樓主,能貼個電路原理圖嗎?
回復(fù)

使用道具 舉報

ID:253767 發(fā)表于 2021-12-20 07:37 | 顯示全部樓層
好東西,謝謝分享。!
回復(fù)

使用道具 舉報

ID:994031 發(fā)表于 2021-12-20 22:22 | 顯示全部樓層

樓主,貼個電路圖啊,
回復(fù)

使用道具 舉報

ID:292518 發(fā)表于 2021-12-23 15:54 | 顯示全部樓層
值得收藏一下,學(xué)習(xí)學(xué)習(xí)。想做一個試試
回復(fù)

使用道具 舉報

ID:1043826 發(fā)表于 2022-9-5 08:18 | 顯示全部樓層
樓主厲害了,也想制作個玩玩,賺分下載
回復(fù)

使用道具 舉報

ID:1045132 發(fā)表于 2022-9-18 21:52 | 顯示全部樓層
頭大看不懂程序
回復(fù)

使用道具 舉報

ID:1045132 發(fā)表于 2022-9-18 22:22 | 顯示全部樓層
pcb文件怎么導(dǎo)入到立創(chuàng)eda
回復(fù)

使用道具 舉報

ID:1045132 發(fā)表于 2022-9-19 12:00 | 顯示全部樓層
沒有原理圖,這個pcb軟件看不懂
回復(fù)

使用道具 舉報

ID:1050833 發(fā)表于 2022-11-7 13:04 來自手機 | 顯示全部樓層
能貼個電路原理圖嗎?
回復(fù)

使用道具 舉報

ID:1048397 發(fā)表于 2022-11-10 10:33 | 顯示全部樓層
感謝樓主的分享!均壓板地方夠,還用貼片原件,實力強呀。
回復(fù)

使用道具 舉報

ID:993738 發(fā)表于 2023-2-1 14:10 | 顯示全部樓層
貼pcb還不如直接發(fā)電路圖,,太丑了。。。
回復(fù)

使用道具 舉報

ID:993738 發(fā)表于 2023-2-4 20:21 | 顯示全部樓層
不發(fā)電路圖也就罷了,最起碼畫圖,該標(biāo)的名稱應(yīng)該有吧?還有,protel也可以畫雙層吧。你焊盤直接放上,啥都不標(biāo),而且,做出來的實物圖,你拍個照也可作為參考,結(jié)果,啥都沒,,是誠心分享么。。。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表