找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

74HC595芯片繼電器模塊外接電源無法正確控制繼電器吸合

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:475803 發(fā)表于 2019-3-25 21:12 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大神好,小弟用74HC595這個串入并出的芯片控制繼電器的吸合,但是繼電器的外部三個端子上沒有接任何電源的時候是可以正確按照我代碼的控制順序進行繼電器的吸合。視頻見https://v.youku.com/v_show/id_XNDExMDk2MjUyNA==.html
當外部24V獨立DC電源接通后,可以看到在對應(yīng)的繼電器位置,會出現(xiàn)混亂,具體每次表現(xiàn)不一致,但是不能按照24V外部電源不接通的情況進行吸合, 視頻見 https://v.youku.com/v_show/id_XNDExMDk2MTM1Mg==.html
這個是因為24V的直流電源對HC595芯片的引腳輸出產(chǎn)生了干擾嗎?線路檢查了很多次,完全沒有問題。繼電器規(guī)格是可以3A 250VAC的,所以這么低的電壓應(yīng)該也不至于影響到繼電器的控制信號啊。 希望有經(jīng)驗的大佬指點指點。

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

使用道具 舉報

沙發(fā)
ID:466164 發(fā)表于 2019-3-25 22:27 | 只看該作者
你把接負載后變化頻率調(diào)低點,或者說把繼電器打開關(guān)閉時間給長點,再檢查你電路繼電器線圈上反接有二極管沒,這兩個建議足以解決你的問題。
回復(fù)

使用道具 舉報

板凳
ID:475803 發(fā)表于 2019-3-25 23:25 | 只看該作者
4個級聯(lián)的情況也試驗了,程序里循環(huán)寫兩組數(shù)據(jù),第一組發(fā)0xff,0x00,0x00,0xff,然后延時幾秒后,第二組數(shù)據(jù)0x00,0xff,0xff,0x00。 在繼電器外部的24VDC電源沒有接上的情況下,繼電器按照程序設(shè)計的進行吸合。視頻見https://v.youku.com/v_show/id_XNDEwNTQzODAzNg==.html?spm=a2hzp.8244740.0.0

一旦外部24V直流電源接通,其實就是把正極從繼電器的共同端吸合至常開端,接通24V電源控制其他設(shè)備。就會出現(xiàn)程序初始化就繼電器全部吸合的狀態(tài),然后感覺是到了延時函數(shù)的時候繼電器瘋狂的吸合,感覺像是延時函數(shù)中的循環(huán)在不停的往HC595的DS端寫入0和1導(dǎo)致。視頻見:https://v.youku.com/v_show/id_XNDEwNTQzOTU5Ng==.html?spm=a2hzp.8244740.0.0

這一周都在反復(fù)改代碼重新接線調(diào)整,但是一直失敗。。。是一直失敗。。。查了網(wǎng)上說的繼電器在斷在的時候線圈會產(chǎn)生反向電動勢, 關(guān)鍵問題是程序初始化燒入單片機后,都沒有斷開的步驟直接就全部吸合了。


百思不得其解。望大家指點一二。謝謝!
回復(fù)

使用道具 舉報

地板
ID:96682 發(fā)表于 2019-3-25 23:29 | 只看該作者
上視頻不如上電路圖?季康碾娐范际褂锚毩㈦娫矗⒉捎霉怆姼綦x措施避免干擾,視頻都沒看到這些
回復(fù)

使用道具 舉報

5#
ID:475803 發(fā)表于 2019-3-26 08:22 來自觸屏版 | 只看該作者
7358655 發(fā)表于 2019-3-25 22:27
你把接負載后變化頻率調(diào)低點,或者說把繼電器打開關(guān)閉時間給長點,再檢查你電路繼電器線圈上反接有二極管沒 ...

繼電器買的是封裝好的,就是一塊595的芯片外加一塊驅(qū)動繼電器的芯片,沒有光耦。所以封裝好的繼電器應(yīng)該是有反接二極管吧。我看看型號,再查一下。謝謝!
回復(fù)

使用道具 舉報

6#
ID:475803 發(fā)表于 2019-3-26 08:33 來自觸屏版 | 只看該作者
wc86110 發(fā)表于 2019-3-25 23:29
上視頻不如上電路圖。考究的電路都使用獨立電源,并采用光電隔離措施避免干擾,視頻都沒看到這些

接線很簡單,所有驅(qū)動繼電器的12伏電源是獨立一組,然后該12伏電源通過板子上的芯片降壓然后驅(qū)動芯片的vcc,外接繼電器的24V也是獨立的一組電源。
光電隔離措施是指驅(qū)動繼電器和hc595芯片之間嗎?這個板子是買的現(xiàn)成的,問了老板,他說不需要啊。
回復(fù)

使用道具 舉報

7#
ID:158375 發(fā)表于 2019-3-26 08:54 | 只看該作者
控制幾十個繼電器都無問題,估計是你的電路有瑕疵,上電路吧!
再個:你的繼電器接的什么負載?
回復(fù)

使用道具 舉報

8#
ID:213173 發(fā)表于 2019-3-26 09:03 | 只看該作者
首先要找干擾源,從你表述的現(xiàn)象看是繼電器觸點開關(guān)產(chǎn)生的火花干擾(直流電尤甚)。這種干擾的頻譜范圍很寬,獨立DC電源并不能消除空間輻射干擾。建議:1.在繼電器動、靜觸點間加裝阻容吸收電路。2.MCU與74HC595的信號線及信號地線加共模磁環(huán)(信號線及信號地線成對),盡量縮短74HC595之間聯(lián)級信號線及信號地線加共模磁環(huán)。3.降低信號傳輸阻抗(MCU的IO口設(shè)為強推挽,信號線與地之間跨接1K電阻)。4.改為光耦隔離,MOS管代替繼電器。
回復(fù)

使用道具 舉報

9#
ID:475803 發(fā)表于 2019-3-26 11:40 | 只看該作者
笨笨兔 發(fā)表于 2019-3-26 08:54
控制幾十個繼電器都無問題,估計是你的電路有瑕疵,上電路吧!
再個:你的繼電器接的什么負載?

一個負載大概也就是幾百mA的電流,不通過繼電器用直流的24V正負極直接接負載端沒有問題,而且電源功率很足,計算過即使所有板子的繼電器同時開也不可滿足電流需求。電路我得畫一下,剛接觸硬件這行業(yè),好多工具還沒有。謝謝!
回復(fù)

使用道具 舉報

10#
ID:475803 發(fā)表于 2019-3-26 11:45 | 只看該作者
wulin 發(fā)表于 2019-3-26 09:03
首先要找干擾源,從你表述的現(xiàn)象看是繼電器觸點開關(guān)產(chǎn)生的火花干擾(直流電尤甚)。這種干擾的頻譜范圍很寬 ...

強烈感謝wulin總工您的回復(fù),您說的好多名詞我得先搜搜看怎么做。新手入行,要學(xué)習(xí)的太多了。 真的十分感謝您的耐心指點!
回復(fù)

使用道具 舉報

11#
ID:123289 發(fā)表于 2019-3-27 08:46 | 只看該作者
按沙發(fā)的指點做。
回復(fù)

使用道具 舉報

12#
ID:475803 發(fā)表于 2019-3-29 09:50 | 只看該作者
yzwzfyz 發(fā)表于 2019-3-27 08:46
按沙發(fā)的指點做。

我嘗試了把繼電器吸合過后的時間調(diào)整的很長,大概有5秒左右的時間才會跳轉(zhuǎn)到下一個控制指令,但是吸合的一瞬間如果繼電器的外部端子還是有電源接通的話,干擾還是繼續(xù)存在。我嘗試過了吸合后,把外部電源的線輕輕的放在繼電器的常開端子上,有時候沒干擾,有時候還是會引起其他的繼電器打開。負載端反接二極管還沒嘗試,手邊沒有二極管,已經(jīng)下單買了,等收到后試一下。。。謝謝!

回復(fù)

使用道具 舉報

13#
ID:213173 發(fā)表于 2019-3-29 11:20 | 只看該作者
izhonguo 發(fā)表于 2019-3-29 09:50
我嘗試了把繼電器吸合過后的時間調(diào)整的很長,大概有5秒左右的時間才會跳轉(zhuǎn)到下一個控制指令,但是吸合的 ...

你既然已經(jīng)明確的知道干擾源來自繼電器觸點火花,為什么不在此處設(shè)法解決?其它方法都是隔靴搔癢。
回復(fù)

使用道具 舉報

14#
ID:96682 發(fā)表于 2019-3-29 12:48 | 只看該作者
izhonguo 發(fā)表于 2019-3-29 09:50
我嘗試了把繼電器吸合過后的時間調(diào)整的很長,大概有5秒左右的時間才會跳轉(zhuǎn)到下一個控制指令,但是吸合的 ...

樓主所謂的獨立電源是不是使用同一個電源引出的不同電壓?尤其用的是開關(guān)電源驅(qū)動大負載對整個電路的穩(wěn)定性影響肯定不小
是在繼電器兩端并接二極管
回復(fù)

使用道具 舉報

15#
ID:475803 發(fā)表于 2019-4-1 10:29 | 只看該作者
wulin 發(fā)表于 2019-3-29 11:20
你既然已經(jīng)明確的知道干擾源來自繼電器觸點火花,為什么不在此處設(shè)法解決?其它方法都是隔靴搔癢。

嗯嗯,上周按照您的指點,在網(wǎng)上買了排除干擾的一些硬件,但是還沒有收到。所以想試試其他的方法是否可以解決?刂茊纹瑱C的代碼現(xiàn)在簡化之后,如果通過串口發(fā)送數(shù)據(jù)到單片機執(zhí)行相應(yīng)的繼電器閉合的話,外部24V接在繼電器的外部端子上,竟然沒有問題。但是如果直接把數(shù)據(jù)寫死在程序里,就會出現(xiàn)控制的問題。即使發(fā)送的是同樣的數(shù)據(jù)。寫死在程序里的數(shù)據(jù)如果要實現(xiàn)兩組隔段時間輸出的話,中間要加一個延時函數(shù),有沒有可能是延時函數(shù)導(dǎo)致的單片機輸出0/1,從而引起的繼電器不受控?

/*-----------------------------------------------
工程名:   STC操作74HC595級聯(lián) 控制繼電器程序
-----------------------------------------------*/
#include <reg51.H>
#define uint unsigned int
#define uchar unsigned char
uint status[5]={00};        //測試程序模式選擇
uchar table0[] ="OK\n";        //用于串口助手返回驗證
uchar table1[]="ERROR\n";//用于串口助手返回驗證
bit flag=0;
uint rnum=5;
/*-----------------------------------------------
STC單片機 硬件設(shè)備引腳定義如下
-----------------------------------------------*/
        sbit   OE   = P3^4;           //使能線  
        sbit   SCK  = P3^6;           //時鐘線
        sbit   RCK  = P3^7;           //鎖存線  
        sbit   DATA = P3^5;           //數(shù)據(jù)線
        sbit   POWER = P0^0;  //閉合模塊總電源繼電器,模塊通電
        sbit   RPOWER = P0^1;  //閉合模塊總電源繼電器,模塊通電

/*-----------------------------------------------
全部變量函數(shù)定義
-----------------------------------------------*/
/*-----------------------------------------------
函數(shù)名:初始化程序
-----------------------------------------------*/
/*******************串口初始化函數(shù)*************************/
void URATinit()
{  
        PCON &= 0x7F;                //波特率不倍速9600
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        TMOD= 0x20;                        //設(shè)定定時器1為8位自動重裝方式
        TL1 = 0xFD;                        //設(shè)定定時初值
        TH1 = 0xFD;                        //設(shè)定定時器重裝值
        ET1 = 0;                           //禁止定時器1中斷
        TR1 = 1;                           //啟動定時器1
        EA = 1;                            //開總中斷
        ES = 1;                            //開串口中斷
}

/**********串口發(fā)送函數(shù)**************/
void SendOneByte(uchar i)
{
    SBUF = i;                //發(fā)送數(shù)據(jù)
    while(!TI);        //等待發(fā)送完成
    TI = 0;                        //發(fā)送中斷請求標志位清0
}

/*-----------------------------------------------
函數(shù)名:single 74HC595寫入字節(jié)函數(shù)
-----------------------------------------------*/
void SEND_HC595(uchar dat)
{        
                        uchar i;
                        for(i=0;i<8;i++)
                {
             dat <<= 1;
             DATA  = CY; //溢出位賦值數(shù)據(jù)輸出端
             SCK = 1; //移位時鐘
             SCK = 0;
                }
}
/*-----------------------------------------------
函數(shù)名:74HC595寫入字節(jié)函數(shù)
-----------------------------------------------*/

void HC595()
{     
                   uchar i,j;
                if(flag==1)
                {
                        for(i=0;i<3;i++)
                {
                    SendOneByte(table0);//返回PC "OK"(用串口助手文本模式接收)
                }
                }
                ES=0;
                for(j=0;j<rnum;j++)
                {
                         SEND_HC595(status[j]);
                }
                RCK=1;
                OE=0;
                RCK=0;
                ES=1;
            flag=0;
}

/*-----------------------------------------------
函數(shù)名:main 主函數(shù)
-----------------------------------------------*/
void main(void)
{
        POWER = 1;  //閉合模塊總電源繼電器,模塊通電
        RPOWER = 1; //閉合電磁鐵模塊總電源繼電器,模塊通電
        OE=1;
        SCK = 0;  //初始化移位時鐘端
    RCK  = 0;  //初始化鎖存輸出端
        URATinit();         //初始化串口
        while(1)
        {
                HC595();
        }
}
/*-----------------------------------------------
函數(shù)名:中斷函數(shù)
-------------------------------------------------*/
void receive() interrupt 4
{
        static uchar i=0;  //靜態(tài)計數(shù)變量
        RI=0;        //接收中斷請求標志位清0
        status=SBUF;  //接收到的數(shù)據(jù)串保存在模式選擇中
                if(status[0]==0xAA)
                {
                    i++;
                        if(i>=rnum)
                        {
                          flag=1;
                                i=0;      //計數(shù)變量清0
                        }
                }
}
回復(fù)

使用道具 舉報

16#
ID:475803 發(fā)表于 2019-4-1 10:32 | 只看該作者
wc86110 發(fā)表于 2019-3-29 12:48
樓主所謂的獨立電源是不是使用同一個電源引出的不同電壓?尤其用的是開關(guān)電源驅(qū)動大負載對整個電路的穩(wěn)定 ...

不是。。獨立電源是從220V直接降壓到24V的一組電源,控制繼電器板子的12V電源也是從220V直接降到12V的一組電源,兩個是完全獨立的。。只不過都是從插排上接的市電。二極管我買了1A/50V的整流二極管,還沒有收到。收到后,我也試試增加是否能排除干擾。謝謝!
回復(fù)

使用道具 舉報

17#
ID:213173 發(fā)表于 2019-4-1 14:51 | 只看該作者
izhonguo 發(fā)表于 2019-4-1 10:29
嗯嗯,上周按照您的指點,在網(wǎng)上買了排除干擾的一些硬件,但是還沒有收到。所以想試試其他的方法是否可以 ...

這段程序改這樣才合理些。
  1. /*-----------------------------------------------
  2. 工程名:   STC操作74HC595級聯(lián) 控制繼電器程序
  3. -----------------------------------------------*/
  4. #include <reg51.H>
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. #define rnum 5
  8. uint status[5];        //串口接收緩存
  9. uchar table0[] ="OK\n";        //用于串口助手返回驗證
  10. uchar table1[]="ERROR\n";//用于串口助手返回驗證
  11. bit flag=0;

  12. /*-----------------------------------------------
  13. STC單片機 硬件設(shè)備引腳定義如下
  14. -----------------------------------------------*/
  15. sbit   OE   = P3^4;           //使能線  
  16. sbit   SCK  = P3^6;           //時鐘線
  17. sbit   RCK  = P3^7;           //鎖存線  
  18. sbit   DATA = P3^5;           //數(shù)據(jù)線
  19. sbit   POWER = P0^0;  //閉合模塊總電源繼電器,模塊通電
  20. sbit   RPOWER = P0^1;  //閉合模塊總電源繼電器,模塊通電

  21. /*-----------------------------------------------
  22. 全部變量函數(shù)定義
  23. -----------------------------------------------*/
  24. /*-----------------------------------------------
  25. 函數(shù)名:初始化程序
  26. -----------------------------------------------*/
  27. /*******************串口初始化函數(shù)*************************/
  28. void URATinit()
  29. {  
  30.         PCON &= 0x7F;                //波特率不倍速9600
  31.         SCON = 0x50;                //8位數(shù)據(jù),可變波特率
  32.         TMOD= 0x20;                        //設(shè)定定時器1為8位自動重裝方式
  33.         TL1 = 0xFD;                        //設(shè)定定時初值
  34.         TH1 = 0xFD;                        //設(shè)定定時器重裝值
  35.         ET1 = 0;                           //禁止定時器1中斷
  36.         TR1 = 1;                           //啟動定時器1
  37.         EA = 1;                            //開總中斷
  38.         ES = 1;                            //開串口中斷
  39. }

  40. /**********串口發(fā)送函數(shù)**************/
  41. void SendOneByte(uchar i)
  42. {
  43.     SBUF = i;                //發(fā)送數(shù)據(jù)
  44.     while(!TI);        //等待發(fā)送完成
  45.     TI = 0;                        //發(fā)送中斷請求標志位清0
  46. }

  47. /*-----------------------------------------------
  48. 函數(shù)名:single 74HC595寫入1個字節(jié)函數(shù)
  49. -----------------------------------------------*/
  50. void SEND_HC595(uchar dat)
  51. {        
  52.         uchar i;
  53.         for(i=0;i<8;i++)
  54.         {
  55.                 dat <<= 1;
  56.                 DATA  = CY; //溢出位賦值數(shù)據(jù)輸出端
  57.                 SCK = 1; //移位時鐘
  58.                 SCK = 0;
  59.         }
  60. }
  61. /*-----------------------------------------------
  62. 函數(shù)名:74HC595寫入4個字節(jié)函數(shù)
  63. -----------------------------------------------*/

  64. void HC595()
  65. {     
  66.         uchar i;
  67.         if(flag==1)
  68.         {
  69.                 flag=0;
  70.                 ES=0;
  71.                 for(i=0;i<3;i++)
  72.                 {
  73.                         SendOneByte(table0);//返回PC "OK"(用串口助手文本模式接收)
  74.                 }
  75.                 for(i=1;i<rnum;i++)
  76.                 {
  77.                         SEND_HC595(status[i]);//輸出緩存status[1]~[4]數(shù)據(jù)
  78.                 }
  79.                 RCK=1;
  80.                 OE=0;
  81.                 RCK=0;
  82.                 ES=1;
  83.         }
  84. }

  85. /*-----------------------------------------------
  86. 函數(shù)名:main 主函數(shù)
  87. -----------------------------------------------*/
  88. void main(void)
  89. {
  90.         POWER = 1;  //閉合模塊總電源繼電器,模塊通電
  91.         RPOWER = 1; //閉合電磁鐵模塊總電源繼電器,模塊通電
  92.         OE=1;
  93.         SCK = 0;  //初始化移位時鐘端
  94.         RCK  = 0;  //初始化鎖存輸出端
  95.         URATinit();         //初始化串口
  96.         while(1)
  97.         {
  98.                 HC595();
  99.         }
  100. }
  101. /*-----------------------------------------------
  102. 函數(shù)名:中斷函數(shù)
  103. -------------------------------------------------*/
  104. void receive() interrupt 4
  105. {
  106.         static uchar i=0;  //靜態(tài)計數(shù)變量
  107.         RI=0;        //接收中斷請求標志位清0
  108.         status[i]=SBUF;  //接收到的數(shù)據(jù)串保存在模式選擇中
  109.         if(status[0]==0xff)//驗證數(shù)據(jù)頭,后4字節(jié)為有效數(shù)據(jù)
  110.         {
  111.                 i++;
  112.                 if(i>=rnum)
  113.                 {
  114.                         flag=1;
  115.                         i=0;      //計數(shù)變量清0
  116.                 }
  117.         }
  118. }
復(fù)制代碼

回復(fù)

使用道具 舉報

18#
ID:111634 發(fā)表于 2019-4-1 21:13 | 只看該作者
595驅(qū)動力不足
回復(fù)

使用道具 舉報

19#
ID:158375 發(fā)表于 2019-4-2 14:40 | 只看該作者
給繼電器線圈加反向二極管吧?
看起來你的負載不是感性負載。。。。。。
回復(fù)

使用道具 舉報

20#
ID:202748 發(fā)表于 2019-4-2 15:55 | 只看該作者
你不接24V會正常,說明程序沒問題。我估計問題是出在繼電器這塊板上。你仔細找一找,你接入24V電源的接口是否與電路板的其他地方有相連(比如電路板的正極)。
回復(fù)

使用道具 舉報

21#
ID:475803 發(fā)表于 2019-4-2 19:25 | 只看該作者
wulin 發(fā)表于 2019-4-1 14:51
這段程序改這樣才合理些。
/*-----------------------------------------------
工程名:   STC操作74H ...

wulin總工,您好,這個代碼是我一行一行試出來的,之前按照很完美的邏輯并沒有辦法運行,我就開始從最簡單的步驟一步一步往上加,比如說剛開始簡化到只讀取程序內(nèi)寫死的一個字節(jié)的代碼,然后慢慢加到中斷,加到四個模塊,我估計八個模塊也能用,但是板子沒那么多,所以只用到了四個模塊。之前很完美的程序包含了OK返回邏輯和ERROR返回邏輯,經(jīng)過我一行一行代碼增加去試驗,之前我那個代碼是目前沒有辦法消除外部干擾情況下還能達到目的最齊全的了。如果增加了ERROR返回邏輯,又開始報錯。同樣如果把除了返回OK的代碼之外的放進去判斷flag==1的邏輯里(就像您寫的,不過status和table0應(yīng)該是后面都忘記了加[ i],更符合邏輯的代碼),就會報錯。。。這個實在是變成玄學(xué)了。這是是一鏡哦耶版的視頻,真的無法解釋了。。https://v.youku.com/v_show/id_XNDEyMjg5NTQ1Mg==.html

我試驗出來的代碼:(自動發(fā)送數(shù)據(jù),間隔位1m)


對應(yīng)繼電器狀態(tài):


更符合邏輯的代碼:


對應(yīng)繼電器的狀態(tài):


回復(fù)

使用道具 舉報

22#
ID:475803 發(fā)表于 2019-4-2 19:31 | 只看該作者
笨笨兔 發(fā)表于 2019-4-2 14:40
給繼電器線圈加反向二極管吧?
看起來你的負載不是感性負載。。。。。。

二極管我買了1A/50V的整流二極管, 但是繼電器線圈怎么加方向二極管啊?這個是直接封裝好的繼電器,只有外部三個端口,共同端COM, 常閉端NC, 常開端NO。是說把NO和COM兩個端口加反向二極管?可是這兩個端子無所謂正負啊,我就是導(dǎo)通了負載的正極電源線而已,應(yīng)該沒有正反級的說法吧。。負載端我倒是可以試驗一下反接二極管,但是還沒有收到。。。
回復(fù)

使用道具 舉報

23#
ID:475803 發(fā)表于 2019-4-2 19:33 | 只看該作者
zl2168 發(fā)表于 2019-4-1 21:13
595驅(qū)動力不足

不應(yīng)該是驅(qū)動力不足啊,我看他這個板子上595的輸出端口是直接接在了另一塊驅(qū)動芯片LN2803上,單獨一組12V的直流電源驅(qū)動的。請看我12樓的電路圖。
回復(fù)

使用道具 舉報

24#
ID:475803 發(fā)表于 2019-4-2 19:36 | 只看該作者
ysandi 發(fā)表于 2019-4-2 15:55
你不接24V會正常,說明程序沒問題。我估計問題是出在繼電器這塊板上。你仔細找一找,你接入24V電源的接口是 ...

經(jīng)過過去兩周的無數(shù)次試驗,應(yīng)該確定是24V的電源接通到繼電器的端子上,對內(nèi)部產(chǎn)生了信號干擾。因為24V的接線是不會接觸到板子上的任何電路的,繼電器這個動/靜觸電是唯一接觸24V的地方,而且繼電器的規(guī)格上寫的是可以到250V的電壓,電流的承載能力應(yīng)該是我負載的100倍至少。

回復(fù)

使用道具 舉報

25#
ID:475803 發(fā)表于 2019-4-2 19:43 | 只看該作者
ysandi 發(fā)表于 2019-4-2 15:55
你不接24V會正常,說明程序沒問題。我估計問題是出在繼電器這塊板上。你仔細找一找,你接入24V電源的接口是 ...

而且板子我買了三家不同的,都是這個問題,可以復(fù)現(xiàn)。我這周一嘗試了直接用HC595的芯片插面包板上,自己將輸出的八個引腳接到一組帶光耦分離的繼電器板子上,不過我現(xiàn)在還沒有能把595面包板上對應(yīng)的引腳電壓給輸出正確,程序還是同樣的程序,但是燒入單片機之后輸出到芯片上拿萬用表量并不能實現(xiàn)我控制的引腳高低電平。 我用的是P3^4,P3^5,P3^6,P3^7這幾個IO口,但是沒有接上拉下拉電阻。
回復(fù)

使用道具 舉報

26#
ID:475803 發(fā)表于 2019-4-2 22:23 | 只看該作者
wulin 發(fā)表于 2019-4-1 14:51
這段程序改這樣才合理些。
/*-----------------------------------------------
工程名:   STC操作74H ...

奇怪,我回復(fù)了一條很長很詳細的帖子,但是一直沒有出現(xiàn),我后面回復(fù)的幾個帖子都通過審核了。。。所以只能靠記憶重新寫一次。
代碼是我接了繼電器的外部電源后發(fā)現(xiàn)有問題,從最簡單的開始一行一行測試的。這個是我目前能加到最多的邏輯而且能按照我期待的工作的(在沒有增加排除干擾的其他硬件的前期下)。之前把其他的執(zhí)行代碼也放在了flag==1的括弧內(nèi),但是會出現(xiàn)繼電器亂跳的情況。(wulin總工您代碼里那個status和table0數(shù)組里循環(huán)寫的時候應(yīng)該有個在后面吧,可能是筆誤)。我重新嘗試了復(fù)原一遍把執(zhí)行的代碼放進去flag==1的邏輯內(nèi),就會出現(xiàn)視頻中這種劈里啪啦亂吸的現(xiàn)象,但是我的那個代碼是完全相同的情況下,能夠按照我想要的結(jié)果執(zhí)行,F(xiàn)在這是變成玄學(xué)了嘛?越符合邏輯的代碼,反而會出錯。我之前還把ERROR這個返回的信息也寫進去了,但是無論如何都會報錯。具體表現(xiàn)為一旦載入了程序就會立馬開始不斷收到ERRPR的錯誤在串口接收的窗口內(nèi)。一鏡哦耶版的視頻在這兒,論壇不支持上傳視頻,所以傳在優(yōu)酷上了,可能有開頭廣告,抱歉。https://v.youku.com/v_show/id_XNDEyMjg5NTQ1Mg==.html?spm=a2ha1.12675304.uerCenter.5!3~5~5!2~DL~DD~A&amp;firsttime=118.93

為了方便閱讀,我截圖幾張放在帖子里:
1. 之前15樓的不太符合邏輯的代碼,自動發(fā)送01 02 03 04數(shù)組,時間間隔為1s.


2.執(zhí)行結(jié)果(外部24V接通,沒有增加任何防干擾的措施):


3.修改為更符合邏輯的代碼(發(fā)送同樣的數(shù)據(jù)):


4.執(zhí)行結(jié)果(每次開的繼電器不一致,截圖不夠完善,視頻看的更清楚):





回復(fù)

使用道具 舉報

27#
ID:202748 發(fā)表于 2019-4-3 08:57 | 只看該作者
izhonguo 發(fā)表于 2019-4-2 19:36
經(jīng)過過去兩周的無數(shù)次試驗,應(yīng)該確定是24V的電源接通到繼電器的端子上,對內(nèi)部產(chǎn)生了信號干擾。因為24V的 ...

去掉24v電源,就用板上的12V電源引到繼電器,串一個小功率負載試試。我經(jīng)常用繼電器控制220V電源,都沒出現(xiàn)過這樣的問題。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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