Đồ án Kỹ thuật vi điều khiển Tìm hiểu về động cơ bước 4 pha, sử dụng module ULN2003A điều khiển các chức năng bằng phím nhấn và hiển thị thông tin qua led 7 đoạn. Đồ án bao gồm một số câu hỏi phụ liên quan đến động cơ bước rất chi tiết.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC CẦN THƠ TRƯỜNG BÁCH KHOA KHOA TỰ ĐỘNG HÓA
HỌC PHẦN KỸ THUẬT VI ĐIỀU KHIỂN
ĐỒ ÁN: TÌM HIỂU VỀ ĐỘNG CƠ BƯỚC - THIẾT KẾ
MẠCH ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC PHA,
CÓ ĐIỀU KHIỂN BẰNG PHÍM VÀ HIỂN THỊ RA LED 7 ĐOẠN
ss
Tháng 12/2022
Giáo viên hướng dẫn:
Th.s: Nguyễn Khắc Nguyên
Sinh viên thực hiện: Nhóm 6
Lê Trường Giang B1907003 Phan Trường An B1906984 Nguyễn Tuấn Đạt B1907000 Nguyễn Duy Long B1907035
Đặng Hoài Phúc B1907052
Trang 2NỘI DUNG
1 Giới thiệu đề tài
a) Tên và mục tiêu của đề tài
b) Các tính năng cơ bản
c) Phương pháp thực hiện
2 Thực hiện
a) Mô hình hệ thống
i Mô tả sơ lược về hệ thống
ii Vẽ mô hình hệ thống dạng khối b) Thiết kế phần cứng mạch điện
i Mô tả sơ lược hoạt động của mạch điện
ii Vẽ sơ đồ khối phần cứng mạch điện iii Thiết kế chi tiết
1) Khối nguồn 2) Khối hiển thị led 7 đoạn 3) Khối xử lý động cơ bước 4) Khối phím chức năng
iv Sơ đồ nguyên lý tổng hợp của toàn mạch c) Thiết kế phần mềm điều khiển
i Mô tả các chức năng của phần mềm
ii Vẽ lưu đồ chương trình chính iii Vẽ lưu đồ chương trình con chính yếu
iv Đoạn code chương trình ( có ghi chú và chú thích các đoạn lệnh, dòng lệnh)
Trang 34 Tài liệu tham khảo
5 Phụ lục
a Quá trình thực hiện đề tài
i Kế hoạch thời gian
ii Những thuận lợi và khó khăn trong quá trình thực hiện và kiến nghị
b Danh sách các thành viên và bảng phân chia công việc
c Trả lời câu hỏi
Trang 41 Giới thiệu đề tài
Mạch điều khiển động cơ bước có nhiều ứng dụng trong thực tế nhờ vào nhiều chế quay khác nhau của động cơ như Full, Half và Micro Step Chẳng hạn như việc dùng các chế độ trên ứng dụng vào máy in 3D thực tế hiện nay rất hiệu quả và độ chính xác cao do có chế độ Micro Step Để bắt đầu và thực hiện đồ
án này chúng em dựa vào những kiến thức đã học về lập trình MSP430 nhằm thực hiện đồ án Và đề tài mà nhóm thực hiện là thiết kế mạch điều khiển động
cơ bước 4 pha có điều khiển bằng phím và hiển thị led 7 đoạn
a Tên và mục tiêu đề tài
Tên đề tài:
Mạch điều khiển động cơ bước 4 pha có điều khiển bằng phím
và hiển thị led 7 đoạn
Mục tiêu đề tài:
• Giải quyết được yêu cầu của đề tài
• Tìm hiểu cách sử dụng của động cơ bước 4 pha
• Kết nối MSP430G2553 với động cơ thông qua IC ULN2003
• Hiển thị qua Led 7 đoạn
• Hoàn thành đúng tiến độ
b Các tính năng cơ bản:
• Dùng phím bấm để chuyển đổi chế độ quay, tốc độ và góc quay của động cơ
• Hiển thị các thông tin các chế độ của động cơ ra led 7 đoạn
• Sử dụng các phương thức ngắt trong của Timer
• Giao tiếp giữa Led 7 đoạn và IC họ 595 sử dụng phương thức dịch thanh ghi HC595 và quét led
c Phương pháp thực hiện:
• Tìm hiểu nguyên lý hoạt động của các linh kiện
• Tìm hiểu cách kết nối giữa các linh kiện cho phù hợp (kết nối theo
sơ đồ nguyên lý)
• Phát thảo mô hình phù hợp
Trang 5• Lắp ráp mô hình thực tế
• Thực hiện viết chương trình theo đề tài để mô hình hoạt động theo
dự kiến
• Tổng kết đánh giá logic, chức năng tổng quát của mô hình
• Hoàn thành báo cáo và báo cáo đề tài
2 Thực hiện
a) Mô hình hệ thống
i Mô tả sơ lược hệ thống
- Khi được cấp nguồn, vi điều khiển đọc giá trị và nhân tín hiệu từ phím nhấn đã được thiết lập Sau đó xử lý và đưa giá trị hiển thi ra led 7 đoạn, mô hình sẽ bao gồm 3 nút nhấn
đó là nút chế độ quay, nút tốc độ quay và nút điều chỉnh góc độ
ii Vẽ mô hình Hệ thống dạng khối
b) Thiết kế phần cứng mạch điện:
i Mô tả sơ lược hoạt động của mạch điện
- Khi được nhận tín hiệu đọc hoặc ghi từ vi điều khiển, ULN2003 xử lý và trả tín hiệu về cho vi điều khiển, vi điều khiển xử lý và hiển thị ra led 7 đoạn, khi phím chuyển các chế độ được nhấn thì vi điều khiển sẽ xử lý tín hiệu được nhận tương ứng
ii Vẽ sơ đồ khối phần cứng mạch điện
MSPG2553
Khối nguồn
Khối giao tiếp và xử
lý của Stepper
Khối giao tiếp với phím
Khối hiển thị Led
7 đoạn
Trang 6iii Thiết kế chi tiết:
1) Khối nguồn
- Chức năng: Khối nguồn có chức năng chuyển đồi và cung cấp nguồn cho mạch hoạt động trong dãy điện thế từ 3.3V đến 5V DC
- Mục tiêu: Cung cấp nguồn ổn định cho hệ thống
2) Khối hiển thị led 7 đoạn:
- Chức năng: Xuất tín hiệu từ vi điều khiển sang led 7 đoạn
- Mục tiêu: Hiển thị chính xác dữ liệu
MSPG2553
Khối nguồn
Khối
xử lý của Stepper
Khối giao tiếp với phím
Khối hiển thị Led
7 đoạn
Trang 7Cấu tạo:
- LED 7 đoạn bao gồm 8 LED được kết nối song song
để có thể thắp sáng hiển thị số “0, 1, 2, 3, 4, 5, 7, 8, 9, A, b, C,
d, E, F, …”
- Mỗi đoạn Led được đánh dấu từ A tới G
- Đoạn thứ tám gọi là “chấm thập phân” (Decimal
Point) ký hiệu DP được sử dụng khi hiển thị số không phải là số
- Loại âm chung (Common Cathode): nếu cực âm (cathode) của tất cả 8 LED được nối với nhau và các cực dương (anode) đứng riêng lẻ
Nguyên lý hoạt động:
- Nguyên tắc chung: muốn LED nào sáng thì LED đó phải
được phân cực thuận.Do đó muốn tạo ra chữ số nào ta chỉ cần cho LED ở các vị trí tương ứng sáng lên
Trang 8Dương chung Âm chung
Bảng mô tả cách tạo ra các chữ số để hiển thị lên LED 7 đoạn
Phương pháp quét led để hiển thị led 7 đoạn:
- Phương pháp quét hiển thị
- Điều khiển các LED sáng lần lượt từ LED1 đến LED4, sao cho tại 1 thời điểm thì chỉ có 1 LED sáng
- Gọi T là chu kỳ quét LED: là chu kỳ điều khiển 1 LED
- Gọi tx là thời gian sang của 1 LED
- Ta có giản đồ thời gian quét LED như sau:
Điều kiện để các led sáng đồng thời
𝑇 ≤ 20𝑚𝑠 ⇒ 𝑡𝑥 = 𝑇
6 ≤ 3𝑚𝑠
t x
Trang 9Cấu tạo - Nguyên lý hoạt động IC họ HC595:
- IC này thuộc họ linh kiện logic HC được thiết kế để sử
dụng trong các ứng dụng công nghệ CMOS
- 74HC595 có hai thanh ghi tích hợp Cái đầu tiên là thanh ghi dịch và cái thứ hai là thanh ghi lưu trữ Dữ liệu được truyền nối tiếp để thay đổi từng bit thanh ghi Nhưng nó chỉ chuyển vào thanh ghi lưu trữ khi chân chốt dữ liệu
được kích ở mức cao
3) Khối xử lý của động cơ bước
- Chức năng: Đọc giá trị từ phím chức năng, đưa tín hiệu
về vi điều khiển để xử lý
- Mục tiêu: Xử lý đúng tín hiệu cho động cơ quay
Trang 10- Mô-men xoắn động cơ: 34 N/m, nghĩa là nếu 1 N/m được truyền cho 1 Kg, thì nó sẽ là một lực tương đương với việc đặt khoảng 0.34 Kg/cm lên trục của nó Đủ để nâng bằng một ròng rọc chỉ hơn 1/4 kg
- Có 4 pha, góc bước là 5.625°/64
- Hộp số tích hợp: 1/64 tức chia mỗi bước thành 64 bước nhỏ hơn để có độ chính xác cao hơn Do đó, có 512 bước (0.7º mỗi bước) Hoặc cũng có thể được xem là 256 bước cho mỗi vòng (Full Step)
Bảng mã nhị phân cấp xung dạng Full Step
Bảng mã nhị phân cấp xung dạng Half Step
Trang 11Cấu tạo và nguyên lý hoạt động của IC ULN2003
- Hoạt động có điện áp DC cao cực đại khoảng 50V
- Dòng điện tối đa là 500mA ở mối đầu vào
- Dải dòng điện có thể tăng lên bằng cách kết hợp hai chân cho cùng một tải
- Có một diode zenner để bảo vệ thiết bị khỏi suất điện động ngược
- ULN2003 có một hệ thống bảo vệ flyback bên trong và có một chân có thể sử dụng cho tải cảm
- Có thể điều khiển bằng bất kỳ thiết bị điện áp thấp nào như Arduino, Vi xử lý hoặc bất kỳ bộ điều khiển hoặc IC nào khác
- Có tất cả các package như SOP, PDIP, TSSOP hoặc SOIC
- Đầu ra ULN2003 tương thích chuẩn logic TTL và CMOS 5V
Trang 12c Thiết kế phần mềm điều khiển:
i Mô tả các chức năng của phần mềm
• 3 thanh ghi Capture/Compare (CCRx)
• 2 vector ngắt – TACCRO và TAIV
Chức năng đề tài:
- Sử dụng các phương pháp ngắt của Timer là ngắt trong
Trang 13- Giao tiếp giữa Led 7 đoạn và IC họ 595 sử dụng phương thức dịch thanh ghi và quét led
- Thay đổi các chế độ động cơ sử dụng phương thức đọc phím của MSP430 như quét phím trong hàm ngắt Timer và chống dội
ii Sơ đồ giải thuật
iii Chương trình con chính yếu
1 // ham xu ly ngat timmer
2 // ============== ========= ============= ===============
======================== ============
3 #if defined( TI_COMPILER_VERSION ) || defined( IAR_SYSTEMS_ICC )
4 #pragma vector=TIMER1_A0_VECTOR
5 interrupt void timer1_ccr0_isr_ (void)
6 #elif defined( GNUC )
7 void attribute ((interrupt(TIMER1_A0_VECTOR))) timer1_ccr0_isr_ (void)
13 static uint16_t step;
14 static uint8_t micro_step = 0
Mảng buffer chống dội
Trang 1416 static uint8_t micro_step_interval = 0
24 button_buffer[ ] = (BTN_PORT & BTN1) != BTN1;
25 if(button_buffer[ ] == && button_buffer[ ] == && button_buffer[ ] == ) {
27 stp_dir = stp_dir == forward ? backward : forward;
28 step = map(stp_angle, 0 360, 0 stp_mode == full ? 2048 4096);
35 button_buffer[ ] = (BTN_PORT & BTN2) != BTN2;
36 if(button_buffer[ ] == && button_buffer[ ] == && button_buffer[ ] == ) {
38 stp_mode = stp_mode == full ? haft : full;
39
40 }
43 button_buffer[ ] = (BTN_PORT & BTN3) != BTN3;
44 if(button_buffer[ ] == && button_buffer[ ] == && button_buffer[ ] == ) {
46
47 switch(stp_angle) {
48 case : stp_angle = 30; break;
49 case 30: stp_angle = 90; break;
50 case 90: stp_angle = 180; break;
51 case 180: stp_angle = 270; break;
52 case 270: stp_angle = 30; break;
Đọc giá trị góc quay động cơ
Trang 1575 STP_PUT(stp_dir == backward ? STP1 : STP4, (stp_mode == full ?
stp_1frac1[micro_step] : stp_1frac2[micro_step]) BIT3);
76 STP_PUT(stp_dir == backward ? STP2 : STP3, (stp_mode == full ?
stp_1frac1[micro_step] : stp_1frac2[micro_step]) BIT2);
77 STP_PUT(stp_dir == backward ? STP3 : STP2, (stp_mode == full ?
stp_1frac1[micro_step] : stp_1frac2[micro_step]) BIT1);
78 STP_PUT(stp_dir == backward ? STP4 : STP1, (stp_mode == full ?
stp_1frac1[micro_step] : stp_1frac2[micro_step]) BIT0);
22 // khai bao bien goc quay, che do quay, chieu quay
23 static volatile uint16_t stp_angle = 0
24 static volatile stepper_mode_t stp_mode = full;
25 static volatile stepper_direction_t stp_dir = forward;
26
27 // bang ma led 7 doan am chung
28 static const uint8_t led7seg_code[] 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,
0xF8, 0x80, 0x90 };
29
30 // khai bao bo dem led 7 doan
31 static volatile uint8_t led7seg_buffer[ ] = { , 0 , 0 , 0};
32
33 // khai bao ham prototype
Đọc giá trị xung của động cơ
Trang 1634 static inline void led7seg_display_angle(uint16_t data, uint8_t idx);
35 static inline void led7seg_display_stepper_mode(uint16_t data);
36 static inline void led7seg_display_stepper_direction(uint16_t data);
37 static inline uint16_t map(float x, float in_min, float in_max, float out_min,
46 void main(void) {
47 WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
90 led7seg_display_stepper_direction(&data);
Trang 1794 else if idx == )
96 led7seg_display_stepper_mode(&data);
97 else
99 led7seg_display_angle(&data, idx);
100
101
103 for(idx = 0 idx < 16; idx++)
124 #pragma vector=TIMER1_A0_VECTOR
125 interrupt void timer1_ccr0_isr_ (void)
126 #elif defined( GNUC )
127 void attribute ((interrupt(TIMER1_A0_VECTOR))) timer1_ccr0_isr_ (void)
133 static uint16_t step;
144 button_buffer[ ] = (BTN_PORT & BTN1) != BTN1;
145 if(button_buffer[ ] == && button_buffer[ ] == && button_buffer[ ] == ){
147 stp_dir = stp_dir == forward ? backward : forward;
148 step = map(stp_angle, 0 360, 0 stp_mode == full ? 2048 4096);
Trang 18154 button_buffer[ ] = button_buffer[ ];
155 button_buffer[ ] = (BTN_PORT & BTN2) != BTN2;
156 if(button_buffer[ ] == && button_buffer[ ] == && button_buffer[ ] == ){
158 stp_mode = stp_mode == full ? haft : full;
159
160 }
163 button_buffer[ ] = (BTN_PORT & BTN3) != BTN3;
164 if(button_buffer[ ] == && button_buffer[ ] == && button_buffer[ ] == ){
166
167 switch(stp_angle) {
168 case : stp_angle = 30; break;
169 case 30: stp_angle = 90; break;
170 case 90: stp_angle = 180; break;
171 case 180: stp_angle = 270; break;
172 case 270: stp_angle = 30; break;
195 STP_PUT(stp_dir == backward ? STP1 : STP4, (stp_mode == full ?
stp_1frac1[micro_step] : stp_1frac2[micro_step]) BIT3);
196 STP_PUT(stp_dir == backward ? STP2 : STP3, (stp_mode == full ?
stp_1frac1[micro_step] : stp_1frac2[micro_step]) BIT2);
197 STP_PUT(stp_dir == backward ? STP3 : STP2, (stp_mode == full ?
stp_1frac1[micro_step] : stp_1frac2[micro_step]) BIT1);
198 STP_PUT(stp_dir == backward ? STP4 : STP1, (stp_mode == full ?
stp_1frac1[micro_step] : stp_1frac2[micro_step]) BIT0);
Trang 19226
227
i Dùng phím bấm để chuyển đổi chế độ quay, tốc độ và góc quay của động cơ
Trang 20Video thực tế kèm File
ii Hiển thị thông tin các chế độ động cơ ra led 7 đoạn
iii Sử dụng các phương thức ngắt trong timer
iv Giao tiếp giữa Led 7 đoạn và IC họ 595 sử dụng phương thức dịch thanh ghi HC595 và quét led
Chế độ thuận/nghị
ch bằng ký hiệu ∪/∩
Chế độ Full/Haft bằng ký hiệu F/H
Chế độ góc quay bằng ký hiệu số
Trang 21c Nhận xét chung về ưu nhược điểm của hệ thống
Ưu điểm:
- Tiết kiệm điện vì áp dụng phương thức sleep và ngắt Timer
- Dễ tiếp cận cho người mới bắt đầu về MSP430
https://mlab.vn/index.php?_route_=6241-hoc-msp430-voi-kit-msp430-• Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 -
https://www.youtube.com/watch?v=TQ7R2bY-MWU
• Tạo màn hình với led 7 đoạn và thanh ghi dịch 74HC595
thay-doi-74hc595-du-an-arduino/
https://advancecad.edu.vn/tao-man-hinh-voi-led-7-doan-va-thanh-ghi-Kết nối 2 IC họ HC595 với Led
7 đoạn
Trang 225 Phụ lục:
a Quá trình thực hiện đề tài
i Kế hoạch thời gian
• Kế hoạch dự kiến: 6 tuần
• Kết quả thực tế: hoàn thành theo dự kiến
Tuần 1: Phân chia nhiệm vụ cho các thành viên Tuần 2: Tìm hiểu lý thuyết về đề tài
Tuần 3: Tìm hiểu về các linh kiện trong đề tài Tuần 4: Viết sơ đồ giải thuật, thiết kế mạch nguyên lý Tuần 5: Làm mạch PCB, lắp ráp mạch điện thực tế và kiểm tra
Tuần 6: Viết code và đánh giá tổng thể
ii Những thuận lợi và khó khăn trong quá trình thực hiện
Sai sót trong quá trình thiết kế PCB
b Danh sách các thành viên và phân chia công việc
Lê Trường Giang Viết code
Trang 23Đặng Hoài Phúc Tìm hiểu linh kiện và viết báo cáo Phan Trường An Thiết kế mạch nguyên lý và vẽ PCB Nguyễn Duy Long Lắp ráp mạch điện và sửa báo cáo Nguyễn Tuấn Đạt Tìm hiểu lý thuyết, linh kiện
c Trả lời câu hỏi
Đạt: Vẽ mạch điện MSP430 - led 7 đoạn, chỉ ra phương pháp quét led, code và chu kỳ quét thế nào ?
Mạch điện MSP430 – led 7 đoạn:
Phương pháp quét Led để hiển thị Led 7 đoạn và chu kỳ quét:
• Điều khiển các LED sáng lần lượt từ LED1 đến LED4, sao cho tại 1 thời điểm thì chỉ có 1 LED sáng
• Gọi T là chu kỳ quét LED: là chu kỳ điều khiển 1 LED
• Gọi tx là thời gian sang của 1 LED
• Ta có giản đồ thời gian quét LED như sau:
Trang 24Đoạn code xử lý quét led:
179 // doan code xy ly quet led
180 // ============== ========= =============
181 static uint16_t led7seg_counter = 0 idx = 0
182 static const uint16_t led7seg_digits = 6
An: Vẽ mạch điện MSP430 – phím chức năng, nêu chức năng, liệt
kê đoạn chương trình khai báo và xử lý thế nào ?
Mạch điện MSP430 – phím chức năng:
Chức năng:
Dùng phím bấm để chuyển đổi chế độ quay, tốc độ và góc quay của động cơ
Chương trình khai báo: