Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить

Re: Музыкальный звонок с 64 мелодиями на МК

Чт дек 29, 2016 12:42:08

Да, с выпаиванием планара много не поэкспериментируешь... Можно подпаять к МК 6 проводков для внутрисхемного программирования, если у программатора есть соответствующий разъём. Жаль, что у Вас не заработала последняя прошивка, и куда теперь копать, не знаю... :( А на вход Reset подключили конденсатор?

Re: Музыкальный звонок с 64 мелодиями на МК

Чт дек 29, 2016 12:47:50

да сдувать не проблема, муторно по времени только (нагрев - остывание). Программатор не поддерживает ICSP. На reset сразу развел на печатке емкость, попробую еще прошить

нет, с последней прошивкой не работает

Работает, но очень не стабильно. После нескольких отключений питания может заработать. Если не работает, потребляет ток 3-4 миллиампера.

Re: Музыкальный звонок с 64 мелодиями на МК

Чт дек 29, 2016 14:57:14

Можно сначала попробовать с уже прошитой программой принудительно делать сброс (коротить на землю) - будет ли запускться МК?
Можно попробовать ещё один вариант прошивки (см. вложение) - там я уменьшил время старта. Для этой прошивки нужно задать Fuse биты: Low = EE (Ext frequency 8.0-; Start-up time: 14CK+0ms), а High Fuse попробовать сначала DD (с включённым BODLEVEL на 1,8V) - в этом случае потребляемый ток должен быть несколько десятков мкА, а потом DF (Brown Out Detection disabled). Даже не знаю, как это Вам предлагать, может подпаивать МК тонкими проводочками к плате пока...
При старте программы ток потребления сначала большой (единицы миллиампер), а потом - практически сразу - должен перейти в режим засыпания с нулевым током. При старте кнопка звонка должна быть отпущена!

Добавлено after 14 minutes 36 seconds:
А вывод кнопки подтянут резистором к шине питания (резистор R3)?
Вложения
V3.1 (отладка Power down).rar
Отладочная прошивка без задержки после просыпания
(7.78 KiB) Скачиваний: 151

Re: Музыкальный звонок с 64 мелодиями на МК

Чт дек 29, 2016 15:48:26

подтяжка есть. принудительно сбрасывая ресет на землю, потом работает. играет 5-7 мелодий и засыпает. Бог с ним. поищу реле на 3 вольта, сделаю схему с самоблокировкой. Не зря же я просил 1 на выходе ))

Re: Музыкальный звонок с 64 мелодиями на МК

Пт дек 30, 2016 07:49:46

Vladimir_73 писал(а):...поищу реле на 3 вольта, сделаю схему с самоблокировкой. Не зря же я просил 1 на выходе ))

Попытался придумать, с помощью какой схемы можно было бы запустить звонок с отключением от аккумулятора - получается сложнее, чем сам звонок. При подаче питания на звонок с помощью кнопки должны произойти следующие процедуры: блокировка кнопки контактами реле (или ключом на полевом транзисторе) сразу же после подачи питания, пауза примерно 600 мс (эту задержку можно сократить, если убрать паузу при старте программы, но всё равно задержка должна быть), импульс имитации нажатия на кнопку (более 50 мс, иначе сработает антидребезг), и, после окончании мелодии, с помощью заднего фронта положительного импульса с PB0 - обесточивание реле. Таким образом, реле должно включаться через аналог RS-триггера. Такую логику проще всего организовать, применив ещё один, например, 8-выводный МК. :shock:
Или размещать звонок рядом с розеткой 220В, а замыкание контактов кнопки передавать каким-то образом с помощью радиосигнала, излучаемого миниатюрным передатчиком, вмонтированным в дверную кнопку (что-то вроде этого: http://cxem.net/review/review8.php).

Re: Музыкальный звонок с 64 мелодиями на МК

Пт дек 30, 2016 18:15:02

Vladimir_73 писал(а): запустить звонок с отключением от аккумулятора

Может поможет идея http://radiokot.ru/circuit/digital/measure/113/01.gif. Ну и подача питания - это уже веская причина что бы начать мелодию.

Вы могли бы подсказать как реализовано вибрато. Судя по коду это 50 миллисекунд мелодии, потом 120 Микросекунд паузы. Правильно ли я понял?

Re: Музыкальный звонок с 64 мелодиями на МК

Пт дек 30, 2016 18:25:08

Вибрато реализовано примерно также, как в оригинальной схеме: пока идёт генерация тона ноты, она прерывается короткими стробами длительностью 120 мкс с периодом повторения 20 Гц (50 мс). А длительность самой ноты 250 или 400 мс, в зависимости от кода в ПЗУ.

Re: Музыкальный звонок с 64 мелодиями на МК

Ср янв 04, 2017 18:25:14

Дело было вечером, делать было нечего. Платка в смд (кроме электролитов), под трансформатор ТП-112-3. :roll:
Вложения
SMD-zvonok.lay6
(61.41 KiB) Скачиваний: 562

Re: Музыкальный звонок с 64 мелодиями на МК

Чт янв 05, 2017 11:44:46

Pushok62 писал(а):также, как в оригинальной схеме

Я понял, что в оригинальной схеме делитель с переменным коэффициентом (от 1 до 2) отключается на эти самые 120 микросекунд. Потом еще стоит делитель на 128 или 256. Затормаживание делителя приводит к увеличению длительности одного из полупериодов на эти самые 120 микросекунд. Таких затормаживаний при генерации ноты 4 штуки независимо от длительности ноты. То есть происходит как бы понижение частоты одного полупериода процентов на 10-20 и соответвующий сдвиг фазы последующих. Какой из полупериодов будет удлинен - когда динамик подключен или когда выключен - это как повезет.
В программе по моему просто происходит отключение динамика. Но я не совсем понял, это отключение добавляется в конце полупериода, когда динамик отключен или как повезет, это может произойти и в отключенном состоянии и во включенном. Могли бы Вы пояснить.
Мой интерес связан с тем, что я хочу перенести функционал на другой контроллер с тем что бы ПЗУ использовать контроллерное а не отдельное. Кроме того в моих планах сделать подключение этого звонка к обычной звонковой проводке без всяких доработок. С последним может и не получится, есть пока только идеи.

Re: Музыкальный звонок с 64 мелодиями на МК

Чт янв 05, 2017 12:10:50

По оригинальной схеме: длительность строба "вибрато" задаётся цепочкой C6, R7 одновибратора DD8. Строб прекращения генерации тона идёт на вход 10 делителя DD10 (этот делитель обеспечивает формирование частоты ноты в зависимости от кода из ПЗУ). В каком состоянии выходного транзистора наступит строб "вибрато" - неизвестно - в любом. В программе нового звонка транзистор всегда закрывается, т.е. при выключении звука ток через динамик не идёт. Это касается и пауз. Чтобы при подряд идущих одинаковых нотах и паузах между ними не было щелчков, программно определяется общая длина серии одинаковых нот / пауз, которая и обрабатывается микроконтроллером. В оригинальной схеме это получается автоматически, так как при смене ноты / паузы состояние счётчиков не меняется. Делитель на DD11, DD12 (на 256 или 128) определяет номер октавы (в соседних октавах частота нот отличается ровно в 2 раза). Думаю, что можно посмотреть текст готовой программы на C++ - там много комментариев - будет проще перенести на новый микроконтроллер. Единственное небольшое отличие программной реализации от оригинала: частота стробов вибрато (программно 20 Гц) не зависит от темпа мелодии, как в оригинале. Темп мелодии (частота смены нот) определяется одновременно частотой генератора DD3 - (где-то от 10 до 25 Гц) путём деления на 4 делителем DD6.

Re: Музыкальный звонок с 64 мелодиями на МК

Чт янв 05, 2017 13:22:14

Здравствуйте. Не пойму, всё работает, прошилось без проблем, но мелодий всего 32, потом 32 пустоты с еденицей на 12 выводе, затем опять первая мелодия.
После прошивке 24С16 сравнил с буфером, всё ОК.

Re: Музыкальный звонок с 64 мелодиями на МК

Чт янв 05, 2017 18:02:51

Написал в личку. Попробуйте уменьшить (увеличить) сопротивления подтягивающих резисторов R1, R2 до 1 (10) ком.

Re: Музыкальный звонок с 64 мелодиями на МК

Чт янв 05, 2017 19:42:55

С резисторами игрался, не помогло. Грешу всё таки на память.

Re: Музыкальный звонок с 64 мелодиями на МК

Пт янв 06, 2017 22:18:16

Может кому пригодится. Нашёл донора с 24LC16 прошил и все 64 мелодии появились.
Глючная перепрошиваться не хочет.

Re: Музыкальный звонок с 64 мелодиями на МК

Сб янв 07, 2017 03:40:49

Я посмотрел код программы. Я бы сделал генерацию немного по другому, с более полным использованием аппаратных возможностей таймера. Формирование частоты сделал бы на fast pwm режиме таймера. К сожалению чтобы использовать аппаратные возможности по полной нужно генерацию делать на B канале таймера. Но и сейчас можно сделать все гораздо проще. Использовать 14 режим генерации. В icr1 внести значение периода, в ocr1a значение полу периода, то что у Вас расчитывается. Таймер никогда не останавливать. Генерация будет полностью аппаратной. Второй таймер (0) использовать для генерации интервалов. В обработчике 0 таймера отсчитывать такты. Короткая нота - 4такта длинная 8. По истечении ноты брать следующую ноту из массива мелодии в том же обработчика0 таймера. По ппроигрываниявсей мелодии делать предварительную загрузку в оОЗУ следующей мелодии перед тем как уйти в ожидание нажатия кнопки. Генерацию вибрато и изменение частоты делать в обработчика таймеров. В обработчика 0 таймера выставлять флаги смены ноты и вибрато и включать обработчик таймера 1 по переполнению. В этом обработчика если нужна смена ноты перегружать icr1 и ocr1a в значения для следующей ноты. Если нужно вибрато то увеличить только icr1 на 120 микросекунд и выставлять флаг вибрато, чтобы при следующем вызове этого обработчика вернуть все на место. Как только обработчик не ннужен, то есть загружена следующая нота или вибрато сформировано, выключать обработку прерывания. Наличие всей мелодии в ОЗУ и вот такая смена частоты в начале периода ообеспечит генерацию нот и вибрато без щелчков.
Здесь ещё у меня естьсомнения по поводу 120 микросекунд. Возможно более ггармоничным будет увеличение длительности периода нна восьмую часть. Ну а у меня пока только теоретические рассуждения, делаю железо.

Re: Музыкальный звонок с 64 мелодиями на МК

Сб янв 07, 2017 13:34:49

Предложения интересные, мне понравились - красивая идея. Насчёт изменения длительности строба "вибрато" - это надо пробовать и слушать. Сейчас звучит практически так же, как и в оригинальном звонке, я различить не могу. Вообще, настоящий "вибрато", по-моему, - это амплитудная или частотная модуляция синусоидой с частотой 5-7 Гц (если частота выше - как в этом звонке - то это называется уже "тремоло" и имеет звучание, похожее на мандолину). Но в данной реализации другие варианты, которые я пробовал, звучат не очень. В оригинальной схеме быстрый и медленный темп мелодии отличаются не в 2 раза, а раза в полтора - тоже лучше подбирать на слух по скорости звучания соответствующих мелодий (подбирается резистором R5: при полном напряжении питания +5В генератора DD3 частота составляет порядка 40 Гц, быстрый темп - при высоком уровне на выводе 14 DD3, медленный темп - при низком уровне на выводе 14 DD3). Об использовании таймера 0 - он сейчас применяется для генерации случайного номера мелодии, лучшего я придумать не смог. Так как момент нажатия на кнопку случаен, то и текущее состояние таймера в этот момент, независимо о его тактовой частоты, тоже случайно. Можно, конечно, сделать датчик псевдослучайных чисел, фиксируя, к примеру, длительность нажатия на кнопку при предыдущем звонке и используя её для генерации псевдослучайной последовательности, но это уже сложнее. Поскольку сейчас у меня ремонт, попробовать ничего из перечисленного не могу. Буду очень рад, если у Вас получится более красивая программа.
Примечание: в одной мелодии для кодов нот не используются разные признаки (флаги) "вибрато" и темпа, т.е. если эффект "вибрато" включается, он включается для всех нот мелодии, аналогично, ускоренный или замедленный темп относится ко всем нотам мелодии, и ноты с разным темпом в одной мелодии не комбинируются.

Re: Музыкальный звонок с 64 мелодиями на МК

Вт янв 10, 2017 11:52:29

Собрал звонок, все работает. Спасибо автору, но при проигрывании мелодии с вибрато слышны щелчки, как можно их убрать? Сделал свой набор мелодий (часть отсюда, часть из Унисон К-25) может кому-то понравятся.
Вложения
new.rar
(904 байт) Скачиваний: 193

Re: Музыкальный звонок с 64 мелодиями на МК

Вт янв 10, 2017 12:53:40

alexods писал(а):при проигрывании мелодии с вибрато слышны щелчки, как можно их убрать?

Щелчки убрать не получится, так как и в оригинальном, так и в модернизированном звонке эффект "вибрато" основан на прерывании звучания ноты примерно на 120 мкс. Эти прерывания и имитируют "вибрато" (оригинальный звонок звучит так же). Про настоящее "вибрато" - см. моё предыдущее сообщение от 07.01.2017.
Правда, можно подумать, как изменить алгоритм формирования звука, чтобы импульсы "вибрато" не прерывали тоновый сигнал, а его приостанавливали.

Re: Музыкальный звонок с 64 мелодиями на МК

Вт янв 10, 2017 14:49:12

alexods писал(а):в оригинальном, так и в модернизированном звонке эффект "вибрато" основан на прерывании звучания ноты

Я несколько иначе понял работу оригинальной схемы. На 120 микросекунд прерывается работа делителя DD10. Этот делитель выдает сигнал частотой от 100 до 200 килогерц в зависимости от коэфициента деления. Это деление и определяет тон ноты. В последующем сигнал 100-200 килогерц дополнительно делится делителями DD11 DD12 на 128 или 256. Эти делители тактируются фронтами(или спадами) входного сигнала. Когда блокируется DD10 для вибрато, то фронты перестают идти на конечный делитель. DD11 DD12 перестают считать на 120 мкСек. Это эквивалентно увеличению одного из полупериодов выходного сигнала на эти самые 120 мксек. То есть по моему никакого прерывания сигнала нет. А вот как слышится это самое увеличение, сказать ничего не могу.

Re: Музыкальный звонок с 64 мелодиями на МК

Вт янв 10, 2017 16:05:26

Всё правильно, на 120 мкс останавливается делитель DD10, который выдаёт выходную частоту от 100 до 187 кГц (в зависимости от кода ноты: нижнее значение для кода ноты 0, верхнее - для кода ноты 28). Делители DD11, DD12 тактируются как раз этой выходной частотой со счётчика DD10. Поэтому, когда действует строб "вибрато", как бы "замирают" все счётчики DD10, DD11, DD12, и генерация тона ноты останавливается. На входы 2,3 счётчиков DD10, DD11 поступает сигнал общего сброса.
Сейчас пробую доработать программу - убрал обнуления счётчика генерации тона, как после генерации ноты, так и во время строба "вибрато". Звук стал лучше. Исчезли щелчки между нотами и от стробов "вибрато". Остался один щелчок - в конце мелодии (кстати, этот щелчок слышится и в оригинальном звонке за счёт запирания выходного транзистора ключом VT4).
Если сейчас получится, выложу подправленный вариант.

Добавлено after 1 hour 3 minutes 56 seconds:
Выкладываю версию без обнуления счётчика тона: вроде бы исчезли лишние щелчки между разными нотами и при эффекте "вибрато" (звук стал как будто бы более мелодичным?). Проверял на "пищалку", в походных условиях, так что окончательное слово - за вами, просьба проверить, стал ли звук лучше. Доработке подвергались подпрограммы "play" и обработки прерывания "TIMER1_COMPB". Без обработки серии подряд идущих одинаковых нот обойтись не удалось - иначе промежутки между одинаковыми нотами "портятся" наличием задержек из-за программного кода.
Если эта версия понравится больше, выложу её в статье.
Вложения
Звонок без щелчков (отладка).rar
Версия прошивки МК для звонка без лишних щелчков
(7.31 KiB) Скачиваний: 182
Ответить