Ngày nay việc ứng dụng vi điều khiển, vi xử lý đang ngày càng phát triển rộng rãi và thâm nhập ngày càng nhiều vào các lĩnh vực kỹ thuật và đời sống xã hội.Với xu hướng tất yếu này cùng với sự phát triển mạnh mẽ của công nghệ chế tạo,người ta đã tạo những vi điều khiển có cấu trúc mạnh hơn, đáp ứng thời gian thực tốt hơn, chuẩn hóa hơn so với các vi điều khiển 8 bit trước đây. Với sự phát triển mạnh mẽ của khoa học,đặc biệt là ngành điện, điện tử,sự phát minh ra các linh kiện điện tử đã và đang ngày càng đáp ứng được yêu cầu của các hệ thống.Ưu điểm của việc sử dụng các linh kiện điện tử làm cho các hệ thống linh hoạt và đa dạng hơn,giá thành thấp hơn và độ chính xác cao hơn. Sau thời gian học tập và tìm hiểu,chúng em đã được làm quen với môn học vi xử lý và đo lường hệ thống. Để áp dụng lý thuyết với thực tế của môn học này chúng em nhận bài tập lớn: thiết kế mạch mô phỏng đo và hiển thị tốc độ động cơ( có gắn Encoder 100 xungvòng, khoảngđo 02500vòngphút”. Tuy nhiên do kiến thức còn hạn chế,tài liệu tham khảo có giới hạn nên còn có những sai sót.Chúng em rất mong thầy,cô giáo thông cảm và giúp đỡ chúng em hoàn thiện bài tập lớn này.
Trang 1LỜI MỞ ĐẦU
Ngày nay việc ứng dụng vi điều khiển, vi xử lý đang ngày càng phát triển rộng rãi và thâm nhập ngày càng nhiều vào các lĩnh vực kỹ thuật và đời sống xã hội.Với xu hướng tất yếu này cùng với sự phát triển mạnh mẽ của công nghệ chế tạo,người ta đã tạo những vi điều khiển có cấu trúc mạnh hơn, đáp ứng thời gian thực tốt hơn, chuẩn hóa hơn so với các vi điều khiển 8 bit trước đây
Với sự phát triển mạnh mẽ của khoa học,đặc biệt là ngành điện, điện tử,sự phát minh ra các linh kiện điện tử đã và đang ngày càng đáp ứng được yêu cầu của các hệ thống.Ưu điểm của việc sử dụng các linh kiện điện tử làm cho các hệ thống linh hoạt
và đa dạng hơn,giá thành thấp hơn và độ chính xác cao hơn
Sau thời gian học tập và tìm hiểu,chúng em đã được làm quen với môn học vi
xử lý và đo lường hệ thống Để áp dụng lý thuyết với thực tế của môn học này chúng
em nhận bài tập lớn:'' thiết kế mạch mô phỏng đo và hiển thị tốc độ động cơ( có gắn Encoder 100 xung/vòng, khoảngđo[ 0-2500vòng/phút]”
Tuy nhiên do kiến thức còn hạn chế,tài liệu tham khảo có giới hạn nên còn có những sai sót.Chúng em rất mong thầy,cô giáo thông cảm và giúp đỡ chúng em hoàn thiện bài tập lớn này
Chúng em xin chân thành cảm ơn!
Trang 2MUC LUC
PhầnI Phân tích yêu cầu công nghệ
1.1 Phân tích và giới hạn về đặc điểm thiết bị
1.2 Trình bày về phương pháp đo tốc độ dùng Encoder
Trang 3PHẦN 1: PHÂN TÍCH YÊU CẦU CÔNG NGHỆ
1.1: Phân tích và giới hạn về đặc điểm thiết bị
Hệ thống vi điều khiển 8051 ghép nối 04 LED bảy thanh hiển thị số đo tốc độ động cơ dùng Encoder bao gồm :
• Vi điều khiển 89C51
• Mạch truyền thông chuẩn RS 232 (dùng vi mạch MAX 232)
• 04 LED bảy thanh
• Cảm biến đo tốc độ động cơ Encoder,
• Loa cảnh báo ngưỡng thấp, cao 2 nút ấn RUN, STOP
A, Bộ vi điều khiển 8 bit AT89C51 hoạt động ở tần số 12MHz, với bộ nhớ ROM4kbyte,bộ nhớ RAM 128byte cư trú bên trong và có thể mở rộng bộ nhớ ra ngoài.Ở
bộ vi điều khiển này còn có 4 cổng 8bit (P0,P1,P2,P3) vào/ra 2 chiều để giao tiếp với thiết bị ngoại vi
Hình 1.1.1: Sơ đồ khối AT89C51
-Ngoài ra,nó còn có:
• 2 bộ định thời 16 bit (Time0 và Time1)
• Mạch giao tiếp nối tiếp
• Bộ xử lý bit
• Hệ thống điều khiển và xử lý ngắt
Trang 4• Các kênh điều khiển/ dữ liệu/địa chỉ.
• Các thanh ghi chức năng đặc biệt (SFR)
Sơ đồ chân tín hiệu của AT89C51
Chức năng của các chân tín hiệu như sau:
-P0.0 đến P0.7 là các chân của cổng 0
-P1.0 đến P1.7 là các chân của cổng 1
-P2.0 đến P2.7 là các chân của cổng 2
-P3.0 đến P3.7 là các chân của cổng 3
-RxD:nhận tín hiệu kiểu nối tiếp
-TxD:truyền tín hiệu kiểu nối tiếp
-INT0:ngắt ngoài 0
-INT1:ngắt ngoài 1
-T0: chân vào 0 của bộ Timer/Counter 0
-T1: chân vào1của bộTimer/Counter 1
-Wr: ghi dữ liệu vào bộ nhớ ngoài
-RST:chân vào Reset,tích cực ở mức logic cao trong khoảng 2 chu kỳ máy
-XTAL1:chân vào mạch khuếch đại dao động
-XTAL2:chân ra từ mạch khuếch đại dao động
-PSEN:chân cho phép đọc bộ nhớ chương trình ngoài
-ALE:chân tín hiệu cho phép chốt địa chỉ để truy cập bộ nhớ ngoài,khi On–chip xuất
ra byte thấp của địa chỉ.Nó có thể được dùng cho các bộTimer ngoài hoặc cho mục đích tạo xung Clock
-EA/Vpp: cho phép On–chip truy cập bộ nhớ chương trình ngoài khi EA=0,nếu
EA=1thì On-chip sẽ làm việc với bộ nhớ chương trình nội trú
-VCC :cung cấp nguồn cho On-chip
-GND:nối mát
+Các thanh ghi chức năng đặc biệt khác:
Các thanh ghi chức năng đặc biệt là các thanh ghi đảm nhiệm các chức năng khác nhau trong chíp Chúng nằm ở RAM bên trrong chíp chiếm vùng không gian bộ nhớ 128 bytes được định địa chỉ từ 80 đến Ffh
• Thanh ghi tích lũy (ACC): Đây là thanh ghi quan trọng trong chíp, dùng để lưu trữ các toán hạng và kết quả của phép tính.Thanh ghi ACC dài 8bit,có địa chỉ là E0h trong SFR
• Thanh ghi B: thanh ghi thường sử dụng khi thực hiện các phép toán nhân, chia Đối với các lệnh khác,thanh ghi B có thể xem như là thanh ghi đệm tạm thời Trong SFR thanh ghi B dài 8bits và có địa chỉ là F0h
• Con trỏ ngăn xếp: thanh ghi này dài 8bits,có địa chỉ trong SFR là 81h,giá trị của nó được tăng tự động trước khi thực hiện các lệnh CALL, PUSH Ngăn xếp có thể đặt bất cứ nơi nào trong RAM của chíp,nhưng sau khi khởi động lại ngăn xếp thì con trỏ ngăn xếp mặc định sẽ trỏ tới địa chỉ khởi đầu là 07h,vậy ngăn xếp sẽ được tạo ra bắt đầu từ 08h
• Con trỏ dữ liệu: là thanh ghi dài 16 bits, gồm hai thanh dài 8bits hợp lại là thanh ghi byte cao DPH và thanh ghi byte thấp DPL.Con trỏ dữ liệu có thể sử dụng như là thanh ghi 16bits hoặc hai thanh ghi 8bits độc lập.Trong SFR thanh ghi DPH có địa chỉ là 83h,còn thanh ghi DPLcó địa chỉ là 82h
Trang 5• Thanh ghi PSW: là thanh ghi dài 8bits,có địa chỉ trong SFR là D0h Thanh ghi PSW dùng để chứa thông tin về trạng thái chương trình.Mỗi bit của PSW đảm nhiệm một chức năng cụ thể Thanh ghi này được phép truy cập ở dạng mức bit.
• Thanh ghi PCON: thanh ghi điều khiển nguồn
• Thanh ghi IE: thanh ghi cho phép ngắt
- EA:nếu EA=0 không cho phép bất cứ ngắt nào hoạt động.Nếu EA=1 mỗi nguồn ngắt riêng biệt được phép hoặc không được phép hoạt động bằng cách đặt hoặc xóa bit Enable của nó
- ET2: bit cho phép hoặc không cho phép ngắt bộ Timer2
- ET1: bit cho phép hoặc không cho phép ngắt tràn bộ Timer1
- EX1: bit cho phép hoặc không cho phép ngắt ngoài 1
- EX0: bit cho phép hoặc không cho phép ngắt tràn bộ timer
- EX1: bit cho phép hoặc không cho phép ngắt ngoài 0
• Thanh ghi IP: thanh ghi ưu tiên ngắt
• Thanh ghi TCON: thanh ghi điều khiển trên bộ timer/ Counter
• Thanh ghi TMOD: thanh ghi điều khiển kiểu Timer/ Counter
- GATE: Khi TRx được thiết lập và GATE = 1, bộ Timer/ Counterx hoạt động chỉ khi chân INTx ở mức cao Khi GATE = 0, Timer/ Counterx hoạt động chỉ khi TRx
= 1
- C/T: bit cho phép chịn chức năng là Timer hay Counter
- M0,M1: bit chọn Mode, để xác định trạng thái và kiểu Timer/Counter
• Thanh ghi SCON: là thanh ghi trạng thái và điều khiển cổng nối tiếp
B, Mạch truyền thông chuẩn MAX 232
Theo tiêu chuẩn RS232 quy định mức logic “0” ứng với điện áp +3V đến +12V , mức logic “1” ứng với điện áp -3V đến -12V ,mà vi điều khiển truyền và nhận tín hiệu theo chuẩn TTL/CMOS quy định mưc logic “0” ứng với điện áp 0V, mức logic “1” ứng với 3,3V hay5V
Hình 1.1.2 sơ đồ chân RS232+T1IN, T2IN trên chân số 10 và 11 là chân ngõ vào tín hiệu dạng TTL/CMOS
+T1OUT, T2OUT trên chân số 14 và 7 là chân ngõ ra
Trang 6Tín hiệu RS-232
+R1IN, R2 IN trên chân số 13 và 8 là ngõ vào tín hiệu dạng RS-232
+R1OUT, R2OUT trên chân số 12 và 9 là ngõ ra tín hiệu dạng RS-232
+Vcc, GND chân cấp nguồn cho ic hoạt động
-Cổng com DB9:
Hầu hết các máy tính cá nhân hiện nay đều được trang bị ít nhất là 1 cổng Com hay cổng nối tiếp RS232 Số lượng cổng Com có thể lên tới 4 tùy từng loại main máy tính Khi đó các cổng Com đó được đánh dấu là Com 1, Com 2, Com 3 Trên đó có 2 loại đầu nối được sử dụng cho cổng nối tiếp RS232 loại 9 chân (DB9) hoặc 25 chân
(DB25) Tuy hai loại đầu nối này có cùng song song nhưng hai loại đầu nối này được phân biệt bởi cổng đực (DB9) và cổng cái (DB25)(ít sử dụng)
Hình 1.1.3: sơ đồ chân cổng DB9+ chân 1 : Data Carrier Detect (DCD) : Phát tín hiệu mang dữ liệu
+ chân 2: Receive Data (RxD) : Nhận dữ liệu
+ chân 3 : Transmit Data (TxD) : Truyền dữ liệu
+ chân 4 : Data Termial Ready (DTR) : Đầu cuối dữ liệu sẵn sàng được kích hoạt bởi
bộ phận khi muốn truyền dữ liệu
+ chân 5 : Singal Ground ( SG) : Mass của tín hiệu
+ chân 6 : Data Set Ready (DSR) : Dữ liệu sẵn sàng, được kích hoạt bởi bộ truyền khi
Trang 7Hình 1.1.4: Cấu tạo led 7 thanhLed 7 thanh có cấu tạo gồm 7 led đợn có dạng thanh xếp theo hình trên và có thêm một led đơn hình tròn nhỏ để thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn.
8 led đơn trên led 7 đoạn có Anode(cức +) hoặc Cathode(cực -) được nối chung với nhau vào một điểm, được đưa chân ra ngoài đê kết nối với thanh mạch điện 8 cực còn lại trên mỗi led đơn được đưa thành 8 chân riêng, cũng được đưa ra ngoài để kết nối với mạch điện Nếu led 7 đoạn Anode (cực +) chung, đầu chung này được nối với +Vcc, các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0 Nếu led 7 đoạn có cathode (cực -) chung, đầu chung này được nối xuống Ground (hay mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1
Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòng qua mỗi led đơn trong khoảng 10mA – 20 mA để bảo vệ led.Nếu kết nối với nguồn 5V có thể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều khiển
Trang 8D, Giới thiệu về Encoder
Hình 1.1.5: Cấu tạo Encoder
Nhìn trên hình ta thấy encoder gồm: 1 đĩa tròn có khắc lỗ, 1 Hệ thống LED phát và thu
• Cấu tạo chính của encoder:
-Gồm 1bộ phát ánh sáng (led phát ),một bộ thu ánh sáng nhạy từ ánh sáng của bộ phát (bộ thu thường là photodiotde hoặc phototransistor) 1 hay 2 đĩa quang gắn trên trục quay đặt giữa bộ phát và thu,thông thường trục quay này
sẽ được gắn với trục quay của đối tượng cần đo tốc độ
• Nguyên tắc hoạt động:
-Nguyên lý cơ bản của encoder:đó là một đĩa tròn xoay, quay quanh trục Trên đĩa có các lỗ (rãnh) Người ta dùng một đèn led để chiếu lên mặt đĩa.Khi đĩa quay, chỗ không có lỗ (rãnh),đèn led không chiếu xuyên qua được,chỗ có lỗ
(rãnh),đèn led sẽ chiếu xuyên qua.Khi đó,phía mặt bên kia của đĩa,người ta đặt một con mắt thu.Với các tín hiệu có, hoặc không có ánh sáng chiếu qua, người ta ghi nhận được đèn led có chiếu qua lỗ hay không.Số xung đếm được và tăng lên nó tính bằng số lần ánh sáng bị cắt
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 đó.Ứng dụng của encoder:trong các bài toán đo tốc độ động cơ,trong các máy CNC dùng để xác định khoảng dịch chuyển của 1 đối tượng thông qua đếm số vòng quay của trục
Trang 9Hình 1.1.6: Encoder có lỗ định vịNhư vậy cho dù có lệch xung,mà chúng ta thấy Encoder đi ngang qua lỗ định vị
này,thì chúng ta sẽ biết Encoder đã bị đếm sai ở đâu đó
Tuy nhiên có một vấn đề lớn nữa là,làm sao biết được Encoder đang xoay theo chiều nào.Bởi vì xoay theo chiều nào thì các xung đều giống nhau.Vì vậy,người ta đặt thêm một vòng lỗ ở giữa vòng lỗ thứ nhất và vòng lỗ định vị sao cho lỗ vòng 1 và vòng 2 lệch nhau,các cạnh của lỗ vòng 2 nằm ngay giữa lỗ vòng 1 và ngược lại
Hình 1.1.7: sơ đồ của động cơ Encoder
E, Một số linh kiện khác
Tụ điện
Tụ điện là 1 linh kiện thụ động ,gồm 2 bản cực kim loại ghép cách hau 1 khoảng d,
ở giữa 2 bản tụ là dung dịch hay điện môi cách điện có điện dung C.Tụ cho phép dòng xoay chiều đi qua và cản dòng 1 chiều
Trang 10ρ:điện trở suất của vật liệu(Ωm)
S:tiết diện dây(m^2)
l: chiều dài dây(m)
R:điện trở (Ω)
Trang 11 Điện trở treo
Hình 1.1.10: điện trở treo
Sử dụng điện trở thanh (treo) giúp việc thiết kế mạch dễ dàng hơn,điên trở treo gồm: 8 điện trở cùng giá trị với mỗi đầu điện trở được nối với nhau,đầu chung này được đưa ra ngoài bằng 1 chân nữa,thông thường chân chung này được nối với nguồn Vcc
Điện trở treo có nhiệm vụ tạo điện áp ở từng mức theo yêu cầu,theo giá trị đặt tại các chân của nó
Thạch anh
Hình 1.1.11: Thạch anh dao độngThạch anh dao động có nhiệm vụ tạo ra các xung điều khiển thích hợp phục vụ cho vi điều khiển , thạch anh sử dụng ở đây là loại 12MHz
1.2 Trình bày về phương pháp đo tốc độ động cơ dùng Encoder
Gọi số xung xuất ra từ kênh A (kênh B) trong 1s là: n
Số xung của đĩa encoder là: Ne (khi động cơ quay được 1 vòng thì trên kênh
A hoặc B sẽ xuất ra Ne xung)
-> tốc độ động cơ: v=n/Ne (vòng/giây)
Vậy để đo được tốc độ động cơ, chỉ cần đếm được số xung xuất ra từ 1 trong
2 kênh A và B trong thời gian 1s hay nói cách khác đó chính là tần số của xung
encoder
Thời gian 1s này còn được gọi là thời gian lấy mẫu, tuy nhiên nếu chọn thời gian lấy mẫu quá lớn (1s) sẽ dẫn đến sai số trong việc đếm số xung, làm mất thời gian thực thi của vi điều khiển và làm cho quá trình hiệu chỉnh tốc độ (nếu có)
không được liên tục Vì vậy việc chọn thời gian lấy mẫu rất quan trọng, không được
Trang 12quá lớn và không được quá bé.
- Gọi thời gian lấy mẫu là: Ts
- Gọi số xung encoder xuất ra trong thời gian Ts là ns-> tốc độ động cơ: v=(ns*100)/(Ne*Ts)
Trang 13PHẦN II THIẾT KẾ HỆ THỐNG 2.1 Phân tích giới hạn và tính toán lựa chọn thiết bị
• Kết nối với vi điều khiển
-Ngõ nhận tín hiệu led 7 đoạn có 8 đường vì vậy có thể dùng 1 port nào đó của
vi điều khiển để điều khiển led 7 đoạn.Vì vậy led 7 đoạn nhận một dữ liệu 8 bit
từ vi điều khiển để điều khiển hoạt động sáng tắt của từng led đơn trong nó-Có hai kiểu hiển thị led 7 đoạn:mã dành cho led 7 đoạn có anode (cực +) chung và mã dành cho led 7 đoạn có cathode (cực -) chung.Chẳng hạn,nếu sử dụng anode chung,muốn led đơn nào sáng thì đặt vào chân led đó điện áp la 0V(mức 0) các led đơn còn lại đặt điện áp là 5V(mức 1).Nếu sử dụng cathode chung,muốn led nào sáng thì làm hoàn toàn ngược lại với anode chung
Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có anode chung
Trang 14Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có cathode chung
Số hiển thị trên led
7 đoạn Mã hiển thị led 7 đoạn dạng nhị phân Mã hiển thị led 7 đoạn dạng thập lục
Nút ấn RUN, STOP chọn kiểu tiếp điểm thường mở
Loa cảnh báo ngưỡng cao, thấp: dưới 500v/p và trên 2500v/p
2.2 Xây dựng mạch nguyên lí và thuyết minh
Phím ấn
Gồm nút ấn Start và stop
Hình 2.2.1: nút ấn
Khối hiển thị
Trang 15Hình 2.2.2: khối hiển thịMắc thêm điện trở để hạn chế dòng điện và bảo vệ đèn led
Khối xử lí trung tâm
Để tạo xung nhịp (clock) cho vi điều khiển ta dùng thạch anh 12MHz có giá trị từ 33p
Vì vậy chân RESET được kết như hình vẽ sau với C=10uf,R=10k
Hình 2.2.3: nút ấn RESET
2.3 Xây dựng thuật toán
Trang 18;DINH NGHIA CAC BIEN(gan gia tri cac bien)
XUNG_DU EQU 32H ;So xung du =100 50
DIGIT_3 EQU 35H =53
DIGIT_4 EQU 36H =54
;CHUONG TRINH CHINH
ORG 30H 100 ;Khai bao dia chi bat dau chuong trinh chinhMAIN:
SETB IT1 ;P3.5 = 1 dau vao cua xung dem T1
SETB IT0 ;Dau vao cua xung dem T0(ngat canh xuong)
Trang 19MOV TMOD,#00010110b ;Khoi dong TIMER 1 – Che do 16 BIT
MOV TH0,#-100 ;Nap byte cao cua 100
MOV TL0,#-100 ;Nap byte thap cua 100
;Tao chu ky tran cho C0 = 100 xung/vong
tran(Tcon.7)
SETB EA ;Cho phep ngat toan bo(T/H CT tu bo nho trong)
SUBB A,#16 ;Neu A > 16 A=A-16
JC CONT;Nhay den nhan CONT :nhảy đến CONT nếu c=1 (c)nd của cờ c
BAT_LOA:
CONT:
MOV TH1,#HIGH(-5000) ;Nap byte cao cua -5000
MOV TL1,#LOW(-5000) ;Nap byte thap cua -5000
Trang 20DJNZ R0,QUET_LED ;Nhay den QUET_LED neu R0 khac 0
;(Vong lap neu chua du 1s thi quet led)
CALL CALCULATOR ;Chuong trinh con tinh so V/P
MOV TL0,#-100 ;Nap byte thap cua -100
RETI
QUET_LED:
MOV DPTR,#LED ;Nap dia chi gian tiep tu LED(ram ngoài) vào con
;trỏ DPTR
nho A+DPTR vao A
MOV P0,A ;Di chuyen P0=A
nho A+DPTR vao A
Trang 21nho A+DPTR vao A
nho A+DPTR vao A
MOV A,VONG_GIAY ;Di chuyen DL0 VONG_GIAY vao A
Trang 232.5 Sơ đồ mạch mô phỏng
Trang 24Nguyên lý hoạt động của mạch :
Khi ta ấn nút Start hệ thống sẽ bắt đầu làm việc, động cơ quay, Encoder gắn trên trục của động cơ sẽ cảm biến tốc độ, phát tín hiệu và chuyển tới mạch vi điều khiển Tại đây, tín hiệu sẽ được vi mạch xử lí và biến đổi để hiển thị trên 4 led 7 thanh
Khi ấn nút Stop: hệ thống dừng mọi hoạt động Kết thúc 1 quá trình làm việc của mạch/
Trường hợp khi có sự cố xảy ra ta có thể ấn nút Reset để khôi phục lại trạng thái ban đầu của mạch