基于MicroPython的PWM风扇转速控制方式

2021-11-02 22:14刘菁李相朋刘瀚旗邓中民
计算机与网络 2021年17期

刘菁 李相朋 刘瀚旗 邓中民

摘要:传统的脉冲宽度调制(Pulse Width Modulation,PWM)控制风扇转速的方式都是通过汇编语言和C语言编写,但代码多、编写复杂、不易调试。Python语言相较而言,封装了大量的库函数,极大地降低了开发的难度,代码更简短,运行效率更高。MicroPython语言是Python语言的精简版,通过使用基于MicroPython开发语言和Pyboard_1.1_CN实验板,将Python编程语言直接运行在STM32F405单片机嵌入式开发板上,通过控制芯片端口发送高低电平,从而运用PWM方式控制风扇转速。实验结果表明,风扇的转速可以跟随不同PWM稳定运行。

关键词:MicroPython;Pyboard;PWM;嵌入式开发

中图分类号:TP393文献标志码:A文章编号:1008-1739(2021)17-69-3

0引言

早期的脉冲宽度调制(Pulse Width Modulation,PWM)控制风扇转速的方式都是采用汇编和C语言编写,在开发过程中,开发者需要掌握底层硬件的知识,如定时器,时钟分频和CPU芯片架构,同时还要求开发者熟练掌握C语言和汇编语言的编程技巧,对开发者要求较高[1-3]。随着处理器集成度的增强,现在可以采用代码简短易懂的Python语言进行编写,大大降低了初学者的学习难度。MicroPython是可以直接在微型控制器上运行的Python,是Python编程语言的精简版[4]。MicroPython与Python一样封装了大量库函数,开发者可以直接调用就可完成复杂的工作。基于MicroPython的PWM风扇控制相较于传统的C语言开发模式,编程简单、代码量少,可读性强且容易实现。

1硬件设计

PWM风扇控制系统的硬件主要包括Pyboard_1.1_CN STM32F405芯片电路和PWM风扇转速控制电路。

STM32F405芯片采用MicroPython编程,是一款带有浮点运算单元的由ARM公司设计的Cortex-M4 32位的处理器,该芯片具有1 MB容量的闪存、196 KB随机存取存储器和高达168 MHz的主频、多达140个具备终端功能的输入输出端口和15个通信接口,因其功能多、开发方便、价格便宜,所以采用此芯片作为开发环境,如图1所示。

PWM风扇转速控制电路是通过比较器LM393[5]和MOS管[6]实现的,通过控制芯片Y3引脚输出高低电平,并与参考电压Vref比较,当Y3的输出电压大于Vref时,比较器输出则为高电平,此时NMOS管>(on),此时NMOS管导通,风扇处于接通状态,开始工作。当控制芯片Y3引脚输出电压为低电平小于时,比较器输出为低电平,此时NMOS管

<0截止,此时风扇停止工作。通过控制芯片输出不同占空比的脉冲从而控制风扇的加速减速的转动,达到控制风扇转速的目的。PWM系统硬件如图2所示。

2软件设计

系统程序首先导入pyb里面的定时器模块、按键模块和管脚模块,控制芯片通过管脚Y3和Y4发送高低电平,分别经过定时器4和11以及通道3和1发送PWM信号,通过设置PWM脉冲的占空比,以10%的速度增加到100%后再以10%速度降低到0,再以10%的速度增加到100%再下降,如此循环往复。从而让风扇实现不同速度的转动。部分代码如下:

pin_y3=Pin(Y3)

3程序流程图

系统采用Micropython编程实现对风扇转速的控制,通过控制芯片Y3(Y4)输出PWM信号从而控制风扇转速,程序流程如图3所示。

4实验结果

通过程序运行后的波形图,如图4所示,风扇的转速可以跟随不同PWM稳定运行。

5結束语

通过风扇转速控制系统的实现,说明MicroPython在嵌入式平台具有很好的适用性,还可以通过直接调用函数,控制温湿度传感器、RGB灯带、伺服器、AD/DA转换等,只需要通过少量的程序代码,就可以实现多种功能。该模块的电路设计通过比较器和MOS管实现,比较器可以灵活定义高低电平的门限电压,设计更加灵活,MOS管体积小,能通过较大的电流,且内含体二极管在控制风扇断开时可以吸收风扇产生的反向电动势,减少控制电路的损害风险。电路设计和程序控制都具有很好的实用性,后续可扩展应用于其他实验开发或教学展示等应用领域。程序结果也验证了MicroPython开发语言在嵌入式开发平台的实用性和可行性,对其他风扇控制系统的应用具有借鉴意义。

参考文献

[1]邓健,王立华.基于MicroPython和CC3200的智能家居数据采集与控制系统设计[J].电子器件,2020,43(1):137-141.

[2]徐志江,饶晨,徐红,等.MicroPython用于单片机实验教学新模式的设计与研究[J].计算机教育,2019,291(3):164-168.

[3]孔祥祥.全自动透气仪控制系统研究[D].武汉:武汉理工大学,2015.

[4]林贤炼,方遒.MicroPython语言在物联网中的运用[J].闽江学院学报,2017,38(2):28-37.

[5]汪世文.使用NE555和LM393实现脉宽调制的D类功放[J].电子世界,2011(3):45-46.

[6]王伞.常用电路模块分析与设计指导:第2版[M].北京:清华大学出版社,2013.