STM32F407スタディノート-MG90Sステアリングギアモジュール(基本制御)

STM32F407スタディノート-MG90Sステアリングギアモジュール(基本制御)

1.基本原理:
PWMデューティサイクルを変更することにより、ステアリングギアをさまざまな角度で回転させることができます。回転角度とパルス時間および対応するデューティサイクルの関係を以下に示します(タイムベースパルス= 20ms)。

回転角度 パルス時間 レジスターの比較 デューティサイクル
0.5ms 195 2.5%
45° 1ms 190 5%
90° 1.5ms 185 7.5%
135° 2ms 180 10%
180° 2.5ms 175 12.5%

デューティサイクル計算式:パルス時間/ 20ms
比較レジスタ:200-200 *デューティサイクル
記事の最後に記載されているコードは、サーボの回転角を制御するために比較レジスタを変更するだけで済みます。

2.コード機能:
比較レジスタを変更して、ステアリングギアの回転角を制御します。

3.配線:
PA0——PWM信号線(黄色の線)、+ 5v—— + 5v(赤の線)、GND——GND(茶色の線)

4.コード部分:
SG90.h

#ifndef __SG90_H
#define __SG90_H

#include <stm32f4xx.h>
#include <delay.h>
#include "math.h"
void TIM2_PWM_Init(u32 arr,u32 psc);

#endif   //__SG90_H

SG90.h

#include "sys.h"
#include "SG90.h"




void TIM2_PWM_Init(u32 arr,u32 psc)
{
    
    
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);  	 
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); 	
	
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM2); 
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;          
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;	
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        
	GPIO_Init(GPIOA,&GPIO_InitStructure);              
	  
	TIM_TimeBaseStructure.TIM_Prescaler=psc;  
	TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; 
	TIM_TimeBaseStructure.TIM_Period=arr;   
	TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; 
	
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
	

	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
 	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 
	TIM_OCInitStructure.TIM_Pulse = 0;
	TIM_OC1Init(TIM2, &TIM_OCInitStructure);  

	TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);  
 
    TIM_ARRPreloadConfig(TIM2,ENABLE);
	
	TIM_Cmd(TIM2, ENABLE);  									  
}  


main.c

#include "sys.h"
#include "HC-SR04.h"
#include "SG90.h"
#include "delay.h"

int main() 
{
    
    
	delay_init(168);
	TIM2_PWM_Init(200-1,8400-1);
	
	while(1)
	{
    
    	
 		delay_ms(1000);	 
		TIM_SetCompare1(TIM2,175);	
		
		delay_ms(1000);	 
		TIM_SetCompare1(TIM2,180);	
		
		delay_ms(1000);	 
		TIM_SetCompare1(TIM2,185);	
		
		delay_ms(1000);	 
		TIM_SetCompare1(TIM2,190);	
		delay_ms(1000);	 
		TIM_SetCompare1(TIM2,195);			
	}
}

PS:このモジュールとコードは、ジャイロスコープモジュールと超音波モジュールで使用できます。

この記事のリファレンス:STM32コントロールステアリングギアの原理とコード

初心者が学び、使用するためだけに

おすすめ

転載: blog.csdn.net/weixin_54121461/article/details/113999518