• Начало
  • Новини
  • Какво е DAC и как се използва за генериране на аналогови сигнали?
Продукти

Какво е DAC и как се използва за генериране на аналогови сигнали?

Какво е DAC и как се използва за генериране на аналогови сигнали?
8 декември 2025

В електрониката често работим с цифрови устройства – микроконтролери, компютри, сензори. Те обработват информацията като поредица от нули и единици. Проблемът е, че голяма част от реалния свят е аналогов – звук, светлина, температура, движение. Точно тук се появява DAC (Digital-to-Analog Converter) – устройство, което превръща цифрови данни в плавен аналогов сигнал.

В тази статия ще обясня по прост и разбираем начин какво е DAC, как работи, защо ни трябва и как можем да го използваме в проекти с Arduino и други микроконтролери.

 

Какво е DAC?

DAC означава Digital-to-Analog Converterцифрово-аналогов преобразувател.
Той приема цифров вход (например 8-битов или 12-битов брой) и го превръща в аналогово напрежение, което може да се движи плавно между 0 V и максималното захранващо напрежение.

 

 

 

 

 

 

Прост пример:

Ако DAC е 8-битов:

  • цифровите стойности са от 0 до 255;

  • стойност 0 = 0 V;

  • стойност 255 = напрежението Vref (най-често 3.3 V или 5 V);

  • стойност 128 ≈ 2.5 V.

Така можем да контролираме:

  • усилватели;

  • говорители;

  • аналогови мотори;

  • LED драйвери;

  • генератори на вълни (PWM → аналог).

 

 

Как работи DAC?

DAC използва вътрешни резисторни мрежи и прецизни делители, за да създаде точно напрежение, което отговаря на цифровата стойност. Най-често срещаните типове са:

✔ R-2R стълба

Най-разпространеният метод – бърз, стабилен и лесен за производство.

✔ PWM + филтър

Широко използван в микроконтролери без истински DAC.
PWM се прекарва през нискочестотен филтър → получава се „псевдо-аналогов“ сигнал.

✔ Σ-Δ DAC (Sigma-Delta)

По-прецизен, използва се в аудио техника.

 

Защо DAC е важен?

DAC се използва когато искаме микроконтролер да взаимодейства по аналогов начин:

  • Генериране на музика или аудио ефекти;

  • Управление на аналогови усилватели;

  • Прецизно регулиране на напрежение;

  • Управление на серво или мотор драйвери;

  • Генератори на синус/триъгълна вълна;

  • Аналогово димиране на LED ленти.

Без DAC много устройства не могат да работят правилно.

 

 

DAC в Arduino

Не всички Arduino платки имат DAC!

Имат DAC:

  • Arduino Due → 12-битов DAC;

  • ESP32 → 8-битов DAC;

  • STM32-базирани платки (много модели).

Нямат DAC:

  • UNO;

  • Nano;

  • Mega.

При тях се използва PWM + RC филтър.

 

 

Ето прост пример за генериране на аналогово напрежение през DAC пин:

 

 

// пример за използване на DAC на ESP32
#include <driver/dac.h>                 // включваме библиотеката за DAC
 
void setup() {
  dac_output_enable(DAC_CHANNEL_1);    // включваме DAC на канал 1 (GPIO25)
}
 
void loop() {
  for (int i = 0; i < 256; i++) {      // увеличаваме цифровата стойност
    dac_output_voltage(DAC_CHANNEL_1, i); // изпращаме стойността към DAC
    delay(5);                          // малко изчакване за плавна промяна
  }
 
  for (int i = 255; i >= 0; i--) {     // обратно намаляване
    dac_output_voltage(DAC_CHANNEL_1, i);
    delay(5);
  }
}

Този код ще генерира плавна „рампа“ от 0 V до 3.3 V и обратно, която може да се види на осцилоскоп.

 

Пример: Аналогов сигнал с Arduino UNO (PWM + филтър)

 

// генерираме аналогов сигнал чрез PWM на UNO
int pin = 9;                             // PWM пин
 
void setup() {
  pinMode(pin, OUTPUT);                  // задаваме пина като изход
}
 
void loop() {
  for (int i = 0; i < 256; i++) {        // плавно увеличаване на PWM
    analogWrite(pin, i);                 // стойност от 0 до 255
    delay(5);                            // малка пауза
  }
 
  for (int i = 255; i >= 0; i--) {       // плавно намаляване
    analogWrite(pin, i);
    delay(5);
  }
}

 

За да стане сигналът истински аналогов, на изхода слагате RC филтър:

  • R = 1 kΩ

  • C = 10 µF

 

Заключение

DAC е ключов компонент в електрониката, който позволява на микроконтролерите да генерират плавни аналогови сигнали. Той е незаменим в аудио проекти, управление на напрежения, аналогови драйвери и всякакви системи, които изискват повече от просто цифрово включено/изключено.