• +1

Arduino中PWM调制在电子技术实验中的应用研究

2024-01-22 10:00
来源:澎湃新闻·澎湃号·媒体
字号

原创 林炳权 石皓宇 等 物理与工程

摘要

基于开源控制平台 Arduino 控制器的开放性与易用性,在原有的电子技术综合实验中新增了以 Arduino 单片机为核心的实验教学模块。利用 Arduino 单片机中的脉冲宽度调制技术(PWM技术),单片机根据接收到的红外信号对应调节两个直流电机的输入电压,从而控制其转速比,进而控制由电机上的两个偏心镜反射后的点状激光的运动轨迹,利用视觉残留效果形成图案,并通过 MATLAB 设计了仿真实验验证了激光图案的正确性。新增教学模块扩展了传统的电子技术综合设计实验教学中焊接控制电路的内容,丰富了实验教学内容,加强对学生的编程能力和电子技术综合设计能力的培养,激发学生的学习兴趣。

关键词 Arduino;教学改革;脉冲宽度调制技术(PWM 技术);计算机编程

Abstract Based on the openness and ease of use of the Arduino controller of the open source control platform, an experimental teaching module with The Arduino microcontroller as the core has been added to the original electronic technology comprehensive experiment. Using the pulse width modulation technology (referred to as PWM technology) in the Arduino microcontroller, the microcontroller adjusts the input voltage of the two DC motors according to the received infrared signal, thereby controlling its speed ratio, and then controlling the motion trajectory of the dot laser reflected by the two eccentric mirrors on the motor, forming a pattern by using the visual residual effect, and verifying the correctness of the laser pattern through simulation experiments designed by MATLAB. The new teaching module expands the content of welding control circuits in the traditional experimental teaching of comprehensive electronic technology design, enriches the experimental teaching content, strengthens the cultivation of students' programming ability and electronic technology comprehensive design ability, and stimulates students' interest in learning.

Key words Arduino; teaching reform; Pulse width modulation technology (PWM technology) ; computer programming

电子技术综合设计实验作为光电信息专业、物理学专业的一门重要的综合课程,在本科生经过电子技术理论知识的学习后,通过硬件设计、通讯控制、软件编程可以锻炼学生的实验技巧从而全面地提升其电子技术综合设计能力。中山大学物理学院开设的电子技术综合设计实验课中,通过让学生焊接安装控制电路,控制两个直流电机的输入电压,将经过两个不同转速的偏心转轮平面镜的反射后的激光,形成特定形状的激光图案,通过改变两个直流电机的电压比,可以得到不同形貌的激光图案[1]。通过焊接控制电路,学生可实现的几个特定电压比值的输出电路,通过声音采集模块可以实现在几个不同电压比之间的切换。但上述方法会导致输出图案形式单一,并且焊接电路中由于单个坏掉的电子元器件导致的实验问题难以排查,给实验教学带来一些不便。Arduino 作为一款便捷灵敏、易于上手的开源电子开发平台,具有操作简便、功能丰富等特点,已广泛应用于各种电路系统的开发[2-4]。将 Arduino 单片机引入电子技术综合设计实验课程中,不仅可以拓展控制电路的开发设计方式,还可以通过引入其他的传感器模块让学生在 C 语言的基础上自行编程,丰富了实验教学内容。通过引入 Arduino 单片机调控模式,将传统焊接电子电路的内容扩增为“原理设计电路连接软件编程”的连贯模式,提高了学生的学习主动性和学习兴趣,降低电子技术实验中电路焊接不当引起的故障率,促进教学质量的提高。

1 实验原理

本文以 Arduino 单片机作为控制电路的核心部件,结合 L293D 芯片、红外信号接收模块、激光器、直流电机、偏心转轮反射镜等硬件,实现红外信号通讯、PWM 信号输出调控直流电机的转速,从而改变激光图案的形状的目的。

1.1 Arduino 简介

Arduino 是 2005 年意大利米兰交互设计学院的老师开发设计的一款开源开放的电子技术创意平台。Arduino 包含硬件(各种不同类型的 Arduino 开发板)和软件(用于代码编译的集成开发环境,Arduino IDE,以及第三方提供的图形化编程环境如 Mind+、Scratch3.0 等)。由于 Arduino 的编程具有类似 java、C++ 等常用编程语言的 Processing/Wiring 开发环境[4],入门简单,功能多样,价格低廉,被广泛应用于电子技术设计和互动产品开发等方面,受到广大电子技术开发者的青睐。

Arduino UNO 开发板是目前最常用的 Arduino 开发板,以 ATmega328 MCU 微控制器为核心,一般具有以下结构:

(1) 1 个 USB 接口,可通过 USB 数据线与电脑实现通信,将 Arduino IDE 程序上传到开发板中,也可通过该口为开发板供电,电压为 5V;

(2) 1 个电源插口,可使用 DC 电源为开发板供电,电压为 9V,使开发板具有驱动较大功率外部设备的能力;

(3) 14 个数字 I/O 引脚,可进行数字电信号的输入和输出,其中有 6 个引脚支持 PWM 模式输出;

(4) 6 个模拟输入端,可进行模拟电信号的输入;

(5) 一个 16MHz 的晶振,用于产生单片机所需的时钟频率;

(6) 1 个复位按钮、1 个 5V DC 输出和 1 个 3.3V DC 输出等其他接口[2]。

Arduino IDE 是一款 Arduino 专用的程序编译器,是Arduino的集成开发环境。它将单片机的寄存器封装在核心库中,是单片机程序代码 GCCAVR 的二次封装。开发者只需了解 Arduino 开发板中各端口的作用,编写程序代码并上传到 Arduino 开发板中,不需要了解开发板内部寄存器的设置方法,降低了 Arduino 开发板的使用难度。同时,Arduino 也兼容 GCCAVR,对于实时性要求较高的项目,开发者也可直接对寄存器进行编程设置[3]。

正是由于 Arduino IDE 对单片机程序代码的二次封装,使得使用者不需要了解单片机的内部硬件结构和寄存器设置,只需要清楚每一个端口的作用就可以利用基础的 C 语言知识编写程序代码并让 Arduino 实现想要的功能。

以 Arduino 中自带的闪烁程序为例,按照如图 2 所示的代码上传到 Arduino UNO 板上,并将 13 号引脚连接 LED 正极,LED 负极与 GND 引脚连接,就可以看到灯泡亮暗交替闪烁。通过如上简单的程序,就可以实现利用 Arduino 电路板控制电子元器件的目的。

除此之外,Arduino 开发板可连接其他输入和输出模块,实现更多的功能设计。开发者在 Arduino IDE 中编写程序并上传到 Arduino 开发板中,通过数字输入接口或模拟输入端连接声音传感器、红外接收模块、超声波接收模块等输入元件,进行信号接收、动作采集等操作,并通过数字输出接口或 PWM 输出端连接直流电机、蜂鸣器、显示屏等输出元件,进行信号发送、动作输出等操作,达到感知外界、影响外界的目的[4,5]。

1.2 PWM 调制技术

PWM(Pulse Width Modulation),即脉冲宽度调制技术,通过对数字电平的输出时间进行调制,改变脉冲宽度,等效获得所需的稳定直流电压输出[6]。对一个周期为 T 、幅值为 Vpp 的脉冲信号,调节其高电平输出的时间为th,

称为占空比,则等效获得的模拟电压值为

。如图 3 所示,将幅值为 12V 的直流电压信号,分别调节占空比为

,获得模拟电压值为 4V、6V 和 8V 的 PWM 直流电压信号。

Arduino 通过计数器与寄存器实现 PWM 输出。计数器按照一定的规则在最低值与最高值之间重复计数,当计数器的值与比较寄存器中设定的值相同时,切换数字输出的逻辑电平,实现对高电平输出时间的调制[7]。

Arduino UNO 开发板的 3、5、6、9、10、11 号数字 I/O 引脚支持PWM输出,3、9、10、11 号引脚输出的 PWM 信号频率约为 490Hz,5、6 号引脚输出的 PWM 信号频率约为 980Hz。analogWrite(pin,value)是 Arduino IDE 中控制 PWM 输出的专用函数,pin 是 PWM 输出引脚的编号,value 是输出的脉冲信号的占空比大小,取值范围为 0~255,对应输出的模拟电压值为

2 实验介绍

2.1 传统电路焊接实验

传统的实验过程采用时钟定时触发或音控触发的方式,学生焊接控制电路板,实现对激光图案的定时变换或音控变换,图 4 为控制电路流程示意图。

定时触发模式采用 555 多谐振荡电路输出周期可调脉冲信号;音控触发模式通过放大电路和整形电路使声音信号形成稳定的脉冲信号。在方波脉冲信号上升沿的触发下,十进制计数器 4017 循环输出 Q0、Q1、Q2、Q3 四路高电平,再经分压电路获得四组不同的工作电压,进而通过反转电路和驱动电路控制两个直流电机的转向和不同的转速比。激光经过两个电机上的偏心反射镜的连续反射,在白屏上形成不同的激光图案[1,8]。

实验要求学生焊接复杂的控制电路板,只能实现几个特定电压比值的输出电路,且电路难以采用其他信号触发模式。由于单个坏掉的电子元器件导致的实验问题难以排查,实验耗时长、输出图案形式单一以及实验过程中存在的虚焊等问题导致该实验扩展性低。

2.2 基于 Arduino 改进后的实验

本文引入 Arduino 对实验途径进行扩展,使实验更具创新性。图 5 是改进后的实验的示意图。其控制过程如下:1)信号模块:摁下红外遥控器发出红外信号,Arduino 通过红外信号接收模块接收读取到电信号,不同的按键对应到 Arduino 中不同的电信号;2)计算模块:Arduino 根据接收到的红外信号计算调控出对应电压比的 PWM 模拟电压信号,再经过 L293D 芯片等比放大并驱动两个直流电机;3)硬件模块:激光经过两个不同转速的偏心旋转镜面的连续反射,在屏幕上形成特定的激光图案。改变两个电机的转速比可得到不同形状的激光图案。

2.2.1 红外信号输入

Arduino 单片机可与时钟传感器、声音传感器、光敏电阻传感器等多种输入模块连接,实现多种信号输入途径。本文采用红外信号输入实现对实验装置的控制。

图 5 的右下角部分为红外信号接收模块与遥控器。将红外信号接收模块的输出接口(即模块上的 OUT 引脚)与 Arduino UNO 的 7 号引脚连接,用于传输信号,并通过连接 Arduino UNO 的 5V 输出端口为模块提供工作电压。当接收到红外遥控器发出的红外信号时,接收模块内置的程序将对红外信号进行解调、编码,输出六位十六进制编码。

在 Arduino IDE 库管理器中下载安装 IRremote 库文件,通过调用 enableIRIn()函数可触发模块接收红外信号,再通过调用 decode()函数可将红外信号解调、编码为相应的六位十六进制编码[9]。

2.2.2 L293D 芯片

由于 Arduino 单片机的输出电压最高为 5V,不足以驱动 12V 直流电机,本文结合 L293D 芯片实现直流电机驱动电路。图 6 为 L293D 芯片的原理图。16 号引脚连接 5V 电源,为芯片的调控电路提供工作电压;8 号引脚连接 12V 电源,为芯片的驱动电路提供工作电压。2、7、10、15 号引脚为控制信号输入引脚;3、6、11、14 号引脚为驱动信号输出引脚,用于输出信号以驱动电机工作。1、9 号引脚为使能引脚,当使能引脚置于高电平时,相应的输入输出引脚被激活启用,输出与控制信号同相的驱动电压[10]。

将电机1的两端连接 L293D 芯片的 3、6 号输出引脚。相应的 2、7 号输入引脚中的一个引脚置于高电平,另一个引脚置于低电平,两个输出引脚的输出电压形成电势差,驱动电机转动。当不同的引脚被置于高电平时,电势差极性相反,电机转向改变。

电机 2 的一端连接 L293D 芯片的 11 号输出引脚,另一端接地。当 10 号输入引脚置于高电平时,14 号输出引脚输出高电平电压,形成电势差,驱动电机转动。

将 PWM 模拟信号输入 1、9 号使能引脚,相应的输出引脚输出相同占空比、峰值较高的 PWM 模拟信号,实现电机两端电压值的改变。

2.2.3 程序设计

在 Arduino IDE 上编写程序,根据输入的红外信号调控 PWM 模拟信号的输出,程序设计如图 7 所示。

程序开始时,定义引脚、转速、转向等变量,设定引脚的模式。使用 enableIRIn()函数触发红外信号接收模块接收信号,通过 decode()函数判断是否成功接收到红外信号,若接收到红外信号,则将接收到的红外信号解调、编码为六位十六进制编码并赋值给变量 results,并在 Arduino IDE 的串口监视器中显示红外信号的编码和编码位数;若未接收到信号,则各变量保持不变,Arduino 输出信号不变。

接收到红外信号后,使用 if-else 语句将红外信号编码与数字 0~9、符号 +、- 对应,并赋值到变量 Input。根据变量 Input 的值的不同,改变转速 speed、转向 Direction 等变量。

为实现对两个电机转速的分别调控,定义变量 channal,当按下按键“CH+”时,channal=1,对电机 1 进行调控;当按下按键“CH-”时,channal=2,对电机 2 进行调控。

为实现多组不同电压比值的输出,定义转速变量 speed 调控电机转速,将数字按键 0~9 对应 speed 变量由 0~255 等间距赋值;

由于电机 1 正转、电机 2 反转时形成的激光图案与电机 1 反转、电机 2 正转时形成的激光图案一致,在程序中仅定义方向变量 Direction 调控电机 1 的转向,保持电机 2 的转向不变。

将上述变量作为函数参数,调用 digitalWrite()和 analogWrite(pin,value)函数,改变相应输出引脚的电平状态和 PWM 信号的占空比,控制每个电机的转速和转向。

3 结果分析

将程序上传至 Arduino 中,通过遥控器按键“CH+”“CH-”选择需要控制的电机,再通过数字按键 0~9,设定输出引脚的模拟电压值,得到不同的输出电压,经 L293D 芯片驱动电机以不同的转速或转向转动。激光经由特定转速比的两个直流电机携带的偏心反射镜的连续反射,在白屏上形成特定的激光图案。改变两个直流电机的不同转速比,可以得到不同形状的激光图案。

以电压比的正负区分电机转向的改变,分别设定两个直流电机的电压比为 -9∶5,-3∶2,3∶2,在白屏上获得相应的激光图案,如图 11 左侧所示。

为了验证实验设计的准确性,我们还进行了理论上的计算,并使用 MATLAB 软件对激光图案的形成过程进行仿真模拟,理论分析过程如下:

实验装置中,电机上的偏心反射镜所在平面的法线方向与电机转轴不平行,而是存在一个 3°的夹角。图 8 中电机的两个反射镜面位置为电机转动下反射镜面的两个极端位置,成一个 6°的夹角。点状激光直接照射在直流电机上的偏心反射镜上,由于反射镜所在平面的法线方向与电机转轴方向存在夹角,故当电机转动时,反射的点状激光不是固定的一个方向,而是成一个圆锥面,在白屏上呈现为一个圆形或椭圆。经第一个反射镜反射的激光照射在第二个反射镜上,发生第二次反射,在白屏上呈现的图像为两个圆形轨迹运动的叠加合成[11]。

在白屏上建立直角坐标系,如图 9 所示。以水平方向为横坐标、竖直方向为纵坐标,记经过两次反射后,在白屏上显示的激光点的横坐标为 x,纵坐标为 y,则

其中,第一次反射形成的圆形轨迹的半径为R1,角速度为 ω1,第二次反射形成的圆形轨迹的半径为 R2,角速度为 ω2。

利用 MATLAB 软件对激光图案的形成过程进行仿真实验,代码程序如下。修改 MATLAB 代码中的两个转速变量的比值为 -9∶5、-3∶2、3∶2,并适当调节激光时间,运行程序,分别得到相应的仿真激光图案,如图 10 右侧所示。从实验结果与仿真结果可以看出,当两个电机的转向相反且转速比为 9∶5 和 3∶2 时,激光图案呈现花瓣形状,随着电压比的增大,“花瓣”越来越窄且多;当两个电机的转向一致且转速比为 3∶2 时,激光图案为心形线绕一点旋转而成。

需要指出的是,实验过程中由于两个电机转动的初始相位差的存在,激光图案会绕中心缓慢旋转。因此在实验过程中,实际激光图案是通过手机拍照,利用延长手机的快门时间实现的;仿真得到的激光图案是通过在画布上同时绘制激光点的轨迹方程实现的。由于手机设置的快门时间较长,而仿真实验绘制的激光图案为一个周期内激光点的运动轨迹,故在两个直流电机转速比为 9∶5 且转动方向相反时,实验观察到的图形“花瓣”数目要明显多于 Matlab 模拟的实验结果。但是实际观测到的激光图案与仿真结果保持一致,由于图案会围绕中心旋转。在另外两个转速比下,实际激光图案也是在围绕着中心旋转的(这一点从实际观测到的激光图并未构成闭合曲线也可以明显看出)。

实际实验结果与仿真实验结果一致。至此,我们借助 Arduino 中 PWM 调制技术,实现了对激光图案形状的红外遥控控制。

4 结语

以 Arduino 单片机为核心,通过“原理设计硬件连接软件编程”实现了用 PWM 调制方式控制激光图案的电子技术综合设计实验内容,丰富了传统的电子实验教学。通过调节占空比,控制输出电压进而生成多种不同的 PWM 信号,调节出多种不同的激光图案。该实验设计方案通过利用 Arduino 单片机中脉冲调制技术,通过让学生亲自动手设计硬件连接、电路设计以及软件编程,在充分学习了电子技术的基础上自行设计出基于 PWM 调制控制的激光图案系统,能够完整地培养学生的电子技术综合设计和应用能力。基于开源系统的 Arduino 单片机实验很适合本科生,结合物理测量和光电技术,开展各种实际应用。

参考文献

[1]洪澜, 蔡修奋, 陈敏. 基于自主设计的电子技术实验教学探索[J]. 实验室科学, 2013, 16(3): 78-81.

HONG L, CAI X F, CHEN M. Exploration and practice in self-designing electronic experiment teaching[J]. Laboratory Science, 2013, 16(3): 78-81. (in Chinese)

[2]蔡睿妍. Arduino的原理及应用[J]. 电子设计工程, 2012, 20(16): 155-7.

CAI R Y. Principle and application of Arduino[J]. Electronic Design Engineering, 2012, 20(16): 155-7. (in Chinese)

[3]吴汉清. 玩转Arduino电子制作[M]. 北京: 机械工业出版社, 2016.

[4]陈吕洲. Arduino程序设计基础[M]. 北京: 北京航空航天大学出版社,2014.

[5]王旭卿. 面向STEM教育的创客教育模式研究[J]. 中国电化教育, 2015, (8): 36-41.

WANG X Q. The exploration of maker education oriented to STEM education[J]. China Educational Technology, 2015, (8): 36-41. (in Chinese)

[6]王兆安, 刘进军. 电力电子技术[M]. 5版. 北京: 机械工业出版社,2011.

[7]石义山, 崔岩松. Arduino中PWM技术的原理探究与实践[J]. 2019.

SHI Y S, CUI Y S. Principle exploration and practice of PWM based on Arduino[J]. 2019. (in Chinese)

[8]林远芳, 黄元庆. 一种通过对电机可逆调速获得合成图案的激光投射仪[J]. 电子技术应用, 1999(10): 34-36.

LIN Y F, HUANG Y Q. The utility model relates to a laser projector which obtains a composite pattern by reversibly adjusting the speed of a motor[J]. Application of Electronic Technique, 1999(10): 34-36. (in Chinese)

[9]刘景铭. 基于Arduino红外控制的智能机械手的设计[J]. 科技风, 2019(12): 7-8.

LIU J M. The design of an intelligent manipulator based on Arduino infrared control[J]. Technology Wind, 2019(12): 7-8. (in Chinese)

[10]曹青松, 成俊良. 无线式球形机器人控制系统设计[J]. 机床与液压, 2016, 44(17): 12-15.

CAO Q S, CHENG J L. Design of wireless spherical mobile robot control system[J]. Machine Tool & Hydraulics, 2016, 44(17): 12-15. (in Chinese)

[11]梁忠, 殷爱菡. 激光图案自动变幻仪的成像分析[J]. 江西科学, 1997(1): 1-6.

LIANG Z, YIN A H. Analysis of the pattern of the automatic instrument of lasers romantic pattern[J]. Jiangxi Science, 1997(1): 1-6. (in Chinese)

基金项目: 国家级大学生创新创业训练计划项目(202210357);中山大学本科教学质量工程项目(中山大学教务〔2022〕20号,74130-12220011)。

通讯作者: 梁飞翔,男,中山大学实验师,研究方向为凝聚态物理、非常规超导、电子技术实验教学,liangfx6@mail.sysu.edu.cn。

引文格式: 林炳权,石皓宇,车宇,等. Arduino中 PWM 调制在电子技术实验中的应用研究[J]. 物理与工程,2023,33(3):80-87.

Cite this article: LIN B Q, SHI H Y, CHE Y, et al. Application research of PWM modulation in Arduino in electronic technology experiments[J]. Physics and Engineering, 2023, 33(3):80-87. (in Chinese)

END

更多精彩文章请点击下面“蓝字”标题查看:

中国大学物理教育MOOC联盟2023年工作会议(扩大)暨典型案例交流会 会议纪要花絮︱中国大学物理教育 MOOC 联盟 2023 年工作会议(扩大)暨典型案例交流会准备就绪,静待您来!中国大学物理教育 MOOC 联盟 2023 年工作会议(扩大)暨典型案例交流会即将开幕2023年全国高等学校物理基础课程教育学术研讨会 会议纪要2023 年全国高等学校物理基础课程青年教师讲课比赛在喀什大学举办全国大学物理实验教学对口支援(智力援疆)研讨会在新疆师范大学举办王青教授:理解王中林院士“拓展的麦克斯韦方程组”“碰瓷”麦克斯韦:伽利略协变和洛伦兹协变电磁场论趣谈热点:运动介质洛伦兹协变电磁理论2021年《物理与工程》优秀论文、优秀审稿专家、优秀青年学者名单王青教授:源自苏格拉底的问题驱动式教育——在互动中共同学习和成长读后感:教育中的现实和远方王青教授:昨晚(6月9日),清华电动力学期末考试朱邦芬院士:“减负”误区及我国科学教育面临的挑战《物理与工程》2023年第2期目录乐永康:新冠肺炎疫情防控下美国物理实验教学及中美情况对比顾牡:对于重新制定的《非物理类理工学科大学物理课程教学基本要求》的认识和体会朱邦芬院士:从基础科学班到清华学堂物理班朱邦芬院士:对培养一流拔尖创新人才的思考李学潜教授:物理是一种文化李学潜教授:如何帮助物理系学生迈过从高三到大一这个坎穆良柱:物理课程思政教育的核心是科学认知能力培养穆良柱:什么是物理及物理文化?穆良柱:什么是ETA物理认知模型穆良柱:什么是ETA物理教学法吴国祯教授:我的国外研究生经历印象——应清华大学物理系“基科班20年·学堂班10年纪念活动”而写

陈佳洱,赵凯华,王殖东:面向21世纪,急待重建我国的工科物理教育王亚愚教授:清华物理系本科人才培养理念与实践葛惟昆教授:关于中外人才培养的几点思考安宇教授:为什么传统的课堂讲授模式需要改变安宇教授:其实教学就是积累的过程刘玉鑫教授:关于本科生物理基础课程教学和教材编著的一些思考沈乾若:重创理科教育的美加课程改革Henderson C:美国研究基金支持下的物理教育研究及其对高等物理教育的影响《物理与工程》期刊是专注于物理教育教学研究的学术期刊,是中国科技核心期刊,1981年创刊,欢迎踊跃投稿,期刊投审稿采编平台:

http://gkwl.cbpt.cnki.net

欢迎关注

《物理与工程》微信公众号

继续滑动看下一个

Arduino中PWM调制在电子技术实验中的应用研究原创 林炳权 石皓宇 等 物理与工程 轻触阅读原文

物理与工程向上滑动看下一个

原标题:《Arduino中PWM调制在电子技术实验中的应用研究》

阅读原文

    本文为澎湃号作者或机构在澎湃新闻上传并发布,仅代表该作者或机构观点,不代表澎湃新闻的观点或立场,澎湃新闻仅提供信息发布平台。申请澎湃号请用电脑访问http://renzheng.thepaper.cn。

    +1
    收藏
    我要举报
            查看更多

            扫码下载澎湃新闻客户端

            沪ICP备14003370号

            沪公网安备31010602000299号

            互联网新闻信息服务许可证:31120170006

            增值电信业务经营许可证:沪B2-2017116

            © 2014-2026 上海东方报业有限公司