电机控制方案
直播中

王飞云

8年用户 1570经验值
私信 关注
[问答]

步进电机控制电路的工作原理是什么?

步进电机控制电路的工作原理是什么?
28BYJ-48步进电机有哪些参数?其含义是什么?

回帖(1)

乔婧

2021-6-29 14:59:00
  介绍
  参数含义
  28——步进电机的有效最大外径是28毫米
  B——表示是步进电机
  Y——表示是永磁式
  J——表示是减速型
  48——表示四相八拍
  原理图
  
  步进电机控制电路
  
  工作原理
  通过对不同的相依次导通一定时间,使得定子转到指定角度。
  最佳工作模式为八拍模式(八拍转过一个定子角度)
  需要注意减速比
  节拍刷新大于1.8ms即可
  单片机控制
  首先查询得步进电机节拍对应的IO控制代码
  然后每隔一定的时间进行代码的刷新(这个刷新时间主要依据步进电机的启动频率)
  我看到好多此类的控制代码所需要的积分都是很多的,所以我就自己写了一份代码,包含控制正反转,还有旋转的角度,可以修改参数就可以达到自己想要的方案。
  附上代码
  #include “delay.h”#include “sys.h”#include “stdio.h”//ALIENTEK miniSTM32开发板实验1//跑马灯实验 //技术支持:www.openedv.com//广州市星翼电子科技有限公司//IN4: PB9 d//IN3: PB8 c//IN2: PB7 b//IN1: PB6 a//四相八拍unsigned short phasecw[4] ={0x0200,0x0100,0x0080,0x0040};// D-C-B-A 反转unsigned short phaseccw[4]={0x0040,0x0080,0x0100,0x0200};// A-B-C-D 正转//引脚初始化void Moto_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 ;//引脚按着INT1顺序接就行了 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_9 );}void MotoRcw(void) //反转{ int i; for(i=0;i《4;i++) { GPIO_Write(GPIOB,phasecw); delay_ms(3); } }void MotoRccw(void) //正转{ int i; for(i=0;i《4;i++) { GPIO_Write(GPIOB,phaseccw); delay_ms(3); } }void MotorStop(void) //停止{ GPIO_Write(GPIOB,0x0000); }//控制电机正转还是反转某个角度//direction方向,1为正转,0为反转//angle角度,可为0-360具有实际意义void Motor_Ctrl_Direction_Angle(int direction, int angle){ u16 j; if(direction == 1) { for(j=0;j《64*angle/45;j++) { MotoRccw();//正转 } MotorStop();//停止 } else { for(j=0;j《64*angle/45;j++) { MotoRcw();//反转 } MotorStop();//停止 }} int main(void) { Moto_Init(); //电机 delay_init(); //延时函数初始化 Motor_Ctrl_Direction_Angle(1,180);//正转180度 delay_ms(500); Motor_Ctrl_Direction_Angle(0,90);//反转90度 while(1) { } } 如果需要完整的工程的话可以关注微信公众号一手创客回复 05
举报

更多回帖

发帖
×
20
完善资料,
赚取积分