Это старая версия документа!


Эксперимент 7. Аппаратный ШИМ

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

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

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

Единственным отличием этой схемы, от предыдущей, является то, что светодиод мы подключили к другому выводу микроконтроллера, к выводу 15. Дело в том, что периферийные устройства подключаются только к определенным ножкам из-за аппаратных особенностей реализации микросхемы. И на 16 выводе аппаратный ШИМ не возможен.

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

Exp8.py
  1. from machine import Pin, PWM
  2. import time
  3. _init()
  4.  
  5. LedPin = 15
  6.  
  7. led = Pin(LedPin, Pin.OUT)
  8. pwmLed = PWM(led)
  9. pwmLed.freq(200)
  10.  
  11. while True:
  12. pwmLed.duty(200)
  13. time.sleep(1)
  14. pwmLed.duty(1023)
  15. time.sleep(1)

В первой строке мы указываем интерпретатору Python, что из системной библиотеки machine мы хотим импортировать не только Pin, но и PWM

  1. from machine import Pin, PWM

Далее мы, как обычно, создаем объект Pin, настроенный как выход. Но на этом настройка не заканчивается. Мы создаем объект PWM, передавая в качестве параметра только что созданный Pin

  1. led = Pin(LedPin, Pin.OUT)
  2. pwmLed = PWM(led)

Теперь мы получили объект для управления аппаратным генератором ШИМ, подключенным к 15 выводу микроконтроллера. Теперь нужно настроить и его. Как мы уже знаем, у сигнала с широтно- импульсной модуляцией есть два параметра- частота и коэффициент заполнения или скважность. Выберем частоту достаточно большую, чтобы глаз не замечал мерцания, например, 200 герц

  1. pwmLed.freq(200)

Настройки закончили, теперь будем управлять яркостью светодиода:

  1. while True:
  2. pwmLed.duty(200)
  3. time.sleep(1)
  4. pwmLed.duty(1023)
  5. time.sleep(1)

В бесконечном цикле мы устанавливаем значение ШИМ равное 200, а потом 1023 с задержками по 1 секунде. В результате наш светодиод одну секунду горит тускло, потом одну секунду горит ярко.

Осталось разобраться что это за цифры 200 и 1023, которые мы передали в качестве параметров в функцию duty(). Это и есть коэффициент заполнения, только здесь он он выражен не в процентах, а числом от 0 до 1023, где 0 — это 0%, а 1023 — это 100%.

Когда тебе надоест смотреть на результат работы этой программы, то, как обычно, останови ее через кнопку остановки. Программа завершится, а работа ШИМ генератора— нет, ведь он не привязан к нашей программе, это отдельное устройство, которое мы лишь настроили и запустили, но работает оно само.

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