Помогите пожалуйста подключить полевик

Pashtet
Offline
Зарегистрирован: 30.06.2016

Добрый день.

Пытаюсь собрать подсветку (2 ИК-датчика, датчик освещенности, светодиоды), если вместо полевика поставить просто диод - работает, с полевиком нет - при включении лента светит постоянно ни на что не реагируя.

 

Решил проверить просто полевик по схеме:

Такое ощущение, что при включении arduino Drain и Sourse контакты полевика постоянно замкнуты, при выдергивании 4 ноги диод тухнет.

Попробовал прописать в коде, что нужно принудительно потушить полевик - бесполезно, как только подаешь питание светит на полную и постоянно.

 

В чем может быть дело? 

Заранее огромное спасибо.

 

int relayPin = 4;  //реле пин

void setup()
{
  pinMode(relayPin, OUTPUT);
}

void loop() 
{
digitalWrite(relayPin, LOW);
delay(100000);  
}

 

Pashtet
Offline
Зарегистрирован: 30.06.2016

сопротивление 0,5 ватта

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

А зачем Вы его задом наперёд включили?

IRF5305 - это же P-канальный транзистор, а Вы включили его как N-канальный.

P-канальный транзистор включается так:

Исток - на питание
Сток - на нагрузку и далее (от нагрузки)  на землю.

Для открытия надо затвор положить на землю, а для закрытия, соответсвенно притянуть к питанию.

И кстати, чтобы он не открывался на время включения Ардуино, подтягивающий резистор (у Вас на сехеме в кружочке) направьте от затвора не к земле, а к питанию.

Или поменяйте транзистор на N-канальный, или включите как положено.

P.S. Кстати, проверьте, жив ли ещё транзистор.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ЕвгенийП пишет:

А зачем Вы его задом наперёд включили?

я приказал - ракеты должны падать

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Pashtet пишет:

сопротивление 0,5 ватта

Неправда, сопротивление не измеряется в ваттах. Мощность резистора 0,5 ватт - это да.

Pashtet
Offline
Зарегистрирован: 30.06.2016

С такой схемой всё аналогично.

Pashtet
Offline
Зарегистрирован: 30.06.2016

А мог сдохнуть полевик от неверного подключения?

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

Pashtet пишет:

А мог сдохнуть полевик от неверного подключения?

Конечно, я же Вам писал

ЕвгенийП пишет:

P.S. Кстати, проверьте, жив ли ещё транзистор.

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

Pashtet
Offline
Зарегистрирован: 30.06.2016

 

Проверил транзистор по 

http://elektrik24.net/instrumentyi/izmeritelnyie/multimetr/kak-proverit-polevoj-tranzistor.html

На верхней правой картинке у меня показывает 100 вместо 243, в остальном идентично.

Какой можно взять N-транзистор для нагрузки 45 ватт (в одном случае 5 метров ленты по 0,9 ватт, во втором 60 модулей по 0,72 ватта)

и можно ли подключить по схеме? (совсем запутался с подключением "-" и там, откуда его можно взять)

 

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

Давайте, Вы сначала дожмёте ленту, а потом будете дополнительные штучки цеплять, ладно. Лента-то работает?

Почему подтягивающий резистор на землю идёт?

Кстати, у этого модуля справа у Вас перепутаны GND и сигнал.

По поводу N-канального транзистора, ну, какой там ток? Вот и смотрите по их параметрам.

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

так Вы месяц будете это делать.

Скажите, у Вас есть возможность сейчас быстро в режимк чата обмениваться сообщениями? если есть, давайте дожмём. Готовы?

Pashtet
Offline
Зарегистрирован: 30.06.2016

Сама лента рабочая (если Вы имели ввиду её работоспособность).

Подтягивающий транзистор (100К?) идёт на землю, как это было на изначальной схеме ИгорьК.  А как его нужно расположить?

 

Датчик освещенности у меня VCC/GND/DO, а на фото с немного другим расположением контактов (как Вы и говорите - перепутанными).

 

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

Pashtet пишет:

Подтягивающий транзистор (100К?) идёт на землю, как это было на изначальной схеме ИгорьК.  А как его нужно расположить?

Блин, ну я же писал, к питанию его надо.

Короче, на мой прошлый вопрос, Вы готовы сейчас быстро, в режиме чата всё дожать или сейчас Вы заняты?

Pashtet
Offline
Зарегистрирован: 30.06.2016

Схему датчика освещенности переделал (мой косяк, но в реальности подключено верно)

 

Конечно готов!

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

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

Значит так, если готовы, то поехали.

1. Не валим всё в кучу. Добиваемся, чтобы заработало по кусочкам. И ОТВЕЧАЕМ на вопросы. Вы мне до сих пор не ответили работает ли лента.

№1 У Вас лента работает как Вы хотите?

Если нет, то

1) выбросили ВСЁ. Оставили только источник 12В, ленту, транизистор и резистор 100ом. ВСЁ остальное в сторону.

2) собрали вот такую схему.

У транзистора сверзу Исток, снизу - Сток. Светодиод - это Ваша лента.

Выключатель тут "образный". Можете оставить провод на монтажке, который будете втыкать то в +12, то в землю.

как собрали,

3) включили переключатель на землю - должно гореть (а как у Вас?)

4) включили переключатель на +12В - должно погаснуть (а как у Вас?)

Давайте, жду ответов.

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

Вы еще здесь?

Pashtet
Offline
Зарегистрирован: 30.06.2016

Извиняюсь за задержку с ответом.

 

В результате не верного подключения сдох полевик(пробовать дальше просто не было смысла, они оба не работали ни по каким схемам). Купил сегодня IRL540NPDF, подключил, заработало.

 

Так же в результате эксперементов были угроблены 4 и/или 7 разъём (сейчас работает по схеме ниже, как только вешаем мосфет и IR как на схеме в #13 посте и меняем код - работать отказывается).

#include <Arduino.h>
#include <stdint.h>

#define   PIN_MOTIONONE 2                    // Ноги для ИК датчиков


#define PIN_NIGHT A0                    // Нога для сенсора освещенности
#define PIN_PWM 3                       // Сюда вешаем MOSFET
#define TIME_DELAY_LIGHT 15000            // Задержка включения подсветки
#define SENSOR_NIGHT 1000                    // Если выше - то ночь;
#define LIGHT_NIGHT 35                    // Яркость свечения ленты
#define DELAY_TO_NEXT_LIGHT 30            // Плавность изменения света

bool nightNow = false;                    // Флаг ночь
bool gotMotion = false;                    // Флаг движение
bool lightIsSwitchedOn = false;            // Флаг включения подсветки

uint8_t sensorA=0, sensorB = 0, sensorStep = 0; // Разные счетчики
int sensorNow;

unsigned long timeToNextDecision = 0;    // Когда принять решение о выключении

void setup()
{

}

void loop()
{

    ////////////////////////  Check day or night //////////////////////////////////

            if (!lightIsSwitchedOn) {                // Проверяем день/ночь только если подсветка выключена
                sensorNow = analogRead(PIN_NIGHT);    // Читаем сенсор освещености
                if (sensorNow > SENSOR_NIGHT) {        // Если его показания больше, чем установлены для ночи
                    sensorA++;                        // Увеличиваем счетчик ночных проверок
                }
                if (sensorNow > (SENSOR_NIGHT - 5)) { // Если сенсор больше, чем установлено для ночи минус 5 единиц
                    sensorB++;                        // Увеличиваем счетчик дневной проверки
                }
                sensorStep++;                       

                if (sensorStep == 20) {                // Если 20 раз проверили освещенность
                    if (sensorA >18) {                // и ночной сенсор оказался 18 раз выше установленного -
                        nightNow = 1;                // это ночь
                        digitalWrite(13,1);            // Зажигаем диод на плате
                    }
                    if (sensorB == 0) {                // Если дневной счетчик ни разу не увеличился
                        nightNow = 0;                // Сейчас день
                        digitalWrite(13,0);            // Гасим диод на плате
                    }                                // Обнуляем счетчики для новой проверки
                    sensorStep = 0; sensorA = 0; sensorB = 0;
                }
            }
    ///////////////////////// Night now ////////////////////////////////////

            if (nightNow) {                            // Если сейчас ночь
                                                    // И сработал любой из датчиков движения
                                                    // устанавливаем флаг обнаружения движения
                if ( (digitalRead(PIN_MOTIONONE))) gotMotion = true;
                                                    // Если подсветка не включена и обнаружено движение
                if((!lightIsSwitchedOn) && (gotMotion)) {
                    for(int i = 0; i <LIGHT_NIGHT; i++) {    // Плавно включаем подсветку
                        analogWrite(PIN_PWM, i);
                        delay(DELAY_TO_NEXT_LIGHT);
                    }
                    lightIsSwitchedOn = 1;            // Устанавливаем флаг о включении
                    gotMotion = 0;                    // Сбрасываем флаг обнаружения движения
                                                    // Вычисляем время, когда будем проверять что подсветку пора выключать
                    timeToNextDecision = millis() + TIME_DELAY_LIGHT;
                }
                                                    // Если движения нет, подсветка включена и наступило время ее выключать
                if((!gotMotion) && (lightIsSwitchedOn) && (millis() > timeToNextDecision)){
                    for(int i = LIGHT_NIGHT; i >0; i--) { // Плавно выключаем
                        analogWrite(PIN_PWM, i);
                        delay(DELAY_TO_NEXT_LIGHT);
                    }
                    analogWrite(PIN_PWM, 0);
                    lightIsSwitchedOn = 0;                // Сбрасываем флаг включенной подсветки
                    timeToNextDecision = 0;                // Обнуляем время следующей проверки отсутствия движения
                }                                        // Если подсветка включена и движение продолжвается
                if((gotMotion) && (lightIsSwitchedOn) && (millis() > timeToNextDecision)) {
                    timeToNextDecision = millis() + TIME_DELAY_LIGHT; // Устанавливаем новое время проверки отсутствия движения
                    gotMotion = 0;
                }

            }
}
 

 

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

Ну, блин, ну сказать же нужно было, я же час сидел Вас ждал вчера.

Pashtet
Offline
Зарегистрирован: 30.06.2016

Меня жена из-за компа вышвырнула в ультимативном порядке, к родителям пора было идти. Я даже написать ничего не успел.

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

:-)

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

На будущее, вот тут типа "Полевой транзистор для чайников". И как включить, и как расчитать какой нужен.

Pashtet
Offline
Зарегистрирован: 30.06.2016

Похоже я влип.

Через ардуино будет проходить 48 ватт нагрузки (т.е. почти 4,5 ампера)  (67 светодиодных модуля по 0,72 ватта).

Выдержит ли ардуино такой ток в своей внутренней цепи?

Или для такой нагрузки нужно было всё городить не на базе мосфета, а плате с одноканальным реле?

Смогу ли я использовать керамическое реле для запитывания светодиодов? (при этом, разумеется, не получится плавно зажигать диоды)

vvadim
Offline
Зарегистрирован: 23.05.2012

Pashtet пишет:

Похоже я влип.

Через ардуино будет проходить 48 ватт нагрузки (т.е. почти 4,5 ампера)  (67 светодиодных модуля по 0,72 ватта).

Выдержит ли ардуино такой ток в своей внутренней цепи?

Или для такой нагрузки нужно было всё городить не на базе мосфета, а плате с одноканальным реле?

Смогу ли я использовать керамическое реле для запитывания светодиодов? (при этом, разумеется, не получится плавно зажигать диоды)

 это твердотельное реле
оно для переменного тока, ты вообще ничего смотреть не хочешь)))

Pashtet
Offline
Зарегистрирован: 30.06.2016

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

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

А чем Вас полевой транзистор не устроил? Только питать его, разумеется надо, не через ардуиновские дорожки. Вон, посмотрите нижнюю левую схему на стр.3 и гоняйте там стролько ампер, сколько Ваш транзистор выдержит.

Pashtet
Offline
Зарегистрирован: 30.06.2016

Мосфет устроил, но с питанием через дорожку ардуино как раз засада. Можно ли поменять схему как на схеме — "-" от БП пойдёт сразу на "S" мосфета?

И будет ли нормально работать узел подтяжки с резистором 100к

 

На изначальной схеме автора(ИгорьК) была NANO, там мы её запитываем (при 12в) через VIN с GND и можем взять кабель хоть 8мм сечением.

Pashtet
Offline
Зарегистрирован: 30.06.2016

Всё заработало.