找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1247|回复: 5
打印 上一主题 下一主题
收起左侧

求一个蓝牙控制步进电机转动角度的单片机代码编写思路,通过蓝牙发送指令转动角度数

[复制链接]
跳转到指定楼层
楼主
ID:858009 发表于 2021-5-12 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
35黑币
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2021-5-13 09:13 | 只看该作者
初始化系统

main()
{
while(1)
{
if 蓝牙接收到信号
按指令转动角度
eidif
}
}
回复

使用道具 举报

板凳
ID:858009 发表于 2021-5-13 10:10 | 只看该作者

指令转动角度不知道怎么控制
回复

使用道具 举报

地板
ID:827243 发表于 2021-5-13 10:29 | 只看该作者
电机上装个旋转编码器,连在IO口就可以测量角度了。
回复

使用道具 举报

5#
ID:883031 发表于 2021-5-13 11:15 | 只看该作者
步进电机没接收到一个脉冲转动的角度是固定的(用x表示),如果你要转动Y角度,那么用Y/x就可以得到电机要转动的脉冲数,给电机送相应的脉冲即可。
回复

使用道具 举报

6#
ID:858009 发表于 2021-5-13 11:28 | 只看该作者
cn_zhx 发表于 2021-5-13 11:15
步进电机没接收到一个脉冲转动的角度是固定的(用x表示),如果你要转动Y角度,那么用Y/x就可以得到电机要 ...

我尝试了,但是把while(1)去掉就不可以,我想用蓝牙控制,实现不了,只能用按键控制
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};   //逆时钟旋转相序表
uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};    //正时钟旋转相序表

sbit K1=P3^0;  //反转按键
sbit K2=P3^1;  //正转按键
sbit K3=P3^2;  //停止按键

uchar b,t,i,j,r;   //声明变量

void delaynms(uint a)
{
  while(a--)
  {
                for(b=0;b<115;b++)     //1ms基准延时程序
   {
                        ;
   }
  }
}
void motor_ccw(void)  //正转函数
{
for(i=0;i<8;i++)  //旋转4函数
{
   P1=CCW;
   delaynms(2);   //调节转速,延时变长,转动速度变慢
}
}
void motor_cw(void)  //反转函数
{
for(i=0;i<8;i++)  //旋转控制函数
{
   P1=CW;
   delaynms(2);   //调节转速,延时变长,转动速度变慢
}
}
void main(void)
{
uchar N=1;          //因为步进电机是减速步进电机,减速比的1/64 ,修改N可以改变转动角度大小
                      //所以N=64时,步进电机主轴转一圈,N最小值为1。
while(1)
{
   if(K1==0)
   {
  for(r=0;r<N;r++)
  {
    motor_ccw();  //电机逆转
  }
   }
   else if(K2==0)
   {
        for(r=0;r<N;r++)
  {
    motor_cw();    //电机反转
  }
   }
   else
   P1=0xf0;    //电机停止
}
}      
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表