Преобразование напряжения 0–5 В в 0–1 В для АЦП (для ESP8266 12F)

Я использую датчик силы для измерения его значения через АЦП Arduino. Здесь я подаю 5 В на датчик силы и резистор 3,3 кОм для понижения напряжения. Я преобразовываю это входное необработанное значение АЦП (диапазон 0-1023) в вес с помощью некоторого кодирования.

Мне нужно удалить Arduino и подключить датчик силы напрямую к ESP8266 12F и использовать его АЦП для измерения напряжения. Но проблема в том, что его диапазон составляет всего 0-1В. Я попробовал несколько делителей напряжения и сделал 1 В из источника питания 5 В сзади, теперь значение АЦП имеет диапазон 0-90, используя функцию карты Arduino, я преобразовал это 0-90 обратно в 0-1023. Вот кодировка для 5V:

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, чтобы следующая строка работала правильно. Расчетный вес не соответствует действительности. Я думаю, что это проблема питания, потому что я преобразовываю питание 5 В в 1 В через делитель напряжения и использую его выход для датчика. Любые предложения и хорошая схема с разделением напряжения?


person F-16 Viper    schedule 18.06.2017    source источник
comment
Что-то не так с вашим adc; который должен находиться в диапазоне от 0-1023, а не только до 90. вам также не нужна 2-я строка в вашей версии 1V, которая в целом должна быть просто (adc/1023) * VCC   -  person dandavis    schedule 20.06.2017
comment
Я знаю, что это старый пост, но правильным решением здесь (в дополнение к делителю напряжения) является подача 1 В на ваш источник напряжения АЦП. Если вы оставите его на уровне 5 В, но подадите на него только значения в диапазоне 0-1 В, вы выбросите все свое разрешение измерений в окно. Кроме того, использование плавающей запятой на 8-битном микроконтроллере не является хорошей идеей.   -  person Lundin    schedule 05.02.2021


Ответы (1)


У вас есть правильная идея в сравнении с 1,0 В. Но вам необходимо сравнить значение АЦП с более подходящим эталонным напряжением, как описано в документации. В идеале вы должны использовать опорное напряжение EXTERNAL 1,0 В, подаваемое на контакт AREF, хотя опорное значение 1,1 В также может дать неплохие результаты при правильном программном масштабировании. Опорное напряжение является ключевым. Что касается схем делителя напряжения, просто погуглите их, это очень простая схема, если у вас есть правильные резисторы. Как только вы приблизитесь к 1,0 В, примените его к AREF и установите его в качестве эталона в соответствии с документацией.

person TomServo    schedule 18.06.2017