Управление реле с компа через USB, проблема при подключении нагрузки

ConstantinS
Offline
Зарегистрирован: 25.08.2016

Есть ардуино UNO на CH3400, к нему подключен 8 ми канальный 5ти вольтовый модуль реле.

Через простеньку программу написанную в делфи передаю 1 байт в ардуино, число от 1 до 8. Ардуино включает на 1 секунду одно из 8 ми реле. 

Без нагрузки на реле все работает отлично. При подключении нагрузки в модуль реле, а именно 12ти вольтовый электромагнитный замок, запитанный от отдельного компьютерного блока питания, вся система срабатывает ровно 1 раз. Далше при попытке передать повторно данные программа на компе ругается:

"writefile function failed win error code 31"

Оживить систему помогает переподключение ардуинки. Похоже что вешается ком порт. Монитор порта тоже не может поключится, пишет ошибку "Ошибка при настройке параметров последовательного порта: 9 600 N 8 1"

Подскажите в чем может быть проблема? Я никак не могу понять как подключение нагрузки к выводам реле может повлиять на работу ком порта? Пробовал разные блоки питания (компьютерные). Пробовал разные компоненты для делфи, результат один.

Код ардуинки

int pin[] = {2,3,4,5,6,7,8,9}; // Объявляем массив в котором указанны номера выводов
byte i;

void setup() {
  // Запускаем цикл, в котором определяем контакты 2-9 как выводные 
for (int t = 0; t < 8; t++ ) // >
{
  pinMode(pin[t], OUTPUT);
  digitalWrite(pin[t], HIGH);
}
Serial.begin(9600); // Инициализируем перередачу данных по COM-порту на скорости 9600 бод
}
 
void loop() {
 // Запускаем цикл без каких либо действий
 // Только когда данные придут на COM-порт продолжится выполнение программы дальше этой строки
 while (Serial.available() == 0);
  
 // Данные пришли, считываем их в переменную i
 i = Serial.read();
 //Serial.print("Poluchil");
  i--;
 digitalWrite(pin[(i)], LOW); // включаем реле
 delay(1000);
 digitalWrite(pin[i], HIGH); // выключаем реле
 Serial.println(i); // отправляем ответ что все прошло успешно
 }

В делфи использую компонент CPortLib, пробовал еще CommPortDriver.

Буду рад любым советам и помощи.

ConstantinS
Offline
Зарегистрирован: 25.08.2016
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А схема подключения?

ConstantinS
Offline
Зарегистрирован: 25.08.2016

Согласно вот этому описанию, только у меня на 5 В реле. В схеме еще 1 проводка +5 В не хватает.

http://arduino.ru/forum/apparatnye-voprosy/podklyuchenie-n-channel-12v-relay-shield-module-arduino

oleg185@list.ru
Offline
Зарегистрирован: 25.08.2016

Возможно идет просадка напряжения по +5 вольтам питания в момент коммутации реле, если включить все релюхи, то ток будет более 500 мА, что недопустимо для USB порта компьютера.  Питание на реле надо подавать от других +5В полюбому. Попробуй, может получится. Еще может на плате грязь какая, протри спиртом плату с реле.

oleg185@list.ru
Offline
Зарегистрирован: 25.08.2016

[quote=ConstantinS]

Согласно вот этому описанию, только у меня на 5 В реле. В схеме еще 1 проводка +5 В не хватает.

+5 В или земли не хватает? Земли не видать что то.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Посмотрел даташит. Согласен с коллегой. У этих реле ток даже не 500, а 570mA. А Вы их от ардуины питаете :(

ConstantinS
Offline
Зарегистрирован: 25.08.2016

Подключил как вы рекомедуете отдельно. БП тот же что и питает элмагнитный замок. В схеме землю дорисовал ее не хватало, выше ошибся.

Результат тот же.

Более того, попытался просто позамыкать эл замок через одну из клемм модуля реле. Через несколько срабатываний порт отвалился.

Есть еще один модуль реле, пробовал на нем. Тоже отваливается

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Н априведённой схеме не вижу как подключена Ардуина. От чего она питается-то? И соединена ли её земля с землёй БП и релейнго модуля?

ВН
Offline
Зарегистрирован: 25.02.2016

замок  создает большую эдс самоиндукции при выключении, с ней и нужно бороться. 

Методы, как и с обмоткой реле, только ток тут поболе будет. 

ConstantinS
Offline
Зарегистрирован: 25.08.2016

Ардуина питается от USB. Все земли соеденены.

Земля ардуины соеденена с землей релейного модуля и питанием релейного модуля (дорожка в релейном модуле общая). А питание +5В модуля и +12В замка имеет общую землю.

Плату протер, не помогло.

Надо попробовать другой БП,  есть подозрения что этот чудит. 

Надо попробовать к своему компьютерному подрубить по последней схеме.

BoBo4kA
Offline
Зарегистрирован: 15.01.2016

для исключения проблемы в программной части на ПК можете попробовать отправить что-то через powershell

[System.IO.Ports.SerialPort]::getportnames()  #список портов на пк

$port= new-Object System.IO.Ports.SerialPort COM6,57600,None,8,one #задаем порт
$port.open() #открываем порт
$port.WriteTimeout=5000 #ожидание ответа мс
$port.ReadTimeout=5000 #ожидание ответа мс
$port.IsOpen #проверка, открыт ли порт
$port.WriteLine("Hello!") #отправить в порт
$port.BytesToRead #возвращает кол-во доступных байт для чтения
$port.ReadLine() #читаем с порта
$port.Close() #закрыли порт

работало на вин8.1

по опыту, открытьй порт нельзя открыть )) будет ошибка

oleg185@list.ru
Offline
Зарегистрирован: 25.08.2016

Ну что могу сказать ещё? Длина USB кабеля может быть критичной, попробуй сделать как можно меньше. А без нагрузки точно всё шикарно работает и сбоев никогда не бывает? Если это так, то попробуй сделать следующие этапы: 

1. Подключи питание +12В на плату, нагрузку (замок или что там ещё) в цепь не включай. Попробуй протестировать. Если все ОК, то дальше:

2. Попробуй вместо индуктивной нагрузки подключить лампочку. Протестируй, Если всё ок, то бороться надо с самоиндукцией.

Если на каком то шаге случился сбой, то попробуй поменять полярность, т.е. на плату подавай землю, а +12В на нагрузку. Если это решит проблему, то получается какой то косяк с платой. 

ConstantinS
Offline
Зарегистрирован: 25.08.2016

Попробовано несколько БП, не помогло

Подключена активная нагрузка (автомобильная лампа 21Вт), с ней все работает на всех БП.

Подключен диод к элмагнитному замку, все работает.

Спасибо за советы.

psih0delik
Offline
Зарегистрирован: 01.05.2014

Возможно напишу бред но....

Буквально час назад поборол у себя такую же проблему. Пока тестирую зависнет или нет. В моем случае висла именно ардуинка при открытии электро замка.

Решил проблему таким образом, поставил диод параллельно электромагниту замка, аналогично как на обмотку реле. Добавил еще керамический конденсатор, незнаю зачем, но пусть пока будет ))

 

Попробуйте, может и вам поможет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ConstantinS пишет:

Попробовано несколько БП, не помогло

Подключена активная нагрузка (автомобильная лампа 21Вт), с ней все работает на всех БП.

Подключен диод к элмагнитному замку, все работает.

Спасибо за советы.

Так у Вас импульсные БП, которые без нагрузки не заводятся. Как-то надо было это сразу оговорить. Чёт никто про это и не подумал. Наверное, все считали это самоочевидным. Я на такие БП сразу ставлю мощный резистор, чтобы он минимальную нагрузку ему давал и тогда нет проблем. Например, если хочу использовать для чего-нибудь компьютерный БП, всегда ставлю резистор 25-50 Ом / 50Вт в 5-вольтовую линию и забываю об этой проблеме. Правда, эта нагрузка, понятное дело, бесполезно греет атмосферу и увеличивает этропию. Имейте это в виду на будущее.