内容介绍
“带屏的十二指神探” 作为一款极具创新性的设备,其硬件架构独具特色,拥有 12 个管脚。在这些管脚中,三根信号线被特别设计用于模拟信号的输入,为设备的核心功能实现奠定了基础。
该设备采用 RP2040 芯片,其自带的 ADC(模拟数字转换器)发挥着关键作用。通过 ADC 对模拟信号进行量化,将连续变化的模拟信号转换为数字信号,以便后续的处理和分析。
在本次设计中,目标是打造一个一通道示波器。值得注意的是,“带屏的十二指神探” 的 ADC 管脚直接引出,这一特性决定了其需要搭配专门的信号调理电路。该信号调理电路肩负着重要使命,它能够对外部信号进行更宽量程的采集。通过对输入信号进行放大、滤波、衰减等一系列处理,确保输入到 ADC 的信号处于合适的范围,从而保证采集的准确性和稳定性。
在显示方面,设备配备了 1.54 寸、分辨率为 240*240 的 LCD 显示屏。此显示屏承担着直观展示波形和参数的重任。经过 ADC 量化以及一系列处理后的信号,最终以波形的形式清晰地呈现在 LCD 屏幕上,同时相关的参数,如幅值、频率等也会一并显示,方便用户直观了解信号特征。
此外,为了提升用户操作的便捷性和交互性,设备还设置了按键功能。用户可以通过按键轻松实现对波形的放大和缩小操作。当需要观察波形细节时,可通过按键放大波形;而当想要整体把握信号走势时,则可缩小波形,极大地满足了不同场景下用户对信号观察的需求。通过这些硬件与软件的协同设计,“带屏的十二指神探” 成功构成了一个简易而实用的示波器。
开发平台选择与限制
1、这款主控芯片是RP2040,其主要支持三种开发平台,分别是Arudino、MicroPyhton以及官方的C-SDK开发模式,其实还有RT-Thread平台也支持RP2040的开发,但使用人数相较于前三种较少。Arduino使用C/C++语言开发,同时开发者也不需要编写复杂的编译脚本,只需做少许的设置便能使用,因此在本次开发中使用Arduino平台进行开发。
2、因为条件限制,在实现该功能时使用梅林雀输出正负交变的方波、三角波、正弦波作为示波器的输入源。输入的最大电压也变成4Vpp。
功能框图
信号调理电路:
鉴于项目对模拟信号量化处理的需求,选用自带 ADC 功能的 RP2040 芯片。其 ADC 模块能够高效地将模拟信号转换为数字信号,为后续的信号分析与处理提供基础。RP2040的ADC采集只能采集正电压。因此选择30k欧、10k欧、15k欧、LM358组成信号调制电路。可以将负电压转化为正电压显示出来
这是用proteus仿真的图,可以实现+-10V的电压转换为0-3.3V
在 “带屏的十二指神探” 示波器的电路设计中,对于输入信号的处理是关键环节。为了使 RP2040 的 ADC 能够有效采集外部信号,需要将 (-10V ~ 10V) 的电压转化为正向电压,这一过程巧妙地运用了基尔霍夫定律。
基尔霍夫定律包含电流定律(KCL)和电压定律(KVL)。在本电路设计中,基于基尔霍夫电压定律,通过合理构建电阻网络来实现电压的转化。设计一个由多个精密电阻组成的分压电路,利用电阻分压原理,将输入的 (-10V ~ 10V) 电压进行分压处理。当输入为负电压时,通过特定的电阻组合与电路连接方式,使得电压在经过电阻网络后,其极性发生改变并转化为正向电压输出。同时,依据基尔霍夫电流定律,确保电路中各节点的电流分配合理,保证整个电路的稳定性与准确性。经过电阻网络转化后的正向电压,虽然实现了极性的转换,但可能存在信号失真或输出阻抗不匹配等问题,无法直接被 RP2040 的 ADC 所采集。
此时,引入 LM358 运算放大器来构建电压跟随器。LM358 是一款常用的双运算放大器芯片,具有高输入阻抗、低输出阻抗等特性。在电压跟随器电路中,LM358 的同相输入端连接经过电阻网络转化后的正向电压,反相输入端与输出端直接相连,形成深度电压负反馈。这种连接方式使得输出电压能够精确地跟随输入电压的变化,即输出电压等于输入电压。同时,由于 LM358 的高输入阻抗特性,它从前面的电阻网络获取的电流极小,几乎不会对电阻网络的分压效果产生影响;而其低输出阻抗特性,则能够很好地与 RP2040 的 ADC 输入阻抗相匹配,确保输出的电压信号能够稳定、准确地传输至 RP2040 的 ADC 管脚,从而实现对外部 (-10V ~ 10V) 电压信号的有效采集与后续处理,为示波器的波形显示与参数计算提供可靠的数据基础。
这段代码就可以输出正确的电压,用RP2040测试时屏幕下方显示的实时电压。
LCD显示
屏幕的分辨率为240x240,使用的驱动芯片是ST7789,ST7789 是一款常见的彩色 TFT LCD 控制器芯片。它支持显示分辨率为 240x320 的图形和文本,并具有丰富的功能和接口选项。ST7789 芯片采用 SPI 接口进行通信,可以与微控制器或其他主控设备连接。它具有内置的显示控制器和图形加速器,能够快速渲染图像和文本,实现平滑的动画效果。我这里驱动屏幕使用的是TFT_eSPI库进行驱动,原因之一是这个库对各种屏幕的适配度高。
显示内容:
1、显示波形
2、显示最大电压
3、显示最小电压
4、显示实时电压
波形绘制原理:先将ADC测量的数值设置阈值,阈值是4095和0用来初步消除杂波。
屏幕的分辨率是240※240,因此将数值缩小21倍可以将波形显示在200※230的框内,一次性采集230个ADC值。将230个像素作为横坐标,缩小后的adc值作为纵坐标。即可完成波形图绘制。然后显示完230个点后刷新一次方框内的像素,开始下一次绘图。
按键交互
本项目按键交互全部采用在主循环中循环判断的方式实现。当选中了一个可以更改的状态,本次主要是更改横,纵坐标的状态,按键按下,横、纵坐标不再是一次画一个像素点而是成为一个根据函数变化的变量。
软件流程图
心得体会
通过此次 “带屏的十二指神探” 示波器的设计,我收获颇丰。在开发平台的抉择上,选择 Arduino 平台,因其简易的 C/C++ 开发模式及无需复杂编译脚本的特性,极大地降低了开发门槛,让我能更专注于核心功能的实现,这使我深刻认识到合适开发工具对项目推进的重要性。
信号调理电路的设计堪称关键且充满挑战。利用 RP2040 芯片自带 ADC 进行信号量化,却面临其只能采集正电压的难题。借助基尔霍夫定律搭建电阻网络,实现电压极性转换,再搭配 LM358 构建电压跟随器匹配阻抗,这一过程让我对电路原理有了更深入的理解与实践运用。从理论推导到实际电路搭建与仿真,每一步都需要严谨对待,任何一个参数的偏差都可能影响信号采集的准确性。
在 LCD 显示与按键交互设计方面,也积累了宝贵经验。选用 ST7789 驱动芯片搭配 TFT_eSPI 库驱动屏幕,依据屏幕分辨率及 ADC 测量值巧妙设计波形绘制算法,实现了波形及各类电压参数的清晰展示。按键交互采用主循环判断方式,虽原理简单,但在实际编写代码过程中,需仔细考虑按键响应的及时性与准确性,避免误判。这让我明白即使是看似基础的功能实现,也需要对细节进行精心打磨。
整个设计过程是一次理论与实践紧密结合的历练。从最初的方案构思,到硬件选型、电路设计、软件编程,再到最终的功能调试,每一个环节都考验着我的知识储备与问题解决能力。遇到的种种困难,如信号调理电路的设计难题、显示波形的优化等,都促使我不断查阅资料、深入思考,进而找到解决方案。这不仅提升了我的专业技能,更培养了我的创新思维与面对复杂问题时的耐心和毅力,为今后参与更具挑战性的项目奠定了坚实基础。