Форум по микроконтроллерам: Музыкальный Звонок На Mmc/sd Карте - Форум по микроконтроллерам

Перейти к содержимому

  • (3 Страниц)
  • +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Музыкальный Звонок На Mmc/sd Карте

#1 Пользователь офлайн   gager 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 1
  • Регистрация: 25 Май 10

  Отправлено 25 Май 2010 - 22:23

Есть вопросы по данной конструкции :
1. как выставить для даннйо схемы фьюз биты , а то автор не указал.
2. При прошивании микры , нужно вешать кварц на 16 мгц и 2 кондера на 20 пф? или же от внутреннего генератора?
И есть у кого нить прошивка скомпиленная уже в .hex?
И кто нить вообще собирал данную конструкцию , какие отзывы? Заранее спасибо) :)
0

#2 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 28 Май 2010 - 20:00

1. CKSEL0 ... CKSEL3 - 1111. Остальное оставь как есть.
2. При первой прошивке (если МК новый) то он прошёться. После прошивки фьюзов уже нужен будет кварц для новой перепрошивки.
3. Прошивка есть в архиве, смотри внимательней.
0

#3 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 02 Июнь 2010 - 00:29

Как реализовать большее количество мелодий, например 40?
Как изменить программу, чтобы их выбирать индивидуально, соответствующей кнопкой ( понятно, что через комбинации входных портов ).
Если не ошибаюсь, возможно до 128 комбинаций?
Очень надо!
0

#4 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 06 Июнь 2010 - 14:06

Исходный код прилагается, при чём он с подробными комментариями. Вот у нём и изменяй всё что надо.
Если взять один целый порт для выбора мелодий то получишь 255 возможных вариантов. Для 40 вариантов достаточно взять 6 пинов одного порта (а не все 8).
0

#5 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 13 Июнь 2010 - 00:49

Просмотр сообщенияAdmin (6.6.2010, 14:06) писал:

Исходный код прилагается, при чём он с подробными комментариями. Вот у нём и изменяй всё что надо.
Если взять один целый порт для выбора мелодий то получишь 255 возможных вариантов. Для 40 вариантов достаточно взять 6 пинов одного порта (а не все 8).


Боюсь, сам не смогу. А очень надо.
Если можете, помогите.
И если не затруднит, можно в личку кинуть коментарии где, для чего и что нужно сделать. Это моя первая конструкция на контролелре.
Декодер 8 на 255 сам осилю, на 1561.
А с использованием внутреннего АЦП можно сделать, как здесь () ?
И есть ли преимущество с точки зрения помех и надёжности срабатывания? Всё таки 2 провода до клавиатуры будет идти. 1,5 метра в экране потянет?
0

#6 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 17 Июнь 2010 - 20:17

Преимущество схемы с АЦП в том, что в нём количество проводов маленькое. Но больше возни с самим АЦП и программой. На 1.5 м. работать будет. Но 255 кнопок он вряд ли осилит... Теоретически возможно на но практике я бы не советовал.

Сейчас со временем сильнейшие проблемы, если не к спеху потом покапаюсь в коде.
0

#7 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 18 Июнь 2010 - 09:58

Просмотр сообщенияAdmin (17.6.2010, 20:17) писал:

Преимущество схемы с АЦП в том, что в нём количество проводов маленькое. Но больше возни с самим АЦП и программой. На 1.5 м. работать будет. Но 255 кнопок он вряд ли осилит... Теоретически возможно на но практике я бы не советовал.

Сейчас со временем сильнейшие проблемы, если не к спеху потом покапаюсь в коде.


Если осилит 128, думаю, должно хватить, ужмёмся. На первом этапе вообще необходимо около 60. Подожду.
Есть контроллер под поверхностный монтаж ATMEGA32A AU. Развел плату, пока под исходную схему.
добавил кондёры на кварц и на базу транзистора. А так же стабилизатор 3,3. програмирование предусмотрел через переходник вместо ММС. Собрал программатор Громова.
0

#8 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 18 Июнь 2010 - 13:20

Ну 128 тоже многовато, проблема в том что каждая кнопка должна изменять сигнал на 2.56 / 128 = 0,02В А резисторов с такой точность вы найти не сможете. Думаю 20-30 кнопок это предел.



В коде есть строчки :
__flash char FileNames [10][11] =
{
"muson01.wav","muson02.wav","muson03.wav","muson04.wav","muson05.wav",
"muson06.wav","muson07.wav","muson08.wav","muson09.wav","muson10.wav"
};

Это масив имён файлов. Т.к. нам нужно файлов больше то имена надо добавить. И ещё лучше сократить имя файла.
В итоге получим нечто в роде этого:
__flash char FileNames [99][7] =
{
"m01.wav","m02.wav","m03.wav","m04.wav","m05.wav","m06.wav","m07.wav","m08.wav","m09.wav",
...
"m91.wav","m92.wav","m93.wav","m94.wav","m95.wav","m96.wav","m97.wav","m98.wav","m99.wav"
};

Вместо троеточия нужно заполнить соответствующие имена файлов.

Заменив это в коде получите то, что и надо было.

Если переменная play авна 1 то воспроизводится мелодия с номером song. Он может равняться от 0 до 98
0 - мелодия m01.wav
98 - мелодия m99.wav

Если переменная gotoNextSong равна 1 то воспроизведение текущей мелодии останавливается и
начинает воспроизводится мелодия с номером song (если при этом play авен 1)
0

#9 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 21 Июнь 2010 - 03:05

[quote name='Admin' date='18.6.2010, 13:20' post='1457']
Ну 128 тоже многовато, проблема в том что каждая кнопка должна изменять сигнал на 2.56 / 128 = 0,02В А резисторов с такой точность вы найти не сможете. Думаю 20-30 кнопок это предел.

Не совсем понятно. При наличии 1% резисторов, например, 10 ком, сколько кнопок можно получить?
0

#10 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 21 Июнь 2010 - 10:07

Вот реализация того, что тебе надо. Интересно то, что номиналы резисторов там не одинаковые.
0

#11 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 22 Июнь 2010 - 17:45

Непонятно, почему при такой схеме номиналы разные, удобней было бы одинаковые.
Почему спросил сколько клавиш на 1% резисторах. 0.02 В при опорном 2,56В, это шаг 0.78%. при 64 клавишах шаг 1,5%
Предположим, наверняка можно получить 36 кнопок (это шаг 2,77%), хотя можно и 7х7 (2.04%).
Тогда предлагаю изменить схему. ЦАП для звука включить на порт PC, а матрицу клавиатуры 6х6 подключать на РA0. В дальнейшем, для расширения клавиатуры мультиплексировать до 8 линий.
Таким образом, количество кнопок может расширяться до 288. Этого точно хватит.
Прокомментируйте?
Кстати, в ATmega32 исполнения TQFP в составе есть входной ОУ с Ку =10 и 200.
Выход ЦАП можно подключить к нему, а как с ОУ вытянуть сигнал на эммитерник для нагрузки.

Прикрепленные изображения

  • Прикрепленное изображение: 32.png

0

#12 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 23 Июнь 2010 - 19:09

С одинаковыми резисторами шаг меняется. В начале один шаг, в конце другой. Вот по этому и разные.
Для того, что бы схема нормально работала шаг 0.02 наверное всё же мал. Надо ведь учитывать и помехи, и длину провода до клавиатуры.

В этой матрице шаг между кнопками 1 и 2 в шестой строке равен
2,56*(100/(100+43+1)-100/(100+43+1,5)) = 0,0061 Что очень мало.

Надо бы изменить номиналы резисторов.

такой вариант решения тоже достаточно не плох. Можно сделать и так. Надёжнее будет.

Эторт ОУ для АЦП работает, выход никак не вытянешь. Да и не нужен он тебе.
0

#13 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 23 Июнь 2010 - 22:54

Согласен. В принципе, резистор 1 ком можно вообще уменьшить до 0, а 1,5к до 1,0к. Да и 10 ком, тоже может быть равен 0.
Необходимо заложить номиналы так, чтобы шаг был примерно одинаков.
Остановимся на этом варианте, матрица 5х5? Рассматривать варианты на таймере не стоит.
Я делаю плату на корпус TQFP, переношу ЦАП на порт С, а клавиатура будет на порт А, матрица по 25х8=200, тоже не плохо. Всё помещеается.
Надеюсь на помощь в доработке кода.
Есть где нибудь русское описание 32? Скачал 347 стр на английском.
У меня ATMEGA32A AU.

Прикрепленные изображения

  • Прикрепленное изображение: 5х5.GIF

0

#14 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 24 Июнь 2010 - 11:17

В последнем варианте номиналы резисторов непонятны.

Есть .
0

#15 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 24 Июнь 2010 - 13:59

[quote name='Admin' date='24.6.2010, 11:17' post='1479']
В последнем варианте номиналы резисторов непонятны.


Это не номиналы, это кодировка столбец-строка. Номиналы в ряду предлагаю по горизонтали 1к; 2к; 3к; 4,3к, по вертикали:5,6к; 12к; 18к; 24к. можно уменьшить на порядок или увеличить, как посоветуете?
0

#16 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 24 Июнь 2010 - 22:12

Можно ещё разделить на 10.
0

#17 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 24 Июнь 2010 - 23:27

Со схемкой клавиатуры я ошибся, извиняюсь, исправил.
Итак
R 0,1=0; R 0,2=100; R 0,3=200; R 0,4=300; R 0,5=430;
R 1,0=0; R 2,0=560; R 3,0=1k2; R 4,0=1k8; R 5,0=2k4;
А какой номинал R и его влияние?
Если он будет 3 ком, то это будет 0.5 диапазона АЦП, если 1к, то 2/3 диапазона.
Тогда имеет смысл Ом 10.
Не перегрузит ли он ИОН при нажатии клавиш?

Прикрепленные изображения

  • Прикрепленное изображение: 5х5.GIF

0

#18 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 26 Июнь 2010 - 22:06

Конечно перегрузится.
Используй номиналы резисторов с вышеуказанной статьи.
0

#19 Пользователь офлайн   pectoral 

  • Участник
  • PipPip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 29 Март 10

Отправлено 26 Июнь 2010 - 23:05

Какие предельные параметры тока ИОН?
Или просто принять максимальную нагрузку 1 мА.
В схеме непонятны номиналы резисторов R22=R26= 0.2 Ома?
Плата готова, а как с программой?
Хотелось бы, чтобы сохранился и режим кнопок оригинала.
0

#20 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 27 Июнь 2010 - 23:08

Нет, к внутреннему источнику опорного напряжения (тот что на 2.56В) нельзя ничего подключать, кроме ёмкостной нагрузки!
Для питания матрицы можно использовать питание МК, т.е. всё те же 5В. А в качестве ИОН для АЦП использовать внутренний. Но тогда придётся подобрать резисторы так, что бы макс. напряжение на входе АЦП не было больше 2.56В

И загляни в тот даташит, что я дал, там про это много написано.

Вряд ли там 02 Ома. Я бы поставил 20 и 40 Ом.


Тут всё чётко написано.
0

Поделиться темой:


  • (3 Страниц)
  • +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей