Как повторить последовательность импульсов?

Обсуждаем цифровые устройства...
Dmitrudo
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт апр 18, 2025 17:13:54

Как повторить последовательность импульсов?

Сообщение Dmitrudo »

Уважаемы знатоки, образовалась проблема которая, с одной стороны- простая, а с другой- где-то даже непонятная! Я опишу, ситуацию! Есть два устройства- сигнальное, и исполнительное. Связаны они- по синезубу. Работает все это так: в сигнальном есть инфракрасный излучатель и ИК- приемник. Когда к нему подносят что-либо, ИК- сигнал отражается от этого "чего-либо" и попадает на ИК- приемник, который выдает посделовательность импульсов которые, в свою очередь, передаются по синезубу на исполнительне устройство и оно- запускает чего-то там. При убирании этого "чего-либо", импульсы пропадают и испольнителбное- возвращается в исходное.
Последовательность передаваемых импульсов мне удалось снять. В связи с чем вопрос: как можно, средствами МК повторить данную последовательность?
Вложения
photo_2026-01-29_09-17-35.jpg
(244.11 КБ) 531 скачивание
Последний раз редактировалось Dmitrudo Чт янв 29, 2026 09:18:46, всего редактировалось 1 раз.
Аватара пользователя
linux_rulezz
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Re: Как повторить последовательность импульсов?

Сообщение linux_rulezz »

Да элементарно: настроить таймер с DMA. Период импульсов одинаковый, меняется лишь заполнение → в регистр CCRx по DMA передаем очередное значение. И будет щщассье.
Я так и всякими "адресуемыми светодиодами" управлял, и 1-wire…
Windows must die!
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Как повторить последовательность импульсов?

Сообщение Jack_A »

Да чего уж проще - поскольку частота низкая, в районе звуковой - записать на магнитофон (или в файл) - затем воспроизводить.
Если последовательность всегда одна и та же - сдвиговый регистр + ПЗУ. Если даже и не одна, а конечное их число - то же самое с выборкой номера последовательности. И никаких тебе DMA и MK
Взлом домофона? :shock: :)
Изображение
Dmitrudo
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт апр 18, 2025 17:13:54

Re: Как повторить последовательность импульсов?

Сообщение Dmitrudo »

[uquote="Jack_A",url="/forum/viewtopic.php?p=4783796#p4783796"]Да чего уж проще - поскольку частота низкая, в районе звуковой - записать на магнитофон (или в файл) - затем воспроизводить.
Если последовательность всегда одна и та же - сдвиговый регистр + ПЗУ. Если даже и не одна, а конечное их число - то же самое с выборкой номера последовательности. И никаких тебе DMA и MK
Взлом домофона? :shock: :)[/uquote]

Нет, не домофона. Раскажу если- весь форум долго ржать будет!
Приблуда домашнего использования. Китайская. Работает- как я описывал выше- при приближении к сигнальному устройству по блютуз отпраляется команда на открытие. Я хочу, чтобы срабатывало не только при приближении к датчику, а через определенные промежутки времени, допустим- каждый час.
Грубо говоря, МК каждый час должен генерировать такую же последовательность импульсов- чтобы сработало исполнительное устройство.
Аватара пользователя
vlasovzloy
Друг Кота
Сообщения: 20068
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Re: Как повторить последовательность импульсов?

Сообщение vlasovzloy »

Есть такая штука цифровой магнитоыон isd первые буквы только помню. На али одно времч много продавсли платы готовые с микроыоном и динамиком и конструкторы и готовые уже
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Как повторить последовательность импульсов?

Сообщение roman.com »

[uquote="Dmitrudo",url="/forum/viewtopic.php?p=4783762#p4783762"]вопрос: как можно, средствами МК повторить данную последовательность?[/uquote]
очень просто)) с помощью обычного копировальщика пультов...

Изображение

-берём любой МК.
-нажимаем на кнопочку "записать код".
-передаём код... МК измеряем длительность импульсов и сохраняет в своей памяти.

-потом нажимаем на кнопочку "воспроизвести код".
-МК берёт из своей памяти длительность импульсов и воспроизводит код.

Всё))
:tea:
Вложения
Screenshot_1.jpg
(52.21 КБ) 304 скачивания
Аватара пользователя
linux_rulezz
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Re: Как повторить последовательность импульсов?

Сообщение linux_rulezz »

roman.com писал(а):очень просто
roman.com писал(а):берём любой МК
Угу. Берем любой МК, а потом в течение месяца пишем функционал "копировальщика" ☺
Windows must die!
Аватара пользователя
АлександрЛ
Друг Кота
Сообщения: 43815
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Re: Как повторить последовательность импульсов?

Сообщение АлександрЛ »

linux_rulezz писал(а):Берем любой МК, а потом в течение месяца пишем функционал "копировальщика"
А зачем? Если нужно повторить именно вот эту последовательность:
СпойлерИзображение
то это, если я правильно понял, 0101101101010110101
Непонятна длительность одного импульса, и, если нужно точно повторить завершающий импульс, то делаете, например, три "такта"-
00011100011111100011111100011100011100011111100011101
Просто жестко записываете эту последовательность в .. Ну, думаю, Тини13 хватит

зы.. Если это ИК светодиод, то "единичка" это светодиод светится или нет? Или вы брали сигнал с выхода TSOP-а?
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25763
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: Как повторить последовательность импульсов?

Сообщение Муркиз »

Инвертировать ее сначала надо. И потом уточнить - это стековая запись или как ?
Dmitrudo
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт апр 18, 2025 17:13:54

Re: Как повторить последовательность импульсов?

Сообщение Dmitrudo »

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4783830#p4783830"]
linux_rulezz писал(а):Берем любой МК, а потом в течение месяца пишем функционал "копировальщика"
А зачем? Если нужно повторить именно вот эту последовательность:
СпойлерИзображение
то это, если я правильно понял, 0101101101010110101
Непонятна длительность одного импульса, и, если нужно точно повторить завершающий импульс, то делаете, например, три "такта"-
00011100011111100011111100011100011100011111100011101
Просто жестко записываете эту последовательность в .. Ну, думаю, Тини13 хватит

зы.. Если это ИК светодиод, то "единичка" это светодиод светится или нет? Или вы брали сигнал с выхода TSOP-а?[/uquote]

Извиняюсь, это я тупанул картинку неполную выложил и там длительность непонятна. Заменил картинку.
Длина пачки- прим. 9 мс. Да, это выход ТСОПа. Получается, единичка- это светодиод потухший, нолик- светится. Тогда последовательность будет
все как у вас и написано, только инвертировано?

В схеме каждую секунду проскакивает "лог 0" синхроимпульс длит 9 мс, когда нет отраженного от Ик-светодиода света- импульсы без "наполнения", когда появляется "отраженка" то внутри синхроимпульса на выходе ТСОП и появляется данная последовательность импульсов- как на фото.
То есть, как я понимаю, записать на Тини 13 последовательность- это пол дела, надо еще синхронизировать их...

Задача чем дальше тем кудрявей...
Аватара пользователя
abc
Друг Кота
Сообщения: 3684
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Как повторить последовательность импульсов?

Сообщение abc »

Подобную же задачу (только для пультов сигналок авто) делал в 1996 году на платке от АОНа с Z80 на борту.
Никаких МК с DMA тогда еще не было. Да и юзеров линукса было полторы штуки.
Поэтому сейчас, чтобы не улезать в дебри, проще всего это сделать (как уже сказали) на любом МК, обычным ногодрыгом.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Аватара пользователя
AlexS4
Друг Кота
Сообщения: 6652
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Re: Как повторить последовательность импульсов?

Сообщение AlexS4 »

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4783830#p4783830"]думаю, Тини13 хватит[/uquote]
ее функционала хватит чтоб и одновременно 6 подобных асинхронных сигнала генерить ;)

а эта задача - элементарнейшая,
1 таймер настраиваем на 500uS
в его прерывании:
сбрасываем С-флаг
делаем 16битный сдвиг регистра через С
С флаг копируем в gpio порт (выход).
тогда 0- будет пассивный уровень, 1- активный. (чтоб проинвертировать надо устанавливать С в 1 а не в 0)

перед этим загружаем в нужный регистр 16бит слово (последовательность 1-битных сэмплв сигнала)

и делаем это каждый раз когда хотим послать команду.

если не хватило 16 бит для записи сэмплов (здесь похоже 18 если не ошибся) то загружаем и крутим 2 регистра или чуть усложняем алгоритм обработчика перрываний чтоб он не тик-семплы загонял сразу а биты кода (пропускал 1 доп тик на очередную выдвинутую 1 и не пропускал на очередной 0 при формировании импульса, это добавит 2 условных оператора и 2 бита для хранения флагов - состояний)

все! это 10..20 avr инструкций не считая алгоритма выбора момента отсылки команды !
Аватара пользователя
vlasovzloy
Друг Кота
Сообщения: 20068
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Re: Как повторить последовательность импульсов?

Сообщение vlasovzloy »

Там еще же частота модуляции нужна
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Как повторить последовательность импульсов?

Сообщение roman.com »

linux_rulezz писал(а):Угу. Берем любой МК, а потом в течение месяца пишем функционал "копировальщика"
думаю можно быстрей))
:tea:
abc писал(а):Подобную же задачу (только для пультов сигналок авто) делал в 1996 году на платке от АОНа с Z80 на борту.
точно ! возьмём процессор с компа))
правда не ясно где в наше время найти Z80... но это мелочи))
:tea:
AlexS4 писал(а):а эта задача - элементарнейшая
ничего не ясно...
:dont_know:
vlasovzloy писал(а):Там еще же частота модуляции нужна
не нужна.
:tea:
Аватара пользователя
linux_rulezz
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Re: Как повторить последовательность импульсов?

Сообщение linux_rulezz »

Ногодрыг - это фу. Аппаратно же можно сделать на 35-рублевом STM32F103C6T6. Подготавливаем массив и скармливаем его DMA, а дальше уже "оно само" таймер пинает, устанавливая новые значения в регистр ARR (как я смотрю, здесь меняется не скважность, а длительность "единичного" импульса, длительность "нуля" всегда одинаковая, т.е. в регистре CCRx будет постоянное значение).
А по прерыванию окончания передачи DMA отключаем таймер.
Windows must die!
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Как повторить последовательность импульсов?

Сообщение roman.com »

вот сигнал...

Изображение

можно использовать Тини 13...
только там памяти мало... и таймер 8 битный...
можно конечно использовать Тини 13... но так себе.
:?

Изображение
Вложения
даташит.jpg
(88.13 КБ) 220 скачиваний
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25763
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: Как повторить последовательность импульсов?

Сообщение Муркиз »

А простые решения через delay ныне уже не котируются ?
diplodok
Мудрый кот
Сообщения: 1764
Зарегистрирован: Чт авг 10, 2017 20:57:51

Re: Как повторить последовательность импульсов?

Сообщение diplodok »

Грубо измерил длительности на осциллограмме (часть)
Изображение

Просто для сведение.

PS: "Мерил" в пикселях. :))) :cry: :facepalm:
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25763
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: Как повторить последовательность импульсов?

Сообщение Муркиз »

Судя по этой расшифровке, осциллограф был мегагц этак до 2 ? А код пересылаться AES 256 ?

А может быть, все же все гораздо проще ?
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Как повторить последовательность импульсов?

Сообщение akl »

[uquote="roman.com",url="/forum/viewtopic.php?p=4783850#p4783850"]можно использовать Тини 13...
только там памяти мало... и таймер 8 битный...
можно конечно использовать Тини 13... но так себе.[/uquote]Ваш картинка показывает, что tiny13 вполне хватит. Как вариант, разбиваете ее на фрагменты по 50мкс. Получится 9000мкс/50=180. Загружаете FLASH фрагментами типа
TB_FRAME:
.DB 0xFF,0xFE,0xFE,0xFE,,0xFF......0xFE,0xFE,0xFE,0xFF ;младший бит содержит последовательность
TB_FRAME_END:
Таймер настраиваете на работу в режим CTC.
Fo=1200000
OC0A=50*Fo/1000000-1
Устанавливаете ZH:ZL на TB_FRAME*2
В нужный момент запускаете таймер, по прерыванию которого считываете текущий фрагмент и выводите на вывод. Сравниваете ZH:ZL с TB_FRAME_END*2, если достигли в начало, иначе повтор.
Ответить

Вернуться в «Цифровая техника»