|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
|
stm32 генерация синусоиды19.08.2022, 08:10. Показов 6124. Ответов 77
У меня возник вопрос чтобы генерировать синусоиду в STM32.И задался вопросом а по какой формуле лучше вычислять массив. Или его не вычислять. А предоставить вычислять эту функцию контролеру?. Кто из спецов может поделится умными мыслями. Кто может подсказать. Нашёл вот такую формулу SIN A=(sin(2p*x/128+1))*127 и немного переделал SINB=(sin((2p*x/128+2p/3)+1))*127 и SINС=(sin((2p*x/128-2p/3)+1))*127.x-один элемент массива. Может неправильно .Что является периодом?.Вот что меня интересует.И как лучше управлять периодом?
0
|
|
| 19.08.2022, 08:10 | |
|
Ответы с готовыми решениями:
77
Генерация ШИМ для синусоиды STM32F100 Генерация ШИМ 30кГц на STM32 Генерация синусоиды с ЦАПа через DMA (ADuCM360) |
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
|||||||||||
| 21.08.2022, 18:08 [ТС] | |||||||||||
0
|
|||||||||||
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
||||||
| 21.08.2022, 18:19 [ТС] | ||||||
0
|
||||||
| 21.08.2022, 18:28 | |
|
ага, TIM 2 значит выбрали..
какая частота то нужна ? частота будет равна: 36 000 000 (частота тактирования по APB1) \ ( psc * arr ) Добавлено через 28 секунд psc - нужно уменьшить на единицу (там счет от нуля идет) Добавлено через 2 минуты то есть для частоты в 1 кгц - нужно например записать psc= 36-1 arr=1000 Добавлено через 2 минуты делитель psc как бы определяет частоту с которой таймер будет считать : 36 000 000 \ 36 (в psc записываем 36-1=35) = получается 1 000 000 - это частота счета таймера... таймер будет считать от 0 до arr как только досчитает до arr будет перезагрузка значения счетчика... то есть с частотой 1 мгц таймер будет считать до 1000 (значение arr).. следовательно перезагрузка счетчика таймера будет происходить: 1 000 000 \ 1000 = 1000 раз в секунду
0
|
|
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
||||||
| 21.08.2022, 18:47 [ТС] | ||||||
|
Например если нужна частота 8 МГЦ.Ну а как сделать икремент вот этих параметров
0
|
||||||
| 21.08.2022, 18:54 | ||
|
для 8 мгц - возьмите лучше TIM1 - у него делитель APB2 = 1 - это частота 72 мгц на входе psc=0 (1-1=0) arr=9 72\ (1*9)= 8 мгц... p.s. надеюсь вы понимаете что прерывания с такой частотой работать не могут при такте в 72 мгц... там на вход выход больше времени будет тратиться чем период прерываний...
0
|
||
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
|
| 21.08.2022, 19:10 [ТС] | |
|
Ну несущая частота По avr должна быть 8Мгц.Это если мы создаём масив из 128 точек в ШИМе.А если больше точек массив то наверное частота уменьшится.Несущая 8Мгц а выход 50гц но это с учётом что шим массив вписывается в прывание по другому таймеру.А как оно с DMA будет?На выходе CCR1 ёмкость с резистором(нч филтр).
0
|
|
| 21.08.2022, 19:18 | |||
|
у меня даже пример есть, но он на ассемблере и для f401... хотя там отличий от 103 помоему не будет, только на cmsis переписать... выложить ? Добавлено через 2 минуты возможно лучше будет снизить частоту и увеличить количество итераций скважности или вообще сделать резистивный DAC на GPIO так же с передачей значения по DMA
0
|
|||
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
|
| 21.08.2022, 19:30 [ТС] | |
|
Что говорить нужно пробовать.Искуственный DAC?А на таймере?Ну это написал в AVR.А на stm32 нужно всё по новому.
0
|
|
| 21.08.2022, 19:32 | |
|
ну берем резистивную матрицу например от PA0 до PA7
с набором резисторов где значение следующего в 2 раза больше предыдущего... https://radiohlam.ru/dac_r-2r/ или вот по лучше ссылка http://easyelectronics.ru/para... -r-2r.html там и пример есть и массив синуса и потом таймером шлем запрос на dma, который из SRAM кидает значение амплитуды на GPIO_ODR...
0
|
|
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
||||||
| 21.08.2022, 19:40 [ТС] | ||||||
STM32 если получится то хорошо.
0
|
||||||
| 21.08.2022, 19:43 | ||
|
ну в принципе GPIO 16ти битный.. и если 5-ти битного разрешения хватит (32 итерации амплитуды) - то можно одним GPIO и 3 фазы сделать... все зависит от требований по точности синуса....
0
|
||
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
||||||
| 21.08.2022, 19:46 [ТС] | ||||||
0
|
||||||
| 21.08.2022, 19:48 | |||
|
Добавлено через 1 минуту при частоте pwm = 8 мгц вы получаете счет от 0 до 8 (значение arr=9)... - это 9 итераций заполнения периода шим.... не 256 а 9 !!! поэтому я и пишу что нужно уменьшить частоту шим или делать резистивный цап
0
|
|||
|
4147 / 2725 / 433
Регистрация: 09.09.2017
Сообщений: 12,074
|
|||||
| 21.08.2022, 19:53 | |||||
|
Попробую поиграть в Вангу и предсказать, что речь идет о трехфазном частотнике.
0
|
|||||
|
-80 / 1 / 0
Регистрация: 15.12.2019
Сообщений: 346
|
|
| 21.08.2022, 21:26 [ТС] | |
|
Три фазы для асинхронного двигателя 36 вольт 200гц но с плавным пуском.То есть частота меняется плавно с течением от 0 до заданного времени минимум 10сек.максимум 60сек.И массивы не одинаковые ода опережает на 120градусов другая остаёт на 120 градусов.
0
|
|
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
|
||
| 21.08.2022, 21:38 | ||
|
0
|
||
| 21.08.2022, 21:56 | |
|
0
|
|
| 21.08.2022, 21:56 | |
|
Генерация синусоиды Чем связать STM32 + STM32 в одном корпусе? Общение с барометром MS5540 на STM32 (Arduino to STM32)
Анимация синусоиды Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|