8473|30

283

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

05.04【每日一问】:怎样用程序控制? [复制链接]

怎么用51单片机控制直流电机正转180°后马上又反转180°,这样反复的转?
这程序我写了很久都没达到我要的效果呢?    误差很大。(其实就是做一个雨刮模拟系统)。
一起讨论哈!!

最新回复

沉了?  详情 回复 发表于 2011-5-6 23:55
点赞 关注
 
 

回复
举报

2万

帖子

71

TA的资源

管理员

沙发
 

原帖由 TopMars 于 2011-5-4 09:12 发表 怎么用51单片机控制直流电机正转180°后马上又反转180°,这样反复的转?这程序我写了很久都没达到我要的效果呢?    误差很大。(其实就是做一个雨刮模拟系统)。一起讨论哈!!

 

楼主可以把程序帖出来 让大家给提提建议  误差怎么大法

 

图片以附件形式上传

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

板凳
 
两个PWM输出控制正反转,如果误差比较大的话,是不是可以从小转速调到大转速。如果你直接实现正反转,而没有减速,电机有惯性,很难第一时间减速到零。做好是先从小速度开始递增到你想要的速度!不知道我说的对不。期待高手提出更好的方案!!
 
 
 

回复

283

帖子

0

TA的资源

纯净的硅(初级)

4
 
就是惯性太大    没办法解决  要是换成步近电机就简单了    但老师不许用步近电机。
 
 
 

回复

283

帖子

0

TA的资源

纯净的硅(初级)

5
 
#include
#define uchar unsigned char
#define uint unsigned int

sbit P20=P2^0;
sbit P21=P2^1;
sbit K1 =P2^2;           //开,开关打开时,电机默认为低速转动
sbit K2 =P2^3;           //关
sbit K3 =P2^4;           //加速开关,只有在启动开关打开的情况下次此按键才能起作用

uchar flag;         //电机运行标志位
uchar time=0;
uchar period=25;   
uchar high=10;
uchar th1=0;
uchar tl1=0;
uchar th0=0;
uchar tl0=0;

void delay(uint t)
{
while(t--);
}

void moter_start(void)        //电机启动函数
{
  if(K1==0)                                //判断是否有键按下
   delay(50);                                //延时消抖
    if(K1==0)                           //确认键按下
         {
           while(1)                        //开关打开 电机默认为低速转动
        {
      th0=1;
          tl0=0;
      th1=0;
          tl1=0;
        }         
         }
         else                           //没键按下
           {
             P20=0;                  //电机不启动
                 P21=0;
           }
}
void main()
{
  TMOD=0x01; //定时器0方式1   
  TH0=0x3c; //定时器装载初值,通过改变初值可确定定时的长短,也就确定了电机转半周的时间   
  TL0=0xb0;        //问题是怎么能知道电机转半圈的时间呢???
  EA=1;
  ET0=1;
  TR0=1;
  moter_star();
  if(K3==0)                                //判断是否有键按下
   delay(50);
  if(K3==0)                          //加速
  {
   th0=0;
   tl0=0;
   th1=1;
   tl1=0;
  }
  if(K2==0)                                //判断是否有键按下
   delay(50);
  if(K2==0)
  {
           P20=0;                  //电机停止
        P21=0;
  }       

}

void timer0 () interrupt 1
{
   TH0=0x3c;     /*定时器初值重装载*/   
   TL0=0xb0;
   time++;
   if(time==high)   /*高电平持续时间结束,变低*/   
    { P20=tl0;
          P21=tl1;               
        }   
    else if(time==period)     /*周期时间到,变高*/   
       {  time=0;   
          P20=th0;
                  P21=th1;                                                     
        }   
}
 
 
 

回复

283

帖子

0

TA的资源

纯净的硅(初级)

6
 
电路图很简单的  就是三个独立按键  一个是开  一个关  还有个加速    电机驱动我用的H型桥式驱动电路
 
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

7
 

回复 6楼 TopMars 的帖子

雨刮模拟系统,你可以按照你写的算法让电机转动啊,比如一米的距离,你在一段距离内是加速,一段距离是匀速(最大速度),然后再在最后的那段距离内实现减速,等到达位置了速度减的很小就行了,然后你在按照同样的方法实现反转。

你可以试一下,把你的加速减速,匀速放到一个数组里,直接读数。具体的还要实验完成!

赞赏

1

查看全部赞赏

 
 
 

回复

344

帖子

0

TA的资源

纯净的硅(初级)

8
 
楼主研究一下雨刷吧 车上的雨刷好像是用一个四连杆机构实现的 只有一个电机驱动 不知道楼主做雨刷的目的是什么 双雨刷是要保持同步率的 两个电机驱动雨刷的话要搞一个随动控制 另外您想要的应该是直流电机跟踪方波信号 可采用数字校正 或PID校正来实现 不会校正的话电机可以在制动阶段令电机处于反接制动状态 这样刹车较快 但要注意电流问题
个人签名我们是不为一切驻留的亡魂
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

9
 
如果用时间,根本没法做到,一个好的办法是做个限位装置或者感应开关,当转到一定角度后,让电机卡住了,这时候,再让电机反转

[ 本帖最后由 jxb01033016 于 2011-5-4 13:15 编辑 ]
 
 
 

回复

283

帖子

0

TA的资源

纯净的硅(初级)

10
 
是老师布置的一个作业  叫我用直流电机模拟它    要做真的雨刮   根本就可以不用单片机就行   

我是学汽车电子的  雨刮电路我这里也有  我们实验室也有    老师可能是想用这个让我更好的掌握用单片机

控制直流电机吧
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

11
 
雨刮一般都是机械实现的,如果用电机实现至少也是减速电机,无反馈情况下控制电机转动角度是很难的。当然也可以通过电量计的方式解决
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

12
 
我记得有可以通过输入检测电机转速的系统,但不知道细节
 
 
 

回复

283

帖子

0

TA的资源

纯净的硅(初级)

13
 
真的很有难度    用直流电机我都试过很多方法了  最好的效果就是不知道转了多少圈后它才反转   
看来是的换个思路设计才行     或许用高档点的单片机能够实现吧
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

14
 
也不行的,不是高档不高档的问题,是这个真的很难实现,首先你要用PWM吧转速控制在很低,还有要用PID控制加速减速,最后还要检测控制扭矩的变化。总之至少你要有多个电流电压的反馈才能及时了解电机转动的信息,当然最好是使用光栅等直接反馈元件控制反馈至。
 
 
 

回复

1万

帖子

141

TA的资源

版主

15
 
这个涉及到位置传感,单靠程序是不行的,要有相关电路和机械结构的配合才行。
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

16
 
可以通过电流变化和电压反馈获得电机转动角度。不过这个精度不高。一般只用于转速检测。
 
 
 

回复

186

帖子

0

TA的资源

纯净的硅(中级)

17
 
我觉得在多次试验中,判断好何时加速、何时匀速、何时减速,然后就能在程序中实现了,这个课题重在调试,多次烧写程序,看现象,这样就能做好这个东西。不是很难。你可以用数组也可以用定时器,pwm等等,只要能搞掂就ok
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

18
 
判断,如何判断,你那个不叫判断,叫猜想,想着它怎样了。有个更合适的名词解释你的作为——“意淫”。
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

19
 
才发现楼主出的题有问题,不符合活动要求哈。
活动形式:

1)每日10:00前——由一人发布一个问题,论坛网友均可参与讨论(问题可以是围绕某一技术问题的讨论、可以是大家关心的一些热点话题讨论等);

2)每日18:00前——出题人公布答案,并根据回帖质量,评定威望等级(1~10);

2、出于对广大坛友负责的态度,每个题目和题目的答案必须由出题本人仔细认真考虑周全。
 
 
 

回复

473

帖子

0

TA的资源

纯净的硅(高级)

20
 
不知道楼主知道不知道霍尔元件,他是一个电磁器件,一般让直流电机转到一个固定的位置就用这个霍尔开关
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表