将0 V-5V电压转换为0-1V(用于ESP8266 12F)
问题描述:
我使用力传感器通过Arduino的ADC测量其值,在这里我提供了5V的力传感器和一个3.3k电阻拉下。现在通过一些编码将输入原始adc值(范围0-1023)转换为权重。现在我需要删除arduino并将该力传感器直接连接到ESP8266 12F,并使用它的adc来测量电压。但问题是它的范围只有0-1V。我尝试了一些分压器,并在背面5V电源提供1V电压,现在adc值的范围为0-90,使用arduino i的地图功能将0-90转换回0-1023。 这里是5V的编码:将0 V-5V电压转换为0-1V(用于ESP8266 12F)
fsrADC = analogRead(A0);
float fsrV = fsrADC * VCC/1023.0; //VCC = 5
float fsrR = R_DIV * (VCC/fsrV - 1.0); //R_Div = 3300 for 3.3k pulldown
这里是1V的编码:
fsrADC = analogRead(A0);
fsrADC = map(fsrADC,0,90,0,1000);
float fsrV = fsrADC * VCC/1023.0; //VCC = 5
float fsrR = R_DIV * (VCC/fsrV - 1.0); //R_Div = 3300 for 3.3k pulldown
在此之后有几行此电阻转换成重量。正如你所看到的,我需要0-1023范围的输入模拟值才能使下一行正常工作。 计算的重量不准确。我认为它的供应问题,因为我通过分压将5v电源转换为1v,并将其输出用于传感器。任何建议和良好的分压电路?
答
您在比较1.0V时有正确的想法。但是您需要将ADC值与更合适的参考电压进行比较,如described in the documentation。理想情况下,您可以使用EXTERNAL
1.0V基准电压应用于AREF
引脚,尽管通过正确的软件调整,1.1V基准电压源也可能产生相当好的结果。参考电压是关键。就分压器电路而言,只需将它们连接到它们即可,只要您有合适的电阻器,它就是一个超级简单的电路。一旦你接近1.0V,将其应用于AREF
并根据文档将其设置为参考。
你的adc有些问题;它应该在0-1023之间,而不是仅仅是90.你也不需要在你的“1V”版本中的第二行,它总的来说应该是'(adc/1023)* VCC' – dandavis