MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动

这篇具有很好参考价值的文章主要介绍了MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

芯片使用:MSP432P401R.

今日学习一款全角度15KG大扭力舵机的驱动,最近电赛学习任务紧,更新一篇比较水的文章:

文章提供原理解释,全部代码,整体工程:

目录

舵机驱动原理:

这是舵机DS3115MG:

全角度反馈编程设计:

初始化定时器TA3:

设计转角函数:

整体测试工程下载:

 测试成功视频:

提示:这个代码对MG996R舵机同样适用


舵机驱动原理:

目前我所接触到的舵机,9g舵机,以及本文将要介绍的DS3115MG,它们作为舵机,一般接有三根线,其中俩根是供电使用,还有一根是信号线,供电需要我们对照产品手册选择合适的电源,而信号线则是重点学习的地方:

之前我有一篇文章讲过9g舵机的驱动:

MSP432学习笔记8:定时器A_PWM驱动舵机_NULL指向我的博客-CSDN博客

而我们今日学习的主角:DS3115MG,它的驱动原理与之大同小异,我们需要给信号线一个相应频率PWM的信号,让其知道有控制信号要到来,然后同时调整PWM的占空比即可调整其旋转角度

(这里信号的频率与占空比先不仔细说,后文会一起查阅介绍,手把手编程驱动)

这是舵机DS3115MG:

MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动,MSP432学习笔记,硬件模块与传感器的驱动,笔记,MSP432P401R,嵌入式硬件,arm开发,学习

 我们看到它的手册,挖掘有用信息:

我们需要知道的大致有三个重要点:1、电压电流   2、PWM频率   3、识别占空比范围

第一张图告诉我们,这个产品是有15KG的扭力的,而且预计可能要最大6V的供电:

MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动,MSP432学习笔记,硬件模块与传感器的驱动,笔记,MSP432P401R,嵌入式硬件,arm开发,学习

第二张图介绍基本机械特性与性能,使用机械电子产品应在合理的环境条件下

MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动,MSP432学习笔记,硬件模块与传感器的驱动,笔记,MSP432P401R,嵌入式硬件,arm开发,学习

这张图便是有我们需要的参数:

1.PWM频率范围50~330Hz

2.脉宽范围是500~2500 us

3.精度是3us

4.旋转方向是顺时针

MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动,MSP432学习笔记,硬件模块与传感器的驱动,笔记,MSP432P401R,嵌入式硬件,arm开发,学习

全角度反馈编程设计:

实验目标:

0.初始化定时器A的PWM模式

1.舵机缓慢从0~180全角度转动

2.反馈当前高电平占空比

首先我们有输出PWM的需求,因此这时少不了MSP432的定时器A,他作为瑞士军刀级别的多功能定时器模块,它有PWM输出的功能

初始化定时器TA3:

//定时器A3 PWM 初始化
void TimerA3_PWM_inint(void)
{
	//1.配置GPIO复用
	GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P9,GPIO_PIN2,GPIO_PRIMARY_MODULE_FUNCTION);

	
	//2.配置结构体
	  Timer_A_PWMConfig TimA3_PWMConfig;																//定义一个名为 TimA1_PWMConfig的结构体
	  TimA3_PWMConfig.clockSource=TIMER_A_CLOCKSOURCE_SMCLK;						//时钟源
    TimA3_PWMConfig.clockSourceDivider=48;														//时钟分频 范围1~64
    TimA3_PWMConfig.timerPeriod=3333;																//自动重载值
    TimA3_PWMConfig.compareRegister=TIMER_A_CAPTURECOMPARE_REGISTER_3;//通道一(与引脚相关联)
    TimA3_PWMConfig.compareOutputMode=TIMER_A_OUTPUTMODE_TOGGLE_SET;	//输出模式
    TimA3_PWMConfig.dutyCycle=1;																		//此处可初始调占空比
	
	//初始化定时器:
	Timer_A_generatePWM(TIMER_A3_BASE,&TimA3_PWMConfig);
	
}	

这段代码分为几个步骤来初始化定时器TA3:

1.配置GPIO复用

2.配置初始化结构体:

                我此处的时钟源SMCLK是配置的48Mhz,48分频,

                TimA3_PWMConfig.timerPeriod=3333;   是自动重载值,是根据需要频率计算的:

                计算公式如下:

   PWM频率  =  时钟源频率  /  ((时钟源除数值“时钟分频”) *(CCR0值“自动重载值” + 1)) 

此处我需要的是300HZ的信号,因此我的计算过程如下:

300=48 000 000/(48*(CCR0+1))

计算出CCR0约为3333

设计转角函数:

因为这个项目仅仅只需让这个舵机转就行了,所以这部分做的比较粗糙,使用了延时函数以及扔进主循环的诸多粗糙做法:

大致思路是定义好其最大与最小占空比,在定义其每次转角占空比增加的最小分度 ,让i从500~2500之间每次加三在变化,同时向上位机打印当前角度的i值:

#include "main.h"

#define DIV 3
#define DIV_MAX 2500
#define DIV_MIN 500

uint16_t i=0;

int main(void)
{
	  inint_all();   //初始化所有模块
    while (1)
    {
			if(i<DIV_MIN)
			{i=DIV_MIN;}
			i+=DIV;
			printf("%d\r\n",i);
			delay_ms(50);
			MAP_Timer_A_setCompareValue(TIMER_A3_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_3,i);
			if(i>=DIV_MAX)
			{i=DIV_MIN;}
    }
}

整体测试工程下载:

https://download.csdn.net/download/qq_64257614/88111224?spm=1001.2014.3001.5503

 测试成功视频:

·这是测试成功的视频,没啥大的注意点,主要是PWM的频率和占空比,然后舵机要和单片机供地

 

DS3115舵机的0~180全角度驱动

提示:这个代码对MG996R舵机同样适用

MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动,MSP432学习笔记,硬件模块与传感器的驱动,笔记,MSP432P401R,嵌入式硬件,arm开发,学习

MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动,MSP432学习笔记,硬件模块与传感器的驱动,笔记,MSP432P401R,嵌入式硬件,arm开发,学习文章来源地址https://www.toymoban.com/news/detail-610372.html

到了这里,关于MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MSP432学习笔记5——外部中断

    所用单片机型号:MSP432P401r 今日继续我的MSP432电赛速通之路。 外部中断是个很有用的配置 STM32几乎每个I/O口都能配置复用为外部中断 但MSP432并不是这样。 我经过查阅数据手册发现 支持中断的引脚 为: P1^0~ P1^7        P3^0~ P3^7     P5^0~ P5^7 P2^0~ P2^7        P4^0~ P4^7  

    2024年02月07日
    浏览(36)
  • MSP432库函数学习笔记-GPIO

    简述MSP432Pxx-GPIO库的各函数 1,GPIO模式设置,PxDIR寄存器 2,GPIO复用功能配置,PxSEL寄存器 3,GPIO输出电平设置,PxOUT寄存器 4,GPIO输入模式下上/下拉电阻选择,PxREN寄存器 5,GPIO输入读取模式设置,PxIN寄存器 6,GPIO中断模块设置 1,中断使能寄存器PxIE 2,获取选择I/O口上的中

    2024年02月16日
    浏览(47)
  • MSP432学习笔记2——GPIO输入输出

    今日继续更新我的MSP432速通笔记 新的硬件芯片到手,脑子是空白的,板子是漆黑的,诺想要缓解这份尴尬,便来点灯吧! 今日主要速通MSP432的GPIO输入输出功能,目标是连接矩阵键盘与LED流水灯模块 到MSP432P401R开发板上进行练习。 文章 附上原理图与代码 目录 ​编辑 基础知

    2024年02月16日
    浏览(29)
  • MSP432学习笔记6:中断优先级管理

    所用型号:MSP432P401R 今日继续我的MSP432电赛速通之路。 主要学习的是: 中断优先级管理、软件挂起中断、屏蔽中断优先级 目录 MSP432具有8级可编程的中断优先级。  中断优先级管理库函数:

    2024年02月05日
    浏览(41)
  • MSP432E401Y学习笔记1

    因为去年电赛强制使用TI芯片,所以最近在闲鱼上淘了一块MSP432E401Y准备学习。吃了没文化的亏,这款MSP432的资料实在太少了,网上仅有的一些资料也是P系列的,实在是很头疼。所以在次记录一下自己的学习过程,为想学这款板子的伙伴避一些坑。 芯片:MSP432E401Y 开发环境:

    2024年02月15日
    浏览(36)
  • MSP432学习笔记7:定时器A中断

    型号:MSP432P401r 今日得以继续我的MSP432电赛速通学习之路...... 今日学习的是定时器A中断! 目录 基础工程在此下载: 更改后的实验演示工程在此下载: 定时器A基础介绍:

    2024年02月09日
    浏览(34)
  • MSP432学习笔记4:时钟与滴答计时器

    所用单片机型号:MSP432P401r 今日继续更新我的MSP432电赛速通笔记: 提示: 本节内容相当于讲述delay_ms() 和delay_us() 俩延时函数的由来, 所以不需要花费过多时间斟酌 MSP432单片机各部件能在有条不紊地自动工作,实际上是在其系统时钟作用下,由CPU指挥芯片内各个部件自

    2024年02月16日
    浏览(45)
  • MSP432学习笔记9:定时器A-----捕获

    今日得以继续我的MSP432电赛速通之旅~~~ 目录 基础知识: 相关库函数: 一般配置步骤: 首先定义一个初始化函数:

    2024年02月07日
    浏览(41)
  • MSP432学习笔记14:定时器A的学习整理

    本文整理学习一下定时器A的相关基础知识,本文比较偏向理解与理论性, 主要是深入在官方手册层面进行对定时器A的深入研究,定时器 A的相关实践基本上在之前的文章中都有提及: 1.定时器A定时中断: MSP432学习笔记7:定时器A_定时中断_msp432时钟_NULL指向我的博客-CSDN博客

    2024年02月16日
    浏览(38)
  • MSP432学习笔记10:串口接收字符串命令并执行任务

    今日终于得以继续我的MSP432电赛速通之路: 串口通信是单片机需要学习深入的一个很重要的板块,通过串口,我们可以实现许多数据收发与调试工作,可谓是非常方便快捷。 今日就跟随我的脚步,逐步扎实地学习 如何编程MSP432串口接收字符串命令 ,并使其执行一些任务,

    2024年02月10日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包