Эксперимент 20. Звуковой генератор

В этом эксперименте мы познакомимся с важнейшим элементом в современной радиоэлектронике — транзистором. Транзистор — это элемент, предназначенный для усиления электрических сигналов. Кроме того мы воспользуемся динамиком и научимся генерировать звук.

С помощью ШИМ генератора, встроенного в микроконтроллер, очень удобно генерировать звук. При управлении яркостью светодиода мы изменяли скважность сигнала, не изменяя частоту. Однако у звука частота — один из важнейших параметров. Частоту мы слышим как тон звука. Сигнал с низкой частотой мы слышим как бас, а с высокой — как писк. У каждой музыкальной ноты есть своя строго установленная частота.

Электрический сигнал, генерируемый ШИМ генератором в микроконтроллере не обладает достаточным током, чтобы раскачать даже небольшой динамик, поэтому мы не сможем просто подключить его к динамику, как к светодиоду. Этот сигнал сначала необходимо усилить, увеличить ток. Для усиления сигнала нам потребуется транзистор.

Схема эксперимента

Рисунок 1. Электрическая принципиальная схема эксперимента

Сигнал от ШИМ генератора подается на базу транзистора VT1. Сигнал подается через резистор R1, чтобы уменьшить ток базы. Транзистору не нужен большой управляющий ток. Когда на базу транзистора попадает сигнал логической единицы — транзистор открывается и сопротивление перехода Коллектор-Эмиттер сильно падает. Ток начинает протекать через динамик SP1. Резистор R2 необходим как ограничитель тока через динамик так как последний обладает маленьким сопротивлением, и без дополнительного резистора большой ток испортит динамик.

Токоограничительный резистор R2 необходим, чтобы динамик не сгорел. Однако, его номинал можно уменьшить, чтобы увеличить громкость звука. Если параллельно резистору 120 Ом подключить еще один такой же, то общее их сопротивление уменьшится в 2 раза, до 60 Ом, а громкость звука увеличится.

Рисунок 2. Монтажная схема эксперимента

Программный код эксперимента

Exp20.py
  1. from machine import Pin, PWM
  2. import time
  3. _init()
  4.  
  5. SpeakerPin = 15
  6.  
  7. Speaker = Pin(SpeakerPin, Pin.OUT)
  8. Sound = PWM(Speaker)
  9.  
  10. Sound.duty(512)
  11.  
  12. while True:
  13. Sound.freq(330)
  14. time.sleep(1)
  15. Sound.freq(440)
  16. time.sleep(1)

Создаем объект PWM как обычно. Устанавливаем коэффициент заполнения ШИМ сигнала 50% (512 составляет 50% от максимального значения 1023). В бесконечном цикле начинаем управлять ШИМ сигналом задавая для него различную частоту — 330 герц и 440 герц, делая паузы на 1 секунду.

После остановки выполнения программы звук останется так как настроенный ШИМ генератор продолжит генерировать заданный сигнал. Чтобы выключить его необходимо перезагрузить плату конструктора или исполнить команду Sound.duty(0)