lsm 发表于 2024-7-19 09:02:20

那个 哥我在您的基础上去添加另一个电机为啥都不转了呢

wskhsm 发表于 2024-7-19 20:42:17

lsm 发表于 2024-7-19 09:02
那个 哥我在您的基础上去添加另一个电机为啥都不转了呢

void Parameter_adjustment(void)
{
        if(MT_STARTL)                                                                //启动状态
        {
                PWM_DUTY_0 = PID_Choice(1,TargetL,speedL,PWM_DUTY_0,PID_P,1,1);//调用PID计算公式第一次加五
                MotorL_PWM_Config(MT_STARTL,MT_DIR);
        }
       
        if(MT_STARTR)                                                                //启动状态
        {
                PWM_DUTY_1 = PID_Choice(1,TargetR,speedR,PWM_DUTY_1,PID_P,1,1);//调用PID计算公式第一次加五
                MotorR_PWM_Config(MT_STARTR,MT_DIR);
        }
}

PWM_DUTY_1把这个值放OLED屏上观察数值,用示波器观察PWM5和6有没有输出波型,这个程序要用编码器电机,接普通电机是不能正常工作的,PWMA已接了一路编码器,另一路我没看到有程序。

lsm 发表于 2024-7-20 16:33:44

现在我把值直接给了寄存器PWMB_CCR7H    PWMB_CCR7L   PWMB_CCR5HPWMB_CCR5L   pwm波形 能正常输出是想要的值   但是 赋给变量PWM_DUTY_0的值存到寄存器里会变化   占空比一直是百分之一

lsm 发表于 2024-7-20 17:43:01

PID_Choice 调节后把值给PWM_DUTY_0   PWM_DUTY_0在存到寄存器会出错

wskhsm 发表于 2024-7-21 00:04:53

你转动电机时侯检查Lspeed_number和Rspeed_number这两个值有没有娈化?我没记错的话STC一路PWM只能支持一路编码器,两路PWM同时接PWMA应该是不行的,这个手册里没有说,我之前做调试时好像碰到过这个问题,或者你可以直接咨询一下STC,PWMA能不能同时支持两路编码器

lsm 发表于 2024-7-25 23:11:02

这个speed_number代表什么   是脉冲个数吗   如果是脉冲个数 除以 二之后 speed那就是脉冲数啊

lsm 发表于 2024-7-26 15:36:59

还有就是speed那里 的除2是因为上升沿和下降沿都检测吗

wskhsm 发表于 2024-7-30 16:13:05

lsm 发表于 2024-7-26 15:36
还有就是speed那里 的除2是因为上升沿和下降沿都检测吗

void ENCODER_Config()
{
        PWMA_ENO = 0x00;                                          // 配置成 TRGI 的 pin 需关掉 ENO 对应 bit 并配成 input
        PWMA_PS |= 0x08;                                                // 切换PWM管脚 P1.0 P6.2
       
        PWMA_CCER1 = 0x00;                                        // 清零CCER,关闭通道
        PWMA_CCER2 = 0x00;       
        PWMA_CCMR1 = 0x21;                                         // 通道模式配置为输入,接编码器 , 滤波器 4 时钟
        PWMA_CCMR2 = 0x21;                                         // 通道模式配置为输入,接编码器 , 滤波器 4 时钟
       
        PWMA_CCER1 = 0x55;                                         // 配置通道使能和极性
        PWMA_CCER2 = 0x55;                                         // 配置通道使能和极性
       
//        PWMA_SMCR = 0x01;                                         // 编码器模式 1
//        PWMA_SMCR = 0x02;                                         // 编码器模式 2       
        PWMA_SMCR = 0x03;                                         // 编码器模式 3
       
        PWMA_IER = 0x0A;                                                 // 使能中断
        PWMA_CR1 |= 0x01;                                         // 使能PWM计数器
}

看手册,里面有说明

页: 1 [2]
查看完整版本: STC32G有刷光栅编码器电机PID闭环控制