ATtiny2313 => Metronom

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

ATtiny2313 => Metronom

Сообщение VenomXP »

Доброго времени суток всем котам :)) Возникла срочная необходимость собрать себе метроном, весь поиск упирался в аналоговые схемы с регулированием частоты тактов лишь на угад, то есть крутишь ручку, а какая точно частота не известно. Хотелось бы собрать такой девайс где будет отображаться на семи-сегментном индикаторе частота тактов, а выход, где идут собственно сами тики можно было бы подключить в любой микшер или усилитель. Я думаю целесообразно будет использовать такой контроллер как ATtiny2313, так как портов у него достаточно да и программка я так думаю будет не большая. Вот только как это реализовать ума не приложу.
Даташит - библия моя...
Изображение
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

А Вам нужна плавная регулировка частоты или можно дискретно регулировать? И чтобы это подключить к микшеру или усилителю желательно знать что там у них внутри....
Я так думаю что Вам все таки нужна плавная регулировка. Первое что пришло мне на ум это использование АЦП. Идея примерно такая: подавать с помощью переменного резистора на вход ацп напряжение от 0 до 5В и в зависимости от входного напряжения выставлять на выходе мк нужную частоту. Частоту формировать по таймеру и выводить на индикатор. Примерно как то так.
Аватара пользователя
DIM4
Родился
Сообщения: 16
Зарегистрирован: Пн янв 21, 2008 20:21:02
Контактная информация:

Сообщение DIM4 »

В статье С.М.Рюмика в Радиоаматор 2004_09 есть прекрасный пример, только он на AT89C2051 но пограмма на Си так что перенести на тиньку можно безпроблем

ссылка на журнал http://files.lv-soft.info/Journals/Radioamator/2004/ra2004_04.djvu
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Вообще планируется так: будут 3 кнопки - "+1", "-1" и "Стоп/Старт/Выкл".

Я думал использовать как нить прерывание, метроном устроен так что какое значение на нем установленно, то столько ударов в минуту он и должен производить. Например заданно у него значение 60 - значит 60 ударов в минуту он должен производить причем ОЧЕНЬ ровно то есть как секундомер, допустим заданно у него 220 - соответсвенно 220 ударов в минуту. Планируется изменение от 1 до 250. Допусти при первом включении кнопками мы задаем ему значение, пусть начальное у него по умолчанию будет стоять 1, кнопками мы догоняем его до нужного,оно выводится на индикаторы, жмем старт. Может используя каким то образом прерывания можно будет хотя бы для начала реализовать тактировку.
Даташит - библия моя...
Изображение
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

DIM4 писал(а):В статье С.М.Рюмика в Радиоаматор 2004_09 есть прекрасный пример, только он на AT89C2051 но пограмма на Си так что перенести на тиньку можно безпроблем

ссылка на журнал http://files.lv-soft.info/Journals/Radioamator/2004/ra2004_04.djvu


Ничего толкогого там не нашел. Но за ссылку пасипа. :))
Даташит - библия моя...
Изображение
Ежик в тумане
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср ноя 28, 2007 09:42:28

Сообщение Ежик в тумане »

Я бы возможно сделала так :при каждом нажатии кнопки можно менять настройки таймера, от которых зависит значение формируемой частоты... нажатием другой кнопки можно запускать таймер...
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Нее... Это как то ацко... Я тут с прерываниями уже почти доделал... Лучше подскажите как мне эти звуковые тики получить из тиньки... Да еще такие чтобы можно было в наушники этот сигнал отправить или в усилок, а то я ваще чет туплю :shock:
Даташит - библия моя...
Изображение
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

А в чем проблема? на выводе тини будет сигнал нужной частоты амплитудой около 5 В. Нужно уменьшить ставим резистор.....
P.S. если можно то поделитесь настройками прерывания у меня никак не получается сделать прерывания с такой низкой частотой:)
Я не Сашок!!!
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

sachok писал(а):P.S. если можно то поделитесь настройками прерывания у меня никак не получается сделать прерывания с такой низкой частотой:)

Вот примерная схема и начальный вариант программы(использую часовой кварц для точности).

Что сделано:

1. Вывод значения Метронома на семи-сегментный индикатор.
2. С помощью прерывания проделана тактировка тиков. (отдельное спасибо QZ_)

Что предстоит:

1. Прикрутить кнопки и осуществить их чтение.
2. Программно и аппаратно решить проблему вывода звука.

Какие есть предложения?
Вложения
Metronome.rar
(73.86 КБ) 281 скачивание
Даташит - библия моя...
Изображение
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

Кнопками я так понимаю нужно менять значение регистра TCNT0. только нужно продумать вывод на индикатор.
Я не Сашок!!!
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Нет. Кнопками мы меняем значение значение n.

Смысл такой
QZ_ писал(а):1. Если нада n тиков в 1 мин, то, тики будут идти с периодом 60/n сек. все. ставишь таймер время считать причем настраивешь так чтобы прерывания шли с периодом 60/n.
2. Если часовой кварц, то timer0 (с предделителем на 256) настраиваешь чтобы делал прерывание с периодом 60/255 сек
3. Тогда чтобы таймер прерывался каждые 60/255 сек надо в TCNT0 сунуть 255-30 = 225
4. В итоге: TCCR0A = 0; TCCR0B = 0x04; на прерываение пишешь TCNT0 = 225; count++;
5. n - число тиков в минуту, таймер делает прерывание и добавляет count каждые 60/255 сек, т. е. если выставим n=1, то (по идее) не будет тика пока count не наберет 255, т.е. нада if (count == (256 - n)){ count = 0; beep();}

А что с выводом не так? Помоиму я на схеме все обозначил и в программе все прокомментировано.
Даташит - библия моя...
Изображение
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

ага. что то понял. а beep это просто сигнализатор нажатия на кнопку или это то устройство которое должно тикать. если последнее то можно на порт выдавать просто лог.1 тоесть +5В а потом можно зумер или лучше поставить мультивибратор на 2 транзисторах.
Я не Сашок!!!
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

beep - это то устройство которое должно тикать.

n - это значение метронома. Устанавливается кнопками.

А вот как реализовать устройство тикающее я незнаю. Мне нужно выводить этот тик либо в наушники либо в усилитель.
Даташит - библия моя...
Изображение
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

можно с помощью +5В управлять транзистором, а там далее что угодно... можно пробовать делать на ножке во время тика ШИМ сигнал тогда можно через резистивный делитель на усилитель.
Я не Сашок!!!
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Вобщем посидел я тут подумал, посоветовался с умными людми ( QZ_ ).

Возможны 2 варианта. Итак.

Вариант первый.
Когда то давно собирал я в радио кружке вешь которая назвалась "Имитатор подпрыгивающего шарика". Устройство было предельно просто состояло оно из 2-х конденсаторов, 2-х транзисторов, кнопки и источника питания. звук у него был как раз таким какой мне нужен. Подумав над схемой я пришел вот к такому схемному решению. Я так думаю конденсатор надо подобрать либо очень маленькой емкости либо вообще его из схемы исключить. А в программе просто в функции beep включать на некоторое время на выходе порта куда подключено это устройство, то есть делать на выход +5в. Что скажете?
Вложения
ver1.PNG
(9.03 КБ) 512 скачиваний
Даташит - библия моя...
Изображение
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

В принципе - идея правильная, но вот реализация - не очень..
При включении по второй схеме не хватит выходного тока порта МК, что-бы "запитать схему..
Надо поставить в схему транзистор, который будет как ключ подавать напряжение на схему..
А вот уже этот транзистор вкл/выключать с МК...
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Вариант второй (предложенный QZ_).
Идея заключается в программной реализации звукового сигнала на частоте 1000 Гц
QZ_ писал(а):236 = 118*2.
118 это число включений ноги за время beep'а.
При таком числе включений будет частота ~1000 Гц.
Вот тока бип будет всего 0.18 сек по времени.
Впринципе можно чуть больше сделать.

Предложенный им код.

Код: Выделить всё

void beep() // Звуковой тик
{
   tick = 236;
}

main()
{     
    init();
   
    Dig_init();   
   
    while(1)
    {       
        if (count == n)
        {
            count = 0;
           
            beep();           
        }

        if (tick != 0)
        {
           tick--;

           PORTX.X ^= 1;

           #asm("nop")
           #asm("nop")
           #asm("nop")
           #asm("nop")
           #asm("nop")
           #asm("nop")
           #asm("nop")
           #asm("nop")
        }
           else PORTX.X = 0;
       
    }
}


В схема с выхода порта через ограничивающее сопротивление можно сразу выводить либо на наушники либо подклбчать к усилителю. Что скажете?
Даташит - библия моя...
Изображение
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

"...Идея заключается в программной реализации звукового сигнала на частоте 1000 Гц..."???????????
Всегда думал, что звук метронома должен быть "немузыкальным", поэтому
"Вариант первый.
..."Имитатор подпрыгивающего шарика"... ИМХО более подходящий.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

А может поступить проще - собрать схему "..шарика", посмотреть осцилом, какая форма одного периода сигнала, а потом постараться то-же самое программно сформировать...
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

Шарик мне тоже нравится. Только посмотрите на схемы включения там кажись ошибка. эмиттер VT1 на + питания, а не на корпус. просто питание не правильно нарисовано от МК. Транзистор я думаю обязательно нужно ставить что бы МК остался цел.
Я не Сашок!!!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»