本帖最后由 jinglixixi 于 2024-2-14 12:52 编辑
在绣花机仿真系统中,是靠托板的二维运动来实现绣针的相对位移,所采用的步进电机及导轨的形式如图1所示。其中,滑台丝杠的螺距为4mm/圈。
图1 行走装置结构
所选用的电机为步进电机,见图2所示。
图2 步进电机
该电机的工作电流为1.0~1.5A,扭矩为0.3N.m,步进角为1.8°,200脉冲/圈,其排线各引脚的作用及排列关系见图3所示。
图3 引脚信号排列
为驱动步进电机,选取的是双极微步电机评估板,见图4所示。
图4 双极微步电机评估板
步进电机与驱动板的连接关系为:
其中VM与GND引脚是连接12V直流电源。
驱动板的信号则由CH32X035开发板提供,是由扩展接口引出,见图5所示。
图5 扩展接口
其中:
步进脉冲信号输入端CLK连接PA4
步进方向信号输入端DIR连接PA5
使能信号输入端EN连接PA6
图6 实物连接
步进脉冲信号输入端CLK连接PA4(一个脉冲走一步,脉冲频率决定着步进电机速度)
步进方向信号输入端DIR连接PA5(可使用按键来切换步进电机的方向)
使能信号输入端EN连接PA6(低电平时关闭芯片的功率输出)
测试电机转动的程序为:
实现引脚输出模式配置的函数为:
void BSP_BJDJ_Init (void)
{
GPIO_InitTypeDefGPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_5| GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
所用引脚输出高低电平的语句定义为:
#define CLK_high GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_SET)
#define CLK_low GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_RESET)
#define DIR_high GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET)
#define DIR_low GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_RESET)
#define EN_high GPIO_WriteBit(GPIOA, GPIO_Pin_6, Bit_SET)
#define EN_low GPIO_WriteBit(GPIOB, GPIO_Pin_6, Bit_RESET)
测试电机转动的程序为:
int main(void)
{
uint16_t i = 0 ;
uint16_t M=60000;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
SystemCoreClockUpdate();
Delay_Init();
BSP_BJDJ_Init();
EN_high;
DIR_high;
for(i=0; i<M; i++)
{
CLK_high;
Delay_Us(200);
CLK_low;
Delay_Us(200);
}
Delay_Ms(500);
DIR_low;
for(i=0; i<M; i++)
{
CLK_high;
Delay_Us(200);
CLK_low;
Delay_Us(200);
}
EN_low;
}
经程序的编译与下载,其执行效果如视频所示。
演示视频:
电机控制