Invite you to buy the best products

شما را به خرید بهترین محصولات دعوت می کنیم

Complete the below form for consulting

فرم را برای مشاوره پر کنید

کنترل دور موتور DC با PIC 16F877A

What you will read ...

کنترل دور موتور DC با PIC 16F877A :

کنترل دور موتور DC با PIC 16F877A :

 

برای طراحی یک برنامه کنترل دور موتور با استفاده از میکروکنترلر PIC16F877A، شما می‌توانید از PWM (مدولاسیون پهنای پالس) استفاده کنید. PWM یک روش مؤثر برای کنترل سرعت موتورهای DC است. در زیر یک مثال ساده از برنامه‌ای که با استفاده از زبان برنامه‌نویسی C و کامپایلر MPLAB XC8 نوشته شده، آورده شده است.

الزامات سخت‌افزاری:

  1. میکروکنترلر PIC16F877A
  2. موتور DC
  3. درایور موتور (مانند L298N یا L293D)
  4. منبع تغذیه مناسب
  5. نوسان‌ساز کریستالی (معمولاً 20 مگاهرتز)
  6. خازن‌ها و مقاومت‌های مورد نیاز برای نوسان‌ساز

اتصال سخت‌افزاری:

  • پین‌های PWM میکروکنترلر را به ورودی درایور موتور متصل کنید.
  • موتور DC را به خروجی درایور موتور متصل کنید.
  • منبع تغذیه موتور را به درایور موتور متصل کنید.
  • تغذیه و زمین را به میکروکنترلر و درایور موتور وصل کنید.

کد برنامه:

این برنامه از PWM برای کنترل سرعت موتور DC استفاده می‌کند. شما می‌توانید با تغییر مقدار PWM، سرعت موتور را کنترل کنید.

#include <xc.h>

// پیکربندی بیت‌های کانفیگوراسیون
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (single-supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

#define _XTAL_FREQ 20000000 // فرکانس کریستال

void PWM_Init()
{
// تنظیم پین‌های PWM
TRISC2 = 0; // پین RC2 به عنوان خروجی PWM

// تنظیم تایمر 2 برای PWM
T2CKPS0 = 0;
T2CKPS1 = 0; // پیش‌تقسیم‌کننده تایمر 2: 1

// تنظیم PWM
PR2 = 255; // پریود PWM

CCP1M3 = 1;
CCP1M2 = 1; // فعال‌سازی PWM

TMR2ON = 1; // فعال‌سازی تایمر 2

while (!TMR2IF); // انتظار برای تایمر 2 برای تثبیت
TMR2IF = 0; // پاک کردن فلگ تایمر 2
}

void PWM_Duty(unsigned int duty)
{
// محدود کردن مقدار دیوتی سیکل به بازه معتبر
if(duty < 1024)
{
CCP1Y = duty & 1;
CCP1X = (duty & 2) >> 1;
CCPR1L = duty >> 2;
}
}

void main()
{
PWM_Init(); // مقداردهی اولیه PWM

while(1)
{
PWM_Duty(512); // تنظیم دیوتی سیکل به 50%
__delay_ms(1000);

PWM_Duty(256); // تنظیم دیوتی سیکل به 25%
__delay_ms(1000);

PWM_Duty(768); // تنظیم دیوتی سیکل به 75%
__delay_ms(1000);
}
}

توضیحات کد:

  • این کد PWM را برای پین RC2 (CCP1) میکروکنترلر تنظیم می‌کند.
  • تابع PWM_Init تنظیمات اولیه PWM و تایمر 2 را انجام می‌دهد.
  • تابع PWM_Duty دیوتی سیکل PWM را تنظیم می‌کند.
  • در تابع main، دیوتی سیکل PWM در فواصل زمانی 1 ثانیه تغییر می‌کند.

این برنامه به شما امکان می‌دهد تا با تغییر مقدار دیوتی سیکل، سرعت موتور DC را کنترل کنید. برای پروژه‌های پیچیده‌تر، می‌توانید ورودی‌های مختلف مانند پتانسیومتر یا سنسورهای دیگر را برای تنظیم دیوتی سیکل استفاده کنید.

 

PIC 16F877A Original    مشخصات

PIC 16F877A Original, PIC 16F877A Original Price, PIC 16F877A Original قیمت, PIC 16F877A Original خرید

PIC 18F4550 Original, PIC 18F4550 Original Price, PIC 18F4550 Original قیمت, PIC 18f4550 Original خرید

PIC 16F84A Original, PIC 16F84A Original Price, PIC 16F84A Original قیمت, PIC 16F84A Original خرید

 

جهت خرید میکرو کنترلر اصلی و ارجینال با ما تماس بگیرید.

 

 

Alireaza Behzadi Rad

For Consulting And Ordering Click Below Button

Consulting and Ordering

Invite you to buy the best products

Complete the below form for consulting

0

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *