智能车制作

标题: 改变占空比不能调速度,什么回事 [打印本页]

作者: KAKA10    时间: 2013-3-15 21:45
标题: 改变占空比不能调速度,什么回事
电机改了占空比速度也没变化,降不下来,占空比改了好多次了啊,有没碰到相同问题的,求助啊
把系统板拿下来测引脚也没有变化啊,电压都是在4.5左右,正转时用了PP4口输出。
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define uint unsigned int
#define uchar unsigned char
void SetBusCLK_32M(void)
{   
    CLKSEL=0X00;    // disengage PLL to system
    PLLCTL_PLLON=1;   // turn on PLL
    SYNR =0x40 | 0x03;  // pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz;                     
    REFDV=0x80 | 0x01;
    POSTDIV=0x00;  
    _asm(nop);          // BUS CLOCK=32M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}
/***********************
//功能:PWM(脉宽调制模块)初始化,这里配置4号通道,即PWM4.
//入口参数:无
//出口参数:无
************************/
void PWMInit(){
    PWME=0x00;//关闭全部通道。
    PWMCTL=0x00;//不级联(Not Cascade)。
    PWMPRCLK = 0x00; // 设置预分频寄存器,ClockA=BusClock/1=32/1=32MHz。
                                   //这里注意BusClock为32MHz,多说一句:系统时钟由晶振频率(16MHz)二分频而得。
    PWMSCLA = 0x05;  //设置分频因子,在上述基础上再分频,ClockSA=ClockA/(2*PWMSCLA)=32/32=1MHz
    PWMCLK = 0x30;   //4,5通道选择SA作为时钟源
                                 //这里注意0、1、4、5选用A或SA作为时钟源,2、3、6、7选用B或SB作为时钟源。
    PWMPOL = 0x30; //4,5通道设置为正极性脉冲,即先输出高电平,再输出低电平。
    PWMCAE = 0x00; //4,5通道选用左对齐输出模式
                               //请考虑两种对齐方式对PWM signal 周期的影响。
    PWMPER4=100;//设置4通道周期寄存器。1/1MHz*100=0.1ms(即10KHz)。
                            //注意:这里给的是十进制数。请考虑这个值的给定范围。
    PWMPER5=100;//设置5通道周期寄存器
    DDRP_DDRP1=1;
    PTP_PTP1 = 1;//打开PP1口
   
}
/*************************************************************************
//功    能:直流电动机正转
//入口参数:unsigned int duty,占空比值
//出口参数:无
*************************************************************************/
void Motor_forward (uint duty4)
{
    PWME_PWME4 = 1;      // 使能IN1
    PWME_PWME5 = 0;      // 禁止IN2
    DDRP_DDRP5 = 1;      // PTP_PTP3为输出
    PTP_PTP5 = 0;      // 输出0
    PWMDTY4 = duty4;
}
/*************************************************************************
//功    能:直流电动机反转
//入口参数:unsigned int duty,占空比值
//出口参数:无
*************************************************************************/
void Motor_back(uint duty5)
{
    PWME_PWME5 = 1;
    PWME_PWME4 = 0;
    DDRP_DDRP4 = 1;
    PTP_PTP4 = 0;
    PWMDTY5 = duty5;
}
/***********************
//功能:输出一个固定占空比的方波。
//入口参数:无
//出口参数:无
************************/
void main(void) {

      SetBusCLK_32M();
        PWMInit();
      Motor_forward (50)   ;
  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

作者: qq375048735    时间: 2013-3-15 23:35
先用示波器看看PWM波形输出正不正确噻```````````你贴代码不知道多少人愿意看````你要是波形正确了再提问```````````````如果你波形错了就是程序问题``````波形对了还这样才值得拿出来讨论一下吧````````
作者: 眼角宣泄悲伤    时间: 2013-3-16 08:22
每次第一眼看到的就是飘逸的长发
作者: KAKA10    时间: 2013-3-16 08:49
眼角宣泄悲伤 发表于 2013-3-16 08:22
每次第一眼看到的就是飘逸的长发

哥,别顾着看头发啊,问题才是重点,纠结啊,真怀疑是不是芯片引脚有问题了

作者: xiao_che    时间: 2013-3-16 09:34
电池还有点么。。。
作者: KAKA10    时间: 2013-3-16 09:50
xiao_che 发表于 2013-3-16 09:34
电池还有点么。。。

果断有啊,哎,程序简单,也让高手给看过,没问题,芯片也测过引脚,改变占空比引脚电压没变化啊哎,4.5左右
作者: 密码终结者    时间: 2013-3-16 11:15
先排除软件问题,后去怀疑硬件问题。
作者: zer0    时间: 2013-3-16 14:53
相当于你没PWM波没出来咯。。。怎么可能改了还是4.5V,用示波器看引脚给出的波形

作者: 惗,卟说    时间: 2013-3-17 19:58
今天我也遇到这个问题了,弄了很久确定是电机驱动有问题,没有备用的,55555……
作者: KAKA10    时间: 2013-3-17 23:00
惗,卟说 发表于 2013-3-17 19:58
今天我也遇到这个问题了,弄了很久确定是电机驱动有问题,没有备用的,55555……

我的是引脚坏了,忙乎了一天一夜,坑啊




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2