使用TMS320F28335控制360°数字舵机

简要阐述利用F28335的PWM模块控制360°舵机的过程,包括舵机相关知识、注意事项以及部分代码。
摘要由CSDN通过智能技术生成

前言

前两天用F28335控制四位共阳数码管玩了一下(链接在这),这两天换一个,用F28335来控制舵机。

舵机控制原理

PWM原理

PWM(Pulse Width Modulation),指脉冲宽度调制,是一种模拟控制方式。它的思想很简单,就是一种等效的思想:一个5V的信号作用0.5秒可以等效成一个2.5V的信号作用1秒。所以通过控制信号的通断时间,就可以在恒压信号的基础上输出不同大小的信号。

舵机相关知识

舵机由外壳、电机、控制电路以及减速器组成,因为常用于舵面(飞行器操纵面)的控制,所以叫舵机。根据转动范围,舵机可以分为90°、180°和360°舵机等。我手头上的这个是360°舵机,所以它可以做整圈转动。360°舵机和其他舵机不一样的是,其他舵机可以控制其转动角度,而360°舵机只能控制其转动速度和转动方向。各种各样的舵机
(图片来自网络,侵删)

舵机一般有三根线,分别是电源线、地线以及信号线。舵机的控制是通过在信号线上施加不同占空比的PWM信号而实现的。

实现过程

PWM模块配置

PWM信号的配置主要是周期以及占空比,和控制开关器件不一样,由于这里PWM是作为舵机的控制信号,不需要避免开关器件同时接通的问题,因此不需要对死区做出配置。
首先进行相关的宏定义,以便理解和后期修改,包括时钟频率、PWM频率和周期,代码如下:

#if (CPU_FRQ_150MHZ)
  #define CPU_CLK   	150e6  							// SYSCLK = 150MHz
#endif
#if (CPU_FRQ_100MHZ)
  #define CPU_CLK   	100e6  							// SYSCLK = 100MHz
#endif

#define TBCTLVAL  		0x200E      					// Up-down cnt, timebase = SYSCLKOUT 控制寄存器的值
#define SERVO_CLK		50								// SERVOCLK = 50Hz
#define SERVO_SP        CPU_CLK/(2*SERVO_CLK*8*12)		// 周期寄存器的值,由于采用增减计数,所以周期寄存器的值为系统时钟频率除PWM频率再除2

然后需要对PWM的输出管脚进行配置,用的是 InitEPwm1Gpio 函数,这个函数是自带的例程函数,位于 DSP2833x_EPwm.c 文件中,代码如下:

void InitEPwm1Gpio(void)
{
   
   EALLOW;
   
/* Enable internal pull-up for the selected pins */
// Pull-ups can be enabled or disabled by the user. 
// This will enable the pullups for the specified pins.
// Comment out other unwanted lines.

    GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;    // Enable pull-up on GPIO0 (EPWM1A)
    GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值