打印

使用STC12C5A60S2做智能车的电机驱动,PWM如何接线?

[复制链接]
3154|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
云上华仙|  楼主 | 2013-7-15 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC可以输出1KHz的占空比可调的波形,现在连接控制板,不知道怎么加?
用的电机是飞思卡尔A车自带的,驱动板也是配套的。


驱动板是这个,从这里买的:item.taobao.com/item.htm?id=14591428156

问题:
1、PWM给电机的限流电阻应该怎么加?
上拉一个还是直接在PWM引脚和电机驱动板PWM口串联一个?
2、电阻值选多大,多少功率的电阻,1W?

相关帖子

沙发
冥顽的石头| | 2013-7-16 21:31 | 只看该作者
这个是我们做飞思卡尔车用的驱动原理图,PWM是通过74HC244芯片接过去的

驱动.rar

12.29 KB

使用特权

评论回复
板凳
jrcsh| | 2013-7-28 22:18 | 只看该作者
/*------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------------------------------------*/
/* --- STC12C5Axx Series MCU PCA module output PWM wave Demo -------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-755-82905966 ----------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------*/
/* --- Web: www.**.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the  */
/* article, please specify in which data and procedures from STC    */
/*------------------------------------------------------------------*/

#include "reg51.h"
#include "intrins.h"

#define FOSC    18432000L

typedef unsigned char BYTE;
typedef unsigned int WORD;

/*Declare SFR associated with the PCA */
sfr CCON        =   0xD8;           //PCA control register
sbit CCF0       =   CCON^0;         //PCA module-0 interrupt flag
sbit CCF1       =   CCON^1;         //PCA module-1 interrupt flag
sbit CR         =   CCON^6;         //PCA timer run control bit
sbit CF         =   CCON^7;         //PCA timer overflow flag
sfr CMOD        =   0xD9;           //PCA mode register
sfr CL          =   0xE9;           //PCA base timer LOW
sfr CH          =   0xF9;           //PCA base timer HIGH
sfr CCAPM0      =   0xDA;           //PCA module-0 mode register
sfr CCAP0L      =   0xEA;           //PCA module-0 capture register LOW
sfr CCAP0H      =   0xFA;           //PCA module-0 capture register HIGH
sfr CCAPM1      =   0xDB;           //PCA module-1 mode register
sfr CCAP1L      =   0xEB;           //PCA module-1 capture register LOW
sfr CCAP1H      =   0xFB;           //PCA module-1 capture register HIGH
sfr PCAPWM0     =   0xf2;
sfr PCAPWM1     =   0xf3;

void main()
{
    CCON = 0;                       //Initial PCA control register
                                    //PCA timer stop running
                                    //Clear CF flag
                                    //Clear all module interrupt flag
    CL = 0;                         //Reset PCA base timer
    CH = 0;
    CMOD = 0x02;                    //Set PCA timer clock source as Fosc/2
                                    //Disable PCA timer overflow interrupt
    CCAP0H = CCAP0L = 0x80;         //PWM0 port output 50% duty cycle square wave
    CCAPM0 = 0x42;                  //PCA module-0 work in 8-bit PWM mode and no PCA interrupt

    CCAP1H = CCAP1L = 0xff;         //PWM1 port output 0% duty cycle square wave
    PCAPWM1 = 0x03;
    CCAPM1 = 0x42;                  //PCA module-1 work in 8-bit PWM mode and no PCA interrupt

    CR = 1;                         //PCA timer start run

    while (1);
}

使用特权

评论回复
地板
云上华仙|  楼主 | 2013-8-3 12:32 | 只看该作者
谢谢楼上!现在已经解决了。我们发现上面那个板子每个输入都接了一个10K的电阻,所以不用接了。直接写程序。下面是我写的,可看下。

//马达车速控制模块


#include "Motor.h"
#include "STC12C5A.h"
#include "intrins.h"




//马达初始化
void Motor_init(void)
{
        P1M1 &= ~(1<<1);
        P1M1 &= ~(1<<2);       
        P1M0 |= (1<<1);
        P1M0 |= (1<<2);
}
//PWM初始化设置
void PWM_init(void)
{
    CCON = 0x00;                    //Initial PCA control register
                                    //PCA timer stop running
                                    //Clear CF flag
                                    //Clear all module interrupt flag
    CL = 0;                         //Reset PCA base timer
    CH = 0;
    CMOD = 0x00;                    //Set PCA timer clock source as Fosc/12
                                    //Disable PCA timer overflow interrupt
    CCAP0H = CCAP0L = 0x80;         //PWM0 port output 50% duty cycle square wave
    CCAPM0 = 0x42;                  //PCA module-0 work in 8-bit PWM mode and no PCA interrupt


    //CCAP1H = CCAP1L = 0xe0;         //PWM1 port output *% duty cycle square wave
    //PCA_PWM1 = 0x03;
    //CCAPM1 = 0x42;                  //PCA module-1 work in 8-bit PWM mode and no PCA interrupt


    CR = 1;                         //PCA timer start run
}


//马达正转
void Motor_foreward(void)
{
        IN1 = 1;
        IN2 = 0;
}
//马达反转
void Motor_rollback(void)
{
        IN1 = 0;
        IN2 = 1;
}
//马达停止
void Motor_stop(void)
{
        IN1 = 0;
        IN2 = 0;
}
//马达转速设定
void Motor_speed_set(unsigned char speed_8)
{
        CCAP0H = 255 - speed_8;
}
//马达加速
void Motor_speed_up(unsigned char up_value)
{
        if((CCAP0H <= (up_value+0x40))||(CCAP0H <=0x50))
                CCAP0H = 0x40;
        else
                CCAP0H -= up_value;               
}
//马达减速
void Motor_speed_cut(unsigned char cut_value)
{
        if((255-CCAP0H) <= cut_value)
                CCAP0H = 0xFF;
        else
                CCAP0H += cut_value;
}




使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

84

帖子

1

粉丝