Простой генератор прямоуголньйх импульсов

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Altium
Прорезались зубы
Сообщения: 224
Зарегистрирован: Пт июл 18, 2014 11:44:32

Простой генератор прямоуголньйх импульсов

Сообщение Altium »

Привет дорогие друзья.
Подскажите как могу сделать 2-канальной генератор прямоуголньйх сигналов с изменяемьйе времена.
Основная функция - через 3 потенциометра задать времена Т1, Т2, Т3 в указанньйе на фото границьй.
Изображение

Тоест нужньйе 3 индивидуалньйе потенциометрьй для:
Т1 - период между сигналов, одинаков для оба канала.
Т3 - продолжительность сигнала, одинакова для оба канала.
Т2 - процентное соотношение времени дефазирование каналов: от =Т3 до 50%*Т1.
Для Т2 ето тонкий момент, потому чтоб нужно делить Т1 на процентьй в реальное время.

И если Т1 меняеться, нужно Т2 автоматически измениться според него.
Допускаеться заступать конца первого сигнала с начала второго, как видно в первая половина графики.

Точность и шаги изменения не критические, можно взять значения с верхнего диапазона (самьйе бьйстрие).

Не важно за какой МК писан - PIC, Atmel или STM, но понятно чтоб у него нужно есть 3 АЦП входа для потенциометров.
У меня есть все нужньйе програматорьй для них, а плата не проблем - могу сделать легко.
Например: PIC16F54, 505, 526, 57, 18313, 1503, 18323, 18Fxxx или AtTiny 13, 24, 26, 44, 85, 2313, AtMega8, 48, 88 или любьй другой, кто вам нравиться.
Про STM - есть 2 броя STM32F100C4T6. Нет Arduino.
Все осталньое могу купить с Алиекспреса, но предпочтаю сделать плата сам, не хочу ждать 20 дней доставка.

Если возможно как опция - отображать на дисплей примерно LCD 2х16 времена Т1 в RPM (оборотьй /мин), а Т2 и Т3 в мс или мкс.

Здесь находил что то похожее: http://arduino.ru/forum/programmirovani ... ent-239004 но не очень понятно.
Я сам не програмист, помогите с кода, спасибо заранее.

P.S. Исправил рисунок, теперь время изменения периодов вообще стали человеческие.
Последний раз редактировалось Altium Вс ноя 19, 2017 15:18:55, всего редактировалось 39 раз.
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Простой генератор прямоуголньйх импульсов

Сообщение oleg110592 »

10ns если не ошибаюсь 100MHz, значит в микроконтроллере должна быть внутри такая частота (или выше) для тактирования таймера (если задачу на таймере делать). PIC Tiny AtMega получается отпадают.
АЦП 10 бит это 1024 значения с потенциометра. АЦП 12 бит это 4096 значения с потенциометра.
T3 10nS-1mS = 10nS - 1000000nS это 999990 значений с шагом 1nS.
При 10 бит АЦП можно регулировать с дискретностью 999990/1024=976,552734375nS
T1 0-2mS еще больше.
Реклама
Аватара пользователя
vilkin
Открыл глаза
Сообщения: 69
Зарегистрирован: Вс май 23, 2010 11:54:59
Откуда: Москва
Контактная информация:

Re: Простой генератор прямоуголньйх импульсов

Сообщение vilkin »

Altium, если вы замените 10ns на более вменяемую величину, то реализовать будет значительно проще.
Тем более дискретность АЦП (4096 отчетов для 12 битного) не позволит регулировать времянки с таким шагом.
Определитесь с минимальной дискретой по времени. Так ли вам нужно 10ns?
Я решал задачу с формированием сложной последовательности импульсов с дискретностью перестройки длительностей и фаз между ними 50нс на микроконтроллере STM32F103.
Задавались временные параметры импульсов по CAN интерфейсу, то есть не стояло проблемы дискретности АЦП.
Реализовать получилось при помощи каскадного включения таймеров. Чуть разогнав контроллер можно было выжать и 25нс...
А делать 10 нс... Либо контролер с большими частотами, либо FPGA. Ну или на аналоге сообразить.
Задача тяжело мне далась, но в итоге вылилась буквально в несколько строчек кода.
Для лучшего понимания процесса можно посмотреть аппликейшн от ST en.DM00236305.pdf AN4776 Application note General-purpose timer cookbook.
Но для не программиста задача ИМХО не подъемная. А альтруиста готового её решить найти будет сложно.
Altium
Прорезались зубы
Сообщения: 224
Зарегистрирован: Пт июл 18, 2014 11:44:32

Re: Простой генератор прямоуголньйх импульсов

Сообщение Altium »

Опс, ошибка.
Исправил фото с более нормалньйе время.
Они вообще даже не нужньйе столько жесткие.
Реклама
Эиком - электронные компоненты и радиодетали
akl
Друг Кота
Сообщения: 4445
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Простой генератор прямоуголньйх импульсов

Сообщение akl »

Такие времянки уже можно реализовать. Для задания, по мне, проще использовать энкодеры или кнопки ><. Типа такого видео
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Простой генератор прямоуголньйх импульсов

Сообщение oleg110592 »

тож думал в начале FPGA, но имхо хорошо получится и на: простенький микроконтроллер (для задания параметров с потенциометров) + простенький CPLD типа EPM240.
Примеров импульсных генераторов на Verilog в сети вроде было типа: http://www.referencedesigner.com/tutori ... _ex_09.php
CPLD платы недорого у китайцев:
https://ru.aliexpress.com/item/U119-Alt ... 48979.html
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Простой генератор прямоуголньйх импульсов

Сообщение BOB51 »

Примерно...
Жирненький АВР (или МК с аналогичной/подобной конфигурацией таймеров "пошустрее")
Т0 - базовый период
Т1 - первый участок по одному компаратору, второй участок по второму, общий период по ICP - третий участок как разница между общим периодом и суммарным временем обеих компараторов...
Однако там плавность перестройки определяется частотой тактирования (в разумных пределах).
:roll:
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Простой генератор прямоуголньйх импульсов

Сообщение Аlex »

ТС не сказал самого главного - какая необходима точность измеренных временных интервалов, и какова приемлемая дискретность изменения этих интервалов.
А то, к примеру, он хочет один из периодов - от нуля до ... А что в его понятии ноль ? Идеальная одновременность, или может и 10, 20, а может и 100 us будет вполне приемлемо.
Так же и с изменением, например, периода - от 100 us до 1000 us. А каков шаг изменения ? Может нужен не более 1 us, а может и 100 us будет достаточно.
Altium
Прорезались зубы
Сообщения: 224
Зарегистрирован: Пт июл 18, 2014 11:44:32

Re: Простой генератор прямоуголньйх импульсов

Сообщение Altium »

Да, пропустил сказать про шаг изменения Т1 - примерно с 2мс.
Точность и шаг дефазирования каналов Т2 - вообще не критично, можно с 200мкс и вьйше. В принципе, дефазирование каналов всегда нужно.
Шаг изменения Т3 - примерно 200мкс.
Все они не критические,.

И если есть возможность отобразить на дисплей время Т1 в RPM (оборотьй за минуту) и Т2 и Т3 в мкс, то будет супер.

У меня есть 2 броя STM32F100C4T6 платьй, а для доставка другие моделей с Алиекпресс надо ждать 20 дней.
Но если вьйберем вариант только с процессор типа Atmel/PIC - то я могу покупить любьй отсюда:
https://store.comet.bg/Catalogue/IC/Int ... AifQ%3D%3D
https://store.comet.bg/Catalogue/IC/Int ... AifQ%3D%3D
и сделать плата за 2 дня.
Последний раз редактировалось Altium Вс ноя 19, 2017 16:17:04, всего редактировалось 3 раза.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Простой генератор прямоуголньйх импульсов

Сообщение Аlex »

Вам бы в раздел "Работа" обратиться, там быстрее откликнутся. Не думаю, что такой проект будет дорого стоить.
Всё это делается элементарно на любом МК с парой-тройкой таймеров на борту.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Простой генератор прямоуголньйх импульсов

Сообщение oleg110592 »

если все не критично может подойдет на тупых задержках - по быстрому на тини13 (асм подзабыл, на АБ еще помнится :) )
теперь так:
Изображение
в протеусе все задается 3 потенциометрами:
Изображение
суперпрограмма :) :
Изображение
hex:
Tiny13_Pulse2.zip
(401 байт) 213 скачиваний
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Простой генератор прямоуголньйх импульсов

Сообщение Аlex »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3236913#p3236913"]теперь так:[/uquote] Немного не так :)
Начало T2 может быть до окончания T3. А в Вашем варианте это невозможно :)
Altium
Прорезались зубы
Сообщения: 224
Зарегистрирован: Пт июл 18, 2014 11:44:32

Re: Простой генератор прямоуголньйх импульсов

Сообщение Altium »

Привет Олег и спасибо за своевременная реакция.
Я в первьй пост в последний раз поменял на рисунок время за изменения Т2. Передумал и оказалось нуль (польное совпадение) не нужна. Можно начинать дефазирование с 200мкс и вьйше.

А через потенциометрьй нужно менять Т1, Т2, Т3 точно как по моей схеме, у вас получаеться другой принцип регулирования.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Простой генератор прямоуголньйх импульсов

Сообщение Starichok51 »

привет, Красимир!
2 мс - это 15000 RPM. не слишком ли круто?

12-битный АЦП тут не имеет смысла, так как и при 10-битном с помощью потенциометра не реально поймать точность установки ручки по 1/1024.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Altium
Прорезались зубы
Сообщения: 224
Зарегистрирован: Пт июл 18, 2014 11:44:32

Re: Простой генератор прямоуголньйх импульсов

Сообщение Altium »

Ну можно до 3мс минималньй период за Т1 в принципе.
Но как будем решать процентное соотношение для Т2 спрямо Т1, не знаю.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Простой генератор прямоуголньйх импульсов

Сообщение oleg110592 »

T2 можно посчитать с помощью пропорции из школьной программы, T3 можно пренебречь (+-1 mS роли не сыграет):
Если T1 это АЦП1, X искомое T2:
(АЦП1 / 2) ~ 1024
X ~ АЦП2
--------------------------
X = ((АЦП1 / 2) * АЦП2) / 1024 = (АЦП1 * АЦП2) / 2048
умножение и деление на ассемблере 16 бит чисел я забыл :( может кто возьмется...
Ответить

Вернуться в «Разные вопросы по МК»