Требуется разработка скетча

spectr-m
Offline
Зарегистрирован: 28.08.2016

Требуется разработка скетча:

Поочередное включение 4 силовых реле 220 вольт на определенный промежуток времени, желательно свозможностью регулировки

Сергей

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

p.masyukov - skype/ пиши, звони - договоримся.

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

могу сделать

7808543@gmail.com

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Ну вот совсем от скуки

Подразумеваем такое:

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

интервалы работы каждого реле задаются переменным резистором и отображаются миганием светодиода, чем чаще - тем короче интервал

после выключения первого сразу включается второе. Или интервалы между включениями тоже нужно задавать? А регулировать?

максимальный - 10 секунд, начальное значение равно максимальному. Все задается в #define  в начале программы. Можно хоть 100000 секунд задать.

Компилировал, но не проверял. Компилировал для НАНКИ, Ну на что среда была с вечера настроена ;).

вот текст:

(если подойдет - то самогон у меня свой, то есть крепкое - не нужно, можно пивом ;) )

#define bounce  40

//пин кнопки пуск
#define Start_btn 2

// пины реле включить - подать 0
#define Rel1 3
#define Rel2 4
#define Rel3 5
#define Rel4 6

// аналоговые пины потенциометров задания интервалов
#define Pn1 0
#define Pn2 1
#define Pn3 2
#define Pn4 3

// пины светодиодов индикации интервалов
#define I1 4
#define I2 5
#define I3 6
#define I4 7

   // MAX интервалы в секундах до включения 1-ого реле и далее
#define maxint1    10
#define maxint2    10
#define maxint3    10
#define maxint4    10
//класс для индикации задания интервалов частотой мигания диодов
class IND
  {
    public:
    uint32_t prev;
    uint32_t _maxinter;
    uint32_t inter;
    byte _mypin;
    byte _myval;
    // пин и максимальный интервал времени, индикация - от 1 до 100 миганий в интервал
    IND (byte mypin, uint32_t maxinter) 
       {
        _mypin = mypin;
        _maxinter = maxinter;
        inter = _maxinter;
        pinMode (_mypin, OUTPUT);
        digitalWrite(_mypin,LOW);
        prev = millis();
       
       }
    void go( byte myval)
       {
        uint32_t curt = millis();
        _myval = myval % 100;
        if (_myval != 0) inter = _maxinter / (_myval*2);
        if (curt - prev > inter) 
           {
            digitalWrite (_mypin, ! digitalRead(_mypin));
            prev = curt; 
           }
       }
  };

// настраиваем индикацию, минимум 0.33Гц
IND Ind1(I1,3000);
IND Ind2(I2,3000);
IND Ind3(I3,3000);
IND Ind4(I4,3000);

void setup() {
  
pinMode (Rel1, OUTPUT);
pinMode (Rel2, OUTPUT);
pinMode (Rel3, OUTPUT);
pinMode (Rel4, OUTPUT);
// подразумеваем активный уровень - НИЗКИЙ, так как при вкл питания все вызоды в высокоомном ("Z") состоянии
// поэтому HIGH - то есть все выключено
digitalWrite(Rel1, HIGH);
digitalWrite(Rel2, HIGH);
digitalWrite(Rel3, HIGH);
digitalWrite(Rel4, HIGH);

digitalWrite(Start_btn, HIGH);


}

void loop() {
// запомненное время для кнопки
  static uint32_t old_t_b = 0;
//запомненное время для реле
  static uint32_t old_t_r = 0;
  static uint32_t cur_t = millis();

//значение интервалов в мсек
  static int32_t int1 = maxint1*1000;
  static int32_t int2 = maxint2*1000;
  static int32_t int3 = maxint3*1000;
  static int32_t int4 = maxint4*1000;

// статус - работаем или нет
  static boolean sts = false;
  static boolean bo = false;
  boolean bp = HIGH;
  static boolean obp = HIGH;
// чтение кнопки определение статуса  
bp = digitalRead(Start_btn);
// если изменилось состояние кнопки запомним время изменения
if (bp != obp) {obp = bp; old_t_b = cur_t;bo = false;}
// отметим что истек интервал антидребезга без изменений состояния кнопки
if (cur_t - old_t_b > bounce) bo = true;
// если истек интервал антидребезги и кнопка нажата - меняем состояние статуса вкл/выкл
if (bo && !bp)  {sts = ! sts; old_t_r = cur_t;}

//определяем интервалы (3*старое + новое) / 4 - это усреднение, поскольку значения ацп от переменного резистора - "плавают"

int1 = (3*int1 + map (analogRead(Pn1),0,1023,1,maxint1*1000)) / 4;
int2 = (3*int2 + map (analogRead(Pn2),0,1023,1,maxint2*1000)) / 4;
int3 = (3*int3 + map (analogRead(Pn3),0,1023,1,maxint3*1000)) / 4;
int4 = (3*int4 + map (analogRead(Pn4),0,1023,1,maxint4*1000)) / 4;

// мигаем диодами в соответствии с заданными интервалами, параметр в процентах от максимума

Ind1.go(99 - int1/10/maxint1);
Ind2.go(99 - int2/10/maxint2);
Ind3.go(99 - int3/10/maxint3);
Ind4.go(99 - int4/10/maxint4);

// работаем с реле, собственно главная часть! ;) 

if (sts)
   {
    if      (cur_t - old_t_r > 0               && cur_t - old_t_r <= int1) 
      {
        digitalWrite (Rel1,LOW);
      }
    else if (cur_t - old_t_r > int1            && cur_t - old_t_r <= int1+int2) 
      {
        digitalWrite (Rel1,HIGH);
        digitalWrite (Rel2,LOW);
      }
    else if (cur_t - old_t_r > int1+int2       && cur_t - old_t_r <= int1+int2+int3) 
      {
        digitalWrite (Rel2,HIGH);
        digitalWrite (Rel3,LOW);
      }
    else if (cur_t - old_t_r > int1+int2 +int3 && cur_t - old_t_r <= int1+int2+int3+int4) 
      {
        digitalWrite (Rel3,HIGH);
        digitalWrite (Rel4,LOW);
      }
    else if (cur_t - old_t_r > int1+int2 +int3+int4) 
      {
        digitalWrite (Rel4,HIGH);
        sts =  0;
      }
   }
 
}

 Я тут немножко АшиПок поправил...

spectr-m
Offline
Зарегистрирован: 28.08.2016

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

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

мой ник на gmail.com, например. 

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

Если ошибки есть - сообщество поправит.

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

Если электронная часть вопросы вызывает - так я поясню.

Если еще дисплей хотите или эргономику какую-то особенную - пишите. сюда, Может я, а может еще кто поможет, может за так, а может за деньги.

Тут все от сложности задачи и настроения (степени опьянения) програмиста зависит. ;)

Green
Offline
Зарегистрирован: 01.10.2015

htpicc@gmail.com пишите.

spectr-m
Offline
Зарегистрирован: 28.08.2016

Задача в итоге такая, уточню:

На выставке будет работать макет строительного крана. Цикл: поворот-опускание-подъем-поворот. На приложенном фото изображена временная диаграмма включения исполнительных реле.

Необходимо написать скетч,  в Москве скоммутировать все и и проверить работу в нашем цехе.

Имеем следующие компоненты: https://yadi.sk/i/JEvVffPPuZjTa

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Мегу, реле-шилд и 1602 экранчик вижу, я мелочи не могу разобрать, текстом никак не сможете написать, что это у Вас лежит? Что-то черненькое, синеькое и с проводочками ;) ?

spectr-m
Offline
Зарегистрирован: 28.08.2016

там на фото еще лежат разные коннекторы и разъемы.

Дисплей задействовать не обязательно.

Onkel
Offline
Зарегистрирован: 22.02.2016

 у меня есть плата на 8 выходных реле, все спаяно на одной заводской плате в корпусе на дин рейку, без соплей. У меня дочка делала руку- манипулятор с электромагнитным захватом, почти как у вас А то ведь 220 В и сопли - можно, но не на долго. Я так понимаю, нужно кнопку "старт" и 4 последовательно включаемые реле, так что поставлю кнопку и 4 потенциометра для 4 значений времени. А что писать на индикаторе? Так по идее он и не нужен, к тому же на выставке lcd будет не очень хорошо видно.

По подключению - могу и приехать, я недалеко - в Черноголовке, это вопрос чисто финансовый.  Пишите ydom coбaкa mail.ru , договоримся и решим вопрос. Собственно вот сам модуль

 

spectr-m
Offline
Зарегистрирован: 28.08.2016

Onkel,

написал Вам письмо...

 

Onkel
Offline
Зарегистрирован: 22.02.2016

Да, спасибо, ответил.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Onkel пишет:

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

Ну потениометры - это моя идея, но я не жадный - пользуйтесь ;). Хотя, при наличии экранчика, лучше уж три кнопки:

одна - ПУСК/СТОП - при долгом нажатии, а при коротком - вход в меню/выбор.

две другие - обычные "+" и "-" - навигация по меню и изменение значений.

(можно энкодер с кнопкой - вообще прикольная эргономика получится)

Тогда можно задать аккуратно и длительности фаз работы и длительности пауз. Всего получится 8 переменных в секундах. На потенциометрах - зае...шься крутить.

Опять таки писать почти ничего не надо, Скетчей с меню для 1602 - два вагона и три маленгьких тележки.

==================

Сорри, но я в Раменском живу, но я не набиваюсь, весь сентябрь я буду занят. А паузы - непредсказуемы, поэтому и не хочу брать ответственность.  Вот вчера выдался часок свободный - я код написал, но там пауз нет.

Если что - Онкель поправит или новый напишет.

Onkel
Offline
Зарегистрирован: 22.02.2016

wdrakula пишет:

Ну потениометры - это моя идея, но я не жадный - пользуйтесь ;).

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

s.chechik
Offline
Зарегистрирован: 24.08.2016

Приветствую Вас!

Мне очень нужна Ваша помощь...

Нужно будет по очереди включать 2 твердотельных реле, с возможностью регулировки времени включения каждого отдельно. А так-же нужно регулировать временной промежуток между включением 1 го и 2 го. Хотелось бы регулировать все эти параметры энкодерами, типа таких(http://ru.aliexpress.com/item/1pcs-Rotary-encoder-code-switch-EC11-audio...) либо тактовыми кнопками( 2 шт. - больше и меньше). Очень хотелось бы, чтобы параметры отображались на дисплее. (что то типа этого, кстати уже с кнопками. http://ru.aliexpress.com/item/Free-Shipping-LCD-Keypad-Shield-LCD1602-LCD-1602-Module-Display-for-arduino-ATMEGA328-ATMEGA2560-raspberry-pi/32458411471.html?spm=2114.30010708.3.2.vY0avp&ws_ab_test=searchweb201556_0,searchweb201602_4_10039_10057_10056_10065_10037_10055_10054_10069_301_10059_10033_10058_10032_10017_10070_10060_10061_10052_10062_10053_10050_10051,searchweb201603_7&btsid=21b7fed8-c73b-43f8-b8bc-9cdd76d6557b). Интересует разработка скейтча, или даже полная сборка всего этого дела. За работу готов выслать хорошей самогонки или небольшую кучку денег)). Заранее спасибо!

Onkel
Offline
Зарегистрирован: 22.02.2016

s.chechik пишет:

Приветствую Вас!

Мне очень нужна Ваша помощь...

Нужно будет по очереди включать 2 твердотельных реле, с возможностью регулировки времени включения каждого отдельно. А так-же нужно регулировать временной промежуток между включением 1 го и 2 го. Хотелось бы регулировать все эти параметры энкодерами.... За работу готов выслать хорошей самогонки или небольшую кучку денег)). Заранее спасибо!

нужно больше деталей- диапазон времен, хотя бы примерно. Пишите ydom coбaкa mail.ru

Если нужна полная сборка, то есть готовые модули уже с дисплеем, на дин рейку в корпусе 8 юнитов (115 мм), в корпусе 8 реле или 8 мосфитов или 8 симисторов.

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

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

s.chechik пишет:

Приветствую Вас!

Мне очень нужна Ваша помощь...

Нужно будет по очереди включать 2 твердотельных реле, с возможностью регулировки времени включения каждого отдельно. А так-же нужно регулировать временной промежуток между включением 1 го и 2 го. Хотелось бы регулировать все эти параметры энкодерами, типа таких(http://ru.aliexpress.com/item/1pcs-Rotary-encoder-code-switch-EC11-audio-digital-potentiometer-with-switch-5Pin-handle-length-20mm/32655246773.html?spm=2114.30010708.3.1.AlUp74&ws_ab_test=searchweb201556_0,searchweb201602_4_10039_10057_10056_10065_10037_10055_10054_10069_301_10059_10033_10058_10032_10017_10070_10060_10061_10052_10062_10053_10050_10051,searchweb201603_7&btsid=d8a835b1-1c0f-464c-9cb7-c2719997e2a2) либо тактовыми кнопками( 2 шт. - больше и меньше). Очень хотелось бы, чтобы параметры отображались на дисплее. (что то типа этого, кстати уже с кнопками. http://ru.aliexpress.com/item/Free-Shipping-LCD-Keypad-Shield-LCD1602-LCD-1602-Module-Display-for-arduino-ATMEGA328-ATMEGA2560-raspberry-pi/32458411471.html?spm=2114.30010708.3.2.vY0avp&ws_ab_test=searchweb201556_0,searchweb201602_4_10039_10057_10056_10065_10037_10055_10054_10069_301_10059_10033_10058_10032_10017_10070_10060_10061_10052_10062_10053_10050_10051,searchweb201603_7&btsid=21b7fed8-c73b-43f8-b8bc-9cdd76d6557b). Интересует разработка скейтча, или даже полная сборка всего этого дела. За работу готов выслать хорошей самогонки или небольшую кучку денег)). Заранее спасибо!

код могу написать

7808543@gmail.com

Novichok01
Offline
Зарегистрирован: 12.09.2016

Доброго времени суток! Нужна огромная помощь за вознаграждение в написании скетча и эмуляции круглого энкодера принтера Epson для создания планшетного принтера. Сам я в этом ничего не смыслю, поэтому буду рад любой помощи!)

Onkel
Offline
Зарегистрирован: 22.02.2016

Как раз вчера разбирал парочку епсонов, там классный энкодер, оставил себе пластиковый полупрозрачный  диск от него для позиционирования головки микроскопа. А я еще удивился-  почему не шаговики стоят?  Эмулятор энкодера сделаю, нужно более детальное задание - с чего управлять и  другие детали проекта. Пишите ydom@mail.ru  , решим вопрос.

Novichok01
Offline
Зарегистрирован: 12.09.2016

Аж дар речи потерял) обязательно напишу, правильно сформулирую и напишу!

botasan
Offline
Зарегистрирован: 24.08.2016

Wdrakula как с Вами можно связатся ?

Владимир85
Offline
Зарегистрирован: 22.09.2016

Добрый вечер.

свяжитесь со мной пожалуйста по почте 6645339@gmail.com

Киньте туда свой номер телефона, обсудим тз. 

Нужна ваша помощь.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Если это мне, то выше написано, что моя почта это мой ник на жмейле.