Я построил простой проект с платой Arduino. Я использую плату для считывания аналоговых входных значений с датчика вращения (потенциометра) и использую значения, чтобы определить, какое реле SSR на модуле включить. Затем я подключил реле к светодиодам, и проект работает, но только одним способом. Например, когда я поворачиваю потенциометр на максимум, реле последовательно замыкаются, как и должно быть. То же самое, когда я достигаю максимума и набираю банк. обратно к 0. Я могу ерзать посередине, и Arduino включит реле (реле) в соответствии с считанными аналоговыми значениями. Эта часть работает так, как должна.
Проблема в том, что когда я подключаю светодиоды к реле, светодиоды будут включаться последовательно по мере включения реле, когда я набираю потенциометр. от 0 до максимума. Но светодиоды не гаснут, когда я набираю потенциометр. обратно вниз к 0. Реле показывают, что они выключаются на модуле (каждое из них имеет светодиодный индикатор), но светодиоды, которые я подключил, остаются включенными, несмотря ни на что.
Стандартный выход 5 В с платы Arduino питает модуль реле, светодиоды и датчик. Каждая земля является общей для Arduino GND.
Так почему светодиоды не гаснут? Это, вероятно, очень начинающие вещи, о которых я не знаю. Я где-то читал, что когда вы используете MOSFET для включения и выключения чего-либо, вы должны подключить подтягивающий резистор к GND, чтобы «отключение» сработало. В противном случае свет, двигатель или что-то еще останется включенным. Похоже, это применимо здесь?
Вот мой релейный модуль: http://www.sainsmart.com/sainsmart-4-channel-5v-solid-state-relay-module-board-omron-ssr-avr-dsp-arduino.html
Мой датчик вращения (пот.): https://www.bananarobotics.com/shop/Analog-Rotation-Sensor-V1-Potentiometer?gclid=CjwKEAiAk8qkBRDOqYediILQ5BMSJAB40A5UiGMFbpiVo9rWMI-ooeUwOA2ZfTD-h5ctmCyOAwcUzBoCIo_w_wcB
А вот мой код Arduino, если поможет:
//define the digital pins for controlling the relays on the module
//these pins are connected to the relay gate pins on the module
#define in1 13
#define in2 11
#define in3 10
#define in4 9
void setup(){ //make sure the pins are all output, as 5V will be drawn from them
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop(){
float rotationValue = analogRead(A0); //read the raw sensor value
float percentValue = rotationValue / 10.23; //convert raw value to 0-100
if(percentValue >= 0.00 && percentValue <= 1.00){ //all relays off
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
else if(percentValue > 1.00 && percentValue <= 25.00){ //turn on relay 1
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
else if(percentValue > 25.00 && percentValue <= 50.00){ //turn on relay 1, 2
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
else if(percentValue > 50.00 && percentValue <= 75.00){ //turn on relays 1,2,3
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
else if(percentValue > 75.00){ //turn on all the relays
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, HIGH);
}
}
То, что у вас есть, это твердотельные реле. Они предназначены для переключения переменного тока, а не постоянного тока.
Они полагаются на то, что напряжение, протекающее через переключаемую сторону, падает до 0 В (точка «пересечения нуля» сигнала переменного тока) для отключения.
Они не подходят для коммутации постоянного тока.
пользователь3211857