单片机控制电机行程

[复制链接]
919|1
 楼主| damoyeren 发表于 2016-3-22 14:56 | 显示全部楼层 |阅读模式
设计思路:
1.单片机收到电机启动命令号,调用启动电机程序,启动电机。电机启动后通过行程标志判断电机是否到达预定行程,如果到达,停止电机,调用电机停止函数。
2.行程计算是通过中断函数用定时器来实现的。假设到达预定行程需要5s,则在5s的时候,置位中断标志位。主函数判断标志位,如果为1,则调用电机停止函数。
  1. /********************T1定时器定时中断**************************/       
  2.         if(TMR1IF&&TMR1IE)
  3.         {
  4.                 TMR1IF=0;
  5.                 t1_count++;
  6.                 TMR1H=0xb;
  7.             TMR1L=0xdb;//延时时间:100ms
  8.                 t1_flag=0;//进入中断清除T1定时器标志位;定时时间到后置位T1定时器标志位。
  9.                 if(t1_count>=20)
  10.                 {
  11.                         t1_count=0;
  12.                         LED1=~LED1;
  13.                         t1_flag=1;
  14.                 }
  15.         }


  16. switch(Receive_Array[3])
  17.                               {
  18.                                 case 0x33://启动电机
  19.                                             BagData_uart(0x33,2,Motor_OK);//返回启动成功后的数据包
  20.                                             motor_start();
  21.                                                 while(!t1_flag);
  22.                                                 motor_stop();
  23.                                                 //while(t1_flag==0);
  24.                                                 //jiansu=1;       
  25.                                                 //while(t1_flag)
  26.                                                 //{
  27.                                                   //  motor_stop();//debug执行不到此语句
  28.                                                     //break;//终止while循环       
  29.                                                 //}
  30.                                            break;
 楼主| damoyeren 发表于 2016-3-22 14:58 | 显示全部楼层
存在的问题:
1.电机不能停止。中断已经进入了,因为中断内部的led测试,led闪烁了。
2.电机的速度降低了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

126

主题

393

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部