当前位置: 首页 > news >正文

基于stm32f407舵机的使用以及项目的具体的使用事项

一.前提

1舵机的基本概念

       首先要明白一点,舵机也分为很多种的,现在用的比较多的是模拟舵机和数字舵机他们的区别如下:

模拟舵机和数字舵机是两种常见的舵机类型,它们在控制方式、精确度和价格等方面存在差异。

模拟舵机(Analog Servo):

  1. 控制方式:模拟舵机通过脉冲宽度调制(PWM)信号进行控制,其脉冲宽度通常在1到2毫秒之间变化,用来控制舵机的旋转角度。
  2. 精确度:由于模拟信号容易受到干扰和噪声的影响,模拟舵机的精确度和重复精度相对较低。
  3. 成本:模拟舵机成本较低,适合对控制精度要求不是特别高的应用。

数字舵机(Digital Servo):

  1. 控制方式:数字舵机使用数字信号进行控制,可以通过微控制器精确地控制脉冲宽度,从而提高控制的准确性和响应速度。
  2. 精确度:数字舵机通常具有更好的精确度和重复精度,能够更精确地定位到特定的角度。
  3. 成本:由于采用数字控制技术,数字舵机的价格相对较高。

在选择舵机时,需要根据应用场景的需求来决定使用模拟舵机还是数字舵机。例如,在需要较高精确度和响应速度的场合,数字舵机会是更好的选择;而在成本敏感或者对精确度要求不高的场合,模拟舵机可能更加适合。

        我们平常做项目所用的是模拟舵机,也就是用PWM对其控制的。

然后得清楚控制舵机的一些基本原理:我们常用的一些舵机PWM信号频率为50HZ,即周期为20ms。当高电平的脉宽在0.5ms~2.5ms之间时舵机就可以对应旋转到不同的角度。(以0~180°的舵机为例)1.5ms为90°,2.5ms为180°。

大概的一些常用是知识点就如上了,频率周期这些底层性的 原理东西这里就不在此述说了。

二.具体代码

定时器tim2初始化

//¶æ»úpwm¿ØÖÆ
void TIM2_PWM_Init(u32 arr,u32 psc)
{		 					 //´Ë²¿·ÖÐèÊÖ¶¯ÐÞ¸ÄIO¿ÚÉèÖÃGPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);  	//TIM13ʱÖÓʹÄÜ    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); 	//ʹÄÜPORTFʱÖÓ	GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM2); //GPIOF8¸´ÓÃΪ¶¨Ê±Æ÷13GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;           //GPIOF8GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //¸´Óù¦ÄÜGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	//ËÙ¶È100MHzGPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //ÍÆÍ츴ÓÃÊä³öGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;        //ÉÏÀ­GPIO_Init(GPIOA,&GPIO_InitStructure);              //³õʼ»¯PF8TIM_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);//³õʼ»¯¶¨Ê±Æ÷13//³õʼ»¯TIM13 Channel1 PWMģʽ	 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //Ñ¡Ôñ¶¨Ê±Æ÷ģʽ:TIMÂö³å¿í¶Èµ÷ÖÆÄ£Ê½2   ͨµÀ1TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜTIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //Êä³ö¼«ÐÔ:TIMÊä³ö±È½Ï¼«ÐÔ¸ßTIM_OC1Init(TIM2, &TIM_OCInitStructure);  //¸ù¾ÝTÖ¸¶¨µÄ²ÎÊý³õʼ»¯Íâ333333333333333ÉèTIM1 4OC1TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);  //ʹÄÜTIM13ÔÚCCR1ÉϵÄÔ¤×°ÔØ¼Ä´æÆ÷TIM_ARRPreloadConfig(TIM2,ENABLE);//ARPEʹÄÜ TIM_Cmd(TIM2, ENABLE);  //ʹÄÜTIM13							  
}  

tim2的初值设置:

	TIM2_PWM_Init(20000,84);	

常规调用:

	TIM_SetCompare1(TIM2,1500);


http://www.mrgr.cn/news/20820.html

相关文章:

  • 衡石分析平台使用手册-安装环境准备
  • 基质金属蛋白酶(MMPs):癌症侵袭和转移的主要驱动者
  • 2024软考-软件设计师-经典易错题
  • 2024高教社杯全国大学生数学建模竞赛C题解析 | 思路 代码 论文
  • WordPress上可以内容替换的插件
  • C++入门(2)
  • 极市开发平台yolov8训练无人机数据集样例数据流程
  • 【生日视频制作】黄底毛笔书法字展示写字效果AE模板修改文字软件生成器教程特效素材【AE模板】
  • 已入职华为!!关于我成功拿下华为大模型算法岗经验总结
  • uniapp+vue3实现小程序和h5解压线上压缩包以及如何访问解压后的视频地址
  • 【云计算】锐评国内五大公有云厂商及其OpenAPI
  • 新书分享|ChatGLM3大模型本地化部署、应用开发与微调(附PDF)
  • 第一个100%开源的MoE大模型,7B的参数,1B的推理成本
  • UE5.3_跟一个插件—Socket.IO Client
  • 在VMware中的centos stream 9上用packstack安装openstack的单机版
  • 如何用智能码二维码做产品说明,向扫码者展示产品卖点
  • 2024年全国大学生数学建模竞赛(E题) 建模解析|交通流量管控|小鹿学长带队指引全代码文章与思路
  • Vue eslint 语法检测问题
  • 通过联立方程模型来评估货币政策对股票市场的影响
  • vue3中ref和reactive的区别和优缺点