Научите како да контролишете осветљеност ЛЕД диоде повезане са Распберри Пи помоћу ПВМ-а.

ПВМ је нешто што сви користимо сваки дан, чак и ако то не знамо. То је техника која је једноставна и невероватно корисна у низу апликација. Још најбоље, то је нешто што ваш Распберри Пи може да уради без да се зноји. Како? Хајде да погледамо.

Шта је ПВМ?

Како терминологија каже, "Пулсе-Видтх Модулатион" звучи прилично отмјено. Али све о чему заправо говоримо је искључивање и поновно укључивање електричног сигнала - изузетно брзо. Зашто бисмо могли ово да урадимо? Једноставно зато што је то веома лак начин симулације променљивог аналогног сигнала, без прибегавања Распберри Пи шешири, додаци, или додатно коло. За одређене примене, као што је грејање пећи, покретање мотора или затамњивање ЛЕД-а, ПВМ сигнал се буквално не разликује од „правог“ аналогног напона.

Дути Цицлес

Дакле, имамо серију импулса који се уносе у оптерећење (ствар коју возимо). Ово само по себи није толико корисно - док не почнемо да мењамо (или модулирамо) ширину тих импулса. Фаза „укључено“ датог периода укључивања-искључења може заузети било где од 0–100% укупног циклуса. Овај проценат називамо

радни циклус.

На пример, претпоставимо да имамо 3В ПВМ сигнал са радним циклусом од 50%. Просечна количина енергије која пролази кроз ЛЕД би била еквивалентна увек укљученом сигналу од 1,5 В. Покрените радни циклус и ЛЕД постаје светлија; притисните га и ЛЕД се затамни. Можемо да генеришемо звук користећи исти метод—због чега би аудио излаз на вашем Распберри Пи-у могао престати да функционише ако користите ПВМ за друге ствари.

ПВМ на Распберри Пи

Можете користити софтверски ПВМ на сваком ГПИО пину Распберри Пи-а. Али хардверски ПВМ је доступан само на ГПИО12, ГПИО13, ГПИО18, и ГПИО19.

Која је разлика? Па, ако ћете користити софтвер за генерисање сигнала, онда ћете трошити ЦПУ циклусе. Међутим, ваш ЦПУ можда има боље ствари него да каже ЛЕД диоди да се искључи и укључи неколико стотина пута у секунди. У ствари, може постати ометена и заглављена другим задацима, што може озбиљно да поквари ваше ПВМ тајминге.

Сходно томе, често је боља идеја делегирати задатак на специјализована кола. У случају Распберри Пи, ово коло живи унутра систем на чипу у којој се налази ЦПУ. Хардверски ПВМ је често далеко прецизнији и практичнији, и стога је преферирана опција у већини случајева. Ако желите идеју о томе шта се дешава испод хаубе у Распберри Пи 4 Броадцом БЦМ2711 чипу, онда можете погледати документацију БЦМ2711. Поглавље 8 покрива ПВМ ствари!

Затамњење ЛЕД-а

Да би наша ЛЕД диода радила са нашим Распберри Пи-јем, мораћемо да урадимо нешто за израду плоча. То значи две компоненте: саму ЛЕД диоду и отпорник за ограничавање струје, који ћемо серијски повезати са њим. Без отпорника, ваш ЛЕД је у опасности да умре у диму непријатног мириса ако кроз њега прође превише струје.

Одређивање вредности отпорника

Није важно на који крај ЛЕД диоде спојите отпорник. Оно што је важно је вредност отпорника. Распберри Пи 4 може да обезбеди око 16 милиампера по пину. Тако да можемо користите Омов закон да би се одредила вредност потребног отпорника.

Наведени закон каже да отпор треба да буде једнак напону преко струје. Знамо напон који излази из Пи-овог ГПИО пина (3,3В), и знамо колика би струја требала бити (16 милиампера, или 0,016 ампера). Ако прво поделимо са другим, добићемо 206,25. Сада, пошто ћете се мучити да пронађете отпорнике ове вредности, идемо на 220 ома.

Повежите аноду ЛЕД (дуга нога) на ГПИО 18 (што је физички пин 12 на Распберри Пи). Повежите катоду (кратку ногу) на било коју пину за уземљење Пи. Не заборавите отпорник, негде на стази. Сада сте спремни да кренете!

Имплементација ПВМ-а на Распберри Пи

Да би хардверски ПВМ радио на Распберри Пи, користићемо рпи-хардваре-пвм библиотека од Цамерон Давидсон-Пилона, адаптиран од код Џеремија Импсона. Ово је коришћено у Пиореацтор (биореактор на бази Пи) - али је довољно једноставан за наше сврхе.

Прво, хајде уредите цонфиг.тктфајл, који се налази у /boot именик. Само треба да додамо један ред: дтоверлаи=пвм-2цхан. Ако желимо да користимо ГПИО пинове осим 18 и 19, могли бисмо овде додати неке додатне аргументе. За сада, нека ствари буду једноставне.

Поново покрените Пи и покрените:

lsmod | grep pwm

Ова команда наводи све модуле учитане у централни део ОС-а, који се зове кернел. Овде их филтрирамо да бисмо пронашли само ПВМ ствари, користећи греп (то је "штампање глобалног регуларног израза").

Ако пвм_бцм2835 појави међу наведеним модулима, онда смо на правом путу. Скоро смо готови са припремама! Остаје само да инсталирате стварну библиотеку. Са терминала покрените:

sudo pip3 install rpi-hardware-pwm

Сада смо спремни да почнемо.

Кодирање ПВМ ЛЕД кола

Време је да упрљамо руке са мало кодирање у Пајтону. Покрените Тхонни и копирајте следећи код. Онда удари Трцати.

from rpi_hardware_pwm import HardwarePWM
import time
pwm = HardwarePWM(pwm_channel=0, hz=60) # here's where we initialize the PWM
pwm.start(0) # start the PWM at zero – which means the LED is off
for i in range(101):
pwm.change_duty_cycle(i)
time.sleep(.1) # by introducing a small delay, we can make the effect visible.
pwm.stop()

Ако је све у реду, видећете да ЛЕД светлији постепено постаје све светлији до и променљива бројача достиже 100. Онда ће се искључити. Шта се дешава овде? Хајдемо кроз то.

Увозимо релевантни део хардверске ПВМ библиотеке (заједно са време модул) и декларисање нове променљиве. Можемо поставити пвм_цханнел на 0 или 1, што одговара ГПИО пиновима 18 и 19 на Пи.

Тхе хз вредност коју можемо подесити на било коју фреквенцију коју желимо (иако смо на крају ограничени Пи-овом брзином такта). На 60Хз, не би требало да видимо никакво ПВМ треперење. Али можда би било добро да почнете са веома ниском вредношћу (као 10) и постепено мењате ствари. Урадите ово и заиста ћете моћи да видите пулсеве како се дешавају. Немојте нам само веровати на реч!

Радимо наш циклус рада (и) од 0 до 100 користећи Питхон фор петљу. Вреди напоменути да можемо подесити време.спавање аргументом колико год желимо – пошто се ПВМ-ом рукује у хардверу, он ће радити иза кулиса, колико год ми кажемо програму да чека.

Има још за научити са ПВМ

Честитам! Написали сте свој први ПВМ програм. Али, као што је то често случај са Распберри Пи, има много тога што можете да урадите са овим стварима, посебно ако свој Распберри Пи повећате са правим ПВМ ХАТ-ом. Дакле, немојте се задовољити једном малом ЛЕД диодом. Ову нову снагу можете користити за контролу мотора, кодирање порука и генерисање синтисајзерских тонова. Чека вас свет модулације!