| В начало | Зарегистрироваться |
 
 
 
 

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

📆25.05.2016   ✒️vladimirm2   🔎23 234   💬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 ⇣ 250

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

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

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

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

Нравится

Статью одобрили 73 читателя.

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

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

 

Схема на Датагоре. Новая статья Предварительный усилитель на аудиопроцессоре 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... Wireless Transceiver Module NRF24L01+ 2.4GHz, 4 шт. на Али Приветствую всех настоящих и будущих...
 

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

 

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

Datagor

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

vladimirm2

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

daihatsudenta

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

vladimirm2

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

daihatsudenta

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

vladimirm2

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

daihatsudenta

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

vladimirm2

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

Datagor

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

daihatsudenta

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

daihatsudenta

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

vladimirm2

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

daihatsudenta

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

daihatsudenta

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

daihatsudenta

Назад Вперед

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

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

Политика обработки персональных данных (Политика конфиденциальности).

 
 
| В начало | Зарегистрироваться |