106-Мультичастотный цифровой генератор звуковой частоты

Автор: | 29.03.2014

Предлагаю Вашему вниманию очень простой мультичастотный цифровой генератор звуковых частот. Этот генератор попросил меня сделать Valera-E. Ему он нужен для проверки низкочастотной части приемников тонального вызова, но я думаю такой генератор может сгодиться и для более широкого применения. Основная изюминка этого генератора – 15 независимых выходов. Генератор собран на микроконтроллере ATtiny2313 и в самом простом варианте (без внешнего кварцевого генератора) вообще не имеет обвязки!

106-multi_freq_gen_schem.zip (1675 Загрузок)

Алгоритм программы простой и у Вас имеется возможность самому задавать выходные частоты для каждой линии, подставляя нужный коэффициент в таблицу констант (естественно, Вам придется перекомпилировать проект и прошить его в МК по новой).

Для правки алгоритма откройте проект в Algorithm Builder и переключитесь в режим таблицы (F12). Далее рассчитайте и заполните соответствующие строчки в разделе «Constants» для нужных линий.

 

Значение коэффициента записывается в столбец «Value» и рассчитывается по формуле:
top_x = fck/(f*484), где:
top_x – значение коэффициента
fck – частота задающего генератора МК
f – требуемая частота выходного сигнала

Например, если нужно получить на выходе B0 частоту 123Гц при частоте задающего генератора 8МГц, то расчет будет следующим:

top_B0 = 8000000/(123*484) = 134

Для упрощения расчетов я сделал exell-документ, который сам все сделает за Вас.
106-freq_calc.xls (1640 Загрузок)

При расчетах нужно учитывать несколько моментов:
— максимально возможная частота выходного сигнала составит fck/484
— в виду того, что рассчитываемый период – величина целая, то очевидно, невозможно получить выходную частоту абсолютно точно и чем больше необходимая частота, тем больше будет погрешность.
Для уменьшения погрешности необходимо увеличить частоту задающего генератора, установив кварц нужного номинала. Напомню, AVR микроконтроллеры работают с частотой задающего генератора вплоть до 20 МГц. Можно попробовать поставить и чуть больше – у меня одно устройство работает нормально с кварцем 24МГц.

 

По умолчанию (для кварца 8МГц) на линиях выставлены следующие частоты:
B7 – 8 Гц
B6 – 12 Гц
B5 – 423 Гц
B4 – 486 Гц
B3 – 550 Гц
B2 – 590 Гц
B1 – 718 Гц
B0 – 787 Гц
D6 – 972 Гц
D5 – 2066 Гц
D4 – 2754 Гц
D3 – 3305 Гц
D2 – 4132 Гц
D1 – 5509 Гц
D0 – 8264 Гц

 

Прошивка микроконтроллера

Микроконтроллер может работать:

— как от внутреннего задающего генератора 8МГц (отпадает необходимость в кварцевом резонаторе – ножки нужно оставить «висеть в воздухе», но меньше точность выходных частот и больше зависимость от внешних факторов),

— так и от внешнего задающего кварцевого генератора (с произвольной частотой) для более точной работы.

При выборе варианта задающего генератора прошивка остается одна и та же, разные будут только фьюзы.

106-main.zip (1658 Загрузок)

 

106-fuse_8in.png (2508 Загрузок)
Фьюз-байты: Low=$E4, High=$DF, Ext=$FF

106-fuse_ext.png (2464 Загрузки)
Фьюз-байты: Low=$FF, High=$DF, Ext=$FF

Напоминаю:Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Как программировать микроконтроллеры читаем в FAQ.

106-multi_freq_gen_source.zip (1957 Загрузок)

 

Выходной фильтр.

Выходной сигнал на линиях представляет из себя меандр, для придания ему формы более приближенной к пиле (если такое выражении вообще корректно), можно установить RC-цепочки вида:

(Visited 4 028 times, 1 visits today)

106-Мультичастотный цифровой генератор звуковой частоты: 6 комментариев

  1. GetChiper Автор записи

    В любом случае, это сейчас я сделать не смогу (мало времени совсем). Это в лучшем случае после праздников.

  2. Ali

    Огромное спасибо за скорый ответ!) Дисплей и энкодер не нужно, форма меандр. Почему нужно на мк —
    1. Может я ошибаюсь но стабильность поддержания заданных параметров и частоты у мк намного выше чем у 555 или 494 даже от внутреннего генератора.( в гугле был до общения с вами)
    2. В ходе экспериментов планируется задействовать дополнительные возможности этого мк.

  3. GetChiper Автор записи

    Тогда уже нужно будет и дисплей приделать и энкодер и возможность задать форму сигналу.
    В противном случае если просто ручкой частоту менять — так это делается на элементарной логике
    А вообще, идея такое сделать (экран + энкодер) мне понравилась — нужно будет после нового года такое попробовать реализовать.

  4. Ali

    Уважаемый Евгений, переделайте пожалуйста прошивку для вывода генерации на одну ножку и изменение частоты,от мин возможной до 1-3кгц(с шагом 5-10гц), а также заполнения от 80 до 99% c помощью переменных сопротивлений. Буду рад любому ответу. Спасибо за ранее)

  5. RV

    Та автор вообще красава, что характерно все так доходчиво излагает информацию да и потом если вопросы возникают то все поможет, разжует до мелочи ). Хороший сайт, и много полезных устройств, так держать!!!!

  6. SVN

    Отличное устройство, а главное простое! 🙂

Добавить комментарий