C51步进电机

步进电机

在这里插入图片描述
在这里插入图片描述
上下一对(俩个)绕组通电,单四拍模式——单相绕组通电四节拍,逆时针转,转到4对齐c,1对齐右上角
步进电机一共有 5 根引线,其中红色的是公共端,连接到 5V 电源,接下来的橙、黄、粉、蓝就对应了 A、B、C、D 相,对应低四位,蓝色位数最高,红色接5V电源
在这里插入图片描述
八拍节拍的 IO 控制代码数组:
unsigned char code BeatCode[8] = { 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6 };

考虑步进电机启动频率,我们控制节拍刷新时间大于 1.8ms,一般由定时器中断控制节拍为2ms

index = index & 0x07; //用&操作实现到 8 归零 ,按位与

00000111&00000111,再加1,就变成了00000000
减速概念:多个齿轮,多级减速,8 秒多才转一圈
步进电机最大的特点是:精确控制转动量

#include <reg52.h>
unsigned char code BeatCode[8] = { //步进电机节拍对应的 IO 控制代码
 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6
};
void delay();
void main()
{
 unsigned char tmp; //定义一个临时变量
 unsigned char index = 0; //定义节拍输出索引
 
while (1)
 {
 tmp = P1; //用 tmp 把 P1 口当前值暂存
 tmp = tmp & 0xF0; //用&操作清零低 4 位
 tmp = tmp | BeatCode[index]; //用|操作把节拍代码写到低 4 位
 P1 = tmp; //把低 4 位的节拍代码和高 4 位的原值送回 P1
 index++; //节拍输出索引递增
 index = index & 0x07; //用&操作实现到 8 归零
 delay(); //延时 2ms,即 2ms 执行一拍
 } }
/* 软件延时函数,延时约 2ms */
void delay()
{
 unsigned int i = 200;
 while (i--);
}

下面是步进电机转动任意角度代码

#include <reg52.h>
void TurnMotor(unsigned long angle);
void main() {
 TurnMotor(360*25); //360 度*25,即 25 圈
while (1);
}
/* 软件延时函数,延时约 2ms */
void delay()
{
 unsigned int i = 200;
 while (i--);
}
/* 步进电机转动函数,angle-需转过的角度 */
void TurnMotor(unsigned long angle)
{
 unsigned char tmp; //临时变量
 unsigned char index = 0; //节拍输出索引
 unsigned long beats = 0; //所需节拍总数
 unsigned char code BeatCode[8] = { //步进电机节拍对应的 IO 控制代码
 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6
 };
 
 beats = (angle*4096) / 360; //计算需要的节拍总数,4096 拍对应一圈
 while (beats--) //判断 beats 不为 0 时执行循环,然后自减 1
 {
 tmp = P1; //用 tmp 把 P1 口当前值暂存
 tmp = tmp & 0xF0; //用&操作清零低 4 位
 tmp = tmp | BeatCode[index]; //用|操作把节拍代码写到低 4 位
 P1 = tmp; //把低 4 位的节拍代码和高 4 位的原值送回 P1
 index++; //节拍输出索引递增
 index = index & 0x07; //用&操作实现到 8 归零
 delay(); //延时 2ms,即 2ms 执行一拍
 }
 P1 = P1 | 0x0F; //关闭电机所有的相
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值