AVR в качестве конвертера меандра в синус?

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Пт дек 05, 2014 18:19:51

Сообщение Memorized »

Здравствуйте, котаны.
Буквально несколько дней как разбираюсь с МК, поэтому если кому-то вопрос покажется..мм.. необычным, просьба отнестись с пониманием. На данный момент знаком лишь с архитектурой МК и простейшими кодами на Си, как то назначить порты на вход-выход, повесить 1 или 0, а из программ повторена только детская "помигай светодиодом" и т.д., и в настоящее время изучаю тему дальше.

Собственно задача в общих черта следующая.
Есть генератор меандра 40 килогерц на таймере NE555, синхронизируемый внешним источником плюс минус 5 килогерц.
Цель - получить синусоиду, частота которой равна частоте меандра.
То бишь, 40 килогерц меандра перевести в 40 килогерц синуса, частота уплыла в 35 килогерц меандра, значит синус тоже будет 35 килогерц. Синхронизация 1 в 1.
Я много слышал о том, что с помощью МК можно синтезировать синус, это одна из причин, почему в качестве решений вспомнил его.

Если такая задача вполне реальна, подскажите, пожалуйста, на что в первую очередь стоит обратить внимание и куда следует зарываться? А то информации валом и нет четкого понимания какая конкретно сейчас нужнее.
Нужен для этого навороченный МК или той же тини13 будет достаточно? Возможно 555 здесь будет лишним и всё можно реализовать на одном только МК?
Спасибо.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Может, просто ФНЧ? Отфильтровать меандр — будет синус.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

МК измеряет частоту входного синала, а на выходе
поставить нормальный ЦАП. или резисторный. , можно кондером сгладить выходной сигнал.
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Пт дек 05, 2014 18:19:51

Сообщение Memorized »

Порывшись в инете, нашел схему, частично реализующую поставленную задачу, а именно синус на выходе (с дальнейшей раскачкой пуш-пулл).
http://www.yysup.narod.ru/schem/1fase_g.html
1fase_g.gif
Схема
(9.68 КБ) 712 скачиваний
Только здесь частота генерируется самим МК и задается потенциометром, а не синхронизацией внешним сигналом.
Выходная часть полностью устраивает. Но ведь ассемблер...

Код: Выделить всё

;*************************************************
;	ГЕНЕРАТОР УПРАВЛЯЕМОЙ СИНУСОИДЫ.
;*************************************************
.include	"tn13def.inc"
; управление частотой с помощью OSCCAL.
;	 ИМЕНА РЕГИСТРОВ.
 .def	ZER		= r14	;

 .def	TMP_0	= r16	; 
 .def	TMP_1	= r17	; 

 .def	POL		= r22	;
 .def	FASE	= r23	;
 .def	SOST	= r24	;
 .def	AD_H	= r25	;
;	ВЫХОДЫ/ВХОДЫ.
 .equ	Out_A	= 0		;
 .equ	Out_B	= 1		;

;**************************************
 .cseg	
 .org		$000
 		rjmp	Reset		;	 
; .org		TIM0_OVF0addr	; по переполнению Т0.
 .org		TIM0_COMPAaddr
 		rjmp	ObnA		;
 .org		TIM0_COMPBaddr
		rjmp	ObnB		;
 .org		ADCaddr			;
 		rjmp	Speed		;
;***********************************************
 .org		$00A
 Reset:		; инициализация.
		ldi		TMP_0,low(RAMEND)	; указание
    	out		SPL,TMP_0			; вершины
		clr		ZER					; =0. 
		clr		SOST				; =0.
		clr		FASE				; =0.
		clr		POL					; =0.
		out		OSCCAL,ZER			;
		clr		ZH					;
		rcall	Pio					;
		rcall	T_0					;
		rcall	AD_u				;
		sei
;*********************************
 Main:
 		rjmp	Main				;
;*********************************
 ObnA:
 ObnB:
		ldi		ZL,low(2*Sin)		;
		add		ZL,FASE				;
		lpm							;
		sbrc	POL,0				;
		rjmp	Negat				;
; положительная полуволна.
		out		OCR0A,r0			;
		rcall	Sos_t				;
 		reti
 Negat: ; отрицательная полуволна.
 		out		OCR0B,r0			;
		rcall	Sos_t				;
 		reti
;********
 Sos_t: ; ФАЗИРОВКА.
; положительная полуволна.
		inc		SOST				;
		mov		FASE,SOST			;
		cpi		SOST,25				; 
		brsh	Neg_fa				;
 		ret

 Neg_fa: ; 
; отрицательная полуволна.
 		ldi		POL,$01				;
		ldi		TMP_1,(1<<OCF0B)	;TOV0 |
		out		TIFR0,TMP_1			;
		out		TIMSK0,TMP_1		;
		ldi		TMP_0,(1<<COM0B1|1<<COM0B0|1<<WGM01|1<<WGM00);
		out		TCCR0A,TMP_0		;
		cpi		SOST,49				; 
		brsh	Nach				;
		subi	FASE,24				;
 		ret

 Nach: ; зацикливание.
; 		clr		SOST				; =0.
;		clr		FASE				; =0.
		ldi		SOST,$01			;
		ldi		FASE,$01			;
		clr		POL					; =0.
		ldi		TMP_1,(1<<OCF0A)	; 1<<OCF0B|
		out		TIFR0,TMP_1			;
		out		TIMSK0,TMP_1		;
		ldi		TMP_0,(1<<COM0A1|1<<WGM01|1<<WGM00);
		out		TCCR0A,TMP_0		;
 		ret
;**************************************
 Speed: ; ПРЕРЫВАНИЕ АЦП.
; установка частоты синусоиды.
;**************************************
		in		TMP_1,ADCH			;
		lsr		TMP_1				;
		out		OSCCAL,TMP_1		;
 		reti
;************************************
;	ИНИЦИАЛИЗАЦИЯ.
;************************************
 Pio:
 		ldi		TMP_0,(1<<Out_B)	;
		out		PortB,TMP_0			;
		ldi		TMP_1,(1<<Out_A|1<<Out_B);
		out		DDRB,TMP_1			;
 		ret
;***********
 T_0:
		out		GTCCR,ZER			;
		out		TCNT0,ZER			;
		ldi		TMP_0,(1<<COM0A1|1<<WGM01|1<<WGM00);
		out		TCCR0A,TMP_0		;
		out		OCR0A,ZER			;
		out		OCR0B,ZER			;
		ldi		TMP_1,(1<<OCF0B)	;TOV0 1<<OCF0B|
		out		TIFR0,TMP_1			;
		out		TIMSK0,TMP_1		;
		ldi		TMP_0,(1<<CS00)		;
		out		TCCR0B,TMP_0		;
 		ret
;***********
 AD_u:
		out		DIDR0,ZER			;
		out		ADCSRB,ZER			;
		ldi		TMP_0,(1<<ADLAR|1<<MUX1); вход 2 РВ4.
		out		ADMUX,TMP_0			;
		ldi		TMP_0,(1<<ADEN|1<<ADSC|1<<ADATE|1<<ADIF|1<<ADIE|1<<ADPS2|1<<ADPS1|1<<ADPS0);
		out		ADCSRA,TMP_0		;
 		ret
;**************************************
.org	$60
 Sin:	; таблица синуса.
;
 .db	1,33,65,96,125,152,177,198
 .db	217,231,241,248,250,248,241,231	; 
 .db	217,198,177,152,125,96,65,33
 .db	1
Вложения
PWM.JPG
Осцилограмма
(23.14 КБ) 682 скачивания
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Автор не привел никаких требований к качеству синуса и диапазона частот в котором синус может меняться.
Реклама
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Пт дек 05, 2014 18:19:51

Сообщение Memorized »

КРАМ писал(а):Автор не привел никаких требований к качеству синуса и диапазона частот в котором синус может меняться.
Точность не ювелирная.
Это генератор для УЗ-ванны.
В настоящее время меандр приходится преобразовывать в синус с помощью пассивных LC-фильтров в силовой цепи.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

А с чем, и главное зачем надо синхронизироваться с каким-то сигналом?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Memorized писал(а): В настоящее время меандр приходится преобразовывать в синус с помощью пассивных LC-фильтров в силовой цепи.
Излучателем является пьезо или магнитострикционный преобразователь?
Вообще то ШИМ-синус практически мало чем будет отличаться от меандра в предложенном применении. Фильтр все равно потребуется.
Если фильтр перенести ДО выходного драйвера, тогда сам драйвер перестанет быть ключевым и станет классическим линейным усилителем с бесподобно низким КПД.
На мой взгляд, задача поставлена без предварительного обдумывания.
:dont_know:
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс май 10, 2015 12:25:31
Откуда: Челябинск

Сообщение kren700 »

КРАМ писал(а):
Memorized писал(а): В настоящее время меандр приходится преобразовывать в синус с помощью пассивных LC-фильтров в силовой цепи.
Излучателем является пьезо или магнитострикционный преобразователь?
Если фильтр перенести ДО выходного драйвера, тогда сам драйвер перестанет быть ключевым и станет классическим линейным усилителем с бесподобно низким КПД.
На мой взгляд, задача поставлена без предварительного обдумывания.
:dont_know:
Ага, мне кажется спалит всё нахрен.
Я некоторое время занимался эхолотами на пьезокерамике (а именно излучателями и приёмниками + индикация) и чуть-чуть изучал магнитострикцию. Там многое строится на резонансе.
Если из него выйти - мощность падает, либо усилитель горит.
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Пт дек 05, 2014 18:19:51

Сообщение Memorized »

Совершенно верно, очень важен резонанс. Просто в случае готового синуса сильно упрощается настройка и отладка, чем колдовать над меандром и делать из ужа ежа.
http://youtu.be/Vs4FD8Ot96Y?list=PLQhIa ... 97yQbfzY4a

Для интересующихся оставлю документ в аттаче на несколько страниц, там всё расписано от и до. С осциллограммами и симуляцией.
Если очень вкратце - для несинусоидального сигнала пьезокерамический преобразователь представляет собой чисто ёмкостную нагрузку.

По теме - и всё же какие варианты могут быть? Сам МК потянет синус 40 килогерц? Совсем-совсем идеальный синус не нужен, нужен максимально похожий на него.
Вложения
Изучаем ППК по шагам.pdf
(632.58 КБ) 766 скачиваний
Собутыльник Кота
Аватара пользователя
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Сообщение B@R5uk »

Два интегратора на ОУ решат задачу на ура и не будет никаких проблем с АЦП, ШИМом, синхронизацией. После первого интегратора будет пила, после второго -- куски парабол склеенные гладко при пересечении нуля (на глаз на осциллографе не отличите от синуса -- сам проверял). Амплитуда будет зависеть от частоты (обратно пропорционально), но не думаю, что для вас это будет проблемой.
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс май 10, 2015 12:25:31
Откуда: Челябинск

Сообщение kren700 »

B@R5uk писал(а):Амплитуда будет зависеть от частоты (обратно пропорционально), но не думаю, что для вас это будет проблемой.
АРУ сделает.
Memorized писал(а):Сам МК потянет синус 40 килогерц? Совсем-совсем идеальный синус не нужен, нужен максимально похожий на него.
Разве ШИМ сейчас не встроен в МК ?, или таймеры ?
Разве МК сейчас работают не на 20-100 МГц ?

Я занимался декодировкой Манчестера-2 с частотой 15 кГц на проце частотой 2 МГц.
А вам надо всего лишь тупо генерить меандр. Ну вы даёте.
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Пт дек 05, 2014 18:19:51

Сообщение Memorized »

Gudd-Head писал(а):А с чем, и главное зачем надо синхронизироваться с каким-то сигналом?
Для АПЧ.
Пьезокерамика уз-ванны в качестве нагрузки имеет высокую добротность. Несовпадение частоты генератора с резонансной частотой ППК выводит систему из режима. Туда-сюда 100-150 герц и устройство не работает.
Частота плавает постоянно из-за банальной болтанки жидкости и неравномерного заполнения ванны предметами, которые в ней.

Вот рабочая схема в общих чертах, ток через транзисторы при правильном согласовании нагрузки с генератором - синус.
Изображение
2153 построена на базе ne555, тот синхронизируется аналогичным образом.
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

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

Memorized писал(а):Сам МК потянет синус 40 килогерц?
Синус синусу рознь. Ровно как и микроконтроллер микроконтроллеру.
Для примерного подсчёта :
Берёте частоту синуса и умножаете её на кол-во шагов при желаемом разрешении. Это будет частота дискретизации для прорисовки вашего синуса. Далее, учитывая, что частота ШИМа должна быть хотябы раз в 10 выше частоты дискретизации, умножаете эту величину ещё на 10. Получите частоту ШИМа. Далее, умножаете эту частоту ещё на битность ШИМа, получаете частоту тактирования таймера ШИМа.
Пример для 8-ми битного синуса и 8-ми битного ШИМа :
40000 Гц * 256 (8 бит синус) * 10 * 256 (8 бит ШИМ) = ~26.2 ГГц :)
Вот и прикиньте, потянет ли МК или не потянет...
Контактная информация:
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Пт дек 05, 2014 18:19:51

Сообщение Memorized »

Спасибо. С шимом понятно - 8 бит захлебнется.
А что по поводу этой статьи скажете?
http://avr-start.ru/?p=749
Если грубо подставить в текст статьи мои условия и взять 8 МГц, то на частоту 40 кГц придётся 200 значений на период.

Есть смысл тогда смотреть в сторону AD9850?
https://www.youtube.com/watch?v=ea3G5N8-Mxo
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс май 10, 2015 12:25:31
Откуда: Челябинск

Сообщение kren700 »

Аlex писал(а):
Memorized писал(а):Сам МК потянет синус 40 килогерц?
Синус синусу рознь.
40000 Гц * 256 (8 бит синус) * 10 * 256 (8 бит ШИМ) = ~26.2 ГГц :)
Вот и прикиньте, потянет ли МК или не потянет...
В МЕМОРИЗ :))
Memorized писал(а):Спасибо. С шимом понятно - 8 бит захлебнется.
В МЕМо... А-а-а, ты сам так и называешься. Поняяяятно. :))
Memorized писал(а):Если грубо подставить в текст статьи мои условия и взять 8 МГц, то на частоту 40 кГц придётся 200 значений на период.
Есть смысл тогда смотреть в сторону AD9850?
https://www.youtube.com/watch?v=ea3G5N8-Mxo
Ну ёёёлки-пааалки.
Подумать только. В 1960-е годы придумали оптическое БПФ, Прямой синтез, Голографическую осциллоскопию.
И тут - такое...
В Мемориз... :))

Котаны, не поступайте так же. В универе - Учитесь , напьётесь ещё за свою жизнь.
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс май 10, 2015 12:25:31
Откуда: Челябинск

Сообщение kren700 »

две обезъяны стучат электронным микроскопом по кокосу.
Родился
Аватара пользователя
Сообщения: 11
Зарегистрирован: Пт дек 05, 2014 18:19:51

Сообщение Memorized »

Рад, что как обезьяна смог сделать вам смешно.
Есть область знаний, в которой вы так же плаваете, как и я в программировании - человеку сложно быть специалистом во всём.
Можно козырять номерами манчестера (я даже не знаю что это, наверное потому, что мне это не надо было), можно было просто ответить по существу.

Спасибо всем отписавшимся.
Модераторы - тема на ваше усмотрение.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 374
Зарегистрирован: Пт июн 12, 2015 09:21:56
Откуда: Челяба-сити

Сообщение bad2cat »

Memorized писал(а):Можно козырять номерами манчестера (я даже не знаю что это, наверное потому, что мне это не надо было), можно было просто ответить по существу.
Ну эмблему-то Циски наверняка видели?
Это и есть спектр Манчестера-2. И номеров там других больше нет.
Стыдно не знать элементарные вещи. Это как не знать про существование RS-232 или Centronics.
Я тоже, в некотором роде, радиоинженер...
Электрический кот
Аватара пользователя
Сообщения: 1073
Зарегистрирован: Вт май 22, 2012 19:29:06

Сообщение Foton-4n »

А разве для генерации на резонансной частоте не аналоговые генераторы делают? Которые как раз генерят на резонансной частоте? Ведь тут оно на порядок проще. В цифре тут надо крутой АЦП и ЦАП и ядро шустрое, тут DSP я думаю справится с задачей. В тему заглянул по причине что мне надо генератор синуса но правда до 2КГц. Но я буду на принципе сделаю, пила и на неё накладывается табличные значения можно получить любую форму.
Ответить

Вернуться в «AVR»