SD-flash card LVA-player

SD-flash card   MP3 проигрыватель.

SD-LVA player.

 

 

     Хочется всегда при себе иметь музыку, любимую, лучшую и разнообразную. На сегодняшний день в домашних условиях, при наличии головы и рук, сделать маленький, меньше сотового телефона, легкий, удобный проигрыватель не составляет большого труда.

 

     Представляю на суд радиолюбителей свой очередной проигрыватель, 3-й по счету. Это, по сравнению с [1], совершенно новая конструкция, а не ее продолжение. Из [1] взяты только подпрограммы файловой системы FAT32 и декодера, с изменениями. Самое сложное это файловая система с упаковкой таблиц FAT, остальное труда уже не представляло.

 

            Основные характеристики соответствуют примененному декодеру Финской фирмы VLSI Solution Oy - VS1011e, это ЦАП 18бит, Кг – 0,1%, Шум - -85дБ, динамический диапазон – 90дБ, диапазон частот  20-20000Гц, неравномерность - +/-0,1дБ, Uвых – 1,6В(от пика до пика).

 

      Проигрыватель может воспроизводить файлы с расширением MP3 и битрейтом до 256кбит/сек, с поддержкой переменного битрейта и WAV. При чтении WAV-файлов поддерживаются RIFF WAV субформаты: 0x01-PCM, 0x11-IMA ADPCM, оба с частотой семплирования до 48кГц, и 0x55-MP3. Остальные субформаты не поддерживаются декодером VS1011e.

 

     Проигрыватель имеет все основные функции управления:

В режиме стоп – воспроизведение, переход на предыдущий и следующий треки, вход в каталог и выход из каталога, управление громкостью и тембрами, выключение.

В режиме воспроизведения - пауза, стоп, переход на предыдущий и следующий треки, управление громкостью и тембрами, блокировка кнопок управления при воспроизведении.

 

     Проигрыватель управляет громкостью, НЧ и ВЧ тембрами. При этом при регулировании тембров можно варьировать как глубиной, так и частотой среза. Глубина на НЧ от 0 до +15дБ с шагом 1 дБ, частота среза изменяется от 20Гц до 150Гц с шагом 10Гц. На ВЧ – глубина от -12дБ до +10,5дБ с шагом 1,5дБ, и частота от 1кГц до 15кГц с шагом 1 кГц. На ВЧ индикация уровня производится в “шагах”, показания будут меняться от -8 до 7, т.е. эти показания надо умножить на 1,5. Значения громкости и тембра сохраняются в EEPROM микроконтроллера сразу при их изменении, поэтому при включении проигрывателя будут установлены громкость и тембры такие, какие были при выключении.

 

     При нажатии на кнопки управления, на несколько секунд включается подсветка дисплея.

 

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

 

Проигрыватель не сортирует файлы и каталоги по именам, но сначала выводятся все каталоги, и только потом все файлы, не зависимо от того в каком порядке они находятся в карте памяти.

 

После окончания воспроизведения проигрыватель автоматически выключается.

 

Прилагается две прошивки с разными знакогенераторами, с утонченным и жирным шрифтом.

 

     Проигрыватель работает с картами памяти SD и SDHC. Карты памяти MMC, из-за их отсутствия, не тестировались, но их работа предусмотрена. SD-карты проверялись разных производителей на 512МБ, 1ГБ и 2ГБ. SDHC проверены на 4ГБ и 16ГБ. Проигрыватель постоянно эксплуатируется с картой на 16ГБ. Файловая система поддерживается только FAT32, поэтому SD-карты нужно переформатировать, Microsoft Windows это позволяет сделать без проблем. Проигрыватель поддерживает “горячую” установку SD-карты.

 

     Питание проигрывателя осуществляется Li-Ion аккумулятором 3,6В от сотового телефона.

     Ток потребления:

     В выключенном режиме             – менее 700мкА

     Воспроизведение, подсветка вкл.  – около 70мА

     Воспроизведение, подсветка выкл. – около 50мА

     Нового, стандартного, полностью заряженного Li-Ion аккумулятора от сотового телефона емкостью 600ма/ч хватает на 10-12 часов непрерывного воспроизведения.

 

     Размеры проигрывателя 42х70х20мм. Толщина может быть уменьшена до 16мм при замене аккумулятора на более тонкий.

 


 

Схема

 

Схема проигрывателя показана на рис. 1. За основу взят микроконтроллер Atmega8L-8AI, DD1. Разъем X1 для внутрисхемного программирования, сам разъем не установлен чтобы не занимать места, на плате только контактные площадки для подпайки гибких проводников к разъему. Цоколевка дана для 6-ти выводного программатора AVRISP. Резисторы R1-R3 установлены для того, чтобы периферия не мешала программировать микроконтроллер DD1. Кнопки управления SB1-SB6 используют внешние прерывания INT0 и INT1 микроконтроллера. Для уменьшения нагрузки портов DD1 светодиоды подсветки HL1-HL4 подключены к разным выводам. Половина питания Vcc с делителя из резисторов R15 и R16 поступает на вход ADC(АЦП) для измерения напряжения АКБ.

 

Рис. 1

 

Вся периферия, а это декодер MP3 DD2, дисплей HG1 и SD-flash карта подключены к шине контроллера - SPI. Выбор производится соответствующим выходом DD1, 12,13,7 и 9. Выход 10 (DD1) – аппаратный сброс декодера, а вывод 14 - дисплея. Вход 11 – ожидание готовности декодера DD2 к приему данных. Выход 8 – управление данные/команда дисплея HG1. Контроллер работает от внутреннего тактового генератора на 4 МГц.

Кварцевый резонатор ZQ1 выбран рекомендованный производителем как оптимальный. Для управления декодером, чтобы не было конфликта периферии, применена схемотехническая хитрость. Дело в том, что если прервать чтение сектора SD-карты, то обращение к ней завершится ошибкой, и чтобы восстановить работу, нужно заново инициализировать SD-карту. А хранить данные целого сектора для контроллера слишком роскошно, к тому же, вход команд и данных у декодера один, вывод 13 (DD2). Поэтому решено: данные сектора с SD-карты по MISO подавать прямо в декодер, минуя контроллер. Поэтому сигналы MISO и MOSI объединены у декодера диодом VD1. Контроллер только следит за потоком и управляет им. Выход декодера 14 (DD2) отключен, поэтому чтение из него не производится, вообще-то читать состояние декодера нет большой необходимости.

Номера выводов дисплея указаны для разъема, в скобках – шлейфа дисплея по datasheet. Дисплей применен от сотового телефона Siemens-C35, но нужно быть внимательным, в этих моделях телефонов применялись разные дисплеи. Для простоты программирования дисплея по строкам, пришлось его установить “вниз головой”, по сравнению с установкой в телефоне, поэтому буквы знакогенератора пришлось вводить перевернутыми. Это оказалось удобнее, чем писать задом наперед.

Выводы разъема SD-карты указаны для стандартного корпуса, а не для микро и мини. В SD-карте используется SPI режим, который работает и с MMC картами.

R13, C11 и R14, C12 – стандартные цепи Зобеля, по datasheet. X5 – гнездо для подключения стереотелефонов (наушников).

Немного о заряде АКБ GB1. Во всех, даже Китайских, Li-Ion АКБ сотовых телефонов есть встроенный контроллер заряда-разряда. Но иногда проскакивают сообщения, что АКБ взрываются и загораются, это, или совсем левая продукция, или антиреклама, для того чтобы брали продукцию именитых фирм в 3-5раз дороже. Li-Ion аккумуляторы считается одним из самых безопасных аккумуляторов, при условии соблюдения режима эксплуатации [11]. Его не надо путать действительно с опасными литиевыми АКБ. По крайней мере, проверьте АКБ перед использованием. Автору ни разу не попадались АКБ без контроллера или с неисправным контроллером, скорее всего сам аккумулятор неисправен. Для проверки нужно АКБ подключить к источнику тока примерно на 50ма, и поставить на заряд с контролем тока заряда и напряжения. При достижении 4,1В-4,2В заряд должен отключиться и ток упадет до “0”. Если это так, то электроника АКБ исправна, и его можно эксплуатировать. Возможно, что внутренний контроллер не поддерживает оптимальный уровень тока заряда, но для Li-Ion АКБ это не так важно, зато он защищает аккумулятор от перезаряда, отключением зарядного устройства при достижении 4,1В-4,2В (при таком методе заряда 100% заряда можно не получить, т.к. отсутствует 2-ой этап заряда при постоянном напряжении, но это не уменьшает его срок эксплуатации). А также от переразряда, отключая нагрузку при достижении напряжения около 3,3В-3,4В. Внутренний контроллер также защищает аккумулятор от внешнего к.з. и высокой температуры при заряде и разряде. Поэтому внешний, специализированный контроллер заряда не применяется, это упрощает схему, но, при этом нужно обязательно отключать нагрузку во время заряда, т.к. при отключении внутренним контроллером аккумулятора, на контактах АКБ а также на схеме, напряжение повысится до напряжения зарядного устройства на Х.Х.. И оно может доходить до 6В-7В, это может оказаться “смертельно” для нагрузки.

X6 – гнездо для подключения зарядного устройства, а если выразится точнее: блока питания от сотового телефона который используется только для заряда. Блоки питания сотовых телефонов в своей сущности не являются зарядными устройствами, т.к. настоящее зарядное устройство обязано оптимизировать и, по возможности, контролировать процесс заряда. Во время заряда, т.е. установки штекера в гнездо происходит размыкание заземляющего контакта, и питание проигрывателя отключается, а через диод VD4 напряжение поступает на АКБ, при этом светодиод HL6 светится ярко, сигнализируя о заряде АКБ. Светодиод HL5 при этом не светится, или светится тускло. При достижении полного заряда внутренним контроллером АКБ заряд отключается, напряжение на его контактах повышается, и светодиод HL5, в зависимости от применяемой АКБ, может светиться ярко или мигать с периодом 1-2 сек.

Если зарядное устройство отключено, диод VD4 запрется, и светодиоды работать не будут. Это конечно неидеальная система контроля заряда АКБ, но самая простая. Также диод VD4 защищает АКБ  от неправильной полюсовки зарядного устройства.

Замечания по диоду VD3. Дело в том что по datasheets [7,10] декодера MP3 и SD-flash карт, напряжение на них не должно превышать 3,6В. В действительности, на полностью заряженной Li-Ion АКБ напряжение составляет 4,2В, что на 0,6В более чем максимальное по datasheets. Диод VD3 уменьшает Vcc примерно на эту величину. Но этот диод увеличивает внутреннее сопротивление источника питания, поэтому в паузах слегка прослушиваются интерференционные помехи от цифровой части. В Интернете есть подобные схемы, которые запитаны непосредственно от Li-Ion АКБ, но это любительские схемы, и им на 100% доверять нельзя. Можно, на свой страх и риск, исключить этот диод.

 


 

Платы

 

     На Рис. 2 и 3 показана основная плата, размер платы составляет 39х67,5мм, толщина стеклотекстолита составляет 1,5мм.

 

        

Рис. 2                           Рис. 3

 

     На рис. 4 показана плата кнопок управления и индикации заряда АКБ. Размер платы 39х30мм, толщина 1мм.

 

Рис. 4

 

     На рис. 5, 6 и 7 соответственно показано расположение деталей на платах. Под кварцевый резонатор ZQ1 в плате, по контуру, вырезается сквозное отверстие.

 

                

         Рис. 5                           Рис. 6                          Рис. 7

 

     В приложении, в конце по ссылке, можно загрузить печатные платы. Платы были подготовлены в популярной программе Sprint Layout 5.0.

 


 

Детали

 

Резисторы и керамические конденсаторы применены в корпусе типоразмера 1206. Микроконтроллер DD1 в корпусе TQFP-32, декодер DD2 – SOIC-28. Светодиоды HL1-HL4 – 0805, родные, от подсветки дисплея тел. Siemens-C35. Светодиоды HL5, HL6 – 1210. Диод VD1 сдвоенный, с общим анодом, но на плате предусмотрена установка в таком же корпусе других диодов – не с общим анодом, при этом нужно установить 2 корпуса. Сами диоды в этом случае могут быть как с общим катодом, как последовательно соединенные, так и одиночные. Диод VD1 и стабилитрон VD2 в корпусе SOT-23. Конденсаторы C13 и C14 – алюминиевые в корпусе C, d=6мм h=6мм, если есть возможность, то их желательно применить бОльшей емкостью. Остальные электролитические конденсаторы танталовые, размер A. Дисплей уже упоминался, от сотового телефона Siemens-C35. Зарядное устройство от сотового телефона Nokia (из-за примененного штекера), но нужно проверить его выходное напряжение на Х.Х., он должно быть в пределах 6В-7В.

 


 

Сборка

 

     Начинать сборку платы следует с разъема X4, т.к. заводского разъема найдено не было, пришлось изготовлять самостоятельно. Контакты лучше взять от старого компьютерного разъема “ISA”, но можно взять от старого шлейфа - разъема 5-ти дюймового дисковода. Площадки на плате расположены с 2-х сторон, дело в том, что если на площадку припаять контакт, то нагрузка будет на отрыв этой площадки, и площадка может отпасть, испортив всю конструкцию. Поэтому все площадки разъема X4 через край пропаяны между собой луженым проводом примерно ø0,25мм. Далее надо запаять конденсаторы C13 и C14, затем разъем X5, и срезать заподлицо выступающие выводы разъема, т.к. эти выводы находятся под SD-картой. См. рис. 8. Далее запаивается разъем X6.

 

    Рис. 8

 

          Для дальнейшей сборки надо вырезать направляющие для SD-карты, см. рис. 9.

 

                  

                   Рис. 9                      Рис. 10

 

     В направляющих сверлится 6 отверстий ø1мм по плате управления. Чуть большего размера берется бумага и ламинируется скотчем. Она нужна для того, чтобы закрыть плату под SD-картой. Тогда при отсутствии карты плата не будет видна. На этой бумаге можно отпечатать логотип, или просто показать как надо вставлять карту, рис. 10. Под контактами вырезается отверстие. Затем луженым проводом ø0,8мм через отверстия собираем этот “пирог”. Проверяется как входит SD-карта, если все нормально, тогда все стягивается и пропаивается на обоих сторонах. Обрезается лишний провод, оставляя около 1 мм.

     После этого можно соединять платы между собой луженым проводом, разъем X2, и запаивать все остальные элементы, кроме декодера DD2. Полностью собранная плата на рис. 11.

 

             Рис. 11

 

     Чтобы АКБ не класть на детали, была сделана подкладка из органического стекла толщиной 2,5мм. Сначала вырезается заготовка размером равным плате. Затем в ней вырезаются отверстия и фрезеруются углубления под детали, разной глубины. См. рис. 12. Под контактными площадками разъема X1 “ISP” сверлятся отверстия для проводников к разъему.

 

             Рис.12

    Рис. 13

 

     Контакты для АКБ делаются под используемую батарею, в данном варианте использовалась АКБ также от Siemens-C35. Контакты сделаны из проволочных пружинных контактов гнезд сетевых адаптеров или стационарных телефонных аппаратов. Для этого приклеиваются из оргстекла упоры для АКБ к подкладке, формуются и припаиваются посредством гибких проводников к плате. Рис. 13. На рис. 14 показан готовый проигрыватель без корпуса.

 

              Рис. 14

 

     Корпус сделан из луженой жести толщиной 0,4мм. Для этого, по общей форме собранной платы проигрывателя вместе с дисплеем и АКБ, делается на жести выкройка в развернутом виде, учитывая по 2мм на места спайки. После этого вырезаются и сверлятся отверстия которые трудно вырезать в готовом виде. Производится гибка в тисах, для этого лучше применить временные шаблоны. После этого производится пропаивание корпуса, см. рис. 15 и 16.

 

    Рис. 15

             Рис. 16

 

 

После пропайки корпуса нужно все выступы и заусенцы обработать напильником и надфилями, доводятся все отверстия. По такой же технологии изготовляется и крышка АКБ. Корпус снаружи может быть обработан по желанию и возможностям, можно красить или покрыть пленкой, в данном случае он был оклеен тонким кожзаменителем. Осталось только вставить проигрыватель в корпус.

 


 

Наладка

 

Когда все детали и контроллер будут установлены, можно начать отладку проигрывателя. Если декодер не установлен и SD-карта не вставлена можно программировать любым программатором, но при установке декодера и/или SD-карты напряжение программирования не должно превышать 3,6В. Для этого, можно использовать от Atmel фирменные “ISP” программаторы, с возможностью программировать от пониженного напряжения, или, как использовал автор, USB программатор из [2]. При программировании желательно питать проигрыватель от АКБ, для этого провод Vcc к разъему “ISP” не подключают. В контроллере устанавливают конфигурационные биты и его программируют. EEPROM не программируется, т.к. там содержится только значения громкости и тембров. Если Ваша программа программатора использует для установки битов галочки, то там где показаны “0”, надо устанавливать галочки, а где “1” – галочки нужно сбрасывать.

;Fuses for ATmega8L

.equ FUSEH = 0xD1

.equ FUSEL = 0x83

;HIGH = 0xD1  11010001

;             |||||||+-- BOOTRST (boot reset vector at 0x0000)

;             ||||||+--- BOOTSZ0 x

;             |||||+---- BOOTSZ1 x

;             ||||+----- EESAVE (preserve EEPROM over chip erase)

;             |||+------ CKPOT (enabled, внутренний RC-генератор)

;             ||+------- SPIEN (allow serial programming)

;             |+-------- WDTON (WDT not always on)

;             +--------- RSTDISBL (reset pin is enabled)

;LOW  = 0x83  10000011

;             ||||++++-- CKSEL 3..0 (внутренний RC-генератор 4.000MHz)

;             ||++------ SUT 1..0 (внутренний RC-генератор, BOD enabled)

;             |+-------- BODEN (Brown-Out Detector enabled)

;             +--------- BODLEVEL (2.7V)

 

После программирования при включении должен показаться логотип и уровень заряда АКБ. При нажатии на кнопку SB1 и, ее удержании около 3сек, загорится подсветка дисплея, и будет произведена инициализация карты памяти, если карта не обнаружена высветится надпись – “Insert SD-card”. Карту можно вставить и сейчас. После ее инициализации будет кратковременно, на 2сек, выведены: ее объем в мегабайтах, тип и версия – MMC,SD v1.xx или v2.0. От этого зависит дальнейшая работа программы с картами памяти. Если форматирование карты не FAT32, то появится надпись – “Not Format FAT32”, карту надо переформатировать.

Если этого не будет, нужно проверить весь монтаж качество прошивки и проверить конфигурационные биты. Если при включении подсветка появляется, а дисплей не показывает надписи, вероятнее всего нет хорошего контакта в разъеме X3. Если карта не хочет инициализироваться или есть ошибки при чтении, проверьте качество разъема X4 и протестируйте карту на ошибки.

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

После проверки на работоспособность контроллера можно установить декодер.

 


Описание эксплуатации

     На рис. 17 показано расположение кнопок и их функции.

 

        

                   Рис. 17

 

     Кнопкой On/Off включается и выключается проигрыватель, при включении надо удерживать кнопку около 3сек. Эта же кнопка блокирует клавиатуру при воспроизведении. Проигрыватель автоматически выключается при достижении конца каталога.

     Кнопка Select -  имеет две функции, производит выбор каталога, т.е. вход в каталог, а при индикации файла (трека) и при воспроизведении, выбор регулировки громкости и тембра, который производится вкруговую, при каждом нажатии в нижней строке будет выведено или громкость, или частоты среза ВЧ и НЧ, или их уровни, рис 20.

     Кнопки Next/Up и Prev/Down – соответственно переход к следующему и предыдущему каталогу или файлу (треку). При воспроизведении, переход к следующему и предыдущему файлу (треку), или, если выбор значений громкости и тембров произведен, тогда изменение этих значений, выше и ниже соответственно. При изменении громкости показания меняются от -72дБ до 0дБ.

     Кнопка Esc – отмена, выход из каталога или останов воспроизведения. При выходе имена предыдущих каталогов не восстанавливаются [1], а выводится “PREV Dir”. В FAT во всех подкаталогах есть каталоги с обозначением “.” и “..”, они обозначают указатели на текущий и предыдущий каталог соответственно. Для лучшего понимания эти обозначения заменяются на “CURR Dir” и “PREV Dir”, означая текущий и предыдущий каталог. При достижении конца каталога кратковременно появится надпись “EndDir”.

     Кнопка Play – воспроизведение, при повторном нажатии – пауза.

     Ниже кнопок - светодиоды заряда АКБ.

 

     Когда проигрыватель выключен, ниже логотипа выводится заряд АКБ в процентах, но постоянный опрос АКБ не происходит, это сделано для того, чтобы уменьшить потребление в выключенном состоянии. Для уточнения уровня заряда нужно кратковременно нажать любую из кнопок, при этом произойдет вызов прерывания кнопок, и будет проверен заряд АКБ. Во время воспроизведения заряд выводится только в правом верхнем углу в виде символа батареи, округляя показания через 20%, а рядом смайлик, от улыбающегося до грустного, в зависимости от состояния АКБ.

В верхнем левом углу символ ключа, означающий выключение или блокировку кнопок во время воспроизведения. См. рис 18, на котором дополнительно показаны два знакогенератора. Тонкий шрифт для эстетов, а жирный более виден и легче читается.

    

    Рис. 18

 

На рис 19 показаны варианты дисплея при воспроизведении трека.

 

    Рис. 19

 

При регулировании тембров и громкости в нижней строке будут показания как на рис 20.

 

 

    Рис. 20

 

По истечении трека показания изменения громкости и тембра уберутся, и проигрыватель, при нажатии кнопок Next/Up и Prev/Down, будет переходить соответственно на следующий и предыдущий треки.

Если подсветка выключена, то первое нажатие на любую из кнопок произведет включение подсветки а не исполнение команды.


Послесловие

Для написания программы использовалась литература [3-10 и другая]. Для изучения работы CD и MMC карт [7,8], желательно сначала иметь общее представление о них и их принципе работы  в SPI режиме из [4]. Для изучения работы дисплея LPH7889 от Siemens-C35 [5,6], желательно ознакомится с подобными дисплеями от Nokia [3], которые похожи по управлению как братья близнецы, не считая разрешения экрана. [3,4] взяты из канувшего в лету сайта mp3vkarmane.nm.ru, но его архив еще можно найти на просторах Интернета.

Лузянин Виктор Алексеевич

19.02.2010г.   г.к. Анапа

Загрузить прошивку и платы

Литература:

  1. Виктор Лузянин, HDD-CD LVA player, http://payalnik-ru.narod.ru/VicMain/VicPage8/HCDplay.htm
  1. А. Рыжков, USB программатор микроконтроллеров AVR и AT89S, совместимый с AVR910, Радио 2008г. №7, стр.28, 29.
  2. Алексей Катичев, LCD Nokia 3410, http://payalnik-ru.narod.ru/VicMain/Docs/LCD_3410.doc
  3. Алексей Катичев, Азы работы с MMC, http://payalnik-ru.narod.ru/VicMain/Docs/Docs_MMC.doc
  4. LPH7889-1 54x101 Pixel Matrix LCD, http://payalnik-ru.narod.ru/VicMain/Docs/LPH7889.pdf
  5. OM6206 65x102 pixels matrix LCD driver, http://payalnik-ru.narod.ru/VicMain/Docs/OM6206.pdf

7.  Secure Digital Card, Product Manual, Revision 1,7, http://payalnik-ru.narod.ru/VicMain/Docs/SD_v1.7.pdf

8.  High Density MMC Application Note, http://payalnik-ru.narod.ru/VicMain/Docs/4gb_mmc.pdf

9.  Владимир Кулаков, Программирование дисковых подсистем, издательский дом “Питер”, 2002г.

10.                    VS1011e – MPEG AUDIO CODEC, http://www.vlsi.fi/datasheets/vs1011.pdf

11.                    Литий-ионные (Li-ion) аккумуляторы, http://www.powerinfo.ru/accumulator-liion.php

 

 

дисплеем и АКБв или телефонных аппаратов



Hosted by uCoz