TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢIKHOA CƠ KHÍ – BỘ MÔN KỸ THUẬT MÁY ĐỀ TÀI: XỬ LÝ TÍN HIỆU ÂM THANH VỚI VI ĐIỀU KHIỂN PIC.. Nhiệm vụ của vi xử lí là thực hiện cáccông việc xử lý tín h
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA CƠ KHÍ – BỘ MÔN KỸ THUẬT MÁY
ĐỀ TÀI: XỬ LÝ TÍN HIỆU ÂM THANH VỚI VI ĐIỀU KHIỂN PIC.
Giáo viên hướng dẫn: Trịnh Tuấn Dương
Sinh viên thực hiện: Phạm Ngọc Ánh
Trang 2Hà Nội, tháng 4 năm 2014
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Ngày …, tháng …, năm …
GIÁO VIÊN HƯỚNG DẪN
i
Trang 4NHẬN XÉT CỦA GIÁO VIÊN ĐỌC DUYỆT
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Ngày …, tháng …, năm … GIÁO VIÊN ĐỌC DUYỆT
Trang 5LỜI CẢM ƠN
Sau những năm học tại trường, chúng em đã được học và tiếp thu nhiều kiến
thức mới từ sự chỉ bảo tận tình của Quý Thầy Cô và sự giúp đỡ của bạn bè Đây là
khoảng thời gian đầy ý nghĩa Đồ án tốt nghiệp ra trường là nền tảng quan trọng
và đánh dấu một bước ngoặt mới với cuộc đời chúng em.
Em xin gửi lời cảm ơn chân thành đến thầy Trịnh Tuấn Dương Thầy đã hướng
dẫn em thực hiện đồ án tốt nghiệp này.
Em xin chân chân thành cảm ơn Quý Thầy Cô thuộc bộ môn Kỹ Thuật Máy đã
tạo điều kiện để em hoàn thành đồ án này.
Sinh viên thực hiện
Phạm Ngọc Ánh
iii
Trang 6LỜI NÓI ĐẦU
Ngày nay, cùng với sự phát triển không ngừng của khoa học kỹ thuật, nghành kỹ thuật điện tử cũng đã có những bước phát triển không ngừng Chúng đi sâu vào mọi mặt của đời sống hàng ngày của người dân Đặc biệt sử dụng vi điều khiển để điều khiển các ứng dụng trong đời sống cũng như công nghiệp ngày càng phổ biến.
Những kiến thức tiếp thu trong quá trình học tập tại trường sẽ được đánh giá qua đợt bảo vệ đồ án tốt nghiệp này Những kết quả những sản phẩm đạt được ngày hôm nay tuy không lớn lao những cũng là những thành quả bước đầu sau những năm học tại trường.
Do thời gian và kiến thức còn hạn chế, mặc dù đã cố gắng hoàn thành đồ án tốt nghiệp đúng thời han Nên không thể tránh khỏi những thiếu xót nhất định, mong Quý Thầy Cô thông cảm Em rất mong nhận được những ý kiến đóng góp của Thầy Cô và các bạn.
Em xin chân thành cảm ơn Thầy Cô và các bạn!
Trang 7M c l cục lục ục lục
CHƯƠNG 1 GIỚI THIỆU CHUNG 1
1.1 Vi xử lý và vi điều khiển 1
1.2 Vi điều khiển PIC 1
1.3 Khái quát về vi điều khiển PIC16F877A 2
1.4 Sơ đồ chân PIC 16F877A 3
1.5 Một vài thanh ghi có chức năng đặc biệt 9
1.6 Các loại ngắt 15
1.7 Module CCP 15
1.7.1 PWM 17
1.8 Module ADC 18
1.8.1 Các thanh ghi điều khiển cơ bản 19
1.9 Lập trình cho vi điều khiển 22
1.9.1 Giới thiệu CCS 22
1.10 Chỉ thị tiền xử lý 23
1.10.1 #INCLUDE 23
1.10.2 #BIT 23
1.10.3 #BYTE 23
i
Trang 81.10.4 #DEFINE 24
1.10.5 #USE 24
1.11 Các hàm delay: 24
1.11.1 Delay_ms(time) 24
1.11.2 Delay_us(time) 24
1.12 Các hàm về PWM 25
1.12.1 SETUP_CCPX(MODE) 25
1.12.2 Set_CCPx_duty(value) 25
1.13 Các hàm về ADC 25
1.13.1 Setup_ADC(mode) 25
1.13.2 Setup_ADC_ports(value) 25
1.13.3 Set_ADC_channel (channel) 26
1.13.4 Value = read_ADC_(mode) 26
CHƯƠNG 2 CẢM BIẾN ÂM THANH 27
2.1 Khái niệm 27
2.1.1 Cảm biến 27
2.1.2 Âm thanh 27
2.2 Cảm biến âm thanh 27
2.2.1 Nguyên lý hoạt động 27
Trang 92.2.3 Module cảm biến âm thanh 29
CHƯƠNG 3 LÀM VIỆC VỚI CẢM BIẾN ÂM THANH VÀ PIC 16F877A 31 3.1 Sử dụng cảm biến âm thanh đóng mở động cơ 31
3.1.1 Lưu đồ thuật toán 31
3.2 Xử lý tín hiệu âm thanh 35
3.2.1 Cảm biến 35
3.2.2 Bộ khuếch đại 35
3.3 Đọc tín hiệu tương tự 38
3.3.1 Lấy mẫu ADC tín hiệu âm thanh 39
3.4 Điều khiển động cơ dc 41
3.4.1 Điều khiển tốc độ động cơ dc 41
3.4.2 Điều khiển động cơ bằng phương pháp PWM 42
3.4.3 Điều khiển chiều quay của động cơ 42
3.5 Sơ đồ khối chức năng 45
Tài liệu tham khảo 49
iii
Trang 10DANH SÁCH HÌNH VẼ VÀ BẢNG BI
Hình 1 1 Sơ đồ chân của 16F877A 4
Hình 1 2 Chức năng của các cổng PORT A 5
Hình 1 3 Thanh ghi TRIS A 6
Hình 1 4 Chức năng của các cổng PORT B 6
Hình 1 5 Thanh ghi TRIS B 7
Hình 1 6 Chức năng của các chân thuộc PORT C 7
Hình 1 7 Địa chỉ thanh ghi TRIS C 8
Hình 1 8 Chức năng của các cổng PORT D 8
Hình 1 9 Các địa chỉ thanh ghi TRIS D 9
Hình 1 10 Chức năng của các cổng PORT E 9
Hình 1 11 Địa chỉ thanh ghi TRIS E 9
Hình 1 12 Bản đồ cấu trúc dữ liệu của 16F877A 10
Hình 1 13 Thanh ghi STATUS 11
Hình 1 14 Thanh ghi OPTION REG 12
Hình 1 15 Giá trị bộ chia tần 13
Hình 1 16 Thanh ghi INTCON 14
Hình 1 17 Thanh ghi điều khiển module CCP 16
Trang 11Hình 1 18 Tín hiệu đầu ra của chân CCP 18
Hình 1 19 Thanh ghi ADCON0 20
Hình 1 20 Thanh ghi ADCON1 21
Hình 1 21Những lựa chọn cho Bit 6 của thanh ghi ADCON1 22
Hình 1 22 Cấu hình cho các bit 3-0 của ADCON1 22
Y Hình 2 1 Module cảm biến âm thanh sử dụng Microphone 31
Hình 3 1 Điều khiển tắt mở đông cơ 33
Hình 3 2 Mô phỏng điều khiển động cơ DC 34
Hình 3 3 Sơ đồ khối xử lý tín hiệu âm thanh 37
Hình 3 4 Khối khuếch đại 38
Hình 3 5 Mạch khuếch đại chế độ A 38
Hình 3 6 Sơ đồ mạch và dạng tín hiệu vào - ra 39
Hình 3 7 Sơ đồ khối của bộ chuyển đổi ADC 41
Hình 3 8 Mô tả quá trình lẫy mẫu 42
Hình 3 9 Tín hiệu và lấy mẫu tín hiệu 43
Hình 3 10 Sơ đồ khối của L298 45
v
Trang 12Hình 3 11 Sơ đồ chân của L298 46
Hình 3 12 Chế độ hoạt động của L298 47
Hình 3 13 Sơ đồ khối chức năng 48
Hình 3 14 Mạch nguồn 5V 49
Bảng 3 1 Chức năng các chân của L298 47
Trang 13CHƯƠNG 1 GIỚI THIỆU CHUNG
1.1.Vi xử lý và vi điều khiển
Vi xử lý (bộ vi xử lý) là một linh kiện điện tử được chế tạo từ các tranzito thunhỏ tích hợp trên một vi mạch tích hợp đơn Nhiệm vụ của vi xử lí là thực hiện cáccông việc xử lý tín hiệu hoặc điều khiển các thành phần trong hệ thống theochương trình, thuật toán do người dùng đặt ra
Bộ vi xử lý có khả năng vượt trội so với các hệ thống khác về khả năng tínhtoán, xử lý và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệthiệu quả đối với những bài toán hoặc hệ thống lớn Tuy nhiên đối với các ứng dụngnhỏ, đơn giản thì việc ứng dụng vi xử lý là không hợp lý vì giá thành đắt cho một
hệ thống nhỏ
Vì vậy các nhà chế tạo đã tích hợp một chút bộ nhớ và một mạch giao tiếp ngoại
vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller –vi điềukhiển
Như vậy, vi điều khiển (VĐK) là một hệ thống bao gồm một vi xử lý có hiệusuất đủ dùng và giá thành thấp kết hợp với các khối ngoại vi như bộ nhớ, cácmodun vào/ra, các modun biến đổi số sang tương tự và tương tự sang số… Vi điềukhiển thường được dùng để điều khiển các thiết bị điện tử Nó được ứng dụng rộngrãi trong các dụng cụ điện tử ngày nay
1.2.Vi điều khiển PIC
1GVHD: Trịnh Tuấn Dương
Trang 14Ngày nay, trên thị trường có nhiều loại vi điều khiển khác nhau như 8051, PIC,Motorola 68HC, AVR… Trong đề tài này sử dụng vi sử lý PIC vì có những ưuđiểm sau:
VĐK PIC phổ biến ở Việt Nam, giá thành không quá đắt
Có đầy đủ chức năng của một vi điều khiển khi hoạt động độc lập
PIC là VĐK phổ biến ở Việt Nam cũng như trên thế giới Điều này tạothuận lợi trong quá trình tìm hiểu tài liệu và phát triển những ứng dụngcủa PIC
Tính đa dạng và tính năng này vẫn còn được nghiên cứu và phát triển.1.3.Khái quát về vi điều khiển PIC16F877A
PIC 16F877A là dòng PIC phổ biến hiện nay ( có đủ các chức năng, 40 chân, bộnhớ đủ cho hầu hết các ứng dụng thông thường) Cấu trúc tổng quát:
Bộ nhớ chương trình: 16F877A có 8192(8k)
Bộ nhớ dữ liệu: 16F877A có 368 bytes (plus 256 bytes of nonvolatileEEROM)
5 PORT (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập
2 bộ định thời 8bits (timer 0 và timer 2)
Một bộ định thời 8bits (timer 1) có thể hoạt động trong chế độ tiết kiệm nănglượng (SLEEP MODE) với nguồn xung Clock ngoài
2 bộ CCP (Capture/Compare/PWM)
Một bộ biến đổi AD 10bits, 8 ngõ vào
2 bộ so sánh tương tự (Compartor)
Một bộ định thời giám sát (WatchDog Timer)
Một cổng song song 8bits với các tín hiệu điều khiển
Trang 15 Một cổng nối tiếp.
15 nguồn ngắt
Có chế độ tiết kiệm năng lượng
Nạp chương trình bằng cổng nối tiếp ICSP (In-Circuit Sircuit Programming)
Được chế tạo bằng công nghệ CMOS
35 tập lệnh có độ dài 14 bits
Tần số hoạt động tối đa là 20MHz
1.4.SƠ ĐỒ CHÂN CỦA 16F877A
PIC16F877A là họ vi điều khiển có 40 chân, mỗi chan có một chức năng khácnhau Trong đó có một số chân đa công dụng: mỗi chân có thể hoạt động như mộtđường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với cácthiết bị ngoại vi
3GVHD: Trịnh Tuấn Dương
Trang 16Hình 1 1Sơ đồ chân của 16F877A
• Chân cấp nguồn: như trên hình 2.1 ta thấy 16F877A có 4 chân dùng để cấp nguồn:
Chân dao động: chân 13 (OSC1) và chân 14 (OSC2) là 2 chân dao động,
tốc độ dao động được xác định thông qua tần số dao động của bộ tạo daođộng
I/O PORT:
Trang 17 PORT A và thanh ghi TRIS A: gồm 6 chân từ RA0-RA5, cổng A
có 6 bit thực hiện chức năng vào và ra theo hai chiều (hình 2.2),
việc xác định hướng xuất nhập được thực hiện thông qua thanh ghi
TRIS A Chân 6 (RA4/TOCKI) là chân đa mục đích với việc vừa
là chân xuất nhập dữ liệu vừa là đầu vào của bộ đếm TIMER0 Các
chân khác trong PORT A còn là đầu vào của tín hiệu tương tự trong bộ chuyển đổi ADC Sự hoạt động của các chân trong chế độ này là việc điều khiển thích hợp các bit trong thanh ghi ADCON1
và CMCON (hình 2.3)
Hình 1 2 Chức năng của các cổng PORT A
5GVHD: Trịnh Tuấn Dương
Trang 18Hình 1 3 Thanh ghi TRIS A
PORT B và thanh ghi TRIS B: gồm 8 chân từ RB0-RB7, cổng B có 8 bit
xuất nhập theo 2 chiều, việc chọn chức năng xuất nhập được điều khiển
thông qua thanh ghi TRIS B cũng tương tự như với PORT A
Hình 1 4 Chức năng của các cổng PORT B
Trang 19Hình 1 5 Thanh ghi TRIS B
PORT C và thanh ghi TRIS C: PORT C gồm có 8 chân từ RC0-RC7, có
tất cả 8 chân đa mục đích với các chức năng như: xuất nhập dữ liệu, đặc biết
có chân 18(SCL) và 23(SDA) là hai chân thực hiện chức năng giao tiếp với ngoại vi thông qua chuẩn I2C Thanh ghi TRIS C cũng tương tự như các
thanh ghi trên, nó có nhiệm vụ định nghĩa các chân tương ứng là cổng ra hayvào
7GVHD: Trịnh Tuấn Dương
Trang 20Hình 1 6 Chức năng của các chân thuộc PORT C
Hình 1 7 Địa chỉ thanh ghi TRIS C
PORT D và thanh ghi TRIS D, PORT E và thanh ghi TRIS E: hai PORT
này đều có tám chân đa mục đích nhưng chủ yếu vẫn là để xuất nhập
Trang 21Hình 1 8 Chức năng của các cổng PORT D
Hình 1 9 Các địa chỉ thanh ghi TRIS D
9GVHD: Trịnh Tuấn Dương
Trang 22Hình 1 10 Chức năng của các cổng PORT E
Hình 1 11 Địa chỉ thanh ghi TRIS E
1.5.một vài thanh ghi có chức năng đặc biệt
Bộ nhớ dữ liệu có 4 Bank: Bank 0, Bank 1, Bank 2, Bank 3 Mỗi thanh có dunglượng 128 Bytes, bao gồm vùng Ram đa mục đích (GPR) và vùng thanh ghi chứcnăng đặc biệt (SFR)
Các Bank này được lựa chọn bằng 2 bit ở thanh ghi STATUS là PR0 (status
<5>) và RP1 (status<6>)
Trang 23Hình 1 12 Bản đồ cấu trúc dữ liệu của 16F877A
• Thanh ghi STATUS:
Hình 1 13 Thanh ghi STATUS
Bit 7 IRP: Bit lựa chọn bank thanh ghi (sử dụng cho định địa chỉ gián tiếp)
11GVHD: Trịnh Tuấn Dương
Trang 24Bit 4: Bit báo hiệu hoạt động của WDT
1: Xóa WDT hoặc Sleep xảy ra
0: WDT hoạt động
Bit 3: Bit báo công suất thấp (Power down bit)
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT
0: Thực hiện lệnh Sleep
Bit 2: Bit Zero
1: Khi kết quả của một phép toán bằng 0
0: Khi kết quả của một phép toán khác 0
Bit 1: DC (Digit Carry)
Trang 251: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit thấp.0: Không có số nhớ sinh ra.
Bit 0 C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ
0: Không có số nhớ sinh ra
• Thanh ghi OPTION REG:
Hình 1 14 Thanh ghi OPTION REG
Bit 7: Bit cho phép PORT B được kéo lên nguồn
1: Không cho phép PORT kéo lên nguồn
0: Cho phép PORT kéo lên nguồn
Bit 6: Bit lựa chọn cạnh tác động ngắt (INTERRUT EDGE)
1: Ngắt sẽ được tác dộng bởi cạnh lên của chân RB0/INT
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT
Bit 5: Bit lựa chọn nguồn xung Clock cho Timer 0
1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI
13GVHD: Trịnh Tuấn Dương
Trang 260: Xung Clock cung cấp bởi nguồn dao động nội.
Bit 4: Bit lựa chọn cạnh nào của xung Clock tác động lên Timer 0
Trang 27Bit 7: Bit cho phép ngắt toàn cục:
1: Cho phép ngắt toàn cục
0: Không cho phép ngắt
Bit 6: Bit cho phép ngắt khi vào EEEPROM hoàn tất
1: Cho phép ngắt khi vào EEPROM hoạt động
0: Không cho phép ngắt khi vào EEPROM hoạt động.Bit 5: Bit cho phép ngắt khi Timer 0 tràn:
1: Cho phép ngắt khi Timer 0 tràn
0: Không cho phép ngắt khi Timer 0 tràn
Bit 4: Bit cho phép ngắt ngoại vi trên chân RB0/INT:
1: Cho phép ngắt ngoại vi
0: Không cho phép ngắt ngoại vi
Bit 3: Cho phép ngắt khi trạng thái PORT B thay đổi:
Trang 28Một số ngắt của PIC 16F877A:
Ngắt tràn Timer 0
Ngắt do chuyển đổi ADC đã hoàn tất
Ngắt tràn Timer 1
Ngắt tràn Timer 2
Ngắt di cí capture hay compare trên chân CCP1, CPP2
Ngắt xung dội bus
1.7.module CCP
Trang 29Module CCP được xây dựng để hỗ trợ cho việc đo lường và điều khiển thời gianhoạt động của các tín hiệu, đo chu kỳ hoạt động của tín hiệu, tạo ra tín hiệu có tần
số khác nhua, điều khiển tốc độ động cơ …
PIC 16F877A có 2 module là CCP1 và CCP2:
Hình 1 17 Thanh ghi điều khiển module CCP
0100: Chế đội Capture hoạt động ở mỗi xung cạnh xuống
0101: Chế độ Capture hoạt động ở mỗi xung cạnh lên
0110: Chế độ Capture, hoạt động ở mỗi 4 xung cạnh lên
0111: Chế độ Capture, hoạt động ở mỗi 16 xung cạnh lên
17GVHD: Trịnh Tuấn Dương
Trang 301000: Chế độ Compare, ban đầu ngõ ra CCP ở mức thấp, khi điều kiện cânbằng xuất hiện nó lên mức cao ( cờ CCPIF được set).
1001: Chế độ Compare, ban đầu ngõ ra CCP ở mức cao, khi điều kiện cânbằng xuất hiện nó hạ xuống mức thấp (cờ CCPIF được set)
1010: Chế độ Compare, tạo ra một ngắt phần mềm khi điều kiện cân bằngxuất hiện (cờ CCPIF được set, chân CCP không đổi)
1011: Chế độ Compare, sự đặc biệt xảy ra (cờ CCPIF được set, chân CCPkhông đổi), CCP1 reset TMR1, CCP2 reset TMR2, bắt đầu chuyển đổi A/D (với điều kiện module ADC cho phép)
Một số khái niệm:
Trang 31 Chu kỳ xung là khoảng thời gian để giá trị thanh ghi TMR2 tăngđến giá trị thanh ghi PR2.
Khoảng xung dương là khoảng thời gian đề thanh ghi TMR2 tăng
lên đến giá trị thanh ghi CCPRx (xem hình 2.18)
Hình 1 18 Tín hiệu đầu ra của chân CCP
Chu kỳ PWM được chỉ định trong thanh ghi PR2 Chu kỳ có thể được tính bằngcông thức
Chu kỳ PWM = [(PR2+1)*4*Tosc*giá trị tỉ lệ Timer 2]
Tần số PWM = 1/(chu kỳ PWM)
Khi giá trị thanh ghi TMR2 và PR2 bằng nhau thì thanh ghi TMR2 bị xóa, chânCCPx được đưa lên mức 1, giá trị Duty cycle từ thanh ghi CCPRxL sẽ chuyển sangthanh ghi CCPRxH
1.8 module ADC
Module ADC là module duy nhất có khả năng hoạt động trong chế độ sleep.16F877A có bộ biến đổi ADC 10 bit, 8 ngõ vào Analog, 8 ngõ vào này được nốivới ngõ vào của bộ chuyển đổi Sau đó, bộ chuyển đổi sẽ tạo ra một kết quả 10 bit
19GVHD: Trịnh Tuấn Dương
Trang 32tương ứng với giá trị đưa vào Điện thế tham chiếu đầu vào sẽ được lựa chọn bằngphần mềm (từ Vdd, Vss hoặc 2 chân AN2, AN3)
Module ADC gồm 4 thanh ghi:
Thanh ghi chứa byte cao của kết quả ADRESH.
Thanh ghi chứa byte thấp của kết quả ADRESL.
Thanh ghi chứa các bit điều khiển ADCON0.
Thanh ghi chứa các bit điều khiển ADCON1.
1.8.1 Các thanh ghi điều khiển cơ bản
Thanh ghi ADCON0:
Hình 1 19 Thanh ghi ADCON0 Bit 7,6: Các bit lựa chọn tần số chuyển đổi A/D