找回密码
 立即注册
查看: 275|回复: 0

改的屠龙刀核心板的PWM-DAC的程序,釆样的ADC数值一直跳变

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:421
  • 最近打卡:2025-05-03 12:14:59

14

主题

54

回帖

1344

积分

金牌会员

积分
1344
发表于 2024-4-8 21:07:55 | 显示全部楼层 |阅读模式
#include "STC32G.h"
#include "usb.h"
#include "adc.h"
#include "pwm.h"
#include "stdlib.h"
#include "string.h"
#include "sys_init.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD="@STCISP#";


u16 adc;
u16 duty;
u16 feedback;
long int ad;


void main()
{

        u16 j;
//        float ad;
        sys_init();
        usb_init();
        ADC_init();
        PWMA_Init();
        EA=1;
        P2M0=0X00;
        P2M1=0X00;
       
        duty = 10;
        feedback = duty;
        while(1)
        {

                if(DeviceState !=DEVSTATE_CONFIGURED)
                        continue;
                if(bUsbOutReady)
                {
                        duty=atol(UsbOutBuffer);
            printf("ADC=%u,duty=%u,feedback=%u\r\n",adc,duty,feedback);
                        usb_OUT_done();
                        memset(UsbOutBuffer,0,OutNumber);
                }
//        adc = ADC_Read(8);  //参数0~15,查询方式做一次ADC, 返回值就是结果

                          adc=Fliter_average();

                         j = (u16)((duty*4096UL)/(PERIOD+1));    //计算ADC采样理论值

                         if(j>adc)
                          {
                                   if(((j-adc)>THRESHOLD) && (feedback<=PERIOD)) feedback++;
                          }
                          else
                          {
                                   if(((adc-j)>THRESHOLD) && (feedback>0)) feedback--;
                          }
                          printf("ADC=%u,duty=%u,feedback=%u\r\n",adc,duty,feedback);
                          UpdatePwm(feedback);    //更新占空比       
   }
}

用这个程序控制一个场管做负载,釆样电流,ADC值最大有200多的字跳动,电流表跳动近100ma,如果ADC直接釆样直流电压,显示的ADC值只有2个字的跳动,不知道是哪里的问题。

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 20:21 , Processed in 0.229849 second(s), 45 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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