找回密码
 立即注册
查看: 391|回复: 1

占空比调速步进电机不明显

[复制链接]

该用户从未签到

1

主题

0

回帖

23

积分

新手上路

积分
23
发表于 2023-8-11 11:48:42 | 显示全部楼层 |阅读模式
#include "stc32g.h"
#include        "STC32G_UART.h"
#include        "STC32G_NVIC.h"
#include        "STC32G_Switch.h"
////////////////////////////////////////////////////
u16  nDuty=500;
unsigned int f=2000 ;   //设置周期值
unsigned long lcount=0;
sbit x=P2^6;
/*************        本地函数声明        **************/

void UART_config(void);
void PWMA_config(void);
/**********************************************/
void main(void)
{
        WTST = 0;                //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
        EAXSFR();                //扩展SFR(XFR)访问使能
        CKCON = 0;      //提高访问XRAM速度
        UART_config();       
        PWMA_config();
        while (1)
        {

        }//while(1)
}


//========================================================================
// 函数: void PWMA_config(void)
// 描述: PPWM配置函数。
// 参数: noe.
// 返回: none.
// 版本: V1.0, 2021-5-10
// 备注:
//========================================================================
void PWMA_config(void)
{
        u8        ccer1;
        u8        ccer2;
        u8        ps;
        u8        eno;
        u8 PWMA_ISR_En=0;
        P_SW2 |= 0x80;                //SFR enable   
        PWMA_ENO    = 0;        // IO输出禁止
        PWMA_IER    = 0;        // 禁止中断
        PWMA_SR1    = 0;        // 清除状态
        PWMA_SR2    = 0;        // 清除状态
        ccer1 = 0;
        ccer2 = 0;
        ps    = 0;
        eno   = 0;
        PWMA_ISR_En = 0;
        PWMA_PSCRH = 0;                // 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR[15:0}+1), 边沿对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)), 中央对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)*2).
        PWMA_PSCRL = 0;
        f=2000 ;
        PWMA_ARRH = (u8)(f >> 8); //设置周期时间
        PWMA_ARRL = (u8)f;
       
       
        //nDuty=0.1*f;
        nDuty=0.9*f;
        PWMA_CCR4H  = (u8)(nDuty >> 8);
        PWMA_CCR4L  = (u8)(nDuty );
       
       
        PWMA_CCMR4  = (3<<4);                // 通道1模式配置, 禁止预装载. 0: 无输出, 1:匹配时输出高, 2:匹配时输出低, 3:匹配时输出翻转.
        ccer2 |= 0x10;                        // 开启比较输出, 高电平有效
        ps    |= (1<<6);                // 选择IO, 0:选择P1.6 P1.7, 1:选择P2.6 P2.7, 2:选择P6.6 P6.7, 3:选择P3.3 P3.4
        eno   |= 0x40;                        // IO输出允许,  bit7: ENO4N, bit6: ENO4P, bit5: ENO3N, bit4: ENO3P,  bit3: ENO2N,  bit2: ENO2P,  bit1: ENO1N,  bit0: ENO1P
        PWMA_ISR_En|= 0x10;                // 使能中断

        PWMA_CCER1  = ccer1;        // 捕获/比较使能寄存器1
        PWMA_CCER2  = ccer2;        // 捕获/比较使能寄存器2
        PWMA_PS     = ps;                // 选择IO
        PWMA_IER    = PWMA_ISR_En;        //设置允许通道1~4中断处理

        PWMA_EGR    = 0x01;                //产生一次更新事件, 清除计数器和预分频计数器, 装载预分频寄存器的值
        PWMA_BKR    = 0x80;                //主输出使能 相当于总开关
        PWMA_CR1    = 0x01;                // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数,  bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
        PWMA_ENO    = eno;                // 允许IO输出

}
上面这个是我根据梁工的代码改了一下,P26接动器,发现占空比0.1和0.9电机转速差不多,没有调频率来的明显,请问问题出在那里。
回复 送花

使用道具 举报

该用户从未签到

46

主题

2997

回帖

6757

积分

超级版主

积分
6757
发表于 2023-8-11 21:21:53 | 显示全部楼层
步进电机不是用占空比调速的,请先仔细学习一下步进电机的原理。
回复 支持 1 反对 0 送花

使用道具 举报

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-13 04:16 , Processed in 0.066691 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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