LỚP DD07KSTN
LỚP DD07KSTN
LỚP DD07KSTN
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

LỚP DD07KSTN


 
Trang ChínhLatest imagesTìm kiếmĐăng kýĐăng Nhập
April 2024
MonTueWedThuFriSatSun
1234567
891011121314
15161718192021
22232425262728
2930     
CalendarCalendar
Latest topics
» simviettel.net bán sim đẹp Viettel, số đẹp Vinaphone, sim số đẹp Mobifone 10 số
PWM_điều khiển động cơ đổi chiều I_icon_minitimeThu Nov 07, 2013 2:59 pm by simviettel.net

» đo nhiệt độ
PWM_điều khiển động cơ đổi chiều I_icon_minitimeFri Nov 09, 2012 11:56 pm by trongthanh

» Mạch cầu H kích FET dùng IR2110
PWM_điều khiển động cơ đổi chiều I_icon_minitimeTue Aug 07, 2012 7:26 pm by Ultra

» HƯỚNG DẪN THIẾT KẾ FANLED CỦA CLB
PWM_điều khiển động cơ đổi chiều I_icon_minitimeTue Jan 10, 2012 11:17 pm by dcthuan.cdt

» Thông báo! Giải bóng đá CUP KSTN mùa giải 2011
PWM_điều khiển động cơ đổi chiều I_icon_minitimeMon Nov 07, 2011 8:52 pm by lethanhtoan

» điểm danh xem ai đang làm gì
PWM_điều khiển động cơ đổi chiều I_icon_minitimeThu Sep 22, 2011 12:18 pm by vanquy311

» về ngày hội việc làm và phỏng vấn thử thành công thật
PWM_điều khiển động cơ đổi chiều I_icon_minitimeThu Sep 22, 2011 12:07 pm by vanquy311

» cần trao đổi
PWM_điều khiển động cơ đổi chiều I_icon_minitimeThu Sep 22, 2011 11:19 am by blue

» cùng nhau hoàn thành tốt luận văn
PWM_điều khiển động cơ đổi chiều I_icon_minitimeWed Sep 21, 2011 2:56 pm by biganaru

Keywords
2011 2010 phân tượng hiện

 

 PWM_điều khiển động cơ đổi chiều

Go down 
2 posters
Tác giảThông điệp
kẹo kéo
phó giám đốc
phó giám đốc
kẹo kéo


Tổng số bài gửi : 50
Join date : 31/12/2009
Age : 34

PWM_điều khiển động cơ đổi chiều Empty
Bài gửiTiêu đề: PWM_điều khiển động cơ đổi chiều   PWM_điều khiển động cơ đổi chiều I_icon_minitimeSat Jun 05, 2010 10:47 pm

/******************************************************
- Test trên mạch R&P PIC16
- Động cơ sử dụng là loại nhỏ, áp vào 5V, tầm 200mA.
- Ý tưởng là so sánh áp vào chân adc >2.5V thì lấy áp đó trừ đi 2.5, rồi tất
cả nhân 2 để sao cho tại 5V (thực ra khoảng 4.98V) thì động cơ quay max, tại 2.5V động cơ dừng. Tương tự cho chiều ngược lại.
- Thực tế là trong tầm 2V-3V, đông cơ không quay, có lẽ do momen không đủ.
- Mấy cái vớ vẩn k2 viết, còn code đổi chiều Phát viết. Smile
******************************************************/

#include <htc.h>
#include "stdlib.h"
#include "lcd.h"


__CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & SWBOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS); //1st config. word
__CONFIG(BORV21); //2st config. word


#define _XTAL_FREQ 4000000


void setup_adc()
{
TRISA3=1;
TRISE0=0;
ANSEL=0xFF;
ADCON0=0b00001101;
ADFM=1;
VCFG1=0;
VCFG0=0;
}


unsigned long adc_read()
{
unsigned long vol=0;
if (GODONE==0) // thuc te khong can kiem tra if .. o day
{
vol=ADRESH*256+ADRESL;
}
return vol;
}


void init_timer2()
{
T2CON=0x00; //prescaler 1:1, postscaler1:1
TMR2ON=1; //timner 2 on
}


void setup_pwm()
{
PR2=199; //Fpwm=5khz
CCP1CON=0x0C;
CCP2CON=0x0C;
CCPR1L=0x00;
CCPR2L=0x00;
TRISC2=0;
TRISC1=0;
}


void output_lcd()
{
unsigned char dvi, chuc, tram, ngan;
unsigned long adc_val;
adc_val=5*(adc_read())*1000/1024; //đoạn code này tham khảo của lee Smile
dvi=adc_val%10;
adc_val=adc_val/10;
chuc=adc_val%10;
adc_val=adc_val/10;
tram=adc_val%10;
adc_val=adc_val/10;
ngan=adc_val%10;

lcd_gotoxy(0,1);
lcd_putc(0x30+ngan);
lcd_putc('.');
lcd_putc(0x30+tram);
lcd_putc(0x30+chuc);
lcd_putc(0x30+dvi);
lcd_puts(" Von");
}


void main()
{
setup_adc();
init_timer2();
setup_pwm();
lcd_init();
lcd_puts("Dien ap do duoc: ");
unsigned long pwm_val;
while(1)
{
GODONE=1;
while(GODONE); //cho adc chuyen doi xong
pwm_val=adc_read()*200/1023;
output_lcd();

if (pwm_val>100)
{
pwm_val=(pwm_val-100)*2;
CCPR2L=0x00; // tat kenh 2
__delay_us(10); //delay tranh trung dan
CCPR1L=pwm_val;
}
else
{
pwm_val=(100-pwm_val)*2;
CCPR2L=0x00; // tat kenh 1
__delay_us(10); //delay tranh trung dan
CCPR2L=pwm_val;
}
RE0=1; // motor enable
}
}
Về Đầu Trang Go down
http://dm.trong@gmail.com
Lee
phó tổng giám đốc
phó tổng giám đốc
Lee


Tổng số bài gửi : 106
Join date : 29/12/2009
Age : 34
Đến từ : Tây Ninh

PWM_điều khiển động cơ đổi chiều Empty
Bài gửiTiêu đề: Re: PWM_điều khiển động cơ đổi chiều   PWM_điều khiển động cơ đổi chiều I_icon_minitimeMon Jun 07, 2010 7:22 pm

Sao nhiều phen sóng gió thì cũng biết mình lỗi chổ nào!
Cách làm cũng giống Phát với Trọng thôi, nhưng ở đây sử dụng ngắt. Thiết nghĩ nó sẽ chạy " mượt " hơn so với polling hỏi vòng.

Trích dẫn :
/****************************************************************
*
* PIC Training Course
*
****************************************************************/

/****************************************************************
*
* Module : main.c
* Description : what is this for?????????????
* Tool : HI-TECH PIC
* Chip : 16F887A
* History : 3/6/2010
*
* Author :Mai Khac Hiep, CLB NCKH
* Notes :
*
*
****************************************************************/


/****************************************************************
* IMPORT
****************************************************************/
#include <htc.h>
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS); //1st config. word

__CONFIG(BORV21); //2st config. word

#define _XTAL_FREQ 4000000


/*****************************************************************
* ROUTINES
******************************************************************/
void setup_ADC(void)
{ unsigned char i=0;
ANS3=1;// NGO VAO ANALOG
TRISA3=1;
ADRESH=0x00;
ADRESL=0x00;
ADCON1 = 0; // TAM TOAN THANG=5V
ADFM = 1; // KET QUA LAP DAY BEN PHAI
ADCON0 = 0;
ADCS0 = 1; // tan so chuyen doi ADC bang FRC
ADCS1 =1;
CHS0 = 1; // chon kenh AN3
CHS1 = 1;
ADON = 1; // bat ADC
__delay_us(5);
GODONE =1 ; // run ADC
}
/*********************************************************************
**********************************************************************/
void setup_timer2(void)
{ T2CON = 0;
TMR2ON=1;
PR2=199;
}
/**********************************************************************
***********************************************************************/
void setup_pwm(void)
{ CCP1CON=0x0C;
CCP2CON=0x0C;
TRISC1=0;
TRISC2=0;
TRISE0=0;
RE0=1;
}
/**********************************************************************
***********************************************************************/
void setup_interrupt(void)
{ GIE=1;
PEIE=1;
ADIE=1;
ADIF=0;
}
/**********************************************************************
***********************************************************************/
void interrupt isr()
{ unsigned long temp=0;
if( ADIE && ADIF && PEIE)
{ ADIF=0;
temp=((unsigned int )ADRESH<<Cool|ADRESL;
if( temp<512) // dong co quay thuan
{ temp=(511-temp)*200/511;;
CCPR2L=0; // CCP1 chay, CCP2 tat
CCPR1L=temp;
}
if( temp>=512) // dong co quay nghich
{ temp=(temp-511)*200/511;;
CCPR1L=0; // CCP1 tat, CCP2 chay
CCPR2L=temp;
}
__delay_us(5);
GODONE = 1;
}
}

/****************************************************************
* MAIN Description : Dieu khien toc do dong co bang ADC *
****************************************************************/
void main(void)
{ setup_interrupt();
setup_timer2();
setup_ADC();
setup_pwm();
while(1);
}
/****************************************************************
* END OF standard form.c
****************************************************************/
Về Đầu Trang Go down
kẹo kéo
phó giám đốc
phó giám đốc
kẹo kéo


Tổng số bài gửi : 50
Join date : 31/12/2009
Age : 34

PWM_điều khiển động cơ đổi chiều Empty
Bài gửiTiêu đề: Re: PWM_điều khiển động cơ đổi chiều   PWM_điều khiển động cơ đổi chiều I_icon_minitimeMon Jun 07, 2010 8:12 pm

- Há há, 2 code giống nhau ở cái này: 100=512*200/1024 cheers

- Theo k2 thì 2 cái có tác dụng như nhau và không có cái nào làm động cơ quay mượt hơn hết. PWM_điều khiển động cơ đổi chiều 94937 Muốn quay mượt ta xài luôn 2 cái bit thấp của adc và pwm kìa. Razz

- Cái khác giữa dùng interrupt và polling là ở polling, trong giai đoạn chờ go/done=1 thì vxl không thực hiện việc khác được. Còn nếu dùng interrupt thì ta không phí thời gian chờ go/done.
Về Đầu Trang Go down
http://dm.trong@gmail.com
Lee
phó tổng giám đốc
phó tổng giám đốc
Lee


Tổng số bài gửi : 106
Join date : 29/12/2009
Age : 34
Đến từ : Tây Ninh

PWM_điều khiển động cơ đổi chiều Empty
Bài gửiTiêu đề: Re: PWM_điều khiển động cơ đổi chiều   PWM_điều khiển động cơ đổi chiều I_icon_minitimeMon Jun 07, 2010 8:59 pm

Cùng mục đích nên chắc chắn là xử lí hơi bị giống nhau rồi ( Cùng 1 lò ra cả ). PWM_điều khiển động cơ đổi chiều Icon_geek PWM_điều khiển động cơ đổi chiều Icon_geek

Uhm.. Nếu dùng hết 10 bit thì có lý đấy, độ phân giải cao, động cơ chạy mượt hơn. Đồng ý với k2.
Về Đầu Trang Go down
Sponsored content





PWM_điều khiển động cơ đổi chiều Empty
Bài gửiTiêu đề: Re: PWM_điều khiển động cơ đổi chiều   PWM_điều khiển động cơ đổi chiều I_icon_minitime

Về Đầu Trang Go down
 
PWM_điều khiển động cơ đổi chiều
Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
LỚP DD07KSTN :: Câu lạc bộ nghiên cứu khoa học :: PIC 16-
Chuyển đến