文章目录[隐藏]
目录
前言
由于参加了学校的研究性课程,题目是手势识别的控制研究,所以最近一直在搞这些,前面已经分享过两波其他方式的手势识别,有感兴趣的可以去看看(用openmv来手势识别还没做出来,可能能要下一波来分享了),这里是借助手势识别模块来识别手势,来控制步进电机。
一、材料
1.手势识别模块(我使用的是某宝上买的PAJ7620型号)
2.stm32单片机(stm32f103)
3.THB6128步进电机驱动
4.两相四线步进电机
5.交流转直流电源(12v)
二、接线
1.步进电机与步进电机驱动接线
这里可以参考我另一篇博客--->>步进电机与驱动接线链接
不同的是之前用的一块充电宝当的电源,一开始还好用,不过到后面就拉跨了,后来我改用了12V的直流电源,就好多了(不过用着驱动板有点烫)。
2.stm32与步进电机驱动接线
1.CP+与DIR+分别接B6与B9口,CP-与DIR-都接地(G)。
3.手势识别模块与stm32接线
1.手势识别模块上的VCC与GND分别接stm32上的3.3v与G
2.手势识别模块上的SCL、SDA、INT分别接stm32上面的B8、B7、B5。
4.其他
1.如果想看识别结果的话,可以接上USB-TTL,A9、A10,分别接RXD、TXD。
2.ST-LINK接线就不多说了,一一连就好了,连线方面大家可以看下面的图片
三、主要程序解释
1.如何控制步进电机方向
void DIR_Init(void) //DIR¡ª¡ªPB5³õʼ»¯
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_9);
}
步进电机驱动的DIR接的B9,所以要控制电机转动方向,直接改变B9的状态即可。
状态1:
GPIO_SetBits(GPIOB,GPIO_Pin_9);
状态2
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
2.手势控制步进电机相关代码
static void Paj7620_UpAction(void)
{
LED_Init();
DIR_Init();
TIM4_PWM_Init(200,450);
TIM_SetCompare1(TIM4,200/2); //ÉèÖÃÕ¼¿Õ±ÈΪ50%=arr/2
GPIO_SetBits(GPIOB,GPIO_Pin_9);
printf("up123\r\n");
delay_ms(2000);
TIM4_PWM_Init(0,0);
}
static void Paj7620_DownAction(void)
{
LED_Init();
DIR_Init();
TIM4_PWM_Init(200,450);
TIM_SetCompare1(TIM4,200/2); //ÉèÖÃÕ¼¿Õ±ÈΪ50%=arr/2
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
printf("down\r\n");
delay_ms(2000);
TIM4_PWM_Init(0,0);
}
1.手势识别模块可以识别10种不同的手势,这里电梯只需要识别上下即可。
2.这里电机转动的时间设置的是2000ms,如果觉得时间短可以再改大一点。
四、工程代码下载
下载积分设置的是0积分,乐在分享嘛,欢迎大家来交流讨论。
总结
本文介绍了使用stm32结合手势识别模块来控制步进电机,模拟一种无接触式手势识别电梯,而手势识别的方法还有很多,能控制的硬件也有很多,主要是要多多思考,多发现、多思考、多总结。接下来如果还有什么方法我也会分享出来,大家如果也有好的想法,也欢迎来交流交流。
版权声明:本文为CSDN博主「馘耳」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_48535429/article/details/120933398
暂无评论