成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

項(xiàng)目三:利用PWM波和GPIO控制電機(jī)

taowen / 3077人閱讀

摘要:較高時(shí),電機(jī)運(yùn)行連續(xù)平穩(wěn)噪音小,但器件功耗會(huì)隨頻率升高而增大較低時(shí),利于降低功耗,并能提高調(diào)速線性度,但過低的頻率可能導(dǎo)致電機(jī)轉(zhuǎn)動(dòng)連貫性的降低。通常時(shí),器件能夠穩(wěn)定的控制電機(jī)。

一、驅(qū)動(dòng)芯片介紹

TB6612?的的用法:
? ? ?TB6612?是雙驅(qū)動(dòng),也就是可以驅(qū)動(dòng)兩個(gè)電機(jī)下面分別是控制兩個(gè)電機(jī)的?IO?口:STBY?口接單片機(jī)的?IO?口? ?,清零電機(jī)全部停止,置?1 /0通過?AIN1?AIN2,BIN1,BIN2?來控制正反轉(zhuǎn)。
二、真值表

三、電路圖?

?

?四、PWM注意事項(xiàng)

(1)器件輸出狀態(tài)在驅(qū)動(dòng)/制動(dòng)之間切換時(shí),電機(jī)轉(zhuǎn)速和 PWM 占空比之間能保持較好的線性關(guān)系,其運(yùn)行控制效果好于器件在驅(qū)動(dòng)/停止?fàn)顟B(tài)之間切換,所以表 1 中的 INl/IN2 一般不采用 L/L 控制組合。

(2)fPWM 較高時(shí),電機(jī)運(yùn)行連續(xù)平穩(wěn)、噪音小,但器件功耗會(huì)隨頻率升高而增大;fPWM 較低時(shí),利于降低功耗,并能提高調(diào)速線性度,但過低的頻率可能導(dǎo)致電機(jī)轉(zhuǎn)動(dòng)連貫性的降低。通常 fPWM>1 kHz 時(shí),器件能夠穩(wěn)定的控制電機(jī)。

五、廢話不多說上代碼??!

main.c

#include "motor.h"#include "stdio.h"#include "delay.h"#include "stm32f10x.h" u8 UART3_data,UART1_data; u8 UART3_rcv[20],UART3_rcv_count; u8 UART1_rcv[50],UART1_rcv_count,Uart1_finish;int main(void){//	int left_speed=5,right_speed=5;	int speed=5;		delay_init();	GPIO_init();	TIME4_init(7199,10);	car_go(speed);	delay_s(2);	car_left(0,2);	delay_s(1);	car_go(speed);	delay_s(2);	car_stop();	}

motor.c

#include "motor.h"http://電機(jī)GPIO管腳初始化函數(shù)/**********************************************************************************/void GPIO_init(void){	//定義管腳的結(jié)構(gòu)體	GPIO_InitTypeDef GPIO_InitStruct;	//打開所要使用的時(shí)鐘	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);	//將管腳PB4特殊功能關(guān)掉	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);	//配置PB4/5/8/9管腳的參數(shù),用于驅(qū)動(dòng)電機(jī)	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9;	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;	//初始化PB4/5/8/9的管腳	GPIO_Init(GPIOB, &GPIO_InitStruct);	//配置PB6/7管腳的參數(shù),用于產(chǎn)生PWM波	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;	//初始化PB6/7的管腳	GPIO_Init(GPIOB, &GPIO_InitStruct);	//管腳全部先置零	GPIO_ResetBits(GPIOB,GPIO_Pin_8);  GPIO_ResetBits(GPIOB,GPIO_Pin_9);	GPIO_ResetBits(GPIOB,GPIO_Pin_4);  GPIO_ResetBits(GPIOB,GPIO_Pin_5);	}/***************************************************************************************************************///TIME4的初始化函數(shù)/********************************************************************************************/void TIME4_init(int presc,int arr){	 //定義定時(shí)器的結(jié)構(gòu)體	 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;	 //定義定時(shí)器PWM輸出通道的結(jié)構(gòu)體	 TIM_OCInitTypeDef TIM_OCInitStruct;	 //打開TIME4的時(shí)鐘	 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);	 //配置TIME4結(jié)構(gòu)體的參數(shù)	 TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1 ;	 TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;	 TIM_TimeBaseInitStruct.TIM_Prescaler = presc;	 TIM_TimeBaseInitStruct.TIM_Period =arr; 	 	 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStruct);	 //配置TIME4通道結(jié)構(gòu)體的參數(shù)	 TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;	 TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;	 TIM_OCInitStruct.TIM_OutputState =TIM_OutputState_Enable ;	 TIM_OCInitStruct.TIM_Pulse =0;	  //TIME4通道1初始化   TIM_OC1Init(TIM4, &TIM_OCInitStruct);	 //使能TIME4通道1的預(yù)存寄存器	 TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);   //TIME4通道2初始化   TIM_OC2Init(TIM4, &TIM_OCInitStruct);	 //使能TIME4通道2的預(yù)存寄存器   TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);   //使能TIME4	 TIM_Cmd(TIM4, ENABLE);}/*******************************************************************************************************///小車前進(jìn)函數(shù)/********************************************************************************************************/void car_go(int speed){  	motor_left_speed(speed);  motor_right_speed(speed);	GPIO_SetBits(GPIOB, GPIO_Pin_9);  GPIO_ResetBits(GPIOB,GPIO_Pin_8);	GPIO_SetBits(GPIOB, GPIO_Pin_4);  GPIO_ResetBits(GPIOB,GPIO_Pin_5);}/****************************************************************************************************************///小車左轉(zhuǎn)函數(shù)/****************************************************************************************************************/void car_left(int motor_left_speed,int motor_right_speed ){    motor_left_speed(motor_left_speed);  motor_right_speed(motor_right_speed);	GPIO_ResetBits(GPIOB,GPIO_Pin_9);  GPIO_ResetBits(GPIOB,GPIO_Pin_8);	GPIO_SetBits(GPIOB, GPIO_Pin_4);  GPIO_ResetBits(GPIOB,GPIO_Pin_5);}/****************************************************************************************************************///小車右轉(zhuǎn)函數(shù)/****************************************************************************************************************/void car_right(int motor_left_speed,int motor_right_speed ){  	motor_left_speed(motor_left_speed);  motor_right_speed(motor_right_speed);	GPIO_ResetBits(GPIOB,GPIO_Pin_8);  GPIO_SetBits(GPIOB, GPIO_Pin_9);	GPIO_ResetBits(GPIOB,GPIO_Pin_4);  GPIO_ResetBits(GPIOB,GPIO_Pin_5);}/****************************************************************************************************************///小車停止函數(shù)/****************************************************************************************************************/void car_stop(void){  		GPIO_ResetBits(GPIOB,GPIO_Pin_9);  GPIO_ResetBits(GPIOB,GPIO_Pin_8);	GPIO_ResetBits(GPIOB,GPIO_Pin_4);  GPIO_ResetBits(GPIOB,GPIO_Pin_5);}/****************************************************************************************************************///小車后退函數(shù)/****************************************************************************************************************/void car_back(int speed){  	motor_left_speed(speed);  motor_right_speed(speed);	GPIO_SetBits(GPIOB, GPIO_Pin_8);  GPIO_ResetBits(GPIOB,GPIO_Pin_9);	GPIO_SetBits(GPIOB, GPIO_Pin_5);  GPIO_ResetBits(GPIOB,GPIO_Pin_4);}/****************************************************************************************************************///延遲一秒函數(shù)/****************************************************************************************************************/void delay_s(int s){	for(;s>0;s--)	{	delay_ms(1000);	}}/****************************************************************************************************************/

motor.h

#ifndef __MOTOR_H__#define __MOTOR_H__//需要調(diào)用的庫#include "stm32f10x_rcc.h"#include "stm32f10x_gpio.h"#include "stm32f10x_tim.h"#include "delay.h"http://宏定義#define PERIOD 10  //周期為10ms,頻率為1Khz#define motor_left_speed(left_speed)   {TIM_SetCompare1(TIM4, left_speed);}  //將設(shè)置PWMA的占空比的函數(shù)宏定義#define motor_right_speed(right_speed)  {TIM_SetCompare2(TIM4, right_speed);}//將設(shè)置PWMB的占空比的函數(shù)宏定義//自定義的函數(shù)void GPIO_init(void);void TIME4_init(int presc,int arr);void car_go(int speed);void car_left(int motor_left_speed,int motor_right_speed );void car_right(int motor_left_speed,int motor_right_speed );void car_stop(void);void car_back(int speed);void delay_s(int s);#endif

最后?。。∥野汛a注釋詳細(xì)點(diǎn),希望以后看的懂!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/118887.html

相關(guān)文章

  • 項(xiàng)目六:定時(shí)器一產(chǎn)生PWM控制舵機(jī)

    摘要:本次實(shí)驗(yàn)的采用的舵機(jī)是度伺服,控制關(guān)系如下二舵機(jī)電路圖三高級(jí)定時(shí)器產(chǎn)生波相比普通定時(shí)器初始化中需要多加兩句重復(fù)計(jì)數(shù)器的值主輸出使能四代碼電機(jī)初始化延遲初始化電機(jī)管腳初始化尋跡管腳初始化。 一、舵機(jī)工作原理 ? ? 控制信號(hào)由接收機(jī)的通道進(jìn)入信號(hào)調(diào)制芯片,獲得直流的偏置電壓。它內(nèi)部有一個(gè)基準(zhǔn)電...

    kelvinlee 評(píng)論0 收藏0
  • 基于STM32f103c8t6和L292N驅(qū)動(dòng)設(shè)計(jì)避障小車(核心函數(shù)的建立為自己所寫)

    基于STM32f103c8t6和L292N驅(qū)動(dòng)設(shè)計(jì)避障小車(核心函數(shù)的建立為自己所寫) 一.項(xiàng)目感觸 完成這個(gè)項(xiàng)目自己一開始也是無法從本身上出發(fā),看著這個(gè)最小系統(tǒng)板和這個(gè)電機(jī)驅(qū)動(dòng)模塊上面想著怎樣實(shí)現(xiàn)讓這兩塊板子實(shí)現(xiàn)四個(gè)電機(jī)上面轉(zhuǎn)動(dòng)呢,還要加入避障模塊,自己一開始一頭霧水,于是開始了漫長(zhǎng)的借鑒之路,首先作為一個(gè)開發(fā)者,我覺得學(xué)習(xí)的地方首選是B站,所以我找了相關(guān)的做智能小車的視頻 首先是B站智能小車教...

    CoffeX 評(píng)論0 收藏0
  • 10. STM32——PWM 控制舵機(jī)(超聲波感應(yīng)開蓋垃圾桶)

    摘要:中央對(duì)齊模式向上計(jì)數(shù)時(shí)當(dāng)時(shí)通道為無效電平,否則為有效電平向下計(jì)數(shù)時(shí)一旦通道為有效電平,否則為無效電平。一般來說,舵機(jī)接收的信號(hào)頻率為,即周期為。 STM32——P...

    jasperyang 評(píng)論0 收藏0
  • STM32遙控小車下位機(jī)及硬件連接部分(Keil MDK5平臺(tái)的C++編程)

    摘要:同時(shí),該模塊中包括小車的加減速以及小車的轉(zhuǎn)向功能。在串口中斷處理程序中,由于我設(shè)定的主機(jī)指令以一個(gè)字節(jié)為單位,故串口檢測(cè)到一個(gè)字節(jié)的接收時(shí)就立即判斷當(dāng)前指令對(duì)應(yīng)的動(dòng)作,指令與小車動(dòng)作的映射見上位機(jī)編寫部分。 ...

    mykurisu 評(píng)論0 收藏0
  • 項(xiàng)目五:基于stm32f103的尋跡小車

    摘要:前言傳感器工作原理代碼部分電機(jī)初始化延遲初始化電機(jī)管腳初始化尋跡管腳初始化。電機(jī)管腳初始化函數(shù)定義管腳的結(jié)構(gòu)體打開所要使用的時(shí)鐘將管腳特殊功能關(guān)掉配置管腳的參數(shù),用于驅(qū)動(dòng)電機(jī)。配置管腳的參數(shù)紅外傳感器。 前言:傳感器工作原理: 代碼部分:? ? main.c #include motor....

    kyanag 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<