Подключение двух индуктивных концевых переключателей к ардуино

Grandistok
Offline
Зарегистрирован: 13.08.2017

Доброго дня друзья, имеется mega 2560 и два индуктивных концевых переключателя типа LJ18A3-2-Z/BX оба датчика запитаны от внешнего источника 5в. Суть ситуации в том что плока датчики не подключены к ардуино оба работают четко (подсносишь метал датчик срабатывает, загарается светодиод на нем). Но кода оба датчика подключены к плате один работает нормально а при срабатывании воторго срабатывает и первый. В чем может быть дело? Я чего то не знаю или упускаю?

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

В 32 строке кода явная ошибка. И резистор R2 по мне так больно маленький.

Grandistok
Offline
Зарегистрирован: 13.08.2017

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

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

Grandistok пишет:

В коде проблемм нет, 

Это кто Вам сказал?

Grandistok пишет:

Не могу понять как тут видео вставить для наглядности?

Никак не надо. Вставляйте код и схему. Без этого разговор ни о чём.

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

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

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

vvadim пишет:

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

Я бы с радостью, но ...

Grandistok
Offline
Зарегистрирован: 13.08.2017

Схема

Код

// Скетч станка
//Клавиатурра подключенна к выходам со 2 по 9
//Реле подключенны к выходам 31-41




#include <Keypad.h> // подключаем нашу библиотеку

const byte ROWS = 4; //число строк у нашей клавиатуры

const byte COLS = 4; //число столбцов у нашей клавиатуры

const int rel1Pin = 31; //реле 1 пин 31
const int rel2Pin = 33; //реле 2 пин 33
const int rel3Pin = 35; //реле 3 пин 35
const int rel4Pin = 37; //реле 4 пин 31
const int rel5Pin = 39; //реле 5 пин 33
const int rel6Pin = 41; //реле 6 пин 35
const int dindv = 22; //датчик индуктивности 1 пин 22
const int dindn = 53; //датчик индуктивности 1 пин 53
boolean statusrele = false;;  //Прерменная для храниния состояния статуса реле 1
int flag; //Переменная для хранения статуса движения по датчикам индуктивности



char hexaKeys[ROWS][COLS] = {

{'1','4','7','*'}, // здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования

{'2','5','8','0'},

{'3','6','9','#'},

{'A','B','C','D'}

};

byte rowPins[ROWS] = {5, 4, 3, 2}; //к каким выводам подключаем управление строками

byte colPins[COLS] = {9, 8, 7, 6}; //к каким выводам подключаем управление столбцами

//initialize an instance of class NewKeypad

Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){

Serial.begin(9600);

pinMode(rel1Pin, OUTPUT);
pinMode(rel2Pin, OUTPUT);
pinMode(rel3Pin, OUTPUT);
pinMode(rel4Pin, OUTPUT);
pinMode(rel5Pin, OUTPUT);
pinMode(rel6Pin, OUTPUT);
pinMode(dindv, INPUT);
pinMode(dindn, INPUT);


}

void loop(){

char customKey = customKeypad.getKey();

if (customKey)
{
Serial.println(customKey);
}

//Пункт 1
if (customKey == '2')
{
 //flag=0; //Присваеваем флагу нейтральное значение
    while (customKey != '4')
    {
      customKey = customKeypad.getKey();
      boolean val1 = digitalRead(dindv); 
      if (!val1)
       {
        flag=1;
       }

       boolean val2 = digitalRead(dindn); 
      if (!val2)
       {
        flag=2;
       }

       if (flag == '1')
        {
         digitalWrite(rel1Pin, HIGH);
        }

        if (flag == '2')
        {
         digitalWrite(rel1Pin, LOW);
        }
    Serial.println(customKey);
    Serial.println(val1);
    Serial.println(val2);
    }

}
 


//Пункт 2
if (customKey == '1')
{
 digitalWrite(rel2Pin, HIGH);
 delay(1000);
 digitalWrite(rel2Pin, LOW);
}

//Пункт 3
if (customKey == '*')
{
 digitalWrite(rel3Pin, HIGH);
 delay(1000);
 digitalWrite(rel3Pin, LOW);
}

//Пункт 4
if (customKey == 'C')
{
 digitalWrite(rel4Pin, HIGH);
 delay(1000);
 digitalWrite(rel4Pin, LOW);
}

//Пункт 5
if (customKey == '3')
{
 digitalWrite(rel5Pin, HIGH);
 delay(1000);
 digitalWrite(rel5Pin, LOW);
}

//Пункт 6
if (customKey == '#')
{
 digitalWrite(rel6Pin, HIGH);
 delay(500);
 digitalWrite(rel6Pin, LOW);
 delay(500);
  digitalWrite(rel6Pin, HIGH);
 delay(500);
 digitalWrite(rel6Pin, LOW);
 delay(500);
  digitalWrite(rel6Pin, HIGH);
 delay(500);
 digitalWrite(rel6Pin, LOW);
 delay(500);
}

}

 

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

Датчики подключены к пинам 53 и 51, а в скетче прописано 53 и 22. С чего бы этому работать?

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

Да и код какой-то дикий. Сразу бросается в глаза переменная flag

1.
В строках 82 и 88 Вы присваиваете flag 1 и 2 соответсвенно. А в строках 91 и 96 свравниваете её с '1' и '2'. По-Вашему 1 и '1' - одно и тоже? Боюсь Вас разочаровать - таки нет. Значит, строки 93 и 98 не будут выполняться никогда.
 
2.
Переменная flag получает знаение только в строках 82 и 88, а используется в строках 91 и 96. Это значит, что она может быть использована до того, как получит хоть какое-нибудь значение.
 
Остальное не смотрел, это первое, что резануло.
Grandistok
Offline
Зарегистрирован: 13.08.2017

Код косячный не спорю, это мой первый опыт работы с ардуиной. То что идет как пункт 1 вообще еще толком не отлаживалось. Да забейте блин вы на код, я его выложил тк сказали, оно себя ведет так да же НА ВЫКЛЮЧЕНОЙ плате, т.е. когда на нее да же ПИТАНИЕ не подключено, при чем тут код? Тут что то аппаратное но я не могу понять что. Движок этого форума поддерживает вставки видео с ютуба? У нас разговор из разряда "я вам про блин, вы мне про оладушек". Проще один раз показать чем сто раз пытаться объяснить.

Вот ссылка на ютуб https://youtu.be/kTTrLooPops

Просто посмотрите и все станет наглядно и понятно.

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

Датчики подключены к одним пинам, а в коде прописаны другие - и забить? ну, тогда сами отлаживайтесь, Вам виднее, как это надо делать.

Grandistok
Offline
Зарегистрирован: 13.08.2017

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

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

Ваша беда в том, что Вы лучше знаете как и что делать - так делайте сами, чего сюда-то пришли? Код мог бы помочь посмотреть что там происходит, но Вам этого не нужно - Вам достаточно видео. Ну, что ж, успехов!

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

Землю источника питания датчиков соедените с землей ардуино

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

nikolaki пишет:

Землю источника питания датчиков соедените с землей ардуино

Землю соедините с Луной.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

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

vvadim пишет:

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

Я бы с радостью, но ...

так сломайте пару приборов, делов то )))

 

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

Grandistok пишет:

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

Вы попробовали соеденить минус источника питания датчиков с минусом питания ардуины? Или Вам без толку что-то советовать?

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

ua6em пишет:

так сломайте пару приборов, делов то )))

И что? Сделать шар и ехать в Сирию? Чего я там забыл? Жару не люблю.

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

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

Сделать шар и ехать в Сирию? Чего я там забыл? Жару не люблю.

можно на Донбасс ихтамнетом... только мамке не говори - пусть сюрприз будет.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Похоже все пользователи хрустальных шаров(а ардуинщикам это сильно касается). https://www.youtube.com/watch?v=R92UcImcb8I

Grandistok
Offline
Зарегистрирован: 13.08.2017

Ок друзья, вняв саветам более всеведующих, переделал схему питания датчиков. Теперь это выглядит вот так:

Тоесть выкинул внешний источник питания вобще, плата питается по USB от ноутбука. Тоеть как я понял покурив интернет, на VIN должно быть как раз 5 вольт. В результате один из датчиков работает нормально, а на втором светодиод горит не переставая, т.е. он в сотоянии "сработал". Если перекинуть местами контакты датчиков то ситуация светится начинает первый а второй работает нормально, тоетсь это не брак отделтного датчика. Чувствуя себя идиотом терзаясь мыслью "А может правда дело в скетче?" залил такой код

const int relPin = 31;

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

void loop() {
    digitalWrite(relPin, HIGH);
    delay(1000);
    digitalWrite(relPin, LOW);
    delay(3000);
}

Я не шучу, реально залил програмку которая тупо щелакает одним из реле. Результат не изменился. Т.е. дело не в кривой программе. Кто еще какую мысль может подкинуть?

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

кнопки и матрицы здесь #403

 

Grandistok
Offline
Зарегистрирован: 13.08.2017

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

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

Grandistok пишет:

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

ок. у тебя матрица кнопок и две кнопки(индуктивные датчики) что есть это как не комплект, который генерит исходящие сигналы входящие в дуино?

выйди из сумрака и сформулируй, что у тебя не получается?

датчики глючат?: отладь работу датчика в простой схеме "источник тока - датчик - светодиод".

не знаешь, что глючит?: замени датчики на две кнопки и отлаживай код.

*ссылку на библиотеку я тебе дал.

Grandistok
Offline
Зарегистрирован: 13.08.2017

Пожалуйста, вся боль в одном фото

Что может быть проще? Два провода на питание, два провода входящие сигналы. Видите на одном из датчиков горит светодиод? Он должен загораться если к датчику поднести метал. А он гад горит все время, просто включил плату и все он загорелся, те он считает что сработал. И все равно в какой порт платы их подключать, будет этот порт входом или выходом, он горит и все. Вот я и пытаюсь понять почему он так себя ведет. Да я могу подключить кнопки и отладить код, а толку? Как только я подключу в место кнопок датчики начнется чехорда. И еще раз повторяю от кода это не зависит. Забудим на минуту про код, допустим я просто подключил все так как на фото и код еще писать да же не начал.

ПОЧЕМУ ЭТОТ ГАД ГОРИТ вот что я не могу понять.

Grandistok
Offline
Зарегистрирован: 13.08.2017

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

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

Grandistok пишет:

 

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

ок.

подключи к одному датчику просто питание, к дуино не подключай - проверь на метал.

проверь второй датчик аналогично.

*кстати, какое напряжение питания датчиков?

nevkon
Offline
Зарегистрирован: 20.01.2015

Хорошо, делай тогда так: оставь один датчик. Подключи его сначала к одному входу, проверь. Затем подключи ко второму входу и снова проверь. Оба варианта работают?

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

nevkon пишет:

Хорошо, делай тогда так: оставь один датчик. Подключи его сначала к одному входу, проверь. Затем подключи ко второму входу и снова проверь. Оба варианта работают?

нафиг ему датчики подключать, если они со встроенной индикацией?

один из датчиков он походу спалил перепутав питание и он постоянно светит светодиодом.

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

Датчики как подлючены? Коричневый-плюс питания , синий - минус питания , черный выход? А то у вас как-то про это нигде ни слова. И да ,диапазон питания таки 6-36VDC.Хотя и от 5- ти должен работать  без всяких.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

от 5 работать не должен )))

 

Grandistok
Offline
Зарегистрирован: 13.08.2017

Клапауций 112 пишет:

Grandistok пишет:

 

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

ок.

подключи к одному датчику просто питание, к дуино не подключай - проверь на метал.

проверь второй датчик аналогично.

Если датчики к дуино не подключены все работает отлично.

Grandistok
Offline
Зарегистрирован: 13.08.2017

nevkon пишет:

Хорошо, делай тогда так: оставь один датчик. Подключи его сначала к одному входу, проверь. Затем подключи ко второму входу и снова проверь. Оба варианта работают?

да

Grandistok
Offline
Зарегистрирован: 13.08.2017

Клапауций 112 пишет:

nevkon пишет:

Хорошо, делай тогда так: оставь один датчик. Подключи его сначала к одному входу, проверь. Затем подключи ко второму входу и снова проверь. Оба варианта работают?

нафиг ему датчики подключать, если они со встроенной индикацией?

один из датчиков он походу спалил перепутав питание и он постоянно светит светодиодом.

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

Grandistok
Offline
Зарегистрирован: 13.08.2017

nikolaki пишет:

Датчики как подлючены? Коричневый-плюс питания , синий - минус питания , черный выход? А то у вас как-то про это нигде ни слова. И да ,диапазон питания таки 6-36VDC.Хотя и от 5- ти должен работать  без всяких.

Да
 
Коричневый +
 
Синий -
 
Черный сигнальный
 
Запитан от дуины значит от 5 вольт
Grandistok
Offline
Зарегистрирован: 13.08.2017

ua6em пишет:

от 5 работать не должен )))

Но в иннете куча примеров что работает.
 
 
Хотя для чистоты эксперименты наверное дествительно надо попробовать от 6-34V может действительно двум датчикам не хватает питания?
nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

Попробуйте поставить резисторы на 5-10кОм  между черным и синим проводом на каждом датчике.

SLKH
Offline
Зарегистрирован: 17.08.2015

Grandistok пишет:

ua6em пишет:

от 5 работать не должен )))

Но в иннете куча примеров что работает.
 
 
и в чем тогда пробдема? пусть в инете и работают.
 
если паспортное питание 6 - 34, от 5 вольт устройство работать не обязано. хотя и может, по своему желанию, иногда.
 
SLKH
Offline
Зарегистрирован: 17.08.2015

nikolaki пишет:

Попробуйте поставить резисторы на 5-10кОм  между черным и синим проводом на каждом датчике.

между коллектором npn и эмиттером - нафига?

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

SLKH пишет:

nikolaki пишет:

Попробуйте поставить резисторы на 5-10кОм  между черным и синим проводом на каждом датчике.

между коллектором npn и эмиттером - нафига?

Да вы , возможно , правы . Но 10кОм вреда не нанесут.

А да , NPN транзистор. 

вот тут http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=5101#p123667 уже писали о таком датчике.

У меня с года два назад подключение  четырех датчиков к атмега 328  не вызывало совершенно ни каких проблем. По сей день работает устройство где-то. И таки от 5 вольт. Но как правильно писали выше  - нужно запитывать от 6-34VDc

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

ну, что ТС?

хватило у тебя мозгов проверить датчики без Дуино и при нормальном напряжении питания?

SLKH
Offline
Зарегистрирован: 17.08.2015

nikolaki пишет:

Да вы , возможно , правы . Но 10кОм вреда не нанесут.

Вреда - нет. Ничего не сгорит.

А что там прочитает при таком включении digitalRead - это его проблемы. Пусть догадывается про этот резистор и соображает, какие напряжения соответствуют 0 и 1.

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

SLKH пишет:

nikolaki пишет:

Да вы , возможно , правы . Но 10кОм вреда не нанесут.

Вреда - нет. Ничего не сгорит.

А что там прочитает при таком включении digitalRead - это его проблемы. Пусть догадывается про этот резистор и соображает, какие напряжения соответствуют 0 и 1.

Судя по всему ТС пока не в состоянии даже обычную кнопку подключить. У него в руках эти датчики и только он "знает" всю "правду".

Будем надеяться что он решит эту  "сверхтяжелую "для него задачку  и расскажет нам.

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

тема свечения встроенного светодиода одного датчика не раскрыта.

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

SLKH
Offline
Зарегистрирован: 17.08.2015

Клапауций 112 пишет:

тема свечения встроенного светодиода одного датчика не раскрыта.

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

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

2. На фото в  #24 и на картинке #20 смутно просматривается подключение питания датчика к GND и VIN - при питании от USB! Что там доходит до датчика через линейный стабилизатор в реверсном направлении? 

10 суток расстрела - слишком мягкое решение.

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

SLKH пишет:

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

2. На фото в  #24 и на картинке #20 смутно просматривается подключение питания датчика к GND и VIN - при питании от USB! Что там доходит до датчика через линейный стабилизатор в реверсном направлении? 

1. нифига

Grandistok пишет:

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

2. завтра в военкомат с белыми тапками - звездуешь служить на Ростов.