Реле давления 4-20 мА
Я работаю над проектом, пытаясь считать значение давления с датчика давления 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();
}
@Jorge_Garza, 👍-1
Обсуждение2 ответа
Ваш рисунок отличается от рисунка на схеме подключения этого датчика: резистор должен быть подключен правильно, как блок «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
Я думаю, это то соединение, которое вам нужно. Полностью исключите соединение OUT и используйте резистор на 250 Ом (в техническом описании указано < 0,5 кОм).
Я уже пробовал это соединение, однако контакт 3 (земля) вызывает то, что, когда мой psi превышает предел датчика, в данном случае 110 psi (максимальная мощность реле давления составляет 200), происходит короткое замыкание и сброс., @Jorge_Garza
Использование меньшего номинала резистора может помочь. Обратите внимание, что при достижении предела давления напряжение на резисторе достигнет 250 Ом * 20 мА = 5 В. Если напряжение на контакте A0 станет больше 5 В, это может вызвать проблемы с Arduino, включая потенциальный сброс., @Kavka
- Чтение датчика давления от 4 до 20 мА с использованием uno
- Подключение датчика давления к Arduino для сбора данных о давлении и времени
- Чувствительный к силе резистор Arduino с ЖК-дисплеем
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- Как подключить более 10 датчиков к Arduino uno r3
- Как использовать два ультразвуковых датчика для управления двигателем 5 Вольт?
Попробуйте отключить контакт 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