5. Phương pháp nghiên cứu
4.3. KHỐI XỬ LÍ TRUNG TÂM PIC16F877A
Đâ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.
Hoạ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
1. Nghiên cứu lý thuyết
2. Viết chương trình và giao
diện giao tiếp cho PIC 3. Kiểm tra hoạt động trên
EasyPIC, testboard và 4. Vẽsơ đồOrcard mạch trên 5. Làm mạch in hàn và kiểm tra hoạt động từng
6. Hoàn thành dụng cụ
Bàn phím 4×4
Vi điều khiển PIC 16F877A
Giao tiếp máy tính Hiển thị LCD 20x4 Bộđịnh thời
51
(Code_for_PIC_16f877a.ccs). Lưu đồ thuật toán PIC 16F877A được thể hiện trên hình 4.4.
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. Các chương trình con này được thể hiện trong các lưu đồ thuật toán hình 4.5 và 4.6.
52
Chương trình con:
CHƯƠNG TRÌNH CHÍNH
Thiết lập LCD và giao tiếp RS232 Thiết lập chức năng I/O các Port
RA0 = 1 Hiển thị tiêu đề trên LCD
Nhấn phím? Không Chọn bài thí nghiệm 1: Con lắc đơn 2: Rơi tự do 3: Hệ số ma sát 4: Chuyển động thẳng đều Có Subprocess 1: con_lac_don Subprocess 2: roi_tu_do Subprocess 3: He_so_ma_sat Subprocess 4: chuyen_dong_tha ng_deu Nhấm phím? #1,2,3,4 1,2,3,4 Hình 4.4: Lưu đồchương trình chính. Subprocess 1: con_lac_don
Nhập chiều dài dây Nhập chu kì đo Vật chắn cổng lần 1? Bật bộ định thời Đếm Có Không Subprocess 2: roi_tu_do
Nhập quãng đường rơi
Ngắt nam châm? Bật bộ định thời Đếm Có Không Không
53
a) b)
Hình 4.5: Lưu đồchương trình con: (a) con lắc đơn; (b) rơi tự do.
Subprocess 3: he_so_ma_sat
Nhâp quãng đường trượt Nhập góc nghiêng Ngắt nam châm? Bật bộ định thời Đếm Có Không Subprocess 4: chuyen_dong_thang_deu Ngắt nam châm? Bật bộ định thời Vật chắn 2 cổng quang điện Tắt bộ định thời
Xuất kết quả chắn 2 cổng quang điện Có Đếm Có Không Không Thời gian chắn 2 bằng nhau Không bằng
54
a) b)
Hình 4.6: Lưu đồchương trình con: (a) Hệ sốma sát; (b) Chuyển động thẳng
đều.
Tùy vào độ phức tạp của các bài thí nghiệm trong chương trình vật lí trung học phổ thông mà lưu đồ thể hiện trong hình 4.5 và hình 4.6 có sự phức tạp khác nhau. Tuy nhiên, tất cả các lưu đồ đều có chung đặc điểm là yêu cầu dữ liệu đầu vào, tính toán thời gian giữa các xung tín hiệu và xuất dữ liệu đầu ra. Ví
55
dụ: Trong lưu đồ con_lac_don (hình 4.5a), vi điều khiển sẽ yêu cầu người sử dụng nhập dữ liệu qua ma trận bàn phím hay máy tính cá nhân, bằng cách sử dung bộ định thời PIC 16F877A sẽ xác định chính xác giá trị thời gian đo t, qua
quá trình xữ lí PIC 16F877A sẽ xuất kết quả qua LCD và máy tính cá nhân thông qua chuẩn giao tiếp RS232.
Khi hoạt động, do ảnh hưởng đều kiện bên ngoài, khi có tín hiệu từ cổng quang điện và ngắt nam châm đưa đến vi điều khiển, nhiễu tín hiệu sẽ xuất hiện, gây ảnh hưởng không nhỏ đến chế độ làm việc của máy đo.
Hình 4.7:Code bẫy lỗi cho vi điều khiển PIC 16F877A
Thông qua ngôn ngữ lập trình bậc cao CCS, hệ thống code bẫy lỗi sẽ được thiết kế cho vi điều khiển. Bằng cách xác định tín hiệu đếm và thời gian lấy tín hiệu, nhiễu tín hiệu sẽ được vi điều khiển loại bỏ, tạo độ tin cậy cao cho người dùng.
4.3.1. Bộđịnh thời
Xung đếm được tạo ra nhờ thạch anh điện tử có tần số 20 MHz. Thạch anh tần số 20 MHz sẽ tạo cho vi điều khiển chu kì lệnh có tần số 5 MHz (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 5 MHz được đưa đến bộ Prescaler (chia 8) cho ra xung có tần số 0.625 MHz. Hai thanh ghi TMR1H:TMR1L sẽ ghi nhận giá trị xung 0.625 MHz 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 (hình 4.8).
56
: vị trí giá trị thanh ghi TMR1H:TMR1L tăng thêm 1
Hình 4.8:Cạnh tác động TMR1H:TMR1L.
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 xác định được thời gian t:
6 1 ( 65536 1 : 1 ) 0.625 10 t= m× +TMR H TMR L × s × (5.1)
Hình 4.9: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.
4.3.2. 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 và được thể hiện trên sơ đồ nguyên lí hình 4.10.
Thạch anh 20M PIC 16F877A 5MHz
TMR1H:TMR1L PS1:PS0 Chia 8 m×65536+TMR1H:TMR1L m++ 0,625MHz
57
Giao tiếp giữa RS232 và PIC 16F877A phải thông qua chương trình nhằm nhận biết được dữ liệu truyền lên và nhận xuống như thế nào. Để thực hiện công việc này, người sử dụng có thể sử dụng các phần mềm như Hyper Terminal, Flash Magic,....
Hình 4.10: Giao tiếp RS232 qua IC Max – 232.
Đây là những chương trình có sẵn không thể tùy chỉnh nên dùng giao tiếp tạm thời giữa vi điều khiển và người sử dụng. Phục vụ cho quá trình đo đạc và xử lý số liệu trực tiếp, tiết kiệm thời gian cũng như công sức cho các bài thí nghiệm vật lý phổ thông minh họa tại lớp, người dùng cần tạo ra một giao diện
Hình 4.11: Giao diện giao tiếp
với máy tính cho PIC 16F877A.
4
1 3
2
Hình 4.12: Thí nghiệm con lắc đơn
58
cho riêng mình. Visualbasic, C++ hay Matlab,... là những công cụ hỗ trợ hữu hiệu. Trên nền tảng ngôn ngữ lập trình, người dùng có thể tạo ra giao diện giao tiếp giữa vi điều khiển và máy tính sao cho tối ưu và đạt hiệu quả nhất.
Hình 4.11 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 hoá 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 4.12).
4.3.3. Cổng quang điện và ngắt nam châm
Cổng quang điện và ngắt nam châm là những bộ phận không thể thiếu, chúng đảm nhiệm chức năng ghi nhận tín hiệu: lúc thả vật, khi vật chắn cổng, nhờ đó PIC 16F877A xác định chính xác thời điểm bắt đầu và dừng hoạt động đếm của bộ định thời.
4.3.3.1. Cổng quang điện
Cổng quang quang điện hay bộ phận cảm biến cấu tạo gồm phần phát tia hồng ngoại gồm một LED phát được nối với nguồn 5V qua điện trở hạn dòng 100 Ω và phần thu là một phototransistor nhận tín hiệu hồng ngoại từ LED phát qua cực baser của photortransistor.
Tín hiệu thu được từ cực baser sẽ được khuyếch đại và đưa đến đầu vào không đảo của Opamp IC LM 324. Opamp này đóng vai trò như mạch khuếch đại thuật toán dùng khuếch đại tín hiệu với tín hiệu đầu vào và tín hiệu đầu ra cùng pha (khuếch đại không đảo).
59
Hình 4.13: Cổng quang điện.
Độ khuếch đại đảo được xác định qua công thức:
3 ào 4 1 ra v R V V R = + (5.2) Với:
Vvào : điện áp tín hiệu vào so với đất.
Vra : điện áp tín hiệu sau khi khuếch đại so với đất.
Tín hiệu sao khi khuếch đại được đưa đến Opamp thứ hai hoạt động ở chế độ so sánh không đảo, so sánh điện áp tín hiệu sau khi khuếch đại với điện áp chuẩn: Nếu điện áp cao tín hiệu cao hơn điện áp chuẩn tín hiệu thu được ở mức cao; ngược lại, nếu điện áp cao tín hiệu thấp hơn điện áp chuẩn tín hiệu thu được ở mức thấp. Tín hiệu thu được được sẽ đưa đến vi điều khiển PIC 16F877A xử lí (hình 4.13).
4.3.3.2. Ngắt nam châm
Ban đầu, khi nút BUTTON chưa ở trạng thái nhấn. Chưa có tín hiệu gửi đến chân RB0. Đây là vị trí ngắt ngoài của vi điều khiển, hoạt động khi có sườn lên hay sườn xuống của tín hiệu. Ngắt ngoài chưa hoạt động, chân RA1 ở mức cao, transistor NPN ở trạng thái dẫn, nam chân điện hút trọng vật (hình 4.14).
C24 104 R18 15M 5VDC C25 104 C26 104 C27 104 15VDC R3 1M 5VDC JP1 CIRDIN_4-P 1 2 3 4 R4 10K R11 100 - + U6A LM324 3 2 1 4 1 1 - + U5A LM324 3 2 1 4 1 1 RA4 R7 10K 5VDC 15VDC R8 3.3K C28 104 C12 102
60
Hoạt động ngắt nam châm xảy ra khi nút BUTTON ở trạng thái nhấn. Tín hiệu gửi tới chân RB0, ngay vị trí cạnh lên của tín hiệu đến PIC 16F877A kích
ngắt ngoài.
Hình 4.14: Ngắt nam châm.
Ngắt ngoài cho phép chân RA1 ở mức thấp, transistor NPN ngừng dẫn, nam châm điện ngừng hút, trọng vật được thả.
Do nam châm hút trọng vật cần dòng lớn nên ở đây transistor NPN C5200 công suất lớn được sử dụng.
4.3.4. Ma trận bàn phím và hiển thịLCD
Hình 4.15: Ma trận bàn phím 4×4. Hình 4.16: Hiển thị LCD.
Ma trận bàn phím và hiển thị LCD là khối nhập (ma trận bàn phím) và xuất dữ liệu (hiển thị LCD). RA1 C33 104 SW2 BUTTON 5VDC R15 10K R17 10K RB0 C30 104 Q1 NPN C5200 JP3 CIRDIN_4-P 1 2 3 4 15VDC R21 1K
61
Ma trận bàn phím được nối với PIC 16F877A qua 7 chân Port B (từ RB1 đến RB7) và 1 chân ở PortA (RA0). Dùng thuật toán quét hàng ta sẽ tìm được vị trí các phím trên tương ứng.
Ma trận bàn phím khi chưa kết nối với với PIC 16F877A hay khi lắp vào mạch in nhưng các mối tiếp chưa tốt sẽ gây ra nhiễu trên thiết bị, ảnh hưởng trực tiếp đến kết quả thu được. Vì vậy, cần chú ý đến hoạt động của ma trận bàn phím để đảm bảo tính ổn định của thiết bị.
Khối hiển thị là LCD 20x4 được nối với PIC 16F877A qua Port D và 3 chân Port C (RC3, RC4 và RC5) hình 4.16.
Trong quá trình hiển thị trên LCD 20×4 cần chú ý chân VEE nhằm điều chỉnh tương phản của LCD: Nếu VEE = 5V sẽ cho độ tương phản kém nhất, VEE = 0V độ tương phản thu được là lớn nhất.