RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于CW32的CW-W88水泵通用控制板設(shè)計(jì)方案

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 2023-09-12 09:46 ? 次閱讀

一、前言

無刷水泵被廣泛應(yīng)用于許多領(lǐng)域,如工業(yè)生產(chǎn)、農(nóng)業(yè)灌溉以及家庭應(yīng)用。它具有高效、可靠和節(jié)能的特點(diǎn),因此備受青睞。但是無刷水泵的供電是一個(gè)問題。怎么能隨時(shí)隨地的使用無刷水泵呢?總不能拿一個(gè)水泵,還要配一臺(tái)發(fā)電機(jī)吧。所以本次我們使用電動(dòng)車供電,可以滿足用戶騎車到哪,水泵都可以使用的特點(diǎn)。

在戶外的各種場景下,肯定要選擇一顆穩(wěn)定的抗干擾的芯片才行。強(qiáng)烈推薦CW32系列芯片??垢蓴_能力值得您的信賴!

CW32F030C8T6支持工作溫度: -40℃ 至 105℃;

工作電壓:1.65V 至 5.5V

存儲(chǔ)容量: 64K 字節(jié)FLASH,數(shù)據(jù)保持25年@85℃ 8K 字節(jié)RAM,支持奇偶校驗(yàn),128字節(jié)OTP存儲(chǔ)器

使用一顆好芯片,為您照亮開發(fā)之路!

二、CW-W88水泵通用控制板-方案介紹

簡介

CW-W88水泵通用控制板適用于水泵電機(jī)抽水控制應(yīng)用。配合水泵電機(jī),可使用48V或60V電池組(電動(dòng)車電池組)抽水使用。使用前請將電池充滿(電池至少在一半電量以上使用)。控制板具有欠壓保護(hù)、過壓保護(hù)、過流保護(hù)、無水停止保護(hù)、堵轉(zhuǎn)保護(hù),速度異常等功能??蓮V泛應(yīng)用于各類水泵抽水控制。

系統(tǒng)功能

電源接線:紅色,黑色接電源,不分正負(fù),建議按使用習(xí)慣接:紅色接正、黑色接負(fù)。

相線接線:UVW隨機(jī)接入電機(jī)的相線,試看電機(jī)運(yùn)行方向。如需要反轉(zhuǎn),隨意調(diào)換兩根相線,重新上電即可。

電源電壓接入不能超過70V。上電2S后,電機(jī)啟動(dòng)開始抽水運(yùn)行(可根據(jù)需求縮短上電穩(wěn)定時(shí)間)。速度增到最大功率以后,按設(shè)定的最大功率值控制運(yùn)行。如果用戶電機(jī)功率達(dá)不到設(shè)定的功率,控制板則按電機(jī)的最大輸出能力輸出運(yùn)行。

電機(jī)在無水檢測或其它任何故障時(shí),會(huì)自動(dòng)停止運(yùn)行,且以指閃燈的閃爍頻率指示故障狀態(tài)。

工作參數(shù)

型號(hào):CW-W88

使用環(huán)境:48V或60V電池組

工作電壓:40V~60V

工作電流:48V電池組13A、60V電池組10A

最大功率:600W

控制方式:電流閉環(huán)

尺寸:板子為圓形,直徑8CM,高度3CM。建議至少加3MM厚的散熱器

項(xiàng)目組成部分:

CW32主控芯片

這是整個(gè)項(xiàng)目的關(guān)鍵組成部分,它負(fù)責(zé)控制無刷水泵電機(jī)的運(yùn)行和參數(shù)調(diào)節(jié)。CW32主控芯片具有高性能和低功耗的特點(diǎn),可以滿足無刷水泵電機(jī)控制器項(xiàng)目的需求。

無刷水泵電機(jī):

無刷水泵電機(jī)是項(xiàng)目的核心部分,它可以通過電磁感應(yīng)實(shí)現(xiàn)轉(zhuǎn)子轉(zhuǎn)動(dòng)的無刷電機(jī)效果。無刷水泵電機(jī)具有較高的效率和可靠性,適用于各種應(yīng)用場景。

硬件電路:

包含驅(qū)動(dòng)電路,電流采集電路,母線電壓采集電路,反電動(dòng)勢采集電路,電源電路。

軟件編寫:

包含電機(jī)驅(qū)動(dòng)代碼,高壓,低壓保護(hù)及自恢復(fù)。電流保護(hù),速度異常保護(hù),空載保護(hù),啟動(dòng)堵轉(zhuǎn)保護(hù)。

三、項(xiàng)目設(shè)計(jì)說明

硬件設(shè)計(jì)及PCB制板

此線控器是基于武漢芯源半導(dǎo)體推出的CW32F030C8T6產(chǎn)品設(shè)計(jì)研發(fā)而成的,其主要包括MCU、電源部分、電流采樣、電壓采樣、EG3014驅(qū)動(dòng)、反電動(dòng)勢采集等部分,設(shè)計(jì)系統(tǒng)原理框圖如圖1所示:

8353b084-510d-11ee-a25d-92fbcf53809c.png

控制器功能包含:

上電自啟動(dòng),緩慢加速。

啟動(dòng)堵轉(zhuǎn)保護(hù)

速度異常保護(hù)

過欠壓自恢復(fù)保護(hù)

電流保護(hù)

空載保護(hù)

2.設(shè)計(jì)原理圖及PCB板實(shí)物圖

836dbef2-510d-11ee-a25d-92fbcf53809c.png

83a1eb64-510d-11ee-a25d-92fbcf53809c.png

83ca901e-510d-11ee-a25d-92fbcf53809c.png

84052a76-510d-11ee-a25d-92fbcf53809c.png

84e72732-510d-11ee-a25d-92fbcf53809c.png

3.軟件部分

軟件部分主要分為以下幾部分內(nèi)容,軟件構(gòu)成如圖7所示:

85364560-510d-11ee-a25d-92fbcf53809c.png

狀態(tài)機(jī)代碼

switch(USER_sSysStateErr.sSystemState)//狀態(tài)機(jī){
case STATE_IDLE_A: MDS_v_charge();break;//充電
case STATE_INIT_B: MDS_v_Init();break;//初始化
case STATE_START_C: MDS_v_Start_the_judgment(); break;//等待啟動(dòng)信號(hào)
case STATE_ALIGNMENT_D: MDS_v_The_motor_starts();break;//啟動(dòng)
case STATE_ADCLOOP_E:MDS_v_OPEN_starts();break; // 開環(huán)模式
case STATE_BRAKE_F:MDS_v_brake();break; // 剎車
case STATE_FAULT_G:MDS_v_Misjudgment();break; // 錯(cuò)誤判斷
case STATE_WAIT_L:
MDS_v_Error_recovery(USER_sSysStateErr.sSysTime.u32ReStartTime);
break; // 錯(cuò)誤恢復(fù)判斷
case STATE_STOP_M:Stop_Motor();break; // 停止
default:break;}

電流電壓采集計(jì)算代碼

void V_A_calculation(void)
{
USER_sVoltageAll.s16Udc=(float)(SampleData[2]*UPDS_resistance_compute);
        keep_adcvlaue+=SampleData[4];
        keep_adcvnum++;
        if(keep_adcvnum>2)
        {
                keep_adcvnum=0;
        keep_adcvlaue=keep_adcvlaue/2;
        USER_sCurrentAll.s32IdcUse=(SampleData[4]*UPDS_Current_compute)/10;//100mA
        USER_sCurrentAll.IdcValue=(float)USER_sCurrentAll.s32IdcUse/100.0;
        }
}

電機(jī)啟動(dòng)代碼,判斷啟動(dòng)是否失敗

//(3):電機(jī)啟動(dòng)代碼,判斷啟動(dòng)是否失敗。
void Sensorless_MOTOR_START(void)
{
        unsigned char coun = 0;
        USER_BLDC.HALLcountS = 0;
        USER_BLDC.QDPwm = 20; // 啟動(dòng)占空比
        do
        {
                if (Sensorless_START() == 0)
                {
                        coun++;
                        USER_BLDC.QDPwm += 5;
                }
                else
                        break;
        } while (coun < 5 && ErrorCode == 0);
        if (coun >= 5 && ErrorCode == 0)
        {
                ErrorCode = 3;
        } // 啟動(dòng)失敗
}

電機(jī)運(yùn)行代碼

//(4):電機(jī)運(yùn)行代碼
void ADCS_chuli(void)
{
        static unsigned char cou = 0;
        unsigned char hx = 0;
        unsigned int thre = 0;
        if (USER_BLDC.Sta != 2)
                return;
        BEMFConvertedValue = SampleData[TAB_BEMFChannel[Forward_rotation][bHallStartStep1]];
        RisingFalling = TAB_RFling[Forward_rotation][bHallStartStep1];


        if (USER_BLDC.Tonoroff == 0)
                thre = 50; // 30;//248;  //OFF時(shí)刻采集。0.2V閥值248
        else
                thre = SampleData[2] / 2;
        if (RisingFalling == FALLING) // 下降沿
        {
                if (BEMFConvertedValue < thre)
                {
                        cou++;
                        if (cou >= 2)
                        {
                                cou = 0;
                                USER_BLDC.Sta = 3;
                        USER_BLDC.StCountComm++; // 正確檢測到第三相反電動(dòng)勢
                                FFlag = 1;
                                hx = 1;
                        }
                }
                else
                {
                        cou = 0;
                }
        }
        else if (RisingFalling == RISING)
        {
                if (BEMFConvertedValue > thre)
                {
                        cou++;
                        if (cou >= 2)
                        {
                                cou = 0;
                                USER_BLDC.Sta = 3;
                        USER_BLDC.StCountComm++; // 正確檢測到第三相反電動(dòng)勢
                                FFlag = 1;
                                hx = 1;
                        }
                }
                else
                {
                        cou = 0;
                }
        }
        if (USER_BLDC.StCountComm >= STCount && USER_BLDC.StOk == 0) // 連續(xù)檢測到固定數(shù)量的過零時(shí),認(rèn)為啟動(dòng)成功
        {
                USER_BLDC.StOk = 1;
        }
        if (USER_BLDC.StOk == 1 && hx == 1)
        {
                hx = 0;
                BTIM_SetAutoreload(CW_BTIM3, USER_BLDC.StepTime / 5);
                BTIM_SetCounter(CW_BTIM3, 0);
                BTIM_Cmd(CW_BTIM3, ENABLE);
        }
}

電機(jī)報(bào)警代碼及其自恢復(fù)功能

//(5):電機(jī)報(bào)警代碼及其自恢復(fù)功能


void US_vSysErrorCheck(void)
{
        US_vSysCurrentCheck();                  // 電流報(bào)警
        US_vSysVoltageCheck();                  // 電壓報(bào)警
        US_vSysStuck_in();                          // 啟動(dòng)堵轉(zhuǎn)保護(hù)
        US_vSysSPEED_ERRORCheck();          // 速度異常保護(hù)
        US_vSyscarrying_idlerCheck(); // 空載保護(hù)
}


void MDS_v_Error_recovery(uint32_t WaitTime) // 錯(cuò)誤恢復(fù)
{
        static uint32_t lg_u32WaitCount = 0;
        if (lg_u32WaitCount >= WaitTime)
        {
                USER_sSysStateErr.sSystemStatePre = USER_sSysStateErr.sSystemState;
                USER_sSysStateErr.sSystemState = STATE_INIT_B;
                USER_sSysStateErr.uSystemError.OverGUdcFlag = false;
                USER_sSysStateErr.uSystemError.OverLUdcFlag = false;
                USER_sSysStateErr.uSystemError.overStuck_in = false;
                USER_sSysStateErr.uSystemError.GlobalErrorFlag = false;
                ErrorCode = 0;
                lg_u32WaitCount = 0;
        }
else if (((USER_sVoltageAll.s16Udc < UPDS_UDC_PROTECT_MAX_V_recover) && (USER_sSysStateErr.uSystemError.OverGUdcFlag == true)) || ((USER_sVoltageAll.s16Udc > UPDS_UDC_PROTECT_MIN_V_recover) && (USER_sSysStateErr.uSystemError.OverLUdcFlag == true))  || (USER_sSysStateErr.uSystemError.overStuck_in == true))
        {
                lg_u32WaitCount++;
        }
        else
                lg_u32WaitCount = 0;
}

電機(jī)反電動(dòng)勢及運(yùn)行代碼

反電動(dòng)勢過零檢測法基本原理:

忽略電動(dòng)機(jī)電樞反應(yīng),無刷直流電動(dòng)機(jī)在穩(wěn)態(tài)運(yùn)行過程中,通過檢測關(guān)斷相的反電動(dòng)勢過零點(diǎn)獲得轉(zhuǎn)子的位置信號(hào),進(jìn)行對逆變器開關(guān)導(dǎo)通順序切換,控制電機(jī)運(yùn)動(dòng)。

較為典型的 BLDCM 的無位置傳感器控制方法有基于反電勢的檢測法、磁鏈估計(jì)法、電感檢測法等,在該系統(tǒng)中采用反電勢過零檢測法。

反電動(dòng)勢過零檢測法是以直流無刷電機(jī)中性點(diǎn)電壓為基準(zhǔn)進(jìn)行反電動(dòng)勢過零檢測的,屬于間接反電動(dòng)勢檢測方法。該方法將端電壓作分壓濾 波處理得到直流無刷電機(jī)的位置信號(hào),由于有濾波電路存在,獲得的位置信號(hào)比真實(shí)的反電動(dòng)勢過零點(diǎn)延時(shí)了一定的角度。

在理想情況下,電機(jī)三相繞組反電勢 Ea 、Eb、Ec 的波形為梯形波。無刷電機(jī)采用 120°導(dǎo)通方式,在任何時(shí)刻只有兩相導(dǎo)通,這兩相電流的大小 相等、方向相反,另一相電流為零,故三相電流的 總和為零。

857928bc-510d-11ee-a25d-92fbcf53809c.png

反電動(dòng)勢零點(diǎn) 變化趨勢
C- C相反電動(dòng)勢由正到負(fù)
B+ B相反電動(dòng)勢由負(fù)到正
A- A相反電動(dòng)勢由正到負(fù)
C+ C相反電動(dòng)勢由負(fù)到正
B- B相反電動(dòng)勢由正到負(fù)
A+ A相反電動(dòng)勢由負(fù)到正

表:正向反電動(dòng)勢過零點(diǎn)變化

反電動(dòng)勢部分代碼

//反電動(dòng)勢部分代碼
void ADCS_chuli(void)
{
        static unsigned char cou = 0;
        unsigned char hx = 0;
        unsigned int thre = 0;


        if (USER_BLDC.Sta != 2)
                return;


        BEMFConvertedValue = SampleData[TAB_BEMFChannel[Forward_rotation][bHallStartStep1]];
        RisingFalling = TAB_RFling[Forward_rotation][bHallStartStep1];


        if (USER_BLDC.Tonoroff == 0)
                thre = 50; // 30;//248;  //OFF時(shí)刻采集。0.2V閥值248
        else
                thre = SampleData[2] / 2;


        if (RisingFalling == FALLING) // 下降沿
        {
                if (BEMFConvertedValue < thre)
                {
                        cou++;
                        if (cou >= 2)
                        {
                                cou = 0;
                                USER_BLDC.Sta = 3;


                                USER_BLDC.StCountComm++; // 正確檢測到第三相反電動(dòng)勢
                                FFlag = 1;
                                hx = 1;
                        }
                }
                else
                {
                        cou = 0;
                }
        }
        else if (RisingFalling == RISING)
        {
                if (BEMFConvertedValue > thre)
                {
                        cou++;
                        if (cou >= 2)
                        {
                                cou = 0;
                                USER_BLDC.Sta = 3;


                                USER_BLDC.StCountComm++; // 正確檢測到第三相反電動(dòng)勢
                                FFlag = 1;
                                hx = 1;
                        }
                }
                else
                {
                        cou = 0;
                }
        }


        if (USER_BLDC.StCountComm >= STCount && USER_BLDC.StOk == 0) // 連續(xù)檢測到固定數(shù)量的過零時(shí),認(rèn)為啟動(dòng)成功
        {
                USER_BLDC.StOk = 1;
        }


        if (USER_BLDC.StOk == 1 && hx == 1)
        {
                hx = 0;
                BTIM_SetAutoreload(CW_BTIM3, USER_BLDC.StepTime / 5);
                BTIM_SetCounter(CW_BTIM3, 0);
                BTIM_Cmd(CW_BTIM3, ENABLE);
        }
}
 

母線電壓監(jiān)測-分壓電路原理及代碼

可以看原理圖中的分壓電路是兩個(gè)電阻

軟件保護(hù)

void US_vSysErrorCheck(void)
{
        US_vSysCurrentCheck();                  // 電流報(bào)警
        US_vSysVoltageCheck();                  // 電壓報(bào)警
        US_vSysStuck_in();                          // 啟動(dòng)堵轉(zhuǎn)保護(hù)
        US_vSysSPEED_ERRORCheck();          // 速度異常保護(hù)
        US_vSyscarrying_idlerCheck(); // 空載保護(hù)
}

1):電流保護(hù)

在無刷電機(jī)運(yùn)行中,有時(shí)候堵轉(zhuǎn)很容易燒mos管,所以電流保護(hù)就尤為的重要。

在程序中配置了電流觸發(fā)保護(hù)值,是15A,因?yàn)槲覀冾~定功率是500W。還有電流采集電路沒有加入運(yùn)放,采集不精確,所以需要把電流值設(shè)置大一點(diǎn)。之后也要根據(jù)實(shí)際的調(diào)試而改變。

//電流保護(hù)
void US_vSysCurrentCheck(void) // 電流保護(hù)
{
#if (UPDS_ISUM_DETECTION == 1)
        if ((USER_sCurrentAll.IdcValue) >= UPDS_OVERISUM_limit_MAX) // 一級(jí)電流保護(hù)
        {
                USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount++;
                if (USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount >= UPDS_OVERISUM_limit_MS)
                {
                        USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount = UPDS_OVERISUM_limit_MS;
                        USER_sSysStateErr.uSystemError.OverIdcFirstlevelFlag = true;
                        USER_sSysStateErr.sSystemStatePre = USER_sSysStateErr.sSystemState;
                        USER_sSysStateErr.sSystemState = STATE_FAULT_G;
                }
        }
        else
        {
                USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount--;
                if (USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount <= 0)
                {
                        USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount = 0;
                        USER_sSysStateErr.uSystemError.OverIdcFirstlevelFlag = false;
                }
        }


#endif
}




/********************限流保護(hù)值***********************/ 
#define UPDS_OVERISUM_limit_MAX         (15) //unit: A 限流保護(hù)值 
#define UPDS_OVERISUM_limit_MS           (500)//unit: ms  觸發(fā)保護(hù)時(shí)間


/**********************報(bào)警設(shè)置********************/
#define  UPDS_ISUM_DETECTION                         (1)                //電流保護(hù)使能

2):電壓保護(hù)

在高壓和低壓保護(hù)中,我們在程序中加入了自恢復(fù)功能,如果電壓高于58v就會(huì)觸發(fā)高壓保護(hù),電機(jī)停止,等待電壓下降到55v以下,就會(huì)觸發(fā)自恢復(fù)功能,等待自恢復(fù)時(shí)間結(jié)束,電機(jī)重新啟動(dòng)。低壓也是同理。

//電壓保護(hù)
void US_vSysVoltageCheck(void) // 電壓保護(hù)
{
#if (UPDS_UDC_DETECTION == 1)
        if (USER_sVoltageAll.s16Udc > UPDS_UDC_PROTECT_MAX_V)
        {
                USER_sSysStateErr.sSysTime.s32OverGUdcCount++;
                if (USER_sSysStateErr.sSysTime.s32OverGUdcCount >= UPDS_OVERVOLTAGE_VOLTAGE_MS)
                {
                        USER_sSysStateErr.sSysTime.s32OverGUdcCount = UPDS_OVERVOLTAGE_VOLTAGE_MS;
                        USER_sSysStateErr.uSystemError.OverGUdcFlag = true;
                        USER_sSysStateErr.sSystemStatePre = USER_sSysStateErr.sSystemState;
                        USER_sSysStateErr.sSystemState = STATE_FAULT_G; // 高壓保護(hù)
                }
        }
        if (USER_sVoltageAll.s16Udc < UPDS_UDC_PROTECT_MIN_V && USER_sVoltageAll.s16Udc > 5)
        {
                USER_sSysStateErr.sSysTime.s32OverLUdcCount++;
                if (USER_sSysStateErr.sSysTime.s32OverLUdcCount >= UPDS_UNDERVOLTAGE_VOLTAGE_MS)
                {
                        USER_sSysStateErr.sSysTime.s32OverLUdcCount = UPDS_UNDERVOLTAGE_VOLTAGE_MS;
                        USER_sSysStateErr.uSystemError.OverLUdcFlag = true;
                        USER_sSysStateErr.sSystemStatePre = USER_sSysStateErr.sSystemState;
                        USER_sSysStateErr.sSystemState = STATE_FAULT_G; // 低壓保護(hù)
                }
        }
#endif
}


/**********************報(bào)警設(shè)置********************/
#define  UPDS_UDC_DETECTION                           (1)                //電壓保護(hù)使能


/********************電壓保護(hù)值***********************/
#define UPDS_UDC_REAL                                         (48.0f) //unit: V;電壓源電壓
#define UPDS_UDC_PROTECT_MAX_V                        (58.0f)        //unit: V;過壓值
#define UPDS_UDC_PROTECT_MAX_V_recover        (54.0f) //unit: V;過壓恢復(fù)值
#define UPDS_OVERVOLTAGE_VOLTAGE_MS         (10.0)  //Unit: ms 過電壓持續(xù)時(shí)間1ms基準(zhǔn)
#define UPDS_UDC_PROTECT_MIN_V                        (30.0f)        //unit: V;欠壓值
#define UPDS_UDC_PROTECT_MIN_V_recover        (32.0f)        //unit: V;欠壓恢復(fù)值
#define UPDS_UNDERVOLTAGE_VOLTAGE_MS         (14.0)  //Unit: ms 欠電壓持續(xù)時(shí)間1ms基準(zhǔn)

3):啟動(dòng)堵轉(zhuǎn)保護(hù)

在堵轉(zhuǎn)保護(hù)之中,我們同樣設(shè)置了自恢復(fù)啟動(dòng),但是自恢復(fù)啟動(dòng)有次數(shù),只有五次。如果5次都沒有啟動(dòng)成功,電機(jī)將停止轉(zhuǎn)動(dòng)。不會(huì)啟動(dòng)。

/啟動(dòng)堵轉(zhuǎn)保護(hù)
void US_vSysStuck_in(void) // 堵轉(zhuǎn)保護(hù)啟動(dòng)5次
{
        if ((USER_stuck_in.locked_rotor_flag == 1) || (ErrorCode == 3)) // 檢測如果觸發(fā)了一次堵轉(zhuǎn)保護(hù)之后 電流大于額定值都沒有啟動(dòng)
        {
                USER_stuck_in.locked_rotor_flag = 0;
                USER_sSysStateErr.uSystemError.overStuck_in = true;           // 啟動(dòng)堵轉(zhuǎn)標(biāo)志
                USER_sSysStateErr.uSystemError.GlobalErrorFlag = true; // 全局錯(cuò)誤標(biāo)志位
                USER_sSysStateErr.sSystemStatePre = USER_sSysStateErr.sSystemState;
                USER_sSysStateErr.sSystemState = STATE_FAULT_G; // 跳入錯(cuò)誤判斷
                USER_sADSampleAll.s16VSPLPF = 0;                                   // 清空一下電位器
                USER_stuck_in.Phase_Stuck_num++;                                   // 啟動(dòng)堵轉(zhuǎn)報(bào)警加1
        }
}

4):速度異常保護(hù)

檢測目標(biāo)速度和實(shí)際速度之比,如果較小或者較大就是速度異常

//速度異常保護(hù)
float value;
void US_vSysSPEED_ERRORCheck(void) // 速度異常保護(hù)
{


        if (USER_sADSampleAll.s16VSPLPF > 2500) // 啟動(dòng)之后
        {
                value = (float)USER_sADSampleAll.s16VSPLPF / (float)USER_sADSampleAll.s32SpdUse;
                if ((value > 1.5) || (value < 0.5))
                {
                        USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount++;
                        if (USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount >= UPDS_SPEED_IDLER_MS)
                        {
                                USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount = UPDS_CARRYING_IDLER_MS;
                                USER_sSysStateErr.uSystemError.over_speed_error = true;
                                USER_sSysStateErr.sSystemStatePre = USER_sSysStateErr.sSystemState;
                                USER_sSysStateErr.sSystemState = STATE_FAULT_G;
                        }
                }
                else
                {
                        USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount--;
                        if (USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount <= 0)
                        {
                                USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount = 0;
                                USER_sSysStateErr.uSystemError.over_speed_error = false;
                        }
                }
        }
}

5):空載保護(hù)

空載保護(hù)是不讓水泵電機(jī)空轉(zhuǎn),檢測方法是檢測電流大小,如果在水里,電流會(huì)比較大,只需要在速度達(dá)到某一點(diǎn)時(shí),檢測電流的大小就可以實(shí)現(xiàn)。

//空載保護(hù)
void US_vSyscarrying_idlerCheck(void) // 空載保護(hù)
{
        if (USER_sADSampleAll.s32SpdCommand > 3000) // 啟動(dòng)之后
        {
                if ((USER_sCurrentAll.IdcValue) < UPDS_CARRYING_IDLER_MAX)
                {
                        USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount++;
                        if (USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount >= UPDS_CARRYING_IDLER_MS)
                        {
                                USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount = UPDS_CARRYING_IDLER_MS;
                                USER_sSysStateErr.uSystemError.overload_protection = true;
                                USER_sSysStateErr.sSystemStatePre = USER_sSysStateErr.sSystemState;
                                USER_sSysStateErr.sSystemState = STATE_FAULT_G;
                        }
                }
                else
                {
                        USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount--;
                        if (USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount <= 0)
                        {
                                USER_sSysStateErr.sSysTime.s32OverIdcFirstlevelCount = 0;
                                USER_sSysStateErr.uSystemError.overload_protection = false;
                        }
                }
        }



調(diào)試部分

下載程序即可上電調(diào)試;

接上電機(jī)的UVW三相,記得在代碼中設(shè)置一下分壓電阻,電流采樣的電阻(如果沒有更改就不需要更換)。四線插入正確,按下燒錄鍵即可燒錄成功。燒錄后電機(jī)就3s緩啟動(dòng)正常運(yùn)行起來了。需要檢測電機(jī)的UVW三相,如果是如圖9這樣呈現(xiàn)梯形就可以。

84052a76-510d-11ee-a25d-92fbcf53809c.png

865b5d7c-510d-11ee-a25d-92fbcf53809c.png

4. 小結(jié)

以上即為本次無刷電機(jī)驅(qū)動(dòng)板設(shè)計(jì)的全部基本內(nèi)容。芯源推出的CW32F030系列產(chǎn)品,已全面實(shí)現(xiàn)-40℃ 至 105℃超寬溫度范圍和 1.65V~5.5V 超寬工作電壓,面向最廣泛的各種基礎(chǔ)應(yīng)用。用戶可以根據(jù)自己的需求自行更改代碼功能。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    455

    文章

    50714

    瀏覽量

    423136
  • 控制板
    +關(guān)注

    關(guān)注

    5

    文章

    254

    瀏覽量

    31191
  • 無刷電機(jī)
    +關(guān)注

    關(guān)注

    57

    文章

    838

    瀏覽量

    45823
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    203

    瀏覽量

    626

原文標(biāo)題:【基于CW32的無刷水泵】-- CW-W88水泵通用控制板設(shè)計(jì)方案

文章出處:【微信號(hào):CW32生態(tài)社區(qū),微信公眾號(hào):CW32生態(tài)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于CW32的門禁綜合系統(tǒng)

    基于CW32單片機(jī)的門禁綜合系統(tǒng)是一款功能強(qiáng)大的智能門禁解決方案,它提供了三種開鎖方式:密碼開鎖、指紋開鎖和刷卡開鎖,為用戶提供方便、安全的門禁控制。該系統(tǒng)的核心控制器采用了
    的頭像 發(fā)表于 12-28 11:43 ?1690次閱讀
    基于<b class='flag-5'>CW32</b>的門禁綜合系統(tǒng)

    CW32移植Free-RTOS】CW32開發(fā)者扶持計(jì)劃

    CW32配置Free-RTOS全過程,CW32開發(fā)者扶持計(jì)劃
    的頭像 發(fā)表于 04-18 09:38 ?6138次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開發(fā)者扶持計(jì)劃

    CW32飯盒派開發(fā) 測試IO速度

    CW32飯盒派開發(fā)的GPIO進(jìn)行速度測試
    的頭像 發(fā)表于 05-26 13:07 ?42.5w次閱讀
    <b class='flag-5'>CW32</b>飯盒派開發(fā)<b class='flag-5'>板</b> 測試IO速度

    CW32快速開發(fā)入門

    CW32快速開發(fā)入門
    的頭像 發(fā)表于 04-24 18:56 ?1948次閱讀
    <b class='flag-5'>CW32</b>快速開發(fā)入門

    CW32量產(chǎn)燒錄工具

    本節(jié)主要介紹CW32控制器的燒錄器CW-Writer,以及與之配合的軟件CW-Programmer的使用方法。燒錄器CW-Writer通過
    的頭像 發(fā)表于 04-25 15:22 ?1393次閱讀
    <b class='flag-5'>CW32</b>量產(chǎn)燒錄工具

    【項(xiàng)目展示】基于CW32的遙控循跡小車

    藍(lán)牙模塊、OLED屏幕、TB6612和紅外循跡模塊組成,電源采用可充電鋰電池供電,建議不要使用 1.5V 干電池供電。 圖1 CW32小車 二、硬件部分 2.1主控 小車主控由小藍(lán)板和
    的頭像 發(fā)表于 05-31 17:33 ?1293次閱讀
    【項(xiàng)目展示】基于<b class='flag-5'>CW32</b>的遙控循跡小車

    CW32開發(fā)者扶持計(jì)劃#CW32 #芯片

    CW32
    CW32生態(tài)社區(qū)
    發(fā)布于 :2023年05月24日 16:56:14

    cw32和stm32的區(qū)別

    cw32和stm32的區(qū)別 CW32和STM32是兩種常見的單片機(jī),被廣泛應(yīng)用于各種電子設(shè)備中。在本文中,我們將深入探討CW32和STM32之間的區(qū)別和優(yōu)劣勢。 1. 硬件性能 硬件性能是衡量單片機(jī)
    的頭像 發(fā)表于 08-16 11:15 ?4173次閱讀

    cw32和gd32的區(qū)別

    推出的一款32位微控制器,它是WCH唯一以ARM Cortex-M3內(nèi)核為基礎(chǔ)的產(chǎn)品系列,Cortex-M3內(nèi)核是ARM公司的經(jīng)典內(nèi)核之一,性能穩(wěn)定,功耗低。CW32系列的主頻高達(dá)72MHz,內(nèi)置了
    的頭像 發(fā)表于 08-16 11:15 ?1961次閱讀

    基于CW32的無刷水泵方案

    基于CW32的無刷水泵方案
    的頭像 發(fā)表于 11-03 17:28 ?859次閱讀
    基于<b class='flag-5'>CW32</b>的無刷<b class='flag-5'>水泵</b><b class='flag-5'>方案</b>

    基于CW32熱敏電阻采集溫度應(yīng)用

    基于CW32熱敏電阻采集溫度應(yīng)用
    的頭像 發(fā)表于 10-25 16:45 ?535次閱讀
    基于<b class='flag-5'>CW32</b>熱敏電阻采集溫度應(yīng)用

    CW32實(shí)時(shí)時(shí)鐘(RTC)介紹

    CW32實(shí)時(shí)時(shí)鐘(RTC)介紹
    的頭像 發(fā)表于 10-24 15:36 ?1136次閱讀
    <b class='flag-5'>CW32</b>實(shí)時(shí)時(shí)鐘(RTC)介紹

    CW32通用輸入輸出端口詳解

    CW32通用輸入輸出端口詳解
    的頭像 發(fā)表于 10-30 17:33 ?1084次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>通用</b>輸入輸出端口詳解

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?783次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用

    CW32單片機(jī)在智能馬桶的應(yīng)用介紹

    和調(diào)節(jié)。本文將介紹CW32單片機(jī)在智能馬桶的詳細(xì)應(yīng)用。圖:CW32的智能馬桶控制板CW32單片機(jī)在智能馬桶的應(yīng)用介紹1.溫度感應(yīng)與控制智能馬
    的頭像 發(fā)表于 12-20 10:09 ?606次閱讀
    <b class='flag-5'>CW32</b>單片機(jī)在智能馬桶的應(yīng)用介紹
    RM新时代网站-首页