Skip to main content
PWM (Pulse Width Modulation), bir sinyalin ortalama güç seviyesini kontrol etmek için kullanılan bir modülasyon tekniğidir. Temel çalışma prensibi, sabit periyotlu bir kare dalganın “açık” ve “kapalı” kalma sürelerinin (duty cycle) ayarlanmasına dayanır. Gömülü sistemlerde motor hız kontrolü, LED parlaklık ayarı, servo motor kontrolü, güç dönüştürücüler ve analog sinyal üretimi gibi birçok amaçla kullanılır. Örneğin, bir motorun hızı PWM ile kontrol edilirken, duty cycle değeri arttıkça motora iletilen ortalama gerilim artar ve motor daha hızlı döner. PWM sinyalinin temel parametrelerinden biri olan periyot bir tam dalga boyunun süresidir. Duty cycle ise bir periyot içinde sinyalin “açık” kaldığı süredir. Polarite ise PWM sinyalinin aktif olduğu durumu (yüksek veya düşük seviye) belirler. Örneğin, normal polaritede duty cycle yüksek seviyeyi temsil ederken, ters polaritede düşük seviyeyi temsil eder.

PWM Arayüzleri

T3-GEM-O1 kartta yer alan PWM arayüzleri aşağıdaki tabloda listelenmiştir.

PWM Pinleri

PWM-0A ve PWM-0B birlikte aktif etmek için: k3-am67a-t3-gem-o1-pwm-epwm0-gpio5-gpio14.dtsoPWM-1A ve PWM-1B birlikte aktif etmek için: k3-am67a-t3-gem-o1-pwm-epwm1-gpio6-gpio13.dtso
pwmchip3 ve pwmchip5 çipleri iki kanala sahiptir ve her bir kanal bir PWM cihazı olarak kullanılabiir. Ancak bir PWM çipinin iki kanalına (örneğin PWM-0A ve PWM-0B) farklı periyot değerleri ATANAMAZ. İki kanala aynı periyot değeri verildiği sürece farklı duty-cycle atanmasında bir sakınca yoktur.
Aktif edilmek istenen arayüzlerin overlay dosyalarının isimleri /boot/uEnv.txt dosyasındaki overlays değişkenine eklenmelidir. Overlay’ler hakkında detaylı bilgiye Device Tree bölümünden erişilebilir. Tüm overlay’ler aktif edildiğinde 1 tanesi FAN header’ından 7 tanesi 40-pin header’dan olmak üzere 8 ayrı PWM arayüzü mevcuttur.

PWM Kullanımı

PWM çiplerine /sys/class/pwm dizininden erişilebilmektedir. Bir PWM cihazını kullanabilmek için öncesinde export işlemi yapılmış olmalıdır. Örneğin yukarıdaki tablo incelendiğinde PWM-ECAP0 arayüzünün pwmchip0 çipinin pwm0 cihazına karşılık gelmekte olduğu görülmektedir. Aşağıdaki komut ile export yapıldıktan sonra /sys/class/pwm/pwmchip0/pwm0 cihazı oluşur. echo 0 yazmamızın sebebi pwm0 yani 0 numaralı cihaz olmasıdır.
Benzer şekilde PWM-0B arayüzü kullanılmak isteniyorsa aşağıdaki komutta gösterildiği gibi pwmchip3 çipinin pwm1 cihazı aktif edilmelidir. echo 1 yazmamızın sebebi pwm1 yani 1 numaralı cihaz olmasıdır.
export işleminin ardından nanosaniye cinsinden period ve duty_cycle değişkenleri aşağıdaki örnekte gösterildiği şekilde istenen değerlere ayarlanıp cihazın enable değişkenine 1 atandıktan sonra PWM çıktısı alınabilir.
PWM çıktısını durdurmak için enable değişkenine 0 atanabilir.
Eğer PWM cihazı artık kullanılmak istenmiyorsa unexport işlemi yapılabilir. Bu işlem sonrasında cihaz sistemden kaldırılacaktır. echo 0 yazmamızın sebebi pwm0 yani 0 numaralı cihaz olmasıdır.