如何用MCU或FPGA的一个数字IO测量2个电位计的阻值变化?
这是一个设计小技巧,是PWM波形的逆向应用,通过用电阻调节频率、调节脉冲占空比,在数字芯片中检测生成PWM波形的频率和占空比就可以判断电阻值的变化。
标签
FPGA
测试
PWM
fm
ilovefpga
更新2022-04-28
906

我们要观察的世界,主要还是连续量的模拟世界,一般都是采用ADC对被观测的模拟电压进行量化后,通过数字的方式进行处理。现在越来越多的单片机(也叫微控制器)都内置了ADC,但仍然还有不少单片机没有模拟信号的输入端口,或者它的模拟端口被其它更重要的信号占用,留给我们能用的就是数字的输入管脚。还有就是FPGA,一般都不带ADC,如何在没有外部ADC的情况下对一些模拟量进行测量呢?

我们最容易想到的就是通过电压 - 频率变化的方式来测量频率的变化,进而推算出外部电压的值,测频和计算都可以在数字域进行,单片机或FPGA都可以轻松搞定。

那如果同时用一根数字线,测量两个模拟参量的变化该如何实现呢?

比如“硬禾学堂2022寒假在家一起练”的游戏机平台上有一个用两个电位计构成的游戏摇杆:

FufAheC35p7CaWnTfcZyzKKHjJqF

硬禾2022寒假在家一起练的游戏机平台

摇杆内部本质上是两个电位计,X、Y方向各一个,按动摇杆,会改变这两个电位计的位置,从而改变中间抽头的分压值。

FkwNBWxUHdOVY58IqPO0wVZF_-nl

游戏摇杆的内部结构及等效电路

这个平台使用了RP2040的两个模拟电压输入管脚来对电位计的变化引起的电压值进行ADC转换,再通过程序判断摇杆的方向。那我们可以设想一下,如何在没有ADC的微处理器上或FPGA上使用这个游戏摇杆?

我们可以逆向使用PWM波形,因为它有两个典型的参量 - 频率和占空比。如果设计一个PWM波形发生电路,能够用两个电位计分别调节PWM的频率和占空比,将这个PWM波形通过数字输入端口送到微处理器或FPGA,就可以通过闸门计数的方式来监测PWM的两个参量,推算出两个电位计的值,进而判断出电位计的变动方向。

FnD3EVAIzHGoakXxDBQ66KY4x4gN

参考Elektor网站上的一篇文章:How to Connect 2 Potentiometers to 1 Digital Input,我设计了如下一个测试板,使用了一颗内部带有四个运算放大器的芯片,经典的LM324,再搭配几个电阻和电容:

FiHWTIG8103dTjLg8K0JsaR7HOmD

原理图如下,图中的VR1(型号FJ08K)就是游戏摇杆。图中的U1D和U1A两个运算放大器构成了一个可变频率的三角波发生器,频率可由VR1的X轴的电阻来调节;U1B用作比较器,将三角波的电信号同可变的直流电压进行比较,直流电压的变化用VR1的Y轴来调节,这样就可以在U1B的第7个管脚,也就是整个电路的输出端得到占空比和频率都可以改变的PWM波形。

FsKTkChmtSwyli2vuSjhQLLm7CGF

工作原理如下图:

FjNTu1ziMoKHFB1k5ZFldTjNyDuF

用KiCad6设计的PCB板图:

Frwagvu1Q5Y_ZYpUOr8FH3Q9rKXD

测试效果:

使用ADALM2000口袋仪器,给板子提供5V的电源,再通过示波器端口采集PWM_Out的输出信号,可以看到滑动摇杆,屏幕上的波形的频率和占空比都会发生变化。

FqdKefWjn2cPbyKK-SfkEoZenlIY

对这个波形的测量和进一步的应用在后面的项目中再发布。

物料清单
团队介绍
FPGA爱好者
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号