0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

方波发生器如何在引脚9产生PWM信号?

电子设计 来源:电路城 作者:电路城 2021-04-28 09:31 次阅读

这是一个简单的方波发生器,主要使用TimerOne库,可让您在引脚9产生PWM信号

硬件部件:

Arduino Nano R3 × 1个

Adafruit标准LCD-16x2蓝色白色× 1个

按钮开关,瞬间 × 3

单圈电位器-10k欧姆× 1个

软件应用程序和在线服务:

Arduino IDE

这是一个简单的方波发生器,主要使用TimerOne库,使您可以在引脚9处生成PWM信号,范围约为5Hz至1 Mhz,并且可以将占空比从0调整到100%。

原理图:

设备非常易于构建,仅包含几个组件:

Arduino Nano微控制器

液晶显示器

三个上拉电阻

三个按钮

脉冲发生器可以使用连接到Arduino数字输入6和7的按钮来调整脉冲重复周期。13个输入引脚可让您调整占空比。持续时间和占空比读数显示在LCD 16×2指示器的第一行中,频率读数显示在第二行中。调整脉冲重复周期的最小步长是1μs,因此频率将离散变化,例如1μs是1 MHz,2μs是500 kHz,3μs是333.333 Hz,依此类推,并且随着频率的降低,其调整的平滑度增加。这在较高的频率上是不切实际的,但这就是简化的代价。

为了可视化输出信号,我使用了小型单通道示波器。最后,将设备安装在合适的盒子中,这是电子实验室中的另一个有用工具。

源码:

#include 《TimerOne.h》

#include 《LiquidCrystal.h》

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// RS,E,D4,D5,D6,D7

unsigned long t=1000,f,k=512;// default 1000 μs (1000 Hz), meander, pulse duration is equal to duty cycle k = 512 (50%)

byte k1,kn,kn1,kn2;

int drive,drive0;

void setup()

{

lcd.begin(16, 2);// LCD 16X2

pinMode(10, OUTPUT);

pinMode(6,INPUT);// button at input 6

pinMode(7,INPUT);// button at input 7

pinMode(13,INPUT);// button at input 13

}

void loop()

{

Timer1.initialize(t); // period

Timer1.pwm(9, k); // k - fill factor 0-1023. We remove the signal from the output 9

kn=digitalRead(6);// button input 6 (- pulse period)

kn1=digitalRead(7);// button input 7 (+ pulse period)

kn2=digitalRead(13);// button input 13 (+ circle fill factor)

if(kn==HIGH){ // decreasing the period

drive++;

if(drive《30){

t=t-1;

}

// if the button is held for a long time, the correction of the pulse period x10 x100 x1000 is accelerated

else if(drive》30 && drive《60 ){

t=t-10;

}

else if(drive》=60 && drive《100){

t=t-100;

}

else if(drive》=100){

t=t-1000;

}

}

else{

drive=0;

}

if(kn1==HIGH){// adding a period

drive0++;

if(drive0《30){

t=t+1;

// if the button is held for a long time, the correction of the period x10 x100 x1000 is accelerated

}

else if(drive0》30 && drive0《60 ){

t=t+10;

}

else if(drive0》=60 && drive0《100){

t=t+100;

}

else if(drive0》=100){

t=t+1000;

}

}

else{

drive0=0;

}

if(t==0 || t》300000){ // limiting the pulse duration to the minimum, if 0 μs or more than 300 ms (3.33 Hz), then the period is 1 μs

t=1;

}

if(t》200000 && t《300000){ // limiting the pulse duration to the maximum, if more than 200 ms, but less than 300 ms (3.33 Hz), then the period is 200 ms (5 Hz)

t=200000;

}

f=1000000/t; // calculate the frequency

k1=k*100/1024; // calculate% fill factor

if(kn2==HIGH){// button for adjusting the fill factor (in a circle from 50 to 100%, then from 0 to 100%)

k=k+16;// step 16 out of 1024 (you can do 8 for smoother adjustment)

}

if(k==1024){

k=0;

}

// displaying information on the indicator

lcd.setCursor(0,0);

lcd.print(“T=”);

lcd.print(t);

lcd.print(“ us”);

lcd.setCursor(12,0);

lcd.print(k1);

lcd.print(“ %”);

lcd.setCursor(0,1);

lcd.print(“F=”);

lcd.print(f);

lcd.print(“ Hz”);

delay(300);

lcd.setCursor(0,0);

lcd.print(“ ”);

lcd.setCursor(0,1);

lcd.print(“ ”);

}
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147637
  • 发生器
    +关注

    关注

    3

    文章

    1291

    浏览量

    60862
  • PWM信号
    +关注

    关注

    3

    文章

    81

    浏览量

    19931
收藏 人收藏

    评论

    相关推荐

    什么是方波发生器?详解方波发生器电路图和应用

    。 2、它具有成本效益。 3、方波发生器的维护非常容易。 4、方波发生器可以产生最大频率的信号
    发表于 04-02 14:24

    怎么设计多路脉冲信号发生器方波)?

    各位大神,怎么设计多通道脉冲信号发生器方波)?跪求了,非常感谢!
    发表于 12-30 16:56

    基于FPGA+PWM的多通道信号发生器

    脉冲波,经二阶低通滤波和放大电路后即可得到所需波形信号。3.该多路信号发生器幅值分辨率高,频率精度高,且具有良好的直流性能,各通道可独立产生三角波、锯齿波、正弦波、
    发表于 12-08 18:07

    安捷伦信号发生器

    `安捷伦信号发生器怎么产生方波不是标准的方波,而是宽度发生变化的`
    发表于 10-24 12:12

    基于PIC16F877A的方波信号发生器电路设计

    !方波信号是数字电路中非常重要的信号源!其产生方法有很多途径"本设计是基于MPLAB平台通过对方波信号
    发表于 10-14 16:16 128次下载

    函数发生器电路(产生三角波和方波

    函数发生器电路(产生三角波和方波
    发表于 06-16 20:37 3064次阅读
    函数<b class='flag-5'>发生器</b>电路(<b class='flag-5'>产生</b>三角波和<b class='flag-5'>方波</b>)

    多波形信号发生器

    多波形信号发生器:由555芯片组成,可产生正弦波,三角形波,方波
    发表于 10-17 17:21 4081次阅读
    多波形<b class='flag-5'>信号</b><b class='flag-5'>发生器</b>

    方波、三角波发生器

    方波、三角波发生器 按图11-2所示电路及参数接成方波、三角波发生器。 图11-2(2)将电位器Rp调
    发表于 12-21 03:39 1749次阅读
    <b class='flag-5'>方波</b>、三角波<b class='flag-5'>发生器</b>

    频率可调的方波信号发生器设计及电路

    频率可调的方波信号发生器设计及电路      用单片机产生频率可调的方波
    发表于 05-31 15:44 1.3w次阅读
    频率可调的<b class='flag-5'>方波</b><b class='flag-5'>信号</b><b class='flag-5'>发生器</b>设计及电路

    51与adc0832++++信号发生器+可产生正弦波、方波、三角波+含ISIS仿真

    51与adc0832++++信号发生器+可产生正弦波、方波、三角波+含ISIS仿真
    发表于 09-04 09:17 219次下载

    基于FPGA和PWM的多路信号发生器设计

    基于运放的信号发生器精度低且稳定性和可调节性差,而基于DDS的信号发生器则成本高、电路复杂。为此提出了基于FPGA+PWM的多路
    发表于 11-18 09:42 6438次阅读
    基于FPGA和<b class='flag-5'>PWM</b>的多路<b class='flag-5'>信号</b><b class='flag-5'>发生器</b>设计

    详解方波发生器电路图和应用

    什么是方波发生器方波发生器其实是一种能够产生方波的非正弦波形振荡器。施密特触发电路是
    的头像 发表于 01-09 09:28 1.1w次阅读

    函数信号发生器产生信号的方法有哪些?

    函数信号发生器产生信号的方法有哪些? 函数信号发生器是一种在电子设备测试和测量中常用的仪器,用于
    的头像 发表于 11-20 16:23 657次阅读

    信号发生器的特点 信号发生器可以产生哪些波形?

    : 1. 多功能:信号发生器可以产生多种不同的波形,包括正弦波、方波、锯齿波、三角波、脉冲波等。这些波形可以根据实际需求进行调节和选择,具有较好的灵活性。 2. 大范围输出:
    的头像 发表于 12-21 15:05 728次阅读

    proteus信号发生器怎么设置方波

    Proteus信号发生器是一种强大的虚拟仪器,可以生成各种类型的电子信号,包括方波信号。在本文中,我们将详细介绍如
    的头像 发表于 02-23 16:44 2484次阅读