دوره رایگان آموزش Micropython مقدماتی

آموزش PWM در ESP8266
فهرست مطالب

جلسه هفتم:

استفاده از PWM در MicroPython

مبحث این جلسه از آموزش رایگان میکروپایتون، در مورد مدولاسیون پهنای پالس یا همان PWM است. برای شروع به آموزش این جلسه حتما ابتدا جلسات قبلی آموزش را که لینک آنها در پایین این صفحه آورده‌شده‌است، مطالعه کنید.‌

مقدمه

PWM مخفف Pulse Width Modulation است یا همان مدولاسیون پهنای پالس. به طور کلی و خلاصه برای محدود کردن توان منتقل شده به بار از PWM استفاده میشود. به این صورت که با کم کردن duty cycle توان منتقل شده به بار را کاهش میدهیم. برای آشنایی بیشتر با PWM از این لینک استفاده کنید.

وسایل لازم برای آموزش PWM در MicroPython

  1. 1-برد ESP8266 NodeMCU یا ESP32 NodeMCU

  2. 2-اسیلوسکوپ (یا موتور dc برای تست)

استفاده از PWM در ESP8266

برای استفاده از PWM در ESP8266 به کلاسهای Pin و PWM که هر دو در ماژول machine هستند نیاز داریم.

تنظیمات لازم برای آن عبارتند از:

  1. شماره PIN مربوط
  2. تنظیم فرکانس
  3. مشخص کردن Duty Cycle

ایجاد شی PWM در ESP8266

برای ایجاد یک شی از کلاس PWM از دستور زیر استفاده میکنیم:

				
					from machine import Pin, PWM
pwm1 = PWM(Pin(16))      # create PWM object from a pin
pwm2 = PWM(Pin(0))      # create PWM object from a pin
				
			

تنظیم فرکانس PWM در ESP8266

برای تنظیم فرکانس pwm در ESP8266 از دستور زیر استفاده میکنیم

				
					pwm1.freq(1000)
				
			

مقدار فرکانس بر حسب هرتز است و برای ESP8266 میتواند عددی بین 1 تا 1000 هرتز باشد. برای نمایش مقدار فعلی میتوانید از دستور زیر استفاده‌کنید:

				
					print(pwm1.freq())
				
			

تنظیم Duty Cycle در ESP8266

برای تنظیم duty cycle میتوانید از دستور زیر استفاده‌کنید:

				
					pwm1.duty(200)          # set duty cycle
pwm2.duty(500)          # set duty cycle
				
			

مقدار duty cycle میتواند به عددی بین 0 تا 1023 تنظیم شود. مثلا برای تنظیم duty cycle روی 50 درصد از عدد 511 استفاده میکنیم.

برنامه نمونه PWM در ESP8266

کد زیر یک برنامه نمونه برای استفاده از pwm در میکروپایتون برای ESP8266 است . در این برنامه از دو کانال pwm که روی فرکانس هر دو روی 1KHz و duty cycle پایه 0 روی 200 و پایه 16 روی 500 تنظیم شده است که این کانالها 10 ثانیه فعال هستند و بعد غیر فعال میشوند:

 

				
					from machine import Pin, PWM
from time import sleep

pwm1 = PWM(Pin(1))      # create PWM object from a pin
pwm2 = PWM(Pin(16))      # create PWM object from a pin
pwm1.freq(1000)         # set frequency
pwm2.freq(1000)         # set frequency
pwm1.duty(200)          # set duty cycle
pwm2.duty(500)          # set duty cycle

sleep(10) #wait for 10sec

pwm1.deinit()#turn off pwm1
pwm2.deinit()#turn off pwm2

				
			

طبق روال گذشته این کد را در یک فایل به نام pwm.py ذخیره میکنیم و آن را در حافظه فلش ماژول ذخیره میکنیم و در main.py کد import pwm را استفاده‌میکنیم. بعد از فشردن دکمه ریست کد اجرا میشود. تصویر نمایشگر اسیلوسکوپ به صورت زیر است:

آموزش pwm در esp32
کانال PWM با فرکانس 1kHz و duty cycle برابر با 200/1024
کانال PWM با فرکانس 1kHz و duty cycle برابر با 500/1024

تفاوت‌های PWM در ESP32

در Esp32 استفاده از PWM متفاوت است و تفاوت‌ها به صورت زیر است:

  1. 1- فرکانس از 1 تا 40MHz قابل تغییر است.
  2. 2- حداکثر فرکانس بستگی به فرکانس سیستم دارد.
  3. 3-برای تنظیم دیوتی سایکل روش های مختلفی وجود دارد
  4. 4- 8 پایه میتوانند دیوتی سایکل متفاوت داشته باشند و 8 پایه دیوتی سایکل مشترک

برنامه نمونه در ESP32

برای استفاده از PWM در ESP32 از کد نمونه زیر استفاده کنید:

				
					from machine import Pin, PWM

pwm0 = PWM(Pin(0))         # create PWM object from a pin
pwm0.freq(1000)            # set PWM frequency from 1Hz to 40MHz
pwm0.duty(256)             # set duty cycle from 0 to 1023 as a ratio duty/1023, (25%)
pwm0.duty_u16(2**16*3//4)  # set duty cycle from 0 to 65535 as a ratio duty_u16/65535, (75%)
pwm0.duty_ns(250_000)      # set pulse width in nanoseconds from 0 to 1_000_000_000/freq, (25%)
pwm0.duty_ns()             # get current pulse width in ns
pwm0.deinit()              # turn off PWM on the pin
				
			

جمع بندی جلسه ششم آموزش Micropython

این جلسه هم به پایان رسید امیدوارم محتوای این جلسه برای شما مفید باشد. برای جلسه بعد مبحث I2C را برای شما آماده میکنیم.

همه جلسات آموزش رایگان Micropython مقدماتی

محصولات مرتبط با این دوره

ارسال رایگان

برای سفارشات بالای ۳ میلیون تومان

گارانتی ویژه

برای محصولات شرکت

مشاوره رایگان

در امور تخصصی