CD-Плейер на базе IDE CD-ROMа
Данная схема позволит использовать компьютерный IDE CD-ROM в качестве проигрывателя аудиодисков.
Основные возможности:
1. Проигрывание всего диска, одной дорожки или выбранных дорожек (плей-листа).
2. Обзор диска или плей-листа (играет по 10 секунд каждой дорожки).
3. Переход на предыдущую/следующую дорожку и на 10 секунд вперед/назад в пределах дорожки.
4. Автоматический запуск проигрывания при включении питания или смене диска.
5. Проигрывание диска или плей-листа по кольцу.
6. Управление при помощи RC-5 пульта и с клавиатуры.
7. Отображение всякой информации на ЖКИ.
8. Проигрывание диска или плей-листа в случайном порядке.
Схема плейера.
Простота схемы позволяет собрать ее на макетной плате за вечер (обратите внимание на различие в сигналах WR и RW на схеме !)
Один из вариантов платы разработан Антоном Беляевым и находится по адресу http://www.antobel.boom.ru/project/project3.html,
еще один (файл в формате ACCEL P-CAD 15) - неким Игорем с Яндекса.
Вместо контроллера AT90S8515 можно применить более дешевый и современный ATMEGA8515, как показали испытания, при этом значительно повышается устойчивость к помехам по питанию.
Супервизор PST529C от Mitsumi уже снят с производства, вместо него можно поставить полный аналог PST600C или Microchip MCP100 c напряжением срабатывания 4,5-4,75 вольт, при этом резистор на его выходе можно убрать.
Индикатор - 2 строки по 16 символов на базе HD44780, при использовании индикатора с расширенным температурным диапазоном на нижний по схеме вывод регулятора контрастности необходимо подать минус 5 вольт.
Обязательно проверьте разводку питания имеющегося индикатора - она может отличаться от указанной на схеме - были жертвы !
Можно отказаться от индикатора, установив резистор сопротивлением 2-4.7к между выводом 32 контроллера и общим проводом (при этом необходима прошивка не старше 1.0
или при программировании последих версий заранее запрограммировать EEPROM на коды клавиатуры и пульта).
Непосредственно на выводы питания контроллера (20 и 40) необходимо подключить керамический конденсатор емкостью 0.1-0.47мкФ. Конденсатор 10мкФ по питанию фотоприемника также должен стоять как можно ближе к фотоприемнику.
Прошивки контроллера: версия 4.0a (от 14.01.2008), версия 3.19 (от 14.01.2008), версия 2.19 (от 14.01.2008) и версия 1.0 (от 07.01.2005).
(Из-за особенностей провайдера используйте возможность интернет-броузера 'сохранить объект как', в конце сохраненного файла удалить HTML-рекламу - получится Intel HEX-файл для программатора).
Для программирования рекомендую программатор AVReAl.
Отличие версий 3.xx и 2.xx - поддержка CD-Text (название альбома, исполнитель, название дорожки) при его наличии на диске. Нет смысла программировать версию 3.xx, если используемый привод не поддерживает чтение CD-Text.
Отличие версий 4.xx - работа с индикатором на 2 строки по 20 символов.
Версия 4.0a - на базе версии 3.19, используется весь размер индикатора за счет более свободного расположения информации. Версия тестовая - возможны глюки :) В дальнейшем будут доработки.
Отличие 3.19 и 3.18 - убраны редкие зависания при неудачном времени извлечения диска, восстановлена работоспособность пульта после попытки вставить не-аудио диск.
Отличие 3.18 и 3.17 - приводы, останавливающиеся после каждой дорожки, теперь работают нормально.
Отличие 3.17 и 3.16 - поставлена на место буква 'йо', наконец исправлен подсчет времени (общее время диска и время дорожки).
Отличие 3.16 и 3.15 - исправлен большой глюк CD-Text'а, появившийся в версии 3.14.
Отличие 3.15 и 3.14 - расширен диапазон частот для пульта, переход дорожек по кольцу (после последней - первая, перед первой - последняя) с клавиатуры и пульта, слегка изменен алгоритм вывода CD-Text'а (понял причину глюка).
Отличие 3.14 и 3.13 - наконец-то и мне попался глючный индикатор, о котором мне писали несколько человек (производства WinStar), с 'застревающим на полпути' CD-Text'ом. Исправлено (надеюсь :) Также длина CD-Text'а
увеличена до 20 символов для большого индикатора на плате-моноблоке. С индикаторами длиной 16 символов работает по-старому.
Отличие 3.13 и 3.12 - исправлена очень старая ошибка, из-за которой на дисках длительностью около 1 часа возможно было глухое зависание.
Отличие 3.12 и 3.11 - на некоторых современных дешевых глючных приводах работает на дисках без CD-Text'а !
Отличие 3.11 и 3.10 - попытка устранить зависания при использовании неполностью выдающих CD-Text приводах CD-ROM. По отзывам повторивших конструкцию объявляется безглючной !
Отличие 3.10 и 3.00 - показывает CD-Text также в режиме останова при переходе по дорожкам (сделано по просьбе), убрано немного ошибок.
Отличие 2.19 и 2.18 - убраны редкие зависания при неудачном времени извлечения диска.
Отличие 2.18 и 2.17 - приводы, останавливающиеся после каждой дорожки, теперь работают нормально.
Отличие 2.17 и 2.16 - исправлен подсчет времени (общее время диска и время дорожки).
Отличие 2.16 и 2.15 - расширен диапазон частот для пульта, переход дорожек по кольцу (после последней - первая, перед первой - последняя) с клавиатуры и пульта.
Отличие 2.15 и 2.14 - исправлена очень старая ошибка, из-за которой на дисках длительностью около 1 часа возможно было глухое зависание.
Отличие 2.14 и 2.13 - мелкий недочет, замечен не был :-)
Отличие 2.13 и 2.12 - исправлена ошибка при использовании режима обзора для некоторых приводов (недоработка версии 2.11).
Отличие 2.12 и 2.11 - при ошибке чтения диска не сбрасывался признак проигрывания в случайном порядке.
Отличие 2.11 и 2.0 - на некоторых приводах стал правильно реагировать на кнопку Stop, введена задержка от включения питания до обращения к приводу, исправлена мелкая неприятная ошибка.
Отличие 2.0 и 1.0 - настройка на любые клавиши пульта и программирование функций кнопок для облегчения разводки клавиатуры под переднюю панель. Пульт может быть с любым кодом устройства.
Отличие 1.0 и 0.6 - показывает режим проигрывания в случайном порядке, устранены небольшие ошибки.
Отличие 0.6 и 0.5 - добавлен режим проигрывания в случайном порядке, улучшен переход на 10 секунд назад, правильно отображается номер дорожки на Audio+Data CD.
Старая прошивка контроллера (версия 0.5) и ее исходный текст (версия 0.6 удалена из-за глюков :)
При программировании ATMEGA8515 установить CKSEL=F, CKOPT=1, SUT=3, BRST=1, S8515C=0, для экстремалов - BODEN=0 и не ставить супервизор питания.
Правильно собранная схема в наладке не нуждается и после подачи на Vcc питания 5 вольт должна заработать сразу.
При первом включении запускается режим настройки на клавиатуру и пульт. Необходимо последовательно нажать кнопки, которые будут выполнять функции:
Play, Stop, +10s, -10s, Next, Previous, Pause, Review, Loop, Random, Add list, Del list, Playlist, Autoplay, Autostop.
Для пропуска настройки кнопок и перехода к настройке пульта необходимо нажать кнопку G.
Для настройки пульта необходимо нажать на пульте любую кнопку для настройки кода, затем последовательно нажать кнопки, которые будут выполнять функции:
Play, Stop, +10s, -10s, Next, Previous, Pause.
Для пропуска настройки пульта необходимо нажать кнопку G. Контроллер перезапустится с новыми установками.
В дальнейшем при включении на индикаторе отображается информация о прошивке, через некоторое время она сменяется на сообщение об отсутствии связи с CD-ROMом, отсутствии диска или информацию о диске.
Для повторного входа в режим настройки необходимо нажать клавишу G или стереть (записать 0xFF) байт по адресу 0x001 EEPROM данных.
При появлении надписи "CDROM not found" необходимо проверить правильность и надежность соединения выводов контроллера с разъемом CD-ROMа, при плохом контакте впоследствии могут быть случайные сбои в работе (перескакивания на следующую дорожку).
Кнопки для версии 1.0 и более ранних имеют следующее назначение:
1 (Next) - переход на следующую дорожку,
2 (Play) - начать проигрывание дорожки или продолжить после паузы,
3 (+10s) - на 10 секунд вперед,
4 (Del list) - удалить последнюю дорожку из плей-листа,
5 (Previous) - переход на предыдущую дорожку,
6 (Autostart) - включение/выключение автозапуска (автоматическое проигрывание диска при его смене или включении питания),
7 (-10s) - на 10 секунд назад (если текущая позиция менее 10 секунд, то на начало),
8 (Review) - обзор диска или плей-листа (в зависимости от режима),
9 (Pause) - пауза, при повторном нажатии (продолжение проигрывания (некоторые CD-ROMы при длительной паузе переходят в режим остановки)),
A (Loop) - включение/выключение проигрывания диска или плей-листа по кольцу,
B (Add list) - добавить текущую дорожку в плей-лист,
C (Random) - включение/выключение режима случайного порядка проигрывания,
D (Stop) - остановка проигрывания,
E (Autostop) - включение/выключение режима автоостанова (проигрывание одной дорожки),
F (Playlist) - включение/выключение режима плей-листа,
G - не используется, с версии 2.0 - "сервисное меню" для настройка клавиатуры и пульта (используется только обслуживающим персоналом, желательно установить в труднодоступном месте или внутри корпуса).
Для дистанционного управления используется пульт с кодировкой RC-5 и кодом устройства 5 (видеомагнитофон), для версии 2.0 и выше код может быть любым.
Расположение кнопок пульта для версии 1.0 и более ранних:
код 46 (в филипсовской кодировке для ТВ - прозрачный телетекст на изображении) - переход на следующую дорожку,
код 60 (включение телетекста) - переход на предыдущую дорожку,
код 15 (статус) - пауза,
код 17 (уменьшить громкость) - останов,
код 42 (часы/подстраница телетекста) - проигрывание,
код 45 (останов телетекста) - на 10 секунд вперед,
код 44 (вывод скрытой информации телетекста) - на 10 секунд назад.
На индикаторе в стандартном режиме отображаются:
nn/NN-S-LL-MM:SS
CNF--mm:ss/mm:ss (черточками указаны пустые позиции)
nn - номер проигрываемой дорожки, NN - общее число дорожек (для всяких хитроумных дисков - число аудиодорожек);
S - состояние (воспроизведение - треугольник, останов - квадратик, пауза - две вертикальные полоски, обзор - ">>", случайный порядок - ">?");
LL - количество дорожек в плей-листе (если он пуст - это число отсутствует);
MM:SS - общее время звучания диска;
CNF - настройка автозапуска (треугольник) и автоостанова (треугольник с палочкой), зацикливания (две круглые стрелки);
mm:ss/mm:ss - текущее время звучания дорожки и полное ее время.
В режиме плей-листа информация немного меняется:
nn/NN-S----pp/PP
CNFl-mm:ss/mm:ss
pp - номер дорожки из плей-листа, PP - общее количество дорожек в плей-листе;
l - значок режима 'плей-лист' (буквы 'PL');
остальная информация та же, что и в стандартном режиме.
Программирование плей-листа:
Работа с плей-листом возможна только в стандартном режиме, независимо от состояния (играет, обзор, останов, ...).
Нажатием кнопки "Add list" текущий номер дорожки (nn на индикаторе) добавляется в конец плей-листа, при этом значение LL увеличивается на один. Максимальное количество записей в плей-листе - 99.
Нажатием кнопки "Del list" последняя добавленная дорожка удаляется из плей-листа, при этом значение LL уменьшается на один, при удалении всего плей-листа LL на индикаторе не отображается.
Для переключение на проигрывание плей-листа и обратно нужно нажать кнопку "Playlist", режим плей-листа индицируется буквами 'PL'. При этом переключении режим случайного порядка проигрывания выключается.
При включении режима плей-листа он сохраняется в энергонезависимой памяти до извлечения диска, что позволяет использовать его многократно после выключения питания.
Из памяти плей-лист стирается при его редактировании или извлечении диска. На некоторых CD-ROMах возможно стирание его при включении питания (было замечено на LG 52x).
Начиная с версии 3.00, добавлено отображение CD-Text в одном из следующих видов в зависимости от наличия информации:
Альбом-Название альбома
Исполнитель-Название произведения
или
Альбом или Название альбома
Исполнитель-Название произведения
или
Альбом-Название альбома
Исполнитель или Название произведения (хотя стандарт требует обязательного наличия названия произведения, в структуре CD-Text никто не мешает его отсутствию)
или
Альбом или Название альбома
Исполнитель или Название произведения
или
Исполнитель
Название произведения
или
Название...
...произведения
Текст отображается на ~3 секунды после начала проигрывания дорожки, после этого (или после нажатия кнопок или подачи команд пультом) отображается основная информация. Отображается только та информация из CD-Text'а, которая помещается
на индикаторе (по 16 символов в строке).
Названия, записанные на диске кириллицей в кодировке CP-1251, приводятся в соответствие знакогенератору индикатора SC1602EULT-SH-HB-K, при использовании индикаторов без поддержки кириллицы или с другим знакогенератором, необходимо
откорректировать таблицу перекодировки, расположенную с адреса 0x1F80 в файле (с адреса 0xFC0 в контроллере). Таблица соответствует кодам символов 0x80-0xFF, символы с кодом, меньшим 0x20, заменяются на пробелы, остальные символы не перекодируются.
Не все приводы могут читать CD-Text, не все читающие выдают его правильно - NEC CD-3002B обрезает его на некоторых дисках (проверен на компьютере - то же самое).
В дополнение к описанному устройству можно сделать внешний ЦАП для получения более качественного звука и простой пульт на AT Tiny28V.
Перечень приводов, прошедших проверку с этим устройством (для версии 2.12).
Плата в формате smArtWork (11 соединений выполнено проводом МГТФ, рядом - усилитель на TDA1517/TDA1519), ее фотография в собранном виде
и фотография действующей модели плейера.
Плата-моноблок (исправленная) моей разработки (P-CAD 4.5) предназначена для крепления к индикатору 2 строки по 20 символов размером 40х180 или 2 строки по 16 символов размером 29.5х85, на ней также собирается
ЦАП с использованием современных микросхем CS8416 и CS4391A. При использовании индикатора 2х16 часть с ЦАП можно отрезать и использовать отдельно. Детали - SMD 0805, точные резисторы - SMD 0805 или для монтажа в отверстия,
контроллер в корпусе TQFP или MLF, танталовые электролитические конденсаторы размера В, супервизоры MCP100 в корпусе TO-23, CS8416 и MC34078 в корпусе SOIC, CS4391A - TSSOP, трехвольтовый стабилизатор - LT1117-3.3 в корпусе SOT-223.
Фотография платы-моноблока, еще, еще и еще.
С вопросами обращайтесь к автору.
На главную страницу