intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Đề tài: Ứng dụng họ vi điều khiển 8051 ghép nối 4 led 7 thanh dể hiển thị số đo tốc độ động cơ dùng encoder

Chia sẻ: Hoàng Anh | Ngày: | Loại File: DOC | Số trang:38

265
lượt xem
62
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đề tài "Ứng dụng họ vi điều khiển 8051 ghép nối 4 led 7 thanh dể hiển thị số đo tốc độ động cơ dùng encoder" với đề tài này giúp giám sát được tốc độ động cơ rùi có các quyết định điều khiển cho phù hợp với yêu cầu. Vì thế, với môn học Vi điều khiển này, em đã quyết định nhận làm bài tập lớn về đo tốc độ động cơ dùng 8051. Cụ thể trong bài tập này, chúng em sẽ ghép nối vi điều khiển 89C51RD2 với 4 led 7 thanh để hiển thị tốc độ động cơ, sử dụng encoder có 100(xung/vòng).

Chủ đề:
Lưu

Nội dung Text: Đề tài: Ứng dụng họ vi điều khiển 8051 ghép nối 4 led 7 thanh dể hiển thị số đo tốc độ động cơ dùng encoder

  1. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Mục lục Nội dung Nội dung.................................................................................................................................1 Lời nói đầu..............................................................................................................................2 CHƯƠNG I: CƠ SỞ LÝ THUYẾT.........................................................................................5 1. Giới thiệu tổng quan về họ Vi điều khiển 8051..............................................................5 2. Giới thiệu tổng quan về encoder..................................................................................11 3. Giới thiều về một số linh kiện khác..............................................................................18 3.1 Sơ lược về led 7 thanh...............................................................................................18 CHƯƠNG II. NỘI DUNG....................................................................................................27 1 – Lưu đồ thuật toán chương trình.................................................................................27 2 – Phần lập trình và mô phỏng.......................................................................................29 CHƯƠNG III. KẾT LUẬN.....................................................................................................37 1. Ưu điểm........................................................................................................................37 2. Nhược điểm..................................................................................................................37 Page 1
  2. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Lời nói đầu Ngày nay, với những  ứng dụng của khoa học kỹ thuật tiên tiến, thế  giới của chúng ta đã và đang ngày một thay đổi, văn minh và hiện đại hơn.  Sự  phát triển của kỹ  thuật điện tử  đã tạo ra hàng loạt những thiết bị  với   các đặc điểm nổi bật như  sự  chính xác cao, tốc độ  nhanh, gọn nhẹ  là  những yếu tố  rất cần thiết góp phần cho hoạt động của con người đạt  hiệu quả cao. Các bộ  điều khiển sử  dụng vi điều khiển tuy đơn giản nhưng để  vận hành và sử  dụng được lại là một điều rất phức tạp. Các bộ  vi điều  khiển theo thời gian cùng với sự phát triển của công nghệ  bán dẫn đã tiến   triển rất nhanh, từ các bộ  vi điều khiển 4 bit đơn giản đến các bộ  vi điều  khiển 32 bit, rồi sau này là 64 bit. Điện tử  đang trở  thành một ngành khoa   học đa nhiệm vụ. Điện tử đã đáp ứng được những đòi hỏi không ngừng từ  các lĩnh vực công – nông – lâm – ngư nghiệp cho đến các nhu cầu cần thiết  trong hoạt động đời sống hằng ngày. Một trong những ứng dụng thiết thực trong đó là ứng dụng về đo và  hiển thị tốc độ động cơ. Đây là một ứng dụng rất quan trọng được áp dụng  trong nhiều lĩnh vực và dây chuyền sản xuất. Tốc độ  động cơ  sẽ  được  hiển thị trên màn hình nhờ led 7 thanh, Từ đó chúng ta có thể giám sát được   tốc độ động cơ rùi có các quyết định điều khiển cho phù hợp với yêu cầu.   Vì thế, với môn học Vi điều khiển này, em đã quyết định nhận làm bài tập  lớn về  đo tốc độ động cơ dùng 8051. Cụ thể trong bài tập này, chúng em  Page 2
  3. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       sẽ  ghép nối vi điều khiển 89C51RD2 với 4 led 7 thanh để  hiển thị  tốc độ  động cơ, sử  dụng encoder có 100(xung/vòng). Chúng em xin trình bày nội  dụng cụ thể của bài tập lớn như sau. Kính mong các thầy ­ cô xem và cho   nhận xét, đánh giá để bài tập lớn được đầy đủ hơn. Chúng em xin chân thành cảm ơn! Hà Nội, Ngày 03/12/2017 Page 3
  4. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Đề tài: Ứng dụng họ  vi điều khiển 8051 ghép nối 4 led 7 thanh dể  hiển thị  số  đo  tốc độ động cơ dùng encoder . YÊU CẦU: Xây dựng mạch nguyên lí? Xây dựng thuật toán? Viết chương trình ? Page 4
  5. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       CHƯƠNG I: CƠ SỞ LÝ THUYẾT 1. Giới thiệu tổng quan về họ Vi điều khiển 8051 AT89C51 là một vi điều khiển 8 bit, chế tạo theo công nghệ  CMOS   chất lượng cao, công suất thấp với 4 KB PEROM (Flash Programeable and   erasable read only memory).  Các đặc điểm của 8951 được tóm tắt  như sau: ­ 4KB bộ nhớ, có thể lập trình lại nhanh, có khả  năng ghi xóa   tới 1000 chu kỳ ­ Tần số hoat động từ 0 Hz đến 24 MHz ­ 3 mức khóa bộ nhớ lập trình ­ 2 bộ Timer/Counter 16 bit ­ 128 Byte RAM nội ­ 4 Port xuất/nhập (I/O) 8 bit ­ Giao tiếp nối tiếp ­ 64 KB vùng nhớ mã ngoài ­ 64 KB vùng nhớ dữ liệu ngoài ­ Xử lý Boolean (hoạt động trên bit đơn) ­ 210 vị trí nhớ có thể định vị bit ­ 4μs cho hoạt động nhân hoặc chia Page 5
  6. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       a – Sơ đồ khối và sơ đồ chân của AT89C51 INT1\ INT0\ SERIAL PORT TEMER0 TEMER1 TEMER2 128 byte  TEMER2 ROM 8032\8052 RAM  8032\8052 8032\8052 0K: TEMER1 INTERRUPT  OTHER  128 byte  CONTROL 8031\803 TEMER1 REGISTER RAM 2 CPU 4K:8951 8K:8052 BUS CONTROL SERIAL  I/O PORT PORT OSCILATOR EA\ ALE\ RST PSEN\ P0 P1 P2 P3 TXD RXD Address\Data Hình 1 – Sơ đồ khối của AT89C51 Page 6
  7. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Hình 2 – Sơ đồ chân của AT89C51 b – Chức năng các chân của AT89C51 + Port 0 (P0.0 – P0.7 hay chân 32 – 39): Ngoài chức năng xuất nhập  ra, port 0 còn là bus đa hợp dữ liệu và địa chỉ (AD0 – AD7), chức năng này  sẽ được sử dụng khi AT89C51 giao tiếp với thiết bị ngoài có kiến trúc bus.  Page 7
  8. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Hình 3 – Port 0 + Port 1 (P1.0 – P1.7 hay chân 1 – 8): có chức năng xuất nhập theo  bit và byte. Ngoài ra, 3 chân P1.5, P1.6, P1.7 được dùng để  nạp ROM theo  chuẩn ISP, 2 chân P1.0 và P1.1 được dùng cho bộ Timer 2. Hình 4 – Port 1 + Port 2 (P2.0 – P2.7 hay chân 21 – 28): là một port có công dụng  kép. Là đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết  kế dùng bộ nhớ mở rộng. Page 8
  9. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Hình 5 – Port 2 + Port 3 (P3.0 – P3.7 hay chân 10 – 17): mỗi chân trên port 3 ngoài  chức năng xuất nhập ra còn có một số chức năng đặc biệt sau: Bit Tên Chức năng chuyển đổi P3.0 RXD Dữ liệu nhận cho port nối tiếp P3.1 TXD Dữ liệu truyền cho port nối tiếp P3.2 INT0 Ngắt bên ngoài 0 P3.3 INT1 Ngắt bên ngoài 1 P3.4 T0 Ngõ vào của Timer/Counter 0 P3.5 T1 Ngõ vào của Timer/Counter 1 P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài Hình 6 – Port 3 Page 9
  10. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       + RST (Reset – chân 9):  mức tích cực của chân này là mức 1, để  reset ta phải đưa mức 1 (5V) đến chân này với thời gian tối thiểu 2 chu kỳ  máy (tương đương 2µs đối với thạch anh 12MHz.) + XTAL 1, XTAL 2:  AT89S52 có một bộ  dao động trên chip, nó  thường được nối với một bộ  dao động thạch anh có tần số  lớn nhất là   33MHz, thôn thường là 12MHz. Hình minh hoạ + EA (External Access):  EA thường được mắc lên mức cao (+5V)  hoặc mức thấp (GND). Nếu  ở mức cao, bộ vi điều khiển thi hành chương   trình từ ROM nội. Nếu  ở mức thấp, chương trình chỉ  được thi hành từ  bộ  nhớ mở rộng. + ALE (Address Latch Enable): ALE là tín hiệu để chốt địa chỉ vào  một thanh ghi bên ngoài trong nửa đầu của chu kỳ  bộ  nhớ. Sau đó các  đường port 0 dùng để xuất hoặc nhập dữ liệu trong nửa chu kỳ sau của bộ  nhớ. Page 10
  11. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       + PSEN (Program Store Enable): PSEN là điều khiển để  cho phép  bộ   nhớ   chương   trình   mở   rộng   và   thường   được   nối   với   đến   chân   /OE  (Output   Enable)   của   một   EPROM   để   cho   phép   đọc   các   bytes   mã   lệnh.  PSEN   sẽ   ở   mức   thấp   trong   thời   gian   đọc   lệnh.   Các   mã   nhị   phân   của  chương trình được đọc từ  EPROM qua Bus và được chốt vào thanh ghi  lệnh của bộ vi điều khiển để giải mã lệnh. Khi thi hành chương trình trong   ROM nội, PSEN sẽ ở mức thụ động (mức cao). + Vcc, GND: AT89C51 dùng nguồn một chiều có dải điện áp từ  4V  – 5.5V được cấp qua chân 40 (+Vcc) và chân 20 (GND). 2. Giới thiệu tổng quan về encoder Encoder mục đích dùng để quản lý vị trí góc của một đĩa quay, đĩa  quay có thể là bánh xe, trục động cơ, hoặc bất kỳ thiết bị quay nào cần xác  định vị trí góc. Encoder được   chia   làm   2   loại,   absolute  Encoder và  incremental Encoder. Tạm dịch là Encoder tuyệt đối và Encoder tương đối.  Chữ Encoder tuyệt đối dịch theo nguyên văn, nhưng vì tiếng Việt mình cái  gì có 2 loại, thì loại còn lại được dịch ngược lại với loại kia. Cho nen dịch   là Encoder tương đối cho incremental Encoder. Nếu   dịch   sát   nghĩa,   khi   ta   đọc   absolute Encoder,   có   nghĩa  là Encoder tuyệt   đối,   tức   là   tín   hiệu   ta   nhận   được,   chỉ   rõ   ràng   vị   trí  của Encoder, chúng ta không cần xử  lý gì thêm, cũng biết chính xác vị  trí  của Encoder. Còn incremental Encoder, là loại Encoder chỉ có 1, 2, hoặc tối  đa là 3 vòng lỗ. Các bạn hình dung thế này, nếu bây giờ các bạn đục một lỗ  trên một cái đĩa quay, thì cứ  mỗi lần đĩa quay 1 vòng, các bạn sẽ  nhận  Page 11
  12. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       được tín hiệu, và các bạn đã biết đĩa quay một vòng. Nếu bây giờ các bạn   có nhiều lỗ hơn, các bạn sẽ  có được thông tin chi tiết hơn, có nghĩa là đĩa  quay   1/4   vong,   1/8   vòng,   hoặc   1/n   vòng,   tùy   theo   số   lỗ   nằm   trên  incremental Encoder. Cứ mỗi lần đi qua một lỗ, chúng ta phải lập trình để thiết bị đo đếm lên 1.  Do   vậy, Encoder loại   này   có   tên   incremental Encoder (Encoder tăng   lên   1  đơn vị). Page 12
  13. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Nguyên lý hoạt động cơ bản của Encoder, LED và lỗ Nguyên lý cơ  bản của Encoder, đó là một đĩa tròn xoay, quay quanh trục.   Trên đĩa có các lỗ (rãnh). Người ta dùng một đèn led để chiếu lên mặt đĩa.  Khi đĩa quay, chỗ không có lỗ (rãnh), đèn led không chiếu xuyên qua được,  chỗ có lỗ  (rãnh), đèn led sẽ  chiếu xuyên qua. Khi đó, phía mặt bên kia của   đĩa, người ta đặt một con mắt thu. Với các tín hiệu có, hoặc không có ánh  sáng chiếu qua, người ta ghi nhận được đèn led có chiếu qua lỗ hay không. Khi trục quay, giả sử trên đĩa chỉ có một lỗ  duy nhất, cứ mỗi lần con mắt   thu nhận được tín hiệu đèn led, thì có nghĩa là đĩa đã quay được một vòng. Đây là nguyên lý rất cơ bản của Encoder. Tuy nhiên, những vấn đề được đặt ra là, làm sao để xác định chính  xác hơn vị trí của đĩa quay (mịn hơn) và làm thế nào để xác định được đĩa  đang quay theo chiều nào? Đó chính là vấn đề để chúng ta tìm hiểu  về Encoder. Page 13
  14. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Hình sau sẽ minh họa nguyên lý cơ bản của hoạt động Encoder. Các bạn thấy trong hình, có một đĩa mask, không quay, đó là đĩa cố định,  thực ra là để che khe hẹp ánh sáng đi qua, giúp cho việc đọc Encoder được  chính xác hơn mà thôi. Chúng ta không để cập đến đĩa mặt nạ này ở đây. Hoạt động của Encoder  Ở đây ta sẽ xét đến incremental Encoder Các bạn thấy rằng, cứ  mỗi lần quay qua một lỗ, thì Encoder sẽ  tăng một  đơn vị trong biến đếm. Page 14
  15. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Tuy   nhiên,  một   vấn   đề   là   làm  sao   để   biết   được Encoder quay   hết   một  vòng? Nếu cứ  đếm vô hạn như  thế  này, thì chúng ta không thể  biết được  khi nào nó quay hết một vòng. Nếu bây giờ các bạn đếm số lỗ Encoder để  biết nó đã quay một vòng, thì nếu với Encoder 1000 lỗ  chắc các bạn sẽ  đếm đến sáng luôn. Chưa kể, mỗi lần có những rung động nào đó mà ta  không quản lý được, Encoder sẽ bị sai một xung. Khi đó, nếu hoạt động lâu  dài, sai số này sẽ tích lũy, ngày hôm nay sai một xung, ngày hôm sau sai một   xung. Đến cuối cùng, có thể  động cơ  quay 2 vòng rồi các bạn mới đếm  được 1 vòng. Để tránh điều tai hại này xảy ra, người ta đưa vào thêm một lỗ định  vị để đếm số vòng đã quay của Encoder. Như vậy, cho dù có lệch xung, mà chúng ta thấy rằng  Encoder đi ngang qua  lỗ  định vị này, thì chúng ta sẽ  biết là Encoder đã bị đếm sai ở  đâu đó. Nếu  vì một rung động nào đó, mà chúng ta không thấy Encoder đi qua lỗ định vị,  vậy thì từ số xung, và việc đi qua lỗ định vị, chúng ta sẽ biết rõ hiện tượng  sai   của Encoder. Đây là hình Encoder có lỗ định vị: Page 15
  16. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Tuy nhiên, một vấn đề lớn nữa là, làm sao chúng ta biết Encoder đang xoay  theo chiều nào? Bởi vì cho dù xoay theo chiều nào, thì tín  hiệu Encoder cũng chỉ là các xung đơn lẻ và xoay theo hai chiều đều giống  nhau. Page 16
  17. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Chính vì vậy, người ta đặt thêm một vòng lỗ ở giữa vòng lỗ thứ 1 và lỗ  định vị như hình sau: Chú ý rằng, vị  trí góc của các lỗ  vòng 1 và các lỗ  vòng 2 lệch nhau. Các   cạnh của lỗ vòng 2 nằm ngay giữa các lỗ vòng 1 và ngược lại. Chúng ta sẽ  khảo sát tiếp vấn đề Encoder   trong phần tín hiệu xung để  hiểu rõ hơn về Encoder. Tuy nhiên, các bạn sẽ thấy một điều rằng, thay vì  làm 2 vòng  Encoder, và dùng 2 đèn LED đặt thẳng hàng, thì người ta chỉ  cần làm 1 vòng lỗ, và đặt hai đèn LED lệch nhau. Kết quả, các bạn sẽ thường thấy các Encoder có dạng như hình 2: Đây là dạng Encoder phổ biến nhất hiện nay Page 17
  18. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       3. Giới thiều về một số linh kiện khác. 3.1 Sơ lược về led 7 thanh a.  Tổng quát Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo  hình   và có thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc  dưới, bên phải của led 7 đoạn. 8 led đơn trên led 7 đoạn có Anode(cực +) hoặc Cathode(cực ­) được  nối chung với nhau vào một điểm, được đưa chân ra ngoài để kết nối với  mạch điện. 8 cực còn lại trên mỗi led đơn được đưa thành 8 chân riêng,  cũng được đưa ra ngoài để kết nối với mạch điện. Nếu led 7 đoạn có  Anode(cực +) chung, đầu chung này được nối với +Vcc, các chân còn lại  dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín  hiệu đặt vào các chân này ở mức 0. Nếu led 7 đoạn có Cathode(cực ­)  chung, đầu chung này được nối xuống Ground (hay Mass), các chân còn lại  dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín  hiệu đặt vào các chân này ở mức 1. Page 18
  19. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần  đảm bảo dòng qua mỗi led đơn trong khoảng 10mA­20mA để bảo vệ led.  Nếu kết nối với nguồn 5V có thể hạn dòng bằng điện trở 330Ω trước các  chân nhận tín hiệu điều khiển. Sơ đồ vị trí các led Các điện trở 330Ω là các điện trở bên ngoài được kết nối để giới  hạn dòng điện qua led nếu led 7 đoạn được nối với nguồn 5V. Page 19
  20. Bài tập lớn: Vi xử lí trong ĐL và ĐK                                                                                       Chân nhận tín hiệu a điều khiển led a sáng tắt, ngõ vào b để điều khiển led  b. Tương tự với các chân và các led còn lại. b.  Kết nối với Vi điều khiển Ngõ nhận tín hiệu điều khiển của led 7 đoạn có 8 đường, vì vậy có  thể dùng 1 Port nào đó của Vi điều khiển để điều khiển led 7 đoạn. Như  vậy led 7 đoạn nhận một dữ liệu 8 bit từ Vi điều khiển để điều khiển hoạt  động sáng tắt của từng led led đơn trong nó, dữ liệu được xuất ra điều  khiển led 7 đoạn thường được gọi là "mã hiển thị led 7 đoạn". Có hai kiểu  mã hiển thị led 7 đoạn: mã dành cho led 7 đoạn có Anode(cực +) chung và  mã dành cho led 7 đoạn có Cathode(cực ­) chung. Chẳng hạn, để hiện thị  số 1 cần làm cho các led ở vị trí b và c sáng, nếu sử dụng led 7 đoạn có  Anode chung thì phải đặt vào hai chân b và c điện áp là 0V(mức 0) các chân  còn lại được đặt điện áp là 5V(mức 1), nếu sử dụng led 7 đoạn có Cathode  chung thì điện áp(hay mức logic) hoàn  toàn ngược lại, tức là phải đặt vào  chân b và  c điện áp là 5V(mức 1). Bảng mã hiển thị led 7 đoạn: Phần cứng được kết nối với 1 Port bất kì của Vi điều khiển, để  thuận tiện cho việc xử lí về sau phần cứng nên được kết nối như sau: Px.0  nối với chân a, Px.1 nối với chân b, lần lượt theo thứ tự cho đến Px.7 nối  với chân h. Dữ liệu xuất có dạng nhị phân như sau : hgfedcba Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Anode chung (các  led đơn sáng ở mức 0): Page 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0