Atmega128 控制直流伺服电机

来源:互联网 发布:摩托罗拉v8软件 编辑:程序博客网 时间:2024/04/29 19:15

转载请注明出处

作者:小马


 

电机型号是DCM50205D  带1000分辨率增量式光电编码器. 驱动器型号是DCS810 这两款产品都是雷赛公司的产品(去他们公司的网站上可以找到这两款产品具体的参数), 这是当时实验室想研究伺服电机专门买的, 我在实验室这段时间花了一些功夫研究这个东西. 功能模块公司都给做好了,主要是做软件控制. 下面都是我在实际应用中记录的一些笔记。


1 由于我是用单片机控制, PUL+, DIR+, EN+ 接+5v, 对应的负极信号接IO口编程控制.


2 在电源一定的情况下, 电机的速度与pul-输入的脉冲的频率成正比, 刚开始以为是脉宽比决定的,因为以前玩过一个小直流电机就是脉宽比决定速度. 当频率决定电机的速度时,在实际应用中最好是用等宽比.


3 在应用过程中,发现一个问题,要先给电机上电,再给单片机上电,电机运转才正常,目前不知道什么原因.


4 由于该电机是用脉冲控制的,这里要讲一下atmega128的脉冲产生原理. 拿定时器0为例, 输出的方波有三种形式. CTC, 快速PWM, 相位修正PWM。下面就这三种方式分别描述.


一 CTC 模式

这种模式可以产生电机驱动所需的方波, 它脉宽比只能为1:1, 不可调. OCR0影响的是脉冲的频率. 每当TCNT0与OCR0匹配时, TCNT0自动清零, OC0取反. 所以它的频率可由下面的公式表示

 




 N 是分频因子,根据用户对寄存器的设置而不同.所以这种模式下,方波的最高频率可以到二分之一的系统晶振.


快速PWM模式

该模式也是在OC0输出PWM波, 它的原理是OC0在TCNT0匹配时置位, 在计数器满(0xff)清零时OC0清零, 由它的产生机理可得到两个结论. 一是PWM脉宽可调,由OCR0决定, 二是PWM频率固定为


 

 

N 是分频因子,根据用户对寄存器的设置而不同. 所以该模式下最高的频率可达到系统晶振/256.


相位修正的PWM.

该模式与快速PWM的区别是当计数器计到MAX时,会从MAX倒回到BOTTOM而不是计到MAX直接清零重新计. 由于其对称的特性,比较适合电机控制. 这种模式也是脉宽可调,频率固定. 频率为


 

当然还有一种形式就是用IO口模拟产生方波,但是我用示波器观察发现,这种方式产生的方波毛刺较大,不推荐使用.



6 做电机控制的时候,要注意电机运转和停止的时候中要有个缓冲过程, 也就是说,正常运转前要先加速,停止前要先减速.


7 电机上所带编码器线数为1000, DCS810驱动器出厂默认设置编码器分辨率为电机所带编码器线数的4倍. 也就是4000. 也就是一个脉冲的控制精度可达0.09度.


8 一般直流电机只要两根线就可以转动起来的. 根据高中物理知识, 载流导体在磁场中所受到的力的大小与电流成正比, F = B*i*L(B是磁感应强度, i是电流的大小, L是导体的长度) 所以电流越大,电机转速也是越快. 实际应用中加大电压发现电机转速也增加,估计在电机内部最终也会转化为电流.

 

原创粉丝点击