chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

無(wú)刷電機(jī)小車開(kāi)發(fā)記錄04——互補(bǔ)PWM驅(qū)動(dòng)移植

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來(lái)源:未知 ? 2023-09-19 11:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言


??上篇文章記錄了為GD32的BSP添加了PWM信號(hào)輸入捕獲的驅(qū)動(dòng),并實(shí)現(xiàn)了對(duì)SC60228DC磁編碼器數(shù)據(jù)的讀?。≒WM接口),最后還做了一點(diǎn)簡(jiǎn)單的測(cè)試。今天過(guò)來(lái)繼續(xù)修輪子,適配一下PWM驅(qū)動(dòng)。這里不得不提一下,造輪子或者修輪子可能是比較枯燥的,如果有也想搞一搞這個(gè)小車但懶得造輪子的小伙伴可以等我都弄完了直接用完適配好的程序,可能大多數(shù)同學(xué)都更喜歡玩上層實(shí)現(xiàn)具體功能的部分。不過(guò)對(duì)于我來(lái)說(shuō),在這之前還有很多輪子要修。

相關(guān)硬件電路


??介于上篇文章有小伙伴產(chǎn)生了一些疑問(wèn),所以后面的文章我盡量把相關(guān)的一些東西提前羅列一下,比如今天要調(diào)試的是驅(qū)動(dòng)無(wú)刷電機(jī)的PWM信號(hào)。那下面就是其中一路電機(jī)驅(qū)動(dòng)電路原理圖,無(wú)刷電機(jī)的三項(xiàng)引線分別由三個(gè)NCE6005AS的雙N溝道MOS管驅(qū)動(dòng)。其中G2拉高,G1拉低時(shí),高側(cè)MOS管導(dǎo)通,該項(xiàng)被接入VDD,相反則低測(cè)MOS導(dǎo)通,該項(xiàng)被接入GND。而Mos管由EG2134的三半橋柵極驅(qū)動(dòng)器驅(qū)動(dòng),最初的介紹視頻里面也提過(guò),我這里用的是全國(guó)產(chǎn)化的方案,所以相對(duì)國(guó)外的一些集成IC來(lái)說(shuō),器件要零散一些,但主要功能一致。而柵極驅(qū)動(dòng)器的驅(qū)動(dòng)信號(hào)則是三路互補(bǔ)PWM,其中HINx和LINx為一組。

wKgaomULQ4qAaH0nAAEYXAsLgN4102.jpg

如下是EG2134的輸入輸出邏輯真值表:

wKgaomULQ4qAJcN5AABfMb2plgI572.png

想了解更多器件信息,可參閱其芯片手冊(cè):EG2134芯片手冊(cè)

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


源文件適配

??目前我用的這塊GD32E503器件還沒(méi)有適配PWM驅(qū)動(dòng),所以還是有兩個(gè)選擇,如果能找到一個(gè)類似的驅(qū)動(dòng)移植就會(huì)簡(jiǎn)單一點(diǎn),否則就要走第二條路,完全自己適配,就要麻煩很多。首先對(duì)于RTT的PWM驅(qū)動(dòng)有現(xiàn)成的,只要打開(kāi)“RT_USING_PWM”宏即可把“rt_drv_pwm.c”添加到工程里。

wKgaomULQ4qAPIk2AAATqbC4mjo766.png

而對(duì)于BSP的底層驅(qū)動(dòng),我用的這塊器件并沒(méi)有適配,但好在RTT對(duì)于arm內(nèi)核的GD32器件的適配度還是挺高的,可以在arm內(nèi)核的BSP內(nèi)找到相關(guān)驅(qū)動(dòng),那閑話少說(shuō),先拷貝過(guò)來(lái)再說(shuō)。

wKgaomULQ4uAfsVfAADWThPw7gs897.jpg

??接下來(lái)的工作就是要看一下驅(qū)動(dòng)是否匹配,把不匹配的地方適配一下就可以了。首先來(lái)說(shuō),RTT層的PWM功能還是比較完善的,已經(jīng)支持了互補(bǔ)PWM模式的配置,也有配置死區(qū)的接口。但看了一下GD32的BSP層的驅(qū)動(dòng),只適配了普通的PWM功能,沒(méi)有互補(bǔ)模式。所以著重的工作就是適配互補(bǔ)模式的PWM。首先看”drv_pwm.c”下的第一個(gè)結(jié)構(gòu)體TIMER_PORT_CHANNEL_MAP_S,用來(lái)定義PWM用到的timer以及輸出通道和輸出引腳。原本的定義首先沒(méi)有互補(bǔ)通道的IO配置,其次直接用GD32固件庫(kù)的Port和pin定義的,所以配置只能固化到代碼里。


		

1typedefstruct 2{ 3rt_int8_tTimerIndex;//timerindex:0~13 4rt_uint32_tPort;//gpioport:GPIOA/GPIOB/GPIOC/... 5rt_uint32_tpin;//gpiopin:GPIO_PIN_0~GPIO_PIN_15 6rt_uint16_tchannel;//timerchannel 7char*name; 8}TIMER_PORT_CHANNEL_MAP_S;

這里我想實(shí)現(xiàn)更多的使用配置文件配置,而配置文件配置如果也采用uint32類型的Port的寄存器地址去定義是很不直觀的。所以添加了互補(bǔ)通道的同時(shí),也修改了一下定義方式,具體怎么用且往后看。


		

1typedefstruct 2{ 3rt_int8_tTimerIndex;//timerindex:0~13 4char*OP_Port;//A,B,C,D... 5rt_uint16_tOP_pin;//GPIO_pin:0~15 6char*ON_Port;//A,B,C,D... 7rt_base_tON_pin;//GPIO_pin:0~15 8rt_uint16_tchannel;//timerchannel 9char*name; 10}TIMER_PORT_CHANNEL_MAP_S;

再往下看就是原本驅(qū)動(dòng)里面對(duì)PWM引腳等信息的固化配置,比如PWM配置的是Timer3的ch2,輸出引腳是GPIOB_8:


		

1staticstructgd32_pwmgd32_pwm_obj[]={ 2#ifdefRT_USING_PWM1 3{.tim_handle={3,GPIOB,GPIO_PIN_8,2,"pwm1"}}, 4#endif 5#ifdefRT_USING_PWM2 6{.tim_handle={3,GPIOB,GPIO_PIN_8,2,"pwm2"}}, 7#endif 8... 9... 10};

修改后的代碼如下,其中所以配置都由宏定義實(shí)現(xiàn),而具體的宏定義后面可以用Kconfig實(shí)現(xiàn)圖形化配置:


		

1staticstructgd32_pwmgd32_pwm_obj[]={ 2#ifdefRT_USING_PWM1 3{.tim_handle={RT_USING_PWM1_TIMER_INDEX,RT_USING_PWM1_OP_PORT,RT_USING_PWM1_OP_PIN,RT_USING_PWM1_ON_PORT,RT_USING_PWM1_ON_PIN,RT_USING_PWM1_CH,RT_USING_PWM1_NAME}}, 4#endif 5#ifdefRT_USING_PWM2 6{.tim_handle={RT_USING_PWM2_TIMER_INDEX,RT_USING_PWM2_OP_PORT,RT_USING_PWM2_OP_PIN,RT_USING_PWM2_ON_PORT,RT_USING_PWM2_ON_PIN,RT_USING_PWM2_CH,RT_USING_PWM2_NAME}}, 7#endif 8... 9... 10};

上面提到過(guò)為了配置的時(shí)候更直觀,沒(méi)有直接使用寄存器地址值,而是用的字符’A’,’B’等去代表GPIOA,GPIOB。對(duì)于PIN的定義也類似,所以這里需要添加一個(gè)配置參數(shù)到具體的Port和pin的轉(zhuǎn)換接口:


		

1staticrt_uint32_tget_gpio_periph_port(charpot) 2{ 3rt_uint32_tPort=0; 4switch(pot) 5{ 6case'A': 7Port=GPIOA; 8break; 9case'B': 10Port=GPIOB; 11break; 12case'C': 13Port=GPIOC; 14break; 15case'D': 16Port=GPIOD; 17break; 18case'E': 19Port=GPIOE; 20break; 21case'F': 22Port=GPIOF; 23break; 24case'G': 25Port=GPIOG; 26break; 27default: 28Port=0; 29break; 30} 31returnPort; 32} 33staticrt_uint32_tget_gpio_periph_pin(rt_uint16_tpn) 34{ 35rt_uint32_tPin=0; 36if(pn16) 37{ 38Pin=GPIO_PIN_0<39} 40else{ 41LOG_E("Unsportgpiopin! "); 42} 43returnPin; 44}

有了上面的對(duì)應(yīng)接口,原驅(qū)動(dòng)里的一些配置代碼跟隨做一下調(diào)整即可。我下面只給出改動(dòng)稍大的一些地方,比如對(duì)于gpio的初始化代碼,要添加一路互補(bǔ)IO的初始化,如果不適用互補(bǔ)PWM,配置文件里面不進(jìn)行配置即可,這里就會(huì)跳過(guò)互補(bǔ)IO的初始化:


		

1staticvoidgpio_config(void) 2{ 3rt_int16_ti; 4rt_uint32_tport; 5rt_uint32_tpin; 6/*configtheGPIOasanalogmode*/ 7for(i=0;isizeof(gd32_pwm_obj)/sizeof(gd32_pwm_obj[0]);++i) 8{ 9port=get_gpio_periph_port(*(gd32_pwm_obj[i].tim_handle.OP_Port)); 10pin=get_gpio_periph_pin(gd32_pwm_obj[i].tim_handle.OP_pin); 11if(port) 12gpio_init(port,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,pin); 13port=get_gpio_periph_port(*(gd32_pwm_obj[i].tim_handle.ON_Port)); 14pin=get_gpio_periph_pin(gd32_pwm_obj[i].tim_handle.ON_pin); 15if(port) 16gpio_init(port,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,pin); 17} 18}

源文件方面最后一個(gè)要修改的地方就是enable接口,主要是看configuration內(nèi)的complementary互補(bǔ)模式是否被開(kāi)啟,如果開(kāi)啟則同時(shí)使能互補(bǔ)通道即可。


		

1staticrt_err_tdrv_pwm_enable(TIMER_PORT_CHANNEL_MAP_S*pstTimerMap,structrt_pwm_configuration*configuration, 2rt_bool_tenable) 3{ 4intchannel; 5if(configuration->channel==0||configuration->channel>4) 6returnRT_ERROR; 7channel=configuration->channel-1; 8if(!enable) 9{ 10timer_channel_output_state_config(index_to_timer(pstTimerMap->TimerIndex),channel, 11TIMER_CCX_DISABLE); 12if(configuration->complementary==RT_TRUE) 13{ 14timer_channel_complementary_output_state_config(index_to_timer(pstTimerMap->TimerIndex),channel, 15TIMER_CCXN_DISABLE); 16} 17} 18else 19{ 20timer_channel_output_state_config(index_to_timer(pstTimerMap->TimerIndex),channel, 21TIMER_CCX_ENABLE); 22if(configuration->complementary==RT_TRUE) 23{ 24timer_channel_complementary_output_state_config(index_to_timer(pstTimerMap->TimerIndex),channel, 25TIMER_CCXN_ENABLE); 26} 27} 28LOG_I("pwm[%d][%d]enable:%d!",pstTimerMap->TimerIndex,channel,enable); 29returnRT_EOK; 30}

構(gòu)建管理文件適配

接下來(lái)修改對(duì)應(yīng)的SConscript文件和Kconfig文件。先在”librariesgd32_drivers”下的SConscript文件內(nèi)添加如下代碼,即開(kāi)啟RT_USING_PWM宏后,就把上面移植過(guò)來(lái)的“drv_pwm.c”添加到工程內(nèi)。


		

1#addpwmdrivers. 2ifGetDepend('RT_USING_PWM'): 3src+=['drv_pwm.c']

最后在“board”目錄下的Kconfig文件內(nèi),添加如下代碼。利用select語(yǔ)句聯(lián)動(dòng)了RT_USING_PWM定義,我這里開(kāi)啟了6路PWM的配置:


		

1menuconfigBSP_USING_PWM 2bool"EnablePWM" 3defaultn 4selectRT_USING_PWM 5ifBSP_USING_PWM 6configRT_USING_PWM1 7bool"EnablePWM1" 8defaultn 9ifRT_USING_PWM1 10configRT_USING_PWM1_NAME 11string"PWMDEVNAME" 12defaultPWM1 13configRT_USING_PWM1_TIMER_INDEX 14int"TimerIndex" 15default0 16configRT_USING_PWM1_OP_PORT 17string"PWMoutput_PPort(A,B,C...)" 18defaultA 19configRT_USING_PWM1_OP_PIN 20int"PWMoutput_Ppin(0~15)" 21default0 22configRT_USING_PWM1_ON_PORT 23string"PWMoutput_NPort(A,B,C...)" 24defaultA 25configRT_USING_PWM1_ON_PIN 26int"PWMoutput_Npin(0~15)" 27default0 28configRT_USING_PWM1_CH 29int"PWMoutputchannel" 30default0 31endif 32configRT_USING_PWM2 33bool"EnablePWM2" 34defaultn 35ifRT_USING_PWM2 36configRT_USING_PWM2_NAME 37string"PWMDEVNAME" 38defaultPWM2 39configRT_USING_PWM2_TIMER_INDEX 40int"TimerIndex" 41default0 42configRT_USING_PWM2_OP_PORT 43string"PWMoutput_PPort(A,B,C...)" 44defaultA 45configRT_USING_PWM2_OP_PIN 46int"PWMoutput_Ppin(0~15)" 47default0 48configRT_USING_PWM2_ON_PORT 49string"PWMoutput_NPort(A,B,C...)" 50defaultA 51configRT_USING_PWM2_ON_PIN 52int"PWMoutput_Npin(0~15)" 53default0 54configRT_USING_PWM2_CH 55int"PWMoutputchannel" 56default0 57endif 58configRT_USING_PWM3 59bool"EnablePWM3" 60defaultn 61ifRT_USING_PWM3 62configRT_USING_PWM3_NAME 63string"PWMDEVNAME" 64defaultPWM3 65configRT_USING_PWM3_TIMER_INDEX 66int"TimerIndex" 67default0 68configRT_USING_PWM3_OP_PORT 69string"PWMoutput_PPort(A,B,C...)" 70defaultA 71configRT_USING_PWM3_OP_PIN 72int"PWMoutput_Ppin(0~15)" 73default0 74configRT_USING_PWM3_ON_PORT 75string"PWMoutput_NPort(A,B,C...)" 76defaultA 77configRT_USING_PWM3_ON_PIN 78int"PWMoutput_Npin(0~15)" 79default0 80configRT_USING_PWM3_CH 81int"PWMoutputchannel" 82default0 83endif 84configRT_USING_PWM4 85bool"EnablePWM4" 86defaultn 87ifRT_USING_PWM4 88configRT_USING_PWM4_NAME 89string"PWMDEVNAME" 90defaultPWM4 91configRT_USING_PWM4_TIMER_INDEX 92int"TimerIndex" 93default0 94configRT_USING_PWM4_OP_PORT 95string"PWMoutput_PPort(A,B,C...)" 96defaultA 97configRT_USING_PWM4_OP_PIN 98int"PWMoutput_Ppin(0~15)" 99default0 100configRT_USING_PWM4_ON_PORT 101string"PWMoutput_NPort(A,B,C...)" 102defaultA 103configRT_USING_PWM4_ON_PIN 104int"PWMoutput_Npin(0~15)" 105default0 106configRT_USING_PWM4_CH 107int"PWMoutputchannel" 108default0 109endif 110configRT_USING_PWM5 111bool"EnablePWM5" 112defaultn 113ifRT_USING_PWM5 114configRT_USING_PWM5_NAME 115string"PWMDEVNAME" 116defaultPWM5 117configRT_USING_PWM5_TIMER_INDEX 118int"TimerIndex" 119default0 120configRT_USING_PWM5_OP_PORT 121string"PWMoutput_PPort(A,B,C...)" 122defaultA 123configRT_USING_PWM5_OP_PIN 124int"PWMoutput_Ppin(0~15)" 125default0 126configRT_USING_PWM5_ON_PORT 127string"PWMoutput_NPort(A,B,C...)" 128defaultA 129configRT_USING_PWM5_ON_PIN 130int"PWMoutput_Npin(0~15)" 131default0 132configRT_USING_PWM5_CH 133int"PWMoutputchannel" 134default0 135endif 136configRT_USING_PWM6 137bool"EnablePWM6" 138defaultn 139ifRT_USING_PWM6 140configRT_USING_PWM6_NAME 141string"PWMDEVNAME" 142defaultPWM6 143configRT_USING_PWM6_TIMER_INDEX 144int"TimerIndex" 145default0 146configRT_USING_PWM6_OP_PORT 147string"PWMoutput_PPort(A,B,C...)" 148defaultA 149configRT_USING_PWM6_OP_PIN 150int"PWMoutput_Ppin(0~15)" 151default0 152configRT_USING_PWM6_ON_PORT 153string"PWMoutput_NPort(A,B,C...)" 154defaultA 155configRT_USING_PWM6_ON_PIN 156int"PWMoutput_Npin(0~15)" 157default0 158configRT_USING_PWM6_CH 159int"PWMoutputchannel" 160default0 161endif 162endif

到此,就可以利用menuconfig或者IDE的圖形界面進(jìn)行配置了:

wKgaomULQ4uAdy7mAAFPhRDREIE930.jpg

實(shí)現(xiàn)效果


為了測(cè)試效果,我這里在main函數(shù)內(nèi)對(duì)6路PWM進(jìn)行了初始化:


		

1rt_device_tpwm1_LA=RT_NULL,pwm2_LB=RT_NULL,pwm3_LC=RT_NULL,pwm4_RA=RT_NULL,pwm5_RB=RT_NULL,pwm6_RC=RT_NULL; 2intmain(void) 3{ 4... 5... 6pwm1_LA=rt_device_find(RT_USING_PWM1_NAME); 7if(pwm1_LA!=RT_NULL) 8{ 9structrt_device_pwm*pwm_dev=(structrt_device_pwm*)pwm1_LA; 10rt_pwm_set(pwm_dev,RT_USING_PWM1_CH+1,10000,5000); 11rt_pwm_enable(pwm_dev,-(RT_USING_PWM1_CH+1)); 12rt_kprintf("%sinitOK! ",pwm_dev->parent.parent.name); 13} 14pwm2_LB=rt_device_find(RT_USING_PWM2_NAME); 15if(pwm2_LB!=RT_NULL) 16{ 17structrt_device_pwm*pwm_dev=(structrt_device_pwm*)pwm2_LB; 18rt_pwm_set(pwm_dev,RT_USING_PWM2_CH+1,10000,1000); 19rt_pwm_enable(pwm_dev,-(RT_USING_PWM2_CH+1)); 20rt_kprintf("%sinitOK! ",pwm_dev->parent.parent.name); 21} 22pwm3_LC=rt_device_find(RT_USING_PWM3_NAME); 23if(pwm3_LC!=RT_NULL) 24{ 25structrt_device_pwm*pwm_dev=(structrt_device_pwm*)pwm3_LC; 26rt_pwm_set(pwm_dev,RT_USING_PWM3_CH+1,10000,8000); 27rt_pwm_enable(pwm_dev,-(RT_USING_PWM3_CH+1)); 28rt_kprintf("%sinitOK! ",pwm_dev->parent.parent.name); 29} 30pwm4_RA=rt_device_find(RT_USING_PWM4_NAME); 31if(pwm4_RA!=RT_NULL) 32{ 33structrt_device_pwm*pwm_dev=(structrt_device_pwm*)pwm4_RA; 34rt_pwm_set(pwm_dev,RT_USING_PWM4_CH+1,10000,5000); 35rt_pwm_enable(pwm_dev,-(RT_USING_PWM4_CH+1)); 36rt_kprintf("%sinitOK! ",pwm_dev->parent.parent.name); 37} 38pwm5_RB=rt_device_find(RT_USING_PWM5_NAME); 39if(pwm5_RB!=RT_NULL) 40{ 41structrt_device_pwm*pwm_dev=(structrt_device_pwm*)pwm5_RB; 42rt_pwm_set(pwm_dev,RT_USING_PWM5_CH+1,10000,1000); 43rt_pwm_enable(pwm_dev,-(RT_USING_PWM5_CH+1)); 44rt_kprintf("%sinitOK! ",pwm_dev->parent.parent.name); 45} 46pwm6_RC=rt_device_find(RT_USING_PWM6_NAME); 47if(pwm6_RC!=RT_NULL) 48{ 49structrt_device_pwm*pwm_dev=(structrt_device_pwm*)pwm6_RC; 50rt_pwm_set(pwm_dev,RT_USING_PWM6_CH+1,10000,8000); 51rt_pwm_enable(pwm_dev,-(RT_USING_PWM6_CH+1)); 52rt_kprintf("%sinitOK! ",pwm_dev->parent.parent.name); 53} 54... 55... 56}

還實(shí)現(xiàn)了一個(gè)如下的測(cè)試命令,這樣除了可以使用驅(qū)動(dòng)里實(shí)現(xiàn)的PWM命令外,也可以使用自己的測(cè)試命令測(cè)試,更方便一些:


		

1staticintmotorLA_pwm(intargc,char**argv) 2{ 3rt_err_tresult=RT_EOK; 4rt_uint32_tperiod,pulse; 5structrt_device_pwm*pwm_dev=(structrt_device_pwm*)pwm1_LA; 6if(argc>=3) 7{ 8period=atoi(argv[1]); 9pulse=atoi(argv[2]); 10rt_pwm_set(pwm_dev,RT_USING_PWM1_CH+1,period,pulse); 11rt_kprintf("set%s:[period]%d-[pulse]%d! ",pwm_dev->parent.parent.name,period,pulse); 12} 13else{ 14rt_kprintf("Usage: "); 15rt_kprintf("motorXN_pwm-setthepwm'speriodandpulse "); 16rt_kprintf("eg:motorLA_pwm100005000issetmotorLApwm'speriodto10us,pulseto5us "); 17result=-RT_ERROR; 18} 19returnRT_EOK; 20} 21MSH_CMD_EXPORT(motorLA_pwm,motorLA_pwm);

下圖是開(kāi)機(jī)上電終端打印的信息,由于我開(kāi)啟了PWM驅(qū)動(dòng)的調(diào)試,所以打印了很多相關(guān)的調(diào)試信息:

wKgaomULQ4uANDJQAAL2ifgyy_c159.jpg

如下是測(cè)試的PWM1的波形輸出,黃色的通道一測(cè)試的正向PWM信號(hào),藍(lán)色的通道二測(cè)試的是互補(bǔ)的反向PWM信號(hào):

wKgaomULQ4uAS27MAAE7fPqxnlw980.jpg

下圖是設(shè)置PWM1的占空比為1/10后的效果:

wKgaomULQ4uAKevKAAE_JETvkok422.jpg

相關(guān)鏈接


本系列首篇文章連接:

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

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

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

?


原文標(biāo)題:無(wú)刷電機(jī)小車開(kāi)發(fā)記錄04——互補(bǔ)PWM驅(qū)動(dòng)移植

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


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

    關(guān)注

    116

    文章

    5863

    瀏覽量

    224979
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1594

    瀏覽量

    44553

原文標(biāo)題:無(wú)刷電機(jī)小車開(kāi)發(fā)記錄04——互補(bǔ)PWM驅(qū)動(dòng)移植

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    無(wú)刷電機(jī)驅(qū)動(dòng)器的基礎(chǔ)知識(shí)

    本文將從技術(shù)角度出發(fā),對(duì)三相無(wú)刷電機(jī)電機(jī)驅(qū)動(dòng)器的作用、種類和規(guī)格進(jìn)行介紹。通過(guò)本文,您可以學(xué)習(xí)到電機(jī)驅(qū)動(dòng)器選型所需的基礎(chǔ)知識(shí)。
    的頭像 發(fā)表于 12-10 14:13 ?6564次閱讀
    <b class='flag-5'>無(wú)刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>器的基礎(chǔ)知識(shí)

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

    Driver 是一款高度集成的電機(jī)控制開(kāi)發(fā)板。其小巧的外形、高性能的 PWM 輸出能力,以及豐富的配套例程,使其成為電機(jī)控制開(kāi)發(fā)的理想選擇
    發(fā)表于 11-27 06:04

    低成本開(kāi)源!用樂(lè)鑫科技ESP32-S3開(kāi)發(fā)板輕松驅(qū)動(dòng)無(wú)刷電機(jī),保姆級(jí)教程來(lái)了!

    想用ESP32-S3開(kāi)發(fā)驅(qū)動(dòng)無(wú)刷電機(jī)卻不知從何下手?本教程將手把手教你完成從硬件連接到軟件編程的全流程,無(wú)論你是新手還是有一定經(jīng)驗(yàn)的開(kāi)發(fā)者,都能輕松掌握!本教程代碼已全部開(kāi)源!后臺(tái)私
    的頭像 發(fā)表于 11-06 18:03 ?666次閱讀
    低成本開(kāi)源!用樂(lè)鑫科技ESP32-S3<b class='flag-5'>開(kāi)發(fā)</b>板輕松<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>無(wú)刷電機(jī)</b>,保姆級(jí)教程來(lái)了!

    合科泰MOSFET在直流無(wú)刷電機(jī)驅(qū)動(dòng)板的應(yīng)用

    經(jīng)常收到咨詢疑問(wèn):驅(qū)動(dòng)板為什么非MOSFET不可?這個(gè)問(wèn)題是因?yàn)橹绷?b class='flag-5'>無(wú)刷電機(jī)的“心臟”是逆變器電路,而MOS管就是逆變器的開(kāi)關(guān),可以負(fù)責(zé)電流通斷控制,實(shí)現(xiàn)電機(jī)轉(zhuǎn)速和精準(zhǔn)的方向調(diào)節(jié)。選對(duì)MOSFET,
    的頭像 發(fā)表于 09-15 15:32 ?2627次閱讀
    合科泰MOSFET在直流<b class='flag-5'>無(wú)刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>板的應(yīng)用

    藏不住了!LD63006 這顆無(wú)刷電機(jī)驅(qū)動(dòng)芯片,把 “硬核性能” 焊死在參數(shù)里

    LD63006是一款直流無(wú)刷電機(jī)驅(qū)動(dòng)芯片。通過(guò)霍爾信號(hào)和輸入的 PWM 波進(jìn)行驅(qū)動(dòng)控制。支持單、雙或三霍爾傳感器驅(qū)動(dòng)。8到20V 的工作電壓
    的頭像 發(fā)表于 08-28 15:33 ?746次閱讀
    藏不住了!LD63006 這顆<b class='flag-5'>無(wú)刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>芯片,把 “硬核性能” 焊死在參數(shù)里

    CW32L011電機(jī)驅(qū)動(dòng)開(kāi)發(fā)板——驅(qū)動(dòng)無(wú)刷電機(jī)

    無(wú)刷電機(jī)
    13532945151
    發(fā)布于 :2025年08月22日 14:35:44

    CW32L011電機(jī)驅(qū)動(dòng)開(kāi)發(fā)板——驅(qū)動(dòng)無(wú)刷電機(jī)

    CW32L011電機(jī)驅(qū)動(dòng)開(kāi)發(fā)
    的頭像 發(fā)表于 08-22 10:02 ?956次閱讀
    CW32L011<b class='flag-5'>電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b>板——<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>無(wú)刷電機(jī)</b>

    CW32L011無(wú)刷電機(jī)驅(qū)動(dòng)測(cè)試

    最近網(wǎng)上看到CW32生態(tài)社區(qū)-李工的生態(tài)圈有100百元的無(wú)刷電機(jī)驅(qū)動(dòng)開(kāi)源硬件及軟件方案,一不小心申請(qǐng)了一塊,這里記錄初次調(diào)試結(jié)果。開(kāi)源鏈接CW32L011電機(jī)
    發(fā)表于 08-16 13:10

    智能吸塵器無(wú)刷電機(jī)驅(qū)動(dòng)方案:高能效、長(zhǎng)壽命與低噪聲實(shí)現(xiàn)

    隨著智能家居的快速發(fā)展,智能吸塵器無(wú)刷電機(jī)驅(qū)動(dòng)方案已成為現(xiàn)代家庭清潔的重要工具。而作為其核心動(dòng)力源的無(wú)刷電機(jī),其性能直接決定了吸塵器的清潔效率、使用壽命和用戶體驗(yàn)。
    的頭像 發(fā)表于 08-13 17:38 ?1220次閱讀

    三相無(wú)刷電機(jī)驅(qū)動(dòng)IC BM64071MUV-Z概述

    BM64071MUV-Z是用于三相無(wú)刷電機(jī)驅(qū)動(dòng)器的正弦波驅(qū)動(dòng)的預(yù)驅(qū)動(dòng)器IC,支持48V電源控制外部FET構(gòu)建的電機(jī)
    的頭像 發(fā)表于 08-05 10:22 ?1180次閱讀
    三相<b class='flag-5'>無(wú)刷電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>IC BM64071MUV-Z概述

    基于雙極性PWM波的無(wú)感無(wú)刷電機(jī)驅(qū)動(dòng)方案

    構(gòu)建電機(jī)端電壓的數(shù)學(xué)模型,論證上下互補(bǔ)PWM驅(qū)動(dòng)方式能夠保證電機(jī)中點(diǎn)電位穩(wěn)定,設(shè)計(jì)基于低通濾波器的換向檢測(cè)電路,使得電調(diào)能夠判斷端電壓
    發(fā)表于 07-29 16:19

    開(kāi)源電機(jī)驅(qū)動(dòng),免費(fèi)學(xué)習(xí)

    開(kāi)源項(xiàng)目?oshwhub.com/beauty_light/cw32l010-bldc-esc-driver 一、項(xiàng)目定位 核心功能: 基于國(guó)產(chǎn)芯片 CW32L010 開(kāi)發(fā)無(wú)刷電機(jī)驅(qū)動(dòng)板(ESC
    的頭像 發(fā)表于 07-01 14:51 ?778次閱讀
    開(kāi)源<b class='flag-5'>電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>,免費(fèi)學(xué)習(xí)

    無(wú)刷電機(jī)驅(qū)動(dòng)MOSFET

    講解當(dāng)無(wú)葉風(fēng)扇送出柔風(fēng)時(shí),內(nèi)部13萬(wàn)轉(zhuǎn)無(wú)刷電機(jī)正被MOSFET精準(zhǔn)驅(qū)動(dòng);掃地機(jī)鉆進(jìn)7cm縫隙,7組電機(jī)協(xié)同完成毫米級(jí)貼邊清掃;電動(dòng)牙刷以31,000次/分鐘振動(dòng)清潔齒縫,筋膜槍在50μs內(nèi)響應(yīng)力度調(diào)節(jié),而高空作業(yè)無(wú)人機(jī)正用高壓水
    的頭像 發(fā)表于 06-09 11:09 ?818次閱讀
    <b class='flag-5'>無(wú)刷電機(jī)</b>的<b class='flag-5'>驅(qū)動(dòng)</b>MOSFET

    無(wú)刷電機(jī)詳解及其應(yīng)用

    無(wú)刷電機(jī)(Brushless Motor)作為現(xiàn)代電力驅(qū)動(dòng)技術(shù)的核心部件之一,憑借高效率、長(zhǎng)壽命和低維護(hù)成本等優(yōu)勢(shì),廣泛應(yīng)用于無(wú)人機(jī)、電動(dòng)汽車、工業(yè)自動(dòng)化等領(lǐng)域。其工作原理與傳統(tǒng)有刷電機(jī)存在本質(zhì)區(qū)別
    的頭像 發(fā)表于 06-07 16:30 ?8187次閱讀
    <b class='flag-5'>無(wú)刷電機(jī)</b>詳解及其應(yīng)用

    無(wú)刷電機(jī)驅(qū)動(dòng)MOSFET

    當(dāng)無(wú)葉風(fēng)扇送出柔風(fēng)時(shí),內(nèi)部13萬(wàn)轉(zhuǎn)無(wú)刷電機(jī)正被MOSFET精準(zhǔn)驅(qū)動(dòng);掃地機(jī)鉆進(jìn)7cm縫隙,7組電機(jī)協(xié)同完成毫米級(jí)貼邊清掃;電動(dòng)牙刷以31,000次/分鐘振動(dòng)清潔齒縫,筋膜槍在50μs內(nèi)響應(yīng)力度調(diào)節(jié)
    的頭像 發(fā)表于 06-06 16:26 ?877次閱讀
    <b class='flag-5'>無(wú)刷電機(jī)</b>的<b class='flag-5'>驅(qū)動(dòng)</b>MOSFET