Содержание

Усилитель класса D (Troyka-модуль)

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

Видеообзор

Усилитель на пальцах

Классификация усилителей

По способу работы с входным сигналом и принципу построения усилительных каскадов УМЗЧ делятся на классы:

Класс A

Класс B

Класс AB

Класс D

Примеры работы

Простой усилитель

Усилителю для работы даже не понадобится микроконтроллер. Всё что надо — источник звука, пару пассивных колонок и источник напряжения от 3 до 5 вольт.

Схема сборки

Включайте любимые хиты, радуйте соседей и вперёд.

Будьте внимательны, «доброжелатели» могут послать ответочку.

Усилитель для DFPlayer

Заменим источник звука на DFPlayer. Плеер поддерживает ручное и программное управление. Ручное осуществляется с помощью кнопок и резисторов, а программное — управляющей электроникой по интерфейсу UART. В качестве примера выберем резисторы и кнопки.

Что вам понадобится?

Аудиофайл

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

Схема сборки

Для воспроизведения музыкальных файлов по очереди, необходимо установить между пином ADKEY_1 и GND резистор на 51 кОм. В нашем случае возьмём два резистора по 100 кОм в параллели — 50 кОм и скоммутируем их через тактовую кнопку. В итоге при клике кнопки плеер включится, а при повторном — выключиться.

Моно режим с Arduino M0

Платформы Arduino с ядром Cortex-M0 позволяют воспроизводить звуковые дорожки с карты памяти через цифро-аналоговый преобразователь на пине A0.

Что вам понадобится?

Аудиофайл

Подготовьте файл для воспроизведения:

  1. Скачайте и установите программу для конвертации аудиоформатов «Audacity»
  2. Сконвертируйте требуемый музыкальный файл в формат WAV с характеристиками:
    1. Режим: моно
    2. Частоте дискретизации: 88200 Гц
    3. Количестве бит в сэмпле: 8 бит
  3. Скопируйте полученный файл на SD-карту.

Схема сборки

Платформы на ядре Cortex-M0 имеют только один ЦАП — аудио сигнал. В итоге на выходе только один усиленный канал. Для работы двух акустических систем — переведите усилитель в моно режим путём установки джампера объединения входных каналов.

Пример кода

Для работы примера — установите библиотеку AudioZero из менеджера библиотек.

audioPlayerM0.ino
// библиотека для работы шины SPI
#include <SPI.h>
// библиотека для работы c картой microSD
#include <SD.h>
// библиотека для воспроизведения музыки с помощью Arduino M0
#include <AudioZero.h>
 
// пин выбора устройства на шине SPI
#define SD_CS_PIN  8
 
void setup()
{
  // открываем монитор Serial-порта
  Serial.begin(9600);
  // выводим сообщение в Serial-порт о поиске карты памяти
  Serial.print("Initializing SD card...");
  // если microSD-карта не была обнаружена
  while (!SD.begin(SD_CS_PIN)) {
    // выводим сообщение об ошибке
    Serial.println("Card failed, or not present");
    // ждём одну секунду и повторяем попытку
    delay(1000);
  }
  // выводим сообщение об успешной поиске карты памяти
  Serial.println("Card initialized...");
  // выставляем частоту воспроизведения
  AudioZero.begin(2 * 44100);
}
 
void loop() {
  // открываем wave-файл с карточки microSD
  File myFile = SD.open("test-m0.wav");
  if (!myFile) {
    // если файл не открылся, пишем об ошибке и останавливаем код
    Serial.println("Error opening music file...");
    while (true);
  }
  // выводим сообщение о начале воспроизведения
  Serial.print("Playing");
  // воспроизводим файл
  AudioZero.play(myFile);
  // выводим сообщение об окончании проигрывания файла
  Serial.println("End of file. Thank you for listening!");
  // останавливаем код
  while (true);
}

Стерео режим с Arduino Due

Платформа Arduino Due с ядром Cortex-M3 позволяет воспроизводить звуковые дорожки с карты памяти через два цифро-аналоговых преобразователя в стерео режиме на пинах A12 и A13.

Что вам понадобится?

Аудиофайл

Подготовьте файл для воспроизведения:

  1. Скачайте и установите программу для конвертации аудиоформатов «Audacity»
  2. Сконвертируйте требуемый музыкальный файл в формат WAV с характеристиками:
    1. Режим: стерео
    2. Частота дискретизации: 22050 Гц
    3. Количестве бит в сэмпле: 16 бит
  3. Скопируйте полученный файл на SD-карту.

Схема сборки

Пример кода

Для работы примера — установите библиотеку Audio из менеджера библиотек.

audioPlayerDue.ino
// библиотека для работы шины SPI
#include <SPI.h>
// библиотека для работы c картой microSD
#include <SD.h>
// библиотека для воспроизведения музыки с помощью Arduino Due
#include <Audio.h>
 
// пин выбора устройства на шине SPI
#define SD_CS_PIN     8
 
// громкость музыки
#define VOLUME        256
// количество сэмплов, считываемых за один блок
#define COUNT_SAMPLES 1024
 
// создаём буффер сэмплов считываемых за один блок
short buffer[COUNT_SAMPLES];
 
void setup() {
  // открываем монитор Serial-порта
  Serial.begin(9600);
  // выводим сообщение в Serial-порт о поиске карты памяти
  Serial.println("Initializing SD card...");
  // если microSD-карта не была обнаружена
  while (!SD.begin(SD_CS_PIN)) {
    // выводим сообщение об ошибке
    Serial.println("Card failed, or not present");
    // ждём одну секунду и повторяем попытку
    delay(1000);
  }
  // выводим сообщение об успешной поиске карты памяти
  Serial.println("Card initialized...");
  // выставляем частоту воспроизведения
  Audio.begin(44100, 100);
}
 
void loop() {
  // открываем wave-файл с карточки microSD
  File myFile = SD.open("test-due.wav");
  if (!myFile) {
    // если файл не открылся, пишем об ошибке и останавливаем код
    Serial.println("Error opening music file...");
    while (true);
  }
  // выводим сообщение о начале воспроизведения
  Serial.print("Playing");
  // пока файл не закончился
  while (myFile.available()) {
    // считываем сэмплы из файла в буфер
    myFile.read(buffer, sizeof(buffer));
    // подготавливаем сэмплы
    Audio.prepare(buffer, COUNT_SAMPLES, VOLUME);
    // «скармливаем» сэмплы
    Audio.write(buffer, COUNT_SAMPLES);
  }
  // закрываем файл
  myFile.close();
  // выводим сообщение об окончании проигрывания файла
  Serial.println("End of file. Thank you for listening!");
  // останавливаем код
  while (true);
}

Пример к Iskra JS

Что вам понадобится?

Аудиофайл

Подготовьте файл для воспроизведения:

  1. Скачайте и установите программу для конвертации аудиоформатов «Audacity»
  2. Сконвертируйте требуемый музыкальный файл в формат WAV с характеристиками:
    1. Режим: стерео
    2. Частота дискретизации: 22050 Гц
    3. Количестве бит в сэмпле: 16 бит
  3. Скопируйте полученный файл на SD-карту.

Схема сборки

Пример кода

audioPlayerJS.js
var sdCard = require('@amperka/card-reader').connect(P8);
// создаём объект для работы с файлом «test-js.raw»
var file = E.openFile("test-js.raw","r");
// создаём объект для воспроизведения с количесвом семплов
// и включаем дублирующий буффер
var wave = new Waveform(2048, {
	doubleBuffer: true
});
// загружаем первые данные в файл
wave.buffer.set(f.read(wave.buffer.length));
wave.buffer2.set(f.read(wave.buffer.length));
var fileBuf = f.read(wave.buffer.length);
// когда буффер закончился, играем следущий
wave.on("buffer", function(buf) {
  buf.set(fileBuf);
  fileBuf = f.read(buf.length);
  if (fileBuf === undefined) { 
  	wave.stop();
  }
});
 
// начинаем воспроизводить семпл
analogWrite(A4, 0.5);
wave.startOutput(A4, 11025, {repeat:true});

Элементы платы

Микросхема PAM8403

Troyka-контакты

Контакты входного сигнала

Клеммник выходного сигнала

Выбор режима усилителя

Принципиальная и монтажная схемы

Характеристики

Ресурсы