打印

步进电机问题

[复制链接]
1183|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位,我又来问问题了。很多问题。麻烦大家了。

LPC2138做步进电机的时候,在软件仿真平台上可以控制正反转,但是烧到硬件上搭电路时却发现只能正转,控制不了反转?
调试时2个控制开关用示波器测过都能有高低电平,可是就是控制不了,等于开关没用。请问这是怎么回事?

单步调试时,总是进不去第二个while?是否程序运行时只在第一个while(控制正转),不能进入第二个while(控制反转)?可是软件上仿真又可以,有高手可以指点一二么?
谢谢!
————————————————————————————————————————源代码:

/****************************************************************************
* 文件名:Step.C
* 功能:通过按键KEY1控制电机的正转,KEY2控制电机的反转
****************************************************************************/
#include "Config.h"
#include "Target.h"
#define KEY1 (IO0PIN&(1<<20))       //定义按键1
#define KEY2 (IO0PIN&(1<<21))       //定义按键2
uint8 const step[] = {0x00,0x02,0x06,0x04,0x0C,0x08,0x09,0x01,0x03};
/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly  延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{
   uint32  i;
   for(; dly>0; dly--)
      for(i=0; i<5000; i++);
}
/*****************************************************************
* 名称:main()
* 功能:通过按键KEY1控制电机的正转,KEY2控制电机的反转
******************************************************************/
int  main(void)
{
   TargetResetInit();
    uint32 i=0;
   PINSEL0 = 0x00000000;  // 设置所有管脚连接GPIO
   PINSEL1 = 0x00000000;
   IO0DIR = 0x0000000f;   // 设置P0.0-P0.3控制口为输出
   IO0CLR=0xffffffff;
   while(1)
   {
     
    i=1;
     while(!KEY1)
     {
       IO0PIN=((IO0PIN & 0xfffffff0)|step[i]);
       DelayNS(200);
       i++;
       if(i>8)
         i=1;
           }
     i=7;
      while(!KEY2)
     {
       IO0PIN=((IO0PIN & 0xfffffff0)|step[i]);
       DelayNS(200);
       i--;
       if(i<1)
         i=8;
      
     }   
   }
   
}

相关帖子

沙发
阿南| | 2012-10-18 18:00 | 只看该作者
这个要看你的硬件

使用特权

评论回复
板凳
yueyinji1989|  楼主 | 2012-10-18 22:47 | 只看该作者
本帖最后由 yueyinji1989 于 2012-10-18 22:48 编辑

按理说,代码的第二个while是可以进去的吧,用IART调试的时候总进不去第二个,
硬件的话,就按软件仿真图的电路来连得哦,好纠结。。
2# 阿南

使用特权

评论回复
地板
seaair| | 2012-10-19 09:21 | 只看该作者
与硬件接线有关;如果是步进电机,4相的那种,A和A非相输出电平相位差为180度,A项和B项输出相位差为90度;可以以此来判断你的输出信号时序是否正确

使用特权

评论回复
5
阿南| | 2012-10-19 12:47 | 只看该作者
软件仿真图的电路和实践硬件还是有区别的。
你把你连的电路帖上来,看看。

使用特权

评论回复
6
yueyinji1989|  楼主 | 2012-10-22 09:12 | 只看该作者
图如下

11.jpg (147.89 KB )

11.jpg

使用特权

评论回复
7
阿南| | 2012-10-22 09:31 | 只看该作者
楼主,在硬件下
1。测试第一个While是否有退出。
2。两个按键的状态是否都能正确读入
3。直接给电机两端接入电压看是否能否正反转,以判断是电机问题还是输出问题,或是按键输入问题,当然也可以直接测试4个输出是否已经满足正反转要求了。

使用特权

评论回复
8
yueyinji1989|  楼主 | 2012-10-22 10:56 | 只看该作者
本帖最后由 yueyinji1989 于 2012-10-22 11:17 编辑

斑竹,在硬件下
1、这个测不了,具体因为2
2、两个按键的状态不能读入,不过,我直接用这2个按键测LED和用示波器测时,发现可以控制高低电平,但电机却没反应。
3、直接输电压是电机是可以转动的。

经过调试后,把读入按键的I/O口从20,21换成6,7,成功了。。谢谢斑竹。

问题又来了,为什么管脚20,21读不进状态的?
反转可以,当正转时它却左右不停地转动。
4相的,给定的输入是 B,BC,C,CD,D,AD,A,AB.软件正转没问题的,就硬件。
如何把延时调小了,就不会出现这个问题,延时相对大就有这个问题。

使用特权

评论回复
9
阿南| | 2012-10-22 13:06 | 只看该作者
为什么管脚20,21读不进状态的?这个要检查IO配置,及是否可以作为输入。
不停转动,是时序问题,加延时可以弥补。

使用特权

评论回复
10
yueyinji1989|  楼主 | 2012-10-22 13:37 | 只看该作者
本帖最后由 yueyinji1989 于 2012-10-22 13:38 编辑

管脚配好的了,改成其他管脚后,可以读入。

谢谢了!

9# 阿南

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

281

帖子

0

粉丝