没有ADC的MCU怎么检测电位计的阻值变化

描述

还记得我们“2022寒假在家一起练”的RP2040游戏机平台上的4向摇杆么?很多同学用它实现了游戏机的位置操控,还制作了鼠标的功能。4向摇杆本质是2个电位计 - X轴和Y轴各一个电位计。

用RP2040制作的游戏机平台

FPGA

四向摇杆的结构和内部原理图

在RP2040游戏机平台中占用了RP2040的两个ADC输入管脚,通过检测由这两个电位计带来的分压电压的变化,从而判断摇杆的相对位置。

想一下,如果MCU内部没有ADC,只有数字IO,或者用FPGA是否也能检测电位计的变化?甚至给出电位计的阻值变化?而且能够用一根输入管脚同时感知2个电位计?

初听起来是不是有点天方夜谈?如果我们能巧妙利用PWM信号这个神器,就能实现对2只电位计的检测。

FPGA

大家知道PWM信号的特点 - 一根数字信号,两个基本参数 - 频率和占空比。我们多数情况下是产生PWM信号来控制外部的器件,反过来我们能否测量这两个参数的变化,从而用于感知外部的变量呢?

测量PWM信号的这两个参量很容易,用高频率的时钟数数就可以实现,无论MCU用定时器来实现,还是FPGA用计数器来实现,都很简单,在这里就不再赘述了。

下面的问题就是通过变化的PWM测量外部的参量:

我们设计一个电路,能够产生调频、调占空比的PWM信

用一只电位计来控制产生的PWM信号的频率

用另外一只电位计控制产生的PWM信号的占空比

这个电路是啥样的?想一下PWM信号的生成原理:

FPGA

我们如果能够控制比较器输入端锯齿波的频率,就能调整PWM脉冲的频率;

我们如果能够调节比较器另一端参考电压的变化,就能调整PWM脉冲的占空比。

那么,电路就有了:

FPGA

一颗普通的4运放LM324 + 几颗电阻 + 几颗电容即可。在这个电路中用到的供电电压是5V,此电路结构同样也适用于3.3V供电。

用两个运放产生可调频率(一个电位计P1控制)的三角波,送给一个用作比较器的运放,运放的输出为占空比可调的脉冲波形。比较器的一个输入端电压由另一个电位计来控制。

这个电路的频率调节范围为250Hz - 500Hz,脉宽变化从10%到90%,根据电路中的电阻参数就可以计算出两个电位计变化的阻值。

是不是挺简单的?

要不要用MCU和FPGA分别试一试?

如果你试了,可以将过程和结果分享在电子森林的项目页面哦。

原文标题:设计小技巧:如何用MCU或FPGA的一个数字IO测量2个电位计的阻值变化?

文章出处:【微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分