сайт практикующего электронщика-эмбеддера

сайт практикующего электронщика-эмбеддера (https://sdelal.net/index.php)
-   Открытые проекты (https://sdelal.net/forumdisplay.php?f=3)
-   -   Универсальный двухканальный микропроцессорный таймер. (https://sdelal.net/showthread.php?t=24)

Admin 14.08.2013 20:32

Универсальный двухканальный микропроцессорный таймер.
 
. . . Общее описание.
. . . Устройство является универсальным прибором производственно-технического и бытового назначения, предназначено для формирования точно заданных пользователем, относительно времени, сигналов. В основе прибора применён микроконтроллер, имеющий достаточную точность для установки длительности каких-либо процессов в промышленном производстве, на транспорте, в связи, научных исследованиях. Устройство имеет два канала и может работать в одном из режимов - таймер, генератор сигналов, ждущий мультивибратор, частотомер. Интервалы временных задержек и режим работы таймера программируются пользователем. Минимальное время задержки - 1мсек, максимальное время задержки - 99999секунд (27,7часов). Максимальная погрешность выдержки установленных интервалов - не более 3 секунд в сутки. Напряжение питания - 8…30 вольт. Ток потребления - 20 мА. Устройство имеет 2 выхода отрицательной полярности и вход для режима ждущего мультивибратора или частотомера. Выходы допускают нагрузку с током до 0,5А. Вход имеет подтяжку к питанию 5 вольт, рабочий фронт - низкий, ток потребления - 0,5 мА.

. . . Внешний вид готового устройства, электрическая схема и распиновка разъёма:

. . . Режимы работы устройства.
. . . 1. Таймер однофазный. После подачи питания включается второй канал. Через время периода 1 второй канал отключается, а первый включается.
. . . 2. Таймер двухфазный. После подачи питания включается первый канал через время периода 1 с последующим отключением через время периода 2. Второй канал работает в режиме инвертирования первого канала.
. . . 3. Таймер трёхфазный. После подачи питания включается первый канал на время периода 1, затем отключается. Через время периода 2, после отключения первого канала, включается второй канал на время периода 2.
. . . 4. Таймер трёхфазный в инверте. После подачи питания включается второй канал. Через время периода 1 включается первый канал. Через время периода 2, после включения первого канала, отключается второй канал на время периода 2.
. . . 5. Генератор. Выдаёт бесконечную серию сигналов после подачи питания на устройство, начиная с низкого. Период 1 соответствует времени высокого сигнала, период 2 соответствует времени низкого сигнала. Второй канал работает в режиме инвертирования первого канала.
. . . 6.Ждущий покоя таймер однофазный. После подачи питания включается второй канал. Изменение фронта входного сигнала сбрасывает счётчик отсчёта периода 1. После полного отсчёта времени периода 1 включается первый канал, отключается второй.
. . . 7.Ждущий покоя таймер двухфазный. Изменение фронта входного сигнала сбрасывает счётчик отсчёта периода 1. После полного отсчёта времени периода 1 включается первый канал, отключается второй, на время периода 2. Второй канал работает в режиме инвертирования первого канала.
. . . 8.Ждущий покоя таймер трёхфазный. После подачи питания, включается первый канал. Изменение фронта входного сигнала сбрасывает счётчик отсчёта периода 1. После полного отсчёта времени периода 1 первый канал отключается. Через время периода 2 после отключения первого канала, включается второй канал на время периода 2.
http://sdelal.net/imag/img_0061.gif

. . . 9.Ждущий покоя таймер трёхфазный в инверте. После подачи питания, включается второй канал. Изменение фронта входного сигнала сбрасывает счётчик отсчёта периода 1. После полного отсчёта времени периода 1 первый канал включается. Через время периода 2 после включения первого канала, отключается второй канал на время периода 2.
. . . 10.Ждущий низкого сигнала таймер однофазный. После подачи питания включается второй канал. После низкого фронта входного сигнала запускается таймер отсчёта времени периода 1, по окончании которого включается первый канал, отключается второй.
. . . 11.Ждущий низкого сигнала таймер двухфазный. После низкого фронта входного сигнала запускается таймер отсчёта времени периода 1, по окончании которого включается первый канал на время периода 2. Второй канал работает в режиме инвертирования первого канала.
. . . 12.Ждущий низкого сигнала таймер трёхфазный. После подачи питания, включается первый канал. После низкого фронта входного сигнала запускается таймер отсчёта времени периода 1, по окончании которого первый канал отключается. Через время периода 2 после отключения первого канала, включается второй канал на время периода 2.
. . . 13.Ждущий низкого сигнала таймер трёхфазный в инверте. После подачи питания, включается второй канал. После низкого фронта входного сигнала запускается таймер отсчёта времени периода 1, по окончании которого включается первый канал. Через время периода 2 после включения первого канала, отключается второй канал на время периода 2.
. . . 14.Ждущий высокого сигнала таймер однофазный. После подачи питания включается второй канал. После высокого фронта входного сигнала запускается таймер отсчёта времени периода 1, по окончании которого включается первый канал, отключается второй.
. . . 15.Ждущий высокого сигнала таймер двухфазный. После высокого фронта входного сигнала запускается таймер отсчёта времени периода 1, по окончании которого включается первый канал на время периода 2. Второй канал работает в режиме инвертирования первого канала.
. . . 16.Ждущий высокого сигнала таймер трёхфазный. После подачи питания, включается первый канал. После высокого фронта входного сигнала запускается таймер отсчёта времени периода 1, по окончании которого первый канал отключается. Через время периода 2 после отключения первого канала, включается второй канал на время периода 2.
. . . 17.Ждущий высокого сигнала таймер трёхфазный в инверте. После подачи питания, включается второй канал. После высокого фронта входного сигнала запускается таймер отсчёта времени периода 1, по окончании которого включается первый канал. Через время периода 2 после включения первого канала, отключается второй канал на время периода 2.
http://sdelal.net/imag/img_0070.gif

. . . 18.частотомер 1. При достижении сигнала до частоты 1, включаем первый канал, отключаем второй. При достижении сигнала до частоты 2, включаем второй канал, отключаем первый.
. . . 19.частотомер 2. Если частота сигнала больше записанной частоты 1, включается первый канал. Если частота сигнала меньше записанной частоты 1, первый канал отключается. Если частота сигнала больше записанной частоты 2, включается второй канал. Если частота сигнала меньше записанной частоты 2, второй канал отключается.
. . . 20.фронтовый таймер. Положительный фронт сигнала включает 1 канал на время периода 1. Отрицательный фронт сигнала включает 2 канал на время периода 1.


. . . Программирование.
. . . Для входа в режим программирования нужно нажать кнопку на модуле таймера и удерживая её включить питание. Светодиод выдаст 20 вспышек за 2 секунды, сигнализируя о входе в режим программирования. Следующие длинные вспышки с периодом 1 и паузой между сериями 2 секунды информируют о номере разряда программирования. Короткие нажатия на кнопку инкрементируют счётчик с номером разряда. Всего 17 разрядов, Первый разряд отвечает за режим работы таймера (1-таймер однофазный, 2-таймер двухфазный, 3-таймер трёхфазный, 4-таймер трёхфазный в инверте, 5-генератор, 6-ждущий покоя таймер однофазный, 7-ждущий покоя таймер двухфазный, 8-ждущий покоя таймер трёхфазный, 9-ждущий покоя таймер трёхфазный в инверте, 10-ждущий низкого сигнала таймер однофазный, 11-ждущий низкого сигнала таймер двухфазный, 12-ждущий низкого сигнала таймер трёхфазный, 13-ждущий низкого сигнала таймер трёхфазный в инверте, 14-ждущий высокого сигнала таймер однофазный, 15-ждущий высокого сигнала таймер двухфазный, 16-ждущий высокого сигнала таймер трёхфазный, 17-ждущий высокого сигнала таймер трёхфазный в инверте, 18-частотомер 1, 19-частотомер 2, 20-фронтовый таймер.) , следующие 5 разрядов - секунды первого периода, 3 разряда тысячные секунды первого периода, следующие 5 разрядов - секунды второго периода, 3 разряда - тысячные секунды второго периода. Для редактирования текущего разряда нужно длительно нажать на клавишу. Светодиод выдаст серию коротких вспышек, сигнализируя о входе в режим редактирования текущего разряда. Следующие короткие вспышки с периодом 1 и паузой между сериями 2 секунды информируют о текущем состоянии разряда. Перебор единиц разряда осуществляется короткими нажатиями на клавишу. Для выхода с режима редактирования текущего разряда нужно длительно нажать на клавишу. Светодиод выдаст серию коротких вспышек, сигнализируя о выходе из режима редактирования текущего разряда. Изменение любого регистрами автоматически записывается в энергонезависимую память микроконтроллера.
. . . Программа поддерживает функцию сброса всех регистров, сброс происходит при удержании кнопки на 5 секунд после подачи питания на устройство.


. . . Примеры, отображающие возможности устройства.
. . . 1. Ограничитель оборотов двигателя.
. . . Устройство установлено на модернизированный для ралли по бездорожью УАЗ. Кроме переделки ходовой части заменен силовой агрегат на дизель. В движении по труднопроходимым дорогам на низших передачах двигатель работает на предельных режимах работы. Устройство отключает клапан топливоподачи дизельного ТНВД если частота вращения выходит за предельно-допустимую. Отсечка происходит с гистерезисом 100 обр/мин. Программа устройства работает в режиме частотомера, на вход которого подаётся переменный сигнал с обмотки генератора. Выход устройства нагружен обмоткой реле управления клапаном топливоподачи. Схема подключения приведена ниже.
http://sdelal.net/imag/img_0075.gif


. . . Архив с схемой можно скачать здесь

. . . Обсуждение проекта ниже.



ur5got 30.11.2014 00:45

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

Admin 30.11.2014 02:48

Нет, с перламутровыми пуговицами сегодня нет). Лучше расскажите, для чего это нужно, может что-то посоветую.

ur5got 01.12.2014 03:11

Здравствуйте.
Нужен вот для такого механизма.
Релюшка подает питание на моторчик, который толкает деталь. Если деталь упала - сработал датчик наличия детали и моторчик отключается. А если не упала то через 6 секунд моторчик отключается. Затем пауза 2 секунды. Вторая попытка. Третья попытка.
Хотелось бы сделать так, что если первая попытка не удалась, то при появлении первой паузы срабатывал таймер и скажем на 4 секунды инвертировал питание моторчика. Тогда во время второй попытки моторчик 2 секунды будет тянуть деталь назад (центровка), а оставшиеся 4 - снова толкать вперед. А третья попытка - только вперед.
В принципе, должен подойти Ваш 20. фронтовый таймер. Но он сработает и в паузе после второй попытки, если она не удалась. И третья снова начнется с реверса.
Вот такие перламутровые пуговицы...

Admin 01.12.2014 15:22

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

ur5got 01.12.2014 20:40

Собрал сегодня на макетке унитаймер. Залил прошивку 20 (фронтовый таймер) и ... Почему то у меня алгоритм работы не соответствует описанному Вами. Алгоритм:
После включения оба канала выключены. При подаче высокого уровня (ВУ) на вход управления включается первый канал (К1) и если ВУ удерживать на входе управления, то выключение К1 происходит через Т1. Но стоит убрать ВУ со входа сразу после включения К1 как тут же происходит отключение К1 и включение К2. Если же ВУ убрать через, например 3с, то К1 сразу отключается, включается К2, а вот отключение К2 происходит не через Т1, а через Т1-3с. То-есть время включения К2 зависит от времени удержания ВУ на входе и равно разности.
И еще. В EEPROM режим работы прописывается в hex (20 это должно быть записано 14)?

Admin 03.12.2014 12:24

Алгоритм соответствует. В условии время положительного сигнала управления должно быть больше, чем период Т1. Если время сигнала меньше, чем период Т1, условие будет нарушено, и алгоритм выполняется не корректно. 20=0х14

ur5got 03.12.2014 21:51

Цитата:

Сообщение от Admin (Сообщение 1582)
В условии время положительного сигнала управления должно быть больше, чем период Т1....

Здравствуйте.
Это я уже понял, когда экспериментировал на макетке. А можно чуток подправить прошивку вот так:
- при подаче питания каналы выключены;
- по отрицательному фронту включается канал 1 до следующего отрицательного фронта (эффект триггера - смена состояния выхода по каждому отрицательному фронту входного сигнала) и включается канал 2 на время Т1 которое можно задать (включается по первому перепаду и не сбрасывается пока не закончится Т1, независимо от сигнала на входе).
Думаю, что такой режим таймера полностью решит мою задачу.

Admin 04.12.2014 00:20

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

ur5got 04.12.2014 00:39

:(
Придется тогда временно состряпать на связке D-триггер+таймер555

ur5got 15.12.2014 15:17

Здравствуйте.
Собрал два таймера под третий режим работы. Период 1 выставил 5 секунд. Так вот При их одновременном запуске второй отрабатывает на полторы секунды больше чем первый. Подумалось, что из-за отличия номиналов в платках. переставил местами ПИКи. Теперь стало наоборот. Разные ПИКи в одной и той же платке отсчитывают по разному. Что бы это значило? Прошивки и fuse биты одинаковые. OSCCAL в последней ячейке программы для каждого ПИКа свой.

Admin 16.12.2014 03:21

Нужно перекалибровать OSCCAL или внести поправку в периоде.


Текущее время: 23:04. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot