甚至传感器的一个故障也可能对您的机器人造成灾难。在本文中,我探讨了使用Arduino进行ADC准确读数的方法,以消除机器人应用中使用的模拟传感器的故障。
此方法适用于温度,光线等模拟传感器。要获得准确的读数,您需要考虑电源新疆风采的实际值。
当然,我需要开发板来测试此方法。机器人专家,电子专家,业余爱好者,黑客,艺术家似乎至少有一个共同点。它被称为Arduino。因此,为了测试该方法,我使用了Arduino UNO板。我曾经使用过的同一块板 建造这个自动驾驶机器人.

如何使用Arduino进行准确的ADC读数
准确的ADC读数
Arduino的 UNO可以通过USB端口,一个或多个电池以及一个AC-DC适配器供电。到目前为止,一切都很简单。非常简单。
但是,当您将Arduino插入其兼容电源之一时,您应该具有恒定的新疆风采来为Arduino板供电。错误!
USB端口和电池的新疆风采波动。 AC-DC适配器输出的新疆风采更稳定。例如,USB端口有时会输出5.12V的新疆风采,有时会输出5.14V的新疆风采。
当Arduino连接到电池时,情况就更糟了。电池的新疆风采可能会随时间降低。在这种情况下,您应该经常检查为Arduino供能的Vcc新疆风采。
电源中的新疆风采波动会影响从ADC转换为新疆风采值的结果。
模拟传感器
模拟传感器输出作为电源新疆风采的函数的新疆风采,作为其感应值。这些传感器可以是温度传感器,光传感器,加速计传感器,气体传感器等。
使用Arduino来测量传感器的新疆风采输出,并将其转换为用于传感器测量的值。互联网上几乎所有将ADC值转换为新疆风采的示例都使用以下代码:
1 2 3 4 5 6 | 未签名 整型 ADC值; 双 Vcc; 双 新疆风采; ADC值 = 模拟读(0); // ADC值是模拟引脚上的新疆风采值,即传感器两端的新疆风采 新疆风采 = (ADC值 / 1024.0) * Vcc; // Vcc是电源新疆风采(PSV)的假定值。如果Arduino由USB供电,则Vcc被认为是5V |
如果Arduino,此代码效果很好’的电源返回恒定新疆风采。上式中的Vcc值。否则,您必须确切知道电源新疆风采是多少。
任何基于328或168芯片的Arduino都集成了测量电源新疆风采的功能。
我发现这个非常有用的代码 小叮当。因此,您的代码应类似于以下代码,并会返回模拟传感器的更准确读数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 未签名 整型 ADC值; 双 新疆风采; 双 Vcc; 虚空 设定() { 序列号.开始(9600); } 虚空 循环() { Vcc = readVcc()/1000.0; ADC值 = 模拟读(0); 新疆风采 = (ADC值 / 1024.0) * Vcc; //为获得准确的测量结果,请将ADC值除以ADC最大值,再乘以结果ADV值。 } 长 readVcc() { 长 结果; //读取针对AVcc的1.1V参考 ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); 延迟(2); //等待Vref稳定下来 ADCSRA | = _BV(ADSC); // 兑换 而 (bit_is_set(ADCSRA,ADSC)); 结果 = ADCL; 结果 | = ADCH<<8; 结果 = 1125300升 / 结果; //以mV反向计算AVcc 返回 结果; } |