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

 
 
 

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

Разместил vladimirm2 25 мая 2016. Просмотров: 4034

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

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

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

Шилд Ардуино

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

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

Энкодер

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

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

DS1307

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

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

ИК-приёмник

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

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

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

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

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

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

TDA7318

Три контакта:
- Питание минус.
- Шина I2C (два контакта) АП подключается соответственно к шилду Ардуино.
Предварительный усилитель на аудиопроцессоре TDA7318 (TDA7313) и Arduino. Часть 2

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

Экран

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

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

DS18B20

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

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

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

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

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

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

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

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

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


Программа управления устройством написана в среде 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».

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

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


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


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

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

Файлы

Скетч, исходники:
Файловый сервис доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.


Использованные библиотеки:
Файловый сервис доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.


Программа LCD Image Converter под Windows:
Файловый сервис доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.

Полезная утилитка для подготовки картинок и шрифтов. К сожалению, проект заброшен, основной сайт автора закрыт, осталось только эта версия № 2 на Гитхабе: LCD Image Converter by Vladimir Riuson

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

Об авторе

Владимир (vladimirm2)
Хайфа
Живу в Израиле, родом из Одессы, бывший военный психолог, сегодня инженер сетевых компьютерных технологий или просто сисадмин.
Лет десять, как увлекся ламповым звуком, в то время построил свой первый усилитель. Пол года выслушивал и настраивал, доволен. С тех пор были построены разные устройства, некоторые из них благодаря материалам и помощи людей этого портала.Нашел на вашем ресурсе много полезной для себя информации.
С уважением ко всем! )
 

Понравилось? Палец вверх!

  • всего лайков: 45

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


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


Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic

Приветствую всех настоящих и будущих поклонников отладочной платы Arduino! Сегодня,...

Вертушка «Эстония 010». Новая система управления на Arduino UNO

Здравствуйте, уважаемые Датагорцы! Делюсь с вами собственным опытом по освоению платы Arduino UNO...

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

Благодарим Тимофея Носова за идею проекта на TDA7318. При построении усилителя звуковой...

Поделки начинающего цапостроителя, часть 18/1. Рулим ЦАП АК4399 с помощью Arduino

Я долго колебался – писать эту статью или нет. Это решение нужно было принять — основываясь на...

Вторая жизнь лампового радиоприемника Philips 592LN (Голландия, 1947). Часть 5

В этой части статьи речь пойдет:  — о предварительном усилителе и его питании,...

Вторая жизнь лампового радиоприемника Philips 592LN (Голландия, 1947). Часть 4.

Привет, датагорцы! В этой части моего повествования речь пойдёт о модуле BlueTooth...

Термостат для отопления дачи инфракрасными обогревателями Иколайн. Дежурный режим,

Как говорит мой коллега, что бы Гаврилов ни делал — все равно термометр получается… Новая статья...

Arduino shield своими руками: акселерометр на LIS302DL

Собрал недавно arduino на atmega8, поморгал диодом, захотелось большего Начал изучать различные...

Сделай сам преобразователь сигналов для механического энкодера, v.2

Хотелось бы дополнить и продолжить мою статью про энкодер «Преобразователь сигналов...

Преобразователь сигналов для механического энкодера

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

UTC2030

Моно-усилитель. Очень похожа на TDA2030. Pрасс.= 20 Ватт Uпит=плюс-минус 18 Вольт THD= 0,08%...

Регулятор громкости и тембра с ДУ на TDA8425 + ATMEL AT90S4433

Когда-то, в 2005-2006 году, мной был сделан регулятор громкости и тембра на TDA8425 с ДУ. Статья...
<
  • Гражданин
25 мая 2016 01:59

Александр / alx25v

  • Регистрация: 10.10.2009
  • Публикаций: 4
  • Комментариев: 73
 
  • 0
Привет, мне кажется или чего то не хватает в статье?

<
  • Главный редактор
25 мая 2016 09:54

Игорь Петрович Котов / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 262
  • Комментариев: 1607
 
  • 0
Привет, мне кажется или кто-то решил поиграть в загадочность? smile

<
  • Гражданин
25 мая 2016 11:48

Владимир / vladimirm2

  • Регистрация: 5.01.2010
  • Публикаций: 14
  • Комментариев: 131
 
  • +1
Да, Игорь, не хватает самого скейча, прошивки. )

<
  • Главный редактор
25 мая 2016 12:04

Игорь Петрович Котов / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 262
  • Комментариев: 1607
 
  • 0
А мы сейчас каааак прицепим новый архив! О!

<
  • Подписчик
25 мая 2016 12:10

Игорь / StalKer-NightMan

  • Регистрация: 15.03.2012
  • Публикаций: 1
  • Комментариев: 84
 
  • 0
Спасибо авторам. Хорошо написано.

<
  • Гражданин
25 мая 2016 12:12

Владимир / vladimirm2

  • Регистрация: 5.01.2010
  • Публикаций: 14
  • Комментариев: 131
 
  • 0
Игорь, большое спасибо! Трудились долго! ))

<
  • Бонус
25 мая 2016 14:29

Ербол / erbol

  • Регистрация: 11.12.2014
  • Публикаций: 7
  • Комментариев: 58
 
  • 0
Игорь, спасибо за тёплый отзыв! handshake

<
  • Гражданин
28 мая 2016 17:05

Виталий / para4zit

  • Регистрация: 17.04.2009
  • Публикаций: 0
  • Комментариев: 15
 
  • 0
Большое просто огромное МЕРСИ!!!! Простое и удобное управление усилком, причём на доступной базе. Большой респект авторам. handshake
Прошу вас продолжать в том же духе! Даёшь ещё решения на этой-же базе!!!

<
  • Гражданин
28 мая 2016 17:58

Владимир / vladimirm2

  • Регистрация: 5.01.2010
  • Публикаций: 14
  • Комментариев: 131
 
  • 0
Спасибо большое, Виталий! )

<
  • Бонус
28 мая 2016 18:47

Ербол / erbol

  • Регистрация: 11.12.2014
  • Публикаций: 7
  • Комментариев: 58
 
  • 0
Спасибо, Виталий! handshake

<
  • Гражданин
2 июня 2016 05:27

Сергей / Serg_hax

  • Регистрация: 23.02.2010
  • Публикаций: 0
  • Комментариев: 54
 
  • 0
Добрый день Владимир и Ербол, спасибо за вторую часть статьи. По поводу что то не хватает в статье, я сразу понял, отсутствует ссылка на видео по считыванию кода с пульта. Дело в том, что мне уже удалось ознакомиться с данной методикой, за что огромное спасибо Ерболу, он уже помог мне, правда в другом похожем проекте, но обо всем в свое время. Еще раз спасибо, удачи!

<
  • Главный редактор
2 июня 2016 09:21

Игорь Петрович Котов / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 262
  • Комментариев: 1607
 
  • 0
Цитата: Serg_hax
По поводу что то не хватает в статье, я сразу понял, отсутствует ссылка на видео по считыванию кода с пульта.

И правда, сылки на видео нет. Потому что есть само видео в статье.
Или что вы имели ввиду?

<
  • Гражданин
2 июня 2016 21:29

Сергей / Serg_hax

  • Регистрация: 23.02.2010
  • Публикаций: 0
  • Комментариев: 54
 
  • 0
Добрый день Игорь, да я как раз про само видео и имел ввиду, просто когда читал статью обратил внимание на пропуск в статье после:
Давайте посмотрим вот это видео и станет понятно, что и как делать. Ни окна ни значков пуск не было. Сегодня зашел окно с видеороликом на месте и работает. Возможно в прошлый раз был сбой браузера.

<
  • Главный редактор
2 июня 2016 21:45

Игорь Петрович Котов / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 262
  • Комментариев: 1607
 
  • 0
Привет, Сергей, всё понятно теперь. handshake

<
  • Гражданин
2 июня 2016 21:46

Сергей / Serg_hax

  • Регистрация: 23.02.2010
  • Публикаций: 0
  • Комментариев: 54
 
  • 0
Перепроверил браузер, кривит иногда у меня мозилла. сорри!

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.