找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 583|回复: 3
收起左侧

单片机adc采集与pwm占空比改变问题

[复制链接]
ID:1070172 发表于 2024-3-13 11:43 | 显示全部楼层 |阅读模式
adc采集与pwm程序单独使用的时候都是可以的,但是两个联立起来,就是adc采集后数据处理然后重新给定占空比计数值,但是确输出不了pwm波,不知道是哪里的问题,用的mcu是stc8h系列单片机,我单独读取adc给定一个固定的占空比也输出不了,求解答谢谢。 944fdb8342407034b497b70a3ea6b41.png
回复

使用道具 举报

ID:961114 发表于 2024-3-13 13:44 | 显示全部楼层
排查一下ADC相关的代码里面有没有把扩展寄存器访问使能关闭了。
回复

使用道具 举报

ID:1070172 发表于 2024-3-14 17:07 | 显示全部楼层
STC庄伟 发表于 2024-3-13 13:44
排查一下ADC相关的代码里面有没有把扩展寄存器访问使能关闭了。

已经关了,如果直接用ad采样的电压值来改变占空比可以的,但是加了那个pid之后啊他会整天在最高占空比,改变电压,占空比不变的。
回复

使用道具 举报

ID:1070172 发表于 2024-3-14 17:09 | 显示全部楼层
void Init_adc()
{
        P1M0 = 0x00;   
        P1M1 = 0x08;
        P_SW2|=0X80;
        ADCTIM=0X3f;    //2C
        P_SW2&=0X7F;
        ADCCFG=0X0f;
        ADC_CONTR = 0x83;    //p1.3ͨµÀ
        _nop_();
        _nop_();
        EA=1;
        EADC=1;
        ADC_RES=0;
        ADC_CONTR |= 0x40;         
}
void main()
{
        float Vout=0;
        float Vout_D=0;
        float V1=0,V2=0,V3=0;
        float Vp=4.2057;      //4.2057
        float D=0.15;
        float Kp=0.2,Ki=0.005;               
        Init_adc();
        PWM_Init();
        while(1)
        {
                ADC_CONTR |= 0x40;
                _nop_();
                _nop_();
                while(!(ADC_CONTR&0x20));
                ADC_CONTR &= ~0x20;
                voltage2 = ADC_RES;//((unsigned int)ADC_RES<<8)+ADC_RESL;
                Vout = voltage2*5/255;
                //Vout_D = voltage1*5/255;
                V1 = Vp-Vout;
                //V3+=V1;
                D = D + Kp*(V1-V2) + Ki*V1;
                V2=V1;
                if(D < 0 )            //|| Vout_D > 1.826*1.1)
                {
                        D=0.0;
                }
                if(D > 0.45)
                {
                        D=0.48;
                }
                pwm_value = D*120;
                PWMB_CCR7H = 0;
                PWMB_CCR7L = (unsigned char)(pwm_value);
                soft_delay(2);
        }
}
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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