Chöông 6:Mạch đếm xung dùng vi điều khiển PIC Ngày nay các bộ đếm đã trở nên thông dụng và có thể tìm thấy ở nhiều nơi trong thế giới xung quanh ta như: bộ đếm người đến thăm bảo tàng ho
Trang 1Chöông 6:Mạch đếm xung dùng vi điều khiển PIC
Ngày nay các bộ đếm đã trở nên thông dụng và có thể tìm thấy ở nhiều nơi trong thế giới xung quanh ta như: bộ đếm người đến thăm bảo tàng hoặc nhà hát, bộ đếm trong thi đấu thể thao Trong công nghiệp, cũng có rất nhiều dây chuyền sản xuất cần đến các
bộ đếm Thực tế cho thấy không chỉ có các đại lượng vật lý được đo đếm mà đôi khi là
cả xung tín hiệu hoặc lượng thông tin
Ngày nay các bộ đếm đã trở nên thông dụng và có thể tìm thấy ở nhiều nơi trong thế giới xung quanh ta như: bộ đếm người đến thăm bảo tàng hoặc nhà hát, bộ đếm trong thi đấu thể thao Trong công nghiệp, cũng có rất nhiều dây chuyền sản xuất cần đến các
bộ đếm Thực tế cho thấy không chỉ có các đại lượng vật lý được đo đếm mà đôi khi là
cả xung tín hiệu hoặc lượng thông tin Một bộ đếm xung có thể được chia ra thành ba phần hoặc ba khối Khối thứ nhất là nguồn xung Khối thứ hai là một linh kiện đếm, thực hiện chức năng đếm, lưu trữ trạng thái và đưa ra kết quả Cuối cùng, khối thứ ba đóng vai trò biến đổi các trạng thái điện thành trạng thái có thể quan sát được, mà thường là các bộ hiển thị quang học Cho đến nay thì những bộ đếm 7490 đã bị loại trừ khỏi các ứng dụng vì các bộ đếm dùng vi điều khiển có nhiều ưu điểm hơn hẳn Dưới đây xin giới thiệu với các bạn đọc quan tâm đến vi điều khiển một bộ đếm dùng vi điều khiển PIC của công ty Microchip (Hoa Kỳ) Xung đưa đến lối vào bộ đếm là các xung
có mức lôgic TTL (0V, +5V) Tỷ số giữa thời gian có xung và thời gian trống xung không có vai trò quan trọng, nhưng điều quan trọng là độ trống hoặc độ rộng của xung không được nhỏ hơn 50 s Dãy các xung được đưa đến lối vào của vi điều khiển, còn bên trong là bộ nhớ cùng với chương trình điều khiển LED 7 thanh được viết (xem chương trình dưới đây) và nạp vào vi điều khiển PIC 16F84 (của Microchip)
Trang 2Một mạch đếm sử dụng vi điều khiển PIC 16F84
Sườn tăng của xung lối vào sẽ kích hoạt ngắt trong khi một bộ đếm hàng “một” ở bên trong vi điều khiển đếm tăng thêm 1 Đồng thời, bộ xử lý kiểm tra xem giá trị trên thanh ghi “một” đã đạt giá trị 10 chưa Nếu rồi thì lập tức thanh ghi “một” bị reset (chuyển về giá trị bằng 0) và thanh ghi hàng “mười” sẽ tăng thêm 1 Nếu giá trị trên thanh ghi “mười” đạt đến giá trị 10 thì lại bị reset và bộ đếm lại bắt đầu đến từ đầu (thủ tục kế tiếp) Khi chạy chương trình chính dưới đây, các giá trị từ 0 đến 9 được hiển thị trên một bộ hiển thị dùng LED 7 thanh với catốt chung Hai số này được quét động theo cách là PORTB được dùng để đưa dữ liệu về số (ma 7 thanh) cần hiển thị còn PORTA được sử dụng để cho LED nào sáng Các LED hiển thị 7 thanh được nối song song với nhau theo cách các catốt đều được nối với nhau, hay như thường nói là catốt chung Mười catốt (C1) được nối qua một tranzito đến chân số 18 và catốt C2 được nối với chân 17 Trong một khoảng thời gian ngắn vi điều khiển PIC cho phép một LED sáng trong khi lại làm tắt các LED kia Quá trình đó cứ thay đổi lần lượt làm cho người dùng
có cảm giác là các LED đã sáng đồng thời Nếu giảm tần số quét động thì độ sáng sẽ giảm đi thậm chí có thể làm cho các LED bị sáng bập bùng Xung đồng hồ để giữ nhịp cho hoạt động của vi điều khiển PIC được lấy từ bộ dao động thạch anh có tần số tương
Trang 3đối cao (1 MHz) Trong một số trường hợp ta có thể sử dụng bộ dao động RC, nhưng tần số sẽ giảm đi nhiều Các tranzito cần được lựa chọn để đưa vào mạch vì mỗi lối ra của vi điều khiển PIC chỉ có thể chịu được dòng điện đến 25 mA, trong khi các thanh của LED có thể tiêu thụ dòng điện đến 30 mA (hoặc hơn thế nữa tuỳ theo kích thước)
và trong trường hợp xấu nhất, khi mà cả 7 thanh đều sáng, dòng điện tiêu thụ có thể đến
210 mA Cường độ dòng trong trường hợp này sẽ làm hỏng lập tức lối ra của vi điều khiển PIC Tranzito được sử dụng như một tầng đệm và được điều khiển bởi dòng lối ra
từ vi điều khiển PIC, đồng thời cho phép nhận được cường độ dòng điện lớn hơn để cung cấp cho bộ hiển thị, những loại thường được dùng là tranzito BC182 hoặc 2N2222 Để reset (đặt lại) ta chỉ việc nối chân số 4 của vi điều khiển PIC với đất Khi
đó chương trình sẽ khởi động từ địa chỉ 0 (org 0) Giải pháp này cho phép ta reset bộ đếm ngay cả trong trường hợp sử dụng bộ hiển thị với nhiều LED hơn, chẳng hạn bốn LED Để làm dừng bộ đếm ta chỉ việc “ngắt” đường dẫn lối vào cấp xung cho vi điều khiển PIC Việc sử dụng một chân riêng biệt để làm dừng bộ đếm sẽ làm mạch điện phức tạp thêm Sau đây là một thí dụ về một chương trình được viết ra và nạp vào vi điều khiển PIC