Подключение датчика давления к Arduino для сбора данных о давлении и времени
Я пытаюсь создать регистратор данных давления, используя Arduino и Mindman MP47P-03-F1 ( https://www.mindman.com.tw/proimages/pdf/E_MP47_S.pdf) датчик давления, датчик подключается к внешнему источнику питания 12–24 В постоянного тока. Я подключил аналоговый провод к A0 Arduino и добавил еще один провод от GND к датчику. Я получаю стабильное показание напряжения (~ 1 В), но давление неправильное, и он не реагирует на изменения давления. Может кто-нибудь сказать мне, что я делаю неправильно? это пример кода:
const int analogPin = A0;
const float slope = -0.1;
const float intercept = 0.6;
const unsigned long startTime = millis();
void setup() {
Serial.begin(9600);
Serial.println("Time (s)\t\tPressure (MPa)");
}
void loop() {
unsigned long elapsedTime = millis() - startTime;
int sensorValue = analogRead(analogPin);
float voltage = sensorValue * (5.0 / 1023.0);
float pressure = slope * (voltage - intercept);
Serial.println(sensorValue);
Serial.print(elapsedTime / 1000.0);
Serial.print("\t\t");
Serial.println(pressure);
delay(1000);
}
Изменить: я изменил код так, как предлагали некоторые на форуме arduino:
const int sensorPin = A0;
const int offset = 201; // регулировка нулевого давления
const int fullScale = 1023; // регулировка максимального давления
float sensorType = 1000.0; // кПа
float pressure; // конечное давление
const unsigned long startTime = millis();
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long elapsedTime = millis() - startTime;
pressure = (analogRead(sensorPin) - offset) * sensorType / (fullScale - offset);
Serial.print(analogRead(sensorPin));
Serial.print("\t\t");
Serial.print(elapsedTime / 1000.0);
Serial.print("\t\t");
Serial.println(pressure, 4);
delay(1000);
}
Давление равно 0, но у меня продолжаются скачки показаний давления, когда давление не прикладывается. вот фото проводки.
@Omer Davidi, 👍2
Обсуждение1 ответ
Как упоминает jsotola в комментариях, вам обязательно следует сначала убедиться, что датчик давления работает с помощью мультиметра, желательно на столе с регулируемым источником питания, от которого вы можете питать свой датчик. Убедитесь, что вы можете измерить давление, подаваемое в датчик, другими способами; простой манометр может сработать.
Тогда вам придется исправить ваше уравнение — оно перевернуто, поскольку на графиках давление показано как входное значение, а выходное значение — как напряжение, но когда вы конвертируете напряжение в давление, процесс переворачивается. , поэтому мы вычисляем крутизну следующим образом: берем диапазон давления (выход) и делим его на диапазон напряжения (вход) ->; 1,1 МПа / 4,4 В = 0,25 В_дюйм. Теперь мы знаем, что при 0,6 В выходное давление составляет -0,1 МПа, поэтому мы составили линейное уравнение той формы, которую вы сделали -> y = mx + b и подставляем значения: -0,1 МПа = 0,25 МПа/В * (0,6 В) + b. Если вы решите на b, вы получите -0,25.
Следовательно, давление = 0,25X – 0,25 должно быть уравнением, по которому вы сравниваете давление, подаваемое в датчик, с напряжением, которое вы измеряете.
Если вы обнаружите, что с помощью этого уравнения вы измеряете правильное давление, но после повторной реализации вашей программы Arduino вам все равно не повезет, я бы проверил, правильно ли подключены заземления - очень важно иметь все задействованных оснований на одном и том же «уровне». В качестве бонуса, в зависимости от Arduino, вы можете использовать дифференциальные каналы АЦП чипа, но, насколько я знаю, для этого вам придется записывать напрямую в регистры.
откуда мне нужно измерить напряжение датчика? у него есть ЖК-экран, на котором я могу видеть изменения давления, но Arduino не видит этих изменений, например, от 0 МПа до 0,008 МПа., @Omer Davidi
Кроме того, время от времени у меня возникают скачки напряжения, которые меняют показания давления., @Omer Davidi
Вы должны измерить напряжение от белого провода к синему проводу (от аналогового выхода к постоянному току). Действительно ли у вас есть источник давления, больший, чем это ничтожное (вероятно, окружающее) значение? Он настолько мал, что составляет менее 1% от полной шкалы, что ниже разумного отношения сигнал/шум, основанного на значении +/- 2,5% полной шкалы – это также может быть шум. Есть ли у вас запасной велосипедный ручной насос, к которому вы можете прикрепить подходящую насадку и опробовать ее? Может, со сквозным манометром? В любом случае, 1 В звучит разумно при ~0 МПа, поэтому, если вы не оказываете давление, превышающее окружающее, это выглядит нормально. Что за шипы?, @Nick S.
Насколько велики шипы? У тебя есть заглушка на входе в ПС (вижу только шланг)? Вы пытались измерить выходной сигнал без Arduino, желательно с помощью осциллографа? Есть ли у вас второй PS, который вы можете протестировать (на будущее — в следующий раз вам следует приобрести два, чтобы вам не приходилось пытаться выяснить, устраняете ли вы неполадки в соединении или в самом датчике)? Вы блок питания от БП отключили? Зачем вам нужен дополнительный датчик для подключения провода аналогового выхода к самому Arduino? Опять же, в идеале у вас должен быть известный источник ненулевого давления, который вы можете подать на PS., @Nick S.
- Чтение датчика давления от 4 до 20 мА с использованием uno
- Онлайн-проблема подключения Arduino к базе данных MySQL
- Чувствительный к силе резистор Arduino с ЖК-дисплеем
- Использовать Data Logger Shield с Arduino Sensor shield V5.0
- Реле давления 4-20 мА
- Датчики/регистрация данных Температура и влажность на расстоянии 50 футов
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
программа должна реагировать на изменение давления... отключите ардуино и проверьте выход датчика вольтметром, @jsotola
@НикС. - Какой хороший комментарий ты написал! Часть «Кроме того, ваше уравнение неверно...» великолепна и могла бы стать частью отличного ответа. Возможно, вы не знаете, что ответы в комментариях к Arduino SE не одобряются., @VE7JRO
@НикС. - Почему бы не включить часть комментария «Я просто дал подсказки» в ответ? Я уверен, что постоянные участники этой группы согласятся, что ответы и частичные ответы в разделе комментариев к вопросу не приветствуются :) НГ, @VE7JRO