基于STC15在线式PWM信号发生器的设计
来源:用户上传
作者:胡飞 吕勇飞 汪宏鹏 张盛博
摘要:为提供电子测试领域中需要频率与占空比随时间变化的测试信号,设计了一款基于STC15的在线式PWM信号发生器;信号发生器以STC15W4K32S4微控制器为核心,通过串行通信接口与上位机连接,基于PyQt5+Pyserial设计可视化的上位机界面,可根据测试计划输入信号参数以及运行时间,信号发生器则根据预设时间输出不同参数的PWM信号,亦可通过按键离线调整运行参数,OLED显示当前运行参数,方便用户查看;经测试,PWM输出在10Hz~100KHz范围内精度均满足要求,目前此设备已应用于实际汽车电子测试场合并取得良好反馈。
关键词: PWM信号发生器;STC15;PyQt5
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2022)28-0001-03
在电子测试应用领域中,PWM信号发生器产生可调脉冲供微控制器使用,也可以控制相关电路实现调光调速,例如控制设备的导通与关断,做开关疲劳测试、电压骤降、控制电磁阀吸合、释放等试验[1];目前常见的PWM信号发生器只提供手动按键修改PWM的频率与占空比功能,无法实时动态根据测试需求自动地调节PWM的频率与占空比。
本文应用背景是汽车电子散热风扇的实验测试,需根据不同测试时长输出不同频率、不同占空比的PWM信号,用以测试风扇控制器的控制效果,原有测试场景中采用人力值守来调整相应测试参数,费时耗力,因此需要研发一款在线式调整运行参数与时长的PWM信号发生器。
1 系统总体设计
在线式PWM信号发生器系统主要包括STC15单片机最小系统,RS232-TTL转换电路、OLED屏幕显示、独立按键以及配套的上位机软件,支持运行参数的离线调节以及在线自动调节功能,系统总体设计框图如图1所示,上位机和信号发生器之间通过USB转RS232串口线缆连接。
2 硬件设计
2.1 电源设计
在汽车电子测试领域中,常见测试电压范围为9V~16V,恒定测试电压13.5V,鉴于此将PWM信号发生器的供电电源扩展至7V~18V之间,通过在电源输入端接入二极管SS34做输入防反接保护,由于微控制器STC15工作电压为4.5V~5.5V,选用稳压芯片――AMS1117-5.0实现电源稳定降压,工作原理图如图2所示,其工作范围广、输出电压精度高,内部集成过热保护及限流电路[2],输入电压最大可达到20V,满足本文应用背景。
2.2 STC15单片机最小系统
本设计的主控芯片采用STC15W4K32S4微控制器,其系统工作原理图如图3所示,STC15W4K32S4微控制器运行无需外部晶振和外部复位电路,具有低功耗、ESD保护和宽电压等特性[3],因其内部具有6通道15位的高精度PWM模块,满足本设计对PWM精度的需求,为实现离线频率和占空比的调整,增加了4个功能按键,分别为频率加、减,占空比加、减,同时通过I2C接口连接0.96寸OLED显示屏。
2.3 串行接口电路
采用串行通信实现在线式PWM信号发生器与微型计算机之间的通信,由于目前常见微型计算机都已不具备RS232的串行接口,采用USB转串口线将微型计算机的USB信号转换为RS232电平信号[4],在STC15端通过SP232EEN芯片,将TTL的串行接口电平转换为RS-232S接口电平,两者通过DSUB接口连接;SP232EEN可实现最高120Kbps的传输速率,其工作原理图如图4所示,在实际应用过程中发现,此元件对电源噪声较敏感,为保证元件的正常工作需在附近放置100nF的去耦电容C10,在实际PCB布线中,SP232EEN内部电荷泵工作所需的4个电容C6~C9应尽可能靠近SP232芯片,以提高抗干扰能力。
2.4 信号转换电路
STC15微控制器引脚输出高电平最高为5V,为了使PWM输出信号达到汽车电子测试所需的13.5V,输出信号采用集电极开路(OC) 输出,实现PWM信号电平为输入电压VCC,可达5V到20V之间,考虑到PWM信号发生器可能会被要求输出较高频率(>50KHz) 的信号,应用NPN型三极管S3904实现快速开关电路,工作原理如图5所示,其集射极击穿电压40V,集电极电流为200mA,增益带宽为300MHz,适合电子测试领域PWM信号高速变化的需求。
2.5 设计实物图
通过前述原理图设计,形成工程版图,经过元件焊接流程,形成如图6的实物图。
3 软件设计
3.1 软件总体设计
系统的软件设计分为两大部分:一是基于STC15微控制器的嵌入式应用程序,二是上位机的应用程序,两者通过串行RS232接口完成数据传输,协议格式遵循JSON标准格式,其中自定义协议描述如表1所示,第一行是上位机发送的控制指令形式,第二行是信号发生器发送给上位机的当前运行状态数据。
3.2 STC15嵌入式程序设计
STC15微控制器的程序设计采用嵌入式C语言开发,主要流程有系统初始化、读串口缓存数据、按键扫描、ADC采集、PWM输出、OLED显示等,其工作流程如图7所示;涉及的外设主要有UART、TIME、ADC等,其中UART采用中断接收上位机发来的数据,JSON格式数据存入环形队列(Ring Buffer) 中[5],通过判断缓冲区内是否有完整的一帧JSON数据,综合接收的数与按键键值确定输出PWM的频率与占空比,按键扫描周期为100ms,具备长按和短按功能,短按实现加1或减1功能,针对频率调整按键,在长按情况下,会间隔500ms加减100,便于频率数据的快速调整,OLED显示当前输出PWM的频率和占空比,ADC通过采集分压电路计算得到输入电压VCC,通过UART将信号发生器输出PWM的频率、占空比以及输入电压数值送至上位机,用于实时显示。
nlc202212021118
3.3 上位机控制程序设计
为了实现上位机程序的跨平台特性,采用Python作为程序设计语言,选择PyCharm开发环境进行开发,基于PyQt5+Pyserial的结构开发上位机应用程序,PyQt5作为Qt框架在Python的语言实现,提供了丰富的窗口控件,其“信号-槽”的机制应用使得人机交互变得更为简单,能够跨平台应用于Linux、Windows和MacOS系统上[6];设计过程分为界面设计和业务逻辑两大部分,利用QT提供的QT Designer工具通过拖拽控件的方式设计如图8的UI界面,将设计完成的界面文件保存为“.ui”格式,使用pyuic5命令将“.ui”文件转换为“.py”文件,使用pyrcc5将资源文件也转换为“.py”文件,Python可以引入转换后的文件并调用;在业务逻辑层面,读取界面控件设置以及人工提供输入的相应参数,通过Pyserial提供的方法完成对串行接口的操作,如串口初始化、串口检测、串口发送与接收功能等,使用QT提供的QTimer定时器类的方法,配合Pyserial的方法与JSON解析方法完成数据的定时发送与接收解析。
4 测试与应用
4.1 PWM输出精度测试
使用示波器对在线式PWM信号发生器的输出信号进行测试,选择不同频率、不同占空比的运行参数,例如测试1KHz、50%占空比的PWM信号如图9所示,通过示波器提供的测量工具可以得出输出频率和占空比的准确率为100%。
测试1KHz条件下不同的占空比,得到如表2的对应测试数据:
选取输出信号10Hz~100KHz范围用于测试可以发现,频率在100Hz~50KHz范围之间的精确度都是100%,在这范围以外产生了误差;小于100Hz由于计时时间长,产生的累积误差较大,而大于50KHz的误差主要是因为微控制器的工作频率与占空比精度的矛盾关系;但输出范围在10Hz~100KHz对应的频率精度小于0.2%,占空比精度小于0.1%,能满足汽车电子散热风扇的测试需求。
4.2 实际应用
目前该PWM信号发生器已应用于温州某汽车电器有限公司的汽车散热风扇产品的测试环节,可实现多组PWM输出参数按照时间进行自动切换,实现了无人值守的测试场景,极大地节省了人力物力,其实际应用场景如图10所示。
5 结论
本设计完成的在线式PWM信号发生器具备结构小巧、操作简单的优点,可通过按键或上位机调节PWM工作的频率与占空比,且上位机软件实现了多组PWM输出参数按照预设工作时间自动切换,OLED屏幕实时显示信号发生器的工作参数;目前该装置已用于汽车电子的测试领域,具有较高的实用性。
参考文献:
[1] 申庆华.基于STM32的高精度PWM信号发生器的设计[J].电子测试,2021(17):25-26,52.
[2] 郭艳玲,刘佳鑫,李健.基于STM32的木塑颗粒3D打印机系统设计[J].现代电子技术,2019,42(18):120-124.
[3] 朱万浩,章盼梅,孔令棚,等.基于STC15W的水下机器人控制系统设计[J].电子设计工程,2022,30(8):57-61.
[4] 翟瑞,周静雷.基于STM32的USB转串口通信端口设计[J].国外电子测量技术,2021,40(1):92-95.
[5] 杭春烁,金豫,洪若昕.一种基于DMA方式的高效UART收发机制[J].单片C与嵌入式系统应用,2021,21(5):22-24.
[6] 韩长杰,韩鸿飞,尤佳,等.自动移栽机工况信息监测系统设计与试验[J].中国农机化学报,2022,43(4):60-65.
【通联编辑:梁书】
nlc202212021118
转载注明来源:https://www.xzbu.com/8/view-15442890.htm