- PWM (Điều chế độ rộng xung):
- Động cơ Servo và PWM:
- Các thành phần bắt buộc:
- Sơ đồ mạch:
- Giải thích làm việc và lập trình:
Raspberry Pi là một bo mạch dựa trên bộ xử lý kiến trúc ARM được thiết kế cho các kỹ sư điện tử và những người yêu thích. PI là một trong những nền tảng phát triển dự án đáng tin cậy nhất hiện nay. Với tốc độ xử lý cao hơn và RAM 1 GB, PI có thể được sử dụng cho nhiều dự án cấu hình cao như Xử lý hình ảnh và Internet of Things.
Để thực hiện bất kỳ dự án cao cấp nào, người ta cần hiểu các chức năng cơ bản của PI. Chúng tôi sẽ trình bày tất cả các chức năng cơ bản của Raspberry Pi trong các hướng dẫn này. Trong mỗi hướng dẫn, chúng tôi sẽ thảo luận về một trong các chức năng của PI. Đến cuối Series Hướng dẫn Raspberry Pi này, bạn sẽ có thể tự mình thực hiện các dự án cấu hình cao. Xem qua các hướng dẫn dưới đây:
- Bắt đầu với Raspberry Pi
- Cấu hình Raspberry Pi
- LED nhấp nháy
- Giao diện nút Raspberry Pi
- Raspberry Pi thế hệ PWM
- Điều khiển Động cơ DC bằng Raspberry Pi
- Điều khiển động cơ bước với Raspberry Pi
- Đăng ký Shift giữa các giao diện với Raspberry Pi
- Hướng dẫn sử dụng Raspberry Pi ADC
Trong hướng dẫn này, chúng tôi sẽ điều khiển Động cơ Servo bằng Raspberry Pi. Trước khi đi đến servo chúng ta hãy nói về PWM vì khái niệm điều khiển Servo Motor bắt nguồn từ đó.
PWM (Điều chế độ rộng xung):
Trước đây chúng ta đã nói về PWM nhiều lần trong: Điều chế độ rộng xung với ATmega32, PWM với Arduino Uno, PWM với IC hẹn giờ 555 và PWM với Arduino Due. PWM là viết tắt của 'Pulse Width Modulation'. PWM là một phương pháp được sử dụng để lấy điện áp thay đổi từ nguồn điện ổn định. Để hiểu rõ hơn về PWM, hãy xem xét mạch bên dưới,
Trong hình trên, nếu công tắc được đóng liên tục trong một khoảng thời gian, đèn LED sẽ 'BẬT' liên tục trong thời gian này. Nếu công tắc đóng trong nửa giây và mở trong nửa giây tiếp theo, thì đèn LED sẽ chỉ BẬT trong nửa giây đầu tiên. Bây giờ tỷ lệ mà đèn LED BẬT trong tổng thời gian được gọi là Chu kỳ hoạt động và có thể được tính như sau:
Chu kỳ làm việc = Thời gian BẬT / (Thời gian BẬT + Thời gian TẮT)
Chu kỳ nhiệm vụ = (0,5 / (0,5 + 0,5)) = 50%
Vì vậy điện áp đầu ra trung bình sẽ là 50% điện áp của pin.
Khi chúng ta tăng tốc độ BẬT và TẮT lên một mức, chúng ta sẽ thấy đèn LED bị mờ thay vì BẬT và TẮT. Điều này là do mắt chúng ta không thể bắt các tần số cao hơn 25Hz một cách rõ ràng. Xem xét chu kỳ 100ms, đèn LED TẮT trong 30msec và BẬT trong 70msec. Chúng ta sẽ có 70% điện áp ổn định ở đầu ra, do đó LED sẽ phát sáng liên tục với 70% cường độ.
Duty Ratio đi từ 0 đến 100. '0' có nghĩa là hoàn toàn TẮT và '100' là BẬT hoàn toàn. Tỷ lệ nhiệm vụ này rất quan trọng đối với Động cơ Servo. Vị trí của Động cơ Servo đang được xác định bởi Tỷ lệ nhiệm vụ này. Kiểm tra điều này để trình diễn PWM với đèn LED và Raspberry Pi.
Động cơ Servo và PWM:
Động cơ Servo là sự kết hợp của động cơ DC, hệ thống điều khiển vị trí và bánh răng. Servos có nhiều ứng dụng trong thế giới hiện đại và cùng với đó, chúng có nhiều hình dạng và kích cỡ khác nhau. Chúng tôi sẽ sử dụng Động cơ Servo SG90 trong hướng dẫn này, nó là một trong những loại phổ biến và rẻ nhất. SG90 là một servo 180 độ. Vì vậy, với servo này, chúng ta có thể định vị trục từ 0-180 độ.
Một động cơ Servo chủ yếu có ba dây, một dây dùng cho điện áp dương, một dây nối đất và dây cuối cùng để thiết lập vị trí. Các dây đỏ được kết nối với điện, Nâu dây được kết nối với mặt đất và vàng dây (hoặc trắng) được kết nối với tín hiệu.
Trong servo, chúng ta có một hệ thống điều khiển lấy tín hiệu PWM từ chân Tín hiệu. Nó giải mã tín hiệu và lấy tỷ lệ nhiệm vụ từ nó. Sau đó, nó so sánh tỷ lệ với các giá trị vị trí được xác định trước. Nếu có sự khác biệt trong các giá trị, nó sẽ điều chỉnh vị trí của servo cho phù hợp. Vì vậy, vị trí trục của động cơ servo dựa trên tỷ lệ nhiệm vụ của tín hiệu PWM tại chân Tín hiệu.
Tần số của tín hiệu PWM (Điều chế độ rộng xung) có thể thay đổi tùy theo loại động cơ servo. Đối với SG90, tần số của tín hiệu PWM là 50Hz. Để tìm ra tần suất hoạt động cho servo của bạn, hãy kiểm tra Biểu dữ liệu cho kiểu máy cụ thể đó. Vì vậy, một khi tần số được chọn, điều quan trọng khác ở đây là TỶ LỆ NHIỆM VỤ của tín hiệu PWM.
Bảng dưới đây hiển thị Vị trí Servo cho Tỷ lệ Nhiệm vụ cụ thể đó. Bạn có thể nhận được bất kỳ góc nào ở giữa bằng cách chọn giá trị cho phù hợp. Vì vậy, đối với 45º của servo, Duty Ratio phải là '5' hoặc 5%.
CHỨC VỤ |
TỶ LỆ NHIỆM VỤ |
0º |
2,5 |
90º |
7,5 |
180º |
12,5 |
Trước khi Giao tiếp động cơ Servo với Raspberry Pi, bạn có thể kiểm tra servo của mình với sự trợ giúp của Mạch kiểm tra động cơ Servo này. Cũng kiểm tra các dự án Servo bên dưới của chúng tôi:
- Điều khiển động cơ Servo bằng Arduino
- Điều khiển động cơ Servo với Arduino Do
- Giao diện động cơ servo với vi điều khiển 8051
- Điều khiển động cơ Servo bằng MATLAB
- Điều khiển động cơ servo bằng cảm biến linh hoạt
- Kiểm soát vị trí Servo với Trọng lượng (Cảm biến lực)
Các thành phần bắt buộc:
Ở đây chúng tôi đang sử dụng Raspberry Pi 2 Model B với Hệ điều hành Raspbian Jessie. Tất cả các yêu cầu cơ bản về Phần cứng và Phần mềm đã được thảo luận trước đó, bạn có thể tra cứu trong phần Giới thiệu Raspberry Pi, ngoài những yêu cầu mà chúng tôi cần:
- Kết nối chân
- Tụ điện 1000uF
- Động cơ Servo SG90
- Breadboard
Sơ đồ mạch:
A1000µF phải được kết nối qua thanh nguồn + 5V nếu không PI có thể tắt ngẫu nhiên trong khi điều khiển servo.
Giải thích làm việc và lập trình:
Sau khi mọi thứ được kết nối theo sơ đồ mạch, chúng ta có thể BẬT PI để viết chương trình trong PYHTON.
Chúng ta sẽ nói về một số lệnh mà chúng ta sẽ sử dụng trong chương trình PYHTON, Chúng tôi sẽ nhập tệp GPIO từ thư viện, chức năng bên dưới cho phép chúng tôi lập trình các chân GPIO của PI. Chúng tôi cũng đang đổi tên “GPIO” thành “IO”, vì vậy trong chương trình bất cứ khi nào chúng tôi muốn đề cập đến các chân GPIO, chúng tôi sẽ sử dụng từ 'IO'.
nhập RPi.GPIO dưới dạng IO
Đôi khi, khi các chân GPIO, mà chúng tôi đang cố gắng sử dụng, có thể đang thực hiện một số chức năng khác. Trong trường hợp đó, chúng tôi sẽ nhận được cảnh báo trong khi thực hiện chương trình. Lệnh dưới đây yêu cầu PI bỏ qua các cảnh báo và tiếp tục với chương trình.
IO.setwarnings (Sai)
Chúng ta có thể tham khảo các chân GPIO của PI, theo số chân trên bo mạch hoặc theo số chức năng của chúng. Giống như 'PIN 29' trên bảng là 'GPIO5'. Vì vậy, chúng tôi nói ở đây hoặc chúng tôi sẽ đại diện cho chốt ở đây bằng '29' hoặc '5'.
IO.setmode (IO.BCM)
Chúng tôi đang đặt PIN39 hoặc GPIO19 làm chân đầu ra. Chúng ta sẽ nhận được đầu ra PWM từ chân này.
IO.setup (19, IO.OUT)
Sau khi thiết lập chân đầu ra, chúng ta cần thiết lập chân làm chân đầu ra PWM, p = IO.PWM (kênh đầu ra, tần số của tín hiệu PWM)
Lệnh trên dùng để thiết lập kênh và cũng để thiết lập tần số của Kênh ”. 'p' ở đây là một biến, nó có thể là bất cứ thứ gì. Chúng tôi đang sử dụng GPIO19 làm kênh đầu ra “PWM. “Tần số của tín hiệu PWM” chúng tôi sẽ chọn 50, vì tần số làm việc của SG90 là 50Hz.
Lệnh dưới đây được sử dụng để bắt đầu tạo tín hiệu PWM. ' DUTYCYCLE ' là để đặt tỷ lệ 'Bật' như đã giải thích trước đây, p.start (DUTYCYCLE)
Lệnh dưới đây được dùng làm vòng lặp vĩnh viễn, với lệnh này các câu lệnh bên trong vòng lặp này sẽ được thực hiện liên tục.
Trong khi 1:
Ở đây, chương trình Điều khiển Servo bằng Raspberry Pi cung cấp tín hiệu PWM tại GPIO19. Tỷ lệ nhiệm vụ của tín hiệu PWM được thay đổi giữa ba giá trị trong ba giây. Vì vậy cứ mỗi giây Servo sẽ quay đến một vị trí được xác định bởi Duty Ratio. Servo liên tục xoay đến 0º, 90º và 180º trong ba giây.