【前言】
MSPM03507 有定时器输出PWM功能,结合在前面的手势传感器。这次实验主要实验手势传感器来实现对电机的正反转控制。
【实验器材】
1、LP-MSPM0G3507开发板。
2、PAJ7620手势传感器
3、步进电机控制器
5、步进电机
6、24伏直流电源
【软件开发环境】
Code Composer Studio Version: 12.7.0.00007 版本
【程序设计思路】
1、使用i2c读取手势传感的手势,并判断出他的状态。
2、步进电机驱动机设置细分为1600。pwm与之配合也输出1600Hz即每秒转一圈。
3、配置一个输出IO为方向控制信号。高电平为正转,低电平为反转。
【实验步骤】
1、配置pwm,打开syscfg配置,增加一个pwm,时钟选择、通道IO、占空比等如下图所示。


2、配置GPIO 选PB6为方向输出IO

3、配置好后生成工程。
添加代码如下:
#include "ti_msp_dl_config.h"
#include "\drivers\PAJ7620U2.h"
#include "\oled\oled.h"
int Gesture_Data;
void set_dir(void);
int main(void)
{
SYSCFG_DL_init();
DL_TimerG_startCounter(PWM_0_INST);
/* Set LED to indicate start of transfer */
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"hello world",16,1);
OLED_Refresh_Gram();
uint8_t OBJ_BRIGHTNESS = 0; // Object Brightness (Max. 255)
uint16_t OBJ_SIZE = 0; // Object Size (Max. 900)
uint16_t ID = PAJ7620U2_init(I2C1);
/* If write and read were successful, toggle LED */
while (1) {
delay_cycles(1000);
OLED_Clear();
OLED_Printf(0,32,16,1,"MOTOR");
// OBJ_BRIGHTNESS = PAJ7620U2_PS_ReadObjBrightness(I2C1); // Object Brightness (Max. 255)
// OBJ_SIZE = PAJ7620U2_PS_ReadObjSize(I2C1); // Object Size (Max. 900)
// OLED_Printf(0,0,16,1,"BRIGHT:%d",OBJ_BRIGHTNESS);
// OLED_Printf(0,24,16,1,"OBJ_SIZE:%d",OBJ_SIZE);
Gesture_Data = PAJ7620U2_Gesture_ReadData(I2C1);
set_dir();
OLED_Refresh_Gram();
}
}
void set_dir(void)
{
if( Gesture_Data != PAJ_NONE )
{
switch (Gesture_Data)
{
case PAJ_UP:
OLED_Printf(0,0,16,1,"UP");
DL_GPIO_clearPins(GPIO_MOTOR_PORT, GPIO_MOTOR_MOTOR_DIR_PIN);
DL_TimerG_startCounter(PWM_0_INST);
break;
case PAJ_DOWN:
OLED_Printf(0,0,16,1,"Dowm");
DL_GPIO_setPins(GPIO_MOTOR_PORT, GPIO_MOTOR_MOTOR_DIR_PIN);
DL_TimerG_startCounter(PWM_0_INST);
break; // вниз
case PAJ_LEFT:
OLED_Printf(0,0,16,1,"LEFT");
break; // влево
case PAJ_RIGHT:
OLED_Printf(0,0,16,1,"RIGHT");
break; // вправо
case PAJ_FORWARD:
OLED_Printf(0,0,16,1,"FORWARD");
DL_TimerG_stopCounter(PWM_0_INST);
break; // вперед
default: break;
}
Gesture_Data = 0;
}
}代码中,set_dir,根据不同的手势,来开启或者关闭pwm的定时器输出。同根据不同的方向来设置DIR的电平状态。
【实验效果】
下载到开发板后,可以使用手势来控制电机的正反转,关闭。
我要赚赏金
