ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Chương 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI 1.1. Giới thiệu chung về Oscilloscope
Hình vẽ 1.1: Máy hiển thị sóng Oscilloscope Máy Hiện sóng “oscilloscope” là một thiết bị hiển thị đồ thị - nó vẽ ra đồ thị của một tín hiệu điện. Trong hầu hết các ứng dụng, đồ thị chỉ ra tín hiệu thay đối thế nào theo thời gian: Trục dọc (Y) biểu diễn điện áp và trục ngang (X) biểu diễn thời gian. Cường độ hay độ sáng của sự hiển thị đôi khi được gọi là trục Z. Đây là đồ thị đơn giản có thể chỉ ra cho ta nhiều điều về một tín hiệu. Sau đây là một số công năng: -
Nhận dạng tín hiệu (Xung vuông, răng cưa, hình sin, tín hiệu hình, tín hiệu tiếng…)
-
Xác định rõ các giá trị thời gian và mức điện áp và đường đi của một tín hiệu
-
Tính toán được tần số của một tín hiệu dao động
-
Nhận thấy “các phần động” của một mạch điện được biểu diễn bởi tín hiệu
-
Chỉ ra nếu một thành phần lỗi làm méo dạng tín hiệu
-
Tìm ra tín hiệu như thế nào là dòng một chiều hay dòng xoay chiều
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 1
ĐỒ ÁN TỐT NGHIỆP -
GVHD: TS. Nguyễn Văn Minh Trí
Chỉ ra tín hiệu như thế nào là nhiễu và nếu có thì nhiễu thay đổi thế nào theo thời gian...
Hình vẽ 1.2: Dạng đồ thị trên Oscilloscope Máy oscilloscope trông rất giống với một cái tivi nhỏ, nó có một mạng lưới được vẽ trên màn hình và có nhiều núm điều khiển hơn tivi. Mặt trước của một oscilloscope thường có các phần điều khiển được chia thành các phần Dọc, Ngang và Trigger. Có các điều khiển hiển thị và các đầu nối đầu vào. 1.2. Chức năng của Oscilloscope Sự hữu ích của một máy oscilloscope không bị giới hạn chỉ trong thế giới của các thiết bị điện tử. Với một bộ chuyển đổi thích hợp, một máy oscilloscope có thể đo đạc được tất cả các kiểu hiện tượng. Một bộ chuyển đổi là một thiết bị mà tạo ra tín hiệu điện đáp ứng lại các kích thích vật lí, ví dụ như âm thanh, áp lực cơ khí, áp suất, ánh sáng hoặc nhiệt độ. Ví dụ như, một microphone là một bộ chuyển đổi... Một kỹ sư ô tô có thể dùng máy oscilloscope để đo đạc sự rung của động cơ. Một nghiên cứu sinh y khoa có thể dùng máy oscilloscope để đo đạc các sóng não. Các khả năng là vô tận! 1.3. Oscilloscope số và tương tự SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 2
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình vẽ 1.3: Oscilloscope số và tương tự Thiết bị điện tử có thể được chia làm 2 loại: tương tự và số. Thiết bị tương tự làm việc với các điện áp biến đổi liên tục, trong khi thiết bị số làm việc với các số nhị phân rời rạc mà có thể biểu diễn các mẫu điện áp. Lấy ví dụ, máy quay đĩa thông thường là thiết bị tương tự, còn máy chơi đĩa compact là một thiết bị số. Các máy oscilloscope cũng có các loại tương tự và loại số. Máy oscilloscope tương tự là việc trực tiếp với điện áp đặt vào được đo để di chuyển dòng electron ngang qua màn hình máy oscilloscope Trái lại, máy oscilloscope số lấy mẫu dạng sóng và dùng một bộ chuyển đổi tương tự/số (A/D) để chuyển đổi điện áp được đo thành thông tin số. Sau đó, nó dùng thông tin số này để tái cấu trúc lại dạng sóng trên màn hình Đối với nhiều ứng dụng, hoặc là máy oscilloscope số hoặc là máy oscilloscope tương tự sẽ được dùng. Tuy nhiên, mỗi loại máy có một số đặc tính riêng làm cho nó thích hợp hơn hoặc kém thích hợp hơn trong các tác vụ riêng.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 3
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Người ta thường thích các máy oscilloscope tương tự hơn vì nó quan trọng để hiển thị nhanh chóng các tín hiệu đang thay đổi trong thời gian thực (hay như là chúng đang diễn ra) Các máy oscilloscope số cho phép bạn ghi lại và xem các sự kiện mà chúng có thể chỉ diễn ra duy nhất 1 lần. Chúng có thể xử lý dữ liệu dạng sóng số và gửi các dữ liệu đó tới máy tính để xử lý. Như vậy, chúng có thể lưu trữ dữ liệu dạng sóng số để xem và in ra sau đó. 1.4. Oscilloscope tương tự Khi bạn nối đầu dò của máy oscilloscope vào mạch điện, tín hiệu điện áp đi qua đầu dò tới hệ thống dọc của máy oscilloscope. Tùy thuộc vào bạn thiết đặt chia thang đo dọc (điều khiển volts/div) như thế nào thì bộ suy hao làm giảm điện áp tín hiệu hoặc là bộ khuếch đại làm tăng điện áp tín hiệu điện áp đặt vào các bản lái tia làm cho một điểm sáng di chuyển. (môt dòng electron đập vào lớp phosphor bên trong CRT tạo ra điểm sáng). Điện áp dương làm cho điểm sáng đi lên trong khi điện áp âm làm cho điểm sáng đi xuống. Tín hiệu cũng đồng thời đi tới hệ thống trigger để khởi động hay kích một “quét ngang”. Quét ngang là một thuật ngữ chỉ việc hệ thống ngang làm cho điểm sáng di chuyển ngang trên màn hình. Việc kích hệ thống ngang gây ra thời gian cơ bản để di chuyển điếm sang ngang trên màn hình từ trái sang phải trong một khoảng thời gian xác định. Nhiều lần quét thành các dãy nhanh làm cho chuyển động của điểm sáng được hợp thành một đường liền nét. Ở các tốc độ cao hơn, điểm sáng có thể quét ngang màn hình lên tới 500,000 lần mỗi giây.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 4
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình vẽ 1.4: Oscilloscope tương tự Cùng với nhau, việc quét ngang và việc lái dọc vạch ra một đồ thị tín hiệu trên màng hình. Bộ kích khởi là cần thiết để ổn định hóa tín hiệu tuần hoàn. Nó đảm bảo rằng lần quét bắt đầu ở cùng một điểm với tín hiệu tuần hoàn, dẫn tới một hình ảnh rõ ràng được chỉ ra trên hình sau:
Hình vẽ 1.5: Bộ kích khởi (Trigger) Kết luận lại, để dùng một máy oscilloscope tương tự, bạn cần điều chỉnh ba thiết lập cơ bản để thích ứng với tín hiệu đưa vào: -
Việc làm suy giảm hoặc khuếch đại tín hiệu. Dùng điều khiển volts/div để điều chỉnh biên độ của tín hiệu trước khi nó được đặt vào các bản lái tia chiều dọc.
-
Thời gian cơ bản. Dùng điều khiển sec/div để thiết đặt độ lớn của thời gian trên mỗi khoảng chia được biển diễn ngang qua màn hình.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 5
ĐỒ ÁN TỐT NGHIỆP -
GVHD: TS. Nguyễn Văn Minh Trí
Kích khởi máy oscilloscope. Sử dụng mức kích để ổn định hóa tín hiệu tuần hoàn cũng như việc kích các sự kiện đơn.
Cũng vậy, việc điều chỉnh các điều khiển tiêu cự và cường độ cho phép bạn tao ra hình ảnh sắc nét và dễ nhìn (không bị chói). 1.5. Sơ lượt về máy Oscilloscope số 1.5.1. Khái niệm về Oscilloscope số Để tìm hiểu khái niệm về Osilloscope số ta cần phải hiểu được thế nào là một Osilloscope có nhớ. Osilloscope có nhớ là loại Osilloscope dùng để khảo sát các loại tín hiệu tức thời, tuần hoàn chậm, hay tín hiệu ngắn, tín hiệu quá độ... Dải tần số có thể đến 150MHz. Dải tín hiệu từ hàng chục mV đến hàng trăm vôn. Osilloscope số là loại dao động ký có nhớ số. Nguyên lý làm việc dựa trên việc số hóa tín hiệu khảo sát nhờ bộ chuyển đổi A /D gọi là quá trình lấy mẫu và chuyển đổi. Các mẫu được ghi vào bộ nhớ, sau đó được biến đổi trở lại thành tương tự phục vụ cho mục đính hiển thị. 1.5.2. Cấu trúc Oscilloscope số
Tín hiệu đo
Mạch đo
Bộ ADC
Bộ VXL
Máy tính hiển thị kết quả
Hình vẽ 1.6: Cấu trúc của Oscilloscope số -
Tín hiệu đo: Xung vuông, răng cưa, hình sin, tín hiệu hình, tín hiệu tiếng, áp lực cơ khí, áp suất, ánh sáng hoặc nhiệt độ…
-
Mạch đo: Tùy thuộc vào loại tín hiệu đầu vào mà mạch đo sẽ tương tự như là mạch khuếch đại và chuyển đổi tín hiệu. Mạch khuếch đại thường là mạch có hệ số khuếch đại >0. Mạch chuyển đổi đóng vai trò chuyển đổi từ tín hiệu sau mạch khuếch đại về loại tín hiệu phù hợp với loại tín hiệu đầu vào của bộ ADC. Thông thường tín hiệu mà các oscilloscope đo thường là các tín hiệu dòng hoạc tín hiệu áp. Vì vậy mạch khuếch đại thường là các mạch giảm dòng hoặc mạch phân áp
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 6
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
sử dụng các phần tử như biến dòng, biến áp, linh kiện bán dẫn, mạch điện trở, điện cảm, điện dung… -
Bộ ADC: Là bộ chuyển đổi tín hiệu tương tự thành tín hiệu số. Tín hiệu đo sau khi đi qua mạch đo sẽ được đưa vào bộ ADC. Bộ ADC sẽ chuyển đổi dạng tín hiệu này từ tín hiệu tương tự thành tín hiệu số để đưa đến bộ vi xử lí. Trên thực tế bộ ADC có độ phân giải khác nhau: 8bit, 10bit, 12bit, 16bit, 24bit... Độ phân giải càng lớn thì tín hiệu đầu ra số sẽ càng gần với tín hiệu đầu vào tương tự. Đầu ra số của bộ ADC có thể là bus song song hoặc nối tiếp.
-
Bộ vi xử lí: Bộ vi xử lí đóng vai trò xử lí trung tâm, nó nhận kết quả đo từ bộ ADC để gia công và xử lí trước khi gửi về máy tính để hiển thị. Bộ vi xử lí được sử dụng phổ biến hiện nay là các họ vi điều khiển như 8051, AVR, PIC, PSOC, ARM... với tốc độ xử lí phù hợp. Ngày nay các vi điều khiển được tích hợp thêm trong nó các bộ ADC có khả năng trích mẫu tốc độ cao, ngoài ra nó còn có khả năng ghép nối với máy tính theo các chuẩn ghép nối. Ngoài các khả năng trên một ưu điểm lớn nữa của bộ vi xử lí là khả năng lưu trữ thông tin, khả năng này phù hợp cho các cho các osilloscope tốc độ cao.
-
Máy tính hiển thị kết quả đo: Máy tính sẽ nhận các thông tin từ bộ vi xử lí sau đó gia công và hiển thị. Việc truyền nhận thông tin từ vi xử lí đến máy tính và ngược lại sẽ được thực hiện qua các chuẩn ghép nối như RS232, LPT, USB, khe cắm mở rộng…
1.5.3. Nguyên lý hoạt động của Oscilloscope số Một vài hệ thống mà được cấu thành từ các máy oscilloscope số thì cũng tương tự như bằng các máy oscilloscope tương tự; tuy nhiên, các máy oscilloscope số bao gồm thêm hệ thống xử lý số liệu. Với hệ thống thêm vào, máy oscilloscope số thu thập số liệu cho toàn bộ dạng sóng và sau đó hiển thị chúng Khi các bạn nối đầu đo (dò) của máy oscilloscope số vào mạch điện; hệ thống dọc sẽ điều chỉnh biên độ của tín hiệu như trong máy oscilloscope tương tự. SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 7
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Tiếp tới, bộ chuyển đổi tương tự/số trong hệ thống thu thập lấy mẫu tín hiệu ở các thời điểm rời rạc và chuyển đổi điện áp tín hiệu ở các điểm này thành giá trị số, gọi là các điểm lấy mẫu. Xung lấy mẫu của hệ thống ngang quy định bộ ADC lấy mẫu bao nhiên lần. Tốc độ mà ở đó xung “ticks” được gọi là tốc độ lấy mẫu và đươc đo bằng số mẫu trên giây (Xem hình vẽ dưới).
Hình vẽ 1.7: Nguyên lý hoạt động của Oscilloscope số Các điểm mẫu từ ADC được lưu trữ trong bộ nhớ như là các điểm dạng sóng. Có nhiều hơn một điểm mẫu có thể cấu thành nên một điểm dạng sóng. Cùng với nhau, các điểm dạng sóng cấu thành nên một bản ghi dạng sóng. Số điểm sóng được dùng để tạo nên một bản ghi dạng sóng được gọi là độ dài bản ghi. Hệ thống kích khởi quy định điểm bắt đầu và điểm kết thúc bản ghi. Màn hình nhận các điểm bản ghi này sau khi chúng được lưu trữ trong bộ nhớ. Tùy thuộc vào khả năng của máy oscilloscope thiết kế, việc xử lý thêm các điểm mẫu có thể được tiến hành để làm nâng cao chất lượng hiển thị. Bộ tiền kích khởi có thể hữu ích cho phép xem các sự kiện trước điểm kích.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 8
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Về cơ bản, với một máy máy oscilloscope số cũng như với máy máy oscilloscope tương tự, cần điều chỉnh các thiết lập dọc, ngang và kích khởi để có thể đo đạc được.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 9
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
CHƯƠNG 2: TỔNG QUAN VI ĐIỀU KHIỂN PIC18F2455/2550/4455/4550 2.1. Giới thiệu vi điều khiển PIC18F2455/2550/4455/4550 Họ vi điều khiển PIC18F2455/2550/4455/4550 là họ vi điều khiển tiên tiến của MICROCHIP, đặc biệt họ này có tích hợp cổng USB 2.0, ADC 10 bit và tích hợp nhiều công cụ khác. Mạnh, mềm dẻo là từ đánh giá ngắn gọn về họ vi điều khiển này. Chương này giới thiệu tổng quan các khối tích hợp của họ vi điều khiển PIC18F và các đặc điểm của các khối tích hợp, mục đích là phục vụ cho việc thiết kế ở các chương sau. Các đặc điểm cổng USB: -
USB V2.0
-
Tốc độ thấp (1.5 Mb/s) và tốc độ toàn phần (12Mb/s)
-
Hỗ trợ tới 32 điểm cuối
-
RAM 1 kByte cho khối USB
-
Mạch thu phát USB trên chip cùng với mạch ổn áp 3.3V
-
Cổng song song streaming (SPP) cho truyền streaming USB
-
Hỗ trợ cả 4 chế độ truyền: •
Truyền điều khiển (Control transfer)
•
Truyền ngắt (Interrupt transfer)
•
Truyền đồng bộ (Isochronous transfer)
•
Truyền khối (Bulk transfer)
Các đặc điểm ngoại vi: -
Dòng vào/ra (sink/source) cao 25mA/25mA
-
Ba ngắt ngoài
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 10
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
-
Bốn khối timer (timer0 đến timer3)
-
Có tới 2 khối CCP (Capture/Compare/PWM)
-
Capture 16 bit cực đại, độ phân giải 6.25 ns ( TCY /16 )
-
So sánh 16 bit cực đại, độ phân giải 100 ns ( TCY )
-
PWM có lối ra với độ giải từ 1 đến 10 bit
-
Khối CCP nâng cao ECCP (Enhanced Capture/Compare/PWM)
-
Nhiều chế độ lối ra
-
Có thể chọn cực tính
-
Thời gian chết lập trình được
-
Tự động tắt và tự động khởi động
-
Khối USART nâng cao
-
Hỗ trợ bus LIN
-
Cổng truyền nối tiếp đồng bộ chủ MSSP (Master Synchronous Serial Port)
-
ADC 10 bit, 13 lối vào, thời gian thu thập dữ liệu lập trình được
-
2 bộ so sánh tương tự với đa hợp lối vào
Các đặc điểm của vi điều khiển -
Cấu trúc tối ưu biên dịch C với tập lệnh mở rộng tùy chọn
-
Bộ nhớ chương trình flash nâng cao cho phép 100.000 lần xóa/ghi
-
Bộ nhớ dữ liệu EEPROM cho phép 1.000.000 lần xóa/ghi
-
Lưu trữ dữ liệu trong bộ nhớ flash/EEPROM hơn 40 năm
-
Ngắt nhiều mức ưu tiên
-
Watchdog timer mở rộng, chu kỳ khả trình từ 41 ms đến 131 s
-
Bảo vệ mã lập trình
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 11
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
-
Nguồn nuôi đơn 5V cho lập trình nối tiếp trên mạch qua 2 chân
-
Mạch gỡ lỗi qua 2 chân
-
Dải điện áp hoạt động rộng (2.0V đến 5.5V)
Bảng 2.1: Các tính năng kỹ thuật của các vi điều khiển PIC18F2455/2550/4455/4550 Trong họ vi điều khiển PIC18, chữ giữa “F” cho phép Vdd từ 4.2V đến 5.5V, chữ giữa “LF” cho phép mở rộng giải Vdd từ 2.0V đến 5.5V. 2.2. Dao động xung nhịp Mạch dao động với nhiều tùy chọn. Họ vi điều khiển PIC18F2455/2550/4550 có 12 tùy chọn mạch dao động, bao gồm: -
4 chế độ dao động tinh thể hoặc cộng hưởng gốm
-
4 chế độ xung nhịp ngoài
-
Một bộ dao động nội cung cấp xung nhịp 8MHz và mạch dao động RC nội cung cấp xung nhịp 31KHz, cũng như 6 lựa chọn tần số xung nhịp từ 125kHz đến 4MHz, tất cả ta có 8 lựa chọn tần số xung nhịp.
-
Nhân tần dùng PLL (Phase Loop Lock) áp dụng cho cả dao động tinh thể tần số cao và dao động ngoài cho dải tần số xung nhịp từ 4MHz đến 48MHz.
-
Hoạt động xung nhịp kép không đồng bộ (Asynchronous dual clock operation): khối USB hoạt động xung nhịp tần số cao trong khi các khối còn lại trong vi điều khiển hoạt động với xung nhịp tần số thấp hơn.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 12
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình 2.1: Sơ đồ khối PIC18F2455/2550 (28 chân) -
Theo dõi an toàn xung nhịp (Fail-Safe clock monitor): tùy chọn này cho phép nguồn xung nhịp chính luôn luôn được theo dõi, nếu xảy ra trường hợp xung nhịp
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 13
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
chính tắt vi điều khiển sẽ tiếp tục hoạt động với tần số xung nhịp thấp hơn. -
Khởi động hai tốc độ (Two-Speed Start-up): Tùy chọn này cho phép nguồn xung nhịp nội hoạt động khi reset lúc khởi động hay vi điều khiển hoạt động trở lại từ chế độ ngủ (wake-up from sleep mode) cho đến khi nguồn xung nhịp chính đã sẵn sàng.
Thạch anh dao động / cộng hưởng gốm: Ở chế độ HS, HSPLL, XT, XTPLL thạch anh dao động/ cộng hưởng gốm mắc ở chân OSC1 và OSC2. Ở mỗi chế độ C1, C2 đặt cạnh thạch anh dao động/cộnghưởng gốm có giá trị khác nhau (tham khảo datasheet PIC18F2455/2550/4550). Nhân tần số PLL: Trong vi điều khiển PIC18F2455/2550/4550 có khối PLL (Phase Loop Lock), điều này cho phép khối USB hoạt động ở tần số cao trong khi xung nhịp của hệ thống ở tần số thấp hơn. PLL được phép hoạt động ở các chế độ dao động HSPLL, XTPLL, ECPLL và ECPIO. Nó được thiết kế để sinh ra tần số xung nhịp chuẩn 96MHz từ tần số lối vào cố định 4MHz. Khối dao động nội (INTOSC): Trong vi điều khiển PIC18F2455/2550/4550 có khối dao động nội phát ra hai tín hiệu xung nhịp khác nhau. Lối ra trực tiếp 8 MHz, lối ra qua bộ chia (postscaler) cung cấp xung nhịp từ 31 KHz đến 4 MHz. Lưu ý nguồn dao động lấy từ thạch anh dao động/ cộng hưởng gốm gọi là dao động ngoài. Nguồn dao động nội lối ra 31KHZ cho phép trong các trường hợp: -
Timer bật nguồn (Power-up timer)
-
Theo dõi an toàn xung nhịp
-
Watchdog timer
-
Khởi động hai tốc độ (Two-Speed Start-up)
Lối ra dao động nội được chuẩn bởi hãng chế tạo nhưng vẫn có thể tinh chỉnh bởi người sử dụng, việc tinh chỉnh này được thực hiện nhờ thanh ghi điều chỉnh dao động (Oscillator Control Register). SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 14
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình 2.2: Sơ đồ khối PIC18F4455/4550 (40/44 chân) SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 15
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình 2.3: Sơ đồ khối dao động Các chế độ dao động nội: Sư lựa chọn nguồn xung nhịp cho USB xác định bởi các chế độ dao động nội riêng biệt: -
Chế độ INTHS: Xung nhịp USB được cung cấp bởi dao động trong chế độ HS.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 16
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
-
Chế độ INTXT: Xung nhịp USB được cung cấp bởi dao động trong chế độ XT
-
Chế độ INTXT: Xung nhịp USB được cung cấp bởi dao động trong chế độ XT
-
Chế độ INTCKO: Xung nhịp USB được cung cấp từ dao động bên ngoài thạch anh dao động/ cộng hưởng gốm.
-
Chế độ INTIO: xung nhịp cho USB được cung cấp vào chân OSC1/CLK1, còn chân OSC2/CLK2 có chức năng như chân I/O.
-
Tần số dao động cho USB là 6 MHz hoặc 48 MHz tùy thuộc vào chế độ tốc độ thấp (low speed) hay chế độ tốc độ toàn phần (full speed).
-
Tần số dao động cho USB là 6 MHz hoặc 48 MHz tùy thuộc vào chế độ tốc độ thấp (low speed) hay chế độ tốc độ toàn phần (full speed).
2.3. Bộ nhớ Bộ nhớ Flash nâng cao (Enhanced Flash) sử dụng cho bộ nhớ chương trình và bộ nhớ dữ liệu EEPROM. Số lần xóa/ghi cho bộ nhớ chương trình là 100.000 lần và cho bộ nhớ dữ liệu là 1.000.000 lần. Dữ liệu lưu lại trong bộ nhớ đến 40 năm mà không cần làm tươi. Có ba loại bộ nhớ trong họ PIC18: -
Bộ nhớ chương trình
-
RAM dữ liệu
-
EEPROM dữ liệu
Theo cấu trúc Harvard, bộ nhớ chương trình và dữ liệu dùng 2 bus riêng, điều này cho phép tiếp cận đồng thời 2 vùng bộ nhớ. EEPROM dữ liệu có thể coi như thiết bị ngoại vi vì tiếp cận thông qua bộ thanh ghi điều khiển. Họ vi điều khiển PIC18 có bộ đếm chương trình 21 bit nên có khả năng định vị 2 Mbyte bộ nhớ chương trình. IC18F2455,IC18F4455 có 24 Kbyte bộ nhớ flash và có thể chứa tới 12.288 lệnh từ đơn. IC18F2550, PIC18F4550 có 32 Kbyte bộ nhớ flash và có thể chứa đến 16.384 lệnh từ đơn. Khả năng tự lập trình: Họ vi điều khiển PIC18F2455/2550/4550 có khả năng tự nạp SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 17
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
chương trình vào bộ nhớ chương trình mà không cần phải có thiết bị phụ bên ngoài, điều này được thực hiện bằng đoạn chương trình con Bootloader đặt trên phần cao bộ nhớ chương trình vào được bảo vệ. Khả năng tự lập trình cho phép các ứng dụng dùng họ vi điều khiển này có khả năng nâng cấp firm-ware. Bộ nhớ chương trình Flash: 24Kbytes cho PIC18FX455, 32 Kbytes cho PIC18FX550.
Hình 2.4: Bản đồ tổ chức bộ nhớ họ vi điều khiển PIC18F2455/2550/4550 2.4. Khối Timer Họ vi điều khiển PIC18 có 4 bộ timer: timer0, timer1, timer2 và timer3. Mỗi timer có tính năng riêng. Timer0: -
Định chế độ hoạt động bằng phần mềm: timer hoặc counter, 8 bit hoặc 16 bit
-
Bộ chia khả trình 8 bit chuyên dụng
-
Nguồn xung nhịp chọn được (trong hay ngoài)
-
Khả năng chọn cạnh đối với xung nhịp ngoài
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 18
ĐỒ ÁN TỐT NGHIỆP -
GVHD: TS. Nguyễn Văn Minh Trí
Ngắt khi tràn
Timer1: -
Chọn bằng phần mềm timer hay counter 16 bit
-
Khả năng đọc viết thanh ghi 8 bit (TMR1H và TMR1L)
-
Chọn nguồn xung nhịp trong hay ngoài
-
Ngắt khi tràn
-
Khối RESET hoạt động trên cơ sở xung kích sự kiện CCP.
-
Cờ trạng thái xung nhịp (T1RUN)
Timer2: -
Timer 8 bit (TMR2) và thanh ghi chu kỳ (PR2)
-
Khả năng đọc viết cả 2 thanh ghi
-
Lập trình bằng phần mềm cho bộ chia (1:1, 1:4, 1:16)
-
Ngắt khi TMR2 gặp PR2
-
Tùy chọn dùng như xung nhịp dịch cho khối MSSP
Timer3: -
Chọn bằng phần mềm hoạt động như là timer hoặc counter 16 bit
-
Khả năng đọc ghi thanh ghi 8 bit (TMR3H và TMR3L)
-
Khả năng chọn nguồn xung nhịp (trong hoặc ngoài)
-
Ngắt khi tràn
-
Khối RESET hoạt động trên cơ sở xung kích sự kiện CCP
2.5. Khối CAPTURE/SO SÁNH/PWM (CCP). Họ vi điều khiển PIC18F2455/2550/4455/4550 có tất cả 2 khối CCP. Mỗi khối chứa thanh ghi 16 bit. Chế độ Capture: Cặp thanh ghi CCPRxH:CCPRxL bắt giá trị 16 bit của thanh ghi TMR1 hoặc TMR3 khi sự kiện xảy ra ở chân CCPx tương ứng. Một sự kiện SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 19
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
được định nghĩa: -
Mỗi khi có cạnh lên
-
Mỗi khi có cạnh xuống
-
Mỗi khi có cạnh lên thứ 4
-
Mỗi khi có cạnh lên thứ 16
Sự kiện được chọn bởi bit chọn chế độ CCPxM3:CCPxM0 (CCPxCON<3:0>). Khi sự kiện Capture được thực hiện, bit cờ yêu cầu ngắt (CCPxIF) được SET và chỉ xóa bằng phần mềm. Chế độ so sánh: Thanh ghi 16 bit CCPRx có giá trị hằng số được so sánh với giá trị của cặp thanh ghi TMR1 hoặc TMR3. Khi xảy ra sự kiện bằng nhau, chân CCPx có thể là: -
Chuyển mức cao
-
Chuyển mức thấp
-
Phát xung (cực tính dương hoặc âm)
-
Giữ nguyên không thay đổi trạng thái (phản ánh trạng thái chốt I/O)
Chân CCPx xác định trên cơ sở giá trị của bit chọn chế độ (CCPxM3:CCPxM0) . Khi sự kiện so sánh bằng nhau bit cờ ngắt CCPxIF được set (mức1). Chế độ PWM (Pulse-Width Modulation: điều chế độ rộng xung): Chân CCPx phát sinh xung PMW độ phân giải 10 bit. Độ rộng xung (Duty Cycle) của xung PWM được hình thành theo minh họa hình dưới đây.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 20
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình 2.5: Hình thành xung PWM ở lối ra Độ rộng xung PWM được xác định bằng cách viết vào thanh ghi CCPRxL và các bit CCPxCON<5:4> , CCPRxL chứa 8 bit cao và CCPxCON<5:4> chứa 2 bit thấp. giá trị 10 bit độ phân giải là giá trị CCPRxL : CCPxCON<5:4> Độ rộng xung PWM được tính theo công thức:
PWM Duty Cycle=(CCPRxL : CCPxCON <5 : 4 >*Tosc*(TMR2 Pr esscale Value)
CCPRxL và CCPxCON<5:4> có thể được viết vào mọi thời điểm nhưng giá trị độ rộng xung không chốt vào CCPRxH cho tới khi có sự gặp nhau (bằng) giữa PR2 và TMR2. Trong chế độ PWM CCPRxH là thanh ghi chỉ đọc. 2.6. Khối USB (Universal Serial Bus) Họ PIC18FX455/X550 tích hợp cổng USB hỗ trợ cả tốc độ truyền toàn phần (full-peed) 12Mb/s và tốc độ thấp (low-speed) 1.5 Mb/s cho phép giao tiếp nhanh giữa USB máy chủ và USB vi điều khiển PIC. Hỗ trợ đến 32 điểm cuối. RAM 1 kbyte cho USB. Hỗ trợ đủ 4 lối truyền: truyền điều khiển (Control transfer); truyền ngắt (Interrupt transfer); truyền đẳng thời (Isochronous transfer) và truyền khối (Bulk transfer). Hoạt động của khối USB được định cấu hình và quản lý thông qua 3 thanh ghi điều khiển. Hơn nữa có 19 thanh ghi quản lý giao tiếp USB thực. Các thanh ghi đó là: -
Thanh ghi điều khiển USB (UCON): Thanh ghi này chứa các bit cần cho điều
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 21
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
khiển trong quá trình truyền gồm: cho phép ngoại vi USB chính; reset con trỏ bộ đệm ping-pong; điều khiển chế độ treo; cấm truyền gói. -
Thanh ghi cấu hình USB (UCFG): Trước khi liên lạc qua USB, khối USB kết hợp phần cứng ngoài và/hoặc trong phải được đặt cấu hình. UCFG chứa các bit liên quan đến việc đặt: tốc độ full-speed hay low-speed; cho phép dùng điện trở kéo lên trong IC; cho phép thu-phat trong IC; sử dụng bộ đệm ping-pong.
-
Thanh ghi trạng thái truyền USB (USTAT): Báo cáo trạng thái giao tiếp trong SIE.
Hình vẽ 2.6: Sơ đồ khối USB -
Thanh ghi địa chỉ linh kiện USB (UADDR): Chứa duy nhất địa chỉ USB mà ngoại vi sẽ giải mã khi tích cực. UADDR = 00h khi reset USB bởi vi điều khiển. Địa chỉ USB phải được viết bởi vi điều khiển trong pha setup USB được hỗ trợ bởi firmware của Microchip.
-
Thanh ghi số frame (UFRMH:UFRML): Thanh ghi số frame chứa số frame 11 bit, 8 bit thấp chứa trong UFRML, 3 bit cao chứa trong UFRMH. Cặp thanh ghi được cập nhật với số frame hiện tại khi gói SOF được nhận. Thanh ghi số frame được
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 22
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
dùng căn bản cho lối truyền đẳng thời (isochronous transfer). -
Thanh ghi cho phép điểm cuối từ 0 đến 15 (UEPn): Mỗi của 16 điểm cuối hai chiều có thanh ghi điều khiển độc lập UEPn, n là số điểm cuối.
2.7. Điều khiển điểm cuối USB Mỗi của 16 điểm cuối hai chiều có thanh ghi điều khiển độc lập UEPn, n là số điểm cuối USB RAM. Dữ liệu USB di chuyển giữa lõi vi điều khiển và SIE (Serial Interface Engine) thông qua vùng nhớ gọi là RAM USB. Đây là nhớ cổng đôi đặc biệt, vùng nhớ dữ liêu bình thường ở Bank 4 đến Bank 7 (400h tới 7FFh) dung lượng 1Kbyte. Bank 4 (400h đến 4FFh) được dùng đặc biệt cho điều khiển đệm điểm cuối, trong khi Bank 5 đến Bank 7 dùng cho dữ liệu USB. Ngắt USB: Khối USB có thể phát ra nhiều điều kiện ngắt. Trên hình 2.6 cho thấy logic ngắt cho khối USB. Có hai lớp ngắt trong khối USB. Mức cao gồm các ngắt trạng thái USB, nó đặt cho phép và đặt cờ trong thanh ghi cho phép ngắt UIE (USB Interrupt Enable) và thanh ghi trạng thái ngắt USB UIR (USB Interrupt Status Register) tương ứng. Mức thấp gồm các điều kiện lỗi USB, nó đặt cho phép và đặt cờ trong thanh ghi trạng thái ngắt lỗi USB UEIR (USB Error Interrupt Status Register) và thanh ghi cho phép ngắt lỗi USB UEIE (USB Error Interrupt Enable Register).
Hình 2.7: Các ngắt của khối USB SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 23
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
2.8. Khối biến đổi ADC 10 bit Khối ADC 10 bit: Khối ADC của họ vi điều khiển này có khả năng kết hợp với việc thời gian thu thập dữ liệu khả trình cho phép không cần chờ chu kỳ lấy mẫu nên giảm thời gian biến đổi AD. Khối biến đổi AD có 10 lối vào đối với PIC18 vỏ 28 chân và 13 lối vào đối với vỏ 40/44 chân. Khối này có 5 thanh ghi: -
Thanh ghi kết quả A/D cao (ADRESH)
-
Thanh ghi kết quả A/D thấp (ADRESL)
-
Thanh ghi điều khiển A/D 0 (ADCON0)
-
Thanh ghi điều khiển A/D 1 (ADCON1)
-
Thanh ghi điều khiển A/D 2 (ADCON2)
Hình 2.8: Sơ đồ mạch điện thu thập dữ liệu cho biến đổi A/D Chọn xung nhịp biến đổi A/D: Thời gian biến đổi A/D mỗi bit được định nghĩa là TAD . Yêu cầu thời gian biến đổi A/D là 11* TAD cho biến đổi A/D 10 bit. Có 7 tùy chọn cho TA: -
2 TOSC
-
4 TOSC
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 24
ĐỒ ÁN TỐT NGHIỆP -
8 TOSC
-
16 TOSC
-
32 TOSC
-
64 TOSC
-
Dao động RC nội
GVHD: TS. Nguyễn Văn Minh Trí
Hình 2.9: Sơ đồ khối biến đổi A/D
Bảng 2.10: TAD theo tần số hoạt động của vi điều khiển SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 25
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Để biến đổi A/D hoạt động đúng, TAD phải nhỏ có thể có nhưng lớn hơn TAD tối thiểu Thời gian biến đổi A/D = TACQ
11* TAD
TAD1 , trong đó TAD1 là thời gian tụ
xả 2.9. Khối tham chiếu điện áp so sánh Khối tham chiếu điện áp so sánh là một cầu chia áp gồm 16 điện trở (trên hình 2.11). Mục đích của khối này là tạo ra điện áp chuẩn khả trình cho cho các mạch so sánh tương tự. Định cấu hình cho tham chiếu điện áp so sánh bằng thanh ghi điều khiển tham chiếu điện áp so sánh CVRCON.
Hình 2.11: Sơ đồ tham chiếu điện áp so sánh 2.10. Ngắt PIC18F2455/2550/4455/4550 có nhiều nguồn tín hiệu ngắt và hai mức độ ưu tiên ngắt. Vector ngắt ưu tiên mức cao là 000008h và vector ngắt ưu tiên mức thấp là 000018h. Có 10 thanh ghi được dùng để điều khiển ngắt là: -
RCON
-
INTCON
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 26
ĐỒ ÁN TỐT NGHIỆP -
INTCON2
-
INTCON3
-
PIR1, PIR2
-
PIE1, PIE2
-
IPR1, IPR2
GVHD: TS. Nguyễn Văn Minh Trí
Mỗi nguồn tín hiệu ngắt có 3 bit để điều khiển hoạt động. Chức năng của 3 bit này là: -
Bit cờ để chỉ thị một sự kiện ngắt xảy ra
-
Bit cho phép để cho phép ngắt, chương trình nhảy đến địa chỉ vector ngắt của tín hiệu ngắt khi bit cờ được set
-
Bit ưu tiên ngắt để chọn mức độ ưu tiên ngắt
Hình 2.12: Sơ đồ logic các tín hiệu ngắt SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 27
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Mức độ ưu tiên ngắt được cho phép bằng cách SET bit IPEN (RCON<7>). Khi độ ưu tiên được cho phép, có 2 bit cho phép ngắt toàn cục. SET bit GIEH (INTCON<7>) cho phép tất cả các ngắt mà SET độ ưu tiên cao. SET bit GIEL (INTCON<6>) cho phép tất cả các ngắt mà SET độ ưu tiên thấp. Khi cờ ngắt, bit cho phép và cờ cho phép ngắt toàn cục SET chương trình sẽ nhảy đến địa chỉ vector ngắt 000008h hoặc 000018h tùy thuộc vào mức độ ưu tiên. Các ngắt riêng rẽ có thể không cho phép thông qua các bit cho phép tương ứng. Ngắt USB Không giống như các giao diện ngoại vi khác, khối USB có khả năng phát ra nhiều tín hiệu ngắt. Các tín hiệu ngắt USB gồm có vài tín hiệu ngắt liên lạc thông thường, vài tín hiệu ngắt sự kiện trạng thái và vài tín hiệu ngắt sự kiện lỗi. Trong khối USB được trang bị mạch logic ngắt riêng cho khối USB (đã trình bày trong phần 2.7 và sơ đồ logic ngắt USB ở hình 2.6) 2.11. Các chi tiếc đặc biệt họ PIC18F2455/2550/4455/4550 Họ vi điều khiển này có vài chi tiết đặc biệt nhằm tăng độ tin cậy tối đa và giảm giá thành do các linh kiện bên ngoài được giảm tối đa. Các chi tiết đặc biệt có thể kể ra là: -
Nguồn dao động phong phú
-
Các reset:
-
Reset nguồn bật (POR)
-
Timer nguồn bật (PWRT)
-
Timer khởi động dao động (OST)
-
Reset Brown-out (BOR)
-
Quản lý năng lượng với nhiều chế độ hoạt động
-
Theo dõi an toàn xung nhịp
-
Khởi động 2 tốc độ
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 28
ĐỒ ÁN TỐT NGHIỆP -
Bảo vệ mã chương trình
-
Lập trình nối tiếp trong chip
-
Tập lệnh phong phú
GVHD: TS. Nguyễn Văn Minh Trí
Đây là họ vi điều khiển 8 bit mạnh, mềm dẻo và chất lượng của hãng MICROCHIP nói riêng và của cả thế giới nói chung.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 29
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
CHƯƠNG 3: SƠ LƯỢT VỀ CHUẨN USB 2.0 3.1. Giới thiệu chung về USB 3.1.1. Khái niệm về USB USB (Universal Serial Bus) là bus nối tiếp đa năng cho phép các thiết bị đầu cuối giao tiếp với máy tính chủ (Host Computer). 3.1.2. Các mục tiêu hướng tới khi sử dụng USB -
Dễ dàng mở rộng các thiết bị đầu cuối của PC.
-
Cung cấp giải pháp chi phí thấp song vẫn hỗ trợ truyền dẫn với tốc độ lên đến 480Mb/s.
-
Hỗ trợ ứng dụng thời gian thực như voice, audio, video,...
-
Giao thức linh hoạt cho các chế độ hỗn hợp: isochronous data transfers và asynchronous messaging.
-
Tích hợp công nghệ thiết bị tiện nghi.
-
Được Windows và các hệ điều hành khác hỗ trợ do đó có thể không cần driver mức thấp cho các thiết bị USB.
-
Đa năng do đó nhiều thiết bị có thể ghép nối với PC thông qua chuẩn USB.
-
Độ tin cậy cao.
3.1.3. Mô tả hệ thống USB Một hệ thống USB được mô tả bởi ba định nghĩa: Kết nối USB, các thiết bị USB và USB host. Kết nối USB được hiểu là kiểu kết nối mà trong đó các thiết bị USB được kết nối và giao tiếp với máy tính chủ. Kết nối USB bao gồm các vấn đề sau: -
Kiến trúc Bus: Mô hình kết nối giữa các thiết bị USB và Host.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 30
ĐỒ ÁN TỐT NGHIỆP -
GVHD: TS. Nguyễn Văn Minh Trí
Những mối quan hệ Inter-layer : Dưới dạng một tập khả năng, các tác vụ USB được thực hiện tại mỗi lớp trong hệ thống.
-
Các mô hình luồng dữ liệu: Là hình thức mà trong đó dữ liệu di chuyển trong hệ thống qua USB.
Lập trình USB: USB cung cấp một sự kết nối dùng chung. Việc truy cập tới kết nối được lập trình theo thứ tự để hỗ trợ truyền dữ liệu đẳng thời và khử sự phân xử ban đầu. 3.1.4. Kiến trúc Bus Bus tuần tự đa năng nối các thiết bị USB với Host USB. Về mặt kết nối vật lý USB là một kiến trúc tầng sao. Một Hub ở tại trung tâm của mỗi sao, mỗi đoạn dây là một kết nối từ điểm tới điểm giữa Host và một Hub hoặc một chức năng nào đó, hoặc một Hub nối tới Hub khác hoặc chức năng khác. Với 7bit địa chỉ, ngoài máy chủ USB ra nó có thể quản lý tối đa 127 thiết bị ngoại vi. Hình 4.1 sẽ minh hoạ kiến trúc của USB.
Hình 3.1: Mô hình bus USB 3.1.5. Máy chủ USB (USB Host) Chỉ có duy nhất một Host trong một hệ thống USB bất kỳ. Giao diện USB tới hệ thống máy chủ được xem như bộ điều khiển Host. Bộ điều khiển Host có thể được thực hiện SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 31
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
trong một kết hợp gồm phần cứng, chương trình cho vi điều khiển (firmware) hoặc phần mềm. Một Hub gốc (root hub) được tích hợp chỉ trong hệ thống Host để cung cấp một hoặc nhiều điểm lắp thêm. 3.1.6. Các thiết bị USB Thiết bị USB có thể là một trong các thiết bị sau: -
Hub: cung cấp điểm lắp thêm vào USB.
-
Các chức năng: Cung cấp các khả năng cho hệ thống như một kết nối ISDN, digital joystick, hoặc speakers.
-
Thiết bị hiểu được giao thức USB
3.1.7. Cáp USB USB truyền tín hiệu và nguồn qua một cáp 4 sợi hình 3.2: -
Vbus: Điện áp cung cấp cho thiết bị.
-
Tín hiệu D+.
-
Tín hiệu D-.
-
Dây đất GND.
Có 3 tốc độ truyền dữ liệu: -
USB tốc độ cao (USB high-speed): 480Mb/s.
-
USB toàn tốc (USB full-speed): 12Mb/s.
-
USB tốc độ thấp (USB low-speed): 1.2Mb/s.
Hình vẽ 3.2: Cable USB SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 32
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Cáp USB bao gồm 4 dây, D+ và D- được dùng để truyền tín hiệu, Vbus và GND để cấp nguồn cho thiết bị (Thường thì Vbus =5V còn GND=0V tại nguồn). USB cho phép chiều dài các đoạn
cáp có thể thay đổi lên tới vài mét.
Ở phía máy chủ Host thì D+ và D- được nối đất qua các điện trở Rpd còn về phía thiết bị ngoại vi, các đầu dây D+, D- được bảo vệ bởi điện trở cuối (đó chính là các điện trở Rpu. Thiết bị tốc độ cao hoặc toàn tốc cần có điện trở nối +3.3 V cho đầu D+, thiết bị tốc độ thấp cần có điện trở nối lên 3.3 V cho đầu D-. Những điện trở này tạo nên các mức điện thế khác nhau giữa D+ và D- giúp cho máy chủ phát hiện được việc cắm vào hay rút ra của thiết bị cũng như tốc độ truyền dữ liệu của thiết bị. 3.2. Mô hình luồng dữ liệu USB 3.2.1. Các thành phần trong việc kết nối USB Việc thực hiện kết nối USB gồm các thành phần: -
Thiết bị vật lý USB (USB physical device): Là thiết bị tách rời được nối với Host thông qua cáp USB để thực hiện các chức năng theo yêu cầu của người dùng cuối.
-
Phần mềm khách (Client software): Phần mềm thực thi ở trên Host, tương ứng với thiết bị USB. Phần mềm này có thể được hệ điều hành cung cấp hoặc đi kèm theo thiết bị của nhà sản xuất.
-
Phần mềm hệ thống USB (USB system software): Là phần mềm hỗ trợ USB trong hệ điều hành riêng. Phần mềm hệ thống USB được cung cấp bởi hệ điều hành, nó độc lập với thiết bị USB và phần mềm khác.
-
USB Host Controller (Giao diện BUS của Host): Là phần cứng và phần mềm cho phép thiết bị USB gắn với Host.Với thiết bị vật lý USB có các lớp sau:
-
Lớp giao diện BUS USB (USB bus Interface) có vai trò trong việc kết nối vật lý/báo hiệu/gói tin giữa thiết bị USB với Host.
-
Lớp thiết bị USB (USB device Layer) là nơi phần mềm hệ thống USB thực hiện các hoạt động chung với thiết bị USB.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 33
ĐỒ ÁN TỐT NGHIỆP -
GVHD: TS. Nguyễn Văn Minh Trí
Lớp chức năng (Function layer): Cung cấp các khả năng bổ sung tới Host thông qua một client sofware thích hợp.
Hình vẽ 3.3: Mô hình luồng dữ liệu USB 3.2.2. Bus Topology Bus Topology gồm 4 thành phần chính: - Host và các thiết bị: đây là thành phần sơ cấp của 1 hệ thống USB. - Cấu trúc vật lý: cho thấy các thành phần của USB được nối với nhâu như thế nào. - Cấu trúc logic: cho thấy vai trò và trách nhiệm của các thành phần USB khác nhau và USB xuất hiện như thế nào từ hình phối cảnh của Host và 1 thiết bị. - Mối liên quan giữa chức năng và phàn mềm khách (Client Software). 3.2.2.1. USB Host
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 34
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình vẽ 3.4: Kết cấu Host Kết cấu logic của Host được chỉ ra trong hình trên gồm có: -
Bộ điều khiển Host.
-
Phần mềm hệ thống USB đã được gộp chung (thực chất nó gồm: USB Driver, Host Controller và Host software).
-
Phần mềm khách (Client Software).
3.2.2.2. Các thiết bị USB
Hình vẽ 3.5: Kết cấu thiết bị vật lý Kết cấu logic của một thiết bị USB vật lý trong hình trên gồm: -
Giao diện bus USB.
-
Thiết bị USB logic.
-
Chức năng.
Các thiết bị USB vật lý cung cấp các chức năng bổ sung cho Host. Các thiết bị USB khac SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 35
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
nhau thì cung cấp các chức năng khác nhau. Mặc dù vậy thì các thiết bị USB logic có nối ghép tới Host cơ bản giống nhau. 3.2.2.3. Kiến trúc bus vật lý (Physical Bus Topology) Kết nối vạt lý của các thiết bị USB thông qua kiến trúc tầng sao (tiered star topology) như hình dưới. Các điểm nối USB được thông qua bởi 1 lớp thiết bị USB được hiểu là Hub. Các điểm nối bổ sung được kết nối thông qua Hub được gọi là các cổng. Host bao gồm cả 1 Hub được nối với nó là Hub gốc (Root Hub). Các kết nối được thực hiện tại các cổng của Hub gốc. Các thiết bị cung cấp các chức năng bổ sung cho Host được hiểu là các chức năng (Funtion) .
Hình vẽ 3.6: Kiến trúc bus vật lý USB 3.2.2.4. Kiến trúc bus logic Trong khi các thiết bị vật lý được kết nối tới Host theo kiến trúc tầng sao thì quá trình truyền thông giữa Host với mỗi thiết bị logic được xem như là kết nối trực tiếp tới cổng gốc (root port). Trong trường hợp này thì bản thân các Hub cũng là các thiết bị logic, nhưng hình vẽ dưới đây không vẽ ra để cho hình vẽ đơn giản dễ hiểu.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 36
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí Hình vẽ 3.7: Kiến trúc bus logic USB
3.2.2.5. Mối quan hệ giữa chức năng và phần mềm khách Trong quá trình hoạt động, phần mềm khách nên độc lập với các thiết bị khác có thể được gắn tới USB. 3.2.3. Luồng truyền thông USB
Hình vẽ 3.8: Luồng truyền thông USB USB có thể cung cấp dịch vụ truyền thông giữa phần mềm ở trên Host và nhiều chức năng của USB, mỗi chức năng có thể có yêu cầu luồng truyền thông khác nhau cho mỗi sự tương tác với phần mềm. USB cung cấp việc sử dụng toàn bộ bus tốt hơn là việc cho phép tách ra nhiều luồng truyền thông khác nhau của 1 chức năng USB, mỗi luồng truyền thông sử dụng một vài truy cập bus để thực hiện truyền thông giữa phần mềm và chức năng của USB. Mỗi luồng truyền thông sẽ kết thúc tại mỗi điểm cuối (end point) trên một thiết bị, thiết bị điểm cuối được dùng để nhận dạng luồng truyền thông.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 37
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình vẽ 3.9: Luồng truyền thông USB
Phần mềm ở trên Host liên lạc với thiết bị logic qua tập hợp các luồng truyền thông. Tập hợp các luồng truyền thông sẽ được lựa chọn bởi nhà thiết kế phầm mềm hay phần cứng để phù hợp với các yêu cầu truyền thông của thiết bị cũng như đặc tuyến truyền đạt của USB. 3.2.4. Các loại truyền dữ liệu USB USB truyền dữ liệu qua 1 ống dẫn (đường truyền) giữa 1 bên là bộ nhớ đệm được liên kết với 1 phần mềm khách trên máy chủ với 1 bên là 1 điểm cuối trên thiết bị USB. USB cung cấp các dạng truyền tải khác nhau đã được tối ưu hóa để đáp ứng một cách thích hợp nhất các nhu cầu của phần mềm khách và chức năng. Có 4 kiểu truyền USB: -
Control tranfer (Truyền điều khiển): thường sử dụng để cài đặt phần cứng và đưa ra các lệnh cho điều khiển thiết bị. Kiểu truyền này được làm việc ở mức ưu tiên cao với khả năng kiểm soát lỗi tự động. Mỗi gói tin có thể truyền lên đến 64byte.
-
Isochronous tranfer (truyền đẳng thời): khi lượng dữ liệu cần truyền lớn với tốc độ dữ liệu đã được qui định, chẳng hạn như dùng cho card âm thanh thì thường áp dụng truyền đồng bộ. Theo cách truyền này một giá trị tốc độ dữ liệu xác định được duy trì. Việc hiệu chỉnh lỗi không được thực hiện vì các lỗi lẻ tẻ cũng không gây ảnh hưởng đáng kể đến chất lượng cuộc truyền.
-
Interrup tranfer (Truyền ngắt): sử dụng cho các thiết bị cần cung cấp một lượng dữ
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 38
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
liệu nhỏ (chỉ truyền theo hướng vào) và tuần hoàn chẳng hạn như: chuột, bàn phím đều sử dụng kiểu truyền ngắt. Không giống như cơ chế ngắt, ở đây không có yêu cầu ngắt được gửi tới chủ USB mà máy tính sẽ hỏi vòng theo chu kỳ xem có thiết bị nào gửi dữ liệu tới không. Thường thiết bị gửi tới chủ máy tính 8 byte dữ liệu trong một lần truyền. Các thiết bị sử dụng kiểu truyền ngắt như bàn phím, chuột hay cũng có thể dùng cho một thiết bị đo lường khác. -
Bus tranfer (Truyền khối): khi có lượng dữ liệu lớn cần truyền và cần kiểm soát lỗi tryuền, nhưng lại không có yêu cầu thúc ép về thời gian truyền thì dữ liệu thường được truyền theo kiểu khối. Kiểu truyền này thường áp dụng cho các thiết bị như máy in, máy quét.
3.3. Giao diện vật lý BUS USB Bus USB có hai kiểu đầu nối thông dụng: kiểu A và kiểu B, thiết kế như vậy nhằm mục đích không xảy ra đấu nối nhầm giữa đầu cắm với thiết bị và đầu cắm với Hub. Khác với chuẩn RS 232, việc đấu nối ở bus USB không chia ra các kiểu đấu nối khác nhau, chẳng hạn nối thẳng và bắt chéo. Bus USB sử dụng một Cable bốn sợi dây để nối với các thiết bị, trong đó một cặp đường truyền hai sợi xoắn được dùng làm các dữ liệu vi sai (D+ và D-) còn hai dây làm nguồn nuôi 5V và nối đất (GND) (hình 3.10).
Hình 3.10: Cable USB Cable nối luôn thực hiện sự liên kết 1:1, nghĩa là Cable chỉ nối với Hub và thiết bị. Kết nối qua Cable USB sử dụng 4 đường dẫn có màu khác nhau qui định cho các tín hiệu trên bus. Chân
Tên gọi
Màu dây
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Mô tả
Trang 39
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
1
VCC
Đỏ
+5VCC
2
D-
Trắng
Dữ liệu (D-)
3
D+
Xanh lục
Dữ liệu (D+)
4
GND
Đen
Nối đất
Bảng 3.11: Các dây dẫn trong USB Các ổ cắm phía sau máy tính thường là kiểu đầu nối A, qua đó có thể nối trực tiếp các thiết bị USB vào máy tính PC. Các thiết bị có tốc độ thấp chẳng hạn như chuột cũng có thể đấu thẳng vào ổ cắm này bằng một phích cắm cũng kiểu A.
Hình 3.12: Đánh số các chân nối ổ cắm USB và cab nối kiểu A và B 3.4. Giao thức truyền 3.4.1. Các trường trong truyền thông USB Thứ tự bit được truyền qua bus USB là bit có trọng số nhỏ nhất (LSB) được truyền đầu tiên cho đến bit MSB. USB có 4 loại gói truyền trên bus là: gói nhận dạng (Token), gói dữ liệu (Data), gói khởi đầu khung (Start Of Frame) và gói bắt tay (Handshake). Trong mỗi gói lại gồm có nhiều trường, truyền thông USB có các loại trường sau: -
Trường đồng bộ (SYNC): tất cả các gói đều được bắt đầu bằng trường SYNC, đó là chuỗi nhị phân mã NRZI (Non Return to Zero Inverted) của chuỗi “KJKJKJ”. Việc sử dụng SYNC làm khởi đầu cho một gói nó giống như bit Start trong RS 232. Tất cả các gói đều giới hạn giữa SOP (Start – Of - Packet) và EOP (End – Of – Packet).
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 40
ĐỒ ÁN TỐT NGHIỆP -
GVHD: TS. Nguyễn Văn Minh Trí
Trường nhận dạng (PID): theo sau ngay trường SYNC trong mỗi gói của USB, gói có chiều dài 8bit gồm 4 bit thấp là 4bit nhận dạng gói, 4bit cao là đảo của 4bit thấp nhằm kiểm soát lỗi khi truyền. Trường PID mô tả loại gói sẽ được truyền sau nó. Cả chủ USB và các thiết bị USB đều nhận biết được các mã trường nhận dạng đã được qui định. Nếu mã nhận được là không nằm trong các mã đã qui định chủ USB sẽ không hỗ trợ. Sau đây là bảng danh sách mã trường nhận dạng của các loại gói trong USB.
-
Trường địa chỉ (ADDR): là địa chỉ riêng để truy cập tới thiết bị. Thiết bị có thể nhận dữ liệu hay truyền dữ liệu về máy chủ (phụ thuộc vào giá trị gói nhận dạng PID) thông qua địa chỉ của nó. Trường địa chỉ sử dụng 7 bit [A0 ÷ A6]. Trường địa chỉ có trong các gói IN, SETUP, OUT. Mỗi địa chỉ, chỉ định cho một thiết bị đơn lẻ khi bắt đầu được cấp nguồn các thiết bị có địa chỉ mặc định là zero và chủ USB nhận bảng mô tả của thiết bị thông qua địa chỉ mặc định này.
-
Trường điểm cuối (End Point): một trường điểm cuối sử dụng 4 bit cho phép lựa chọn điểm cuối trong thiết bị. Trừ điểm cuối zero, số điểm cuối là riêng biệt cho từng thiết bị chức năng. Một điểm cuối là địa chỉ của một bộ đệm trong thiết bị, trường địa chỉ được định nghĩa trong các gói IN, SETUP và OUT. Từ điểm cuối tới chủ USB thiết lập một kênh trao đổi thông tin gọi là đường ống. Tất cả các thiết bị chức năng đều hỗ trợ một đường ống mặc định với điểm cuối là zero, chủ USB sẽ trao đổi với thiết bị mới gắn vào thông qua đường ống này.
-
Trường số khung: trường số khung có độ dài 11bit, nó được gửi trong gói SOF (Start Of Frame Packets). SOF được gửi bởi chủ USB theo chu kỳ 1ms 0.005ms.
-
Trường dữ liệu: trường dữ liệu có độ dài từ 0 đến 1023byte, các byte được gửi đi lần lượt. Trong mỗi byte dữ liệu bit dữ liệu nhỏ nhất được gởi trước và cuối cùng là bit bit có trong số lớn nhất (Msb).
3.4.2. Các loại gói trong truyền thông USB SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 41
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Gói nhận dạng (Token Packets): chỉ cho biết loại truyền ngay sau nó. Có 3 loại gói nhận dạng: -
IN: Báo thiết bị biết chủ USB muốn đọc thông tin.
-
OUT: báo cho thiết bị rằng chủ USB muốn gởi thông tin.
-
SETUP: được sử dụng bắt đầu trong truyền điều khiển.
Gói khởi đầu khung (Start Of Frame): gói khởi đầu khung được phát ra từ chủ USB theo chu kỳ 1.00ms
0.005ms, gói khởi đầu khung (SOF) bao gồm các trường:
-
8bit: PID nhận dạng loại gói.
-
11bit: số khung.
-
5bit: kiểm tra lỗi CRC5.
Gói dữ liệu (Data Packets): một gói dữ liệu bao gồm một trường PID (8bit). Gói bắt tay (Handshake Packets): có 3 loại gói bắt tay -
ACK: trả lời dữ liệu đã nhận thành công.
-
NAK: báo thiết bị không trả lời dữ liệu nhận hay nhận bị lỗi. Tất cả các gói bắt tay đều được truyền theo kiểu ngắt để báo tin cho chủ USB biết dữ liệu không được gửi.
-
STALL: chỉ ra rằng thiết bị USB là không có khả năng truyền hoặc nhận dữ liệu hay đường ống yêu cầu là không hỗ trợ.
3.5. Điểm danh và gói phần mềm điều khiển 3.5.1. Điểm danh Khả năng tự động nhận ra và cài đặt phần mền điều khiển cho các thiết bị USB là do hệ thống thường xuyên kiểm tra thông tin thiết bị trên cổng. Việc điểm danh được thực hiện độc lập bởi hệ điều hành, không cần một chương trình người sử dụng phải thực hiện công việc này. Khi một thiết bị USB được kết nối vào mạng, hub nhận ra nó thông qua mức điện áp trên đường dữ liệu. Vì trong mỗi thiết bị USB đường dữ liệu được nối nguồn SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 42
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
thông qua điện trở, do đó khi kết nối vào bus điện áp đường dữ liệu trên hub được đưa lên mức cao báo cho hub biết một thiết bị đã kết nối vào cổng tương ứng. Khi hệ điều hành nhận biết một thiết bị mới được kết nối, nó yêu cầu thiết bị kết nối cung cấp thông tin về thiết bị. Thiết bị có nhiệm vụ đưa ra bảng cung cấp thông tin về mình dưới dạng một bảng mô tả (Description). Bảng mô tả là một cấu trúc dữ liệu được qui định chính xác về nội dung, cách sắp xếp dữ liệu và chiều dài của nó. Hệ điều hành dựa vào thông tin cung cấp từ bảng mô tả thiết bị mà gọi các phần mềm điều khiển tương ứng. 3.5.2. Phần mềm điều khiển Chức năng của phần mềm điều khiển (driver) thiết bị nói chung, có thể mô tả như một mắt xích liên kết giữa phần cứng và phần mềm của một hệ thống. Trong môi trường từ Window 98 không có một chương trình ứng dụng nào có thể truy cập trực tiếp lên phần cứng. Cách tốt nhất là gọi ra một phần mềm điều khiển thiết bị, phần mềm này trao đổi trực tiếp với phần cứng hoặc qua lớp đệm nằm sâu hơn trong hệ thống. Phần mềm điều khiển được các nhà sản xuất thiết bị cung cấp kèm theo và được viết trong khuôn khổ đầu tư cho thiết bị của một công ty. Phần mềm làm việc trong chế độ lõi với quyền ưu tiên cao hơn. Một phần mềm điều khiển được xem xét giống như một thiết bị ảo, nghĩa là một chương trình người dùng sử dụng một phần mềm điều khiển giống như chính một thiết bị. Tất cả các phần mềm điều khiển USB đều dựa trên Win32-Driver-Model (WDM), mô hình này đã được sử dụng trong Window NT và được tương thích trong Window 98. Tất cả các lệnh gọi phần mềm điều khiển đều chạy qua phềm mềm quản lý vào/ra (I/O Manager). Các chương trình người dùng khác nhau gửi gói yêu cầu tới phần mềm quản lý vào/ra, phần mềm này sau đó phân phối tới phần mềm điều khiển cụ thể. 3.6. Một số vi mạch sử dụng trong kết nối USB Trên thị trường hiện nay đã cung cấp một số IC chuyên dụng sử dụng cho việc kết nối USB. Bên cạnh đó nhiều vi điều khiển (Microcontroller) của các hãng khác nhau cũng đã SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 43
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
tích hợp cổng USB tạo thuận lợi trong việc sử dụng. Các IC này đều tích hợp phần cứng bổ trợ tự động phát hiện các gói dữ liệu, yêu cầu từ chủ USB, và tự động gởi các bảng mô tả thiết bị tới chủ USB. Các vi mạch hỗ trợ kết nối USB là các Microcontroller có hỗ trợ phần cứng, phần dẻo. Phần mềm trao đổi dành cho người thiết kế tạo điều khiện tối đa cho người sử dụng. Các Microcontroller hỗ trợ USB với các tốc độ trao đổi tin: 1.5Mbps (Low - Speed), 12Mbps (Full - Speed) và 480Mbps (Hight - Speed). Các thiết bị truyền tin tốc độ thấp và trung bình như: CY7C63001, AN21XX, CY7C64xxx, PIC18f4550, 68HC705JB2,v.v... Các thiết bị có tộc độ cao như: FTDI FT8U232, FTDI FT8U245, CY68013 FX2, NET2280,v.v... Sau đây là một số vi điều khiển hay dùng: CY7C63001 Bộ vi xử lý 8bit theo khiến trúc Harvard. -
Chạy đồ hồ 6MHz.
-
128byte RAM.
-
Hỗ trợ USB tốc độ 1.5Mbps.
-
Đóng gói 20 chân.
PIC16C745, PIC16C765 (Microchip) -
Hỗ trợ USB 1Mbps với 6 điểm cuối.
-
5 kênh ADC 8bit,v.v…
PIC18F4550 (Microchip) -
Hỗ trợ USB 12Mbps với 16 điểm cuối. Mỗi điểm cuối 2 bộ đệm 512byte.
-
Chạy xung nhịp 48MHz.
NET2888 (Netchip) -
Hỗ trợ USB 1.0 và 1.1.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 44
ĐỒ ÁN TỐT NGHIỆP -
Hỗ trợ 5 đểm cuối.
-
Chạy với xung nhịp 48MHz.
GVHD: TS. Nguyễn Văn Minh Trí
68HC705JB3 (Motorola) -
Hỗ trợ USB tốc độ 1.5Mbps.
-
Hỗ trợ 2 ngắt điều khiển điểm cuối.
-
144byte RAM.
PDIUSBD11 (của Philips) -
Hỗ trợ USB 12Mbps.
-
Một điểm điều khiển và 6 điểm cuối chung.
-
Chạy với xung nhịp 12MHz.
CY7C68001 -
Hỗ trợ USB tốc độ 480Mbps và 12Mbps.
-
Hỗ trợ 5 điểm cuối với bộ đệm 512byte cho truyền khối và 1024byte cho truyền đẳng thời. 4Kbyte FIFO.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 45
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
CHƯƠNG 4: THIẾT KẾ VÀ CHẾ TẠO CÁC KHỐI CHỨC NĂNG 4.1. Khối nguồn nuôi điện áp thấp
Hình vẽ 4.1: Khối nguồn nuôi Các đặc trưng thiết kế nguồn nuôi điện áp thấp: -
Điện áp lối vào 220 VAC
-
Trong mạch nguồn nuôi có sử dụng Biến áp nguồn đôi: -12V| 0V|+12V
-
Dòng cực đại lối ra là : 1A
4.2. Mạch xử lý trung tâm
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 46
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình vẽ 4.3: Mạch xử lý trung tâm
Hình vẽ 4.4: Mạch nguồn cho vi điều khiển SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 47
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Hình vẽ 4.5: Mạch hiển thị lcd
Hình vẽ 4.6: Mạch led báo trạng thái
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 48
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
4.3. Mạch phân áp 4.3.1. Mạch phân áp DC
Hình vẽ 4.7: Mạch phân áp DC 3.2. Mạch phân áp AC
Hình vẽ 4.8: Mạch phân áp AC
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 49
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
4. Mạch cộng
Hình vẽ 4.9: Mạch cộng * Một số linh kiện khác sử dụng trong mạch LM324
Hình vẽ: LM324 LM324 là một IC khuếch đại thuật toán, công suất thấp bao gồm 4 bộ khuếch đại thuật SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 50
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
toán (Op-Amp) trong nó. Thông thường một bộ khuếch đại thuật toán (Op-Amp) thì cần phải có nguồn đôi. Tức là phải có nguồn dương và nguồn âm. Chẳng hạn như Opamp 741. Tuy nhiên các Opamp trong LM324 được thiết kế đặc biệt để sử dụng với nguồn đơn. Tức là chỉ cần Vcc và GND là đủ. Một điều đặc biệt nữa là nguồn cung cấp của LM324 có thể hoạt động độc lập với nguồn tín hiệu. Ví dụ nguồn cung cấp của LM324 là 5V nhưng nó có thể làm việc bình thường với nguồn tín hiệu ở ngõ vào V+ và V- là 15V. Vấn đề cần quan tâm khi thiết kế mạch với IC LM324: -
Điện áp cung cấp: Nguồn cung cấp cho LM324 tầm từ 5V~32V.
-
Áp tối đa ngõ vào: từ 0~32V đối với nguồn đơn và cộng trừ 15V đối với nguồn đôi.
-
Công suất của Lm324 loại chân cắm (Dip): khoảng 1W.
-
Điện áp ngõ ra: từ 0 ~ (Vcc - 1,5V). + Dòng ngõ ra khi mắc theo kiểu đẩy dòng (dòng Sink): dòng đẩy tối đa đạt được
20mA. + Dòng ngõ ra khi mắc theo kiểu hút dòng (dòng Souce): dòng hút tối đa có thể lên đến 40mA. -
Tần số hoạt động của LM324: 1MHz.
-
Độ lợi khuếch đại điện áp DC của LM324 tối đa khoảng 100 dB.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 51
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Chương 5: CÁC GIẢI THUẬT PHẦN MỀM 5.1. Giải thuật cho vi điều khiển
Hình vẽ 5.1: Thuật toán khối vi điều khiển
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 52
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Chương trình CCS: #define __USB_PIC_PERIF__ 1//Pic lam thiet bi ngoai vi #include <18F4550.h> #device ADC=8
//khai bao thu vien Pic18f4550 //dung bo chuyen doi analog sang so 8 bit
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN //Cau hinh cho Pic #use delay(clock=48000000) //khai báo các hằng #DEFINE USB_HID_DEVICE TRUE // Sử dụng lớp HID #define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //Kiểu truyền ngắt #define USB_EP1_TX_SIZE
32 // Dùng 32 bytes bộ nhớ phần cứng
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT // Kiếu truyền ngắt #define USB_EP1_RX_SIZE
32 //Dùng 32 bytes bộ nhớ phần cứng
// Liet ke cac thu vien trong CCS #include
//Khai bao thu cvien usb trong pic18 #include //Cau hinh va mo ta thiet bi cho thiet bi USB #include
//cai dat ma nhan dang va mo ta thiet bi usb
#include //khai bao thu vien lcd 4 bit //Khai bao cac bien int16 CCP1Value,CCP2Value;
// Gia tri CCP hien tai
int16 CCP1OldValue,CCP2OldValue; // Gia tri CCP truoc do int16 dem=0;
//dem ngat timer1
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 53
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
int8 h=12; int16 freqAC_high,freqAC_low,freqPulse_high,freqPulse_low; //BOOLEAN CCP1Captured; //chuong trinh debug giam sat tinh trang ket noi cua usb vao host void usb_debug_task(void) { static int8 last_connected; static int8 last_enumerated; int8 new_connected; int8 new_enumerated; new_connected=usb_attached(); new_enumerated=usb_enumerated(); if(new_enumerated) { output_high(pin_b0); delay_ms(10); output_low(pin_b0); delay_ms(10); } else output_high(pin_b0); last_connected=new_connected; last_enumerated=new_enumerated; SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 54
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
} //dinh nghia cac gia tri host truyen xuong #define kenhAC
9
#define kenhPulse
10
#define kenhDC
11
#define ca3kenh
12
/////////////////////////////////////////// #int_timer1 void count_interupt() { dem++; } #int_ccp1 void capture_freqAC() { CCP1Value = CCP_1 +(65535*dem-CCP1OldValue); CCP1OldValue = CCP_1; dem=0; } #int_ccp2 void capture_freqFulse() { CCP2Value = CCP_2 +(65535*dem-CCP2OldValue); SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 55
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
CCP2OldValue = CCP_2; dem=0; } void main() { unsigned int8 in_data[8]; unsigned int8 out_data[8]; unsigned int8 timebase=100; unsigned int16 ADC0;//gia tri adc doc tu chan an0 unsigned int16 ADC1;//gia tri adc doc tu chan an1 unsigned int16 ADC2;//gia tri adc doc tu chan an2 unsigned int16 ADC3;//gia tri adc doc tu chan an3 output_high(pin_b0);//tat led o chan b0 output_low(pin_b4);// tat led o chan b4 output_low(pin_b2);// tat led o chan b2 output_low(pin_b3);// tat led o chan b3 //cai dat adc setup_adc(ADC_CLOCK_INTERNAL);//thoi gian chuyen doi ADC theo xung noi VĐK setup_adc_ports(AN0_TO_AN3 | VSS_VDD);//chon kenh do an0 ,an1,an2,an3 set_adc_channel(0); //capture gia tri timer1 SETUP_TIMER_1(T1_INTERNAL | T1_DIV_BY_8);//Timer1 định thì setup_ccp1(CCP_CAPTURE_RE);//Capture theo cạnh lên SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 56
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
setup_ccp2(CCP_CAPTURE_FE);//Capture theo cạnh xuống set_timer1(0); CCP1Value = 0; CCP1OldValue = 0; CCP2Value = 0; CCP2OldValue = 0; //CCP1Captured = TRUE; enable_interrupts(INT_CCP1);//dung bo capture1 enable_interrupts(INT_CCP2);//dung bocapture2 enable_interrupts(INT_TIMER1);//ngat timer1 enable_interrupts(GLOBAL);
//ngat toan cuc
usb_init(); lcd_init(); set_adc_channel(0); read_adc(); delay_us(1); lcd_putcmd(line_1); printf(lcd_putchar,"Do An Tot Nghiep
");
lcd_putcmd(line_2); printf(lcd_putchar," Khoa Dien-BKDN
");
delay_ms(2000); lcd_putcmd(line_1); printf(lcd_putchar," OscilloScope
");
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 57
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
lcd_putcmd(line_2); printf(lcd_putchar," Pic18F4550
");
while (TRUE) { usb_task(); usb_debug_task(); if (usb_enumerated()) { if (usb_kbhit(1)) { usb_get_packet(1, in_data, 8); switch (in_data[0]) { case 1: timebase = 4;
break;//1ms
case 2: timebase = 21;
break;//5ms
case 3: timebase = 43;
break;//10ms
case 4: timebase = 216;
break;//20ms
case 5: timebase = 436;
break;//50ms
case 6: timebase = 1248;
break;//100ms
case 7: timebase = 2456;
break;//200ms
case 8: timebase = 6125;
break;//500ms
} switch (in_data[1]) { SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 58
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
case kenhAC: //kenhAC { //bong bao output_high(pin_b4);//bat led b4 output_low(pin_b2);// tat led b2 output_low(pin_b3);// tat led b3 //Doc ADC set_adc_channel(0); delay_us(1); ADC0 = read_adc(); delay_us(5); set_adc_channel(2); delay_us(1); ADC2 = read_adc(); delay_us(5); //chia tan so freqAC_high=CCP1value /256;//byte cao cua tan so freqAC_low=CCP1value %256; //byte thap cua tan so //// truyen du lieu 8 bit out_data[0]=ADC0; out_data[1]=ADC2; out_data[4]=freqAC_high;//truyen byte cao cua tan so dong xoay chieu out_data[5]=freqAC_low;//truyen byte thap cua tan so dong xoay chieu SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 59
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
} break; case kenhPulse://kenh do xung { //led bao output_high(pin_b2);//bat led b2 output_low(pin_b4);//tat led b4 output_low(pin_b3);//tat led b3 //doc adc set_adc_channel(1); delay_us(1); ADC1 = read_adc(); delay_us(5); //chia tan so freqPulse_high=CCP2value /256;//byte cao cua tan so xung freqPulse_low= CCP2value %256; //byte thap cua tan so xung ////truyen du lieu 8 bit out_data[2]=ADC1; out_data[6]=freqPulse_high;//truyen byte cao cua tan so xung out_data[7]=freqPulse_low;//truyen byte thap cua tan so xung } break; case kenhDC://kenh DC SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 60
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
{ //led bao output_high(pin_b3);//bat led b3 output_low(pin_b2);//tat led b2 output_low(pin_b4);//tat led b4 //doc adc set_adc_channel(3); delay_us(1); ADC3 = read_adc(); delay_us(5); ////truyen du lieu 8 bit out_data[3]=ADC3; } break; case ca3kenh: //2 kenh AC va DC { //led bao// output_high(pin_b4);// output_high(pin_b2);// output_high(pin_b3);// //doc adc1 set_adc_channel(1); delay_us(1); SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 61
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
ADC1 = read_adc(); delay_us(5); //doc adc0 set_adc_channel(0); delay_us(1); ADC0 = read_adc(); delay_us(5); //doc adc2 set_adc_channel(2); delay_us(1); ADC2 = read_adc(); delay_us(5); //doc adc3 set_adc_channel(3); delay_us(1); ADC3 = read_adc(); delay_us(5); //chia tan so freqAC_high=CCP1value /256;//byte cao cua tan so dong xoay chieu freqAC_low=CCP1value %256; //byte thap cua tan so dong xoay chieu freqPulse_high=CCP2value /256;//byte cao cua tan so xung freqPulse_low= CCP2value %256; //byte thap cua tan so xung //truyen du lieu SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 62
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
out_data[0]=ADC0; out_data[1]=ADC2; out_data[2]=ADC1; out_data[3]=ADC3; out_data[4]=freqAC_high;//truyen byte cao cua tan so dong xoay chieu out_data[5]=freqAC_low;//truyen byte thap cua tan so dong xoay chiieu out_data[6]=freqPulse_high;//truyen byte cao cua tan so xung out_data[7]=freqPulse_low;//truyen byte thap cua tan so xung } break; } for(h=0;h
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 63
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
5.2. Giải thuật cho máy vi tính
Hình vẽ 5.2: Thuật toán trên máy vi tính SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 64
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Chương trình Visual basic 6.0: Option Explicit Dim timer As Long Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long Private Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal Color As Long) As Byte Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) Dim REX() 'REX[ ] holds the real part of the frequency domain Dim IMX() 'IMX[ ] holds the imaginary part of the frequency domain Private Sub Command1_Click() Unload Me End Sub Private Sub Command2_Click() If Command2.Caption = "Start" Then Command2.Caption = "Stop" Data.Enabled = True 'timer = 1 countt.Enabled = True Else Command2.Caption = "Start" Data.Enabled = False countt.Enabled = False SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 65
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
End If End Sub Private Sub Command3_Click() With TChart1 .Zoom.ZoomRect .Axis.Bottom.CalcXPosValue(50), _ .Axis.Left.CalcYPosValue(.Axis.Left.MaxYValue), _ .Axis.Bottom.CalcXPosValue(100), _ .Axis.Left.CalcYPosValue(.Axis.Left.MinYValue) End With End Sub Private Sub Command4_Click() TChart1.Zoom.Undo End Sub Private Sub Command5_Click() TChart1.Axis.Bottom.Scroll 10, False End Sub Private Sub Command6_Click() Form1.PrintForm End Sub Private Sub countt_Timer() timer = timer + 1 End Sub Private Sub Data_Timer() SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 66
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
On Error Resume Next Dim freqAC_low, freqAC_high As Byte ' tan so dong xoay chieu Dim freqPulse_low, freqPulse_high As Byte ' tan so xung Dim adc1_low, adc1_high As Byte ' adc kenh 1 Dim adc2_low, adc2_high As Byte 'adc kenh 2 Dim freq_sumAC As Long Dim freq_sumPulse As Long Dim total As Long Dim voltageAC, voltagePulse, voltageDC, freqAC, freqPulse, ADC1, ADC2, ADC3, ADC4, vhd, amp_display As Double If Not MyDeviceDetected Then FindTheHid If MyDeviceDetected Then Label2.Caption = "DETECTED USB" Label2.ForeColor = RGB(0, 255, 0) 'green Else Label2.Caption = "NOT DETECTED USB" Label2.ForeColor = RGB(255, 0, 0) 'red End If End If Call ReadAndWriteToDevice Call time_base Call select_channel SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 67
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
'//////////////////doc tan so kenh AC/////////////// freqAC_low = ReadBuffer(6) freqAC_high = ReadBuffer(5) freq_sumAC = freqAC_low + freqAC_high * 256 freqAC = 12000000 / (freq_sumAC * 8) '''''''''''''''''''''''''''''''' ''''''''''''doc tan so kenh do xung'''''''''''''''' freqPulse_low = ReadBuffer(8) freqPulse_high = ReadBuffer(7) freq_sumPulse = freqPulse_low + freqPulse_high * 256 freqPulse = 12000000 / (freq_sumPulse * 8) '''''''''adc va dien ap kenh do dien ap AC''''''''''''' 'adc1_high = ReadBuffer(1) 'adc1_low = ReadBuffer(2) 'ADC1 = adc1_low + adc1_high * 256 ADC1 = ReadBuffer(1) ADC3 = ReadBuffer(2) voltageAC = ADC1 / 255 * 50 ''dung de ve do thi amp_display = ADC3 / 255 * 50 ''dung de hien thi gia tri bien do vhd = amp_display / 1.41421356 ''gia tri hieu dung '''''''''''adc va dien ap kenh 2''''''''' 'adc2_high = ReadBuffer(3) 'adc2_low = ReadBuffer(4) SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 68
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
'ADC2 = adc2_low + adc2_high * 256 ADC2 = ReadBuffer(3) voltagePulse = ADC2 / 255 * 5 '''''''''Kenh do DC''''''''''' ADC4 = ReadBuffer(4) voltageDC = ADC4 / 255 * 50 ''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''hien thi ket qua lan cac label''''' ''''''hien thi kenh do dien ap AC Label4.Caption = "Freq_AC:" & " " & Format(freqAC, "0.00") & " " & "Hz" Label5.Caption = "RMS:" & "
" & Format(vhd + 3, "0.00")
Label6.Caption = "AMP:" & " " & Format(amp_display + 3, "0.00") & " " & "V" ''''''''''''hien thi kenh do dien ap Pulse'''''' Label7.Caption = "Freq_Pulse:" & " " & Format(freqPulse, "0.00") & " " & "Hz" Label8.Caption = "ADC Value:" & " " & Format(ADC2, "0") Label9.Caption = "Voltage Pulse:" & " " & Format(voltagePulse, "0.00") & " " & "V" ''''''''''''''hien thi dien ap DC'''''''''''''''''''''' Label23.Caption = Format(voltageDC, "0.00") & " " & "V" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''VE DO THI DANG SONG BANG TEECHART"""""""""""""""""" ''''''''////////tab do dien ap xoay chieu////////////////// TChart1.Axis.Left.SetMinMax -HScroll1.Value, HScroll1.Value TChart1.Series(0).AddXY timer * 1, voltageAC - 25, "", vbRed 've do thi SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 69
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
TChart1.Series(1).AddXY timer * 1, voltagePulse, "", vbBlue 've do thi TChart1.Series(3).AddXY timer * 1, voltageDC, "", vbGreen 've do thi 'TChart1.Series(3).AddXY timer * 1, voltage4, "", vbYellow 've do thi TChart1.Series(2).AddXY timer * 5, 0, "", vbBlack 've do thi truc hoanh TChart1.Page.Current = TChart1.Page.Count ''''''''////////tab do dien ap 1 chieu////////////////// 'TChart2.Axis.Left.SetMinMax -6, 6 'TChart2.Series(0).AddXY timer * 1, voltage3, "", vbGreen 've do thi 'TChart2.Series(1).AddXY timer * 1, voltage4, "", vbBlack 've do thi 'TChart2.Page.Current = TChart2.Page.Count '///////////////////////////////////////////////////////////////////////////// End Sub Private Sub time_Timer() Label3.Caption = " Time " & " " & Format(Now, "hh:nn:ss") End Sub Private Sub time_base() If Option1(0) Then OutputReportData(0) = 1 '1 Data.Interval = 1 ElseIf Option1(1) Then OutputReportData(0) = 2 '5 Data.Interval = 5 ElseIf Option1(2) Then SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 70
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
OutputReportData(0) = 3 '10 Data.Interval = 10 ElseIf Option1(3) Then OutputReportData(0) = 4 '20 Data.Interval = 20 ElseIf Option1(4) Then OutputReportData(0) = 5 '50 Data.Interval = 50 ElseIf Option1(5) Then OutputReportData(0) = 6 '100 Data.Interval = 100 ElseIf Option1(6) Then OutputReportData(0) = 7 '200 Data.Interval = 200 ElseIf Option1(7) Then OutputReportData(0) = 8 '500 Data.Interval = 500 End If End Sub Private Sub select_channel() If Option2(0) Then OutputReportData(1) = 9
'kenh AC==an0
Label4.Enabled = True 'kenh SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 71
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Label5.Enabled = True 'kenh Label6.Enabled = True 'kenh Label7.Enabled = False 'kenh Label8.Enabled = False 'kenh Label9.Enabled = False 'kenh Label22.Enabled = False 'kenh3 Label23.Enabled = False 'kenh3 ElseIf Option2(1) Then OutputReportData(1) = 10
'kenh Pulse==an1
Label7.Enabled = True 'kenh2 Label8.Enabled = True 'kenh 2 Label9.Enabled = True 'kenh2 Label4.Enabled = False 'kenh1 Label5.Enabled = False 'kenh1 Label6.Enabled = False 'kenh1 Label22.Enabled = False 'kenh3 Label23.Enabled = False 'kenh3 ElseIf Option2(2) Then OutputReportData(1) = 11
'kenh DC==an3
Label7.Enabled = False 'kenh2 Label8.Enabled = False 'kenh 2 Label9.Enabled = False 'kenh2 Label4.Enabled = False 'kenh1 SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 72
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Label5.Enabled = False 'kenh1 Label6.Enabled = False 'kenh1 Label22.Enabled = True 'kenh3 Label23.Enabled = True 'kenh3 ElseIf Option2(3) Then OutputReportData(1) = 12 ' ca 3 kenh Label4.Enabled = True 'kenh1 Label5.Enabled = True 'kenh1 Label6.Enabled = True 'kenh1 Label7.Enabled = True 'kenh2 Label8.Enabled = True 'kenh2 Label9.Enabled = True 'kenh2 Label22.Enabled = True 'kenh3 Label23.Enabled = True 'kenh3 End If End Sub
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 73
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Chương 6: KẾT QUẢ VÀ NHẬN XÉT
6.1.Kết quả đạt được: Giao diện chương trình Visual Basic 6.0:
Dạng sóng điện áp 50Hz:
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 74
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Dạng xung 10KHz:
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 75
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Mô hình thực tế:
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 76
ĐỒ ÁN TỐT NGHIỆP
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
GVHD: TS. Nguyễn Văn Minh Trí
Trang 77
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
6.2. Kết luận: 6.2.1 Kết quả đạt được: Qua thời gian tìm hiểu và nghiên cứu,em đã hoàn thành đồ án với những kết quả đạt được như sau: -Đã hoàn thành nhiệm vụ của đồ án là thiết kết chế tạo một bộ đo hiển thị dạng sóng điện áp sử dụng vi điều khiển Pic18F4550 (của hãng Microchip) ghép nối máy tính qua chuẩn giao tiếp USB 2.0 . -Đã chế tạo thành công bộ đo sóng đơn giản,rẽ tiền,nhưng cũng khá chất lượng với cấu tạo đơn giản,dễ nâng cấp phần cứng lẫn phần mềm,có giao diện người dùng dễ sử dụng,ghép nối với máy tính qua cáp USB gọn nhẹ phục vụ cho việc học tập và nghiên cứu của sinh viên,đặc biệt là những sinh viên chuyên ngành về Điện-Điện tử. -Thiết bị chế tạo có thể đo được điện áp từ 0-50 V với điện áp một chiều,và từ 0-35 V đối với điện áp xoay chiều.Ngoài ra có thể đo và hiển thị dạng sóng của điện áp có tần số từ 50Hz-10KHz. -Thiết bị hoạt động khá ổn định. 6.2.2 Những hạn chế của đề tài: Do hạn có hạn chế về mặt thời gian tìm hiểu đối với dòng Pic18 của Microchip và chuẩn giao tiếp USB 2.0,cũng như một số điều kiện khách quan lẫn chủ quan khác mà đề tài còn một số hạn chế như sau: - Kết quả hiển thị vẫn chưa đạt được độ chính xác cao. - Giới hạn thang đo điện áp và tần số còn thấp. - Phần mô hình thiết bị vẫn chưa được gọn nhẹ tối ưu. -Vẫn còn nhiễu về dạng sóng khi đo nhiều kênh cùng một lúc.
6.2.3 Hướng phát triển và ứng dụng đề tài vào thực tế:
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 78
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Để thiết bị của đề tài thực sự được đi vào thực tế khai thác hiệu quả với mục đích phục vụ cho việc học tập nghiên cứu của học sinh sinh viên thì cần có một số cải tiến và hoàn thiện đề tài như sau: -Nâng cao dãi điện áp và tần số đo cho thiết bị. -Tìm cách chống nhiễu cho thiết bị khi đo cùng lúc nhiều kênh,để thiết bị hoạt động đúng chức năng là đo đa kênh. -Có thể dùng những loại vi điều khiển cấp cao hơn,mạnh hơn như DsPic,Pic32 …sử dụng chuẩn giao tiếp USB 3.0 để tăng tốc độ xử lý,tốc độ truyền dữ liệu để kết quả đo gần sát với giá trị thực tế hơn. Sử dụng những chip có bộ chuyển đổi analog sang số (khối ADC) có độ phân gian cao hơn để dạng sóng điện áp ra mịn hơn,chính xác hơn…
Phụ Lục Trình biên dịch CCS và mạch nạp Burn-E
I.Giới thiệu về trình biên dịch CCS 1.Tổng quan về CCS: SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 79
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
CCS là trình biên dịch ngôn ngữ lập trình bậc cao C cho vi điều khiển Pic của Microchip.Chương trình này là sự tích hợp của 3 trình riêng biệt cho 3 dòng Pic khác nhau đó là: -PCB cho dòng Pic 12-bit opcodes -PCM cho dòng Pic 14-bit opcodes -PCH cho dòng Pic 16 và 18 bit Tất cả 3 trình biên dịch này được tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và trình biên dịch CCS.
1. Ưu và nhược điểm của trình biên dịch CCS: Hiện nay có nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển như: KeilC,HT-PIC,MikroC ,CCS…Tuy nhiên ở trong đồ án này em chọn trình biên dịch CCS vì những ưu và nhược điểm sau: + Ưu điểm: - Dễ sử dụng vì nó đơn giản,nó gần với ngôn ngữ C bình thường. - Có hỗ trợ một khối lượng lớn các thư viện có sẵn,người dùng có chỉ cần khai báo ra và sử sụng.Do vậy có thể rút ngắn thời gian lập trình.Người dùng cũng có thể tạo ra những thu viện riêng biệt theo nhu cầu trong dự án của mình. - Có hỗ trợ nhiều công cụ đi kèm,có phần Help khá đầy đủ hỗ trợ cho việc tự học tập. - Nó phổ biến và ra đời từ khá sớm nên có nhiều tài liệu để tham khảo,học tập và nghiên cứu. - Người viết không nhất thiết phải nắm vững về phần cứng của Vi điều khiển. -Giao diện chương trình đơn giản,dễ sử dụng để tạo ra cac Project của mình. + Nhược điểm: -Không thể kết hợp với cú pháp của chương trình khác. -Không tối ưu về code,cùng nột chương trình thì ngôn ngữ Asembly cho chip chạy ổn định hơn và độ dài mã máy ngắn hơn. -Khó có thể lập trình theo hướng thời gian thực và những ứng dụng khắt khe về thời gian tính toán. SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 80
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
3. Giao diện chương trình biên soạn và biên dịch CCS:
II. Mạch nạp chương trình Burn -E: Hình dạng bên ngoài của mạch nạp Burn-E
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 81
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
Các thông số của mạch nạp: -Board sợi RF4 2 lớp, dày 1.0mm.Linh kiện bố trí trên một mặt duy nhất. -Kích thước 62x20x9 mm. -Giao tiếp USB 2.0 Full speed 12Mbits/s. -Đường nạp nối tiếp ICSP -6 chân. -Cập nhật Firmware qua phần mềm Burn-E. -Tương thích với hệ điều hành Windows Xp,Vista,Win 7(32bit va 64 bit). -Không cần cài đặt Driver.(Plug and Play) Mạch nạp và phần mềm Burn-E cố thể hỗ trợ tới 700 Chip khác nhau của nhiều nhà sản xuất. Giao diện chương trình nạp Burn-E:
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 82
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS. Nguyễn Văn Minh Trí
III. Tài liệu tham khảo: [1] Microchip technology Inc. – PIC18F2455/2550/4455/4550 datasheet. [2] Datasheet LM324, TL084, LM741,LM7805,LM7812 [3] Help CCSC, Microchip. [4] Các tài liệu nước ngoài tham khảo trên Internet Usb-in-a-nutshell,Usb complete,Usb connectors. [5] Giáo trình Vi điều khiển –Trần Thái Anh Âu-Khoa Điện-ĐHBK Đà Nẵng. [6] Giáo trình Ghép nối và điều khiển thiết bị ngoại vi-Nguyễn Văn Minh Trí-Khoa Điện-ĐHBK Đà Nẵng. [7] Giáo trình Kỹ thuật xung số-Lâm Tăng Đức & Trần Đình Khôi Quốc-Khoa ĐiệnĐHBK Đà Nẵng. [8] Các trang web và diễn đàn như: http://www.google.com.vn/, http://www.picvietnam.com/forum/ http://www.dientuvietnam.net/forums/forum.php Và một số trang web và một số diễn đàn của nước ngoài khác.
SVTH: Võ Quang Huy – Hồ Quang Hiếu- Lớp: 08D1
Trang 83