微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > CC2530 控制步进电机 实验 电机不转动 求指导

CC2530 控制步进电机 实验 电机不转动 求指导

时间:10-02 整理:3721RD 点击:


这是驱动的管脚原理图

这是CC2530板块


这是接线


这是步进电机驱动器


接+5v电源。

程序:

/*-----------------------------------------------

名称:步进电机实验

论坛:http://jielovedan.taobao.com/

编写:JIAJIE-TH 佳杰科技

日期:2012.5

修改:无

内容:步进电机实验

------------------------------------------------*/

#include <ioCC2530.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#define A1 P0_4 //定义步进电机连接端口

#define B1 P0_5

#define C1 P0_6

#define D1 P0_7

#define LED0 P1_0

#define uint unsigned int

#define uchar unsigned char

#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电

#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电

#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电

#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电

#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

unsigned char Speed;

/*------------------------------------------------

uS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0255 这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下 T=tx2+5 uS

------------------------------------------------*/

void DelayUs2x(unsigned char t)

{

while(--t);

}

/*------------------------------------------------

mS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0255 这里使用晶振12M,精确延时请使用汇编

------------------------------------------------*/

void DelayMs(unsigned char t)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

/****************************

//初始化IO口程序

*****************************/

void InitIO(void)

{

P0DIR |= 0xF0; //P10定义为输出

P1DIR |= 0x1;

}

/*------------------------------------------------

主函数

------------------------------------------------*/

main()

{

Speed=5; //调整速度

while(1)

{

LED0 =0;

{A1=1;B1=0;C1=0;D1=0;}

DelayMs(Speed); //改变这个参数可以调整电机转速 ,

LED0 =0; //数字越小,转速越大,力矩越小

Coil_B1

DelayMs(Speed);

LED0 =0;

Coil_C1

DelayMs(Speed);

LED0 =0;

Coil_D1

DelayMs(Speed);

}

}



不转动,求指导哪里出错了

这个是程序,上面的是我改动过的,下面这个程序 也不出现象 求指导
/*-----------------------------------------------
名称:步进电机实验
论坛:http://jielovedan.taobao.com/
编写:JIAJIE-TH 佳杰科技
日期:2012.5
修改:无
内容:步进电机实验
------------------------------------------------*/
#include <ioCC2530.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#define A1 P0_4 //定义步进电机连接端口
#define B1 P0_5
#define C1 P0_6
#define D1 P0_7

#define uint unsigned int
#define uchar unsigned char

#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

unsigned char Speed;
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{

while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/****************************
//初始化IO口程序
*****************************/
void InitIO(void)
{
P0DIR |= 0xF0; //P10定义为输出
P1DIR |= 0x1;
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
Speed=5; //调整速度

while(1)
{

{A1=1;B1=0;C1=0;D1=0;}

DelayMs(Speed); //改变这个参数可以调整电机转速 ,
//数字越小,转速越大,力矩越小
Coil_B1
DelayMs(Speed);

Coil_C1
DelayMs(Speed);

Coil_D1
DelayMs(Speed);
}
}

看看时序是否正确?

哥们你的步进电机转了吗

你可以硬件有没问题?赋一个0xff看下。如果还不行,那你就看看硬件吧

请问你用的什么电机驱动器

电机最好要有独立电源和控制单元完全电气隔离

cc25303.3V的信号,步进电机应该是5V的,电平不兼容吧

硬件是不是有问题?用示波器看一下步进电机的驱动波形吧。调试这种与硬件相关的软件,首先必须保证硬件是正常的。

你这个搞定了没?

老哥,你这个弄好了吗

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top