智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2104|回复: 5
打印 上一主题 下一主题

[光电] PWM初始化问题,改变周期寄存器,车子就不断抖动

[复制链接]

1

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1198
QQ
威望
555
贡献
377
兑换币
178
注册时间
2012-11-20
在线时间
133 小时
跳转到指定楼层
1#
发表于 2013-4-8 22:31:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前段日子调试直立,在不加闭环的情况下,小车可以站立,但是会有抖动,学长说是因为滤波没有滤好,通过滤波小车直立情况有所好转,但是抖动一直无法消除,加P和加D都没有效果,通过观察发现在直立位置很小的范围内感觉电机反应不过来,角度变化1度,电机不会有变化,就是齿轮咬合的间隙电机没有反应,我就想到可能是PWM调节的占空比不够平滑,因为占空比寄存器最大是100,PWM周期10khz,再不改变频率的情况下,修改PWM预分频因子,改变占空比寄存器的数值范围,可是增大以后,就出现了一种始料不及的情况,电机会发出尖锐的鸣叫声,抖动还是无法消除,反复调试了好多次一直无法解决,按照我的理解,应该是PWM占空比改变不够平滑,因为,我是按照清华的方案做的,PD调节中改变寄存器的值时把float类型乘以占空比寄存器值转换成了uint类型,我担心数据转化过程会有精度丢失,就按照前面的方法修改,就是不明白为什么电机会发出尖锐的鸣叫声,望各位大神帮帮忙,解开我心中疑惑,在此表示不尽感激。
下面是pwm初始化程序,总线频率64M
/*
****************************************************************
*PWM初始化
*
*****************************************************************
*/
void PWM_Init(void)
{
    PWME     = 0X00;       //PWM使能关闭
    PWMPRCLK = 0X55;       //clockA,CLK B64分频:2M  
    PWMSCLA  = 0X02;       //对clock SA 进行2*PWMSCLA=64分频;pwm clock=clockA/2=1M;     
    PWMSCLB  = 0X02;       //clk SB=clk B/(2*pwmsclb)=1M                                            
   
    PWMCTL   = 0XF0;       //对 PWM 控制寄存器进行设置,各通道级联使用
    PWMCNT01 = 0X00;       //通道计数器清 0
                        
    PWMPOL   = 0XFF;       //上升沿翻转,开始输出高电平
    PWMCAE   = 0X00;       //左对齐输出
     
    PWMPER01 =  PWM_DUTY_CONST   ;        //per等于 100     周期0.1ms 频率    10khz
    PWMDTY01 = 0;          //dty等于 1000 初始化高电平时间1MS
                           
                        
    PWMPER23 = PWM_DUTY_CONST   ;        //per等于 10000 10MS
    PWMDTY23 = 0;          //dty等于 1000 初始化高电平时间1MS  
   
   
    PWMPER45 = PWM_DUTY_CONST   ;        //per等于 100     周期0.1ms 频率    10khz
    PWMDTY45 = 0;          //dty等于 1000 初始化高电平时间1MS
   
   
    PWMPER67 =  PWM_DUTY_CONST   ;        //per等于 100     周期0.1ms 频率    10khz
    PWMDTY67 = 0;          //dty等于 1000 初始化高电平时间1MS  
   
    PWME=0XFF;             //通道使能
                        
   
}

0

主题

28

帖子

0

精华

高级会员

Rank: 4

积分
601
威望
319
贡献
154
兑换币
166
注册时间
2012-4-15
在线时间
64 小时
2#
发表于 2013-4-10 10:05:23 | 只看该作者
中间小角度没有电压输出应该是没加死区电压吧
回复 支持 反对

使用道具 举报

1

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1198
QQ
威望
555
贡献
377
兑换币
178
注册时间
2012-11-20
在线时间
133 小时
3#
 楼主| 发表于 2013-4-10 15:58:21 | 只看该作者
加死区电压了,但是没效果
回复 支持 反对

使用道具 举报

0

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
798
威望
333
贡献
273
兑换币
197
注册时间
2012-11-16
在线时间
96 小时
毕业学校
华北水利水电学院
4#
发表于 2013-4-11 18:05:19 | 只看该作者
不懂同求,@吉他手老师呀!!!大神们呢?
回复 支持 反对

使用道具 举报

6

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
247
威望
146
贡献
69
兑换币
73
注册时间
2013-1-8
在线时间
16 小时
毕业学校
沈阳航空航天大学
5#
发表于 2013-5-10 23:52:41 | 只看该作者
toengineer 发表于 2013-4-10 10:05
中间小角度没有电压输出应该是没加死区电压吧

中间小角度怎么加四驱电压呀?求教
回复 支持 反对

使用道具 举报

0

主题

28

帖子

0

精华

高级会员

Rank: 4

积分
601
威望
319
贡献
154
兑换币
166
注册时间
2012-4-15
在线时间
64 小时
6#
发表于 2013-5-11 09:04:43 | 只看该作者
那年秋天 发表于 2013-5-10 23:52
中间小角度怎么加四驱电压呀?求教

一点点加上去,而且要求你的电机输出要对称
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 14:26 , Processed in 0.046583 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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