Arduino должен генерировать синусоидальную волну 400 кГц

Я новичок в среде Arduino. Нашел какой-то код, генерирующий синусоидальную волну, но с частотой от 14 кГц до 84 кГц. URL-адрес является https://www.instructables.com/SineWave-Generator-for-Arduino-DUE/

Мне нужно сгенерировать синусоидальную частоту waze 400 кГц. Вывод должен быть на DAC0 или DAC1.

Любой может помочь решить мою проблему.

, 👍1

Обсуждение

Извините, но как мы можем вам в этом помочь? Вы не дали нам никакой информации. Покажите код, который вы нашли. А также предоставьте подробное описание вашей реальной проблемы., @chrisl

Я получаю некоторый образец для генерации синусоидальной волны в этой [ссылке](https://www.instructables.com/SineWave-Generator-for-Arduino-DUE/) Мне нужно сгенерировать синусоидальную волну с частотой 400 кГц. Основываясь на ссылке выше, я понятия не имею, как я могу написать код, чтобы получить частоту 400 кГц. Извините, что я новичок в изучении arduino. @крисл, @Wan Aideed

Пожалуйста, добавьте эту информацию к вашему вопросу, отредактировав его. Он должен уметь постоять за себя, не имея важной информации в комментариях. Я не специалист в этой области (никогда ею не пользовался), но не думаю, что это сработает для вас. Скетч просто выкачивает образцы программным обеспечением так быстро, как только может. Для частоты 84 кГц он использует только 20 сэмплов. Таким образом, для 400 кГц у вас будет только около 4 образцов. На самом деле это уже не синусоида. Может быть, чистая аппаратная генерация волн была бы лучше., @chrisl

Гугл дал мне, например, [это site](http://www.learningaboutelectronics.com/Articles/Sine-wave-generator-circuit-with-a-555-timer.php), который объясняет, как генерировать синусоидальную волну с помощью чипа таймера 555. Кажется, они поднимаются до 250 кГц. Изменив значения компонентов дальше, вы можете добраться до 400 кГц. Хотя это не моя специальность. Вы можете задать вопрос об этом на electrical stackexchange, @chrisl

Для STM32 есть приложение note AN4566 о расширении производительности ЦАП путем отключения внутреннего выходного буфера и использования внешнего, и тогда они могут идти в несколько раз выше, чем обычные 1Msps, но я не уверен, что SAM3X8E microchip тоже имеет такую возможность, @KIIV


2 ответа


2

Я думаю, что вы, возможно, переоцениваете возможности Due DAC. Мое понимание и эксперименты заключаются в том, что код, генерирующий форму волны (например, https://forum.arduino.cc/t/funkgenie-a-wavetable-based-function-generator/214938) может генерировать последовательные выходные волны до “нескольких кГц”. После чего формы волн страдают от искажения.

Если форма волны не критична (хотя вы упомянули, что вам конкретно нужна синусоидальная волна), вы можете продвинуться дальше, используя ШИМ-выходы (например, https://forum.arduino.cc/t/due-high-frequency-waveform-up-too-500khz/423392).

Однако я думаю, что вам, возможно, потребуется разработать подходящую электронную схему для генерации волны, которую вы ищете. Это может быть темой для обмена стеками электротехники, хотя? Здесь представлено введение в параметры схемы генерации волн, переходящие на радиочастотные частоты.

,

3

ЦАП Due может подняться до, и я цитирую прямо из таблицы данных:

Скорость преобразования до 350 кбит / с

Это означает, что вы можете настроить до 350 000 точек данных в вашей форме сигнала в секунду. С двумя точками данных (дающими вам прямоугольную волну или, более реалистично, форму волны с формой плавника акулы) максимум, который вы могли бы получить, составляет (350 000/2) 175 кГц.

Учитывая, что вы оговариваете, что вам нужна синусоидальная волна, вам понадобится гораздо больше, чем просто 2 точки данных в вашей форме волны. Предполагая (разумный) минимум 32 точки данных (больше даст более плавную форму сигнала), вы будете смотреть на максимальную частоту около 10 кГц. Жертвуя точностью формы сигнала, вы могли бы увеличить ее, но чем выше вы поднимаетесь, тем меньше и меньше она напоминает синусоидальную волну.

,