通过模拟输入引脚选择4位总线地址:蒙特卡洛模拟显示重叠的地址值


16

我使用ATtiny44微控制器为硕士论文设计了一个小型传感器PCB 。我的应用程序需要约200个这些板,并且16个始终在本地连接至控制器板。整个网络如下所示:

在此处输入图片说明

为了在控制器和传感器板上进行通信,我编写了自己的1针总线(基于时序)。唯一的问题是,当我将其数据发送到控制器板上时,传感器板必须具有一个地址才能知道其在网络中的位置。

因为我在ATtiny上只剩下了1个引脚,所以我想到了一个基于跳线的DAC电路,该电路应根据四个跳线的设置生成一个模拟电压。由于传感器电路使用值(47、470、1k,3k,4k7、10k,100k和220k),并且我想针对生产进行优化,因此我使用了以下DAC值(基本上是100k,50k,20k和10k) )。根据跳线设置,这应该给我一个介于0 V和760 mV之间的不错的值。正是我需要使用ATtiny的内部1.1 V参考电压作为模拟电压读取的内容。启动时,ATtiny会读取该电压并应知道其位置。

原理图

模拟此电路 –使用CircuitLab创建的原理图

从理论上讲,这很好。考虑电阻的公差时,我什至在LTspice中进行了蒙特卡洛分析,以确认没有重叠区域(所有电阻均为1%BTW)。您可以在下面找到此分析的图片。

在此处输入图片说明 在此处输入图片说明

现在,我生产了几块(幸运的是不是200块)这些板,但是有些板未能正确读取其地址(特别是在所有容差立即发挥作用的较高地址区域)。我测量了所有可能的解决方案,最后找出了我的问题。我最初的分析不包括5 V电源电压的容差,该电压是在每个控制器板上通过MC7805从12 V本地产生的。根据数据表,MC7805的输出电压在4.8至5.2 V之间。

在弄清楚这一点之后,我修改了蒙特卡洛分析。现在看起来像这样:

在此处输入图片说明 在此处输入图片说明

如您所见,有很多重叠的区域,我不能肯定地说这个电压只能表示这个地址。基本上所有的地址都以no开头。8可能会得到错误的读数(对于更高的地址,错误读数的可能性更高)。

喜欢比已经使用上板(作为论文我想优化生产)的一个添加不同的电阻值。

喜欢加电压参考(例如,齐纳二极管)喂DAC电阻网络。

不能再修改控制板(并在那里使用更精确的稳压器)。

我仍然可以修改PCB设计/传感器板的原理图!

如何确保始终获得正确的地址读数(通过程序或通过更改电路)?


3
+1好问题。能否在某个地方的pastebin中提供最后一个LTspice asc文件?那么我们可以测试其他组合吗?
暗淡

2
很好的问题,在这里寻求指导之前,先弄清楚造成真正原因的出色工作。现在问题和答案对于任何路过的人来说都是不错的阅读方法,而不只是您自己:-)
桅杆

Answers:


19

根据您的仿真,只要考虑电阻值的不确定性,您的寻址方案就可以正常工作。电压的不确定性使其失效。

我的建议是通过将其用作ADC来消除VCC的波动。您可以通过REFSADMUX寄存器中的位进行编程来实现,如数据表中所述:

在此处输入图片说明

一旦切换到VCC作为ADC的参考电压,就不再测量电压,而是电阻值之间的比率,精确到1%。原理图不需要更改(尽管您可能希望增加R7的值以使测量值处于ADC转换范围的中间),仅需更新Attiny的固件即可。

如果您仍然愿意重新设计传感器板,则可以按照Cano64的建议,用R-2R梯形图替换原理图:

原理图

模拟此电路 –使用CircuitLab创建的原理图

通过使梯形图中的所有步长相等,可以优化分辨率。1%的电阻器的精度足以构建高达5位的单调阶梯。


h!我没有看到树木的阿甘。我对1.1V非常着迷...非常感谢!我会尝试的。
KarlKarlsom

1
经过测试,它可以正常工作。大!
KarlKarlsom,2016年

我使用VCC作为AREF以及用于R7的220k电阻对其进行了测试。以后我可能会尝试模拟100k,220k R-2R梯形图,看看是否能给我带来更好的结果。再次感谢!
KarlKarlsom,2016年

3

我不得不解决一次类似的问题。我需要将4个按钮连接到arduino上的一个模拟引脚,但是我需要识别同时按下的按钮(所有组合)。我想出了与您相同的电路,然后编写了一个程序来搜索所有可能的电阻值组合,因此,当您按按钮时,最终值要尽可能地分开。你猜怎么了?我们被搞砸了,这是不可能的。就是这样,祝您有美好的一天。

我了解到,开关的最佳电阻值接近R,2R,4R,8R,分压器的底部具有R值。您的电路已经接近最佳值,您只需用10k代替R7电阻。

但是对您来说有个好消息。由于您只需要设置一个地址(设备运行时就不会操作该开关),因此我建议使用SPDT开关和R2R阶梯


为什么不能完成?将开关连接到(R,2R,4R,8R)电阻时会发生什么情况?哪些组合无效?
德米特里·格里戈里耶夫

顺便说一句,R-2R梯子是一个很好的建议!
德米特里·格里戈里耶夫

+德米特里(Dmitry)我的意思是相同的输出电压太接近以至于无法可靠地区分它们。
Cano64
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.