OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3996|回复: 7

STC单片机15W1K16S 驱动伺服电机 几个小时后突然速度变慢

[复制链接]

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-11-24
在线时间
44 小时
发表于 2021-12-24 00:49:03 | 显示全部楼层 |阅读模式
1金钱
            简单的四个子程序,两个原点归零,外部中断0触发.
两个自动左移右移子程序,一个运行设定长度.
一个外中断停止,开机伺服电机速度600左右,
运行几个小时后有可能会一半速度,350左右.
莫名其妙.

/*************手动电机左移归零****/
               void Zero_Left()                   //
               {
                DOWN=0;      //顶退开启
              delay100ms(val3);      //顶退时间
               DOWN=1;      //顶退关闭
               DIR1=0;
               MOTORRUN=1;
                while(MOTORRUN) //外部中断关闭标志位
                {
                CP1=0;
               delay(2);
               CP1=1;
               delay(2);
               if(ZERO_FLAG==0)
              MOTORRUN=0;
              }
            }
/*************手动电机右移归零****/
              void Zero_Right()                   //
               {
              DOWN=0;      //顶退开启
             delay100ms(val3);      //顶退时间
             DOWN=1;      //顶退关闭
                DIR1=1;
                MOTORRUN=1;
                while(MOTORRUN)              //回原点释放按键电机停止
                {
                 CP1=0;
                delay(2); //
                CP1=1;
                 delay(2); //
                 if(ZERO_FLAG==0)
                MOTORRUN=0;
                }
              DIR1=1; //
               }   
/*************手动电机左移****/
               void Motor_Left()                   //
               {
                DIR1=0;
              MOTORRUN=1;
                while(MOTORRUN)
                {
                for(k=0;k<ScaleFactor;k++) //运行一个比例系数周期
               {
                 CP1=0;
                delay(2);
                CP1=1;
                delay(2);
               }
                 val6=val6+1;
                if(val6==val1) //等于0 限位
                MOTORRUN=0; //关电机循环标志
                }
                printf("n1.val=%d\xff\xff\xff",val6);//实际位置
              OUT9=1;
               }
/*************手动电机右移****************/
/*************外部中断0使能停止***********/
              void Motor_Right()                  //
               {
                DIR1=1;
                while(ZERO_FLAG) //零点标志
                {
                  CP1=0;
                  delay(2);
                 CP1=1;
                 delay(2);
                }
               val6=0;
              printf("n1.val=%d\xff\xff\xff",val6);//实际位置
              DIR1=1; //
              OUT9=1;
               }
            
        

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

369

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4241
金钱
4241
注册时间
2020-7-24
在线时间
714 小时
发表于 2021-12-24 09:39:56 | 显示全部楼层
回复

使用道具 举报

6

主题

889

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1468
金钱
1468
注册时间
2020-8-19
在线时间
333 小时
发表于 2021-12-24 09:46:06 | 显示全部楼层
帮顶  
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8207
金钱
8207
注册时间
2020-5-11
在线时间
3702 小时
发表于 2021-12-24 10:03:12 | 显示全部楼层
你那些delay是软件延时?也许有其它中断占用了大量CPU。
专治疑难杂症
回复

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-11-24
在线时间
44 小时
 楼主| 发表于 2021-12-24 11:11:29 | 显示全部楼层
STC.jpg
串口挂了一个淘晶驰触摸屏,应该没有问题。
而且开机时速度大约700转每分钟,变慢时
350转左右每分钟。机器几十公里外面的,
要带个表去测量一下变慢时单片机输出频率。
搞了二十年单片机,频率变慢还是第一次遇到。


回复

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-11-24
在线时间
44 小时
 楼主| 发表于 2021-12-24 11:13:00 | 显示全部楼层
不知道STC下载软件版本有没有关系,现在多了一个振荡器放大增益选项,以前版本没有这个内容
回复

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-11-24
在线时间
44 小时
 楼主| 发表于 2021-12-26 02:10:17 | 显示全部楼层
换了一块板,STC15W408AS芯片,运行一天正常,把振荡器放大增益勾去了
回复

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-11-24
在线时间
44 小时
 楼主| 发表于 2022-1-12 22:53:32 | 显示全部楼层
板子挂了一块淘晶驰串口触摸屏,让客户自动运行以后拔掉触摸屏后似乎好了,两天没有反映慢下来。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 20:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表