Showing posts with label PWM. Show all posts
Showing posts with label PWM. Show all posts

Thursday, May 14, 2015

Điều khiển độ rộng xung pwm

Posted by dientudieukhien at 12:18 AM 0 Comments
    Trên các dòng vi điều khiển ngày nay điều có trang bị module pwm để ta có thể lập trình điều khiển độ rộng xung từ đó áp dụng vào những việc cụ thể như: điều khiển tốc độ của motor hay dùng điều khiển độ sáng của bóng đèn...
    Đối với vi điều khiển pic 16f877A có 2 module là CCP1(RC2) và CCP2(RC1), về chức năng 2 module này hoàn toàn giống nhau. Chúng ta có thể sử dụng 2 module CCP này trong các chức năng như: capture mode, compare mode, pwm mode
   Trong project này ta sử dụng module CCP2 ở chế độ PWM mode.
   Tín hiệu của tần số và chu kỳ xung đồng hồ có một ứng dụng rộng rãi trong tự động hóa. Một ví dụ cơ bản là mạch điều khiển công suất và được thể hiện một cách dễ hiểu qua hình minh họa dưới đây. Nếu mức logic 0 tương ứng với switch off, mức logic 1 tương ứng switch on. Nguồn điện cung cấp cho tải tỉ lệ thuận với thời gian của một xung, tỉ lệ này được gọi là Duty Cycle.
PWM
Hình minh họa điều khiển độ sáng của đèn bằng cách điều khiển độ rộng xung

Trong project sau ta thay đổi Duty Cycle để thay đổi tỉ lệ mức logic 0 và logic 1 của một chu kỳ.
PWM
Điều khiển độ rộng xung PWM
Video mô phỏng project:

||Tải project (code+protues)
Read More »

Monday, August 4, 2014

Tạo PWM với vi điều khiển PIC sử dụng Hi-Tech C

Posted by dientudieukhien at 3:11 AM 0 Comments
Dientudieukhien.net chia sẽ cùng bạn cách lập trình PWM cho vi điều khiển pic bằng ngôn ngữ Hi-Tehc C. Sau đây là một ví dụ:

Sơ đồ nguyên lý:
Tạo PWM với vi điều khiển Pic sử dụng Hi-Tech C

Code in Hi-Tech C:
#include<htc.h>

#define _XTAL_FREQ 20000000
#define TMR2PRESCALE 4
long freq;

int PWM_Max_Duty()
{
  return(_XTAL_FREQ/(freq*TMR2PRESCALE);
}

PWM1_Init(long fre)
{
  PR2 = (_XTAL_FREQ/(freq*4*TMR2PRESCALE)) - 1;
  freq = fre;
}

PWM2_Init(long fre)
{
  PR2 = (_XTAL_FREQ/(freq*4*TMR2PRESCALE)) - 1;
  freq = fre;
}

PWM1_Duty(unsigned int duty)
{
  if(duty<1024)
  {
    duty = ((float)duty/1023)*PWM_Max_Duty();
    CCP1X = duty & 2;
    CCP1Y = duty & 1;
    CCPR1L = duty>>2;
  }
}

PWM2_Duty(unsigned int duty)
{
  if(duty<1024)
  {
    duty = ((float)duty/1023)*PWM_Max_Duty();
    CCP2X = duty & 2;
    CCP2Y = duty & 1;
    CCPR2L = duty>>2;
  }
}

PWM1_Start()
{
  CCP1M3 = 1;
  CCP1M2 = 1;
  #if TMR2PRESCALAR == 1
    T2CKPS0 = 0;
    T2CKPS1 = 0;
  #elif TMR2PRESCALAR == 4
    T2CKPS0 = 1;
    T2CKPS1 = 0;
  #elif TMR2PRESCALAR == 16
    T2CKPS0 = 1;
    T2CKPS1 = 1;
  #endif
  TMR2ON = 1;
  TRISC2 = 0;
}

PWM1_Stop()
{
  CCP1M3 = 0;
  CCP1M2 = 0;
}

PWM2_Start()
{
  CCP2M3 = 1;
  CCP2M2 = 1;
  #if TMR2PRESCALE == 1
    T2CKPS0 = 0;
    T2CKPS1 = 0;
  #elif TMR2PRESCALE == 4
    T2CKPS0 = 1;
    T2CKPS1 = 0;
  #elif TMR2PRESCALE == 16
    T2CKPS0 = 1;
    T2CKPS1 = 1;
  #endif
    TMR2ON = 1;
    TRISC1 = 0;
}

PWM2_Stop()
{
  CCP2M3 = 0;
  CCP2M2 = 0;
}

void main()
{
  unsigned int i=0,j=0;
  PWM1_Init(5000);
  PWM2_Init(5000);
  TRISD = 0xFF;
  TRISB = 0;
  PWM1_Duty(0);
  PWM2_Duty(0);
  PWM1_Start();
  PWM2_Start();
  do
  {
    if(RD0 == 0 && i<1000)
      i=i+10;
    if(RD1 == 0 && i>0)
      i=i-10;
    if(RD2 == 0 && j<1000)
      j=j+10;
    if(RD3 == 0 && j>0)
      j=j-10;
    PWM1_Duty(i);
    PWM2_Duty(j);

    __delay_ms(50);
  }while(1);
}
|| Bạn đọc cụ thể cách giải thích tại đây
Read More »

Thursday, July 3, 2014

Điều khiển tốc độ motor DC bằng điều chế PWM với pic16f877a - Control motor DC

Posted by dientudieukhien at 11:04 PM 2 Comments
Sau đây là một project điều khiển tốc độ motor dc bằng cách điều chế độ rộng xung.
CMU: pic 16f877a
Ngôn ngữ lập trình: mikroc Pro for Pic ver 6.4
Mô tả: Như hình ảnh bên dưới, trong projetc bạn có một RV1 để dùng điều chỉnh độ rộng xung và xuất ra trên pin RC2.
Một số hình ảnh của project:
Sơ đồ nguyên lý

Mô phỏng bằng Protues


Read More »

Wednesday, March 12, 2014

Điều khiển độ sáng đèn điện xoay chiều bằng điều khiển DC - PIC DC Controlled AC Light Dimmer

Posted by dientudieukhien at 4:46 PM 0 Comments
Sơ đồ nguyên lý:

Sơ lược về hoạt động: Ở đây dùng một vi điều khiển pic 12f615 để điều khiển độ mờ của bóng đèn thông qua điều khiển điện thế dc 5v ở port GP4. Ở đây sử dụng MOC 3021 để cách ly quang đảm bảo an toàn, dùng một triac để điều khiển đèn.
Video:

|| Tải code asm + trị số linh kiện + sơ đồ nguyên lý

source: pcbheaven.com
Read More »

Monday, December 23, 2013

Điều khiển tốc độ DC motor sử dụng PWM với ATMEGA16 - DC Motor Speed Control using PWM

Posted by dientudieukhien at 1:19 PM 0 Comments
Ở Projects này sử dụng ATMEGA16 lái L298 để điều khiển DC motor. Tốc độ của DC motor được điều khiển bằng cách điều khiển độ rộng xung (PWM).
Ngôn ngữ lập trình Bascom , bạn có thể chuyển sang C dễ dàng.


Video:

|| Tải Project

source: avrprojects.info
Read More »

Thursday, May 31, 2012

Điều khiển tốc độ quạt - pwm fan controller

Posted by dientudieukhien at 10:02 AM 0 Comments
Sơ đồ nguyên lý:
PCB và Layout:


Read More »

    tab

back to top