Xem mẫu

  1. Đồ án môn học I : điều khiển vị trí động cơ ---------- Đồ án môn học: Điều khiển vị trí động cơ -1-
  2. Đồ án môn học I : điều khiển vị trí động cơ Mục lục : Trang Lời nói đầu ………………………………………………………………………. 1 A/ SƠ LƯỢC VỀ VI ĐIỀU KIỂN P89V51Rx2…………………………………. 2 Khái quát các tính năng……………………………………………………. 2 Sơ đồ khối…………………………………………………………………… 3 Sơ đồ chân…………………………………………………………………... 4 B/ CHƯƠNG TRÌNH THỰC HIỆN……………………………………………… 5 I/ Thiết kế phần cứng………………………………………………………... 5 Khối điều khiển ……………………………………………………….. 5 + Nguồn cho kit vxl………………………………………………... 6 + Phần xử lý của kit……………………………………………….. 6 + Phần hiển thị…………………………………………………….. 7 + Phần giao tiếp…………………………………………………… 8  Sơ đồ toàn kít………………………………………………………… 10 Khối công suất…………………………………………………………. 10 - Mạch cầu H………………………………………………………..10 - Nguồn 24Vdc…………………………………………………….. 11 II/ Chương trình thực hiện…………………………………………………... 11  Thành phần , sơ đồ , giải thuật tổng quát……………………………. 11  Chi tiết chương trình ………………………………………………… 12 -Chương trình trên visual basic……………………………………. 12 + Giao diện VB………………………………………………… 12 + Code chương trình trên VB…………………………………... 13 + PID số ……………………………………………………….. 18 - Chương trình trên vi điều khiển………………………………….. 19 Mục lục : …………………………………………………………………………. 25 Lời nói đầu ! -2-
  3. Đồ án môn học I : điều khiển vị trí động cơ Từ chiếc máy tính đầu tiên do Pascal phát minh ra đến những chiếc máy tính bây giờ đó là một quá trình phát triển vô cùng to lớn của khoa học kỹ thuật , nhất là trong những thập niên gần đây, sự phát triển đó càng mau lẹ. Trong đó , một trong những hạt nhân của quá trình phát triển đó là công nghệ điện tử. Những chiếc máy tính bây giờ có thể đễ dàng làm những việc mà con người trước kia bỏ ra hằng năm để thực hiện xong , giờ có thể chỉ trong nháy mắt. Trong kỹ thuật mới thời gian không còn được tính bằng giây nữa , mà là micrô giây , thậm chí còn nhỏ hơn nữa . Một bộ điều kiển tự động có thể thay thế cho nhiều công nhân , nhiều kỹ sư, thậm chí làm những việc mà tự mình , con người không thể làm nổi. Là một sinh viên kỹ thuật , ngành tự động , đang chập chững bước vào một lĩnh vực to lớn ấy , thì việc học tập , vận đụng những điều đã học vào trong thực tiễn , để trao đồi kiến thức là chuyện đương nhiên. Và đồ án tự động 1, có thể là công trình đầu tiên của nhiều bạn sinh viên cùng ngành đã làm , để đánh đấu sự hiện điện đầu tiên của mình trong lĩnh vực này. Trên con đường trao dồi , học tập để trở thành kỹ sư thực , ngoài bản thân của mình , còn là sự giúp đỡ , đạy đỗ của các thầy cô giáo. Vì vậy em xin chân thành cảm ơn thầy hướng đẫn , các thầy các cô trong trường , đã cho em những kiến thức để có thể hoàn thành được đồ án này. Vẫn biết còn nhiều thiếu sót , em rất mong thầy cô giúp đỡ , cho ý kiến , cho em những hiểu biết sâu sắc hơn , để thực hiện tốt hơn đồ án môn học 2 sắp tới . Em xin chân thành cảm ơn! -3-
  4. Đồ án môn học I : điều khiển vị trí động cơ A/ SƠ LƯỢC VI ĐIỀU KIỂN P89V51Rx2: 1. Khái quát các tính năng: + Khái quát: P89V51RD2 là vi điều khiển 80C51 có 64kB Flash và 1024bytes bộ nhớ dữ liệu RAM. Tính năng đặc biệt của P89V61RD2 là ở chế độ hoạt động mode x2. Người thiết kế chọn chạy ứng dụng của mình ở chế độ này để nâng đôi tốc độ khi hoạt động ở cùng tần số dao động Bộ nhớ chương trình Flash cho phép lập trình ISP hoặc/và song song. Chế độ lập trình song song được đưa ra để thích ứng với tốc độ cao, giảm thời gian và giá thành. IAP/ISP. +Các tính năng: CPU 80C51. Hoạt động ở 5VDC trong tầm tần số dao động đến 40MHz. 64kB ISP. SPI 5 PCA với chức năng PWM/capture/compare 16bits. 4 cổng xuất nhập. 3 Timers/Couters 16bits. Watchdog Timer có thể lập trình được. 8 nguồn ngắt. 2 thanh ghi DPTR. Tương thích mức logic TTL và CMOS. Phát hiện nguồn yếu Chế độ Low-power, Power down, Idle. -4-
  5. Đồ án môn học I : điều khiển vị trí động cơ Sơ đồ khối của MCU P89V51RD2: Sơ qua về các chân của vi điều khiển: Port 0, Port 1, Port 2, Port 3: Như cấu trúc 8051 kinh điển. Port 0: là port có hai chức năng ở các chân từ 32-39 . Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường vào ra. Port 2:là một port ở các chân từ 21-28 được dùng cho chức năng IO port hoặc là byte địa chỉ cao của Bus địa chỉ . Port 3: là port có tác dụng kép , từ chân 10-17. Các chân của port này ngoài IO , còn có nhiều chức năng đặc biệt . Port 1: Ngoài chức năng IO port , ở P89V51Rx2 còn có thêm nhiều chức năng mới: P1.0 - T2: Ngõ vào Counter cho Timer/Counter 2 hoặc ngõ ra cho Counter/Timer2. P1.1 - T2EX: Điều khiển hướng và cạnh kích chức năng Capture cho timer/Counter 2. P1.2 – ECI: Ngõ vào xung nhịp. Tín hiệu này là nguồn xung nhịp ngoài cho chức năng PCA. P1.3 –CEX0: ngõ vào xung nhịp cho chức năng Capture/Compare modul 0. -5-
  6. Đồ án môn học I : điều khiển vị trí động cơ P1.4: o SS: Chọn cổng phụ vào cho SPI. o CEX1: ngõ vào xung nhịp cho chức năng Capture/Compare modul 1. P1.5: o MOSI: phục vụ SPI o CEX2: ngõ vào xung nhịp cho chức năng Capture/Compare modul 2. P1.6: o MISO: phục vụ SPI o CEX3: ngõ vào xung nhịp cho chức năng Capture/Compare modul 3. P1.7: o SCK: phục vụ SPI o CEX4: ngõ vào xung nhịp cho chức năng Capture/Compare modul 4. PSEN: Cho phép dùng bộ nhớ chương trình ngoài. Khi MCU sử dụng bộ nhớ chương trình trong chip, PSEN không tích cực. Khi sử dụng bộ nhớ chương trình ngoài, PSEN thường ở mức tích cực 2 lần trong mỗi chu kì máy. Sự chuyển mức cao sang thấp trên ↓PSEN cưỡng bức từ bên ngoài khi ngõ vào RST đang ở mức cao trong hơn 10 chu kì máy sẽ đưa MCU vào chế độ lập trình host từ bên ngoài. RST: Khi nguồn dao động đang hoạt động, mức cao trên chân RST trong ít nhất 2 chu kì máy sẽ Reset lại hệ thống. Nếu chân PSEN chuyển mức trong khi RST vẫn còn ở mức cao, MCU sẽ vào chế độ lập trình host từ bên ngoài, nếu không, sẽ hoạt động bình thường. ↓ EA: Cho phép sử dụng bộ nhớ chương trình ngoài. o EA=’0’ :Bộ nhớ ngoài. o EA=’1’:Bộ nhớ trong chip. ALE/PROG: Cho phép khóa địa chỉ ngoài ra, chân này còn được dùng để đưa vào chế độ lập trình FLASH Sơ đồ chân của IC: U1 0 4 39 21 VC P0.0/AD0 P2.0/A8 C 38 22 P0.1/AD1 P2.1/A9 37 23 P0.2/AD2 P2.2/A10 36 24 P0.3/AD3 P2.3/A11 35 25 P0.4/AD4 P2.4/A12 34 26 P0.5/AD5 P2.5/A13 33 27 P0.6/AD6 P2.6/A14 32 28 P0.7/AD7 P2.7/A15 1 10 P1.0 P3.0/RXD 2 11 P1.1 P3.1/TXD 3 12 P1.2 P3.2/INT0 4 13 P1.3 P3.3/INT1 5 14 P1.4 P3.4/T0 6 15 P1.5 P3.5/T1 7 16 P1.6 P3.6/WR 8 17 P1.7 P3.7/RD 19 30 XTAL1 ALE/PROG 18 29 XTAL2 PSEN 31 GD EA/VPP N 9 RST -6- 0 2
  7. Đồ án môn học I : điều khiển vị trí động cơ B/ PHẦN CHƯƠNG TRÌNH THỰC HIỆN I/ THIẾT KẾ PHẦN CỨNG : Phần cứng gồm hai khối chính : + Khối điều kiển : kít điều kiển + Khối công suất : Nguồn , cầu H , và động cơ Máy tính RS232 Nguồn 24VDC Kít điều kiển : P89V51RX2 Động cơ Cầu H Encoder Khối điều kiển: Khối chấp hành Khối điều kiển :   Nguồn 5V , IC , cổng com RS-232, hiển thị lcd , hiển thị led, led 7 đoạn -7-
  8. Đồ án môn học I : điều khiển vị trí động cơ + Nguồn cho kit vxl: 1 D17 7805 5V 2 4 1 3 - + GND IN OUT BRIDGE 470 J 12 2 2 1 3 1 2200uF 2 0.1uF D18 CON2 LED 0 + Khối xử lý của kit: 5V U1 J15 40 J2 R12 J1 p1.0 p0.0 p0.0 p2.0 8 9 8 39 21 1 VCC P0.0/AD0 P2.0/A8 p1.1 p0.1 p0.1 p2.1 7 8 7 38 22 2 P0.1/AD1 P2.1/A9 p1.2 p0.2 p0.2 p2.2 6 7 6 37 23 3 P0.2/AD2 P2.2/A10 p1.3 p0.3 p0.3 p2.3 5 6 5 36 24 4 P0.3/AD3 P2.3/A11 p1.4 p0.4 p0.4 p2.4 4 5 4 35 25 5 P0.4/AD4 P2.4/A12 p1.5 p0.5 p0.5 p2.5 3 4 3 34 26 6 P0.5/AD5 P2.5/A13 p1.6 p0.6 p0.6 p2.6 2 3 5V 2 33 27 7 P0.6/AD6 P2.6/A14 p1.7 p0.7 p0.7 p2.7 1 2 1 1 32 28 8 P0.7/AD7 P2.7/A15 J16 p1.0 p3.0 8 1 10 P1.0 P3.0/RXD p1.1 p3.1 CON8 RESISTOR SIP 9 CON8 7 2 11 CON8 SW1 P1.1 P3.1/TXD J3 R13 p1.2 p3.2 6 3 12 P1.2 P3.2/INT0 p2.0 p1.3 p3.3 8 9 5 4 13 P1.3 P3.3/INT1 p2.1 p1.4 p3.4 7 8 4 5 14 P1.4 P3.4/T0 p2.2 p1.5 p3.5 6 7 3 6 15 P1.5 P3.5/T1 p2.3 p1.6 p3.6 5 6 2 7 16 P1.6 P3.6/WR p2.4 p17 p3.7 4 5 CON8 1 8 17 P1.7 P3.7/RD p2.5 3 4 p2.6 2 3 5V 19 30 XTAL1 ALE/PROG p2.7 1 2 1 18 29 SW4 XTAL2 PSEN 5V 0 ZTA 31 GND 0 EA/VPP CON8 RESISTOR SIP 9 9 RST 2 2 J4 Y1 p3.0 20 8 C1 C2 AT89C51 p3.1 7 1 1 1n p3.2 6 1n R1 p3.3 5 R 0 p3.4 4 0 p3.5 3 p3.6 2 p3.7 1 SW44 C3 C CON8 5V - Khối gồm có các giắc cắm đực , để xuất port, giao tiếp bên ngoài - Bốn nút bấm , và nút sw44 để reset lai vxl - Vi xử lý sẽ tự động reset khi có nguồn nhờ tụ C3 - Thạch anh 12Mhz sẽ tạo nguồn xung cho chân 18,19 -8-
  9. Đồ án môn học I : điều khiển vị trí động cơ - + Khối hiển thị: - Hiển thị led 7 Đoạn: O7 O6 5V 5V 5V 5V 5V 0 O5 20 U11 O4 O7 O4 C1815 O5 C1815 O6 C1815 C1815 5V 19 5V Q2 Q3 Q4 Q5 VCC 1G DIR J10 R32 1K R33 1K R34 1K R35 1K O0 8 2 18 16 3 A1 B1 3 8 3 8 3 8 3 8 O1 7 17 U3 U9 U10 U12 U13 4 A2 B2 O2 O0 A A7 A7 A7 A7 6 16 7 13 R23 330 5V L L L L T T T T 5 A3 B3 D0 A A B6A B6A B6A O3 O1 B B6 5 15 1 12 R24 330 6 A4 B4 D1 B B C4B C4B C4B O4 O2 C C4 4 14 2 11 R27 330 8 8 8 8 7 A5 B5 D2 C C D2C D2C D2C O5 O3 D D2 3 13 6 10 R28 330 8 A6 B6 D3 D D E1D E1D E1D O6 E E1 2 12 9 R29 330 GND 9 A7 B7 E E F9E F9E F9E O7 F F9 1 11 3 15 R30 330 A8 B8 LT F F G 10 F G 10 F G 10 F G G 10 5 14 R31 330 5 5 5 5 5V RBI G G DP G DP G DP G DP 74LS245 4 GND BI/RBO 10 CON8 0 LED7.1 LED7.2 LED7.3 LED7.4 7447 8 0 - Khối gồm IC nâng 74LS245 , có tác dụng nâng dòng cho port điều kiển. - 4 led 7 đoạn , 4 BJT C1815 có tác đụng chọn led – sử đụng cho quét led-. - IC giải mã 7447 , giải mã BCD sang các chân của led để hiển thị số. +LCD: R26 5V 0 J7 16 15 14 1 13 2 J9 12 3 11 4 10 5 9 6 8 7 7 8 J8 6 5 1 4 2 3 3 2 5V 5V 1 0 CON16 R25 0 - Khối gồm có : giắt cắm cái 16 chân cho LCD - Giắt 8 chân dành cho bus dữ liệu - Giắt 3 chân dành cho 3 chân điều kiển - Điện trở r28 để hạn dòng cho led trong LCD - Biến R25 để chỉnh độ tương phản cho LCD -9-
  10. Đồ án môn học I : điều khiển vị trí động cơ - Mạch hiển thị led: J13 CON8 5V 20 0 U6 19 1 2 3 4 5 6 7 8 VCC G 1 5V DIR J5 D1 R2 1 2 18 A1 B1 2 3 17 A2 B2 3 4 16 A3 B3 4 5 15 A4 B4 5 6 14 A5 B5 6 7 13 A6 B6 7 8 12 GND A7 B7 8 9 11 A8 B8 74LS245 R9 D8 CON8 10 0 0 J11 5V CON8 20 0 U7 19 VCC G 1 1 2 3 4 5 6 7 8 5V DIR J6 D9 R15 p1.02 1 18 A1 B1 p1.13 2 17 A2 B2 p1.24 3 16 A3 B3 p1.35 4 15 A4 B4 p1.46 5 14 A5 B5 p1.57 6 13 A6 B6 p1.68 7 12 GND A7 B7 p1.79 8 11 A8 B8 74LS245 R22 D16 10 CON8 0 0 - Để xuất led , gồm 2 IC nâng dòng 74LS245, các giắc cắm đực đưa ra ngoài. - Một dãy led để hiển thị. + Khối giao tiếp: - RS-232: 5V U2 16 P1 13 12 VCC R1IN R1OUT 1 14 11 T1OUT T1IN 6 p3.0 2 7 9 T2OUT R2OUT p3.1 7 8 10 R2IN T2IN 3 C4 8 1 C1+ C7 4 3 C1- 9 2 5V V+ 5 4 C2+ 5 6 GND C2- V- C5 C6 0 15 MAX232_1 0 0 o Mạch có cổng DB9 , và IC max232 - 10 -
  11. Đồ án môn học I : điều khiển vị trí động cơ o IC max232 và các tụ làm nên mạch chuyển mức áp TTL sang 232 o Cấp nguồn cho max232 là 5v, mạch trong IC và các tụ sẽ tạo ra nguồn +- 10V - Ma trận phiếm: P0.0 SW26 SW27 SW28 SW29 P0.1 SW31 SW32 SW33 SW30 P0.2 SW35 SW36 SW34 SW37 P0.3 SW38 SW39 SW40 SW41 P0.7 P0.6 P0.5 P0.4 o Mạch gồm 8 chân nối với port 1 . o Khi quét phiếm . Nếu nút nhấn có một chân được đưa vào mức cao, một chân mức thấp , khi nhấn phiếm , thì cả hai chân đều ở mức thấp , và vi điều kiển có thể nhận ra sự thay đổi. Sơ đồ khối Kit: Nguồn 5v Khối xử lý Khối hiển thị Khối giao tiếp - 11 -
  12. Đồ án môn học I : điều khiển vị trí động cơ  Sơ Đồ Toàn Kít: J13 CON8 J2 R12 5V p1.0 8 9 20 0 U6 p1.1 7 8 5V p1.2 6 7 19 1 2 3 4 5 6 7 8 VCC G p1.3 P0.0 5 6 1 5V DIR J5 D1 p1.4 4 5 SW26 SW27 SW28 SW29 R2 p1.5 3 4 U1 J15 1 2 18 40 A1 B1 J1 p1.6 2 3 5V 2 3 17 A2 B2 p1.7 p0.0 p0.0 p2.0 1 2 1 8 39 21 1 3 4 16 VCC P0.0/AD0 P2.0/A8 A3 B3 p0.1 p0.1 p2.1 7 38 22 2 4 5 15 P0.1/AD1 P2.1/A9 A4 B4 p0.2 p0.2 p2.2 P0.1 6 37 23 3 SW31 SW32 SW33 SW30 5 6 14 P0.2/AD2 P2.2/A10 A5 B5 p0.3 p0.3 p2.3 CON8 RESISTOR SIP 9 5 36 24 4 6 7 13 P0.3/AD3 P2.3/A11 A6 B6 p0.4 p0.4 p2.4 4 35 25 5 7 8 12 GND P0.4/AD4 P2.4/A12 A7 B7 p0.5 p0.5 p2.5 3 34 26 6 8 9 11 P0.5/AD5 P2.5/A13 A8 B8 p0.6 p0.6 p2.6 2 33 27 7 P0.6/AD6 P2.6/A14 p0.7 p0.7 p2.7 P0.2 1 32 28 8 SW35 SW36 SW34 SW37 74LS245 R9 D8 P0.7/AD7 P2.7/A15 CON8 J3 R13 J16 10 0 p2.0 p1.0 p3.0 8 9 8 1 10 0 P1.0 P3.0/RXD p2.1 p1.1 p3.1 7 8 CON8 7 2 11 CON8 SW1 P1.1 P3.1/TXD p2.2 p1.2 p3.2 6 7 6 3 12 P1.2 P3.2/INT0 p2.3 p1.3 p3.3 P0.3 5 6 5 4 13 SW38 SW39 SW40 SW41 J11 P1.3 P3.3/INT1 p2.4 p1.4 p3.4 4 5 4 5 14 5V P1.4 P3.4/T0 p2.5 p1.5 p3.5 3 4 3 6 15 CON8 P1.5 P3.5/T1 p2.6 p1.6 p3.6 2 3 5V 2 7 16 20 0 U7 P1.6 P3.6/WR p2.7 p17 p3.7 1 2 1 CON8 1 8 17 P1.7 P3.7/RD P0.7 P0.6 P0.5 P0.4 19 VCC 1G 19 30 1 2 3 4 5 6 7 8 5V XTAL1 ALE/PROG DIR J6 CON8 RESISTOR SIP 9 18 29 SW4 D9 XTAL2 PSEN R15 p1.02 5V 1 18 0 p1.13 A1 B1 ZTA 31 2 17 GND 0 EA/VPP p1.24 A2 B2 J4 9 3 16 RST p1.35 A3 B3 p3.0 8 4 15 2 2 p1.46 A4 B4 p3.1 7 Y1 5 14 p1.57 A5 B5 20 p3.2 6 C1 C2 AT89C51 6 13 p1.68 A6 B6 p3.3 5 7 12 GND p1.79 A7 B7 1 1 1n p3.4 4 1n R1 8 11 A8 B8 p3.5 3 R 0 p3.6 2 74LS245 R22 D16 0 10 p3.7 1 CON8 0 0 CON8 SW44 C3 C 5V 5V 5V R26 5V 0 0 U2 20 16 U11 J7 O7 P1 O6 5V 19 5V 5V 5V 5V 16 13 12 VCC VCC G R1IN R1OUT O5 1 15 1 14 11 DIR T1OUT T1IN J10 O4 O7 O4 C1815 O5 C1815 O6 C1815 C1815 14 1 6 O0 p3.0 8 2 18 5V Q2 Q3 Q4 Q5 13 2 J9 2 7 9 A1 B1 T2OUT R2OUT O1 p3.1 7 3 17 12 3 7 8 10 A2 B2 R2IN T2IN O2 6 4 16 R32 1K R33 1K R34 1K R35 1K 11 4 3 A3 B3 C4 O3 5 5 15 10 5 8 1 16 A4 B4 C1+ C7 3 8 3 8 3 8 3 8 O4 4 6 14 U3 U9 U10 U12 U13 9 6 4 3 A5 B5 C1- O5 O0 A A A A A 3 7 13 7 13 R23 330 7 7 7 7 8 7 9 2 L L L L 5V 5V T T T T A6 B6 D0 A A 6A 6A 6A V+ O6 O1 B B B B B 2 8 12 1 12 R24 330 6 7 8 J8 5 4 GND A7 B7 D1 B B 4B 4B 4B C2+ O7 O2 C C C C C 8 8 8 8 1 9 11 2 11 R27 330 4 6 5 6 GND A8 B8 D2 C C 2C 2C 2C C2- V- O3 D D D D D 6 10 R28 330 2 5 1 D3 D D 1D 1D 1D E E E E E 74LS245 9 R29 330 1 4 2 C5 C6 0 E E 9E 9E 9E 10 F F F F F CON8 3 15 R30 330 9 3 3 0 LT F F 10 F 10 F 10 F 15 G G G G G 5 14 R31 330 10 5 5 5 5 2 5V MAX232_1 5V 5V RBI G G DP G DP G DP G DP 4 1 GND BI/RBO 0 0 LED7.1 LED7.2 LED7.3 LED7.4 0 CON16 R25 7447 8 0 0 1 D17 U15 5V 2 4 1 3 - + GND IN OUT R36 BRIDGE R J12 2 J14 2 1 3 1 C8 2 C9 C10 D18 CON2 CON2 LED 0  Khối Công suất: + Mạch cầu h , Nguồn 24v - Mạch cầu H: 24V R13 U1 1 4 J2 M2 3 2 2 R1 M1 D2 D3 1 3 1k R16 D13 CON3 560 0 1 2 R14 R4 U2 R3 24V 1k D14 1 4 R17 2 1 1k 2 1k 1k 3 0 2 1 5V J3 24V CON2 M4 J6 2200uF M3 R5 R6 1 D4 2 D1 1k 1k 0.1uF R7 R8 NGUON 24V 10k 10k 0 0 0 o Mạch có bốn IC FET chịu đòng lớn ,hai led để biết chiều động cơ. - 12 -
  13. Đồ án môn học I : điều khiển vị trí động cơ o Hai opto có nhiệm vụ cách ly nguồn điện của vi điều kiển với bộ công suất o Các zener để bảo vệ mạch , và xả khi có dòng hồi từ động cơ về -vì mạch nguồn là cầu diof , không xả được.- o Tụ lọc gai cho động cơ khi chạy o Nguyên tắc chống trùng đẫn : không thể kích ( mức cao) cho 2 ngõ vào cùng lúc - Nguồn 24VDC: Q1 R1 R2 1 D8 2.2k J2 270 J1 zener 24v 2 C4 C5 1 1 2 4 C1 2 - + 0.1uF 470uF D7 2200uF 24VAC D2 24VDC D10D1 3 0 + Mạch có cầu diof để chỉnh lưu. Tụ hóa C4 để lọc phẳng thông thấp . Tụ C4 để lọc thông cao , BJT công suất 2N3005. + diof gắn đưới zener để bù lại điện thế mất do BJT. Và R1 để duy trì đòng cho zener . Tụ C5 để lọc . II> CHƯƠNG TRÌNH THỰC HIỆN:  THÀNH PHẦN , SƠ ĐỒ , GIẢI THUẬT TỔNG QUÁT: Thành phần : + Gồm có 2 phần chương trinh chinh:  Chương trình trên máy tính , viết bằng Visual basic  Chương trình trên vi xử lý , viết bằng hợp ngữ Sơ đồ và giải thuật chính: + Chương trình Visual Basic: X Ử LÝ : GIAO TIẾP VXL: - Phần mềm GIAO ĐIỆN: - Nhận đữ PID, có chỉnh - Hiển thị liệu từ vxl sửa - Nhận lệnh - Truyền - Ngắt timer để o lệnh tới vxl thực hiện đk, và xuất kết quả Vi điều - 13 - kiển
  14. Đồ án môn học I : điều khiển vị trí động cơ + Chương trình hợp ngữ : Máy tính Timer 2 tạo Giao tiếp - Nhận mã lệnh Mã lệnh xung uart máy tính Từ máy tính Điều xung PWM Động cơ Đếm giá trị Gt encoder Timer1: quét gởi giá trị encode encoder encoder lên máy tính  CHI TIẾT CHƯƠNG TRÌNH: o CHƯƠNG TRÌNH TRÊN VB: Visual basic:Giao diện VB: Timer1 MSComm Timer2 Cmdketnoi Labecd Labsovong Labvantoc Cmddung Cmdtien cmdlui txtvitri Cmdchay H_vantoc txtvantoc Cmdclr_ecd Cmd_dungvitri - 14 -
  15. Đồ án môn học I : điều khiển vị trí động cơ  Giao diên gồm có: - Nút kết nối vi điều khiển - Khung điều khiển tiến lùi:  Nút tiến động cơ  Lùi động cơ  Đừng động cơ  TextBox nhập giá trị điều xung  Thanh trượt , tạo giá trị điều xung - Khung điều khiển vị trí động cơ:  TextBox nhập vị trí chạy tới  Nút start quá trình.  Nút clear giá trị encoder  Nút dừng chức năng. - Khung hiển thị :  Label- Hiển thị giá trị encoder tuyệt đối (có offset )  Label- Hiển thị số vòng tương ứng ( 400 xung / vòng )  Label- Vận tốc động cơ ( Đã có chống nháy do thay đổi quá nhanh ) - MSComm : < name : gt > : công cụ để giao tiếp với ngoại vi thông qua cổng com - Timer1: liên tục lấy giá trị trung bình của vận tốc , chống nháy khi hiển thị - Timer2: Tạo ngắt trong khoảng thời gian 10ms , phục vụ điều khiển vị trí của động cơ Mã của chương trình:  Phần khai báo đầu chương trình: Option Explicit Dim ht As Double 'vị trí encoder lay ve Dim D_tt As Double ‘vận tốc tức thời của động cơ Private e_p As Double ‘sai số của vị trí động cơ_giữ lại Private e_tichluy As Long ‘Sai số tích lũy , dùng cho thông số KI Private dblvitridat As Double ‘biến lưu trữ vị trí xác lập Private intvt As Integer ‘biến lưu vận tốc động cơ Private ht_p As Double ‘biến lưu lại giá trị trước của encoder Private d_p(20) As Double ‘Biến lưu lại chuỗi vận tốc tức thời Private dang_load As Boolean ‘Đánh đấu vị trí bắt đầu của chuỗi lấy về Private thu_tu As Byte ‘thứ tự của tín hiệu đưa về Private ecd(4) As Long ‘chuổi giá trị encoder lấy về từ vi xử lý Private trang_thai As Byte ‘Trạng thái : tiến , lùi , dừng của động cơ Dim P As Double ‘Hệ số P của bộ PID-vị trí Dim I As Double ‘ Hệ số I Dim D As Double ‘ Hệ số D - 15 -
  16. Đồ án môn học I : điều khiển vị trí động cơ  Xử lý các sự kiện:  Kết nối với máy tính: Private Sub cmdketnoi_Click() On Error Resume Next gt.Settings = "28800,N,8,1" tốc độ 28,8 k gt.CommPort = 1 gt.RThreshold = 1 gt.PortOpen = True gt.InputLen = 1 cmddung.Enabled = True ‘Khi chưa kết nối các nút bấm cmdtien.Enabled = True ‘chưa được kích hoạt , chống cmdlui.Enabled = True ‘lỗi cho chương trình cmdchay.Enabled = True cmdclr_ecd.Enabled = True cmd_dungvitri.Enabled = True lab_trangthai.Caption = "da ket noi !" ‘hiển thị ở góc dưới , phải End Sub  Khởi tạo giá trị ban đầu Private Sub Form_Load() Timer1.Interval = 10 ‘ngắt mỗi lần là10ms Timer1.Enabled = True ‘kích hoạt timer 1 Timer2.Interval = 10 Timer2.Enabled = False ‘cấm timer 2 P = 0.282 ‘Các thông số bộ PID D = 1.125 ‘Các giá trị được tìm bằng i = 0.0187 ‘PP Zeigler-Nichols intvt = 0 thu_tu = 0 trang_thai = 0 End Sub  Xử lý nhận ký tự: Private Sub gt_OnComm() Dim a As Integer Dim b As Double Select Case gt.CommEvent ‘Nhận biết sự kiện Case comEvReceive ‘Nhận dữ liệu Dim buffer As Variant ‘bộ đệm thu buffer = gt.Input a = Asc(buffer) ‘chuyển ký tự ra mã ascii lab.Caption = a & " ;" & buffer ‘hiển thị ở góc cuối phải buffer = "" ‘xóa để tiện theo dõi If dang_load = True Then ‘Nếu đã nhận được điểm - 16 -
  17. Đồ án môn học I : điều khiển vị trí động cơ thu_tu = thu_tu + 1 ‘ bắt đầu thì nạp dữ liệu ecd(thu_tu) = a If thu_tu = 3 Then dang_load = False thu_tu = 0 End If Else If a = 99 Then ‘ ký tự gốc bắt đầu nạp dang_load = True ht = ecd(3) * 256 * 256 + 256 * ecd(2) + ecd(1) - 8388608 ‘Giá trị encoder tuyệt đối trừ đi giá trị offset b = ht / 400 ‘số vòng labsovong.Caption = Format(b, "00000.0000") labecd.Caption = ht End If End If End Select  Xử lý các nút bấm tiến , lùi , dừng: Private Sub cmdtien_Click() intvt = Val(txtvantoc) trang_thai = 1 If intvt >= 256 Then ‘giá trị điều xung max MsgBox ("gia tri phai nho hon 256") Exit Sub End If Call chay(intvt) End Sub Private Sub cmdlui_Click() intvt = Val(txtvantoc) trang_thai = 2 If intvt >= 256 Then MsgBox ("gia tri phai nho hon 256") Exit Sub End If Call chay(-intvt) End Sub Private Sub cmddung_Click() trang_thai = 0 gt.Output = Chr(3) ‘gởi kí tự có mã là 3 - 17 -
  18. Đồ án môn học I : điều khiển vị trí động cơ End Sub  Sự kiện thanh trượt: Private Sub H_vantoc_Change() txtvantoc = H_vantoc.Value intvt = Val(txtvantoc) Select Case trang_thai Case 1: Call chay(intvt) ‘chạy tới Case 2: Call chay(-intvt) ‘chạy lui End Select End Sub  Các nút bấm còn lại , để đk vị trí động cơ Private Sub cmd_dungvitri_Click() Call cmddung_Click e_tichluy = 0 Timer2.Enabled = False ‘ngừng timer, kết thúc tìm vị trí End Sub Private Sub cmdchay_Click() Timer2.Enabled = True ‘bắt đầu chạy vị trí End Sub Private Sub cmdclr_ecd_Click() gt.Output = Chr(4) ‘Mã clear encoder End Sub  Hàm chay( ): Private Sub chay(ByVal v As Integer) If (v > 255) Or (v < -255) Then Exit Sub ‘Max điều xung =256 gt.Output = Chr(0) ’mã nhập vận tốc If v < 0 Then v = -v gt.Output = Chr(v) ‘truyền vận tốc gt.Output = Chr(1) ‘ lệnh chạy lùi Else gt.Output = Chr(v) ‘truyền vận tốc - 18 -
  19. Đồ án môn học I : điều khiển vị trí động cơ gt.Output = Chr(2) ‘lệnh chạy tới End If  Xử lý sự kiện timer1, timer2: Private Sub Timer1_Timer() Dim D_tong As Double Dim tong As Double Dim i As Integer D_tong = ht - ht_p D_tt = D_tong ‘lấy vận tốc tức thời cho bộ PID ht_p = ht tong = 0 For i = 20 To 2 Step -1 ‘lấy tổng giá trị vận tốc trong 0.2s d_p(i) = d_p(i - 1) tong = tong + d_p(i) Next d_p(1) = D_tong tong = tong + d_p(1) D_tong = tong / 20 ‘ lấy giá trị trung bình , xử lý nhấp D_tong = D_tong * 10 ‘ nháy labvantoc = Format(D_tong, "0000.00") ‘Cho giá trị đứng yên trênGD End Sub Private Sub Timer2_Timer() Static g As Integer Dim e As Double Dim v As Integer dblvitridat = Val(txtvitri) * 400 e = ht – dblvitridat ‘Lấy sai số cho bộ PID v = PID(e, e_p) ‘lấy vận tốc từ bộ PID Call chay(v) e_p = e If e = 0 Then g=g+1 Else g=0 End If If g = 30 Then Timer2.Enabled = False ’nếu đúng vị trí trong vòng ‘0.3s thì dừng chức năng lại End Sub - 19 -
  20. Đồ án môn học I : điều khiển vị trí động cơ  Bộ PID: Private Function PID(ByVal e As Double, ByVal e_c As Double) As Integer Dim step1 As Integer Dim up As Double Dim ui As Double Dim ud As Double Dim u As Double If D_tt = 0 Then ‘ Hiệu chỉnh thông số I step1 = 3 ‘Làm giảm thời gian đưa sai số về 0 Else step1 = 1 End If up = -P * e ud = -D * (e - e_c) If (e > -130) And (e < 130) Then ‘Kích hoạt thông số Ki khi động cơ e_tichluy = e * step1 + e_tichluy ‘cách đích khoảng 1 vòng ui = -I * e_tichluy Else e_tichluy = 0 ui = 0 End If u = (up + ui + ud) If u > 255 Then u = 255 ‘ Khâu bão hòa If u < -255 Then u = -255 PID = CInt(u) If e = 0 Then PID = 0 End Function  PID số: TS T V  K p (ek  ek _ TL  D (ek  ek 1 ))  TI TS Trong đó hệ số Ts là chu kỳ lấy mẫu  Tìm thông số bằng cách : - Cho hệ số khuếch đại K ( Ki,Kd = 0) đến khi hệ bắt đầu đao động ổn định quanh vị trí cân bằng ( có kích nhẹ ) ta có : k=0.47, T=0.31s - Kp = 0.6 x k = 0.282 ; Ti = 0.1505 ; Td = 0.03875 - Vậy D = 1.0927 ; I = 0.1874 - 20 -
nguon tai.lieu . vn