打印

用单片机控制电机出现的问题,旧帖新改的

[复制链接]
4830|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenyongand|  楼主 | 2010-9-3 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chenyongand 于 2010-9-8 16:49 编辑

我用单片机控制普通的直流电机,拉动门,就是车库门,电机轴上有霍尔传感器,转一圈,计数变量就加一个数,通过这样控制变量的值来设置行程和上下位置
.. . . .   
...
.

.上回我发的帖子的情况有变化,经过这几天的排查,发现并不是因为读取eeprom的问题导致的,新的情况如下:
    电机在启动的时候我设计有缓慢启动,我是通过pwm来实现的,COMR=j;我通过逐步增加那个j的值来实现占空比的,j的值越大,输出的pwm电压越高,电机转速越快。
    这两天我发现,在程序中如果这样写:
    COMR=100;
    CNTR=0X9B;
  也就是说不要缓慢启动,上电就给个固定的电压,这时候发现,上电后,电机就能马上运行


但如果这样写
    COMR=j;
    CNTR=0X9B;
那个j的值通过100ms的定时中断设置标志位,然后在主程序里面检测标志位,发现定时中断了,就j=j+10;加到100为止;这样处理的时候,刚上电,电机就不能马上运行,非要等到一二十秒后才开始缓慢启动起来,上电后第一次启动后,就正常了。但每次断电后的第一次电机启动时都是需要等待,不是马上就运行的,不知道咋回事?
难道刚上电后,定时器没有准备好工作?要等那么长时间

相关帖子

沙发
chenyongand|  楼主 | 2010-9-3 11:11 | 只看该作者
都可以随便说说嘛,讨论讨论

使用特权

评论回复
板凳
yewuyi| | 2010-9-3 11:33 | 只看该作者
可能的原因:
1、按键程序写的太糟糕,难以快速、准确的读键值
2、马达启动的负载太大,马达启动瞬间发生了过流多次保护
3、在判断当前位置和最终的代码中发生了临界代码,这个需要你认真查自己的CODE
4、这是一个非常简单的应用,如果你搞不定,说明你修炼的程度还比较低,那么发生各种低级错误的概率极高,所以要么自己认真自查,要么给出完整的电路图和代码,也许有好心人会耐心看完你的设计并帮你找出问题。
5、呵呵,如果实在查不到问题 ,那就只能是“人品问题”啦。。。

使用特权

评论回复
地板
chenyongand|  楼主 | 2010-9-3 11:48 | 只看该作者
3# yewuyi
你说的我觉得可能的就是第三条和第四条,其他不成立
不是没有检测到按键,按下按键照明灯都亮了,说明检测到了另外负载很轻,几乎空载。
  不知道你说的临界代码是啥意思?
我现在贴出我的一部分给看看:
   switch(p)
      {
      case 1:
         {
          PDR0_P05=0;
          PDR0_P06=1;
          if(study_flag==0) /*设置结束*/
           {
              COMR=j;
              CNTR=0X9B;
            if(Idata2.countss<=0) {COMR=0X00;CNTR=0X00;PDR0_P06=0; p=2;}
           }
           
          else       /*设置中*/
          {
           COMR=100;
           CNTR=0X9B;
          }


   p为1就时,电机应该正传,同时照明灯亮(这在别的段里面),现在照明灯亮了,说明p=1了
Idata2.countss这个变量的值好像是0啊,才导致继电器立马放开了,不知道是不是这样的,这个值我是上电后在eeprom里面读出来的,PDR0_P05,PDR0_P06接的是两个继电器,
要说读取失败了,但过了十多秒后又好了,然后就操作全正常了






         } break;

使用特权

评论回复
5
chenyongand|  楼主 | 2010-9-3 11:51 | 只看该作者
不好意思,上面的那个表情地方是个分号。那个break行是在那段文字上面的

使用特权

评论回复
6
ZRL700424| | 2010-9-3 12:00 | 只看该作者
程序任何地方不对都有可能造成这样的问题。不过3楼提到的第5条我认为可能性不大。

使用特权

评论回复
7
chenyongand|  楼主 | 2010-9-3 16:35 | 只看该作者
唉没人了,把可能的原因都说出来吧,我不知道什么情况下会有这样的结果

使用特权

评论回复
8
yewuyi| | 2010-9-3 16:46 | 只看该作者
一看这直接操作IO口的CODE,心就凉了半截。

搞软件先得学会点简单的DEBUG手段。

以LZ帖子为例,可以先屏蔽掉所有的反转控制和其他的一些不相关代码,只保留按键和马达停、正向转控制,以此类推等,原则就是先简单后复杂,一层一层测试软件和硬件,即使成不了高手,自然总能成一个熟手,也就总能混碗饭吃。

让别人给你家捉虫子,你也不把门打开,让别人猜你家的虫子在哪里?这可太浪费别人的心情了。呵呵,这样的东西很简单,也没什么特别的技术,直接全部放上去,说不定就有好心人愿意出一下手帮你找到问题,否则还是自己尝试着慢慢DEBUG 吧。。。

根据以往经验:
1、软件问题:概率80%
2、硬件问题:概率10%
3、软硬件配合问题:概率10%

还是重点检查你的软件把。

使用特权

评论回复
9
chenyongand|  楼主 | 2010-9-3 17:14 | 只看该作者
8# yewuyi

使用特权

评论回复
10
chenyongand|  楼主 | 2010-9-3 17:17 | 只看该作者
8# yewuyi
我不介意把程序全都贴出来,只是我写的程序很乱,我是初学的,也许只有我知道各个部分的功能啊,怕有人看不下去了,谁要是有信心愿意帮我,我可以把程序发给他看

使用特权

评论回复
11
liujigan| | 2010-9-3 20:57 | 只看该作者
框架搭建我觉得不太好。门的上下各用一个传感器,这样做起来就简单了,不容易出错。

使用特权

评论回复
12
ytmpeigd| | 2010-9-3 22:24 | 只看该作者
继电器也有时会吸合住放不开的状态...
我有碰到过.
还有继电器的反应是要时间的.转换时是不是应该要加一下delay呢?
LZ是用..富士通的MCU吗?

使用特权

评论回复
13
chenyongand|  楼主 | 2010-9-4 07:47 | 只看该作者
11# liujigan
上一代的产品就是这样的,但是因为不具有通用性,安装不方便,每个门都需要手动安装限位,所以不准备用了,你现在又给弄回去了,用软件控制,不同的门只要安装上电机,软件设置起来方便多了

使用特权

评论回复
14
chenyongand|  楼主 | 2010-9-4 07:51 | 只看该作者
12# ytmpeigd
你好,我用的是富士通的芯片
不是继电器的问题,昨天我又试试,设置完行程只要不断电,就很正常,只要断一次电后,再上电,就有这情况出现,感觉那个变量读出的值不太稳定啊,以前我断电读写eeprom都很正常的,现在不知道杂的了

使用特权

评论回复
15
chenyongand|  楼主 | 2010-9-4 09:16 | 只看该作者
我现在越来越确定是断电读写eeprom的问题了,反复试了好多次,只要设置完了,不断电就正常,断一次电后就不正常了,SPI协议,为了保证读写数据的稳定性,我该注意哪些?

使用特权

评论回复
16
zjt761215| | 2010-9-4 10:40 | 只看该作者
你如果觉得eerom有问题可以仿真看看撒

使用特权

评论回复
17
chenyongand|  楼主 | 2010-9-4 17:27 | 只看该作者
16# zjt761215
呵呵,你的第一个发言在我这里
我没用仿真,条件简陋,只有万用表一块,连元件都是从旧板子上拆下来的,公司没有啥设备,不给资金投入,我是举步维艰
我感觉是硬件的问题了,另外一块板子断电的处理程序都是一样的,放在这里就不行了,硬件上稍微有点差别,

使用特权

评论回复
18
chenyongand|  楼主 | 2010-9-8 16:48 | 只看该作者
这几天一直在排查,现在排查到这里了,程序我都把不必要的都暂时屏蔽了,就剩下基本的了,问题集中在了pwm控制和定时器中断上了,麻烦各位帮分析分析

使用特权

评论回复
19
ayb_ice| | 2010-9-8 17:01 | 只看该作者
100%的程序问题
还是先从理论上分析一下自己的总体方案吧
另外LZ觉得是读写EE的问题,程序写后可以读回数据比对一下
另外还应该有错误指示功能,这样自己可以知道程序的大致运行情况,可以通过LED,UART,IO口指示
...

使用特权

评论回复
20
chenyongand|  楼主 | 2010-9-8 17:14 | 只看该作者
19# ayb_ice
我也完全确定是软件问题,硬件的原因我都排除掉了
整体框架也不复杂,上电后,按下遥控就让电机跑起来,程序里面一共三个中断程序,其中两个边沿中断,一个100ms定时器中断
  不知道上电后那个100ms定时器中断是否发生,你说的led指示我一会去试试,检测下到底上电后有没有很快发生定时器中断

使用特权

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

本版积分规则

9

主题

514

帖子

8

粉丝