- Thành phần bắt buộc
- Sơ đồ mạch và kết nối
- Thông tin chi tiết về pin SMT32F103C8
- Lập trình STM32 cho Động cơ Servo
Trong lĩnh vực điện tử, động cơ Servo chủ yếu được sử dụng trong các Dự án Robot vì độ chính xác và dễ xử lý của chúng. Động cơ servo có kích thước nhỏ hơn và chúng rất hiệu quả và tiết kiệm năng lượng. Chúng cung cấp mô-men xoắn cao và có thể được sử dụng để nâng hoặc đẩy trọng lượng tùy theo đặc điểm kỹ thuật của động cơ. Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Động cơ Servo và Cách giao tiếp Servo với bo mạch STM32F103C8. Một chiết áp cũng được giao tiếp để thay đổi vị trí của trục của động cơ servo và một màn hình LCD để hiển thị giá trị góc.
Thành phần bắt buộc
- Bảng STM32F103C8 (Blue Pill)
- Động cơ Servo (SG90)
- LCD (16x2)
- Chiết áp
- Breadboard
- Dây nhảy
Sơ đồ mạch và kết nối
Thông tin chi tiết về pin SMT32F103C8
Trong STM32F103C8, chúng tôi có 10 chân ADC (PA0-PB1), và ở đây chúng tôi chỉ sử dụng một chân (PA3) cho analogread () để thiết lập vị trí trục của động cơ bằng chiết áp. Ngoài ra trong số 15 chân PWM của STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9), một chân sẽ được sử dụng để cung cấp xung cho Servo chân PWM của động cơ (thường có màu cam).
Bạn có thể tìm hiểu thêm về PWM và ADC bằng cách đọc các bài viết chi tiết bên dưới:
- Cách sử dụng ADC trong STM32F103C8
- Điều chế độ rộng xung (PWM) trong STM32F103C8
Kết nối giữa STM32F103C8 và LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Đến mã PIN của trung tâm chiết áp | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | A |
GND | K |
Kết nối giữa động cơ Servo và STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
ĐỎ (+ 5V) |
PA0 |
ORANGE (pin PWM) |
GND |
NÂU (GND) |
Kết nối chiết áp
Chúng tôi đã sử dụng HAI chiết áp ở đây
1. Chiết áp bên phải được sử dụng để thay đổi độ tương phản của màn hình LCD. Nó có ba chân, chân trái là + 5V và chân phải là GND và chân giữa được kết nối với V0 của màn hình LCD.
2. Chiết áp bên trái được sử dụng để thay đổi vị trí trục của động cơ servo bằng cách điều khiển điện áp đầu vào tương tự, chân trái có đầu vào 3,3V và bên phải có GND và đầu ra trung tâm được kết nối với (PA3) của STM32
Lập trình STM32 cho Động cơ Servo
Giống như hướng dẫn trước của chúng tôi, chúng tôi đã lập trình STM32F103C8 với Arduino IDE thông qua cổng USB mà không cần sử dụng bộ lập trình FTDI. Chúng ta có thể tiến hành lập trình nó giống như Arduino. Mã hoàn chỉnh được đưa ra bên dưới khi kết thúc dự án.
Đầu tiên, chúng tôi đã bao gồm các tệp thư viện cho các chức năng servo và LCD:
#include
Sau đó khai báo các chân cho màn hình LCD và khởi tạo nó. Cũng được khai báo một số biến khác cho PWM và chiết áp:
const int rs = PB0, en = PB1, d4 = PB10, d5 = PB11, d6 = PC13, d7 = PC14; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int servoPin = PA0; int potPin = PA3;
Ở đây chúng tôi đã tạo servo biến với Datatype Servo và gắn nó vào chân PWM đã khai báo trước đó.
Servo servo; servo.attach (servoPin);
Sau đó đọc giá trị Analog từ chân PA3 vì nó là chân ADC nó chuyển đổi điện áp tương tự (0-3.3) thành dạng kỹ thuật số (0-4095)
analogRead (potPin);
Vì đầu ra kỹ thuật số có độ phân giải 12-bit, chúng ta cần lấy các giá trị trong phạm vi độ (0-170), nó chia giá trị ADC (0-4096) theo góc tối đa 170 độ nên chúng ta chia cho 24.
angle = (đọc / 24);
Câu lệnh dưới đây làm cho động cơ servo quay trục theo góc đã cho.
servo.write (góc);
Mã hoàn chỉnh được đưa ra bên dưới và được giải thích bằng các bình luận.