Генератор импульсов на AVR (подскажите как сделать)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Пн дек 01, 2008 16:56:19

Сообщение cactuss »

Добрый день,

нужен генератор однополярных импульсов в форме половины синусоиды с пропусками периодов. нарисовал картинку и прикрепил, дабы понятно было.

хотел воспользоваться звуковой картой компа, но она больше 20 КГц не тянет, а надо хотябы 100. а лучше до 500.

подумал что легче такое сделать на МК, поэтому тему создал в этом разделе. Тем более есть целых 2 Atmega8

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

как такое можно реализовать? заранее спасибо :)
Вложения
P1100036C.JPG
форма импульса
(54.09 КБ) 998 скачиваний
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Можно, если использовать внешний параллельный ЦАП. R-2R например.
ШИМом такую частоту не выжать.
Реклама
Модератор
Аватара пользователя
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

cactuss писал(а):а лучше до 500.
А зачем, так много?
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Друг Кота
Аватара пользователя
Сообщения: 4446
Зарегистрирован: Вт мар 02, 2010 17:05:19
Откуда: Белоруссия, Минск

Сообщение ublhjnt »

а надо хотябы 100. а лучше до 500.
Обычно не частоту указывают при таком сигнале, а длительности имп. и паузы.
Всё можно наладить,если вертеть в руках достаточно долго!
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Объясню:
Если использовать МК, и делать 10 семплов на импульс, то нам надо выдавать на порт данные с частотой 1МГц. Меги8(А) могут работать до 20МГц, т.е. имеем 20 тактов на чтение и выдачу байта - вполне реально. При этом имеем частоту на выходе не более 100кГц.

Но я бы сделал такую схему на дискретных элементах: генератор синуса на ОУ, счетчик (или триггер) для пропуска чётных (нечётных) периодов, ключ. В такой реализации легко получить плавную регулировку частоты от десятков кГц до нескольких МГц, при этом имеем чистый кусок синуса (без шумов) без всяких проблем...
Реклама
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Пн дек 01, 2008 16:56:19

Сообщение cactuss »

не ожидал что форум работает так быстро ))

спасибо за ответы, с МК понял, нашел что такое R2R. возможно так и сделаю.

ploop, не могли бы вы дать схемку аналогового?
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Готовую - нет, это я только сейчас придумал :)
Найдите отдельно генератор синуса, и аналоговый ключ (это как правило отдельная микросхема), а так же T-триггер. Надо будет придумать формирователь импульсов при переходе синуса через ноль, и спаять макет.
Нужен будет осциллограф полюбому, без него - никак.
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Пн дек 01, 2008 16:56:19

Сообщение cactuss »

:shock: оу. напугали...
лучше таки на МК сделать. ибо деталей кроме резисторов не надо, в отладке проблем скорее всего не возникнет.

и еще такая мысль: может использовать генератор синуса на рассыпухе, после него поставить диодный мост, чтоб получить положительные полупериоды, а считать их микроконтроллером, и им же включать-выключать подачу импульса на нагрузку с помощью какого нибудь полевика?
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Я про то и говорю, но тогда вместо МК справится обычный триггер. Нужно только придумать схему управления этим самым синусом (включать/выключать)

Или чисто на МК, если устроит 100кГц. Деталей меньше, настройки тоже. Программу лучше на ассемблере, там всего один цикл будет, и цикл задержки.
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Пн дек 01, 2008 16:56:19

Сообщение cactuss »

хмм.. понятно.

буду пробовать на МК.
ассемблер не знаю, поэтому буду пытаться писать на С. сложного вроде там ничего нет :)
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

cactuss писал(а):буду пытаться писать на С. сложного вроде там ничего нет
Сложного может и ничего, но объём кода программы и быстродействие - :( :cry:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Чего, чего?
1. Задаемся N значений.
2. Выбираем из таблицы синуса.
3. Выкидываем в порт.
4. Если не N значение, то повторяем с п.2
5. Курим.
6. Прыжок на п.1

Какой объем кода, какое быстродействие? Компилятор подставит такие машкода, ахнешь.
Приветствую МитяРа и ploop.
Docendo discimus
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

Приветствую, пушистый, pyzhman..

Ты хочешь поспорить с ploop-ом, что программа на Си будет короче или хотя-бы равна, коду написанному на ASMе?
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Я хочу посмотреть, что напишет cactuss.
Docendo discimus
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Не, такой примитивный цикл и сёвый компилятор отлично отработает. Объём кода? Ну, блин, пару лишних слов из свободных 8 кило погоды не сделают. Пусть пишет, на чём умеет, главное - поменьше разглагольствовать.

Это мы на работе, нам можно :)))
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Пн дек 01, 2008 16:56:19

Сообщение cactuss »

спасибо всем за полезную информацию
сделал на attiny2313.
мега8 почему то больше 20кгц не давала.
тинька без проблем дает 60 кгц.
сигнал довольно гладкий.

схема - r2r преобразователь. резисторы 2к и 1к
код программы - наипростейший. команды типа PORTB=127; идут друг за другом. даже циклы не использовал.
значения посчитаны в экселе, там же и сгенерирован столбик всех команд. на все ушло минут 10.

картинку выхода с АЦП прикрепил.

схема крайне полезна в быту, т.к. за 100р получается генератор сигнала произвольной формы :)

UPD: добавил картинку синусоиды. почти 130кгц, сигнал довольно ровный.
Вложения
tiny2313-32step-8bit-sine.jpg
синус
(47.82 КБ) 607 скачиваний
tiny2313-32step-8bit.jpg
выход с АЦП
(33 КБ) 612 скачиваний
Контактная информация:
Родился
Сообщения: 9
Зарегистрирован: Вс дек 04, 2011 18:55:06
Откуда: Киев

Сообщение usav »

А если между выходом R2R и землей подключить кондер где нибудь 1000 пик
(поиграйся разными), то и вовсе сигнал гладенький станет.
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

код программы - наипростейший. команды типа PORTB=127; идут друг за другом. даже циклы не использовал.
:)
Ну и правильно. Проблемы надо решать по мере их поступления. У вас таким макаром памяти на тиньке хватит почти на 4 формы с 8-битным разрешением.
Встал на лапы
Аватара пользователя
Сообщения: 101
Зарегистрирован: Пт авг 20, 2010 18:31:05

Сообщение Aaantonnn15 »

Привет всем форумчанам!Помогите немного запутовшемуся коту... Есть МК, есть ЦАП R2R, есть таблица синусов... как теперь построить таблицу значений(байтов), которые будут выводиться в порт?Как я понимаю нужно взять выход логической 1 микроконтроллера, проумножать на N колличества значений из таблицы синусов и получиться массив данных о плавном изменении напряжения. А, что потом делать ума не приложу. Поправьте если не прав!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

нужно взять выход логической 1 микроконтроллера, проумножать на N колличества значений из таблицы
Раз пять прочёл, но не понял....

Нужно просто взять АДРЕС таблицы, достать значение, вывести в порт, подождать, увеличить адрес и начать сначала.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»