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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Не совсем понимаю как написать таблицу на первые 90гр. Если у меня весь синус будет разбит на 256, то 90 гр. я разбиваю на 64. т.е вычисляю значение sin(x) при х=1,4*n; n=0...90. и заношу эти значения в массив. Я так понял? Мне требуется получить синус используя ШИМ. Пока я выход мк подцеплю на RC цепочку... думаю за аналог индуктивности сойдет. в конечном итоге мне надо завести асинхронный двигатель. управлять частотой оборотов планирую изменяя частоту питающего его напряжения... т.е изменяя скважность ШИМ.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Davlet
Открыл глаза
Сообщения: 56
Зарегистрирован: Пт янв 26, 2007 20:08:21

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

Сообщение 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 и вычитанию предыдущего.
Реклама
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Сделай в excele таблицу синуса с шагом 1/256 содержащий 1 период.
Затем все значения умножай на 128 и прибавь 128- избавишься от отрицательных составляющих.
Результат переведи в целочисленный вид, а в послеующем в двоичные значения.
Для формирования, настраивай таймер на период Т=1/(50*256), с этим интервалом меняй значения в регистре OCR.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

я что то наверное не так сделал... вот что получилось. как ЭТО можно перевести в целочисленное значение?
Вложения
син.rar
синус
(14.8 КБ) 385 скачиваний
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Вот держи тут от 1 до 254 - как раз тебе хватит
Вложения
Sinus.rar
(11.55 КБ) 665 скачиваний
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Реклама
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Спасибо! сча посморю )
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Я бы сделал так. Таймер 0 - генерит.
Таймер 1 - с периодом 1/(50*256) записывает в Таймер 0 новое значение
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Ясно. T0 - ШИМ
Т1 - задает значения из таблицы с периодом 1/(F*256) в Т0, тем самым изменяя скважность импульсов. F - частота требуемого синуса. Изменяя параметр F буду управлять частотой выходного сигнала.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25277
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

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

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

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

Сообщение Meteor »

КРАМ, Вы конечно правы в том что можно и нужно делать меньшее число и .д и т.п.
Но лучше дать чуток с избытком - Чип115-й потом сам разберется что ему надо, а чего не надо.
Тем более, когда у Чипа115-го проблемы с расчетом были.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

ну у мя тактовая 24,5 МГц. Да и 32 КБ памяти. думаю влезет. Но я учту то что Вы сказали. Просто я впервые пытаюсь получить синус на мк. потому столько вопросов.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25277
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

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

Я еще раз заостряю Ваше внимание:
Дело не в получении синуса вообще, а в конкретной его реализации для синтеза знакопеременного напряжения на силовой нагрузке.
Т.е. Вам нужно познакомится с диаграммой синус-ШИМа для полномостовой схемы.
А какая дискретизация нужна для таблицы синуса - разберетесь сами.
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Спасибо! Сча буду разбираться.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Закрыто

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