搜索
bottom↓
回复: 8

ATmega128 使用PWM对四路电机进行调速

[复制链接]

出0入0汤圆

发表于 2012-7-28 23:18:38 | 显示全部楼层 |阅读模式
最近在做一个智能小车的题目,我用的是四个直流电机,想用PWM进行调速,不知道128里面怎么输出四路PWM,望高手指教

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-7-29 16:48:01 | 显示全部楼层
看看手册上的相关引脚和相关寄存器的介绍,有几个可以输出PWM的!

出0入0汤圆

 楼主| 发表于 2012-7-29 17:10:16 | 显示全部楼层
我现在的情况是我用T/C1 产生两路PWM,但PE5的占空比不知道怎么控制它,我是这样写的:()
#include<iom128v.h>
#include<macros.h>
void PWM(unsigned int f0,unsigned int t0)
{
  DDRE |=0xff;//设置为输出PD5 PD6
               //PD6频率为设置频率(PD5)的一半,占空比仍为50%
  TCCR3A=0xab;//设置波形模式   15
  TCCR3B=0X1B;//以及时钟选择,64分频
  OCR3A=8000000/f0/64-1;//200HZ  7372800/200/64-1=TOP  575
  OCR3B=OCR3A*t0/100;//1/5占空比  TOP/5
}


/********主函数*********/
void main(void)
{
  PWM(1000,60);
  while(1);
}

出0入0汤圆

 楼主| 发表于 2012-7-29 17:11:13 | 显示全部楼层
DDRE |=0xff;//设置为输出PD5 PD6
               //PD6频率为设置频率(PD5)的一半,占空比仍为50%
不好意思,这地方没改过来,之前是16写的

出0入0汤圆

 楼主| 发表于 2012-7-29 17:58:52 | 显示全部楼层
    问题解决了,我选错了波形产生模式,WGM3[3:0]=  0111   十位的快速PWM,然后分别设置OCRnA/OCRnB/OCRnC就行了!之前的程序频率只受OCRnA控制,占空比只受OCRnB控制。
     现在的频率通过分频来控制,占空比由OCRnA/OCRnB/OCRnC控制,不过出来的波形不是0~5V,出现了负值,我不知道有没有其他方法,现在想用外部加法电路来补偿,有其他方法的希望多多指教

出0入0汤圆

 楼主| 发表于 2012-7-30 20:10:44 | 显示全部楼层
耦合方式选错了

出0入0汤圆

发表于 2012-10-24 07:54:33 | 显示全部楼层
记录,不错哈哈

出0入0汤圆

发表于 2012-10-24 09:47:42 | 显示全部楼层
尝试一下

出0入0汤圆

发表于 2012-11-5 16:11:07 | 显示全部楼层
尝试一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 21:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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