找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 16104|回復(fù): 25
打印 上一主題 下一主題
收起左側(cè)

使用51單片機(jī)的點(diǎn)焊機(jī)控制裝置設(shè)計(jì)(程序+原理圖)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:116773 發(fā)表于 2018-12-19 12:53 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
    最近做了一個(gè)用單片機(jī)的點(diǎn)焊機(jī)控制裝置,使用的是89C51單片機(jī)、LCD5110顯示屏和微型繼電器,通過(guò)檢測(cè)按鈕信號(hào),精確控制點(diǎn)焊機(jī)變壓器的導(dǎo)通時(shí)間和兩次焊接的間隔時(shí)間。變壓器導(dǎo)通時(shí)間從40毫秒到2600毫秒之間,按20毫秒為一檔連續(xù)可調(diào),兩次焊接的間隔時(shí)間則為5秒和10秒兩檔,這兩個(gè)參數(shù)均通過(guò)7+1位撥碼開(kāi)關(guān)由用戶(hù)根據(jù)需要?jiǎng)討B(tài)設(shè)置,設(shè)置結(jié)果即時(shí)顯示在屏幕上。參見(jiàn)下圖:

003電子點(diǎn)焊機(jī).jpg(44 KB, 下載次數(shù): 0)
下載附件
前天 13:17 上傳





    屏幕中間顯示的是設(shè)置的點(diǎn)焊時(shí)間,以毫秒為單位,通過(guò)左起的7位撥碼開(kāi)關(guān)設(shè)置。下部左邊顯示的的是設(shè)置的間隔時(shí)間,為5秒和10秒兩檔, 通過(guò)最右邊的撥碼開(kāi)關(guān)設(shè)置。屏幕右下角顯示的是間隔時(shí)間倒計(jì)時(shí),只有倒計(jì)時(shí)為零時(shí),單片機(jī)才接收點(diǎn)焊按鈕的信號(hào)。下圖是點(diǎn)焊機(jī)的正面:

115控制板制作_通電測(cè)試.jpg(140.45 KB, 下載次數(shù): 0)
下載附件
前天 13:16 上傳





    機(jī)箱面板上有3個(gè)LED指示燈,最上面紅色的是電源指示燈,面板上開(kāi)關(guān)打開(kāi)接通控制電源后常亮。中間橙色的是工作指示燈,點(diǎn)焊機(jī)變壓器接通后點(diǎn)亮,關(guān)閉后即滅。下面綠色的是準(zhǔn)備好信號(hào)燈,當(dāng)?shù)褂?jì)時(shí)為零時(shí)此燈閃爍,只有綠色信號(hào)燈閃爍時(shí)點(diǎn)焊按鈕才有效,這個(gè)信號(hào)燈在焊把上也同時(shí)存在。
    下面是控制線(xiàn)路的原理圖:




    整個(gè)控制線(xiàn)路用了兩塊萬(wàn)用板搭焊,一塊安裝了3個(gè)LED信號(hào)燈、LCD5110顯示屏和8位撥碼開(kāi)關(guān),另一塊則是單片機(jī)及外圍電路、微型繼電器以及7805穩(wěn)壓塊等。

單片機(jī)源程序如下:
  1. /*******************************************************************************
  2. *                                                                                                                                            *
  3. *                                        點(diǎn)焊機(jī)控制器                                                                           *
  4. --------------------------------------------------------------------------------
  5. * 結(jié)構(gòu)說(shuō)明:    51單片機(jī)計(jì)時(shí)控制                                                                                                   *
  6. *              在檢測(cè)到點(diǎn)焊手柄發(fā)出的工作信號(hào)時(shí),                                                           *
  7. *              立即接通點(diǎn)焊機(jī)的電源,點(diǎn)焊機(jī)開(kāi)始工作,設(shè)定的時(shí)間結(jié)束后切斷電源,*
  8. *              在設(shè)定的間隔時(shí)間內(nèi),不接收點(diǎn)焊手柄發(fā)出的工作信號(hào)。              *
  9. * 版本說(shuō)明:    胡家峻@2018年8月                                                                                              *
  10. *******************************************************************************/
  11. /*
  12. * 單片機(jī)P0^0~P0^4口分配給LCD5110使用:RET、CE、D/C、DIN、CLK(在LCD_5110.h中定義
  13. *       P0^5     設(shè)備等待(可以工作)信號(hào)燈
  14. *            P0^6     設(shè)備工作間隙(不接收點(diǎn)焊信號(hào))信號(hào)燈
  15. *
  16. *            P1^0~P1^6   開(kāi)關(guān)設(shè)置點(diǎn)焊時(shí)間(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顯示驅(qū)動(dòng)文件

  22. #define u8 unsigned char  //單字節(jié)
  23. #define u16 unsigned int  //雙字節(jié)
  24. #define        u64 unsigned long //四字節(jié)

  25. #define        SZP1 P1           //P1口為初始設(shè)置的數(shù)據(jù),低七位為定時(shí)數(shù)值(0-127)*20ms,                                                                                                  
  26.                           //第八位為間隙時(shí)間,0=5秒,1=10秒
  27. sbit LED_work = P0^5;     //設(shè)備工作信號(hào)(低電平點(diǎn)焊機(jī)接通)
  28. sbit LED_read = P0^6;     //設(shè)備就緒信號(hào)(低電平可以工作)
  29. sbit work     = P0^7;          //點(diǎn)焊按鈕信號(hào)(低電平按下)
  30.                                                                                                                         
  31. //--定義全局變量--//
  32. u8  sdsj = 0;             //設(shè)定的點(diǎn)焊單位
  33. u64 shsj = 0;             //設(shè)定的點(diǎn)焊時(shí)間(雙字節(jié),以毫秒為單位)
  34. u8 wait = 5;                          //設(shè)置的間隔時(shí)間(5秒或10秒,根據(jù)P1.7確定)
  35.                                                            
  36. u8 time_work = 0;         //焊接時(shí)間計(jì)時(shí)(20毫秒/單位)
  37. u8 time_wait = 0;                  //等待時(shí)間計(jì)時(shí)(單位秒)
  38. bit time_1s = 0;              //秒信號(hào)
  39. bit time_20ms = 0;                  //20毫秒信號(hào)
  40. bit flag = 0;             //定時(shí)工作標(biāo)志(0=待機(jī)或間隔,1=正在工作


  41. /*******************************************************************************
  42. * 函 數(shù) 名         : ReadSet
  43. * 函數(shù)功能                   : 讀設(shè)置并顯示
  44. * 輸    入         : 無(wú)                                                                                                                                                
  45. * 輸    出         : 無(wú)
  46. *******************************************************************************/
  47. void ReadSet(void)
  48. {
  49.         sdsj = SZP1;               //從P1口讀入一個(gè)字節(jié)的數(shù)據(jù)
  50.         if (sdsj>127) wait = 10;   //最高位1,間隔時(shí)間=10秒
  51.         else wait = 5;
  52.         LCD_write_val(27,4,2,wait);//顯示設(shè)定的間隔時(shí)間
  53.          
  54.         sdsj = (sdsj & 0x7f) + 3;  //取低7位定時(shí)值再加3(60毫秒)
  55.         shsj = sdsj * 20;                   //20毫秒基本單位
  56.         LCD_write_val(27,2,4,shsj);//顯示設(shè)定的點(diǎn)焊時(shí)間
  57. }


  58. /*******************************************************************************
  59. * 函 數(shù) 名         : timehand
  60. * 函數(shù)功能                   : 20毫秒處理函數(shù),即每隔20毫秒處理一次
  61. * 輸    入         : 無(wú)
  62. * 輸    出         : 無(wú)
  63. *******************************************************************************/
  64. void TimeHand(void)
  65. {
  66.     if (flag == 0)        //待機(jī)狀態(tài)
  67.         {
  68.             if (work == 0)    //收到點(diǎn)焊按鈕信號(hào)
  69.                 {
  70.                         flag = 1;     //設(shè)置工作標(biāo)志
  71.                         time_work = sdsj;//取設(shè)定時(shí)間
  72.                         LED_work = 0; //開(kāi)通工作電源
  73.                         LED_read = 1; //關(guān)閉等待信號(hào)燈
  74.                 }
  75.                 else                          //無(wú)點(diǎn)焊按鈕信號(hào)
  76.                 {
  77.                         ReadSet();          //檢查更新設(shè)置
  78.                 }                                                                        
  79.         }
  80.         else                          //工作狀態(tài)
  81.         {
  82.                 time_work--;
  83.                 if (time_work == 0)//定時(shí)時(shí)間到
  84.                 {
  85.                         LED_work = 1;  //關(guān)閉點(diǎn)焊機(jī)電源
  86.                         LED_read = 1;  //取消準(zhǔn)備好信號(hào)燈
  87.                         flag = 0;            //撤銷(xiāo)工作標(biāo)志
  88.                         time_wait = wait;//恢復(fù)間隔時(shí)間
  89.                         LCD_write_val(61,4,2,time_wait);//顯示剩余間隔時(shí)間
  90.                 }
  91.         }
  92. }



  93. /*******************************************************************************
  94. * 函 數(shù) 名         :
  95. * 函數(shù)功能                   : T0中斷服務(wù)函數(shù)
  96. * 輸    入         : 無(wú)
  97. * 輸    出         : 無(wú)
  98. *******************************************************************************/
  99. void InterruptTimer0() interrupt 1
  100. {
  101.         static u8 i = 0;           //毫秒
  102.         static u8 j = 0;           //20毫秒

  103.         TH0 = 0xFC;            //重新加載初值,定時(shí)1ms
  104.         TL0 = 0x66;

  105.         i++;
  106.         if (i > 19)                   //20毫秒計(jì)時(shí)到
  107.         {
  108.             i = 0;
  109.                 time_20ms = 1;           //置20毫秒標(biāo)志
  110.             j++;
  111.             if (j > 49)        //1秒
  112.                 {
  113.                     j = 0;
  114.                         time_1s = 1;   //置1秒標(biāo)志
  115.             }
  116.         }
  117. }


  118. /*******************************************************************************
  119. * 函 數(shù) 名         : main
  120. * 函數(shù)功能                   : 主函數(shù)
  121. * 輸    入         : 無(wú)
  122. * 輸    出         : 無(wú)
  123. *******************************************************************************/
  124. void main(void)
  125. {
  126. //設(shè)置初始屏幕顯示
  127.     u8 i, x ,y;
  128.         
  129.         LED_work = 1; //測(cè)試
  130.         LED_read = 1;
  131.         LCD_init();                   //初始化5110屏幕

  132.         x = 8;                                   //顯示的起始位置
  133.         y = 0;
  134.         for (i = 0; i < 5; i++)//顯示“電子點(diǎn)焊機(jī)”
  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();              //讀取設(shè)定定時(shí)時(shí)間并顯示
  158.         LCD_write_val(61,4,2,time_wait);//顯示剩余間隔時(shí)間
  159.         LED_read = 0;           //顯示準(zhǔn)備好信號(hào)燈

  160.         TMOD = 0x01;            //設(shè)置T0為模式1
  161. //        TH0 = 0xF8;             //為T(mén)0賦初值0xF8CD,定時(shí)2ms
  162. //        TL0 = 0xCD;
  163.     TH0 = 0xFC;             //為T(mén)0賦初值0xFC67,定時(shí)1ms
  164.     TL0 = 0x66;
  165. //        TH0 = 0xFC;
  166. //        TL0 = 0xC3;                    //為T(mén)0賦初值0xFA02,定時(shí)1ms
  167.         ET0 = 1;                //開(kāi)T0中斷
  168.         TR0 = 1;                //啟動(dòng)定時(shí)器0
  169.         EA = 1;                 //開(kāi)總中斷
  170.         
  171.         while(1)
  172.         {
  173.                 if (time_1s == 1)   //每秒處理
  174.                 {
  175.                     time_1s = 0;    //重置秒標(biāo)志
  176.                         
  177.                         if (time_wait > 0)
  178.                         {
  179.                             time_wait--;
  180.                         if (time_wait == 0)
  181.                             {
  182.                                 LED_read = 0;//顯示就緒信號(hào)
  183.                             }
  184.                                 LCD_write_val(61,4,2,time_wait);//顯示剩余間隔時(shí)間
  185.                    }
  186.                         else
  187.                         {
  188.                             if (LED_work == 1)
  189.                                 {
  190.                                     LED_read = ~LED_read;//等待時(shí)每秒閃一次
  191.                                 }
  192.                     }
  193.                 }        
  194.                         
  195.                 if (time_20ms == 1)
  196.                 {
  197.                         time_20ms = 0;          //重置20毫秒標(biāo)志
  198.                         if (time_wait == 0)
  199.                         {
  200.                             TimeHand();   //調(diào)用20毫秒處理程序
  201.                         }
  202.                 }
  203.         }
  204. }
復(fù)制代碼

所有資料51hei提供下載:
點(diǎn)焊機(jī).rar (708.39 KB, 下載次數(shù): 252)
Keil項(xiàng)目文件包

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏13 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:49574 發(fā)表于 2018-12-29 12:09 | 只看該作者
樓主有沒(méi)有電路板的焊接圖。cb工程打不開(kāi)報(bào)錯(cuò)

----------
補(bǔ)充:進(jìn)History目錄可以打開(kāi)原理圖文件了,作者沒(méi)有畫(huà)PCB圖
回復(fù)

使用道具 舉報(bào)

板凳
ID:104477 發(fā)表于 2019-1-2 00:19 來(lái)自手機(jī) | 只看該作者
字模用什么軟件
回復(fù)

使用道具 舉報(bào)

地板
ID:462163 發(fā)表于 2019-1-5 17:15 | 只看該作者
你這個(gè)能不能改一下,按鍵調(diào)整放電時(shí)間,保存數(shù)據(jù)到內(nèi)部EEP.
回復(fù)

使用道具 舉報(bào)

5#
ID:104477 發(fā)表于 2019-1-6 03:13 來(lái)自手機(jī) | 只看該作者
已改成按鍵調(diào)放電時(shí)間和間隔時(shí)間
回復(fù)

使用道具 舉報(bào)

6#
ID:349565 發(fā)表于 2019-1-9 10:44 來(lái)自手機(jī) | 只看該作者
謝謝你呀.找了好久了
回復(fù)

使用道具 舉報(bào)

7#
ID:349565 發(fā)表于 2019-1-9 10:44 來(lái)自手機(jī) | 只看該作者
readghost 發(fā)表于 2018-12-29 12:09
樓主有沒(méi)有電路板的焊接圖!pcb工程打不開(kāi)報(bào)錯(cuò)

我下載試試看
回復(fù)

使用道具 舉報(bào)

8#
ID:346161 發(fā)表于 2019-1-13 00:37 來(lái)自手機(jī) | 只看該作者
這么高端,我看有一個(gè)純硬件的
回復(fù)

使用道具 舉報(bào)

9#
ID:428674 發(fā)表于 2019-2-6 22:45 | 只看該作者
感謝樓主無(wú)私奉獻(xiàn),靜待樓主推出改進(jìn)版本
回復(fù)

使用道具 舉報(bào)

10#
ID:104477 發(fā)表于 2019-2-7 04:39 來(lái)自手機(jī) | 只看該作者
表示已經(jīng)改進(jìn),用旋轉(zhuǎn)編碼器,從最小20任意到5100ms
回復(fù)

使用道具 舉報(bào)

11#
ID:428674 發(fā)表于 2019-2-7 19:29 | 只看該作者
hs88 發(fā)表于 2019-2-7 04:39
表示已經(jīng)改進(jìn),用旋轉(zhuǎn)編碼器,從最小20任意到5100ms

我看樓主發(fā)布的是撥碼開(kāi)關(guān)的呀
不是旋轉(zhuǎn)編碼器的
回復(fù)

使用道具 舉報(bào)

12#
ID:134271 發(fā)表于 2019-2-19 09:16 | 只看該作者
N秒的間隔時(shí)間是不是太長(zhǎng)了,焊接效率低哦。一般是毫秒級(jí)就夠了。
回復(fù)

使用道具 舉報(bào)

13#
ID:104477 發(fā)表于 2019-2-20 03:39 來(lái)自手機(jī) | 只看該作者
xyf_71 發(fā)表于 2019-2-7 19:29
我看樓主發(fā)布的是撥碼開(kāi)關(guān)的呀
不是旋轉(zhuǎn)編碼器的

樓主發(fā)布的沒(méi)有改,自己改成旋轉(zhuǎn)編碼器的
回復(fù)

使用道具 舉報(bào)

14#
ID:106211 發(fā)表于 2019-3-23 12:14 | 只看該作者
hs88 發(fā)表于 2019-2-20 03:39
樓主發(fā)布的沒(méi)有改,自己改成旋轉(zhuǎn)編碼器的

你改好的能來(lái)一份嗎?我也想弄一個(gè)玩玩
回復(fù)

使用道具 舉報(bào)

15#
ID:479579 發(fā)表于 2019-5-11 10:29 | 只看該作者
功能豐富,但不建議實(shí)用繼電器,容易拉弧燒壞繼電器。
回復(fù)

使用道具 舉報(bào)

16#
ID:535538 發(fā)表于 2019-5-12 07:55 來(lái)自手機(jī) | 只看該作者
謝謝 下載看看
回復(fù)

使用道具 舉報(bào)

17#
ID:535538 發(fā)表于 2019-5-12 07:56 來(lái)自手機(jī) | 只看該作者
我也下載試試
回復(fù)

使用道具 舉報(bào)

18#
ID:601757 發(fā)表于 2019-8-24 21:51 | 只看該作者
pcb我做回頭上傳到論壇
回復(fù)

使用道具 舉報(bào)

19#
ID:601757 發(fā)表于 2019-8-25 08:37 來(lái)自手機(jī) | 只看該作者
已上傳
回復(fù)

使用道具 舉報(bào)

20#
ID:477512 發(fā)表于 2019-10-19 15:51 | 只看該作者
這個(gè)點(diǎn)焊機(jī)是用微波爐中的變壓器改的嗎?微波爐變壓器初級(jí)線(xiàn)圈直流電阻是2歐,接到交流電上電流很大,會(huì)引起火災(zāi)的,點(diǎn)焊時(shí)間很短,只能是幾毫秒才行。
回復(fù)

使用道具 舉報(bào)

21#
ID:624444 發(fā)表于 2019-11-7 14:35 | 只看該作者
郝小白 發(fā)表于 2019-1-13 00:37
這么高端,我看有一個(gè)純硬件的

能分享不
回復(fù)

使用道具 舉報(bào)

22#
ID:375055 發(fā)表于 2019-11-17 22:24 | 只看該作者
我也下載試試
回復(fù)

使用道具 舉報(bào)

23#
ID:164939 發(fā)表于 2020-3-24 16:46 | 只看該作者

謝謝你呀.DOWN下來(lái)學(xué)習(xí)一下!
回復(fù)

使用道具 舉報(bào)

24#
ID:626287 發(fā)表于 2020-5-29 18:19 | 只看該作者
能驅(qū)動(dòng)MOS板或者晶閘管??
回復(fù)

使用道具 舉報(bào)

25#
ID:748246 發(fā)表于 2021-2-17 14:23 | 只看該作者
pcb工程打不開(kāi)報(bào)錯(cuò)
回復(fù)

使用道具 舉報(bào)

26#
ID:140733 發(fā)表于 2023-11-15 11:21 | 只看該作者
感謝樓主,這是電容?變壓器?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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