CC2530 控制步进电机 实验 电机不转动 求指导
这是驱动的管脚原理图
这是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的,电平不兼容吧
硬件是不是有问题?用示波器看一下步进电机的驱动波形吧。调试这种与硬件相关的软件,首先必须保证硬件是正常的。
你这个搞定了没?
老哥,你这个弄好了吗