Измерение давления и вывод данных на LCD 20*2, проблема с пересчетом

DeN-iZ
Offline
Зарегистрирован: 04.04.2013

Добрый вечер!!! Имею датчик давления ST3000 с токовым выходом 4-20мА и диапазоном измерения -50 -+50кПа .
Подключаю в цепь резистор на 250 Ом и с него снимаю сигнал 1-5 В. Так как функция map не работает с
числами с запятой ,то ее не использовал. Господа,подскажите как прописать расчет чтобы 1 В соответствовал -50кПа , а 5В соответственно +50кПа. Зависимость между током и давлением линейная. То есть считываю с аналогового входа напряжение ,поступающее от датчика давления, записываю его в переменную , далее его надо промасштабировать для вывода на LCD в реальных единицах давления. Загвоздка у меня с отрицательной составляющей диапазона. Ранее делал вольтметры на LCD ,проблем не возникало.

maksim
Offline
Зарегистрирован: 12.02.2012

Честно говоря не понимаю в чем ваша проблема... и зачем вам вообще вещественные числа? 

  long pressure = map(analogRead(A0), 204, 1023, -50000, 50000);
  lcd.setCursor(0,0);
  lcd.print(pressure/1000);
  lcd.print(.);
  lcd.print((pressure%1000)/10);

ну и если уж так хочится вам вещественных чисел ,чего крайне вам не рекомендую, то так:

  long pressure = map(analogRead(A0), 204, 1023, -50000, 50000);
  float pressure_f = pressure/1000.0;
  lcd.setCursor(0,0);
  lcd.print(pressure_f, 2);

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

maksim, извините - а почему не 205 ? 1 V = 205 АЦП ? нет ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Вроде понял..... 1024 / 5 * 1 = 204.80.... НО округлять НЕЛЬЗЯ ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Или  - 1023 / 5V * 1V = 204.60.... НО округлять НЕЛЬЗЯ ? т.е. = 204 ?

maksim
Offline
Зарегистрирован: 12.02.2012

Хотите поставьте 205, роли особой не сыграет.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Про роль понятно... Спасибо ! :)

DeN-iZ
Offline
Зарегистрирован: 04.04.2013

Спасибо, друзья , все получилось!!!