Giáo trình Vi điều khiển AVR (Thực hành trên KIT AVR DKS 03)

MỤC LỤC

Bài 1: Điều khiển IO (vào ra) led đơn 4

1.Kíến trúc về vi điều khiển 4

2. Giới thiệu vi điều khiển Atmega16L 4

2.1.Mô tả các chân: 4

3. Phần mềm lập trình codevision(Hitech): 6

3.1.Mô tả phần cứng trên KIT AVR 03: 6

3.2.Lập trình: 7

Bài 2.Điều khiển với led 7 đoạn 18

1.Yêu cầu 18

2.Mổ tả 18

3.Thực hành 18

Bài 3.Điều khiển IO với LCD 23

1.Yêu cầu 23

2.Lý thuyết 23

3.Mô tả 23

4.Thực hành 24

Bài 4.ADC với LM35 27

1.Yêu cầu 27

2.Lý thuyết 27

3.Mô tả 28

4.Thực hành 28

Bài 5.Giao tiếp I2C với DS1307 32

1.Yêu cầu 32

2.Mô tả 32

3.Thực hành 32

Bài 6.Truyền thông RS-232 với Visual Basic 38

1.Yêu cầu 38DKS_GROUP Microcontroller Training Center

DKS Group 3 www.EmbestDKS.com

2.Mô tả 38

3.Thực hành 40

4.Visual Basic 42

Bài 7.Đo lường sử dụng máy tính 54

1.Yêu cầu 54

2.Mô tả 54

3.Thực hành 54

Bài 8.Điều khiển Step motor 59

1.Yêu cầu 59

2.Lý thuyết 59

2.1.Giới thiệu động cơ bước 59

2.2.Hệ thống điều khiển động cơ bước 59

3.Nguyên lý điều khiển động cơ đơn cực 61

4.Mạch điều khiển động cơ bước 62

pdf67 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 594 | Lượt tải: 1download
Tóm tắt nội dung Giáo trình Vi điều khiển AVR (Thực hành trên KIT AVR DKS 03), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
m một biến temp nên dĩ nhiên các bạn phải 
khai báo thêm biến đó ở phía ngoài hàm main. 
Nạp chương trình vào chip AVR 
Kết nối dây cổng Com từ KIT và cổng Com máy tính và test kết quả. 
 56
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com
Đo ADC từ biến trở và LM35. 
Trên VB tạo ra một giao diện phần mềm như sau: 
Form gồm có: 
 4 label để hiển thị như hình. 
 2 text box để hiển thị dữ liệu. 
 2 button: Thu du lieu và Thoat khỏi phần mềm. 
Code trên VB như sau: 
Private Sub Command1_Click() 
If MSComm1.Input = "" Then 
Exit Sub 
Else 
Text1.Text = Asc(MSComm1.Input) 
Text2.Text = Asc(MSComm1.Input) 
End If 
End Sub 
Private Sub Command2_Click() 
MSComm1.PortOpen = False 
 57
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com
End 
End Sub 
Private Sub Form_Load() 
MSComm1.CommPort = 1 
MSComm1.Settings = "9600,n,8,1" 
MSComm1.PortOpen = True 
End Sub 
Firm Ware: 
 Khởi tạo bằng CodeWinzard AVR cho cổng nối tiếp USART hoạt 
động, cho phép ADC hoạt động(interrupt) như các bài trước sau đó viết code 
cho hàm main như sau: 
Dịch nạp chương trình và test 
. 
 58
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com
1.Yêu cầu : 
Hiểu nguyên lí điều khiển động cơ bước đơn cực. 
Điều khiển được bằng AVR. 
2.Lý thuyết: 
 2.1.Giới thiệu về động cơ bước: 
 Động cơ bước thực chất là một động cơ đồng bộ dùng để biến đổi các 
tín hiệu điều khiển dưới dạng các xung điện rời rạc kế tiếp nhau thành các 
chuyển động góc quay hoặc các chuyển động của roto và có khả năng cố 
định roto vào những vị trí cần thiết. Động cơ bước làm việc được là nhờ có 
bộ chuyển mạch điện tử đưa các tín hiệu điều khiển vào stato theo một thứ 
tự và một tần số nhất định. Tổng số góc quay của roto tương ứng với số lần 
chuyển mạch, cũng như chiều quay và tốc độ quay của roto, phụ thuộc vào 
thứ tự chuyển đổi và tần số chuyển đổi. Khi một xung điện áp đặt vào cuộn 
dây stato (phần ứng) của động cơ bước thì roto (phần cảm) của động cơ sẽ 
quay đi một góc nhất định, góc ấy là một bước quay của động cơ. Khi các 
xung điện áp đặt vào các cuộn dây phần ứng thay đổi liên tục thì roto sẽ 
quay liên tục. (Nhưng thực chất chuyển động đó vẫn là theo các bước rời 
rạc). 
2.2.Hệ thống điều khiển động cơ bước. 
 Một hệ thống có sử dụng động cơ bước có thể được khái quát theo sơ 
đồ sau. 
 59
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com 60
.C.SUPPLY: Có nhiệm vụ cung cấp nguồn một chiều cho hệ thống. 
guồn một chiều này có thể lấy từ pin nếu động cơ có công suất nhỏ. Với 
ác động cơ có công suất lớn có thể dùng nguồn điện được chỉnh lưu từ 
guồn xoay chiều. 
ONTROL LOGIC: Đây là khối điều khiển logic. Có nhiệm vụ tạo ra tín 
iệu điều khiển động cơ. Khối logic này có thể là một nguồn xung, hoặc có 
ể là một hệ thống mạch điện tử. Nó tạo ra các xung điều khiển. Động cơ 
bước có thể điều khiển theo cả bước h c theo nửa bước. 
OWER DRIVER: Có nhiệm vụ cấp nguồn điện đã được điều chỉnh để 
ưa vào động cơ. Nó lấy điện từ nguồn cung cấp và xung điều khiển từ khối 
iều khiển để tạo ra dòng điện cấp cho động cơ hoạt động. 
TEPPER MOTOR: Động cơ bước. Các thông số của động cơ gồm có: 
ước góc, sai số bước góc, mômen kéo, mômen hãm, mômen làm việc. 
Đối với hệ điều khiển động cơ bước, ta thấy đó là một hệ thống khá 
ơn giản vì không hề có phần tử phản hồi. Điều này có được vì động cơ 
ước trong quá trình hoạt động không gây ra sai số tích lũy, sai số của động 
D
N
c
n
C
h
th
oặ
P
đ
đ
S
B
đ
b
cơ do sai số trong khi chế tạo. Việc sử dụng động cơ bước tuy đem lai độ 
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com 61
 bước góc đang ngày càng được cải thiện. 
. 
chính xác chưa cao nhưng ngày càng được sử dụng phổ biến. Vì công suất 
và độ chính xác của
 Bước góc của động cơ bước được chế tạo theo bảng tiêu chuẩn sau: 
3.Nguyên tăc điều khiển động cơ bước đơn cực: 
Động cơ bước đơn cực, ( có thể là động cơ vĩnh cửu hoặc động cơ hỗn 
hợp ) có 5,6 hoặc 8 dây ra thường được quấn như sơ đồ dưới. Khi dùng, các 
đầu nối trung tâm thường được nối vào cực dương nguồn cấp, và hai đầu 
còn lại của mỗi mấu lần lượt nối đất để đảo chiều từ trường tạo bởi quận đó
Hình 1-5 : Động cơ đơn cực. 
Tín hi
 Winding 1a 1100110011001100110011001 
 Winding 1b 0011001100110011001100110 
 Winding 2a 0110011001100110011001100 
 Winding 2b 1001100110011001100110011 
ệu điều khiển. Điều khiển đủ bước (full step) : 
 Winding 1a 1000100010001000100010001 
 Winding 1b 0010001000100010001000100 
 Winding 2a 0100010001000100010001000 
 Winding 2b 0001000100010001000100010 
 time ---> 
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com 62
 time ---> 
Điều khiển nửa bước ( half step ) 
 Winding 1a 11000001110000011100000111 
 Winding 1b 00011100000111000001110000 
 Winding 2a 01110000011100000111000001 
 Winding 2b 00000111000001110000011100 
 time ---> 
4.Mạch điều khiển đ
 năng sau đây: 
. 
ứ tự kích từ. 
 dao động cơ học. 
ng. Thành phần của mạch là các bán 
động cơ bước theo thứ tự 1-2-3-4 do 
ất T1 đến T4 thực hiện.Với việc thay đổi vị trí bộ 
 theo chiều kim đồng hồ hoặc ngược lại. 
ộng cơ bước: 
Mạch điều khiển động cơ bước bao gồm một số chức
Tạo các xung với những tần số khác nhau
Chuyển đổi các phần cho phù hợp với th
Làm giảm các
Đầu vào của mạch điều khiển là các xu
dẫn, vi mạch. Kích thích các phần của 
các transistor công su
chuyển mạch, động cơ có thể quay
Điện áp được cấp qua các khoá chuyển để nuôi các cuộn dây, tạo ra từ 
trường làm quay rotor. Các khoá ở đây không cụ thể, có thể là bất cứ thiết bị 
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com 63
y 
tính. Với động cơ nhỏ có dòng cỡ 500 mili Ampe, có thể dùng IC loại dãy 
darlington collector hở như : 
ULN2003, ULN2803 ( Allegro Microsystem) 
DS2003 (National Semiconductor), MC1413 ( Motorola) 
hù hợp TTL, các đầu emitor được nối với chân 
i diode. Một mắc giữa emitor 
iode thứ hai nối 
collector với chân 9. Nếu chân 9 nối với cực dương của cuộn dây, tạo thành 
mạch bảo vệ cho transitor. 
Với các động cơ lớn có dòng > 0.5A các IC họ ULN không đáp ứng 
được ta có thể dùng các Tranzitor trường(IRF).Một số loại IRF thông dụng: 
IRF540 tranzitor ngược có thể chịu dòng đến 20A 
IRF640 tranzitor ngược có thể chịu dòng đến 18A 
đóng cắt nào điều khiển được như rơle, transitor công suất... Tín hiệu điều 
khiển có thể được đưa ra từ bộ điều khiển như vi mạch chuyên dụng, má
IC họ ULN200x có đầu vào p
8. Mỗi transitor darlington được bảo vệ bởi ha
tới collector chặn điện áp ngược lớn đặt lên transitor. D
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com 64
IRF250 tranzitor ngược có thể chịu dòng đến 30A . 
Sơ đồ mạch được thiết kế như sau: 
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com 65
5.Code : 
#include 
#include 
// Khai bao bien 
unsigned char stepA[] = {0xFF,0xFE,0xFD,0xFB,0xF7}, 
 stepB[] = {0xFF,0xEF,0xDF,0xBF,0x7F}, 
 stepC[] = {0xFF,0xEF,0xDF,0xBF,0x7F}; 
unsigned char indexA, indexB, indexC; 
unsigned char n_data; 
unsigned char n_step=10; 
unsigned int n_step3=5000,n_i; 
//------------------- 
// 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=0xFF; 
DDRA=0xFF; 
// 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=0xFF; 
DDRB=0xFF; 
// Port C 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 
PORTC=0xFF; 
DDRC=0xFF; 
// Port D initialization 
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
State6=T State5=T State4=T State3=T State2=T State1=T State0=T // State7=T 
PORTD=0xFF; 
DDRD=0xFF; 
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com 66
 initialization 
ystem Clock 
lock value: Timer 1 Stopped 
. 
ow Interrupt: Off 
 Interrupt: Off 
 Compare A Match Interrupt: Off 
terrupt: Off 
; 
R1H=0x00; 
; 
alization 
 top=FFh 
isconnected 
SSR=0x00; 
zation 
// Timer/Counter 0
// 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: S
// C
// Mode: Normal top=FFFFh 
// OC1A output: Discon. 
// OC1B output: Discon
// Noise Canceler: Off 
// Input Capture on Falling Edge 
// Timer 1 Overfl
// Input Capture
//
// Compare B Match In
TCCR1A=0x00; 
TCCR1B=0x00; 
TCNT1H=0x00;
TCNT1L=0x00
IC
ICR1L=0x00; 
OCR1AH=0x00; 
OCR1AL=0x00; 
OCR1BH=0x00;
OCR1BL=0x00
// Timer/Counter 2 initi
// Clock source: System Clock 
// Clock value: Timer 2 Stopped 
// Mode: Normal
// OC2 output: D
A
TCCR2=0x00; 
TCNT2=0x00; 
OCR2=0x00; 
// External Interrupt(s) initiali
DKS_GROUP Microcontroller Training Center 
DKS Group www.EmbestDKS.com 67
CUCR=0x00; 
) initialization 
ialization 
Off 
er/Counter 1: Off 
ode here 
>3) indexA = 1; 
>3) indexB = 1; 
++>3) indexC = 1; 
 stepA[indexA] & stepB[indexB]; 
pC[indexC]; 
); 
// INT0: Off 
// INT1: Off 
// INT2: Off 
M
MCUCSR=0x00; 
// Timer(s)/Counter(s) Interrupt(s
TIMSK=0x00; 
// Analog Comparator init
// Analog Comparator: 
// Analog Comparator Input Capture by Tim
ACSR=0x80; 
SFIOR=0x00; 
while (1) 
 { 
 // Place your c
 if(indexA ++
 if(indexB ++
 if(indexC 
 PORTA =
 PORTC = ste
 //------- 
 delay_ms(500
 }} 

File đính kèm:

  • pdfgiao_trinh_vi_dieu_khien_avr_thuc_hanh_tren_kit_avr_dks_03.pdf