Страница 2 из 2

Re: Построить синус на микроконтроллере?

Добавлено: Вс ноя 21, 2010 15:45:20
Chip115
Не совсем понимаю как написать таблицу на первые 90гр. Если у меня весь синус будет разбит на 256, то 90 гр. я разбиваю на 64. т.е вычисляю значение sin(x) при х=1,4*n; n=0...90. и заношу эти значения в массив. Я так понял? Мне требуется получить синус используя ШИМ. Пока я выход мк подцеплю на RC цепочку... думаю за аналог индуктивности сойдет. в конечном итоге мне надо завести асинхронный двигатель. управлять частотой оборотов планирую изменяя частоту питающего его напряжения... т.е изменяя скважность ШИМ.

Re: Построить синус на микроконтроллере?

Добавлено: Вс ноя 21, 2010 15:51:53
Davlet
Если в системе команд микроконтроллера есть умножение, то есть смысл воспользоваться таким алгоритмом.
Вычисляем необходимые константы A=sin(2*pi*Fs/Fd) и B=2*cos(2*pi*Fs/Fd), где Fd - частота дискретизации, Fs- частота сигнала.
Первый отсчет X(0)=0, второй X(1)=A. Третий (n=2) и далее X(n)=B*X(n-1)-X(n-2). Т.е. вычисление следуещего значения синусоиды сводится к умножению текущего значения на константу B и вычитанию предыдущего.

Re: Построить синус на микроконтроллере?

Добавлено: Вс ноя 21, 2010 15:53:26
Meteor
Сделай в excele таблицу синуса с шагом 1/256 содержащий 1 период.
Затем все значения умножай на 128 и прибавь 128- избавишься от отрицательных составляющих.
Результат переведи в целочисленный вид, а в послеующем в двоичные значения.
Для формирования, настраивай таймер на период Т=1/(50*256), с этим интервалом меняй значения в регистре OCR.

Re: Построить синус на микроконтроллере?

Добавлено: Вс ноя 21, 2010 17:36:26
Chip115
я что то наверное не так сделал... вот что получилось. как ЭТО можно перевести в целочисленное значение?

Re: Построить синус на микроконтроллере?

Добавлено: Вс ноя 21, 2010 18:15:57
Meteor
Вот держи тут от 1 до 254 - как раз тебе хватит

Re: Построить синус на микроконтроллере?

Добавлено: Вс ноя 21, 2010 18:35:45
Chip115
Спасибо! сча посморю )

Re: Построить синус на микроконтроллере?

Добавлено: Вс ноя 21, 2010 18:38:31
Meteor
Я бы сделал так. Таймер 0 - генерит.
Таймер 1 - с периодом 1/(50*256) записывает в Таймер 0 новое значение

Re: Построить синус на микроконтроллере?

Добавлено: Пн ноя 22, 2010 04:18:54
Chip115
Ясно. T0 - ШИМ
Т1 - задает значения из таблицы с периодом 1/(F*256) в Т0, тем самым изменяя скважность импульсов. F - частота требуемого синуса. Изменяя параметр F буду управлять частотой выходного сигнала.

Re: Построить синус на микроконтроллере?

Добавлено: Пн ноя 22, 2010 08:19:09
КРАМ
Ммм-дяяя!
Господа... У меня такое ощущение, что вы пытаетесь сделать не синус для асинхронника, а генератор НЧ с прямым синтезом частоты...
Во первых совершенно не требуется делать 256 значений на период. За глаза хватит 64-х (а ежели немного посчитать, то и 32-х будет с избытком).
Второе. Полный период и знаковое представление тоже не требуется. Это следует из схемотехники управления мощной нагрузкой на переменном токе.
Вспомним как делают выходные ШИМ драйверы для асинхронников.
Прежде всего это МОСТОВАЯ схема. Иначе не получить знакопеременного напряжения из однополярного питания частотного преобразователя. Управление вертикальными стойками ключей этой мостовой схемы делают через бутстрепные драйверы. А соответственно драйверами управляют от четырехфазного модуля ШИМ микроконтроллера.
Этот самый четырехфазный модуль требует ТОЛЬКО ПОЛУПЕРИОДНОЙ ТАБЛИЦЫ синуса.
Знак формируется переворотом моста.
В таких раскладах считать аналитически синус - глупость несусветная. Это займет и места больше во флеше и потребует ресурсов скорости больше. А значит при равной тактовой у контроллера понизит частоту ШИМа и увеличит габариты цепей фильтрации.
Так что формирование однофазного синуса для асинхронника - задача давно решенная, совершенно простая и не требующая практически никаких ресурсов от МК. В отличие от векторного управления трехфазными двигателями...

Re: Построить синус на микроконтроллере?

Добавлено: Пн ноя 22, 2010 11:14:03
Meteor
КРАМ, Вы конечно правы в том что можно и нужно делать меньшее число и .д и т.п.
Но лучше дать чуток с избытком - Чип115-й потом сам разберется что ему надо, а чего не надо.
Тем более, когда у Чипа115-го проблемы с расчетом были.

Re: Построить синус на микроконтроллере?

Добавлено: Пн ноя 22, 2010 12:24:45
Chip115
ну у мя тактовая 24,5 МГц. Да и 32 КБ памяти. думаю влезет. Но я учту то что Вы сказали. Просто я впервые пытаюсь получить синус на мк. потому столько вопросов.

Re: Построить синус на микроконтроллере?

Добавлено: Пн ноя 22, 2010 13:31:53
КРАМ
Я еще раз заостряю Ваше внимание:
Дело не в получении синуса вообще, а в конкретной его реализации для синтеза знакопеременного напряжения на силовой нагрузке.
Т.е. Вам нужно познакомится с диаграммой синус-ШИМа для полномостовой схемы.
А какая дискретизация нужна для таблицы синуса - разберетесь сами.

Re: Построить синус на микроконтроллере?

Добавлено: Пн ноя 22, 2010 18:59:37
Chip115
Спасибо! Сча буду разбираться.