Professional Documents
Culture Documents
(123doc) - Do-An-Vi-Xu-Ly-Va-Vi-Dieu-Khien-Thiet-Ke-Bo-Dieu-Khien-Toc-Do-Cua-Dong-Co-Mot-Chieu-Su-Dung-Hop-Ngu-Assembly
(123doc) - Do-An-Vi-Xu-Ly-Va-Vi-Dieu-Khien-Thiet-Ke-Bo-Dieu-Khien-Toc-Do-Cua-Dong-Co-Mot-Chieu-Su-Dung-Hop-Ngu-Assembly
(123doc) - Do-An-Vi-Xu-Ly-Va-Vi-Dieu-Khien-Thiet-Ke-Bo-Dieu-Khien-Toc-Do-Cua-Dong-Co-Mot-Chieu-Su-Dung-Hop-Ngu-Assembly
Đồ án vi xử lý và vi điều khiển
1.1 Mục tiêu và sơ đồ khối của hệ thống dùng vi điều khiển PIC
a. Mục tiêu:
Hiểu được cấu trúc và chức năng của vi điều khiển, cụ thể ở đây là
PIC16f877. Ứng dụng pic16f877 vào thiết kế và xây dựng mô hình điều
khiển tốc độ động cơ DC. Nắm bắt được ưu điểm và nhược điểm của hệ
thống sử dụng PIC so với các hệ thống khác.
Cải thiện, nâng cao kỹ năng sử dụng các phần mềm, kỹ năng viết chương
trình và chế tạo mạch.
b. Sơ đồ khối tổng quát của hệ thống:
Động cơ DC
Encoder
sau đó xử lý tín hiệu và xuất ra xung để điều khiển PWM nhằm tăng hay
giảm tốc độ động cơ.
Thay đổi độ rộng xung PWM để thay đổi điện áp trung bình đặt lên động
cơ DC. Độ rộng xung càng lớn, điện áp đặt lên động cơ càng lớn, tốc độ
động cơ càng nhanh, ngược lại, độ rộng xung càng bé động cơ chạy càng
chậm.
Lúc này Encoder có nhiệm vụ đọc tốc độ của động cơ rồi hồi tiếp lại cho
khối điều khiển. Khối điều khiển xử lý tín hiệu và hiển thị tốc độ trên màn
hình LCD.
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng,
nhưng chúng ta có thể điểm qua một vài nét như sau :
− 8/16 bit CPU, xây dựng theo kiến truc Harvard có sửa đổi Flash và
ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
− Các cổng Xuất/ Nhập (I/ O) (mức logic thường từ 0V đến 5.5V, ứng với
logic 0 và logic 1)
− 8/16 bit Timer
− Các chuẩn giao tiếp nối tiếp đồng bộ/ khung đồng bộ USART
Flash.
− ghi/ xoá với kiểu bộ nhớ EPROM.
− EPROM có thể lưu trữ dữ liệu hơn 40 năm.
− Có thể tự lập trình lại dưới sự điều khiển của phần mềm.
− Mạch lập trình nối tiếp qua 2 chân.
− Nguồn đơn 5V cấp cho mạch lập trình nối tiếp.
− Watchdog Timer (WDT) với bộ dao động RC tích hợp sẵn trên Chip
PIC 16F877A là loại vi điều khiển 8 bit tầm trung của hãng microchip.
− PIC 16F877A có kiến trúc Havard, sử dụng tập lệnh kiểu RISC với
Bộ nhớ RAM của vi điều khiển PIC 16F877A gồm 4 bank nhớ. Nhìn vào
các bank nhớ ta có thể thấy các thanh ghi được đặt tên và các thanh ghi đa
mục đích (General Purpose Register).
− Các thanh ghi được đặt tên là các thanh ghi đặc biệt dùng để điều khiển,
quản lý hoặc thể hiện trạng thái của các khối chức năng trong vi điều khiển
− Các thanh ghi đa mục đích được dùng để đặt biến trong một chương trình
ứng dụng của vi điều khiển. Nhìn vào bản đồ bộ nhớ RAM, ta thấy biến có
thể đặt từ địa chỉ 20F đến 7Fh trong bank nhớ 0, A0h-EFh, 120h-16Fh,
1A0h-1EFh. Trở lại vấn đề về các cổng, tới đây ta có thể đưa ra nhận xét:
Thanh ghi PORTA phản ánh trạng thái của các chân cổng A, nghĩa là muốn
tín hiệu đầu ra của các chân cổng A như thế nào ta chỉ việc đưa giá trị vào
các bit tương ứng 7 trên thanh ghi PORTA. Cũng như khi đọc giá trị của
thanh ghi PORTA ta sẽ biết được trạng thái của các chân cổng A.
Ví dụ: Muốn RA0 ở mức logic 1 (mức 5V), RA1 ở mức logic 0 (mức
0V), RA2 ở mức logic 1, RA3 ở mức logic 0, RA4 ở mức logic 1, RA5 ở
mức logic 1, ta chỉ việc gán giá trị 000110101 cho thanh ghi PORTA.
h) Cài đặt vào/ra cho các chân vào ra số trên các cổng:
Các chân vào/ra số trên vi điều khiển PIC phải được cài đặt là chân
vào hoặc chân ra thì mới hoạt động đúng chức năng. Việc một chân trên
cổng X (X=A,B,..E) được qui định là đầu ra hay đầu vào phụ thuộc vào
bit tương ứng trên thanh ghi TRISX (X=A,B,..E) là 0 hay 1.
b) Encoder
Đo tốc độ động cơ dùng encoder, tín hiệu từ encoder tạo ra các dạng
xung vuông có tần số thay đôi phụ thuộc vào tốc độ động cơ. Do đó các
xung vuông này được đưa vào bộ vi xử lý để đếm số xung trong khoảng
thời gian cho phép từ đó ta có thể tính được giá trị vận tốc của động cơ.
Đây cũng là phương pháp mà người ta sử dụng để ổn định tốc độ động cơ
hay điều khiển nhanh chậm….
Như vậy là encoder sẽ tạo ra các tín hiệu xung vuông và các tín hiệu
xung vuông này được cắt từ ánh sáng xuyên qua lỗ. Nên tần số của xung
đầu ra sẽ phụ thuộc vào tốc độ quay của tấm tròn đó. Môt số Encoder có
2 tín hiệu ra lệch pha nhau 90. Hai tín hiệu này có thể xác định được
chiều quay của động cơ.
CGROM chứa các mẫu kí tự loại 5×7 hoặc 5×10 điểm ảnh ký tự và có
địa chỉ là 8bit.
Mạch điều khiển động cơ DC L298 có khả năng điều khiển 2 động cơ DC,
dòng tối đa 2A mỗi động cơ, mạch tích hợp diod bảo vệ và IC nguồn 7805
giúp cấp nguồn 5V DC cho các modul khác (chỉ sử dụng 5V nếu nguồn cấp
< 12VDC).
Thông số kỹ thuật:
• Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor)
• Công suất tối đa: 25W 1cầu (lưu ý công suất = dòng điện x điện áp nên
áp cấp vào càng cao, dòng càng nhỏ, công suất có định 25W).
Thạch anh điện tử là một linh kiện làm bằng tinh thể đá thạch anh
được mài phẳng và chính xác. Linh kiện thạch anh làm việc dựa trên hiệu
ứng áp điện. Hiệu ứng này có tính thuận nghịch. Khi áp một điện áp vào
2 mặt của thạch anh, nó sẽ bị biến dạng. Ngược lại, khi tạo sức ép vào 2 bề
mặt đó, nó sẽ phát ra điện áp.
Cho ra tần số rất ổn định, sử dụng rất nhiều trong các đồng hồ điện tử
(như đồng hồ đeo tay, đồng hồ để bàn...), trong các thiết bị đo lường điện
tử (tạo xung chuẩn), trong mạch đồng bộ màu của TV, VCR, trong các
thiết bị tin học (máy vi tính, các thiết bị nối với máy vi tính), trong các
nhạc cụ điện tử như Piano điện, organ...
hợp IC7805 nên sẽ cho đầu ra 5V cung cấp nguồn cho vi điều khiển.
− Điện trở cho các nút bấm ta chọn trở có giá trị 4.7k để có dòng đầu
vào là mA < 25mA (dòng vào lớn nhất cho mỗi chân)
− Để có thể đo được tốc độ động cơ ta phải dùng thạch anh 20MHz để
nâng cao tốc độ xử lý của vi điều khiển thì ta mới có kết quả chính xác
− Tra trong datasheet của pic16F877A(tr146) để tăng sự ổn định cho
thạch anh ta sử dụng tụ gốm có giá trị 33pF
− Chọn biến trở vuông có giá trị 1k Ω để điều chỉnh độ tương phản cho
LCD
CHƯƠNG 3: THUYẾT KẾ MẠCH NGUYÊN LÝ
RA3==0 S
(START)
Đ
S
RA3==0
(START)
RB1=1,RB2=0,XUNG=0, CHIEU =
+,
GIE=1,TMR0IE=1,INTE=1
RA0==0 S
(TANG)
Kiểm tra nút giảm
RA0==1 S
(TANG)
CCPR1L=W
Đ
0-W=W S SS
SS CCPR1L+30=
CCPR1L-30=
Kiểmtra
Kiểm tranút CCPR1L
nútSTOP
đảo
GVHD : NGUYỄN QUỐC ĐỊNH SVTH : NGUY ỄN HUY HOÀNG
RB1==1 S RB1=1
RB2=0
RETFIE XUNG=0
GIE=0,TMR0IF=0
TMR0=24
GVHD : NGUYỄN QUỐC ĐỊNH SVTH : NGUY ỄN HUY HOÀNG
#include p16f877a.inc
cblock 0x20
XUNG,VONG1,VONG2,VONG3,CHIEU,CHUC,DONVI,DEM,STATUS_TE
MP,W_TEMP,LAP,
PCLATH_TEMP,FSR_TEMP,HT
ENDC
#define RS PORTC,6
#define E PORTC,7
Org 0x00
goto MAIN
org 0x04
goto NGAT
org0x05
MAIN
BSF STATUS,5
CLRF TRISD
CLRF TRISC
MOVLW 0X06
MOVWF ADCON1
MOVLW D'179'
MOVWF PR2
MOVLW B'00001111'
MOVWF TRISA
BSF TRISB,0
BCF TRISB,1
BCF TRISB,2
BCF TRISB,3
MOVLW B'00000111'
MOVWF OPTION_REG
CALL DELAY
CALL DELAY
MOVLW D'247'
MOVWF TMR0
MOVLW D'100'
MOVWF LAP
; T:THOI GIAN DO
;TIMER0=247,N=256,LAP=100,TL=0.2
MOVLW B'00000110'
MOVWF T2CON
BSF CCP1CON,2
BSF CCP1CON,3
MOVLW D'0'
MOVWF CCPR1L
CLRF XUNG
CALL GHILENH
CALL DELAY
MOVLW 0X0C
CALL GHILENH
CALL DELAY
HIENTHILCD
MOVLW 0X80
CALL GHILENH
MOVLW 'S'
CALL GHIKYTU
MOVLW 'T'
CALL GHIKYTU
MOVLW 'A'
CALL GHIKYTU
MOVLW 'R'
CALL GHIKYTU
MOVLW 'T'
CALL GHIKYTU
CALL GHIKYTU
MOVLW 'V'
CALL GHIKYTU
MOVLW 'D'
CALL GHIKYTU
MOVLW 'K'
CALL GHIKYTU
CALL GHIKYTU
MOVLW 0XC0
CALL GHILENH
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
GOTO START
GHILENH
BCF RS
MOVWF PORTD
BSF E
BCF E
CALL DELAY
RETURN
GHIKYTU
BSF RS
MOVWF PORTD
BSF E
BCF E
CALL DELAY
RETURN
DELAY
nop
nop
movlw d'149'
movwf VONG1
movlw d'3'
movwf VONG2
movlw d'1'
movwf VONG3
decfsz VONG1,f
goto $-1
decfsz VONG2,f
goto $-3
decfsz VONG3,f
goto $-5
return
HIENTHI
MOVLW 0X80
CALL GHILENH
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
MOVLW 'T'
CALL GHIKYTU
MOVLW 'O'
CALL GHIKYTU
MOVLW 'C'
CALL GHIKYTU
CALL GHIKYTU
MOVLW 'D'
CALL GHIKYTU
MOVLW 'O'
CALL GHIKYTU
HTTOCDO
MOVLW 0XC3
CALL GHILENH
MOVF CHIEU,W
CALL GHIKYTU
MOVF CHUC,W
CALL GHIKYTU
MOVF DONVI,W
CALL GHIKYTU
CALL GHIKYTU
MOVLW 'V'
CALL GHIKYTU
MOVLW '/'
CALL GHIKYTU
MOVLW 'S'
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
CALL GHIKYTU
RETURN
CHIA10
CLRF CHUC
CLRF DONVI
MOVF XUNG,W
MOVWF DEM
TRU10
MOVF DEM,W
MOVWF DONVI
MOVLW D'10'
SUBWF DEM,F
BTFSC STATUS,C
GOTO TANGCHUC
MOVLW 0X30
ADDWF CHUC,F
MOVLW 0X30
ADDWF DONVI,F
RETURN
TANGCHUC
INCF CHUC,F
GOTO TRU10
START
BTFSC PORTA,3
GOTO $-1
BTFSS PORTA,3
GOTO $-1
CLRF CCPR1L
CLRF XUNG
BSF PORTB,1
BCF PORTB,2
MOVLW '+'
MOVWF CHIEU
CALL CHIA10
CALL HIENTHI
BSF INTCON,GIE
BSF INTCON,TMR0IE
BSF INTCON,INTE
TANG
BTFSC PORTA,0
GOTO GIAM
BTFSS PORTA,0
GOTO $-1
MOVF CCPR1L,W
SUBLW D'180'
BTFSS STATUS,Z
GOTO $+2
GOTO GIAM
MOVLW D'30'
ADDWF CCPR1L,F
GIAM
BTFSC PORTA,1
GOTO DAO
BTFSS PORTA,1
GOTO $-1
MOVF CCPR1L,W
SUBLW D'0'
BTFSS STATUS,Z
GOTO $+2
GOTO DAO
MOVLW D'30'
SUBWF CCPR1L,F
DAO
BTFSC PORTA,2
GOTO STOP
BTFSS PORTA,2
GOTO $-1
BTFSS PORTB,1
GOTO CHIEUDUONG
CHIEUAM
BCF PORTB,1
BSF PORTB,2
MOVLW '-'
MOVWF CHIEU
GOTO STOP
CHIEUDUONG
BSF PORTB,1
BCF PORTB,2
MOVLW '+'
MOVWF CHIEU
GOTO STOP
STOP
BTFSC PORTA,3
GOTO TANG
BTFSS PORTA,3
GOTO $-1
BCF PORTB,1
BCF PORTB,2
CLRF CCPR1L
BCF INTCON,GIE
BCF INTCON,TMR0IE
BCF INTCON,INTE
GOTO HIENTHILCD
NGAT
;LUU GIA TRI CUA CAC THANH GHI VAO BIEN TAM THOI
MOVWF W_TEMP
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_TEMP
MOVF PCLATH,W
MOVWF PCLATH_TEMP
CLRF PCLATH
MOVF FSR,W
MOVWF FSR_TEMP
BTFSS INTCON,INTF
GOTO CAPNHAT
;--NGAT NGOAI--;
BCF INTCON,7
BCF INTCON,1
INCF XUNG,F
GOTO THOATNGAT
;--NGAT TIMER1--;
CAPNHAT
BCF INTCON,7
BCF INTCON,TMR0IF
DECFSZ LAP,F
GOTO THOATCAPNHAT
MOVF HT,W ; LAY GIA TRI HIEN THI TAI LAN THU 10
SUBLW D'11'
BTFSS STATUS,Z
goto $+4
CALL CHIA10
CALL HTTOCDO
CLRF HT
INCF HT,F
MOVLW D'100'
MOVWF LAP
CLRF XUNG
THOATCAPNHAT
MOVLW D'247'
MOVWF TMR0
THOATNGAT
BSF INTCON,7
MOVF FSR_TEMP,W
MOVWF FSR
MOVF PCLATH_TEMP,W
MOVWF PCLATH
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
RETFIE
END
3.3 Chạy mô phỏng chương trình bằng phần mềm ứng dụng Proteus
a)
b)
c)
Hình 4.3 Mạch sao khi được lắp đặp và hoàn thiện
− Mạch hoạt động tốt và chạy ổn định có thể tăng, giảm, đảo chiều và hiển
thị tốc độ động cơ trên màn hình LCD