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

Автор: | 29.03.2014

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

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

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

Для правки алгоритма откройте проект в 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 (1710 Загрузок)

При расчетах нужно учитывать несколько моментов:
— максимально возможная частота выходного сигнала составит 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 (1724 Загрузки)

 

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

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

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

106-multi_freq_gen_source.zip (2024 Загрузки)

 

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

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

(Visited 4 359 times, 1 visits today)