Требуется разработка скетча
- Войдите на сайт для отправки комментариев
Вс, 28/08/2016 - 11:14
Требуется разработка скетча:
Поочередное включение 4 силовых реле 220 вольт на определенный промежуток времени, желательно свозможностью регулировки
Сергей
p.masyukov - skype/ пиши, звони - договоримся.
могу сделать
7808543@gmail.com
Ну вот совсем от скуки
Подразумеваем такое:
реле включаются низким уровнем через транзисторный инвертор (надеюсь понятно, как включить?)
интервалы работы каждого реле задаются переменным резистором и отображаются миганием светодиода, чем чаще - тем короче интервал
после выключения первого сразу включается второе. Или интервалы между включениями тоже нужно задавать? А регулировать?
максимальный - 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; } } }Я тут немножко АшиПок поправил...
а как можно было бы с вами связаться,для чуть более конкретного обсуждения?)
мой ник на gmail.com, например.
Но непонятно - зачем? Код я выложил, про пиво - шутка, за деньги работать - я стар уже.
Если ошибки есть - сообщество поправит.
Если что-то добавить или изменить - пишите, конечно, но можно и прямо тут все решить.
Если электронная часть вопросы вызывает - так я поясню.
Если еще дисплей хотите или эргономику какую-то особенную - пишите. сюда, Может я, а может еще кто поможет, может за так, а может за деньги.
Тут все от сложности задачи и настроения (степени опьянения) програмиста зависит. ;)
htpicc@gmail.com пишите.
Задача в итоге такая, уточню:
На выставке будет работать макет строительного крана. Цикл: поворот-опускание-подъем-поворот. На приложенном фото изображена временная диаграмма включения исполнительных реле.
Необходимо написать скетч, в Москве скоммутировать все и и проверить работу в нашем цехе.
Имеем следующие компоненты: https://yadi.sk/i/JEvVffPPuZjTa
Мегу, реле-шилд и 1602 экранчик вижу, я мелочи не могу разобрать, текстом никак не сможете написать, что это у Вас лежит? Что-то черненькое, синеькое и с проводочками ;) ?
там на фото еще лежат разные коннекторы и разъемы.
Дисплей задействовать не обязательно.
у меня есть плата на 8 выходных реле, все спаяно на одной заводской плате в корпусе на дин рейку, без соплей. У меня дочка делала руку- манипулятор с электромагнитным захватом, почти как у вас А то ведь 220 В и сопли - можно, но не на долго. Я так понимаю, нужно кнопку "старт" и 4 последовательно включаемые реле, так что поставлю кнопку и 4 потенциометра для 4 значений времени. А что писать на индикаторе? Так по идее он и не нужен, к тому же на выставке lcd будет не очень хорошо видно.
По подключению - могу и приехать, я недалеко - в Черноголовке, это вопрос чисто финансовый. Пишите ydom coбaкa mail.ru , договоримся и решим вопрос. Собственно вот сам модуль
Onkel,
написал Вам письмо...
Да, спасибо, ответил.
так что поставлю кнопку и 4 потенциометра для 4 значений времени.
Ну потениометры - это моя идея, но я не жадный - пользуйтесь ;). Хотя, при наличии экранчика, лучше уж три кнопки:
одна - ПУСК/СТОП - при долгом нажатии, а при коротком - вход в меню/выбор.
две другие - обычные "+" и "-" - навигация по меню и изменение значений.
(можно энкодер с кнопкой - вообще прикольная эргономика получится)
Тогда можно задать аккуратно и длительности фаз работы и длительности пауз. Всего получится 8 переменных в секундах. На потенциометрах - зае...шься крутить.
Опять таки писать почти ничего не надо, Скетчей с меню для 1602 - два вагона и три маленгьких тележки.
==================
Сорри, но я в Раменском живу, но я не набиваюсь, весь сентябрь я буду занят. А паузы - непредсказуемы, поэтому и не хочу брать ответственность. Вот вчера выдался часок свободный - я код написал, но там пауз нет.
Если что - Онкель поправит или новый напишет.
Ну потениометры - это моя идея, но я не жадный - пользуйтесь ;).
Спасибо. Давно пользуюсь, еще с тех времен, когда был школьником.
Приветствую Вас!
Мне очень нужна Ваша помощь...
Нужно будет по очереди включать 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). Интересует разработка скейтча, или даже полная сборка всего этого дела. За работу готов выслать хорошей самогонки или небольшую кучку денег)). Заранее спасибо!
Приветствую Вас!
Мне очень нужна Ваша помощь...
Нужно будет по очереди включать 2 твердотельных реле, с возможностью регулировки времени включения каждого отдельно. А так-же нужно регулировать временной промежуток между включением 1 го и 2 го. Хотелось бы регулировать все эти параметры энкодерами.... За работу готов выслать хорошей самогонки или небольшую кучку денег)). Заранее спасибо!
нужно больше деталей- диапазон времен, хотя бы примерно. Пишите ydom coбaкa mail.ru
Если нужна полная сборка, то есть готовые модули уже с дисплеем, на дин рейку в корпусе 8 юнитов (115 мм), в корпусе 8 реле или 8 мосфитов или 8 симисторов.
Ну а могу и просто написать скетч, проверить на реальном железе, так что вы получите гарантированно рабочий скетч.
Приветствую Вас!
Мне очень нужна Ваша помощь...
Нужно будет по очереди включать 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
Доброго времени суток! Нужна огромная помощь за вознаграждение в написании скетча и эмуляции круглого энкодера принтера Epson для создания планшетного принтера. Сам я в этом ничего не смыслю, поэтому буду рад любой помощи!)
Как раз вчера разбирал парочку епсонов, там классный энкодер, оставил себе пластиковый полупрозрачный диск от него для позиционирования головки микроскопа. А я еще удивился- почему не шаговики стоят? Эмулятор энкодера сделаю, нужно более детальное задание - с чего управлять и другие детали проекта. Пишите ydom@mail.ru , решим вопрос.
Аж дар речи потерял) обязательно напишу, правильно сформулирую и напишу!
Wdrakula как с Вами можно связатся ?
Добрый вечер.
свяжитесь со мной пожалуйста по почте 6645339@gmail.com
Киньте туда свой номер телефона, обсудим тз.
Нужна ваша помощь.
Если это мне, то выше написано, что моя почта это мой ник на жмейле.