Реле давления 4-20 мА

arduino-uno sensors pressure

Я работаю над проектом, пытаясь считать значение давления с датчика давления Allen Bradley 836P-D2NFGB20PA-D4 Ser.A.

Однако конфигурация выводов, указанная в описании вместе со схемами, сильно отличается от той, которую я использовал раньше

Схема, которую я использую, похожа на эту, вверху — схема из документации по давлению, а бот — та, которую я подключаю к моему Arduino Uno.

Однако на Arduino я считываю постоянное значение 230, которое не увеличивается и не уменьшается, когда я прикладываю давление к датчику mi, даже когда ЖК-дисплей на моем датчике отображает правильное значение psi.

#include <LiquidCrystal.h> //книжный магазин
int V0 = 3;
int RS= 4;
int E = 5;

int D4 = 6;
int D5 = 7;
int D6 = 8;
int D7 = 9;
LiquidCrystal lcd(RS, E, D4, D5, D6, D7); //Указываем контакты интерфейса


//Глобальные переменные
int SensorPin= 0; //Переменная входного вывода датчика
int indice; //позиция текстового массива
int presion; // переменная для хранения значения, полученного от датчика (от 0 до 1023)
int outputValue = 0;
int state = 0;
int prv_state = -1;

#define ARRAYTXT 4 //Количество текстов для записи


void setup() {
  // поместите сюда код установки для однократного запуска:


Serial.begin(9600);
analogWrite(V0, 50);

// lcd.begin (16, 2);
// lcd.clear();
// lcd.begin (столбцы, строки);
}

void loop() {

 //Настраиваем текстовую команду
  String textos[ARRAYTXT] = {"Baja presion", "Presion normal", "Alta presion", "Apagar Maquina"};


  presion = analogRead(SensorPin); // получаем данные с датчика
    outputValue = map(presion, 175, 1023, 0, 367);

// Указываем тексты, которые были определены в текстовой команде вначале ("Низкое давление" = 0)
  if(outputValue < 50){
    indice = 0;
  } else{
    if(outputValue >=50 && outputValue < 100){
      indice = 1;
    }else{
      if(outputValue >=100 && outputValue < 200){
        indice = 2;
      }else{
        if(outputValue >=200 && outputValue < 350){
          indice= 3;
        }
      }
    }
  }
  // lcd.clear(); // se borran pantallas
  // lcd.setCursor (0, 0); //Escribimos en la fila de abajo
  Serial.print("PRESION: "); // пишем сообщение на ЖК
  Serial.print(outputValue,DEC);
  Serial.println(" PSI");
  //lcd.setCursor(0, 1); //Запись в нижней строке
  Serial.println(textos[indice]); // Указываем, что печатает индексы
  //Серийный.принт("Пси");
  //Serial.println(outputValue);
  delay(200); //Время повторить сообщение (1 секунда)
  // lcd.clear();
}

, 👍-1

Обсуждение

Попробуйте отключить контакт 4., @Edgar Bonet

Я попытался отключить контакт 4 (ВЫХОД), и нет никакой разницы, последовательный порт на arduino ide составляет -75 фунтов на квадратный дюйм или 270 фунтов на квадратный дюйм, но он не увеличивается и не уменьшается., @Jorge_Garza

контакт 4, по-видимому, является выходом напряжения ... отключите токовую петлю (контакт 2) .... или поместите резистор между контактами 2 и 4 и измерьте напряжение на резисторе., @jsotola

Вот похожая ситуация, худо-бедно для вас есть полезная информация. Найдите «Reading-4-to-20ma-pressure-sensor-using-uno» здесь, на stackexchange., @Wendall


2 ответа


1

Ваш рисунок отличается от рисунка на схеме подключения этого датчика: резистор должен быть подключен правильно, как блок «4-20 мА» на рисунке, (-) идет на землю. Измерьте напряжение непосредственно на контакте 2. При считывании аналогового сигнала датчика вы, вероятно, можете оставить контакт 4 плавающим.

,

Я заменил блок «4-20 мА» на резистор 250 кОм и измерил ток непосредственно перед резистором, и он все еще равен 0., @Jorge_Garza

250к или 250? А где "до" резистора?, @Sim Son

Моя ошибка, 250 Ом, по-прежнему никаких изменений, напряжение на выводе 2 (предположительно выход для 4-20 мА) постоянно 3 В., @Jorge_Garza

3В соответствует току 12мА, а в комментарии выше вы написали, что измерили 0мА...?, @Sim Son

Значит, вы что-то делаете не так или не все нам рассказали., @Sim Son


1

Я думаю, это то соединение, которое вам нужно. Полностью исключите соединение OUT и используйте резистор на 250 Ом (в техническом описании указано < 0,5 кОм).

,

Я уже пробовал это соединение, однако контакт 3 (земля) вызывает то, что, когда мой psi превышает предел датчика, в данном случае 110 psi (максимальная мощность реле давления составляет 200), происходит короткое замыкание и сброс., @Jorge_Garza

Использование меньшего номинала резистора может помочь. Обратите внимание, что при достижении предела давления напряжение на резисторе достигнет 250 Ом * 20 мА = 5 В. Если напряжение на контакте A0 станет больше 5 В, это может вызвать проблемы с Arduino, включая потенциальный сброс., @Kavka