Генератор импульсов заданной длительности и скважности.

AVR версия программы

Генератор импульсов заданной длительности и скважности.

Сообщение ADOWWW (ADOWWW) » 07 янв 2015, 19:41

Приветствую коллег !
Наконец нарисовалась возможность попрактиковаться в использовании ФК на реальном устройстве.
Хочу собрать Test Box для управления рубиновым Q-Switch лазером.
Там много разных управляющих сигналов, но это все элементарно и вопросов не вызывает.
Хочу использовать МК, для управления триггерным сигналом вспышки лампы накачки. Ну и индикации конечно.
Мне надо сгенерировать сигнал управляемой длительности от 50µS до 5000µS, при частоте следования от 0,2 - 20 Гц.
Шаг длительности 10 микросекунд, шаг частоты в диапазоне до 1 Гц - 0,1Гц, в диапазоне 1-20Гц - 1Гц. Установку частоты и длительности хочу сделать на энкодере с кнопкой.
Для переключения между режимами. Значит ли это, что мне надо будет использовать память ?
Грубое переключение думаю сделать на кнопках. Как отслеживать скорость энкодера, для реализации тонкой и грубой подстройки пока не разберал, думаю пока так сделаю, а потом может добавлю.
Есть еще необходимость отслеживать сигнал ошибки с модулей питания лазера и по нему прекращать генерацию, обрывая импульс в любом месте.
Но это вопрос второй. Можно просто тупо обрывать выходной сигнал (коротить на землю)

Пока набрасал скелет алгоритма и сразу возник вопрос.
Я уже эксперементировал с прерыванием по таймеру(генератор), повторив пару примеров с форума.
Но как мне сделать управляемую длительность импульсов, не трогая паузы между импульсами? А регулируя паузы, оставлять длительность неизменной.
Крутится в голове, что это все, не что иное как "программный ШИМ", только вот не могу сформировать путь решения. Где то на форуме уже читал про подобное, хотя в другом контексте.
Что то ищу эти сообщения, не могу найти. Вобщем нужет пинок, может даже три, для придания тушке нужного направления... :)

Да, еще один момент, на дисплей надо будет выводить еще и "напряжение драйвера" т.е еще туда надо впихнуть вольтметр. Незнаю, ресурсов 16той АТмеги хватит для этих извращений?


зы. Сейчас накидаю схему в Протеусе, чтоб предметно обсуждать.
Аватар пользователя
Ник: ADOWWW
Имя: ADOWWW
Практикант
Практикант
Информация о пользователе

Re: Генератор импульсов заданной длительности и скважности.

Сообщение Вячеслав (Вячеслав) » 08 янв 2015, 07:15

ADOWWW писал(а):сгенерировать сигнал управляемой длительности от 50µS до 5000µS,

Имел дело с инжекционным лазером ЛПИ-120 (средняя мощность 18 Вт)в приборе для медицины несколько лет назад. Логику управления прибором делал на дискретных элементах, формирователь запускающего импульса выполнил на 555АГ1 и транзисторе КТ938 именно из-за требования к нормированной длительности и фронту запускающего лазер импульса (20 В, 1 мкСек). Эти вопросы решены драйвером? Любопытно. И что такое: скорость энкодера?
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Разработчик
Разработчик
Информация о пользователе

Re: Генератор импульсов заданной длительности и скважности.

Сообщение mitrich (demon) » 08 янв 2015, 11:11

А чем апаратный шим не устраивает???

Отправлено с моего GT-I9070 через Tapatalk
Аватар пользователя
Ник: mitrich
Имя: demon
(Kaliningrad)
Продвинутый
Продвинутый
Информация о пользователе
Вернуться наверх

Re: Генератор импульсов заданной длительности и скважности.

Сообщение ADOWWW (ADOWWW) » 08 янв 2015, 18:47

Вячеслав писал(а):
ADOWWW писал(а):сгенерировать сигнал управляемой длительности от 50µS до 5000µS,

Имел дело с инжекционным лазером ЛПИ-120 (средняя мощность 18 Вт)в приборе для медицины несколько лет назад. Логику управления прибором делал на дискретных элементах, формирователь запускающего импульса выполнил на 555АГ1 и транзисторе КТ938 именно из-за требования к нормированной длительности и фронту запускающего лазер импульса (20 В, 1 мкСек). Эти вопросы решены драйвером? Любопытно. И что такое: скорость энкодера?

Инжекционный лазер, это полупроводник. У меня речь идет о твердотельном, рубиновом (как один из вариантов) лазере, с ксеноновой лампой накачки. Мне надо управлять только временем горения разряда в лампе. Излучение начинается самопроизвольно, после достижения определённой плотности фотонов, пока они не пробивают выходное зеркало. В случае же , когда лазер работает как Q-Switch, энергия накапливается в кристале долгое время и выпускается наружу через ячейку Поккельса в течении нескольких наносекунд. Так добиваются высокой мощности Например, тот, что я сейчас делаю, дает около 1,5МВт в импульсе.
Устройство на МК, всего лишь тест-бокс, будет использоватся для лабораторной доводки систем питания и охлаждения. Если интересно, могу рассказать как все устроенно. :)

Скорость , в смыслке если крутить быстро, будет прокручивать десятки (или сотни) если медленно то штатный режим.

mitrich писал(а):А чем апаратный шим не устраивает???

Я не разобрался, как можно оперативно менять частоту. А так, ничего против не имею :)
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: ADOWWW
Имя: ADOWWW
Практикант
Практикант
Информация о пользователе
Вернуться наверх

Re: Генератор импульсов заданной длительности и скважности.

Сообщение Вячеслав (Вячеслав) » 09 янв 2015, 07:28

С лазером понял, имел дело. Прожигал на испытаниях установки с твердотельным лазером металлический рубль выпуска 1961г.
По схеме: кварц можно не ставить, не загружай лишним. Просто в окошке укажи тактовую частоту.
По программе: обычно индикацию в основной цикл не ставят. Цикл там быстрый, а индикатор медленный, распараллель процессы. И кнопки: обычно они имеют дребезг, посмотри как их опрашивают микроконтроллером.
Просто совет: когда в программе задаешь переменную, то поставь её начальное значение и опиши назначение. Программа разрастается и можешь легко запутаться в именах А, В, АВ...Думаю, будет правильно, если назначение переменной можно смотреть в окне менеджера переменных. Ориентироваться проще.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Разработчик
Разработчик
Информация о пользователе
Вернуться наверх

Re: Генератор импульсов заданной длительности и скважности.

Сообщение ADOWWW (ADOWWW) » 10 янв 2015, 20:04

Переделал немного схему, чтоб соответствала железу.
В программу добавил переключение режимов и два вольтметра. Учел некоторые рекомендации Вячеслава.
Но что то намудрил с индикацией. Как только начинаю вращать энкодер начинается хаос на дисплее.
По отдельности и энкодер и вольтметр работает нормально. Что то упустил, но не могу найти.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: ADOWWW
Имя: ADOWWW
Практикант
Практикант
Информация о пользователе
Вернуться наверх

Re: Генератор импульсов заданной длительности и скважности.

Сообщение Enigm (Enigm) » 11 янв 2015, 03:56

Кто же в прерывание вставляет вывод на экран :shock: :)
Вот вытащил из прерывания твой вывод в маин и все заработало ))
Добавил переменную по которой заход на вывод будет только если срабатывало прерывание.
И да вывод RW индикатора был не подключен, без него не казало.
Test_BOX_Laser_Driver_3333.fcf_avr
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: Генератор импульсов заданной длительности и скважности.

Сообщение Enigm (Enigm) » 11 янв 2015, 04:16

Ах да.
В протеусе есть рабочие переменные резисторы.
Еще можно найти модели энкодеров.
Ну или сделать как я иногда делаю.
правда прот иногда на него ругается, но работе это не мешает.
вот можешь глянуть.
Test_BOX_Laser_Driver.DSN
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: Генератор импульсов заданной длительности и скважности.

Сообщение ADOWWW (ADOWWW) » 11 янв 2015, 07:38

Вот спасибо, такое простое решение, а в голову не пришло!
Я понял, что дело в перескоках с прерывания в тело, но дальше забуксовал...
А в схеме видать что то глюконуло. Исчесли пару соединений.

Сейчас хочу подсоединить аппаратный шим OC0(PB3).
Я уже пробывал его точно настроить, но как то стремно получается.

:( При компиляции выдает ошибку
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c: In function 'FC_CAL_PWM_Enable_Channel_1':
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c:671: error: 'COM0A0' undeclared (first use in this function)
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c:671: error: (Each undeclared identifier is reported only once
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c:671: error: for each function it appears in.)
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c:676: error: 'COM0A1' undeclared (first use in this function)
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c: In function 'FC_CAL_PWM_Disable_Channel_1':
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c:702: error: 'COM0A1' undeclared (first use in this function)
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c: In function 'FC_CAL_PWM_Set_Duty_8Bit_1':
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c:845: error: 'OCR0A' undeclared (first use in this function)
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c: In function 'FC_CAL_PWM_Set_Duty_10Bit_1':
C:\Program Files (x86)\Flowcode(AVR)\v5\CAL\/AVR\AVR_CAL_PWM.c:1121: error: 'OCR0A' undeclared (first use in this function)

Ничего не сделал, слушай, только вошел... (с)
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: ADOWWW
Имя: ADOWWW
Практикант
Практикант
Информация о пользователе
Вернуться наверх

Re: Генератор импульсов заданной длительности и скважности.

Сообщение Enigm (Enigm) » 11 янв 2015, 09:24

Ндя работает шим только 2 и 3 канал, порты PD4 и PD5
Надо что то править наверное, я не разбирался.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

След.

Вернуться в Flowcode AVR

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron