Kết quả 1 đến 1 của 1
-
11-10-2015, 04:41 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
[HELP]- Điều khiển tăng/giảm tốc độ ĐCơ DC 12V dùng CCS-Các bro ơi giúp e với ạ!!
Như tiêu đề : e đã lập trình cho đc quay thuận,quay ngược, stop qua PWM rồi ạ(chỉ dùng 2 chân CCP1,2)... nhưng còn phần tăng với giảm tốc thì e chưa biết làm thế nào.
Yêu cầu: Khi đc quay thuận hoặc ngược mà mình bấm nút tăng nó vẫn tăng mà nút giảm nó giảm.
E mới học về phần này mong các a giúp đỡ.
Link file mophong:
DK_DC
Đây là code e viết chưa ổn lắm:
#include "E:\pic\main.h"
#fuses hs, nowdt,noput,noprotect,nobrownout,put,nolvp,nocpd,n owrt,nodebug
#use delay(clock=4M)
#USE fast_io (C)
#USE fast_io (A)
#define RIGHT PIN_A0
#define LEFT PIN_A1
#define STOP PIN_A2
#define UP PIN_A3
#define DOWN PIN_A4
#define TEST PIN_C1
#define KT PIN_C2
int i,j;
void PWM_Init() //ham khoi tao PWM
{
OUTPUT_HIGH(Pin_C0);
SETUP_CCP1(CCP_PWM);
SETUP_CCP2(CCP_PWM);
SETUP_TIMER_2(T2_DIV_BY_4,255,1);
SET_PWM1_DUTY(0); //thiet lap chu ki ban dau la 0 => ngung quay dong co
SET_PWM2_DUTY(0);
}
void To_Right() // QUAY PHAI
{
SET_PWM1_DUTY(0);
SET_PWM2_DUTY(55);
}
void To_Left() // QUAY TRAI
{
SET_PWM2_DUTY(0);
SET_PWM1_DUTY(55);
}
void To_Stop() // DUNG DC
{
SET_PWM1_DUTY(0);
SET_PWM2_DUTY(0);
}
void _Tang_Giam()
{
for (i=55;i<=255;i++)
{
if(i<255)
{
i+=20;
}
}
for(j=i+=20;j>55;j--)
{
if(j>55)
{
j-=20;
}
}
delay_ms(50);
}
void Quet_phim()
{
if(INPUT(PIN_A2)==0)
{
while(INPUT(PIN_A2)==0); //cho doi toi khi nut nhan duoc tha ra
To_Stop(); // DUNG
delay_ms(100);
}
else if(INPUT(PIN_A0)==0)
{
while(INPUT(PIN_A0)==0);//cho doi toi khi nut nhan duoc tha ra
To_Right(); //QUAY PHAI
delay_ms(100);
}
else if(INPUT(PIN_A1)==0)
{
while(INPUT(PIN_A1)==0);//cho doi toi khi nut nhan duoc tha ra
To_Left(); // QUAY TRAI
delay_ms(100);
}
//tang dan
else if(INPUT(PIN_A3)==0)
{
i+=20;
while(INPUT(PIN_A3)==0);//cho doi toi khi nut nhan duoc tha ra
{
if(CCP_1_HIGH)
{
SET_PWM1_DUTY(i);
SET_PWM2_DUTY(0);
}
else
{
SET_PWM1_DUTY(0);
SET_PWM2_DUTY(i);
}
delay_ms(50);
}
}
//giam dan
else if(INPUT(PIN_A4)==0)
{
j-=20;
while(INPUT(PIN_A4)==0);//cho doi toi khi nut nhan duoc tha ra
{
if(CCP_2_HIGH)
{
SET_PWM1_DUTY(0);
SET_PWM2_DUTY(j);
}
else
{
SET_PWM2_DUTY(0);
SET_PWM1_DUTY(j);
}
delay_ms(50);
}
}
}
void main()
{
To_Stop(); //mac dinh la dong co dung
set_tris_A(0xFF); // cau hinh ngo vao port A
set_tris_C(0x00); // cau hinh ngo ra port C
PWM_Init();
while(1)
{
Quet_phim();
}
}View more random threads:
- cách đểm dòng bằng trans... từ vdk ra 12v
- Cần giúp fix lỗi altium "Access violation at address 158182AE in..."
- Mua kính dẫn điện ở đâu?
- Linh kiện khó trong Proteus
- Cho hỏi mạch dimmer đèn AC với tín hiệu analog
- Phần Mềm Proteus 8 Demonstration
- thực hành thiết kế mạch nguồn điện một chiều( 4 điốt, 3 tụ, ,biến áp, cuộn cảm, IC 7818)
- Cách phân biệt động cơ STEP và DC SERVO qua bề ngoài
- Bí quyết Nguyên nhân gây bệnh cholesterol trong máu cao ở người gầy?
- Có thể chuyển đổi nhiệt thành điện được không?
Đồ chơi sáng tạo - Người bạn nhỏ...
Hôm nay, 10:32 AM in Rao vặt tổng hợp