【前言】
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的电平状态。
【实验效果】
下载到开发板后,可以使用手势来控制电机的正反转,关闭。