查看: 136|回复: 2

[已解决] 为什么固定占空比调制在高频时出现了电压跳变?

[复制链接]
  • TA的每日心情
    郁闷
    2020-5-23 11:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-23 11:32 | 显示全部楼层 |阅读模式
    本帖最后由 Nikrim 于 2020-5-25 23:06 编辑

    新手做了一个固定占空比50%,用电位器给定频率的程序,输出端接了一个led做观察
    int PUL=6;
    float T=0;
    float f=0;
    void setup() {
      // put your setup code here, to run once:
    pinMode(PUL,OUTPUT);
    Serial.begin(9600);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    f=map(analogRead(0),0,1023,1,500);
    T=1000/f;
    Serial.println(T);
    digitalWrite(PUL,HIGH);
    delay(T/2);
    digitalWrite(PUL,LOW);
    delay(T/2);
    }

    发现led亮度不连续变化,有两次跳变,在led引脚这边用万用表测电压是这样的
    QQ截图20200522215445_WPS图片.png
    求教各位大神,这是什么原因导致的?谢谢了!
  • TA的每日心情
    开心
    2020-6-3 04:44
  • 签到天数: 577 天

    [LV.9]以坛为家II

    发表于 2020-5-23 17:02 | 显示全部楼层
    首先delay(T/2);中的T/2必须为整毫秒数,6<T<4时T/2只能为2,T<4时T/2只能为1.当6<T<4时该程序运行时间约为2毫秒,所以占空比为1:2,当T<4时.该程序运行时间约为4毫秒所以占空比为1:5.因此会有两次跳变产生.
  • TA的每日心情
    郁闷
    2020-5-23 11:34
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-5-23 18:17 | 显示全部楼层
    lwq1947 发表于 2020-5-23 17:02
    首先delay(T/2);中的T/2必须为整毫秒数,6

    哦哦,非常感谢!!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    求大神看看哪里有问题,设备在线,米家也同步正常,就.....
    求大神看看哪里有问题,设
    代码: #define BLINKER_PRINT Serial //用于打开串口 #define BLINKER_WIFI #define
    晒图ESP8266一个框架
    晒图ESP8266一个框架
    好久没发帖了,出来活跃活跃一下。ESP8266免身份登录截图。 最近外研究新的架构M2M或P
    Arduino 求助 串口接收数据不正确,数据丢失问题
    Arduino 求助 串口接收数
    问题整了好久,我自己写的C#程序发送数据,arduino接收数据。 但是发现arduino接收的
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表