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

2023-04-29 04:56:46林炳权石皓宇车宇李鹏梁飞翔唐强蔡志岗
物理与工程 2023年3期
关键词:技术教学改革

林炳权 石皓宇 车宇 李鹏 梁飞翔 唐强 蔡志岗

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

电子技术综合设计实验作为光电信息专业、物理学专业的一门重要的综合课程,在本科生经过电子技术理论知识的学习后,通过硬件设计、通讯控制、软件编程可以锻炼学生的实验技巧从而全面地提升其电子技术综合设计能力。中山大学物理学院开设的电子技术综合设计实验课中,通过让学生焊接安装控制电路,控制两个直流电机的输入电压,将经过两个不同转速的偏心转轮平面镜的反射后的激光,形成特定形状的激光图案,通过改变两个直流电机的电压比,可以得到不同形貌的激光图案[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]。

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,对应输出的模拟电压值为value/255 ×5V。

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单片机实验很适合本科生,结合物理测量和光电技术,开展各种实际应用。

猜你喜欢
技术教学改革
浅谈钢筋混凝土结构建筑应用外包粘钢加固技术
探讨电力系统中配网自动化技术
科技视界(2016年21期)2016-10-17 20:00:58
移动应用系统开发
科技视界(2016年21期)2016-10-17 19:38:30
北京市中小企业优化升级
商(2016年27期)2016-10-17 04:13:28
基于人才培养的技工学校德育实效性研究
成才之路(2016年25期)2016-10-08 09:51:08
现代信息技术在高职数学教学改革中的应用研究
科技视界(2016年20期)2016-09-29 12:59:03
以职业技能竞赛为导向的高职单片机实践教学改革研究
科技视界(2016年20期)2016-09-29 11:20:38
微课时代高等数学教学改革的实践与探索
科技视界(2016年20期)2016-09-29 11:16:19