ỨNG DỤNG VI ĐIỀU KHIỂN PIC 16F877A TRONG THÍ NGHIỆM VẬT LÍ PHỔ THÔNG Nguyễn Huỳnh Duy Khang Sinh viên năm 4, Khoa Vật lí GVHD: HVCH Trần Đặng Bảo Ân, TS Nguyễn Lâm Duy TÓM TẮT Đề tà
Trang 1ỨNG DỤNG VI ĐIỀU KHIỂN PIC 16F877A TRONG THÍ NGHIỆM VẬT LÍ PHỔ THÔNG
Nguyễn Huỳnh Duy Khang
(Sinh viên năm 4, Khoa Vật lí)
GVHD: HVCH Trần Đặng Bảo Ân,
TS Nguyễn Lâm Duy
TÓM TẮT
Đề tài này nêu ra một ứng dụng vi điều khiển nhằm thiết kế một bộ thí nghiệm đo đạc thời gian và xử lí dữ liệu dùng trong khảo sát các thí nghiệm cơ học thuộc chương trình vật lí trung học phổ thông Không chỉ dùng để đo thời gian đến bậc sai số
6
6.6 10 s bằng cách xử lí các tín hiệu từ cổng hồng ngoại và nam châm điện; bộ thí nghiệm tương tác với người dùng bằng ma trận bàn phím hoặc máy tính cá nhân Từ
đó bộ thí nghiệm trở nên cơ động hơn trong đo đạc và tự động xử lí kết quả nhằm phục
vụ cho các bài thí nghiệm kiểm chứng ngay tại lớp học
Từ khóa: vi điều khiển, thí nghiệm cơ học, thí nghiệm kiểm chứng
ABSTRACT
This project indicates an application of the microcontroller in order to design a set of experiments for time measurement and data processing It is used to study mechanical experiments in the high school physics syllabus The set of experiments is used not only to measure the time to high accuracy of 6
6.6 10 s through signal processing from infrared gate and electromagnet but also to interact with the users through keyboard matrix or personal computer From that point, the set of experiments becomes more mobile in measurement and automatic result processing to serve the experimental vertication in the classroom
Keywords: microcontroller, mechanical experiment, experimental vertication
1 Mở đầu
Thí nghiệm dạy học vật lí trong trường phổ thông là một phương tiện quan trọng
có tác dụng to lớn trong việc giúp học sinh chiếm lĩnh các tri thức và kĩ năng Tuy nhiên, do điều kiện cơ sở vật chất còn thiếu thốn, việc lồng ghép các thí nghiệm vật lí
là rất khó khăn Những giờ thực hành trên lớp đúng ra phải theo phân phối chương trình nhưng thực tế lại được tổ chức thực hành qua loa hoặc chuyển sang giờ luyện tập,
ôn thi [3] Và vấn đề đang được đặt ra: Làm sao có thể tự tay tạo ra những thiết bị phục
vụ cho việc dạy học được tốt hơn, hiệu quả hơn
Nói đến sự phát triển của kĩ thuật hiện đại, đa số chúng ta đều hình dung ngay là
sự tăng tốc thần kì của lĩnh vực điện tử và vi tính Mới ngày nào, kết cấu của những mạch điện cồng kềnh, thì bây giờ tất cả đều được tích hợp thành những mảng chuyên dụng mang nhiều chức năng ngày càng thông minh, độc đáo [1] Vi điều khiển cũng nằm trong số đó, từ họ vi điều khiển truyền thống 8051 hiện nay đã phát triển thành với
Trang 2các họ vi điều khiển 8 bit [4], 16 bit [5], [6] hay thậm chí 24 bit [6] với các họ vi điều khiển xử lí tốc độ cao Với các tính năng ngày càng được mở rộng, vi điều khiển ngày càng được ứng dụng rộng rãi từ các thiết bị cầm tay cho đến các thiết bị công nghiệp trong các dây chuyền sản xuất tự động, hệ thống đo lường, giám sát, nơi nào chúng ta cũng đều thấy sự có mặt của vi điều khiển
Trong bài báo này, chúng tôi ứng dụng các mođun của vi điều khiển PIC 16F877A nhằm tạo ra bộ dụng cụ dùng trong đo đạc thời gian và xử dữ liệu phục vụ cho các bài thí nghiệm chứng minh ngay tại lớp học
2 Dụng cụ đo và xử lí thời gian sử dụng PIC 16F877A
Để tạo ra được dụng cụ này, đòi hỏi phải xây dựng từng bước các thành phần điện - điện tử khác nhau và kiểm tra hoạt động của chúng trên Proteus, testboard, cũng như xây dựng chương trình cho vi điều khiển PIC 16F877A Đây là những bước quan trọng nhất và quyết định đến độ ổn định, tính khả thi của bộ thí nghiệm
Sau khi thử nghiệm trên testboard và mô phỏng trên Proteus, sơ đồ mạch trên Orcard và chương trình giao tiếp cho PIC 16F877A với máy tính sẽ được thiết kế Mạch in được gia công, các linh kiện sẽ được hàn và kiểm tra hoạt động lần lượt từng
bộ phận
Hình 1 Quá trình thực hiện 2.1 Sơ đồ khối
Hình 2 Sơ đồ khối dụng cụ đo và xử lí thời gian
Sơ đồ khối dụng cụ đo và xử lí thời gian được thể hiện trên hình 2 Dụng cụ bao gồm 6 khối chính, trong đó vi điều khiến PIC 16F877A là khối xử lí trung tâm, 5 khối
Trang 3còn lại đóng vai trò là các bộ phận ngoại vi truyền tín hiệu thông qua điều khiển PIC 16F877A
2.2 Khối xử lí trung tâm
Hình 3 Lưu đồ chương trình chính
Đây là khối đóng vai trò quyết định cho máy đo và xử lí thời gian Khối xử lí trung tâm hay PIC 16F877A có nhiệm vụ nhận thông tin từ các thiết bị ngoại vi và điều khiển chúng
Trang 4Hoạt động PIC 16F877A chịu sự điều khiển của người lập trình qua chương trình được viết sẵn và nạp cho PIC 16F877A (Code_for_pic_16f877a.ccs) Lưu đồ thuật toán PIC 16F877A được thể hiện trên hình 3
Trong chương trình chính code_for_pic_16f877a.ccs, PIC 16F877A khởi tạo chế
độ I/O cho các chân, thiết lập hiển thị LCD và giao tiếp RS232 qua cổng COM cho vi điều khiển Sau đó, PIC 16F877A sẽ hiển thị các bài thí nghiệm trong chương trình vật
lí trung học phổ thông Tùy vào mục đích sử dụng, người dùng sẽ lựa chọn bài thí nghiệm và ứng với mỗi bài thí nghiệm sẽ có những chương trình con tương ứng (con_lac_đơn, roi_tu_do, he_so_ma_sat, cd_thang_deu)
2.3 Bộ định thời
Xung đếm được tạo ra nhờ thạch anh điện tử có tần số 20MHz Thạch anh tần số 20MHz sẽ tạo cho vi điều khiển chu kì lệnh có tần số 5MHz (1 chu kì lệnh bằng 4 lần chu kì dao động)
Sử dụng TIMER 1 ở chế độ định thời 16 bit, xung đếm 5MHz được đưa đến bộ Prescaler (chia 8) cho ra xung có tần số 0.625MHz Hai thanh ghi TMR1H: TMR1L sẽ ghi nhận giá trị xung 0.625MHz ngay sau cạnh xuống đầu tiên và giá trị TMR1H:TMR1L tiếp tục tăng sau mỗi cạnh lên của xung ngõ vào
Thanh ghi TMR1H:TMR1L có độ dài 16 bit cho phép đếm tối đa đến giá trị
65535 Nếu vượt quá giá trị này, TMR1H:TMR1L sẽ được trả về 0 Bằng cách ghi nhận thời điểm xảy ra tràn số đếm thông qua ngắt tràn Timer1 và lưu tổng số lần tràn qua biến m ta thể xác định được thời gian t:
6
1
0.625 10
t m TMR H TMR L s
Hình 4 Bộ định thời cho PIC 16F877A
Như vậy, sử dụng thạch anh điện tử, chức năng TIMER 1 và ngắt báo tràn TIMER1 ta đã tạo ra được bộ định thời cho PIC 16F877A
2.4 Giao tiếp máy tính
Giao tiếp vi điều khiển với máy tính đóng vai trò quan trọng trong việc thực hiện tương tác giữa người dùng và PIC 16F877A Công việc này thực hiện nhờ sự hỗ trợ IC Max – 232 thông qua chuẩn RS232
Trang 5Hình 5 Giao tiếp RS232 qua IC Mac – 232
Hình 6 là giao diện giao tiếp giữa vi điều khiển và máy tính được viết trên nền Visual basic Ngoài chức năng nhập các thông tin bên ngoài (1), (2) thay thế cho ma trận bàn phím, kết quả thu được sau sau khi tính toán và đo đạc (3) có thể được lưu dưới dạng file word (4)
Giao tiếp giữa vi điều khiển và máy tính qua chuẩn RS232 không đòi hỏi sự phức tạp quá công việc Ngược lại, chính nhờ sự hỗ trợ của giao tiếp mà người dùng có thể giải quyết được nhiều việc hơn và là công cụ trực quan sinh động cho các bài thí nghiệm vật lí minh họa ngay tại lớp (hình 7)
3 Đánh giá sai số
Hình 6 Giao diện giao tiếp
với máy tính cho Pic 16F877A
4
2
Hình 7 Thí nghiệm con lắc đơn
dùng giao tiếp máy tính
Trang 6Trong quá trình xử lí tín hiệu có liên quan đến bộ định thời, vi điều khiển hoạt động sẽ mắc sai số Các sai số này bao gồm sai số do bộ nhớ dữ liệu và sai số hệ thống
3.1 Sai số do bộ nhớ dữ liệu
Trong quá trình xử lí, vi điều khiển lưu biến thời gian t dưới dạng số thực, đây là kiểu số thực có độ dài dữ liệu 32 bits Cấu trúc kiểu số thực (hình 8) gồm có 8 bits cao lưu giá trị số mũ, 1 bit lưu dấu của dữ liệu và 23 bits thấp lưu phần định trị Với số mũ
là 20= 1, giá trị nhỏ nhất của phần định trị là Như vậy, với giá trị thời gian
đo đạc là 1s thì sai số do bộ nhớ dữ liệu là Trong các bài thí nghiệm cơ học thuộc chương trình vật lí trung học phổ thông thời gian đo không vượt quá 100 s, sai số
do bộ nhớ dữ liệu có giá trị lớn nhất là
Hình 8 Cấu trúc dữ liệu kiểu số thực 32 bits 3.2 Sai số hệ thống
3.2.1 Sai số do code lập trình
Khi có tín hiệu đưa đến vi điều khiển, PIC 16F877A sẽ kích ngắt để lấy giá trị biến m là biến xảy ra số lần tràn và biến TMR1H:TMR1L xác định giá trị đếm hiện tại của Timer1 Hai giá trị này sẽ phục vụ cho công việc xác định thời gian cần đo đạc Như vậy sai số sẽ xuất hiện trong khoảng thời gian từ khi kích ngắt và trong thời gian PIC 16F877A lấy giá trị hai biến m và TMR1H:TMR1L
Hình 9 Sai số do code lập trình 3.2.2 Sai số do tín hiệu hồng ngoại là ngắt nam châm điện
Hình 10 Đánh giá sai số lí thuyết Hình 11 Kiểm tra sai số
Trang 7Khi có tín hiệu từ cảm biến hồng ngoại hay ngắt nam châm điện, bộ định thời sẽ bắt đầu hoạt động bằng cách tăng giá trị TMR1H: TMR1L sau mỗi lần có cạnh tác động xảy ra Sai số ở đây mắc phải do tín hiệu đưa đến và cạnh tác động cho TMR1H: TMR1L chưa đồng bộ: tín hiệu đến không đúng thời điểm mà xung đếm ở cạnh lên (hình 10)
Sai số hệ thống gây cho vi điều khiển độ trễ làm việcvà độ trễ này không thay đổi khi đo các giá trị thời gian khác nhau Bằng cách sử dụng máy phát dao động cấp cho vi điều khiển PIC 16F877A, sai số hệ thống được xác định vào khoảng 6
6.6 10 s Trong các bài thí nghiệm vật lí phổ thông, sai số yêu cầu 10-3s Như vậy, bộ định thời trên là chấp nhận được
3.3 Sai số máy đo thời gian hiện số MC – 964
So sánh kết quả với máy đo thời gian gian hiện số MC – 964, chúng tôi sử dụng tạo ra xung tần số 2 Hz từ máy phát dao động đưa vào máy MC – 964 ở chế độ đo chu
kì (hình 12)
Hình 12 Đồ thị so sánh sai số tỉ đối giữa máy đo thời gian hiện số MC – 964
và máy đo và xử lí thời gian sử dụngPIC 16F877A
Bảng 1 Kết quả đo tần số 2Hz của MC –964
Chu kì chuẩn T = 1s STT Số chu kì
(n) t (s) T(s) T(s)
Chu kì đo: T = 0,9964 0,0036 s
Sai số tỉ đối: = 0,36%
Trang 8Máy đo thời gian hiện số MC - 964 mắc sai số lớn (1%) với số chu kì đo nhỏ (n<8) và cho giá trị càng chính xác khi lấy số chu kì đo càng lớn Như vậy, với các bài thí nghiệm như đo thời gian vật chắn cổng quang điện hay đo gia tốc rơi tự do, do thời gian lấy tính hiệu ngắn, chỉ trong một xung đến nên MC - 964 sẽ mắc sai số lớn, kết quả đo kém chính xác Với dụng cụ đo và xử lí thời gian sử dụng PIC 16F877A, sai số
tỉ đối khi đo tần số 2Hz là = 0,01% So với máy đo thời gian hiện số MC - 964, máy
đo và xử lí thời gian sử dụng PIC 16F877A cho kết quả với độ chính xác cao
4 Kết quả
Áp dụng thí nghiệm này để khảo sát: chu kì con lắc đơn, hệ số ma sát trượt trên mặt phẳng nghiêng giữa máng nghiêng bằng nhôm – vật thép, gia tốc rơi tự do và vận tốc tức thời, vận tốc trung bình chuyển động thẳng đều của bi thép Đây là các thí nghiệm được tiến hành theo nội dung thí nghiệm thuộc chương trình vật lí trung học phổ thông
Bảng 2 Chu kì con lắc đơn
s = 410 1 mm, nT=5 chu kì
Gia tốc trọng trường: g = 9,751 0,010 m/s2
Bảng 3 Xác định gia tốc rơi tự do
Thời gian rơi t (s) Lần đo
i
i i
s g t
500 0,320 0.320 0,320 0,321 0,320 0,320 0,103 9,753
550 0,336 0,335 0,336 0,335 0,336 0,336 0,113 9,767
600 0,351 0,350 0,350 0,351 0,351 0,351 0,123 9,762
Gia tốc rơi tự do: g = 9,761 0,005 m/s2
So sánh kết quả thu được trên máy đo và xử lí thời gian sử dụng PIC 16F877A với máy đo thời gian hiện số MC – 964, ta thu được đồ thị ở hình 13
Trang 9Hình 13 Đồ thị so sánh gia tốc rơi tự do giữa máy đo thời gian hiện số MC –
964 và máy đo và xử lí thời gian sử dụngPIC 16F877A TN1: Thí nghiệm đo gia tốc rơi
tự do,TN2: Thí nghiệm đo chu kì con lắc đơn
Giá trị đo gia tốc rơi tự do ở Thành phố Hồ Chí Minh (vĩ độ 10o8’B) có giá trị 9,787m/s2 Như vậy máy đo thời gian hiện số MC – 964 cho kết quả kém chính xác hơn máy đo và xử lí thời gian sử dụng PIC 16F877A
Bảng 4 Xác định hệ số ma sát trượt
s = 400 1 mm
t
t = 0,2056 0,0005
Trang 10Hình 14 Đồ thị so sánh hệ số ma sát giữa máy đo thời gian hiện số MC – 964
và máy đo sử dụngPIC 16F877A
Do sự phụ thuộc của hệ số ma sát vào tính chất mặt tiếp xúc giữa vật và mặt nghiêng (bụi, độ ẩm, độ trầy xước cả vật và mặt nghiêng, ) nên độ chệnh lệch hệ số
ma sát (khoảng 0,010) có thể chấp nhận được, các kết quả xem như tương đương
Bảng 5 Xác định vận tốc tức thời và vận tốc trung bình
d = 20,70 0,02 mm
1
tt
d v t
t
Vận tốc tức thời:
vtt = 0,616 0,009 m/s
Vận tốc trung bình:
vtb = 0,576 0,001 m/s
Trang 11Hình 15 Đồ thị so sánh vận tốc tức thời (hình 15a) và vận tốc trung bình (hình 15b)
giữa máy đo thời gian hiện số MC – 964 và máy đo và xử lí thời gian sử dụng PIC
16F877A
Nhận xét: Do máy MC - 964 mắc sai số lớn khi đo thời gian ngắn (thời gian viên
chắn cổng quang điện) và độ chính xác càng cao khi đo thời gian càng lớn nên giá trị vận tốc tức thời đo được ở hai máy có sự chênh lệch khá rõ ở đồ thị hình 15a Trong khi đó, do đo vận tốc trung bình trong thời gian tương đối lớn nên kết quả hai máy thu được là như nhau (đồ thị hình 15b)
5 Kết luận
Từ những kiến thức cơ bản về điện – điện tử và vi điều khiển, chúng tôi đã thiết
kế được dụng cụ đo và xử lí thời gian dùng vi điểu khiển PIC 16F877A có độ chính xác cao hơn so với đồng hồ đếm thời gian hiện số MC – 964 đang đuợc sử dụng tại các phòng thí nghiệm vật lí phổ thông Dụng cụ đo và xử lí thời gian dùng PIC 16F877A
có khả năng làm việc và xử lí kết quả thu được dựa vào nguồn code nạp sẵn do đó làm tăng tính tự động cho thiết bị Đây là dụng cụ giúp tối ưu hóa các bài thí nghiệm minh họa trên lớp Ngoài ra, dụng cụ đo và xử lí thời gian dùng PIC 16F877A có khả năng loại nhiễu tốt nhờ vào hệ thống code bẫy lỗi, tạo độ tin cậy cao trong quá trình đo đạc
và tính toán
Dụng cụ đo và xử lí thời gian dùng vi điểu khiển PIC 16F877A chỉ dừng lại trong
đo đạc các bài thí nghiệm cơ học đơn giản dùng đến cổng hồng ngoại và nam châm điện Vì vậy, đề tài có thể phát triển theo hướng mở rộng cho các thí nghiệm quang học, điện học cùng nhiều thí nghiệm khác trong chương trình vật lí trung học phổ thông
Trang 12TÀI LIỆU THAM KHẢO
1 Đỗ Thanh Hải, Ngô Thanh Hải (2003), Nguyên lí căn bản và ứng dụng mạch điện
tử, Nxb Thanh niên
2 Trần Đặng Bảo Ân (2011), Xây dựng bộ thí nghiệm khảo sát chuyển động của vật dưới tác dụng của trọng trường, luận văn tốt nghiệp, Đại học Sư phạm TPHCM
3 Dương Xuân Quý (2010), “Vấn đề sử dụng thiết bị thí nghiệm vật lí trong trường
phổ thông thực trạng và giải pháp”, Tạp chí thiết bị giáo dục, số 61
4 Martin P.Bates (2007), “Programming 8-Bit PIC Microcontroller in C with
interactive Hardware Simulation”, Newnes, UK
5 Lucio Di Jasio (2007), Programming 16-Bit PIC Microcontroller in C Learning to
Fly the PIC24, Elsevier, USA
6 Microchip Technology (2003), “Microchip PIC16F877A Data sheet 28/40/44-Pin
enhanced flash Microcontrollers”, Microchip Technology