В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

Предварительный усилитель на аудиопроцессоре TDA7318 (TDA7313) и Arduino. Часть 2

📆25 мая 2016   ✒️vladimirm2   🔎22.311   💬31  

Проект в сборе. Сборка займет у вас примерно 15 минут.

В первой части статьи мы подробно остановились на описании нашего проекта; на том, что необходимо приобрести или сделать самому, какие элементы и модули подобрать.
Во второй части речь идёт о порядке подключения всех модулей к Ардуино (Arduino).

Соавторы проекта:
Ербол Сармуханов и Владимир Мойсеенко.

Шилд Ардуино


Обратите внимание на то, как устроен шилд Ардуино. Черные контакты это "минус", красные - "плюс" питания 5 Вольт. Желтым отмечены цифровые, а зелёным - аналоговые входы, оранжевым шина I2C.

Энкодер


Всего пять контактов:
- Питание плюс.
- Питание минус.
- Контакт кнопки энкодера подключается к DigitalPin2 Arduino
- Контакт A энкодера подключается к DigitalPin3 Arduino
- Контакт В энкодера подключается к DigitalPin4 Arduino

DS1307


Обратите внимание, что с пина 7 DS1307 нужно припаять перемычку на выходной разъём модуля.
Пять контактов:
- Питание плюс.
- Питание минус.
- Пин 7 DS1307(SQW/OUT)подключается к DigitalPin5 Arduino
- Два контакта шины I2C: SCL подключается к AnalogPin7 Arduino, SDA подключается к AnalogPin6 Arduino.

ИК-приёмник


Три контакта:
- Питание плюс.
- Питание минус.
- Сигнал с ИК-приёмника подается на DigitalPin6 Arduino.

Включение акустики или анодного питания


Питание на реле для включения акустики или анодного напряжения подается с DigitalPin7 Arduino на релейный модуль . См. рисунок.
Если нужно использовать два реле (левый, правый канал), то DigitalPin7 Arduino подается параллельно на IN1 IN2 релейного модуля.

Питание на реле для включения Блютуз подается с DigitalPin1 Arduino на IN4 релейного модуля, при выборе пультом или энкодером 3-го входа аудиопроцесора .

TDA7318

Три контакта:
- Питание минус.
- Шина I2C (два контакта) АП подключается соответственно к шилду Ардуино.

Включение реле для подключения питания АП на TDA7318 (9 Вольт) осуществляется с DigitalPin8 Arduino, соответственно на IN3 релейного модуля.

Экран


Восемь контактов:
- Питание минус.
- Питание плюс.
- Контакт "Reset" подключен к "Reset" на шилде Ардуино.
- Контакт "Led" - подсветка TFT регулируется с DigitalPin9 Arduino.
- Пин CS TFT- подключается к DigitalPin10 Arduino.
- Пин DC TFT- подключается к AnalogPin0 Arduino.
- Пин CSK - подключается к DigitalPin13 Arduino.
- Пин SDA -подключается к DigitalPin11 Arduino.

DS18B20


Три контакта:
- Питание минус.
- Питание плюс.
- Сигнал от DS18B20 подается на AnalogPin2 Arduino.

Силовой мосфет-модуль

Три контакта:
- Питание минус.
- Питание плюс.
- Сигнальный подключается к AnalogPin3 Arduino.
Или можно использовать оставшееся реле, тогда подключаем AnalogPin3 Arduino к IN4 релейного модуля.

Компоновка устройства


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

Прошивка (скетч) для Ардуино

Теперь остановимся подробно на структуре скетча (прошивки) для Ардуино.
Но сначала взгляните на фотографии экрана в некоторых режимах, это упростит понимание описания скетча.










Программа управления устройством написана в среде Arduino IDE 1.6.4 с подключением следующих библиотек:
• avr/pgmspace.h
• EEPROM.h
• SPI.h
• Adafruit_GFX.h
• TFT_ILI9163C.h
• Wire.h
• EEPROM.h
• OneWire.h
• IRremote.h

В бесконечном цикле осуществляется опрос состояния четырех флагов и, при нахождении какого-либо из них в состоянии SET, осуществляются, в зависимости от значения глобальных переменных, следующие действия:
• Флаг изменения режима. Обуславливает изменение текущего режима. Источник установки флага – нажатие соответствующих кнопок пульта или энкодера.
• Флаг изменения параметра. Установка этого флага приводит к изменению текущих параметров (например, громкости, тембра, входного канала, времени или даты). Устанавливается при нажатии кнопки «параметр +/-» пульта или повороте ручки энкодера.
• Флаг получения ежеминутного сигнала от часов. Данный флаг определяет следующие действия программы – обновление на дисплее значений даты и времени, опрос термодатчика и, при необходимости, включение/выключение кулера. Источник установки флага – прерывание от микросхемы часов ds1307.
• Флаг возврата в основной режим. Так же, как и в предыдущем случае, устанавливается прерыванием от часов ds1307. При этом происходит переход в основной режим MAIN.

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

Такая организация очень эффективна.
1. Позволяет повысить гибкость программы. В случае изменения типа имеющихся элементов устройства (дисплея, часов и т.д.) достаточно внести изменения в соответствующий модуль программы. Для подключения дополнительного элемента (к примеру, датчика влажности) понадобится добавить соответствующий программный модуль, оформленный отдельным файлом и прописать связи с имеющимися.

2. Позволяет облегчить написание и отладку программы. Каждый отдельный модуль программы является, по сути, готовым скетчем для управления тем или иным элементом устройства. Программа и писалась отдельными автономно работающими скетчами, которые лишь после удовлетворительной работы соответствующего элемента встраивались в общую структуру.

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

Скетч (прошивку) АП вы найдете в конце статьи. Архив необходимо распаковать в папку с названием " audio_processor", без кавычек и запустить файл "audio_processor.ino".

Рассмотрим, для чего предназначен каждый программный модуль.
[audio_processor] Стартовый модуль, в котором осуществляется инициализации пинов микроконтроллера и подключенной периферии (LCD, термодатчика, часов), чтение из EEPROM начальных параметров усилителя TDA7318, и запускается циклический опрос, описанный выше.
[ap_display] В этом модуле содержатся функции для работы LCD – инициализация дисплея, отображение текущих данных (время, дата, режим, параметр).
[ap_ds1307] Запуск тактирования ds1307, разрешение сигнала SQW, необходимого для вызова прерывания PCINT21 микроконтроллера Ардуино, определение текущих значений времени/даты и передача их в глобальные переменные.
[ap_ds18b20] Определение адреса подключенного термодатчика, измерение температуры выходных транзисторов усилителя и, при необходимости, включение/выключение кулера.
[ap_interrupts] Это модуль обработчиков прерываний. Для обеспечения своевременной реакции микроконтроллера на сигналы с ножек энкодера и их идентификации использованы прерывания INT0 и INT1. Для реализации функций, связанных с временными интервалами (отображение времени/даты, включая мигание точек-секунд), измерение температуры, возврат в режим MAIN – задействовано прерывание PCINT21. Результатом работы всех прерываний является изменение состояния и значений соответствующих флагов и переменных.
[ap_ir] Определение кода нажатой кнопки пульта с последующим изменением состояния и значений соответствующих флагов и глобальных переменных.
[ap_tda] В этом модуле прописаны функции для работы TDA7318 – инициализация усилителя, изменение текущих параметров (громкости, тембра, входного канала), их запись/чтение в EEPROM.
[ap_main] В полном соответствии со своим названием это основной модуль. Образно выражаясь, здесь находится центр обработки информации и принятия решений, в котором анализируется состояние флагов и значение глобальных переменных, после чего устройство переводится в тот или иной режим. Всего предусмотрено 14 режимов устройства.

Звуковая часть (TDA7318, акустика) включены во всех режимах, кроме режима STANDBY. Во всех режимах текущие дата/время и название режима отражаются в соответствующих полях дисплея.

Вот некоторые особенности каждого из режимов.
1. STANDBY. Активируется при старте программы, а также при выключении звуковой части нажатием кнопки «Power» пульта или длительным нажатием кнопки энкодера. Во втором случае текущие значения усилителя (громкость, тембр, входной канал) сохраняются в EEPROM.
2. LOADING. В этот режим устройство переходит из режима STANDBY при включении звуковой части. При этом включается акустика, в TDA7318 загружаются считанные из EEPROM текущие параметры (громкость, тембр, номер входного канала и т.д.). Из этого режима устройство автоматически переходит в режим MAIN.
3. MAIN. Это основной режим, в котором работающий усилитель проводит большую часть времени. Переход в него происходит автоматически из всех остальных (кроме STANDBY и MUTE) режимов по прерыванию от часов в случае, если более 10 секунд не было манипуляций с пультом или энкодером. Надпись в поле режима дисплея – название текущего входного канала (AUX1, AUX2 или BT).
4. VOLUME. Режим регулировки громкости. Выбирается нажатием кнопки «режим +/-» пульта или энкодера. Уровень громкости меняется нажатием кнопки пульта «параметр +/-» или вращением ручки энкодера. Эти же действия вызывают автоматический переход из режима MAIN в режим VOLUME. Надпись в поле параметров дисплея – текущий уровень громкости.
5. BASS, TREBLE. В этих режимах регулируется тембр звука (низкие и высокие частоты, соответственно). Активируются, так же, как и режим VOLUME. Кроме того, на пульте предусмотрены кнопки быстрого вызова – красная (BASS) и зеленая (TREBLE). Надпись в поле параметров дисплея - текущий уровень низких (высоких) частот.
6. INPUTS. Выбор одного из трех входных каналов. Помимо аналогичных с режимом VOLUME способов активации предусмотрены кнопки пульта быстрого вызова – 1 (AUX1), 2 (AUX2), 3 (ВТ).
7. HOURS, MINUTES, YEAR, MONTH, DAY. Как понятно из названия режимов, они позволяют корректировать текущее время/дату. Сделать это можно как пультом, так и энкодером. Чтобы было понятно, какой именно параметр времени/даты меняется в данный момент, он выделяется рамкой. Выбор значения параметра зациклен, т.е. при достижении максимального значения (например, 12-й месяц года) осуществляется переход к минимальному значению (в нашем случае – на 1-й месяц года).
8. BRIGHTNESS. Этот режим, так же, как и следующий (MUTE) доступен только через пульт. Обеспечивает регулировку яркости дисплея. Данный режим доступен как во включенном, так и в выключенном состоянии звуковой части устройства. Кроме того, предусмотрена кнопка пульта (желтая) быстрого вызова режима регулировки яркости. Надпись в поле режима дисплея – «High», «Mid» или «Low», в зависимости от выбранного уровня яркости.
9. MUTE. Активируется нажатием одноименной кнопки пульта. Позволяет, при необходимости, быстро снижать уровень звука с текущего до минимального. Повторное нажатие указанной кнопки плавно возвращает громкость к текущему уровню. Надпись в поле режима дисплея – «Mute».
10. EQUALIZER. Этот режим, так же, как и MUTE доступен только через пульт. Обеспечивает переключение между предустановленными настройками эквалайзера. Кроме того, предусмотрена кнопка пульта (синяя) быстрого вызова. Надпись в поле режима дисплея – «Pop», «Jazz», «Cinema», «Digit», «Class», «Rock».

Привязка ИК-пульта

С прошивкой разобрались, все собрали воедино, перепроверили соединения. Теперь нужно залить скетч в Ардуино и запустить все в работу.
Но у каждого из вас свой пульт. Предварительно нужно считать коды кнопок. Давайте посмотрим вот это видео и станет понятно, что и как делать.


Нам нужны коды кнопок, которые обведены на рисунке оранжевым цветом.


Затем открываем вкладку " constants.h" нашего скетча и смотрим на раздел /*Константы для пульта*/. Понятно, что вы должны в каждой строчке заменить коды тестового пульта на полученные коды вашего.
Например: 0x10EF00FF //кнопка вкл/выкл, заменить код "0x10EF00FF" на код кнопки "Power" своего пульта.
Убедительно рекомендуем перед любыми изменениями скетча, сохранить оригинальный вариант!

Ещё хотим обратить ваше внимание на раздел /*Регулируемые константы*/. В каждой строке раздела есть подробный комментарий с описанием каждой константы. Вы сами можете настроить устройство "под себя". Время указывается в миллисекундах, температура в градусах.

Файлы

Скетч, исходники:
🎁audio_processor.7z  10.25 Kb ⇣ 211

Использованные библиотеки:
🎁biblioteki.7z  3.31 Mb ⇣ 167

Программа LCD Image Converter под Windows:
🎁lcd-image-converter.7z  13.89 Mb ⇣ 127
Полезная утилитка для подготовки картинок и шрифтов. К сожалению, проект заброшен, основной сайт автора закрыт, осталось только эта версия № 2 на Гитхабе: LCD Image Converter by Vladimir Riuson

Спасибо за внимание!
Вот пожалуй и всё. Будем рады ответить на ваши вопросы!
С уважением, Ербол и Владимир.

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.




 

Читательское голосование

Нравится

Статью одобрили 68 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

Поделись с друзьями!

 

 

Связанные материалы

 

Схема на Датагоре. Новая статья Предварительный усилитель на аудиопроцессоре TDA7318 (TDA7313) и Arduino. Часть 1... Благодарим Тимофея Носова за идею проекта на TDA7318. При построении усилителя звуковой частоты,...
Схема на Датагоре. Новая статья UTC2030... Моно-усилитель. Очень похожа на TDA2030. Pрасс.= 20 Ватт Uпит=плюс-минус 18 Вольт THD= 0,08%...
Схема на Датагоре. Новая статья Вторая жизнь лампового радиоприемника Philips 592LN (Голландия, 1947). Часть 5... В этой части статьи речь пойдет: — о предварительном усилителе и его питании, — о питании модуля...
Схема на Датагоре. Новая статья Использование МК ATMega163, ATMega163L, ATMega16 в Arduino IDE... Популярная среда разработки Arduino IDE привлекает большим количеством готовых библиотек и...
Схема на Датагоре. Новая статья Преобразователь сигналов для механического энкодера, v.2... Хотелось бы дополнить и продолжить мою статью про энкодер "Преобразователь сигналов для...
Схема на Датагоре. Новая статья Преобразователь сигналов для механического энкодера... При использовании механического энкодера в своих разработках возникают некоторые проблемы, так как...
Схема на Датагоре. Новая статья Вторая жизнь лампового радиоприемника Philips 592LN (Голландия, 1947). Часть 4. Модуль BlueTooth OVC3860... Привет, датагорцы! В этой части моего повествования речь пойдёт о модуле BlueTooth OVC3860 (далее...
Схема на Датагоре. Новая статья Вертушка «Эстония 010». Новая система управления на Arduino UNO... Arduino UNO R3 MEGA328P на Алиэкспрессе Здравствуйте, уважаемые Датагорцы! Делюсь с вами...
Схема на Датагоре. Новая статья Визуализация для микроконтроллера. Часть 4. Android... Вообще то я планировал рассказать сегодня про дисплей на базе ILI9481. Однако, он настолько похож...
Схема на Датагоре. Новая статья Регулятор громкости и тембра с ДУ на TDA8425 + ATMEL AT90S4433... Когда-то, в 2005-2006 году, мной был сделан регулятор громкости и тембра на TDA8425 с ДУ. Статья...
Схема на Датагоре. Новая статья Arduino shield: акселерометр на LIS302DL... Собрал недавно arduino на atmega8, поморгал диодом, захотелось большего. Начал изучать различные...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 3... В отличие от предыдущих двух, эта часть посвящена самым что ни на есть начинающим, а посему...
 

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

 

Назад Вперед
<
Читатель Датагора

alx25v

<
Читатель Датагора

Datagor

<
Читатель Датагора

vladimirm2

<
Читатель Датагора

Datagor

<
Читатель Датагора

StalKer-NightMan

<
Читатель Датагора

vladimirm2

<
Читатель Датагора

erbol

<
Читатель Датагора

para4zit

<
Читатель Датагора

vladimirm2

<
Читатель Датагора

erbol

<
Читатель Датагора

Serg_hax

<
Читатель Датагора

Datagor

<
Читатель Датагора

Serg_hax

<
Читатель Датагора

Datagor

<
Читатель Датагора

Serg_hax

<
Читатель Датагора

daihatsudenta

Назад Вперед

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой