久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)軟保護(hù)電機(jī)的自動抽水系統(tǒng)原理圖與程序設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:341842 發(fā)表于 2020-12-15 18:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
分享一個小項目與大家一起學(xué)習(xí)交流,因為個人工作等原此還是為初稿,未做進(jìn)一步的升級完善優(yōu)化。如后期有時間增加一些功能往智能型,顯示,水位等。

設(shè)計初終:發(fā)現(xiàn)市面賣的一些產(chǎn)品,要么價格高,要么保護(hù)電機(jī)方案采用硬件,硬件探頭容易引起失效,還在電極被污化后沒有很好起到保護(hù),所以造成一些如電機(jī)線路損壞,水漫金山。這些現(xiàn)象都在設(shè)備后期使用久后的根問題。為此下面采用軟件邏輯及檢測判斷的思路來有效的設(shè)計一個保護(hù),把保護(hù)級別為最高,這樣就算有故障也保護(hù)財產(chǎn)的安全,降成不必要損失。


設(shè)計核心:
1.采用新唐N76e003單片機(jī)方案:性價比高,芯片功能強(qiáng)大,足夠滿足些系統(tǒng)的設(shè)計;
2.水位檢測方案:采用電極檢測(ps:初稿只做適用性開發(fā),未做水位顯示);
3.供電方案:采用5V系統(tǒng) 及電極檢測,安全性及利用(ps:好多閑置的手機(jī)充電器);
4.控制方案:采用小功率繼電器+接觸器方案;
5.程序方案:帶保護(hù)電機(jī)方案,電極故障判斷;

設(shè)計思路原理:
1.電路板電源部份:只需更換對應(yīng)參數(shù)的轉(zhuǎn)換LDO芯片等相關(guān)器參數(shù),電源可以改9V、12V。
2.繼電器部分:沒有選擇用大功率30A的設(shè)計,而選用小功能率的原因是電機(jī)一般都啟動電流大,理論上30A繼電器也是夠的,但大功率的繼電觸點還是不及于小型接觸來得穩(wěn)定可靠(ps:這個用久你就知道)所以選擇小功率繼電器,繼電器-->接觸器-->電機(jī)。
3.電極檢測部份:采用三極管利用極管原理,做為電極檢測(ps:這個部份可以加處光耦效會更好)。
4.指示部份:采用LED指示,狀態(tài):運行,停止,故障,模式。
5.按鍵部分:手動/自動模式,電極故障時可啟用手動模式,手動模式狀態(tài)下,開啟后在預(yù)定或電極檢測一定后自動停止運行。

附件:
設(shè)計的原理圖
設(shè)計程序源碼
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機(jī)源程序如下:
  1. /********************************************************************************
  2. * @                            水塔自動抽水控制器
  3. * @項目: shuita
  4. * @描述:  1.通過檢測高低水位信號  
  5.                                          2.實現(xiàn)繼電器的開關(guān),控制電機(jī)的開啟關(guān)閉
  6. * @版本:V2.0
  7. * @備注:開機(jī)默認(rèn)為內(nèi)部高速HIRC(16M)
  8. ********************************************************************************/
  9. #include "N76E003.h"
  10. #include "Common.h"
  11. //#include "Delay.h"
  12. #include "timer.h"
  13. #include "SFR_Macro.h"
  14. #include "Function_Define.h"

  15. #include "relay.h"
  16. #include "led.h"
  17. #include "key.h"
  18. #include "waterlevel.h"
  19. #include "watchdog.h"

  20. /******************************************************************************
  21. *@  狀態(tài)/標(biāo)記/變量定義
  22. *@
  23. ******************************************************************************/

  24. ////高水位時間必須大于低水位時間 20200625  增加高低水故障判斷時間分開
  25. #define H_OVERTIME 60 //單位:分  max=255/60=4h15分
  26. #define L_OVERTIME 30 //單位:分  max=255/60=4h15分

  27. //debug
  28. //#define H_OVERTIME   3        //單位:分  max=255/60=4h15分
  29. //#define L_OVERTIME   1                //單位:分  max=255/60=4h15分

  30. //全局變量
  31. uint8_t timerCountBuff; //高/低水位定時器計數(shù)
  32. bit openWorkFlag = 0;
  33. bit stopWorkFlag = 0;
  34. bit autoModeLock = 1; //1為自動

  35. uint8_t workStep = 0;

  36. /*****************************************************************************
  37. *@  函數(shù)聲明
  38. *@
  39. ******************************************************************************/
  40. void allGPIOConfig(void);
  41. void motorAutoWork(void);
  42. void motorManualWork(void);

  43. /*****************************************************************************
  44. *@  main 函數(shù)
  45. *@
  46. ******************************************************************************/
  47. void main(void)
  48. {
  49.         openWorkFlag = 0;
  50.         timerCountBuff = 0;

  51.         allGPIOConfig();
  52.         allTimerInit();
  53.         keyInit();
  54.         watchdogInit();

  55.         while (1)
  56.         {

  57.                 keyProceWork();
  58.                 if (autoModeLock)
  59.                 {
  60.                         feedDog();
  61.                         ioLedAutoON;
  62.                         motorAutoWork();
  63.                 }
  64.                 else //if(autoModeLock == 0)
  65.                 {
  66.                         feedDog();
  67.                         ioLedAutoOFF;
  68.                         motorManualWork();
  69.                 }
  70.                 feedDog();
  71.         }
  72. }

  73. /*******************************************************************************************************************
  74. *@  名稱:void allGPIOConfig(void)
  75. *@        功能:實現(xiàn)所需io初始化
  76. *@        描述:
  77. *@        輸入:none
  78. *@        輸出:none
  79. ******************************************************************************************************************/
  80. void allGPIOConfig(void)
  81. {
  82.         //Set_All_GPIO_Quasi_Mode;
  83.         relayInit(); //繼電器初始化
  84.         ledInit();         //指示燈初始化
  85.         waterLevelInit();
  86. }

  87. /************************************************************************************
  88.   @函數(shù):void motorAutoWork(void)
  89.   @輸入:times  高水位計時時間
  90.         @返回:none
  91.         @描述:
  92.                                  1.缺水: 低水位電極檢測到無水,后啟運抽水
  93.                                  2.有水:低水位電極檢測到有水,則不進(jìn)行抽水
  94.                                  3.上水:過程中在設(shè)定時同檢測,高低電極如果異常則停止自動抽水顯示故障
  95.                                  4.上水-停水:正常過程中判斷高水位電極是否電平,如有則停止抽水

  96.         @設(shè)計:byJin
  97.         @日期:2020/04/10
  98. **********************************************************************************/
  99. void motorAutoWork(void)
  100. {
  101.         bit waterLevelFlag = 0;

  102.         switch (workStep)
  103.         {
  104.         case 0:
  105.         {
  106.                 //缺水判斷
  107.                 waterLevelFlag = lowLevelCheck();
  108.                 if (waterLevelFlag == 0)
  109.                 {
  110.                         workStep = 1;
  111.                 }
  112.                 else if (waterLevelFlag == 1)
  113.                 {
  114.                         workStep = 0;
  115.                 }
  116.                 break;
  117.         }
  118.         case 1: //水滿 -停水
  119.         {
  120.                 waterLevelFlag = highLevelCheck();
  121.                 if (waterLevelFlag == 0) //未到高水位繼續(xù)運行
  122.                 {
  123.                         TR0 = 1;
  124.                         relayWork(1);
  125.                         runWorkLedFlash();
  126.                         workStep = 1;

  127.                         //低水位電極異常,指定時間檢測無效則停機(jī)保護(hù)
  128.                         if (timerCountBuff == L_OVERTIME && lowLevelCheck() == 0)
  129.                         {
  130.                                 TR0 = 0;
  131.                                 timerCountBuff = 0;
  132.                                 workStep = 2;
  133.                         }

  134.                         //高水位電極異常,指定時間檢測無效則停機(jī)保護(hù)
  135.                         if (timerCountBuff == H_OVERTIME && highLevelCheck() == 0)
  136.                         {
  137.                                 TR0 = 0;
  138.                                 timerCountBuff = 0;
  139.                                 workStep = 2;
  140.                         }
  141.                 }
  142.                 //電極探到高水位
  143.                 else if (waterLevelFlag == 1)
  144.                 {
  145.                         TR0 = 0;
  146.                         relayWork(0);
  147.                         ioLedStopON;
  148.                         ioLedRunOFF;
  149.                         workStep = 0;
  150.                 }
  151.                 break;
  152.         }
  153.         case 2:
  154.         { //電極探頭異常,存在故障 自動模式無法使用
  155.                 TR0 = 0;
  156.                 relayWork(0);
  157.                 ioLedStopON;
  158.                 ioLedRunOFF;
  159.                 ioLedHitchON; //故障燈亮
  160.                 workStep = 2; //切換回自動后故障未解除也不能工作,此值未改變
  161.         }
  162.         break;
  163.         default:
  164.                 relayWork(0);
  165.                 break;
  166.         }
  167. }

  168. /************************************************************************************
  169.         @函數(shù):void motorManualWork(void)
  170.   @輸入:times  高水位計時時間
  171.         @返回:none
  172.         @描述:
  173.                                  1.手啟自停 -->停采用高電極或延時判斷
  174.                                  2.高水位電極有效,則按開無效不進(jìn)行啟動
  175.         @設(shè)計:byJin
  176.         @日期:2020/04/10
  177. **********************************************************************************/
  178. void motorManualWork(void)
  179. {
  180.         if (openWorkFlag && highLevelCheck() == 0 && timerCountBuff < H_OVERTIME && stopWorkFlag == 0) //高水位電極未檢測到滿且手動開啟,則啟動

  181.         { //啟動進(jìn)中,按開無效,只能按關(guān)才有效
  182.                 TR0 = 1;
  183.                 relayWork(1);
  184.                 runWorkLedFlash();
  185.         }

  186.         else

  187.         {
  188.                 //                 if(timerCountBuff == H_OVERTIME || highLevelCheck() == 1 ||stopWorkFlag == 1) //高水位電極檢測滿則-- 停止
  189.                 //                        {                                                                                                                                                                                                                                                        //采用3種方法停止:定時停止、高水位電極檢測停止和手動按關(guān)停止
  190.                 TR0 = 0;
  191.                 relayWork(0);
  192.                 ioLedStopON;
  193.                 ioLedRunOFF;
  194.                 ioLedHitchOFF;
  195.                 timerCountBuff = 0;
  196.                 openWorkFlag = 0;
  197.                 stopWorkFlag = 0;
  198.                 return;
  199.                 //                        }
  200.         }
  201. }
復(fù)制代碼


全部資料51hei下載地址:
shuita.rar (1.48 MB, 下載次數(shù): 15)

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人jvid在线播放 | 在线小视频 | 日韩免费在线 | 成人天堂噜噜噜 | 黄a免费网络 | 成人av一区二区三区 | 亚洲精品福利在线 | 久久三级影院 | 精品一区久久 | 91网视频| 在线观看亚洲 | 久久9久 | 粉色午夜视频 | 久久精品亚洲精品国产欧美 | 日韩欧美一区在线 | 激情毛片| 久久中文字幕一区 | 中文字字幕一区二区三区四区五区 | 精品国产乱码久久久久久图片 | 精品免费视频 | 国产精品视频免费看 | 成人高清在线视频 | 91在线观看 | 成人蜜桃av | 欧美成人手机在线 | 亚洲一区二区三区四区五区午夜 | а天堂中文最新一区二区三区 | 国产 日韩 欧美 制服 另类 | 亚洲一区免费在线 | 精品久久久久久久人人人人传媒 | 午夜激情视频在线 | 成人精品鲁一区一区二区 | 99热播精品| 亚洲啪啪 | 国产九九精品 | 亚洲精品视频在线看 | 国产一级大片 | 欧美一区二区三区在线看 | 精品一区二区三区在线视频 | 欧美精品一二区 | 免费在线看黄视频 |