Нужен скейч управления батареей шестидесяти реле через каскад восьми сдвиговых регистров 74HC595

Тема в разделе "Закажу проект", создана пользователем Polyline, 12 июн 2016.

  1. Polyline

    Polyline Нуб

    Добрый день, уважаемые форумчане!
    Нужно создать программу в соответствии с приведенном ниже техническим заданием.
    Вознаграждение за готовый продукт, успешно прошедший приемочные испытания гарантирую!
    Жду Ваших предложений на электронную почту polyline@bk.ru
    С уважением, Дмитрий П.

    Техническое задание

    написания кода программы для Arduino

    «Управление батареей шестидесяти реле через каскад восьми сдвиговых регистров 74HC595»


    Описание конструкции:

    Управление батареей реле осуществляется пультом управления замыканий реле.

    Внутри пульта управления батареей реле размещена плата контроллера ArduinoUNO, плата с каскадом восьми сдвиговых регистров, модуль RTCчасов реального времени. Питание размещенного в корпус пульта контроллера Arduino осуществляется автономным источником тока напряжением 9В. На корпус пульта выведено гнездо для подключения пульта к автономному источнику питания, тумблер «К1» - включения/отключения питания контроллера Arduino от автономного источника тока, кнопка «К2» - пуск, кнопка «К3» - стоп, светодиодный индикатор выполнения программы - «И1», светодиодный индикатор предупреждения - «И2», светодиодный индикатор окончания выполнения программы - «И3». Также на корпус пульта выведен разъём USB-B для программирования контроллера Arduinoпрограммой замыканий реле и клеммные колодки для подключения батареи реле. Замыкающее напряжение на клеммные колодки подается от сдвиговых регистров.

    Сдвиговые регистры подключены к выводам Arduino «digital 11», «digitalGND», «digital 8», «digital 12», «power 5v». Сдвиговые регистры подключены в каскад согласно схеме http://arduino.ru/Tutorial/registr_74HC595.

    Кнопка без фиксации «К2» замыкает выводы Arduino«power 5v» и «digital 2». Вывод «digital 2» также соединен с выводом «digitalGND» резисторной перемычкой. Кнопки подключены в соответствии со схемой http://arduino.ru/tutorials/button.

    Кнопка без фиксации «К3» замыкает выводы Arduino «power 5v» и «digital 4». Вывод «digital 4» также соединен с выводом «digitalGND» резисторной перемычкой.

    Индикатор «И1» подключен через резистор к выводам Arduino «digital 13» и «digitalGND».

    Индикатор «И2» подключен через резистор к выводам Arduino «digital 10» и «digitalGND».

    Индикатор «И3» подключен через резистор к выводам Arduino «digital 9» и «digitalGND».

    Модуль RTC часов реального времени подключен к выводам Arduino«analoginА4», «analoginА5» «powerGND».


    Требуется написание кода программы управления батареей реле с помощью существующего пульта. При этом к программе предъявляются следующие требования и ограничения:

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

    2. Необходимо предусмотреть в пользовательском интерфейсе возможность задания оператором пуска срабатываний любого количества (от 1 до 60) реле в любой последовательности.

    3. Задача в пользовательском интерфейсе оператором пуска команд на срабатывание реле должна прописываться в часах, минутах, секундах и долях секунд в формате с дискретностью кратной 0,5 секунды.

    4. Первая заданная оператором пуска команда на замыкание реле принимается за событие 00 час. 00 мин. 00,0 сек. – является нулевым отсчетным временем старта программы пуска. Задача оператором пуска времени запуска следующего реле должна быть возможна не ранее чем в 00 час. 00 мин. 00,5 сек., но не позже 01 час. 40 мин. 00,0 сек. от нулевого отсчетного времени старта программы пуска (срабатывания первого заданного в программу пуска реле).

    5. При выполнении программы пуска одно реле должно срабатывать только один раз. Задание команды через пользовательский интерфейс на повторное срабатывание реле должно быть запрещено.

    6. Время удержания реле в замкнутом состоянии должно составлять 250 миллисекунд.

    7. После записи оператором пуска программы последовательности срабатываний реле в контроллер Arduino через выведенный на панель пульта USBпорт, и отключения пульта от компьютера, программа управления батареей реле должна сохраняться в памяти контроллера.

    8. При включении контроллера тумблером «К1» подача электрических импульсов до начала старта программы должна быть полностью исключена!

    9. Старт программы начинается с нажатия оператором пуска кнопки «К2», при этом должно произойти немедленное срабатывание первого заданного ранее оператором пуска в пользовательском интерфейсе реле, а также загореться индикатор «И1». Этот момент времени считается нулевым временем начала выполнения программы замыканий реле.

    10. Программа замыканий реле контроллером Arduino через каскад восьми сдвиговых регистров 74HC595 должна быть написана таким образом, чтобы была полностью исключена возможность случайной утечки командного импульса, который бы смог привести к срабатыванию другого реле!

    11. Индикатор «И1» должен гореть все время, пока контроллером выполняется программа пуска реле и гаснуть после завершения программы.

    12. Необходимо предусмотреть возможность приостановки выполнения программы срабатывания реле нажатием кнопки «К3».

    13. При приостановке программы нажатием кнопки «К3», индикатор «И1» не должен гаснуть, так как свидетельствует о том, что программа была уже пущена, но не завершена до конца.

    14. Продолжение работы приостановленной программы осуществляется также нажатием кнопки «К2», при этом должно произойти немедленное замыкание следующего в очереди программы реле, не зависимо от того сколько осталось текущего по программе времени до срабатывания следующего реле – таким образом оставшееся время до пуска следующего реле аннулируется.

    15. Если в ходе выполнения программы оператором пуска была повторно нажата кнопка «К2» не зависимо от того была ли до этого нажата им кнопка «К3» или нет должно произойти немедленное срабатывание следующего заданного в очереди программы реле с пропуском оставшегося времени до момента его срабатывания.

    16. Повторное нажатие кнопки «К2» считается повторным, если до этого она была отпущена. Длительное удержание кнопки «К2» в нажатом состоянии при старте программы не должно приводить к пропуску времени до начала момента срабатывания следующего реле.

    17. Индикатор «И2» должен загорается за 3 секунды до начала срабатывания следующего заданного в очереди программе реле после старта программы и гаснуть во время выполнения команды замыкания. Для привлечения внимания оператора пуска о предстоящем включении реле следует предусмотреть работу индикатора «И2» в мигающем режиме, причем, за время работы индикатора (3 сек.) следует сделать три мигающих предупреждения – первые два коротких со временем включения индикатора на 0,5 сек. и паузой между включениями 0,5 сек. и последнее длинное со временем включения индикатора на 1 сек.

    18. Если оператором пуска в пользовательском интерфейсе был задан такой алгоритм срабатываний реле, при котором интервал времени срабатываний двух реле получается менее 3 секунд (например в 00 час. 00 мин. 30,0 сек. срабатывает реле №8, следом за ним в 00 час. 00 мин. 30,5 сек. срабатывает реле №2), соответственно индикатор «И2» должен отработать не три секунды, а оставшееся время (0,5 секунды) до пуска следующего реле.

    19. Сразу после завершения цикла программы замыканий, индикатор «И1» должен погаснуть, при этом должен включиться индикатор «И3».

    20. Повторное выполнение программы замыканий реле возможно только после полного завершения программы повторным нажатием оператором пуска кнопки «К2» (программа не должна произвольно уходить в цикл), при этом индикатор «И3» должен гаснуть и вновь загораться индикатор «И2».
     
  2. ostrov

    ostrov Гуру

    Букв много, пока прочитал бегло. Схема уже собрана?
     
  3. Polyline

    Polyline Нуб

    Да, схема уже давно собрана, проведено тестирование работоспособности схемы. По начинке железом, пульт в работоспособном состоянии. Прежний разработчик ПО к сожалению отвалился.
    Букв совсем не много, учитывая строгость выполнения каждого пункта, нужно предусмотреть все, так как программа будет управлять блоком реле при производстве взрывных работ в различных отраслях промышленности.
     
  4. ostrov

    ostrov Гуру

    Для подробного описания букв не много, согласен. Просто каждый раз с головой вникать в задачу не решив для себя браться или нет довольно сложно. Взрывные работы это серьезно, уровень ответственности наравне с разработкой медицинского оборудования и защита от ложных срабатываний должна быть двойная. То есть не просто подавать сигнал на реле, но подавать по двум независимым контурам и включать по логике И. Во всяком случае я бы так сделал. Есть фотографии оборудования?
     
  5. Polyline

    Polyline Нуб

    Да, фотографии существующего оборудования будут подготовлены в ближайшее время, но на форуме выложить их не могу (первый отдел меня не поймет) :), лучше напишите мне непосредственно на электронную почту polyline@bk.ru, я постараюсь тогда в ближайшее время прислать их, а также схему коммутации при пайке сдвиговых регистров, который рисовал прежний разработчик и согласно которым была собрана схема.
     
  6. ostrov

    ostrov Гуру

    Программа для ПК уже есть своя или нужно тоже написать?
     
  7. Polyline

    Polyline Нуб

    Программы для ПК нет. Прежний разработчик успел только оставить сырой набросок написанного им скейча, который не удовлетворяет всем требованиям задания.
     
  8. Limoney

    Limoney Гик

    А обратной связи не предусмотрено по реле?
     
  9. Polyline

    Polyline Нуб

    А что Вы имеете ввиду под обратной связью по реле? Я не очень понимаю, это как?
     
  10. Limoney

    Limoney Гик

    Ну, нажал оператор кнопку – должно сработать реле, а сработало ли реле на самом деле?
    Если есть визуальный контроль, по которому видно, что реле сработало и весь процесс контролирует оператор, обратной связи может не быть.
     
  11. ostrov

    ostrov Гуру

    Обратная связь будет, насколько я понимаю, не проморгаешь. ))
     
  12. Polyline

    Polyline Нуб

    Если реле сработает, значит произойдет пуск заряда, что будет видно визуально и слышно.
     
  13. Faberge

    Faberge Administrator Администратор

    Да ну нафиг, писать код для Ардуино, для проведения взрывных работ, еще долбанет кого-то ненароком при нарушении ТБ. Автору я бы разве что предложил не мучить Уно и взять сразу Мегу или даже Дуо, там таймеров больше и лучше, для тайминга пригодится. Удачи!
     
  14. Onkel

    Onkel Гуру

    много таймеров не нужно, как не нужно много мозгов (в смысле голов) для знания одной таблицы умножения. Достаточно одной штуки.
     
    Limoney нравится это.
  15. Limoney

    Limoney Гик

    В полнее достаточно одного таймера.
    Еще бы добавил вывод номера текущего и предыдущего выполнения задания.
     
  16. ostrov

    ostrov Гуру

    Зачем тут вообще таймеры?
     
  17. Onkel

    Onkel Гуру

    а что будет время считать как не таймер? Другого счетчика времени, кроме таймера, в МК нет.
     
  18. ostrov

    ostrov Гуру

    Таймер для счетчика миллисекунд я не считаю, т.к. его настраивать специально не надо. А еще у ТС на плате есть RTC, не понятно зачем, но можно и его использовать.
     
  19. Polyline

    Polyline Нуб

    ПРОЕКТ ЗАВЕРШЕН.
     
    Последнее редактирование: 17 июл 2016