Điều khiển Động cơ DC bằng Trình điều khiển L298N với Raspberry Pi Pico và MicroPython

Điều khiển Động cơ DC bằng Trình điều khiển L298N với Raspberry Pi Pico và MicroPython

Mô-đun trình điều khiển động cơ L298N

Động cơ Dc có thể được điều khiển thông qua một số trình điều khiển có sẵn rộng rãi trên thị trường. Đối với dự án này, chúng tôi sẽ sử dụng mô-đun trình điều khiển động cơ L298N vì nó rất dễ dàng và tương đối rẻ tiền. Nó được sử dụng rộng rãi trong việc điều khiển robot vì chúng ta có thể kết nối tối đa bốn động cơ cùng một lúc nhưng nếu chúng ta muốn kiểm soát tốc độ và hướng đi thì nó cho phép kết nối hai động cơ. Vì vậy, nó là hoàn hảo cho robot hai bánh. Mô-đun này chủ yếu được sử dụng trong robot và điều khiển động cơ dc và bước.

Mô-đun trình điều khiển động cơ L298N bao gồm IC trình điều khiển động cơ L298N, bộ điều chỉnh 78V 05M5, bật jumper 5V, đèn LED nguồn, tản nhiệt, điện trở và tụ điện kết hợp trong một mạch tích hợp. Sơ đồ dưới đây cho thấy tất cả các thành phần bao gồm bên trong mô-đun.

L298N Trình điều khiển động cơ pic1

IC trình điều khiển động cơ L298N được chế tạo mạnh mẽ với tản nhiệt lớn. Nó là một trình điều khiển động cơ cầu H kênh đôi có thể dễ dàng sử dụng để lái hai động cơ.

Mô-đun cũng có bộ điều chỉnh 78M05 5V được kích hoạt thông qua một jumper. Giữ nguyên jumper, có nghĩa là bộ điều chỉnh 5V được bật. Nếu nguồn điện động cơ nhỏ hơn 12V thì chúng tôi sẽ cấp nguồn cho mô-đun thông qua bộ điều chỉnh điện áp. Chân 5V trong trường hợp này hoạt động như một đầu ra để cấp nguồn cho vi điều khiển. Nếu nguồn điện lớn hơn 12V, hãy đảm bảo rằng jumper không còn nguyên vẹn và cung cấp nguồn 5V qua chân riêng biệt.

Lưu ý: Nếu jumper được kết nối, không cung cấp điện cho cả đầu vào nguồn điện động cơ và đầu vào nguồn điện 5V.

Kỹ thuật

Bảng này cho thấy một số thông số kỹ thuật của mô-đun trình điều khiển động cơ L298N:

Mô hình trình điều khiển

L298N ·

Trình điều khiển Chip

Cầu chữ H đôi L298N

Công suất tối đa

25

Điện áp cung cấp động cơ tối đa

46V

Cung cấp động cơ tối đa hiện tại

2A ·

Điện áp trình điều khiển

5-35V

Trình điều khiển hiện tại

2A ·

Kích thước

43x43x26mm

 

Ghim

Bây giờ chúng ta hãy xem sơ đồ chân của mô-đun.

L298N Trình điều khiển động cơ pic2

Tên pin

Mô tả:__________

VCC

Đây là chốt cung cấp năng lượng cho động cơ. Nó được in dấu +12V trên tàu nhưng có thể được cấp nguồn từ 6-12V.

Mặt đất

Đây là pin mặt đất chung.

5V

Chân này cung cấp nguồn (5V) cho mạch bên trong (L298N IC). Sẽ chỉ được sử dụng nếu jumper kích hoạt 5V không còn nguyên vẹn. Nếu jumper còn nguyên vẹn, thì nó hoạt động như một chân đầu ra.

ENA

Chân này điều khiển tốc độ của động cơ A bằng cách bật tín hiệu PWM.

IN1 & IN2

Đây là các chân đầu vào cho động cơ A. Họ điều khiển hướng quay cho động cơ cụ thể đó.

IN3 & IN4

Đây là các chân đầu vào cho động cơ B. Họ điều khiển hướng quay cho động cơ cụ thể đó.

ENB

Chân này điều khiển tốc độ của động cơ B bằng cách bật tín hiệu PWM.

OUT1 & OUT2

OUT1: Thiết bị đầu cuối tích cực.
OUT2: Cực

âm Đây là các chân đầu ra cho động cơ A. Động cơ A có điện áp từ 5-35V, sẽ được kết nối thông qua hai thiết bị đầu cuối này.

OUT3 & OUT4

OUT3: Thiết bị đầu cuối tích cực OUT4: Thiết bị đầu cuối âm Đây là các chân đầu


ra cho động cơ B.

Điều khiển động cơ DC thông qua mô-đun L298N và MicroPython

Bây giờ chúng ta hãy xem chi tiết đằng sau việc điều khiển động cơ dc thông qua mô-đun L298N.

Điều khiển Ghim

Có hai loại chân điều khiển được tìm thấy ở phía dưới cùng bên phải của mô-đun. Một loại điều khiển tốc độ và loại còn lại điều khiển hướng của động cơ.

Chân điều khiển tốc độ (ENABLE)

Các chân điều khiển tốc độ được dán nhãn ENA và ENB trên mô-đun, điều khiển tốc độ của động cơ dc và BẬT và TẮT.

L298N Trình điều khiển động cơ pic4

Chân điều khiển tốc độ

ENA điều khiển tốc độ của động cơ A và ENB kiểm soát tốc độ của động cơ B. Nếu cả hai chân đều ở trạng thái CAO (5V) logic, thì cả hai động cơ đều BẬT và quay ở tốc độ tối đa. Nếu cả hai chân đều ở trạng thái THẤP (mặt đất) logic, thì cả hai động cơ đều TẮT. Thông qua chức năng PWM, chúng tôi cũng có thể kiểm soát tốc độ của động cơ. Theo mặc định, có một jumper được kết nối trên các chân này để giữ cho các chân này ở trạng thái CAO. Để kiểm soát tốc độ, chúng ta cần tháo jumper và kết nối các thiết bị đầu cuối này với các chân PWM của Raspberry Pi Pico và lập trình chúng bằng mã. Bảng dưới đây trình bày các tín hiệu logic cần thiết để điều khiển Động cơ A.

Trạng thái pin ENA

Hành động vận động

1 (CAO)

TRÊN

0 (THẤP)

TẮT

Nếu ENA ở trạng thái CAO, động cơ được bật và nếu nó ở trạng thái THẤP thì động cơ sẽ tắt.

Chân điều khiển hướng (INPUT)

Các chân điều khiển hướng là bốn chân đầu vào (IN1, IN2, IN3, IN4) trên mô-đun.

L298N Trình điều khiển động cơ pic3

Chân điều khiển hướng

Thông qua các chân đầu vào này, chúng tôi có thể xác định xem nên di chuyển động cơ dc tiến hay lùi. Động cơ điều khiển IN1 và IN2 hướng quay của A trong khi hướng quay của động cơ điều khiển IN3 và IN4 B. Bảng dưới đây cho thấy các tín hiệu logic cần thiết cho hành động quay thích hợp cho động cơ A.

TRONG 1

TRONG 2

Hành động vận động

1 (CAO)

1

TẮT

1

0 (THẤP)

Lạc hậu

0

1

Về phía trước

0

0

TẮT

Như đã thấy từ bảng, bất cứ khi nào một trong các đầu vào ở trạng thái CAO (5V) thì động cơ sẽ quay. Mặt khác, khi cả hai đầu vào đều ở trạng thái THẤP (mặt đất) hoặc cả hai đều ở trạng thái CAO thì động cơ sẽ dừng lại. Để động cơ A quay về phía trước, IN1 phải là THẤP và IN2 phải CAO. Đối với chuyển động ngược, IN1 phải CAO và IN2 phải THẤP. Động cơ B cũng được điều khiển theo cách tương tự.

Trình điều khiển động cơ DC & L298N giao diện với Raspberry Pi Pico

Bây giờ, như chúng ta đã thấy cách điều khiển động cơ dc thông qua trình điều khiển động cơ, chúng ta hãy thực hiện một cuộc trình diễn bằng cách kết hợp bảng Raspberry Pi Pico của chúng tôi. Bạn sẽ cần các thiết bị sau đây.

Thiết bị cần thiết

  1. Quả mâm xôi Pi Pico

  2. Mô-đun trình điều khiển động cơ L289N

  3. Động cơ DC mini

  4. Một pin 9V

  5. Tụ điện 0,1uF

  6. Một công tắc

  7. Dây kết nối

Lắp ráp mạch như thể hiện trong sơ đồ kết nối bên dưới.

Raspberry Pi Pico với L298N và sơ đồ kết nối động cơ dc

Chúng tôi sẽ sử dụng chân đầu ra động cơ A để điều khiển động cơ này. Do đó, ENA sẽ đặt tốc độ và IN1 và IN2 sẽ đặt hướng quay của động cơ. GP4 được kết nối với ENA. GP3 và GP2 được kết nối với IN1 và IN2 tương ứng. Bạn có thể chọn các chân GPIO thích hợp khi kết nối bảng Raspberry Pi Pico và mô-đun trình điều khiển với nhau.

Động cơ dc được đánh giá ở mức 6-12V, và đòi hỏi một lượng lớn dòng điện để khởi động. Đây là lý do tại sao chúng tôi sẽ sử dụng nguồn điện bên ngoài cho động cơ dc. Vì chúng tôi có thể sử dụng bất kỳ nguồn năng lượng nào khác nhau, từ 6-12V, chúng tôi sẽ kết hợp pin 9V trong trường hợp của mình. Bạn có thể sử dụng bất kỳ nguồn năng lượng nào khác tùy thích. Chúng tôi đang sử dụng một công tắc trượt được kết nối với nguồn cung cấp pin 9V, rất hữu ích trong việc cắt nguồn điện. Bằng cách này, chúng ta có thể bật và tắt trình điều khiển mà không cần kết nối và ngắt kết nối dây bằng tay. Chúng tôi cũng đã kết nối một tụ điện với hai cực của động cơ dc để không có đột biến điện áp đột ngột. Bạn không cần phải bao gồm công tắc và tụ điện vì chúng là tùy chọn nhưng chúng làm tăng chức năng của dự án.

Raspberry Pi Pico với L298N và động cơ dc

Tập lệnh MicroPython: Điều khiển động cơ DC

Sao chép và lưu mã sau trong main.py của bạn vào bảng Raspberry Pi Pico của bạn.

Động cơ dc sẽ di chuyển về phía trước, dừng lại sau đó di chuyển về phía sau với tốc độ tăng lên vô hạn.

from machine import Pin, PWM

from time import sleep

 

IN1 = Pin(3, Pin.OUT)

IN2 = Pin(2, Pin.OUT)

 

speed = PWM(Pin(4))

speed.freq(1000)

 

while True:

        speed.duty_u16(10000)

        IN1.low()  #spin forward

        IN2.high()

        sleep(5)

        

        IN1.low()  #stop

        IN2.low()

        sleep(2)

        

        speed.duty_u16(20000)

        IN1.high()  #spin backward

        IN2.low()

        sleep(5)

        

        IN1.low()  #stop

        IN2.low()

        sleep(2)

    

        speed.duty_u16(30000)

        IN1.low()  #spin forward

        IN2.high()

        sleep(5)

        

        IN1.low()  #stop

        IN2.low()

        sleep(2)

        

        speed.duty_u16(40000)

        IN1.high()  #spin backward

        IN2.low()

        sleep(5)

        

Mã hoạt động như thế nào?

Bắt đầu bằng cách chúng tôi sẽ nhập các lớp pin và pwm từ mô-đun máy vì chúng tôi phải xử lý cả hai. Lớp học về giấc ngủ sẽ giúp gây ra sự chậm trễ giữa mỗi lần chuyển đổi.

from machine import Pin, PWM

from time import sleep

Tiếp theo, chúng tôi sẽ đặt chân IN1 và IN2 làm đầu ra. Đối số đầu tiên trong lớp Pin() là số pin mà chúng ta đang cấu hình đầu ra. Đầu ra là trên GP3 được kết nối với IN1. Đối số thứ hai cho thấy chế độ pin, ví dụ: đầu vào kỹ thuật số hoặc chế độ đầu ra kỹ thuật số. Khi chúng tôi đang định cấu hình chân 3 làm đầu ra kỹ thuật số mà chúng tôi đã cung cấp, hãy chỉ định nó là 'Pin.Out'. Điều này được lưu trữ trong đối tượng 'IN1'. Tương tự, chúng tôi cũng sẽ định cấu hình GP2 làm đầu ra. Đây là chân IN2.

IN1 = Pin(3, Pin.OUT)

IN2 = Pin(2, Pin.OUT)

Tiếp theo, chúng ta tạo một đối tượng chân PWM được gọi là 'tốc độ' để truyền chân pwm làm tham số. Tham số cho thấy nơi chân được kết nối trong trường hợp của chúng tôi GP4.

Sau đó, chúng tôi sẽ thiết lập tần số của tín hiệu PWM.

speed = PWM(Pin(4))

speed.freq(1000)

Thay đổi tốc độ và hướng của động cơ

Bên trong vòng lặp vô hạn, chúng ta sẽ bắt đầu bằng cách quay động cơ theo hướng về phía trước trong 5 giây. Điều này được thực hiện bằng cách đặt mức thấp của chân IN1 và mức cao của IN2. Ngoài ra, chúng tôi sẽ theo dõi tốc độ của động cơ bằng cách thay đổi chu kỳ làm việc của tín hiệu PWM được áp dụng tại chân PWM.

Phạm vi chu kỳ nhiệm vụ cho Raspberry Pi Pico là từ 0-65535. Tăng chu kỳ làm việc sẽ làm tăng tốc độ của động cơ. Chúng tôi vượt qua chu kỳ làm việc bên trong speed.duty_u16 () để thay đổi tốc độ của động cơ. Chúng tôi đã sử dụng chu kỳ làm việc tăng dần để tăng tốc độ của động cơ sau mỗi lần chuyển đổi.

 speed.duty_u16(10000)

 IN1.low()  #spin forward

 IN2.high()

 sleep(5)

Tiếp theo, chúng tôi sẽ dừng động cơ trong 2 giây. Điều này được thực hiện bằng cách đặt chân IN1 và IN2 thành thấp.

IN1.low()  #stop

IN2.low()

sleep(2)

Tiếp theo, chúng ta sẽ quay động cơ theo hướng lùi trong 5 giây. Điều này được thực hiện bằng cách đặt chân IN1 thành cao và chân IN2 thành thấp.

speed.duty_u16(20000)

IN1.high()  #spin backward

IN2.low()

sleep(5)

Tương tự, trước tiên chúng ta sẽ di chuyển động cơ về phía trước trong 5 giây, sau đó dừng lại trong 2 giây và sau đó di chuyển động cơ về phía sau trong 5 giây trong khi tăng tốc độ ở mỗi lần chuyển đổi.

while True:

        speed.duty_u16(10000)

        IN1.low()  #spin forward

        IN2.high()

        sleep(5)

        

        IN1.low()  #stop

        IN2.low()

        sleep(2)

        

        speed.duty_u16(20000)

        IN1.high()  #spin backward

        IN2.low()

        sleep(5)

        

        IN1.low()  #stop

        IN2.low()

        sleep(2)

    

        speed.duty_u16(30000)

        IN1.low()  #spin forward

        IN2.high()

        sleep(5)

        

        IN1.low()  #stop

        IN2.low()

        sleep(2)

        

        speed.duty_u16(40000)

        IN1.high()  #spin backward

        IN2.low()

        sleep(5)

 

>>> 100+ Mã Sản Phẩm Dây Rút: https://mecsu.vn/san-pham/day-rut-nhua.5op

>>> 1000+ Mã Sản Phẩm Đầu Cosse: https://mecsu.vn/san-pham/dau-cosse.Q1j

 

Bài viết cùng chuyên mục

NHANH

NHANH

Vì Đổi mới liên tục nên Nhanh hơn

ĐÚNG

ĐÚNG

Coi trọng và ưu tiên việc làm Đúng

ĐỦ

ĐỦ

Tìm và mua Đủ Đơn hàng hơn

KỊP THỜI

KỊP THỜI

Hiệu suất tối ưu bởi Kịp Thời hơn