Kết quả 1 đến 7 của 7
-
26-04-2011, 08:14 #1
Điều khiển tốc độ động cơ Dc , sử dụng PWM of AVR
Các bác xem chương trình của em có vấn đề j? mà khi chạy mô phỏng, động cơ chỉ quay được 2s rồi protues báo lỗi. Em sử dụng Timer 1, chế độ phase correct Pwm, 5 nút bấm, 1 nút quay thuận , 1 quay ngược, 1 dừng, 1 tăng tốc, 1 giảm tốc. Mà chương trình em viết sao LCD không hiển thị j cả? Sai ở đau không biết.
***Chương trinh*** viết bằng codevision avr
#include <mega16.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#define ipwm1 OCR1AL
#define RELAY PORTD.6
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTC=0xFF;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTD=0xFF;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Ph. correct PWM top=00FFh
// OC1A output: Inverted
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xC1;
TCCR1B=0x05;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
if(PORTA=0x08) // nut CT1 duoc bam
{
delay_ms(20); // Delay 20 millisecond
lcd_putsf("speed 50");
delay_ms(10);
RELAY=1;
ipwm1=125; //Dong Co quay thuan voi toc do bang 50% toc do dinh muc
}
if(PORTA=0x04) //nut CT2 duoc bam
{
delay_ms(20);
lcd_putsf("speed 50");
RELAY=0; //DAO CHIEU QUAY DONG CO
ipwm1=125;
}
if(PORTA=0x02) // nut CT3 duoc bam
{
delay_ms(20);
lcd_putsf("Fast speed 100");
delay_ms(10);
RELAY=1;
ipwm1=255; //Tang toc DC toi toc do toi da theo chieu thuan
}
if(PORTA=0x01) // nut CT4 duoc bam
{
delay_ms(10);
RELAY=1; //Giam toc DC theo chieu thuan
delay_ms(10);
lcd_putsf("Slow speed 50");
ipwm1=125;
}
if(PORTA=0x08) // nut CT5 duoc bam
{
delay_ms(20);
lcd_putsf("stop");
ipwm1=0;
}
};
}
đây là file mạch nguyên lý và mô phỏng, các bạn giúp mình với. đồ án sắp phải nộp rồi
http://www.mediafire.com/?o6h1cwd4moczswd-------------------------------------------------------------------------------- Xem bài viết cùng chuyên mục:
- viết chương trình hiển thị ra led 7 đoạn từ 0-9.viết cụ thể nha.thank nhiu !
- Các đề tài VDK 8051
- Tập Lệnh 8051
- 89c51 ai biết hướng dẫn dùm
- Tạo mạch chữ chạy
- Đo tốc độ động cơ bằng encoder
- Mạch đo nhiệt độ dùng 8051 hiển thị lên led 7 đoạn
- mạch chỉnh lưu có điều khiển dùng scr
- thiết kế mạch điều khiển nhiệt độ lò ấp trứng
- mạch đồng hồ thới gian thực 8051
- Mạch đếm 74LS192
- Cách viết chương trình cho ic chạy chử
- chế tạo mạch điểu khiển từ xa
- Mạch Đèn Giao Thông Ngã 4 dùng 89c52
- mong được giúp đỡ về led 7 đoạn
-
-
11-05-2012, 19:03 #2
Ðề: Điều khiển tốc độ động cơ Dc , sử dụng PWM of AVR
bị lỗi rồi bạn ơi!
-
11-05-2012, 20:10 #3
Ðề: Điều khiển tốc độ động cơ Dc , sử dụng PWM of AVR
Bạn coi lại, tốt nhất là không nên xài hàm delay() khi không cần thiết, nên dùng timer để định thơì.
a
-
12-05-2012, 01:45 #4
Ðề: Điều khiển tốc độ động cơ Dc , sử dụng PWM of AVR
Timer làm gì cho tốn công à bạn, nếu ko cần quá chính xác thì ta làm cái vòng for cho chạy, có phải đỡ phải tốn 1 cai timer ko
ví dụ với tần số là 8MHz (FRE = 8)
void DELAY_MS(unsigned int n)
{
unsigned int i,j;
n = n*FRE;
for(i=0;i<n;i++)
for(j=0;j<52;j++);
}
ta được hàm trễ milisecond
-
12-05-2012, 08:02 #5
-
13-05-2012, 16:39 #6
Ðề: Điều khiển tốc độ động cơ Dc , sử dụng PWM of AVR
như thế này thì sử dụng luôn cái hàm delay dựng sẵn. vì thực chất hàm delay cũng là do mấy cái hàm này mà ra.
sử dụng hàm delay bằng timer là khi muốn sử dụng 2 công việc một lúc hoạc làm cho bộ nhớ đỡ tốn dung lượng (vì timer hoạt động độc lập với chương trình chính.
VD: khi bạn muốn chương trình chính vẫn chạy mà có 1 con led vẫn chớp theo chu kỳ thì ta phải sử dụng timer chứ không được sử dụng delay.Cao Văn Hưởng
Email: vanhuongcao@gmail.com
-
Những thành viên đã cảm ơn caovanhuong vì bài viết hữu ích:
-
15-05-2012, 01:00 #7
Trả lời với tài khoản Facebook
Các Chủ đề tương tự
-
Trợ giúp - điều khiển động cơ điện một chiều dùng chip vi điều khiển và hiển thị tốc độ trên led 7 thanh
Bởi hồng phượng trong diễn đàn Các vấn đề ĐK chưa phân loạiTrả lời: 5Bài cuối: 05-03-2022, 10:41 -
help điều khiển triac BTA12-600b bắng vi điều khiển
Bởi lamvanmanh trong diễn đàn Điện tử cơ bảnTrả lời: 14Bài cuối: 04-03-2022, 17:57 -
Thảo luận - Nghiên cứu hệ điều khiển tốc độ động cơ không đồng bộ roto lồng sóc bằng phương pháp điều khiển vector tự
Bởi cbva trong diễn đàn GIÚP ĐỠ GIẢI BÀI TẬPTrả lời: 0Bài cuối: 03-06-2014, 00:31 -
Trợ giúp - điều khiển động cơ một chiều thì ta nên dùng mạch cầu H hay điều khiển bằng relay.
Bởi weddien_13 trong diễn đàn Động cơ điệnTrả lời: 4Bài cuối: 19-07-2010, 23:43