приветствую вас форумчане + датчик давления
- Войдите на сайт для отправки комментариев
Сб, 08/11/2014 - 04:52
Я тут платку прикупил + всяких датчиков.
Так что в вашем полку прибыло.
Теперь вопрос. Может есть хоть FAQ какой по подключению датчиков.
Я тут пол часа гуглил пока мне не дошло что VCC это +5V на плате.
Вот такая беда MPX5700AP , по докам
pin 1: v-out
2:ground
3:vcc
4:v1
5:v2
6:v ex
что куда тыкать понятно только по ground и VCC
остальное я в замешательстве
Pin1 на вход АЦП и AnalogRead его
АЦП и AnalogRead что это за волшебные буковки ? какой мне штекер на плате искать ?
нарыл на ebay у какого то продавца что можно подключать по первым 3м штекерам, остальные не нужны.
А для чего же они тогда ?
из буржуйского кода доперло что АЦП это A0
кто знает почему буржуины вот так вот объявляют, откуда читать, циферкой ?
int mapsen = 1; // Set MAP sensor input on Analog port 0
потом читают в лупе
int raw = analogRead(mapsen);
http://forum.arduino.cc/index.php?topic=191981.0
пробовал на UNO, так не пашет
заработало когда объявил int mapsen = A0; так реально понятней , но опять таки почему v-out это A0 ?
вот рабочий код для тех кто будет интересоваться датчиком , у меня работает, дую в трубочку - циферки растут , но почему то без давления, если совсем не дуть, не нулевые значения.
Kpa 133 , PSI 19
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int mapsen = A0; // Set MAP sensor input on Analog port 0
int mapval;
void setup(){
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Air Suspension");
lcd.setCursor(0,1);
lcd.print("Gauge");
delay(1000);
lcd.clear();
}
void loop()
{
// MEASUREMENT
int raw = analogRead(mapsen); //Reads the MAP sensor raw value on analog port 0
float voltage = raw * 0.004887586; // let the compiler determine how many digits it can handle
float pressure = 0.0;
// MATH
if (voltage < 4.6)
{
pressure = voltage * 700.0/4.6; // it raises 700KPA over 4.6 volt faster => pressure = voltage * 152.173913;
}
else
{
pressure = 700 + (voltage-4.6) * 100 / 0.3; // last piece raises 100KPa over 0.3 Volt. // can be optimized to p = c1 + v * c2
}
// DISPLAY
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("KPa:");
lcd.print(pressure, 3 );
lcd.setCursor(0, 1);
lcd.print("PSI:");
lcd.print(pressure*0.145037738, 3 ); // convert to PSI
delay(100);
}
понял почему A0, можно и на другие А1..А5 вешать,
А analog in это всегда v-out ? Их же там всего 6 от A0 до A5. Маловато. А если больше датчиков нужно повесить, что делать ?
А если не дуть а ..... Хм тянуть?
А если больше датчиков нужно повесить, что делать ?
Вам 6 мало? На некоторых МК даже памяти нет, несколько регистров и крутись как хочешь. Есть Мега, там аналоговых входов 16.
Разберм всё по порядку если вы правильно прочитали на датчике MPX5700AP, то раз берм абревеатуру по порядку:
MPX – датчики давления
5 – с темп. компенсацией, калибровкой, со встр. схемой нормализации сигнала
700 – максимальное давление в кПа (7,138 кг/см^2 или 7 бар)
A – тип измеряемого давления абсолютное ( величина измеренная относительно давления равного абсолютному нулю. Другими словами давление относительно абсолютного вакуума) размах измерения -100 - 600 кПа
P - один порт
По подключению : 1 - V OUT означает вольты, выход ; 2 GROUND общий (это не земля как многие думают); 3 VCC питание 5 вольт;
далее мои предположения (гугол молчит как партизан), вот вы сделали/сбрали приборчик вдруг вместо сухово воздуха попала кислата или дуванули гидроударом, все хана датчику, вставили дугой и показания стали другими, учитовая погрешность данного дачика, допускается погрешность в 1.5% от мах итого получим дрейф в +/- 5.25 кПа, для этого предусмативается подстройка (на что указывает 5 в абревеатуре датчика) 4 - v1, 5 -v2, нужно пробывать создать два резистивных делителя с диапазоном в 0.1В, 6 - V EX сдесь тоже могу ошибатся, это скорей всего отключение датчика, просто обрывать для отключения не желательно поскольку после включения придется ждать когда пройдет возбуждение, а так подал высокий уровень и идет экономия энергии, на тот случай если у вас прибор на батарейках и одного измерения в 1-10 сек хватит за глаза, включили - измерили - отключили.
Измерение датчик с абсолютным давлением значит может мерить как давление так и разрежение, с учетом что мерется воздух измерение в диапазоне -100 - +600 кПа или -1 - +6 бар, с подключением и возможной настройкой разобрались, теперь что будет в ардуино, представим полный идеал и используя по графику в приведенном вами мануале (стр.4 Typical), обратимся к таблице (стр.2), температура +25 гр., vss- 5в, v max out- 4.5В, v min out- 0.2В, 10bit- 1024, проведем лийнеризацию получим множитель 204,8 со смещением -7,10543E-15 (10bit = v out * множитель + смещение), расчет при атмосферном давлении, поскольку датчик буржуйский и привязывается к международному стандарту IUPAC это 100 кПа, при лийнеризации получается множитель 0,00614286 со смещением 0,2 расчитав получается на выходе датчика 0,814286 В, в свою очередь ардуино 166 +/- 1. Если вам нужна общий олгаритм вставте в ячейку экселя =ОКРУГЛТ((A1*0,00614286+0,2)*204,8-7,10543E-15;1) конверция кПа в значения ардуино.
Увеличиваем количество аналоговых входов у ардуины
www.youtube.com/watch?v=KWVMGU7kryM&index=4&list=PLkW_wFQyyaEp3lAcNDZsYU0XRJEnzFOcj
А если не дуть а ..... Хм тянуть?
в этом датчике можно и тянуть. Реагирует. Давление уменьшается и показатели соответственно тоже.
Тут возникла проблемка технического характера. Стандартный велосипедный шланг пропускает воздух в месте соединения с камерой, довольно быстро :(
На комрессоре шланг и соединение хорошее. Но мне нужен только шланг, не резать же компрессор. Может кто подскажет решение ?