Страница 1 из 2
Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 12:12:04
cactuss
Добрый день,
нужен генератор однополярных импульсов в форме половины синусоиды с пропусками периодов. нарисовал картинку и прикрепил, дабы понятно было.
хотел воспользоваться звуковой картой компа, но она больше 20 КГц не тянет, а надо хотябы 100. а лучше до 500.
подумал что легче такое сделать на МК, поэтому тему создал в этом разделе. Тем более есть целых 2 Atmega8
регулировка частоты в конечном устройстве необязательна (главное чтоб ее можно было точно задать в прошивке), то же самое с количеством пропускаемых периодов.
как такое можно реализовать? заранее спасибо

Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 12:16:08
ploop
Можно, если использовать внешний параллельный ЦАП. R-2R например.
ШИМом такую частоту не выжать.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 12:17:16
МитяРа
cactuss писал(а):а лучше до 500.
А зачем, так много?
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 12:22:51
ublhjnt
а надо хотябы 100. а лучше до 500.
Обычно не частоту указывают при таком сигнале, а длительности имп. и паузы.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 12:30:59
ploop
Объясню:
Если использовать МК, и делать 10 семплов на импульс, то нам надо выдавать на порт данные с частотой 1МГц. Меги8(А) могут работать до 20МГц, т.е. имеем 20 тактов на чтение и выдачу байта - вполне реально. При этом имеем частоту на выходе не более 100кГц.
Но я бы сделал такую схему на дискретных элементах: генератор синуса на ОУ, счетчик (или триггер) для пропуска чётных (нечётных) периодов, ключ. В такой реализации легко получить плавную регулировку частоты от десятков кГц до нескольких МГц, при этом имеем чистый кусок синуса (без шумов) без всяких проблем...
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 12:38:48
cactuss
не ожидал что форум работает так быстро ))
спасибо за ответы, с МК понял, нашел что такое R2R. возможно так и сделаю.
ploop, не могли бы вы дать схемку аналогового?
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 12:42:36
ploop
Готовую - нет, это я только сейчас придумал

Найдите отдельно генератор синуса, и аналоговый ключ (это как правило отдельная микросхема), а так же T-триггер. Надо будет придумать формирователь импульсов при переходе синуса через ноль, и спаять макет.
Нужен будет осциллограф полюбому, без него - никак.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 13:03:39
cactuss

оу. напугали...
лучше таки на МК сделать. ибо деталей кроме резисторов не надо, в отладке проблем скорее всего не возникнет.
и еще такая мысль: может использовать генератор синуса на рассыпухе, после него поставить диодный мост, чтоб получить положительные полупериоды, а считать их микроконтроллером, и им же включать-выключать подачу импульса на нагрузку с помощью какого нибудь полевика?
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 13:11:12
ploop
Я про то и говорю, но тогда вместо МК справится обычный триггер. Нужно только придумать схему управления этим самым синусом (включать/выключать)
Или чисто на МК, если устроит 100кГц. Деталей меньше, настройки тоже. Программу лучше на ассемблере, там всего один цикл будет, и цикл задержки.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 13:30:50
cactuss
хмм.. понятно.
буду пробовать на МК.
ассемблер не знаю, поэтому буду пытаться писать на С. сложного вроде там ничего нет

Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 13:36:59
МитяРа
cactuss писал(а):буду пытаться писать на С. сложного вроде там ничего нет
Сложного может и ничего, но объём кода программы и быстродействие -

Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 13:48:06
pyzhman
Чего, чего?
1. Задаемся N значений.
2. Выбираем из таблицы синуса.
3. Выкидываем в порт.
4. Если не N значение, то повторяем с п.2
5. Курим.
6. Прыжок на п.1
Какой объем кода, какое быстродействие? Компилятор подставит такие машкода, ахнешь.
Приветствую МитяРа и ploop.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 13:50:56
МитяРа
Приветствую, пушистый, pyzhman..
Ты хочешь поспорить с ploop-ом, что программа на Си будет короче или хотя-бы равна, коду написанному на ASMе?
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 13:53:47
pyzhman
Я хочу посмотреть, что напишет cactuss.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн янв 23, 2012 13:59:40
ploop
Не, такой примитивный цикл и сёвый компилятор отлично отработает. Объём кода? Ну, блин, пару лишних слов из свободных 8 кило погоды не сделают. Пусть пишет, на чём умеет, главное - поменьше разглагольствовать.
Это мы на работе, нам можно

Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Сб янв 28, 2012 20:42:52
cactuss
спасибо всем за полезную информацию
сделал на attiny2313.
мега8 почему то больше 20кгц не давала.
тинька без проблем дает 60 кгц.
сигнал довольно гладкий.
схема - r2r преобразователь. резисторы 2к и 1к
код программы - наипростейший. команды типа PORTB=127; идут друг за другом. даже циклы не использовал.
значения посчитаны в экселе, там же и сгенерирован столбик всех команд. на все ушло минут 10.
картинку выхода с АЦП прикрепил.
схема крайне полезна в быту, т.к. за 100р получается генератор сигнала произвольной формы
UPD: добавил картинку синусоиды. почти 130кгц, сигнал довольно ровный.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Сб янв 28, 2012 23:31:22
usav
А если между выходом R2R и землей подключить кондер где нибудь 1000 пик
(поиграйся разными), то и вовсе сигнал гладенький станет.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Вс янв 29, 2012 00:00:18
ploop
код программы - наипростейший. команды типа PORTB=127; идут друг за другом. даже циклы не использовал.
Ну и правильно. Проблемы надо решать по мере их поступления. У вас таким макаром памяти на тиньке хватит почти на 4 формы с 8-битным разрешением.
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Пн мар 05, 2012 23:33:52
Aaantonnn15
Привет всем форумчанам!Помогите немного запутовшемуся коту... Есть МК, есть ЦАП R2R, есть таблица синусов... как теперь построить таблицу значений(байтов), которые будут выводиться в порт?Как я понимаю нужно взять выход логической 1 микроконтроллера, проумножать на N колличества значений из таблицы синусов и получиться массив данных о плавном изменении напряжения. А, что потом делать ума не приложу. Поправьте если не прав!
Re: Генератор импульсов на AVR (подскажите как сделать)
Добавлено: Вт мар 06, 2012 06:52:23
ploop
нужно взять выход логической 1 микроконтроллера, проумножать на N колличества значений из таблицы
Раз пять прочёл, но не понял....
Нужно просто взять АДРЕС таблицы, достать значение, вывести в порт, подождать, увеличить адрес и начать сначала.