Nano Hash - криптовалюты, майнинг, программирование

как сгенерировать ШИМ с помощью Atmega32 для синусоидального инвертора

В настоящее время я работаю над проектом синусоидального инвертора, и мне нужно генерировать ШИМ с помощью микроконтроллера, для этой цели я выбрал atmega32, может ли кто-нибудь указать мне, с чего начать и как продолжить написание кода для генерации ШИМ с использованием atmega32, любой ответ приветствуется, спасибо

05.03.2014

  • Не могли бы вы также сказать, какой тип ШИМ я должен использовать для этого проекта, быстрый ШИМ, правильный по фазе или правильный по фазе и частоте ШИМ 05.03.2014

Ответы:


1

Вам нужно разработать ряд значений ШИМ, которые вы будете периодически изменять, и которые при фильтрации с помощью некоторого оборудования дадут вам синусоидальную волну.

Вы можете сделать это, создав электронную таблицу со столбцом 0-359 (с шагом один), который вы затем преобразуете в значение синуса для каждого угла. Если затем умножить это на значение 0-2^16 (и использовать таймер 1, который является 16-битным таймером), вы получите 360 различных значений ШИМ.

Затем вы можете поиграть с этими значениями, например, изменив значение ШИМ на каждом периоде таймера. Вы можете позволить каждому значению ШИМ повториться несколько раз и наблюдать за изменением частоты синусоиды. Вы можете использовать любое другое значение ШИМ только перед изменением значения ШИМ и наблюдать, как частота удваивается. Если вы измените множитель, вы увидите изменение размера выходного синусоидального сигнала.

Когда я говорю о значении ШИМ, я говорю о значении, которое изменяет отношение метки к пробелу на выходе ШИМ. С более продвинутым процессором, таким как STM32, вы можете заставить DMA автоматически делать это каждый раз, когда истекает период PWM. С Mega32 вам придется делать это вручную. (т.е. на прерывании таймера, когда период завершен.)

Вам нужно назначить выход ШИМ на контакт, затем вы можете подключить RC-фильтр к этому контакту. Если вы посмотрите на этот выход в прицел, вы увидите синусоиду. 10к/100н вполне подойдет в качестве начального фильтра. (10k последовательно с выходным контактом, 100n на землю, измерение на RC-переходе).

Что касается того, какой тип ШИМ, поиграйте и убедитесь в том, что лучше. Сделайте простой подсчет до x, затем поднимитесь, затем оставайтесь на высоком уровне, пока счетчик не достигнет типа 0xFFFF, затем попробуйте выровнять по центру и любой другой тип. FWIW, выравнивание по центру дает наилучшие результаты ЭМС, если вы управляете трехфазным двигателем.

Я подозреваю, что вам следует изучить и прочитать техническое описание, чтобы узнать, как выводить ШИМ. Вам нужно понять это, если вы собираетесь стать наполовину приличным инженером. Кормление кодом с ложки не поможет.

05.03.2014
  • user2447233 спасибо, что нашли время и ответили на мой запрос, обычно, если мы делаем это с ИС, для генерации ШИМ сначала мы берем синусоидальную волну (или генерируем ее), скажем, 50 Гц, затем мы берем треугольную волну, скажем, 3 кГц, а затем мы сравниваем их оба и получаем сигнал ШИМ, наконец, мы отправляем этот сигнал ШИМ на H-мост. я знаю большую часть теоретической части, и я уже реализовал то же самое с использованием ИС, но вместо использования ИС (или операционного усилителя) я хочу использовать микроконтроллер для генерации ШИМ, а затем подать сигнал ШИМ на H-мост, поэтому я не могу генерировать ШИМ сигнал напрямую от atmega32?? 07.03.2014
  • или мне нужно сначала генерировать синусоидальный сигнал 50 Гц, используя atmega32, как вы объяснили, используя таблицу синусоид, и аналогичным образом генерировать треугольную волну и подавать эту волну на компаратор для генерации ШИМ, а затем подавать этот ШИМ на мост h 07.03.2014
  • Единственный способ, которым вы можете воспользоваться для получения хорошей чистой синусоиды от микроконтроллера, — это если у микроконтроллера есть встроенный ЦАП. Вы должны отправить таблицы синусоидальных значений в ЦАП точно так же, как вы делаете это для ШИМ. У Mega32 нет ЦАП, но есть мега, у которых он есть, некоторые xmega, которые имеют до четырех (и имеют управление DMA) и множество ARM, которые будут это делать. Я не понимаю теорию, лежащую в основе используемой вами настройки синусоидальной / треугольной волны, поэтому не могу это комментировать, но если бы у вас был двойной ЦАП, вы могли бы достаточно легко управлять амплитудой с помощью операционных усилителей. 10.03.2014
  • Мне интересно знать, почему вы используете метод двойной волны! (Без сарказма, просто интересно, какие у него есть преимущества). 10.03.2014
  • Вот как обычно SPWM генерируется путем сравнения синусоиды и треугольной волны. Причина, по которой я генерирую синусоиду, заключается в том, что мне также нужно сгенерировать синусоиду третьей гармоники и добавить сигнал sin (50 Гц) и sin (150 Гц). что дало бы мне на 15% больше производительности 04.05.2014

  • 2

    Я думаю, что я могу генерировать ШИМ, установив опорное значение OCR1A = rand (0,255); (используя случайную функцию), поэтому каждый раз, когда циклы запускаются, он будет изменять мое опорное значение и сравнивать его с треугольной волной или линейной волной, увеличивая значение TCNT0 с 0 до 255, а затем обратно до 0, иначе снова уменьшите его с 255 до 0 в чтобы генерировать треугольную волну. Таким образом, я могу получить форму сигнала с другим рабочим циклом, что я и хочу использовать в качестве ШИМ.

    Любое предложение будет оценено

    12.03.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..