前段时间参加硕士复试,有一道题是pwm是什么,如何产生pwm,录取成功后接下来在这里写一下吧!

1、脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,由于计算机不能输出模拟电压,只能输出0 或5V 的的数字电压值,我们就通过使用高分辨率计数器,利用方波的占空比被调制的方法来对一个具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么是5V(ON),要么是0V(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM 进行编码。

2、通过上面的一段话应该已经理解了pwm是什么,pwm通俗讲就是通过占空比的方式来改变平均电压,从而使电机的转速或者led的亮度发生改变,那么pwm怎么产生呢,这里我使用arduino uno和l298n再加上从之前做的平衡车上拆下来的12v直流减速电机进行演示

(1)l298n如何连线

计算的。这个

是我这个是我

这个是我从淘宝上下载下来的,其中12V供电即为7-12V的输入,如果你的电源电压是7-12V的话那么从这里输入,供电GND即为接地咯,5V供电的话如果你是5V电源接这里,如果是7-12那么接12v供电,这里会有一个5V的输出可以当一个5V电源。接下来通道A使能即在图上插着跳线帽的,它是输出A的使能端,这里如果不拔下来那么电机将会全速转动,如果想要控制电机的转速那么拔下来,作为pwm的输入端口,in1和in2通过高低电平的接入可以控制电机的正反转。in3、in4和使能端B控制输出B

(2)将arduino和l298n、电机连在一起,如图,将arduino上的第5、第6输入输出I/O口作为in1和in2输入,将可输出pwm的10后口作为使能端A的输入连接

需要注意的一点是arduino必须和驱动板为同一电压源输入,例如我这里就是12v的电池输入,当然除了DC口也可以通过arduino上的vim口输入(在两个接地口下方)

(3)生成pwm波

A、使用arduino中的analogWrite生产pwm波,这里analogWrite可输入的数字为0-255当然电机低于某个电压就会不转了,大家可以更改数值来试一下,这种方法的缺点是无法修改pwm的频率

int input1 = 5; // 定义uno的pin 5 向 input1 输出
int input2 = 6; // 定义uno的pin 6 向 input2 输出
int enA = 10; // 定义uno的pin 10 向 输出A使能端输出void setup() {
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(enA,OUTPUT);
}void loop() {digitalWrite(input1,HIGH); //给高电平digitalWrite(input2,LOW);  //给低电平analogWrite(enA,100);
}

B、使用延时函数来制作pwm波,这种方法大家可能比较熟悉,因为经常会用到delay函数,很简单,有一点需要注意的是平时pwm波通常为50hz即为20ms,所以我这里设置为pwm时间为20ms,即高低电平时间加起来为20,你也可以尝试不同的频率,试一下有什么效果。

int input1 = 5; // 定义uno的pin 5 向 input1 输出
int input2 = 6; // 定义uno的pin 6 向 input2 输出
int enA = 10; // 定义uno的pin 10 向 输出A使能端输出void setup() {
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(enA,OUTPUT);
}void loop() {digitalWrite(input1,HIGH); //给高电平digitalWrite(input2,LOW);  //给低电平digitalWrite(enA,HIGH);delay(10);digitalWrite(enA,LOW);delay(10);
}

C、使用可确定延迟到微秒的delayMicroseconds,与上诉delay不同delayMicrosecends可延迟最小时间为1微秒,这样子就可充分的利用pwm波,因为上诉B确定到毫秒(1毫秒=1000微秒)20毫秒周期的pwm波相当于只有20种占空比方法

int input1 = 5; // 定义uno的pin 5 向 input1 输出
int input2 = 6; // 定义uno的pin 6 向 input2 输出
int enA = 10; // 定义uno的pin 10 向 输出A使能端输出
int pulsewidth; //定义脉冲高电平微秒数void setup() {
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(enA,OUTPUT);
}void loop() {pulsewidth=500;digitalWrite(input1,HIGH); //给高电平digitalWrite(input2,LOW);  //给低电平digitalWrite(enA,HIGH);delayMicroseconds(pulsewidth);digitalWrite(enA,LOW);delay(20-pulsewidth/1000);
}

arduino利用三种方法产生pwm波使用l298n驱动12v小车电机(附电路连接图和pwm详解)相关推荐

  1. 自然语言处理NLP——中文抽取式自动文摘(包括中文语料库处理、三种方法实现自动文摘、Rouge评价方法对自动文摘进行打分)

    利用三种方法实现抽取式自动摘要,并给摘要结果打分(一.textrank 二.word2vec+textrank 三.MMR 四.Rouge评测) 具体代码我上传到了Github上,其中有45篇小论文( ...

  2. MFC程序隐藏任务栏图标的三种方法

    在VC编程中,有时候我们需要将我们的程序在任务栏上的显示隐藏起来,我试过几种方法,下面我介绍一下我知道的三种方法. 第一种方法是设置窗口WS_EX_TOOLWINDOW扩展样式,通过在OnInitDi ...

  3. 【Arduino串口数据保存到excel中常用三种方法】

    [Arduino串口数据保存到excel中常用三种方法] 1. 前言 2. 利用excel自带Data Streamer读取 2.1 启用 Data Streamer 加载项 2.2 刷写代码并将微控 ...

  4. 斐波那契数列三种方法计算,光棍节快乐

    //斐波那契数列三种方法计算 //Fibnacci(0)=0 //Fibnacci(1)=1 //Fibnacci(n)=Fibnacci(n-1)+Fibnacci(n-2)  [n>1] / ...

  5. LeetCode547. Friends Circles 利用union find | bfs | dfs三种方法解决

    问题来源 此题来源于LeetCode547. Friend Circles,主要运用了并查集(union find).广度优先遍历(bfs)和深度优先遍历(bfs)三种方法解决. 问题简述 给定一个N ...

  6. 实现斐波拉契的三种方法

    实现斐波拉契的三种方法: 方法一:递归方法 def fib_1(index):if index <= 2:return 1else:return fib_1(index-1) + fib_1(i ...

  7. 利用IP查主机名的三种方法

    利用IP查主机名的三种方法 在局域网内,我们常使用一些工具来查IP查主机名, 利用ipconfig或者ping可以查到IP地址,也是我们常使用的工具.而要查网内的主机,可以用网上邻居,其实 我们也有一 ...

  8. 网上赚钱的门路方法,大部分人都是利用这三种方法!

    想通过网络来挣钱,无外乎以下方法:用时间来赚钱.用钱来生钱.通过推广赚钱.而每一种挣钱方式,都是需要有一定付出的,只有付出了才会有收获.本文就来给大家介绍一下想要通过网赚挣钱,我们都应该了解些什么?网 ...

  9. TCGA数据库的利用(三)—做差异分析的三种方法

    今天更新TCGA数据库的利用系列第三篇文章,在对TCGA数据进行挖掘时,通常会筛选出来一些表达量显著异常的基因,作为后续研究的对象,这个筛选过程叫做差异分析:本篇文章将分为三大模块对差异分析进行介绍 ...

最新文章

  1. C++Primer学习——函数
  2. UITextView中的占位符
  3. 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统(附源码+视频教程(第9节))...
  4. 神经网络粒子和物理粒子的一个本质差别
  5. 在Windows Vista中使用符号链接
  6. py3下怎么用StringIO
  7. OpenCV学习(14) 细化算法(2)
  8. YOLO利用kmeans聚类算法计算anchors box(原理介绍及代码)
  9. 5G协议演进(包括3GPP协议版本)
  10. 远程线程注入技术 屏蔽ctrl+alt+del
  11. iTween使用小坑
  12. shenyu2.5.0对restful的path中文不支持,400错误解决
  13. STM3210B_EVAL U盘功能 USB + SPI +SD 增加对SDHC卡支持
  14. C++基础中的基础——平行四边形
  15. Linux shell复习
  16. Spring 实战最新版中文版
  17. itext7学习笔记——第2章
  18. 电子专业 常见面试题 (三)
  19. “1 or 2”、“1 and 2”、“1 < (2==2)”、“1 < 2==2” 分别输出什么?
  20. 手机强制移除ppt密码,忘记ppt密码怎么办?

热门文章

  1. 四年前入职灵隐寺的90后小伙,还不起房贷辞职“还俗”了..
  2. 处理头像将头像变圆背景透明
  3. linux14.04网卡驱动,Ubuntu14.04 没有无线网卡驱动的解决方法
  4. 单表千万级数据 count() 统计优化
  5. 【安全与风险】恶意软件:概念、攻击和检测
  6. 华为android9.1.0怎么隐藏应用,华为荣耀9i怎么隐藏应用
  7. Python 3 学习笔记
  8. 【srs4】借助工具解析srs分发的来自rtc的flv
  9. 计算机如何删除用户密码,教你如何简单删除电脑开机密码
  10. 网络邻居中打不开计算机,网上邻居打不开怎么办?