Блок питания питающий 2 железки и вытекающие проблемы.

Dima85
Offline
Зарегистрирован: 07.01.2013

Имеется блок питания 12v - 1mA.

Он питает Arduino Mega, в свою очередь к нему подключены Relay + HC-SR04 + Internet плата.

И написан вот такой код, отрыков:

void loop() {
if(millis()-lastPingTime>50){ // наша замена delay(50)

digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера
delayMicroseconds(10); // Удерживаем 10 микросекунд
digitalWrite(Trig, LOW); // Затем убираем
time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm=time_us/58; // Пересчитываем в сантиметры
Serial.println(distance_sm); // Выводим на порт
   
if (distance_sm<15 && distance_sm>1) {
   digitalWrite(Relay_1, HIGH);// off
}
if (distance_sm<150 && distance_sm>15) {
    digitalWrite(Relay_1, LOW);// on
} 

   lastPingTime=millis(); // запомнили когда мы последний раз датчик проверяли
 }

Этот код включает и выключает лампочку.

Он замечательно работает, но как только я подключаю или отключаю моторчик (от блока митания я вывел еще 2 провода которые его и питают) HC-SR04 на несколько секунд начинает выдавать неправильные данные (заниженные) и происходит включение, выключение лампочки.

Подскажите пожалуйста из за чего это происходит и как с этим бороться?

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Возможно, моторчик просаживает напряжение настолько, что происходит перезагрузка ардуины... Для диагностики добавьте в цикл setup несколько миганий светодиодом.

leshak
Offline
Зарегистрирован: 29.09.2011

Relay - слишком общно. Способов подключить неправильно релюху - тысяча и один. Что за Relay? Как подключали?

Совет про мигания диодом в setup() - попробуйте. 

Но, раз он вам глюки дает и при выключении мотора, то больше похоже на помехи в питании.

Вот можете на сон грядущий почитать про руление релешками

http://easyelectronics.ru/upravlenie-moshhnoj-nagruzkoj-postoyannogo-tok...

Dima85
Offline
Зарегистрирован: 07.01.2013

Спасибо за советы. Буду дома, проверю.

Реле купил здесь: http://www.ebay.com/itm/270984776686?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

Подключение релюшки:

#define Relay_1 9 // Arduino Digital I/O pin number
#define Relay_2 8

void setup() {

pinMode(Relay_1, OUTPUT);
pinMode(Relay_2, OUTPUT);

digitalWrite(Relay_1, HIGH);// off
digitalWrite(Relay_2, HIGH);// off

 

leshak
Offline
Зарегистрирован: 29.09.2011

Ну кусок кода - это хорошо. Но, в данном случае, под подключением имелось ввиду "что куда подключили". Схема подключения.

Особенно "от чего моторы питаются". От 5v пина или от vin?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>Имеется блок питания 12v - 1mA.<<

А чего вы хотите от блока на 1mA ? Его мегаомным резюком просадить можно.

Если серьезно , то ваше питание не расчитано на ту нагрузку какую вы ему даете. Скорее всего ваша схема потребляет приличный ток, отсюда и имеем просадку питающей напруги.

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

Если просадки/помехи небольшие, то верное средство - кондер электролит 16-25в 1000-1600мкф параллельно питанию всей схемы.

Ну можно еще включить кондер керамический 0.1мкф так же ему в параллель. А по хорошему нужно разбираться с вашей схемой и вашими нагрузками.

Мое предварительное заключение - слабый блок питания (его максимальный ток явно меньше 0.5А) , непосильная для него нагрузка и отсутствие фильтров по питанию.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Как проверить заявленную мощьность БП.

Приобретаем два резистора. 24 Ома и 12 Ом , мощьность - 5вт. Вообще то нужно около15 вт , но в наше время сложно найти такие резисторы в свободной продаже ( раньше были советские МЛТ и т.д. на такую мощьность). Картковременное превышение мощьность в 2-2.5 раза допустимо.

Проверку нужно производить в два этапа. Сначала проверяем его в половину допустимой мощности , потом в полную.

Проверка в половину заявленной мощности БП на 1А 12в.

Подключаем резистор 24 Ома параллельно выходу БП ( одна нога резистора к плюсу, другая к минусу). Измеряем ток , включив амперметр (мультиметр) в разрыв цепи резистора и БП. Убеждаемся что ток примерно 0.5А (если 300-400 то дальнейшую проверку можно не производить все уже ясно). Теперь измеряем напряжение на  выводах резистора. Если там меньше 11в , то реальная мощьность явно ниже заявленной. Если 11-12в то пререходим ко второму этапу.

Ставим резистор 12 Ом  и повторяем все вышеперечисленые шаги.

Падение напруги на данных резисторах незначительное. 

Все производить максимально быстро, т.к. при задержке сгорит резистор а может быть и БП.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

nestandart пишет:

Приобретаем два резистора. 24 Ома и 12 Ом , мощьность - 5вт. Вообще то нужно около15 вт , но в наше время сложно найти такие резисторы в свободной продаже ( раньше были советские МЛТ и т.д. на такую мощьность).

Можно разобрать какой-нибудь нагреватель старого фена или утюга... Или автомобильную лампочку использовать: на фаре - порядка 4 ампер, на поворотники (20W) - в районе ампера.