成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

10. STM32——PWM 控制舵機(jī)(超聲波感應(yīng)開蓋垃圾桶)

jasperyang / 1594人閱讀

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

通用定時(shí)輸出PWM

以TIM3為例,STM32的通用定時(shí)器氛圍TIM2,TIM3,TIM4,TIM5,每個(gè)定時(shí)器都有獨(dú)立的四個(gè)通道可以用來作為: 輸入捕獲,輸出比較,PWM輸出,單脈沖模式輸出等。

STM32的定時(shí)器除了TIM6和TIM7(基本定時(shí)器)之外,其他的定時(shí)器都可以產(chǎn)生PWM波輸出,高級(jí)定時(shí)器TIM1,TIM8可以同時(shí)產(chǎn)生7路PWM輸出,而通用定時(shí)器可以同時(shí)產(chǎn)生4路PWM輸出,這樣STM32可以最多同時(shí)輸出30路PWM輸出!

PWM的工作原理

以向上計(jì)數(shù)為例,講述PWM原理:

  1. 在PWM輸出模式下除了CNT(計(jì)數(shù)器當(dāng)前值),ARR(自動(dòng)重裝載值),CCRx(捕獲/比較寄存器值)。

  2. 當(dāng)CNT小于CCRx時(shí),TIMx_CHx通道輸出低電平

  3. 當(dāng)CNT等于或大于CCRx時(shí),TIMx_CHx通道輸出高電平

所謂脈寬調(diào)制信號(hào)(PWM波),就是一個(gè)TIMx_ARR自動(dòng)重裝載寄存器確定頻率(由它決定PWM周期),TIM_CCRx寄存器確定占空比信號(hào)。

PWM的模式

TIM_OCMode_PWM1 (邊沿對(duì)齊模式)

向上計(jì)數(shù)時(shí): 當(dāng)TIMx_CNT

向下計(jì)數(shù)時(shí): 一旦TIMx_CNT>TIMx_CCRx,CCR1通道1為無效電平,否則為有效電平。

TIM_OCMode_PWM2(中央對(duì)齊模式)

向上計(jì)數(shù)時(shí): 當(dāng)TIMx_CNT

向下計(jì)數(shù)時(shí): 一旦TIMx_CNT>TIMx_CCRx,CCR1通道1為有效電平,否則為無效電平。

占空比

是指在一個(gè)周期內(nèi),信號(hào)處于高電平的時(shí)間占據(jù)整個(gè)信號(hào)周期的百分比。

舵機(jī)

實(shí)物圖

接線

SG9O電機(jī)

硬件接線:

紅線 : 3.3v/ 5v
黑 / 棕線 : GND
黃線 : 信號(hào)線

舵機(jī)工作原理

舵機(jī)的主要組成部分為伺服電機(jī),所謂伺服就是服從信號(hào)的要求而動(dòng)作。在信號(hào)來之前,轉(zhuǎn)子停止不動(dòng);信號(hào)來到之后,轉(zhuǎn)子立即運(yùn)動(dòng)。因此我們就可以給舵機(jī)輸入不同的信號(hào),來控制其旋轉(zhuǎn)到不同的角度。
舵機(jī)接收的是PWM信號(hào),當(dāng)信號(hào)進(jìn)入內(nèi)部電路產(chǎn)生一個(gè)偏置電壓,觸發(fā)電機(jī)通過減速齒輪帶動(dòng)電位器移動(dòng),使電壓差為零時(shí),電機(jī)停轉(zhuǎn),從而達(dá)到伺服的效果。簡單來說就是給舵機(jī)一個(gè)特定的PWM信號(hào),舵機(jī)就可以旋轉(zhuǎn)到指定的位置。

舵機(jī)上有三根線,分別是GND、VCC和SIG,也就是地線、電源線和信號(hào)線,其中的PWM波就是從信號(hào)線輸入給舵機(jī)的。
一般來說,舵機(jī)接收的PWM信號(hào)頻率為50HZ,即周期為20ms。當(dāng)高電平的脈寬在0.5ms~2.5ms之間時(shí)舵機(jī)就可以對(duì)應(yīng)旋轉(zhuǎn)到不同的角度。

t = 0.5ms——————-舵機(jī)會(huì)轉(zhuǎn)到 0 °t = 1.0ms——————-舵機(jī)會(huì)轉(zhuǎn)到 45°t = 1.5ms——————-舵機(jī)會(huì)轉(zhuǎn)到 90°t = 2.0ms——————-舵機(jī)會(huì)轉(zhuǎn)到 135°t = 2.5ms——————-舵機(jī)會(huì)轉(zhuǎn)到 180°

周期T

PWM周期為20ms = 0.02s = (7200*200)/72000000

PWM占空比

是指在一個(gè)周期內(nèi),信號(hào)處于高電平的時(shí)間占據(jù)整個(gè)信號(hào)周期的百分比.由于PWM周期為20ms,所以(以舵機(jī)會(huì)轉(zhuǎn)動(dòng) 45°為例),占空比就應(yīng)該為1ms/20ms = 5%,所以TIM_SetCompare1的 TIMx 捕獲比較 1 寄存器值就為200 * 5% = 10

單位: % (0%~100%)

TIM3 PWM輸出 驅(qū)動(dòng)SG90電機(jī) 配置過程:

1. 使能GPIO時(shí)鐘,TIM定時(shí)器時(shí)鐘,部分重映射時(shí)鐘

//1.使能GPIO時(shí)鐘、定時(shí)器時(shí)鐘、復(fù)用時(shí)鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

2. 重映射定時(shí)器

//2.重映射定時(shí)器GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

3. 配置GPIO結(jié)構(gòu)體

GPIO_InitTypeDef gpioInitStructure;//3.配置GPIOgpioInitStructure.GPIO_Mode  = GPIO_Mode_AF_PP; //復(fù)用推挽輸出gpioInitStructure.GPIO_Pin   = GPIO_Pin_5; //引腳5gpioInitStructure.GPIO_Speed = GPIO_Speed_10MHz; //10HzGPIO_Init(GPIOB, &gpioInitStructure); //初始化

4. 配置通用定時(shí)器TIM結(jié)構(gòu)體

TIM_TimeBaseInitTypeDef timInitStructure;//4.配置定時(shí)器timInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //不分頻timInitStructure.TIM_CounterMode   = TIM_CounterMode_Up; //向上計(jì)數(shù)模式timInitStructure.TIM_Period        = 200-1; //設(shè)置了在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值。timInitStructure.TIM_Prescaler     = 7200-1; //設(shè)置了用來作為 TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值。TIM_TimeBaseInit(TIM3, &timInitStructure); //初始化

5. 配置PWM

//5.配置PWMtimOCInitStructure.TIM_OCMode      = TIM_OCMode_PWM1; //邊沿對(duì)齊模式timOCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能timOCInitStructure.TIM_OCPolarity  = TIM_OCPolarity_High; //設(shè)置為高電平有效		TIM_OC2Init(TIM3, &timOCInitStructure); //初始化TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //配置自動(dòng)加載的預(yù)加載寄存器		TIM_Cmd(TIM3, ENABLE); //使能

stm32 超聲波感應(yīng)開蓋垃圾桶

motor.c

#include "motor.h"#include "stm32f10x.h"void motor_Init(void){		GPIO_InitTypeDef gpioInitStructure;		TIM_TimeBaseInitTypeDef timInitStructure;		TIM_OCInitTypeDef timOCInitStructure;				//1.使能GPIO時(shí)鐘、定時(shí)器時(shí)鐘、復(fù)用時(shí)鐘		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);		RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);		RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);				//2.重映射定時(shí)器		GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);		//3.配置GPIO		gpioInitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;		gpioInitStructure.GPIO_Pin   = GPIO_Pin_5;		gpioInitStructure.GPIO_Speed = GPIO_Speed_10MHz;				GPIO_Init(GPIOB, &gpioInitStructure);				//4.配置定時(shí)器		timInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;		timInitStructure.TIM_CounterMode   = TIM_CounterMode_Up;		timInitStructure.TIM_Period        = 200-1;		timInitStructure.TIM_Prescaler     = 7200-1;				TIM_TimeBaseInit(TIM3, &timInitStructure);				//5.配置PWM		timOCInitStructure.TIM_OCMode      = TIM_OCMode_PWM1;		timOCInitStructure.TIM_OutputState = TIM_OutputState_Enable;		timOCInitStructure.TIM_OCPolarity  = TIM_OCPolarity_High;				TIM_OC2Init(TIM3, &timOCInitStructure);		TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);				TIM_Cmd(TIM3, ENABLE);		}

motor.h

#include "stm32f10x.h"void motor_Init(void);

HC_SR04.c

在STM32第9篇中可以找到 9. STM32——HC_SR04超聲波測距

HC_SR04.h

在STM32分欄第9篇中可以找到 9. STM32——HC_SR04超聲波測距

usart.c

在STM32分欄第6篇中可以找到 6. STM32——用串口發(fā)送數(shù)據(jù)點(diǎn)亮LED(串口的中斷接收)

usart.h

在STM32分欄第6篇中可以找到 6. STM32——用串口發(fā)送數(shù)據(jù)點(diǎn)亮LED(串口的中斷接收)

main.c

#include "stm32f10x.h"#include "main.h"#include "led.h"#include "shake.h"#include "relay.h"#include "exti.h"#include "usart.h"#include "tim.h"#include "motor.h"#include "SysTick.h"#include "HC_SR04.h"int main(){		float Length=0;//		int pwmval=155;			motor_Init();		HC_SR04Init();		usart_init();		//		printf("abc");				while(1)		{				Length=Get_Length();				printf("%.3f/r/n",Length);				delay_ms(100);								if(Length<5)				{						TIM_SetCompare2(TIM3, 15);						delay_ms(1000);										}				else if(Length>5)				{						TIM_SetCompare2(TIM3, 25);				}		}}

stm32 超聲波感應(yīng)開蓋垃圾桶 效果展示

如果覺得這篇文章對(duì)你有用。歡迎大家點(diǎn)贊、評(píng)論哈哈
需要整個(gè)工程代碼,歡迎大家打賞,評(píng)論區(qū)留上你的郵箱 or vx or qq。o( ̄︶ ̄)o

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/121491.html

相關(guān)文章

  • STM32CubeMX筆記(9)--定時(shí)器生成PWM特定波形,控制舵機(jī)轉(zhuǎn)動(dòng)

    摘要:只能在度到度之間運(yùn)動(dòng),超過范圍,舵機(jī)輕則齒輪打壞,重則燒壞內(nèi)部電路舵機(jī)能度轉(zhuǎn)動(dòng)能控制轉(zhuǎn)速。相關(guān)定時(shí)器的參數(shù)設(shè)置定時(shí)器為例編寫相關(guān)的函數(shù)文件相關(guān)函數(shù)開啟添加定時(shí)器的通道和通道的生成開啟使能函數(shù),放置于到中的用戶代碼區(qū)。 ...

    darryrzhong 評(píng)論0 收藏0
  • 項(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)呢,還要加入避障模塊,自己一開始一頭霧水,于是開始了漫長的借鑒之路,首先作為一個(gè)開發(fā)者,我覺得學(xué)習(xí)的地方首選是B站,所以我找了相關(guān)的做智能小車的視頻 首先是B站智能小車教...

    CoffeX 評(píng)論0 收藏0
  • 使用STM32CubeMX初始化STM32F031F6Px系列

    摘要:利用可視化界面來進(jìn)行的相關(guān)配置,所以時(shí)鐘滴答定時(shí)器串口等就不用根據(jù)數(shù)據(jù)手冊(cè)去操作標(biāo)準(zhǔn)庫甚至是寄存器了,可以通過軟件直接生成。 使用STM32CubeMX初始化ST...

    Zhuxy 評(píng)論0 收藏0
  • 項(xiàng)目三:利用PWM波和GPIO控制電機(jī)

    摘要:較高時(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ī)下面分別是控制...

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

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

0條評(píng)論

閱讀需要支付1元查看
<