国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32-微項目03-pwm控制直流電機運行

這篇具有很好參考價值的文章主要介紹了STM32-微項目03-pwm控制直流電機運行。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一,項目目標

實現(xiàn)利用STM32F103C8T6+TB6612,輸出不同占空比輸出的PWM波,從而實現(xiàn)電機不同轉(zhuǎn)速的運行、正反轉(zhuǎn)的功能;

stm32通過定時器輸出不同占空比的pwm波來調(diào)整直流電機的轉(zhuǎn)速,實現(xiàn)家用電風扇的1,2,stm32,單片機,嵌入式硬件stm32通過定時器輸出不同占空比的pwm波來調(diào)整直流電機的轉(zhuǎn)速,實現(xiàn)家用電風扇的1,2,stm32,單片機,嵌入式硬件

?

?二、硬件涉及

1,STM32核心板

2,TB6612直流電機驅(qū)動模塊

3,直流電機?

三、硬件接線涉及

1,先看TB6612直流電機驅(qū)動模塊:

①驅(qū)動模塊是具備兩路PWM輸入,兩路out口,兩路AIN,可以實現(xiàn)對兩個不同電機的轉(zhuǎn)速控制、方向控制;

stm32通過定時器輸出不同占空比的pwm波來調(diào)整直流電機的轉(zhuǎn)速,實現(xiàn)家用電風扇的1,2,stm32,單片機,嵌入式硬件

②模塊引腳

僅使用第一路電機

PWMA控制電機占空比、AIN1 AIN2控制輸入、A01 A02電機驅(qū)動

核心點:PWM控制電機轉(zhuǎn)速、AIN控制轉(zhuǎn)向、AO用于輸出

?stm32通過定時器輸出不同占空比的pwm波來調(diào)整直流電機的轉(zhuǎn)速,實現(xiàn)家用電風扇的1,2,stm32,單片機,嵌入式硬件

2,STM32核心板接線

stm32通過定時器輸出不同占空比的pwm波來調(diào)整直流電機的轉(zhuǎn)速,實現(xiàn)家用電風扇的1,2,stm32,單片機,嵌入式硬件

四、前置知識介紹

1,定時器輸出比較,輸出PWM波

見微項目02介紹

?五、代碼模塊介紹

1,思路分析:

①開始RCC時鐘,GPIO和TIM2時鐘模塊

②開啟TIM2時鐘輸入源為內(nèi)部72MHZ

③配置時鐘模塊,ARR和PSC模塊

④輸出比較模塊配置

⑤配置TIM2輸出端口的GPIO,復用推挽輸出

⑥開始使能時鐘

⑦動態(tài)配置CCR

⑧配置PA4,PA5控制輸出、配置GPIO模塊

下面開始代碼介紹:

①配置GPIO時鐘和TIM2的模塊時鐘

//配置時鐘RCC
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

②配置TIM2的時鐘源,內(nèi)部時鐘72MHZ

//配置時鐘源為RCC -72mhz
	TIM_InternalClockConfig(TIM2);

③配置時基模塊,主要是ARR和PSC

	//配置時基單元數(shù)值
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
	TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1 ;
	TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up ;
	TIM_TimeBaseInitStruct.TIM_Period=100-1;  //ARR
	TIM_TimeBaseInitStruct.TIM_Prescaler=720-1;  //psc
	TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);

④輸出比較單元配置

	//輸出比較單元配置
	TIM_OCInitTypeDef TIM_OCInitStruct;
	TIM_OCStructInit(&TIM_OCInitStruct);
	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;//設置CCR數(shù)值

	TIM_OC3Init(TIM2, &TIM_OCInitStruct);

⑤配置PWM輸出的端口PA2的GPIO? ---復用推挽輸出

	// 配置PA2端口
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init( GPIOA, &GPIO_InitStruct);

⑥開啟時鐘

//啟動定時器
	TIM_Cmd(TIM2,ENABLE);

⑦動態(tài)配置CCR函數(shù)

void pwm_setcompare( uint16_t compare)
{
	TIM_SetCompare3(TIM2, compare);
}

⑧配置PA4,PA5控制輸出、配置GPIO模塊---推挽輸出?

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_5;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init( GPIOA, &GPIO_InitStruct);

到此核心代碼已經(jīng)配置完成

具體在代碼各個模塊的體現(xiàn)

PWM模塊

#include "stm32f10x.h"                  // Device header

void pwm_init(void)
{
	//配置時鐘RCC
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
	
	//配置時鐘源為RCC -72mhz
	TIM_InternalClockConfig(TIM2);
	
	//配置時基單元數(shù)值
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
	TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1 ;
	TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up ;
	TIM_TimeBaseInitStruct.TIM_Period=100-1;  //ARR
	TIM_TimeBaseInitStruct.TIM_Prescaler=720-1;  //psc
	TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
	
	//輸出比較單元配置
	TIM_OCInitTypeDef TIM_OCInitStruct;
	TIM_OCStructInit(&TIM_OCInitStruct);
	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;//設置CCR數(shù)值

	TIM_OC3Init(TIM2, &TIM_OCInitStruct);
	
	// 配置PA2端口
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init( GPIOA, &GPIO_InitStruct);
	
	//啟動定時器
	TIM_Cmd(TIM2,ENABLE);
}

void pwm_setcompare( uint16_t compare)
{
	TIM_SetCompare3(TIM2, compare);
}

motor模塊配置,對于pwm模塊二次封裝和調(diào)整

#include "stm32f10x.h"                  // Device header
#include "pwm.h" 

void motor_init(void)
{
	pwm_init();
	//初始化方向控制的PA4 PA5
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_5;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init( GPIOA, &GPIO_InitStruct);
	
}

void motor_setspeed(int8_t speed)
{
	if(speed >=0)
	{
		GPIO_SetBits(GPIOA,GPIO_Pin_4);
		GPIO_ResetBits(GPIOA,GPIO_Pin_5);
		pwm_setcompare(speed);
	}
	else
	{
		GPIO_SetBits(GPIOA,GPIO_Pin_5);
		GPIO_ResetBits(GPIOA,GPIO_Pin_4);
		pwm_setcompare(-speed);
	}
}

在主函數(shù)的中簡單配置文章來源地址http://www.zghlxwxcb.cn/news/detail-765627.html

#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "OLED.H"
#include "motor.H"
#include "key.H"



uint8_t keyn=0;
int8_t speed=0;
int main()
{
	
	OLED_Init();
	motor_init();
	keyinit();
	

	OLED_ShowString(1,1,"SPEED");
	OLED_ShowSignedNum(2,1,speed,3);
	while(1)
	{
		keyn=key_getnum();
		if(keyn==1)
		{
			speed+=20;
			if(speed>100)
			{
				speed=-100;
			}
			OLED_ShowSignedNum(2,1,speed,3);
		}
		motor_setspeed(speed);
	}
}

到了這里,關(guān)于STM32-微項目03-pwm控制直流電機運行的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【STM32學習】——定時器輸出比較功能&PWM脈寬調(diào)制&通用/高級定時器輸出比較通道&舵機/直流電機簡介&PWM驅(qū)動呼吸燈/舵機/直流電機代碼實操

    聲明:學習筆記根據(jù)b站江科大自化協(xié)stm32入門教程編輯,僅供學習交流使用!

    2024年02月03日
    瀏覽(32)
  • STM32控制直流電機轉(zhuǎn)向

    一、所需硬件模塊 1.主控芯片:STM32F103C8T6 2.程序下載器:STLINK 3.電機:直流電機 4.電機驅(qū)動模塊:L298N 二、模塊介紹 1、主控芯片采用的是STM32系列的最小系統(tǒng)板,通過控制其引腳的輸出進而實現(xiàn)對電機的控制; 2、STLINK下載器是用于燒錄程序,其中的SWCLK、SWDLO、GND、3.3V引腳

    2024年02月07日
    瀏覽(56)
  • 基于STM32單片機的直流電機PWM調(diào)速(數(shù)碼管顯示)(Proteus仿真+程序)

    基于STM32單片機的直流電機PWM調(diào)速(數(shù)碼管顯示)(Proteus仿真+程序)

    ? ? ? 由 STM32單片機+數(shù)碼管顯示模塊+鍵盤模塊+L298N電機驅(qū)動模塊+直流電機 1、采用STM32F103單片機為主控制器 2、四個按鍵,分別為啟動/暫停、方向切換、加速、減速功能 3、數(shù)碼管顯示PWM占空比和電機轉(zhuǎn)動方向(0正轉(zhuǎn),1反轉(zhuǎn)) 注意:proteus8.11版本才能打開 ? 24、基于STM32單

    2024年02月11日
    瀏覽(19)
  • [proteus]STM32F103單片機直流電機PID算法PWM波電機調(diào)速正反轉(zhuǎn)Proteus仿真

    1、實現(xiàn)功能: (1)、基于STM32F103單片機PID算法PWM控制直流電機正反轉(zhuǎn)調(diào)速,LCD1602顯示轉(zhuǎn)速等??赏ㄟ^“加速”、“減速”按鍵修改“目標轉(zhuǎn)速”并實時測量“實際轉(zhuǎn)速”送到LCD1602上顯示。 (2)、“啟動”按鍵控制電機啟動,默認啟動電機是正轉(zhuǎn)(示波器上的黃色PWM波)。 (3)、“

    2024年02月06日
    瀏覽(26)
  • 基于stm32的減速直流電機PID算法控制

    基于stm32的減速直流電機PID算法控制

    本例程采用了HAL庫進行項目開發(fā)(主要使用軟件CubexMX和keil5),文章末尾會有代碼開源,歡迎各位對文章進行指正和探討。 ????????硬件組成:stm32f103c8t6最小系統(tǒng)板;0.96寸LED12864(I2C通訊模式);智能小車12v移動電源;25GA370直流減速電機(帶霍爾編碼器);JDY-31藍牙模塊

    2024年02月20日
    瀏覽(22)
  • PWM控制直流電機

    PWM控制直流電機

    一,TB6612電機驅(qū)動模塊 ? ? ? 直流電機屬于大功率器件,GPIO無法直接驅(qū)動,需要電機驅(qū)動模塊配合,才能驅(qū)動直流電機. TB6612可以驅(qū)動2個直流電機。由IN1,IN2控制電機旋轉(zhuǎn)方向,由PWM控制電機旋轉(zhuǎn)速度。 二,代碼部分 核心代碼還是為PWM部分,直流電機初始化也只是多初始化

    2023年04月27日
    瀏覽(21)
  • PWM如何控制直流電機

    PWM如何控制直流電機

    智能車基礎可是控制電機呀!如何設置頻率,如何控制車的加速,減速,正反轉(zhuǎn)狀態(tài)~。是這篇文章要弄明白的 對于普通的 直流(有刷)電機 ,在其兩個電極上接上合適的直流電源后,電機就可以滿速轉(zhuǎn)動,電源反接后,電機就反向轉(zhuǎn)動。實際情況是我們要能控制電機的正反

    2024年01月18日
    瀏覽(20)
  • 【正點原子】STM32電機應用控制學習筆記——2.直流無刷電機基礎知識

    【正點原子】STM32電機應用控制學習筆記——2.直流無刷電機基礎知識

    沒有電刷,無換向器的電機,也稱為無換向器電機。 主要是定子和轉(zhuǎn)子,而直流有刷電機多的是換向器和電刷。 而直流有刷的定子是N和S的永磁體,而無刷是三個線圈饒阻。 直流有刷是定子是饒阻,無刷的定子是N和S的永磁體。兩者的轉(zhuǎn)子和定子恰好是相反的。也是他們最大

    2024年02月03日
    瀏覽(44)
  • STM32 Proteu直流電機正反轉(zhuǎn)控制系統(tǒng)限位開關(guān)-0035

    STM32 Proteu直流電機正反轉(zhuǎn)控制系統(tǒng)限位開關(guān)-0035

    STM32?Proteu直流電機正反轉(zhuǎn)控制系統(tǒng)限位開關(guān)-0035 Proteus 仿真小實驗: STM32?Proteu直流電機正反轉(zhuǎn)控制系統(tǒng)限位開關(guān)-0035 功能: 硬件組成:STM32F103C6單片機?+L298N電機控制電路+直流電機+3個按鍵(正轉(zhuǎn)、反轉(zhuǎn)、停止)+LED指示燈(正轉(zhuǎn)、反轉(zhuǎn)、停止)+限位開關(guān)(正限位?反限位)

    2024年02月09日
    瀏覽(18)
  • STM32單片機直流電機PID速度控制正反轉(zhuǎn)控制(霍爾磁鐵測速)LCD1602

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包