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

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

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

無刷電機(jī)小車開發(fā)記錄03——PWM信號(hào)輸入捕獲驅(qū)動(dòng)

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:未知 ? 2023-10-20 02:00 ? 次閱讀

前言


??好吧,轉(zhuǎn)眼一看,距離上一篇文章已經(jīng)過去了兩個(gè)月了。只能說工作和家庭的各種事情確實(shí)太多了,人到中年屬于自己的時(shí)間確實(shí)越來越少了,再不過來調(diào)一下這個(gè)小車估計(jì)都要生銹了。所以今天過來接著做下一步工作。之前是完成了BSP的移植和導(dǎo)入,接下來就要嘗試移植FOC算法了,開源的FOC算法也比較多,我這里打算利用SimpleFOC進(jìn)行移植。本身的SimpleFOC是基于C++的,這里要移植成C代碼。另外,SimpleFOC的SDK其中已經(jīng)適配了很多種類的傳感器,驅(qū)動(dòng)器以及無刷電機(jī)。如果硬件使用的是它已經(jīng)適配的方案,則只需要簡單配置一下就可以驅(qū)動(dòng)了。而我這里是要在RTThread下移植FOC,更傾向于使用RTThread的框架,所以各種傳感器和驅(qū)動(dòng)器的適配計(jì)劃加到RTThread的驅(qū)動(dòng)這邊來做。FOC那邊只移植SimpleFOC的核心算法即可。所以在正式移植FOC算法之前,還需要先搭建用到的底層驅(qū)動(dòng)。今天就先整理一下讀取磁編碼器PWM信號(hào)的輸入捕獲驅(qū)動(dòng)的移植記錄。其實(shí)某些適配更好的BSP內(nèi)的RTThread驅(qū)動(dòng)庫里面已經(jīng)有了輸入捕獲驅(qū)動(dòng),但只是捕獲了輸入脈寬的時(shí)間,而我這里需要的是捕獲PWM信號(hào)的占空比,也就對(duì)應(yīng)了磁編碼器探測到的電機(jī)位置。但大體功能類似,所以隨便找一個(gè)類似的底層驅(qū)動(dòng)進(jìn)行一下修改和移植即可。

磁編碼器簡介


??我這里用的是賽卓電子的國產(chǎn)磁編碼器芯片SC60228,詳情請看其數(shù)據(jù)手冊,主要特性如下:

wKgaomUxb86Ad0frAADRKt9ULqs978.jpg

移植RTT驅(qū)動(dòng)


??這個(gè)比較簡單,因?yàn)镽TT驅(qū)動(dòng)庫內(nèi)已經(jīng)有了“rt_inputcapture.c”的驅(qū)動(dòng)文件,在SDK的“rt-thread/components/drivers/misc”目錄下。只不過大多數(shù)的BSP沒有做對(duì)應(yīng)的適配而已。那先不管BSP那邊的適配問題,先把這個(gè)C文件和對(duì)應(yīng)的頭文件拷貝一份,比如我重命名為“PWM_input_capture.c”和“PWM_input_capture.h”。

wKgaomUxb86AJ7ovAABMOSbJPxk665.png

然后代碼內(nèi)容改動(dòng)不大,主要改的是返回的數(shù)據(jù)除了脈寬時(shí)間還有一個(gè)周期時(shí)間,這樣就可以計(jì)算輸入PWM信號(hào)的占空比了。另外,原有的驅(qū)動(dòng)上使用的是ringbuffer做了一個(gè)數(shù)據(jù)緩存,這樣數(shù)據(jù)處理可以異步話,什么時(shí)候需要什么時(shí)候把緩存內(nèi)的數(shù)據(jù)全部讀走即可。但各人考慮,我應(yīng)用的場合是用這個(gè)信號(hào)來驅(qū)動(dòng)無刷電機(jī),這個(gè)PWM信號(hào)的輸入頻率也才1Khz,市面上大多數(shù)的無刷電機(jī)驅(qū)動(dòng),底層控制頻率基本都達(dá)到了10Khz以上。所以我這里肯定不需要異步處理的,會(huì)直接用這個(gè)信號(hào)觸發(fā)底層控制。而且控制效果還需要測試,如果轉(zhuǎn)速上不去或者抖動(dòng)厲害的話,可能還需要想辦法插值細(xì)化或者改用SPI讀取編碼器數(shù)據(jù)(這也是為什么硬件上做了兩種接口的原因,就是想去測試探索一些好玩的東西)。所以我這里是直接去掉了ringbuffer,加入了信號(hào)量。到時(shí)候上層開一個(gè)線程去等待這個(gè)信號(hào)量去跑FOC算法。頭文件修改如下:


		

1structpwm_inputcapture_data 2{ 3rt_uint32_tpulsewidth_us;//脈寬 4rt_uint32_tpulsecycle_us;//周期 5}; 6structpwm_inputcapture_device 7{ 8structrt_deviceparent; 9conststructpwm_inputcapture_ops*ops; 10rt_sem_t*sem; 11structpwm_inputcapture_datapulse_param; 12}; 13/** 14*captureoperators 15*/ 16structpwm_inputcapture_ops 17{ 18rt_err_t(*init)(structpwm_inputcapture_device*inputcapture); 19rt_err_t(*open)(structpwm_inputcapture_device*inputcapture); 20rt_err_t(*close)(structpwm_inputcapture_device*inputcapture); 21}; 22voidpwm_hw_inputcapture_isr(structpwm_inputcapture_device*inputcapture); 23rt_err_trt_device_pwm_inputcapture_register(structpwm_inputcapture_device*inputcapture, 24constchar*name, 25void*data);

C文件主要修改的是回調(diào)函數(shù),把之前的數(shù)據(jù)加入ringbuffer的操作改成了釋放信號(hào)量,其它地方的修改都是一些簡單的適配,由于C代碼較多,我這里就不都貼出來了,相信大家肯定會(huì)自己完成適配,甚至比我的還要適配的好。而我的代碼,等我第一期的功能開發(fā)完了,會(huì)整體開源出來。C代碼主要修改的回調(diào)函數(shù)如下:


		

1voidrt_hw_pwm_inputcapture_isr(structpwm_inputcapture_device*inputcapture) 2{ 3rt_sem_release(inputcapture->sem); 4if(inputcapture->parent.rx_indicate!=RT_NULL) 5inputcapture->parent.rx_indicate(&inputcapture->parent,1); 6}

適配BSP驅(qū)動(dòng)


??BSP驅(qū)動(dòng)的適配稍微麻煩一點(diǎn),如果大家能找到其它類似BSP內(nèi)的相似驅(qū)動(dòng)可以進(jìn)行移植,那我這里簡單找了一下并沒有找到,所以仿照RTT的驅(qū)動(dòng)適配方式,自己適配了一下。主要實(shí)現(xiàn)要點(diǎn)就是開啟每個(gè)Timer的CH0和CH1雙通道對(duì)CI0或者CI1輸入的PWM信號(hào)進(jìn)行采樣,一個(gè)捕獲脈寬,一個(gè)捕獲周期,從而得到占空比。剩下的就是一些向下調(diào)用GD32的驅(qū)動(dòng)庫API,向上適配RTT的驅(qū)動(dòng)接口。同樣,下面只給出主要的初始化代碼和中斷處理代碼,其它的可自行實(shí)現(xiàn)或者關(guān)注我后續(xù)開源的代碼。


		

1rt_err_tpwm_inputcap_init(structpwm_inputcapture_device*pwm_incap) 2{ 3uint32_tsys_clk_freq; 4uint32_ttimer_prescaler=1; 5uint32_ttrigger_ch; 6timer_parameter_structTimerConfig; 7timer_ic_parameter_structTimerICConfig; 8structgd32_pwm_inputcapture_device*pwm_incap_device; 9pwm_incap_device=(structgd32_pwm_inputcapture_device*)pwm_incap; 10rcu_periph_clock_enable(pwm_incap_device->timer_rcu); 11rcu_periph_clock_enable(pwm_incap_device->GPIO_rcu); 12gpio_init(pwm_incap_device->GPIOx,GPIO_MODE_IN_FLOATING,GPIO_OSPEED_50MHZ,pwm_incap_device->PINx); 13sys_clk_freq=rcu_clock_freq_get(CK_SYS); 14LOG_I("systemclockfrequency:%d",sys_clk_freq); 15TimerConfig.alignedmode=TIMER_COUNTER_EDGE; 16TimerConfig.clockdivision=TIMER_CKDIV_DIV1; 17TimerConfig.counterdirection=TIMER_COUNTER_UP; 18TimerConfig.period=65535U; 19do{ 20if(sys_clk_freq/timer_prescaler/TimerConfig.periodinput_freq_min) 21break; 22if(timer_prescaler==65536) 23{ 24rt_kprintf("cannotconfiguretheprescalerforinputsignalfrequency:%dhz ",pwm_incap_device->input_freq_min); 25returnRT_ERROR; 26} 27timer_prescaler++; 28}while(1); 29TimerConfig.prescaler=timer_prescaler-1; 30TimerConfig.repetitioncounter=0; 31timer_init(pwm_incap_device->timerx,&TimerConfig); 32LOG_I("%stimerprescaler:%d",pwm_incap_device->name,timer_prescaler); 33TimerICConfig.icfilter=10; 34TimerICConfig.icpolarity=TIMER_IC_POLARITY_RISING; 35TimerICConfig.icprescaler=TIMER_IC_PSC_DIV1; 36TimerICConfig.icselection=TIMER_IC_SELECTION_DIRECTTI; 37timer_input_pwm_capture_config(pwm_incap_device->timerx,pwm_incap_device->input_ch,&TimerICConfig); 38timer_interrupt_flag_clear(pwm_incap_device->timerx,TIMER_INT_FLAG_UP); 39timer_interrupt_enable(pwm_incap_device->timerx,TIMER_INT_UP); 40trigger_ch=((pwm_incap_device->input_ch==TIMER_CH_0)?TIMER_SMCFG_TRGSEL_CI0FE0:TIMER_SMCFG_TRGSEL_CI1FE1); 41timer_input_trigger_source_select(pwm_incap_device->timerx,trigger_ch); 42timer_slave_mode_select(pwm_incap_device->timerx,TIMER_SLAVE_MODE_RESTART); 43timer_external_trigger_config(pwm_incap_device->timerx,TIMER_EXT_TRI_PSC_OFF,TIMER_ETP_RISING,10); 44NVIC_SetPriority(pwm_incap_device->timerx_irqn,3); 45NVIC_EnableIRQ(pwm_incap_device->timerx_irqn); 46timer_enable(pwm_incap_device->timerx); 47returnRT_EOK; 48} 49voidpwm_inputcapture_update_isr(structgd32_pwm_inputcapture_device*device) 50{ 51uint32_twidth_ch; 52/*TIMUpdateevent*/ 53if(timer_interrupt_flag_get(device->timerx,TIMER_INT_FLAG_UP)!=RESET) 54{ 55timer_interrupt_flag_clear(device->timerx,TIMER_INT_FLAG_UP); 56device->pwm_inputcap.pulse_param.pulsecycle_us=timer_channel_capture_value_register_read(device->timerx,device->input_ch); 57width_ch=((device->input_ch==TIMER_CH_0)?(TIMER_CH_1):(TIMER_CH_0)); 58device->pwm_inputcap.pulse_param.pulsewidth_us=timer_channel_capture_value_register_read(device->timerx,width_ch); 59rt_hw_pwm_inputcapture_isr(device); 60} 61}

修改工程構(gòu)建文件


修改相關(guān)SConscript文件

??在“l(fā)ibraries/gd32_drivers/SConscript”文件內(nèi)的適當(dāng)位置加入如下代碼:


		

1ifGetDepend(['RT_USING_PWM_INPUT_CAPTURE']): 2src+=['drv_pwm_inputcapture.c']

??在“rt-thread/components/drivers/misc/SConscript”文件內(nèi)的適當(dāng)位置加入如下代碼:


		

1ifGetDepend(['RT_USING_INPUT_CAPTURE']): 2src=src+['rt_inputcapture.c']

??意思很簡單,就是當(dāng)rtconfig.h內(nèi)定義了”RT_USING_PWM_INPUT_CAPTURE”宏,則把“drv_pwm_inputcapture.c”和“rt_inputcapture.c”驅(qū)動(dòng)文件加入工程,更準(zhǔn)確的是加入編譯。

修改相關(guān)Kconfig文件

??在“rt-thread/components/drivers/Kconfig”文件內(nèi)的適當(dāng)位置加入如下代碼:


		

1configRT_USING_INPUT_CAPTURE 2bool"UsingINPUTCAPTUREdevicedrivers" 3defaultn

??管理BSP驅(qū)動(dòng)代碼的Kconfig文件不再librares目錄下,而是在board目錄下。于是在“board/Kconfig”文件內(nèi)的適當(dāng)位置,仿照其它驅(qū)動(dòng)加入如下代碼:


		

1menuconfigBSP_USING_PWM_INPUTCAPTURE 2bool"Enablepwminputcapture" 3defaultn 4selectRT_USING_PWM_INPUT_CAPTURE 5ifBSP_USING_PWM_INPUTCAPTURE 6configBSP_USING_PWM_INPUTCAPTURE1 7bool"Enablepwminputcapture1" 8defaultn 9configBSP_USING_PWM_INPUTCAPTURE2 10bool"Enablepwminputcapture2" 11defaultn 12configBSP_USING_PWM_INPUTCAPTURE3 13bool"Enablepwminputcapture3" 14defaultn 15configBSP_USING_PWM_INPUTCAPTURE4 16bool"Enablepwminputcapture4" 17defaultn 18configBSP_USING_PWM_INPUTCAPTURE5 19bool"Enablepwminputcapture5" 20defaultn 21configBSP_USING_PWM_INPUTCAPTURE6 22bool"Enablepwminputcapture6" 23defaultn 24endif

??意思也比較簡單,我這里適配了6個(gè)PWM的輸入捕獲驅(qū)動(dòng),并且利用“select”語句,在BSP的驅(qū)動(dòng)管理里面自動(dòng)開啟了RTT驅(qū)動(dòng)里面的“RT_USING_PWM_INPUT_CAPTURE”選項(xiàng)。修改完上述代碼后,就可以用menuconfig命令或者RTThreadIDE的RT-Thread Settings圖形配置界面內(nèi)進(jìn)行配置了:

wKgaomUxb86AcVJtAAC__4hZpLo688.png

測試


??驅(qū)動(dòng)有了,再在頂層邏輯內(nèi)創(chuàng)建并實(shí)現(xiàn)兩個(gè)測試線程:


		

1intmain(void) 2{ 3... 4rt_thread_tMotorL_encoder_thread; 5MotorL_encoder_thread=rt_thread_create("MotorLEncoder",MotorLEncoder_thread_entry,RT_NULL,1024,4,20); 6rt_thread_startup(MotorL_encoder_thread); 7rt_thread_tMotorR_encoder_thread; 8MotorR_encoder_thread=rt_thread_create("MotorREncoder",MotorREncoder_thread_entry,RT_NULL,1024,4,20); 9rt_thread_startup(MotorR_encoder_thread); 10... 11} 12voidMotorLEncoder_thread_entry(void*parameter) 13{ 14rt_device_tLpwm_input_dev; 15rt_uint16_twait_i; 16structpwm_inputcapture_device*inputcap_dev; 17Lpwm_input_dev=rt_device_find("pwm_inputcap1"); 18if(Lpwm_input_dev==RT_NULL) 19return; 20inputcap_dev=(structpwm_inputcapture_device*)Lpwm_input_dev; 21rt_device_open(Lpwm_input_dev,RT_DEVICE_OFLAG_RDONLY); 22while(1) 23{ 24if(inputcap_dev->sem!=RT_NULL) 25{ 26rt_sem_take(inputcap_dev->sem,RT_WAITING_FOREVER); 27if(wait_i++>=1000) 28{ 29rt_kprintf("MotorLencoder: %d ",inputcap_dev->pulse_param.pulsewidth_us*10000/inputcap_dev->pulse_param.pulsecycle_us); 30wait_i=0; 31} 32} 33} 34} 35voidMotorREncoder_thread_entry(void*parameter) 36{ 37rt_device_tRpwm_input_dev; 38rt_uint16_twait_i; 39structpwm_inputcapture_device*inputcap_dev; 40Rpwm_input_dev=rt_device_find("pwm_inputcap3"); 41if(Rpwm_input_dev==RT_NULL) 42return; 43inputcap_dev=(structpwm_inputcapture_device*)Rpwm_input_dev; 44rt_device_open(Rpwm_input_dev,RT_DEVICE_OFLAG_RDONLY); 45while(1) 46{ 47if(inputcap_dev->sem!=RT_NULL) 48{ 49rt_sem_take(inputcap_dev->sem,RT_WAITING_FOREVER); 50if(wait_i++>=1000) 51{ 52rt_kprintf("MotorRencoder:%d ",inputcap_dev->pulse_param.pulsewidth_us*10000/inputcap_dev->pulse_param.pulsecycle_us); 53wait_i=0; 54} 55} 56} 57}

??目前只是實(shí)現(xiàn)了大概1S鐘打印一次編碼器位置,一圈的機(jī)械角度范圍擴(kuò)大到了0~10000(我用的是12位磁編碼器,分辨率是4096,我這里統(tǒng)一歸一化到了10000),終端輸出如下:

wKgaomUxb86AWvABAADp-6S53R4467.png

??可以看到,慢慢向一個(gè)方向推動(dòng)小車,兩個(gè)編碼器的變化規(guī)律是相反的,和實(shí)際的兩個(gè)電機(jī)對(duì)向安裝相匹配,實(shí)際使用的時(shí)候按照其中一個(gè)為基準(zhǔn),把另外一個(gè)編碼器數(shù)據(jù)反向即可。

??只看其中一個(gè)輪子,輸出頻率改為原有的1Khz,輸出值轉(zhuǎn)換為浮點(diǎn)的角度值,可得到如下的測試曲線:

wKgaomUxb8-ASU3AAABtDl44Qdk079.jpg

靜止不動(dòng),暫時(shí)也沒有驅(qū)動(dòng)電機(jī),也就沒有電機(jī)的電磁干擾,在次條件下測得的靜態(tài)數(shù)據(jù)如下,靜態(tài)穩(wěn)定度在0.2度左右,比12位的最小測量精度0.088度大了二倍多一點(diǎn):

wKgaomUxb8-ASXSrAACu0yvNQTo492.jpg

相關(guān)鏈接


本系列首篇文章鏈接:

https://club.rt-thread.org/ask/article/5c0c4ba7eb4ab1ad.html

———————End——————

wKgaomUxb9CAVirTAHiX-BnG6Ho919.gif

點(diǎn)擊閱讀原文進(jìn)入官網(wǎng)

?


原文標(biāo)題:無刷電機(jī)小車開發(fā)記錄03——PWM信號(hào)輸入捕獲驅(qū)動(dòng)

文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


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

    關(guān)注

    31

    文章

    1289

    瀏覽量

    40140

原文標(biāo)題:無刷電機(jī)小車開發(fā)記錄03——PWM信號(hào)輸入捕獲驅(qū)動(dòng)

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CW32L010 Motor Control Driver無刷電機(jī)驅(qū)動(dòng)板上手體驗(yàn)

    CW32L010無刷電機(jī)驅(qū)動(dòng)開發(fā)板上手體驗(yàn)
    的頭像 發(fā)表于 12-26 09:26 ?112次閱讀
    CW32L010 Motor Control Driver<b class='flag-5'>無刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>板上手體驗(yàn)

    其利天下技術(shù)·電機(jī)慣量是什么意思?無刷電機(jī)驅(qū)動(dòng)開發(fā)

    電機(jī)慣量是影響電機(jī)穩(wěn)定工作以及能量效率的重要因素。作為無刷電機(jī)驅(qū)動(dòng)方案開發(fā)商,我們聊聊電機(jī)慣量的
    的頭像 發(fā)表于 12-23 17:32 ?804次閱讀
    其利天下技術(shù)·<b class='flag-5'>電機(jī)</b>慣量是什么意思?<b class='flag-5'>無刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>

    無刷電機(jī)正弦波驅(qū)動(dòng)原理分析

    在上一期芝識(shí)課堂里,大家應(yīng)該已經(jīng)學(xué)會(huì)如何用方波驅(qū)動(dòng)無刷電機(jī)運(yùn)轉(zhuǎn),下一步我們來一起嘗試用正弦波驅(qū)動(dòng)無刷電機(jī),學(xué)習(xí)如何改變電機(jī)工作速度的實(shí)戰(zhàn)技
    的頭像 發(fā)表于 12-02 10:00 ?320次閱讀
    <b class='flag-5'>無刷電機(jī)</b>正弦波<b class='flag-5'>驅(qū)動(dòng)</b>原理分析

    無刷電機(jī)驅(qū)動(dòng)方案的應(yīng)用

    : 有刷電機(jī):有刷電機(jī)通過碳刷和換向器(或稱為整流子)來傳遞電流。 無刷電機(jī)無刷電機(jī)沒有碳刷和換向器,而是通過電子換向器(通常是霍爾傳感器和電子
    發(fā)表于 10-21 16:00

    其利天下技術(shù)·無刷電機(jī)中開環(huán)控制和閉環(huán)控制的區(qū)別·無刷電機(jī)驅(qū)動(dòng)方案

    風(fēng)扇驅(qū)動(dòng)方案開環(huán)控制的原理開環(huán)控制是指系統(tǒng)的輸出不影響輸入控制信號(hào)的策略。在無刷電機(jī)中,控制信號(hào)(如PW
    的頭像 發(fā)表于 10-16 10:30 ?537次閱讀
    其利天下技術(shù)·<b class='flag-5'>無刷電機(jī)</b>中開環(huán)控制和閉環(huán)控制的區(qū)別·<b class='flag-5'>無刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>方案

    其利天下技術(shù)·無刷電機(jī)壽命有多長?軟件能改善嗎?無刷電機(jī)驅(qū)動(dòng)

    作為無刷電機(jī)驅(qū)動(dòng)方案開發(fā)商,經(jīng)常跟客戶都會(huì)討論到一個(gè)問題——無刷電機(jī)的壽命受什么因素影響?現(xiàn)在無刷電機(jī)的制作工藝對(duì)比以前已經(jīng)有了極大的提升,
    的頭像 發(fā)表于 09-23 16:01 ?340次閱讀
    其利天下技術(shù)·<b class='flag-5'>無刷電機(jī)</b>壽命有多長?軟件能改善嗎?<b class='flag-5'>無刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>

    其利天下技術(shù)·低速無刷電機(jī)如何更好的控制?無刷電機(jī)驅(qū)動(dòng)方案開發(fā)

    需要低速運(yùn)轉(zhuǎn)的無刷電機(jī)經(jīng)常運(yùn)用在電動(dòng)車、機(jī)器人關(guān)節(jié)、醫(yī)療設(shè)備等場景。最近有客戶找到我們開發(fā)無刷電機(jī)驅(qū)動(dòng)方案,他的需求是低轉(zhuǎn)速,而且需要精準(zhǔn)控制電流。經(jīng)常
    的頭像 發(fā)表于 09-09 11:50 ?508次閱讀
    其利天下技術(shù)·低速<b class='flag-5'>無刷電機(jī)</b>如何更好的控制?<b class='flag-5'>無刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>方案<b class='flag-5'>開發(fā)</b>

    其利天下技術(shù)開發(fā)·無刷電機(jī)常見的5種啟動(dòng)方式·無刷電機(jī)驅(qū)動(dòng)方案

    作為經(jīng)常跟無刷電機(jī)打交道的驅(qū)動(dòng)方案商,能夠根據(jù)不同的無刷電機(jī)選擇匹配的啟動(dòng)方式,是基本的技術(shù)要求。今天分享一下,無刷電機(jī)常見的啟動(dòng)方式有哪些?分別又有什么優(yōu)缺點(diǎn)呢?
    的頭像 發(fā)表于 08-21 10:59 ?575次閱讀
    其利天下技術(shù)<b class='flag-5'>開發(fā)</b>·<b class='flag-5'>無刷電機(jī)</b>常見的5種啟動(dòng)方式·<b class='flag-5'>無刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>方案

    PWM驅(qū)動(dòng)電機(jī)發(fā)熱的原因

    ,PWM技術(shù)被廣泛應(yīng)用于電機(jī)的調(diào)速和控制。 1.2 PWM驅(qū)動(dòng)電機(jī)的工作原理 PWM
    的頭像 發(fā)表于 08-08 15:25 ?997次閱讀

    其利天下技術(shù)·無刷電機(jī)常見的5種啟動(dòng)方式及優(yōu)缺點(diǎn)·無刷電機(jī)驅(qū)動(dòng)方案設(shè)計(jì)開發(fā)

    作為經(jīng)常跟無刷電機(jī)打交道的驅(qū)動(dòng)方案商,能夠根據(jù)不同的無刷電機(jī)選擇匹配的啟動(dòng)方式,是基本的技術(shù)要求。今天分享一下,無刷電機(jī)常見的啟動(dòng)方式有哪些?分別又有什么優(yōu)缺點(diǎn)呢? ? 其利天下·
    的頭像 發(fā)表于 08-07 10:26 ?743次閱讀
    其利天下技術(shù)·<b class='flag-5'>無刷電機(jī)</b>常見的5種啟動(dòng)方式及優(yōu)缺點(diǎn)·<b class='flag-5'>無刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>方案設(shè)計(jì)<b class='flag-5'>開發(fā)</b>

    無刷電機(jī)驅(qū)動(dòng)原理 直流有刷電機(jī)無刷電機(jī)的差異

    在上期芝識(shí)課堂中,我們一起認(rèn)識(shí)了東芝無刷電機(jī)的基本知識(shí),對(duì)于生活中無處不在的無刷電機(jī),了解它的更多知識(shí)才能上手開發(fā)哦~今天芝子就帶你一起來學(xué)習(xí)無刷電機(jī)
    的頭像 發(fā)表于 07-19 14:29 ?1380次閱讀
    <b class='flag-5'>無刷電機(jī)</b>的<b class='flag-5'>驅(qū)動(dòng)</b>原理 直流有刷<b class='flag-5'>電機(jī)</b>和<b class='flag-5'>無刷電機(jī)</b>的差異

    無刷電機(jī)驅(qū)動(dòng)器的工作原理和結(jié)構(gòu)組成

    無刷電機(jī)驅(qū)動(dòng)器,也被稱為無刷電調(diào)或無刷電機(jī)電子調(diào)速器,是一種能有效控制電機(jī)轉(zhuǎn)速、扭矩和位置的新型電機(jī)驅(qū)動(dòng)
    的頭像 發(fā)表于 06-12 16:54 ?2422次閱讀

    CS32F03X生成多路PWM控制無刷電機(jī)換相

    本技術(shù)文檔旨在幫助用戶快速配置 MCU CS32F03X 輸出多路經(jīng)過調(diào)制的 PWM 波,用于控制直流無刷電機(jī)(BLDC)換相。HPWM-LON 是直流無刷電機(jī)較為常用的
    發(fā)表于 05-16 10:41

    無刷電機(jī)是什么意思 無刷電機(jī)是交流還是直流

    無刷電機(jī)(Brushless Motor)是一種將電能轉(zhuǎn)換為機(jī)械能的驅(qū)動(dòng)裝置,也被稱為無刷直流電機(jī)(BLDC Motor)。與傳統(tǒng)的有刷電機(jī)相比,
    的頭像 發(fā)表于 02-01 13:57 ?1.3w次閱讀

    一個(gè)通道如何捕獲PWM的頻率和占空比?

    捕獲。雖然也實(shí)現(xiàn)了捕獲PWM的功能,但是代價(jià)也太大了,且很難同時(shí)捕獲多個(gè)PWM,那有沒有更好的方法呢?本文介紹了另一種
    的頭像 發(fā)表于 12-30 08:00 ?3181次閱讀
    一個(gè)通道如何<b class='flag-5'>捕獲</b><b class='flag-5'>PWM</b>的頻率和占空比?