điều khiển động cơ bước sử dụng vi điều khiển STM32

hhgiap 12 views 71 slides Aug 29, 2025
Slide 1
Slide 1 of 71
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71

About This Presentation

điều khiển động cơ bước sử dụng vi điều khiển STM32


Slide Content

BÀI GIẢNG THỰC HÀNH VI ĐIỀU KHIỂN ỨNG DỤNG TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN Số tín chỉ : 2 Ngành đào tạo : CNKT Điều khiển và Tự động hóa

KIỂM TRA BÀI CŨ Câu hỏi : Hãy cho biết chức năng của chân ENA trên Driver điều khiển động cơ L298N? Tên chân Mô tả IN1 & IN2 Các chân đầu vào điều khiển hướng quay động cơ A IN3 & IN4 Các chân đầu vào điều khiển hướng quay động cơ B ENA Kích hoạt tính hiệu PWM cho động cơ A ENB Kích hoạt tính hiệu PWM cho động cơ B OUT1 & OUT2 Chân đầu ra cho động cơ A OUT3 & OUT4 Chân đầu ra cho động cơ B VIN/VCC Đầu vào cấp nguồn 5VDC đến 12VDC GND Chân nối đất

ĐẶT VẤN ĐỀ Sử dụng STM32F103C8T6 điều khiển các loại động cơ DC Step motor Servo motor

VỊ TRÍ BÀI GIẢNG Buổi Bài thực hành Nội dung 1 Bài 1: Thực hành GPIO của STM32 1.1. Lập trình điều khiển Led đơn, nút nhấn, ma trận phím 2 1.2. Lập trình giao tiếp Led 7 thanh , Led ma trận , LCD16x2, GLCD128x64 3 Bài 2: Thực hành Timer, ngắt ngoài EXTI của STM32 2.1. Lập trình các chức năng của Timer 4 2.1. Lập trình các chức năng của Timer (tiếp) 2.2. Lập trình ngắt ngoài (EXTI) 2.1. Lập trình các chức năng của Timer ( tiếp ) 2.2. Lập trình ngắt ngoài (EXTI) 5 Bài 3: Thực hành bộ chuyển đổi ADC của STM32 3.1. Phần cứng các thiết bị chuyển đổi ADC trong module thực hành 3.2. Lập trình ADC 1 kênh 3.3. Lập trình ADC nhiều kênh 6 Bài kiểm tra số 1 7 Bài 4: Thực hành điều khiển các loại động cơ sử dụng STM32 4.1. Phần cứng các Driver điều khiển động cơ trong module thực hành 4.2. Lập trình điều khiển động cơ DC 8 Bài 4: Thực hành điều khiển các loại động cơ sử dụng STM32 (tiếp) 4.3. Điều khiển động cơ bước 4.4. Điều khiển động cơ Servo 9 Bài 5: Thực hành lập trình giao thức truyền thông với STM32 5.1. Phần cứng các giao tiếp truyền thông trong module thực hành 5.2. Lập trình giao thức truyền thông UART 5.3. Lập trình giao thức truyền thông I2C 5.4. Lập trình giao thức truyền thông SPI 10 Bài kiểm tra số 2

BÀI THỰC HÀNH 4: THỰC HÀNH ĐIỀU KHIỂN CÁC LOẠI ĐỘNG CƠ SỬ DỤNG STM32 MỤC TIÊU Sinh viên nắm được cách điều khiển các loại động cơ DC, động cơ bước, động cơ Servo với các module điều khiển động cơ như L298, ULN2003A… Sinh viên biết cách đấu nối, hiểu được phần cứng, sơ đồ cấu trúc, lập trình điều khiển các loại động cơ.

NỘI DUNG 4.3. Điều khiển động cơ bước 4.4. Điều khiển động cơ Servo

4.3. Điều khiển động cơ bước 4.3.1 Khái niệm động cơ bước - Động cơ bước ( stepper motor ) là một loại động cơ điện hoạt động theo nguyên tắc chuyển đổi tín hiệu điện thành chuyển động cơ học thông qua các bước quay cụ thể. - Đặc điểm nổi bật của động cơ bước là khả năng chia chuyển động quay thành các bước rời rạc, nhờ đó dễ dàng kiểm soát vị trí, tốc độ và hướng quay.

4.3. Điều khiển động cơ bước 4.3.2. Các chế độ làm việc Full step Half step

4.3. Điều khiển động cơ bước 4.3.2. Các chế độ làm việc Chế độ Full step ( Chạy đủ bước ) Trong chế độ này, cuộn dây của động cơ được kích hoạt lần lượt theo từng pha hoặc theo từng cặp pha. Trong chế độ này, động cơ sẽ đạt được mô-men xoắn lớn hơn, nhưng độ phân giải thấp hơn so với Half-Step .

4.3. Điều khiển động cơ bước 4.3.2. Các chế độ làm việc Chế độ Half step ( Chạy nửa bước ) Trong chế độ này, các cuộn dây của động cơ được kích hoạt xen kẽ giữa một cuộn ( single-phase ) và hai cuộn ( dual-phase ). Điều này làm tăng gấp đôi số bước, dẫn đến độ phân giải góc quay của động cơ cao hơn so với Full-Step .

4.3. Điều khiển động cơ bước 4.3.2. Các chế độ làm việc Vậy một chuỗi ở chế độ Full-Step cần 4 xung điện, đối với chế độ Hafl Step thì cần tới 8 xung điện. Gi ữa mỗi xung của chuỗi, cần thêm độ trễ, vì động cơ bước hoạt động chậm hơn nhiều so với thời gian thực hiện 1 dòng lệnh của vi điều khiển. Độ trễ này liên quan đến tốc độ quay của trục, giá trị trễ càng nhỏ tốc độ quay càng cao.

4.3. Điều khiển động cơ bước 4.3.3. Động cơ bước 28BYJ Động cơ bước 28BYJ-48 là động cơ bước 4 pha. Điều này có nghĩa là nó có 4 cuộn dây riêng biệt, được điều khiển theo thứ tự để tạo chuyển động quay cho rotor .

4.3. Điều khiển động cơ bước 4.3.3. Động cơ bước 28BYJ STT Thông số kỹ thuật 1 Điện áp 5VDC 2 Góc quét / Bước 5.625 /64 3 Số pha 4 4 Tỉ lệ bánh răng 64

4.3. Điều khiển động cơ bước 4.3.3. Động cơ bước 28BYJ Để điều khiển động cơ bước 28BYJ-48 người ta thường sử dụng Driver ULN2003. Thông số kỹ thuật Driver ULN2003 Điện áp ra max 50VDC Điện áp vào max 30VDC Dòng điện đầu ra liên tục 500mA Dòng điện đầu vào liên tục 25mA

4.3. Điều khiển động cơ bước 4.3.3. Động cơ bước 28BYJ Kết nối động cơ bước 28BYJ-48 với Driver ULN2003 A . STT ULN2003A Màu dây 1 OUT1 Blue 2 OUT2 Pink 3 OUT3 Yellow 4 OUT4 Orange 5 COM Red

4.3. Điều khiển động cơ bước 4.3.4. Bài tập thực hành Bài 4.2: Lập trình điều khiển động cơ bước 28BYJ 2 chế độ Half Step và Full Step sử dụng module ULN2003A với yêu cầu sau : Nhấn phím 1: Động cơ chạy thuận với full step 1 góc 45 độ Nhấn phím 2: Động cơ chạy nghịch với full step 1 góc 90 độ Nhấn phím 3: Động cơ chạy thuận với half step 1 góc 45 độ Nhấn phím 4: Động cơ chạy nghịch với half step 1 góc 90 độ

4.3. Điều khiển động cơ bước 4.3.4. Bài tập thực hành Bài 4.2: Lập trình điều khiển động cơ bước 28BYJ 2 chế độ Half Step và Full Step sử dụng module ULN2003A với yêu cầu sau : Nhấn phím 1: Động cơ chạy thuận với full step 1 góc 45 độ Nhấn phím 2: Động cơ chạy nghịch với full step 1 góc 90 độ Nhấn phím 3: Động cơ chạy thuận với half step 1 góc 45 độ Nhấn phím 4: Động cơ chạy nghịch với half step 1 góc 90 độ

LƯU ĐỒ THUẬT TOÁN

CÁC PHẦN TỬ SỬ DỤNG TRONG BÀI TOÁN Buton STM32F103C8T6 ULN2003 Động cơ Step 28BYJ

LỰA CHỌN ĐỊA CHỈ ĐẦU VÀO/ ĐẦU RA Đầu vào Địa chỉ Nút nhấn 1 PB3 Nút nhấn 2 PB4 Nút nhấn 3 PB5 Nút nhấn 4 PB6 Đầu ra Địa chỉ Chân IN1 ULN2003 PA0 Chân IN2 ULN2003 PA1 Chân IN3 ULN2003 PA2 Chân IN4 ULN2003 PA3

SƠ ĐỒ NGUYÊN LÝ

TÍNH TOÁN Tính toán các giá trị Prescaler (PSC). Để tạo độ trễ chính xác tính bằng micro giây (µs). Chọn Chọn ARR=65535 ( giá trị đếm tối đa của Timer)  

TÍNH TOÁN Tính toán chuỗi xung để tạo ra góc quay tương ứng. Chế độ full step 32x64=2048 bước = 360  1 chuỗi xung = 4 bước Cần 512 chuỗi xung để quay 1 vòng 360  của trục động cơ Số choỗi xung cần thực hiện để quay 1 góc tương ứng là  

TÍNH TOÁN Tính toán chuỗi xung để tạo ra góc quay tương ứng. Chế độ Half step 64x64=4096 bước = 360  1 chuỗi xung = 8 bước Cần 512 chuỗi xung để quay 1 vòng 360  của trục động cơ Số chuỗi xung cần thực hiện để quay 1 góc tương ứng là  

CÁC CÂU LỆNH SỬ DỤNG TRONG BÀI HAL_GPIO_WritePin ( GPIO_TypeDef * GPIOx , uint16_t GPIO_Pin , GPIO_PinState PinState ) Được sử dụng để thiết lập một trạng thái cụ thể cho chân GPIO, cho phép điều khiển chân này ở mức cao ( logic 1) hoặc mức thấp ( logic 0). Ví dụ : Xuất tín hiệu mức cao ở chân PA0. HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_SET);

CÁC CÂU LỆNH SỬ DỤNG TRONG BÀI HAL_GPIO_ReadPin ( GPIO_TypeDef * GPIOx , uint16_t GPIO_Pin ); Được sử dụng để kiểm tra trạng thái của một chân GPIO, giúp xác định xem chân đó đang ở mức cao ( logic 1) hay mức thấp ( logic 0). Ví dụ : Đọc trạng thái chân PA0. HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_0);

CÁC CÂU LỆNH SỬ DỤNG TRONG BÀI __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) Đ ược sử dụng để đặt lại giá trị đếm của bộ đếm Timer . Ví dụ : Timer 2 sẽ bắt đầu đếm lại từ 0. __HAL_TIM_SET_COUNTER(&htim2, 0);

CÁC CÂU LỆNH SỬ DỤNG TRONG BÀI __HAL_TIM_GET_COUNTER(__HANDLE__) Dùng để truy cập vào thanh ghi bộ đếm của bộ định thời và trả về giá trị hiện tại của nó . Ví dụ : Lấy giá trị hiện tại của bộ đếm Timer 2. Counter = __HAL_TIM_GET_COUNTER(&htim2);

CÁC CÂU LỆNH SỬ DỤNG TRONG BÀI HAL_TIM_Base_Start ( TIM_HandleTypeDef * htim ) Dùng để khởi động bộ định thời . Ví dụ : Khởi động Timer 2. HAL_TIM_Base_Start (&htim2);

CẤU HÌNH TRÊN PHẦN MỀM STM32CUBEMX Đầu vào là các nút nhấn vì vậy cấu hình PB3, PB4, PB5, PB5 là GPIO_INPUT, chọn chế độ Pull-up Sử dụng chân PA0, PA1, PA2, PA3 để điều khiển tín hiệu đưa vào chân IN1 IN2 IN3 IN4 của modun UNL2003 vì vậy cấu hình là GPIO_OUTPUT, để mức Low

CẤU HÌNH TRÊN PHẦN MỀM STM32CUBEMX Cấu hình Timer 2 để tạo ra chương trình trễ us

CẤU HÌNH TRÊN PHẦN MỀM STM32CUBEMX Sau khi cấu hình xong , tiến hành đặt tên và sinh code

LẬP TRÌNH TRÊN KEIL C Nội dung chương trình Khai báo tiền xử lý , khai báo biến toàn cục Các chương trình con Khai báo trước while Lập trình trong while

LẬP TRÌNH TRÊN KEIL C Khai báo tiền xử lý , khai báo biến toàn cục int16_t cycle=0; Tạo ra 1 biến để cấu hình độ số xung cấp vào động cơ void delay_us (uint16_t delay) { __ HAL_TIM_SetCounter (&htim2,0); while(__ HAL_TIM_GetCounter (&htim2)<delay); } Khởi tạo hàm tạo trễ micro s

LẬP TRÌNH TRÊN KEIL C Các chương trình con void full_step_motor_thuan (uint16_t step, uint16_t time){ for (cycle=0;cycle< step;cycle ++){ HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,0); delay_us (time); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,0); delay_us (time); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,0); delay_us (time); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,1); delay_us (time); } }

LẬP TRÌNH TRÊN KEIL C Các chương trình con void full_step_motor_nghich (uint16_t step, uint16_t time){ for (cycle=0;cycle< step;cycle ++){ HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,0); delay_us (time); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,0); delay_us (time); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,0); delay_us (time); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,1); delay_us (time); } }

LẬP TRÌNH TRÊN KEIL C Các chương trình con void half_step_motor_thuan (uint16_t step, uint16_t time){ for (cycle=0;cycle< step;cycle ++){ //step1 HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,0); delay_us (time); //step2 HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,0); delay_us (time); //step 3 //step 4 //step 5 //step 6 //step 7 //step 8 } }

LẬP TRÌNH TRÊN KEIL C Các chương trình con void half_step_motor_nghich (uint16_t step, uint16_t time){ for (cycle=0;cycle< step;cycle ++){ //step1 HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,1); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,1); delay_us (time); //step2 HAL_GPIO_WritePin (GPIOA,GPIO_PIN_0,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_1,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_2,0); HAL_GPIO_WritePin (GPIOA,GPIO_PIN_3,1); delay_us (time); //step 3 //step 4 //step 5 //step 6 //step 7 //step 8 } }

LẬP TRÌNH TRÊN KEIL C Chương trình chính Trước vòng while(1) Dùng để khởi động Timer.

LẬP TRÌNH TRÊN KEIL C Chương trình chính Trong vòng while(1)

LẬP TRÌNH TRÊN KEIL C Nạp chương trình và mô phỏng Buil chương trình và nạp code. Trở về proteus, kích đúp vào STM32 lựa chọn file hex từ chương trình vừa build và cấu hình tần số .

LẬP TRÌNH TRÊN KEIL C Nạp chương trình và mô phỏng

LẬP TRÌNH TRÊN KEIL C Đấu nối và nạp chương trình

LẬP TRÌNH TRÊN KEIL C Đấu nối và nạp chương trình Sử dụng phần mềm Stlink Utility để nạp chương trình vào mạch STM32

KẾT LUẬN 1. Kiến thức - Hiểu cách điều khiển động cơ bước 28BYJ-48 bằng phương pháp Full step và Half Step . - Biết cách sử dụng mạch ULN2003 ứng dụng trong việc điều khiển động cơ bước. 2. Kết quả thực hiện - Động cơ đạt được các góc quay chính xác (45°, 90°). 3. Ý nghĩa - Củng cố kỹ năng lập trình và điều khiển động cơ bước. - Xây dựng nền tảng ứng dụng trong các hệ thống tự động hóa cần độ chính xác cao ( Robot , máy in 3D).

4.4. Điều khiển động cơ RC Servo 4.4.1. Khái niệm Động cơ servo ( servo motor ) là một loại động cơ điện đặc biệt được thiết kế để điều khiển vị trí, tốc độ và gia tốc một cách chính xác cao. Nó là một thành phần không thể thiếu trong các hệ thống tự động hóa hiện đại, từ robot công nghiệp cho đến máy móc CNC.

4.3. Điều khiển động cơ RC Servo 4.4.2. Điều khiển động cơ servo bằng PWM T ín hiệu PWM có chu kỳ 20ms (tần số 50Hz) được sử dụng để điều khiển động cơ.

4.4. Điều khiển động cơ RC Servo 4.4.3. Động cơ RC Servo MG90S Động cơ servo SG90 có kích thước nhỏ, là loại được sử dụng nhiều nhất để làm các mô hình nhỏ hoặc các cơ cấu kéo không cần đến lực nặng. STT Thông số kỹ thuật 1 Điện áp hoạt động 4.8-5VDC 2 Lực kéo 1.6Kg.cm 3 Tần số 50Hz, chu kỳ 20ms 4 Độ rộng xung 0.5ms – 2.5ms Tương ứng 0 - 180˚

4.4. Điều khiển động cơ RC Servo 4.4.3. Động cơ RC Servo MG90S Sơ đồ chân động cơ servo SG90: + Dây màu đỏ: dương nguồn. + Dây màu nâu: âm nguồn. + Dây màu cam: dây tín hiệu.

4.4. Điều khiển động cơ RC Servo 4.4.4. Bài tập thực hành Bài 4.3: Lập trình điều khiển động cơ bước Servo MG90S với yêu cầu Nhấn phím 1: Động cơ quay góc độ Nhấn phím 2: Động cơ quay góc 90 độ Nhấn phím 3: Động cơ quay góc 180 độ

LƯU ĐỒ THUẬT TOÁN

CÁC PHẦN TỬ SỬ DỤNG TRONG BÀI TOÁN Button STM32F103C8T6 Động cơ Servo MG90s

LỰA CHỌN ĐỊA CHỈ ĐẦU VÀO/ ĐẦU RA Đầu vào Địa chỉ Nút nhấn 1 PB3 Nút nhấn 2 PB4 Nút nhấn 3 PB5 Đầu ra Địa chỉ Chân PWM PA8

SƠ ĐỒ NGUYÊN LÝ

CÁC CÂU LỆNH SỬ DỤNG HAL_TIM_PWM_Start ( TIM_HandleTypeDef * htim , uint32_t Channel); Sử dụng để khởi động chế độ PWM (Pulse Width Modulation) trên một kênh của bộ định thời (Timer). Ví dụ : Khởi động chế độ PWM trên kênh 1 của Timer 1 (TIM1).. HAL_TIM_PWM_Start (&htim1, TIM_CHANNEL_1);

TÍNH TOÁN Tính toán các giá trị Prescaler (PSC) và Auto Reload ( ARR) đ ể tạo tần số 50Hz (20ms) Chọn  

CẤU HÌNH TRÊN STM32CUBE MX Đầu vào là các nút nhấn vì vậy cấu hình PB3, PB4, PB5 là GPIO_INPUT, chọn chế độ Pull-up

CẤU HÌNH TRÊN STM32CUBE MX Cấu hình Timer 1 để tạo xung PWM với tần số 50Hz để điều khiển động cơ

CẤU HÌNH TRÊN STM32CUBE MX Sau khi cấu hình xong , tiến hành đặt tên và sinh code

LẬP TRÌNH TRÊN KEIL C Nội dung chương trình Các chương trình con Khai báo trước while Lập trình trong while

LẬP TRÌNH TRÊN KEIL C Chương trình con int16_t cycle=0; Tạo ra 1 hàm servo để sau này truyền giá trị độ rộng xung (duty) vào để động cơ quay các góc tương ứng void servo (uint16_t duty) { __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,duty); }

LẬP TRÌNH TRÊN KEIL C Chương trình chính Trước vòng while(1) Dùng để khởi động chế độ PWM của timer 1

LẬP TRÌNH TRÊN KEIL C Chương trình chính trong while(1)

LẬP TRÌNH TRÊN KEIL C Giải thích tính toán độ rộng xung trong code 1 chu kỳ 20ms độ phân dải : 20 000 xung Góc 1ms xung Góc 90 1.5ms xung Góc 180 2ms xung Tính góc bất kỳ : 1ms 1.5ms  

LẬP TRÌNH TRÊN KEIL C Giải thích tính toán độ rộng xung trong code Tính góc bất kỳ : 1ms 1.5ms Tức là khoảng góc từ đến 90 độ tương ứng với khoảng 0.5ms VD tính số xung tương ứng với góc 35 Với khoảng từ đến 35 độ tương ứng với  

NẠP CHƯƠNG TRÌNH VÀ MÔ PHỎNG Buil chương trình và nạp code. Trở về proteus, kích đúp vào STM32 lựa chọn file hex từ chương trình vừa build và cấu hình tần số .

ĐẤU NỐI VÀ NẠP CHƯƠNG TRÌNH Sử dụng phần mềm Stlink Utility để nạp chương trình vào mạch STM32

BÀI THỰC HÀNH 4: THỰC HÀNH ĐIỀU KHIỂN CÁC LOẠI ĐỘNG CƠ SỬ DỤNG STM32 Bài tập 4.5: Lập trình điều khiển động cơ 28BYJ sử dụng module ULN2003A điều khiển vị trí và chiều quay với các yêu cầu công nghệ sau : Nhấn nút 1: Động cơ hoạt động chế độ Half step quay 3 vòng theo chiều thuận rồi quay ¼ vòng theo chiều nghịch rồi quay ½ vòng theo chiều thuận Nhấn nút 2: Động cơ hoạt động chế độ Full step quay 2 vòng chiều thuận rồi quay 1 vòng theo chiều nghịch - Thay đổi giá trị PWM bằng nút nhấn tăng giảm. - Hiển thị độ rộng xung PWM trên LCD16x2. Bài tập 4.6: Lập trình điều khiển động cơ Servo MG90S với các yêu cầu sau : Tăng giảm , sét giá trị góc bằng nút nhấn Hiển thị giá trị góc lên LCD16x2

PHÂN CÔNG NHIỆM VỤ Thời gian Nhóm 1 Nhóm 2 Nhóm 3 Nhóm 4 20p Bài tập 4.2 Bài tập 4.3 Bài tập 4.5 Bài tập 4.6 20p Bài tập 4.3 Bài tập 4.5 Bài tập 4.6 Bài tập 4.2 20p Bài tập 4.5 Bài tập 4.6 Bài tập 4.2 Bài tập 4.3 20p Bài tập 4.6 Bài tập 4.2 Bài tập 4.3 Bài tập 4.5

KẾT LUẬN 1. Kiến thức Nắm được các cách điều khiển động cơ step 28BYJ, servo MG90s, sử dụng điều khiển động cơ với modun ULN2003A Củng cố lại các kỹ năng sử dụng các phần mềm , lập trình , đấu nối 2. Kết quả thực hiện Thực hiện mô phỏng , lập trình đấu nối điều khiển động cơ step, servo Ổn tập lại kiến thức về PWM, LCD

BÀI THỰC HÀNH 1: PHƯƠNG TRÌNH ĐỘNG HỌC, ĐỘNG LỰC HỌC Trân trọng cảm ơn !
Tags