Giới thiệu về chip mạch cầu L298N

Một phần của tài liệu Thiết kế phần cơ sở của robot tự hành (Trang 64)

5.3.1 Phương pháp ñiu chếñộ rng xung PWM:

Phương pháp ñiều chếñộ rộng xung PWM (Pulse Width Modulation) là phương pháp thay ñổi ñiện áp ra trung bình nhờ vào thay ñổi thời gian ñóng ngắt của các khóa cấp

ñiện cho ngõ ra.

Phương pháp PWM ñược sử dụng rất phổ biến trong ñiều khiển ñộng cơ vì các ưu

ñiểm:

• Mạch công suất thiết kếñơn giản. • Vận tốc ñộng cơ thay ñổi êm. • Tổn hao công suất nhỏ.

Xét mạch ñiện sau:

Hình 5.10 – Mạch ñơn giản

Khóa S ñược ñóng ngắt theo chu kỳ không ñổi, bằng cách thay ñổi thời gian ñóng (Ton) và ngắt của khóa S trong chu kỳ (T), ta thay ñổi ñược ñiện áp trung bình trên tải. Khoảng thay ñổi từ 0 ñến U. Hình 5.11 – Xung PWM Ta có công thức: . on average T V U T =

Như vậy ta thay ñổi ñược ñiện áp trung bình cấp cho ñộng cơ, việc này làm thay

ñổi vận tốc ñộng cơ.

Xung PWM ñược tạo rất dễ dàng bằng các mạch vi ñiểu khiển. Khóa ñóng ngắt S trong thực tế thường sử dụng Mosfet hoặc IGBT.

5.3.2 Mch cu H:

Mạch cầu H ñược sử dụng rộng rãi ñểñiều khiển ñảo chiều ñộng cơ. Xét mạch:

Hình 5.12 – Mạch cầu H

Giả sử khi có dòng ñiện chạy theo chiều + - thì ñộng cơ quay thuận, chiều ngược lại sẽ làm ñộng cơ quay nghịch.

- Cho khóa S1 và S4 ñóng, khóa S2 và S3 hở mạch, khi ñó dòng ñiện qua ñộng cơ có chiều: S1 M S4, ñộng cơ quay thuận.

- Muốn ñảo chiều quay của ñộng cơ, ta ngắt S1 và S4, ñóng S2 và S3, khi ñó dòng ñiện qua S3 M S2, ñộng cơ sẽ quay theo chiều ngược lại.

Trong ñề tài này, kết hợp mạch cầu H và phương pháp PWM, ta sẽ ñiều khiển vận tốc và chiều quay của ñộng cơ như sau:

- Quay thuận: ngắt khóa S2 và S3, ñóng khóa S4 và cấp xung PWM cho S1.

- Quay ngược: ngắt khóa S1 và S4, ñóng khóa S2 và cấp xung PWM cho S3.

5.3.3 IC công sut L298N

L298N là IC công suất tích hợp 2 mạch cầu H bên trong, chuyên dụng cho ñiều khiển các ñộng cơ công suất thấp.

Hình 5.13 – IC L298N

Các thông số kỹ thuật ñáng chú ý:

o ðiện áp hoạt ñộng lên ñến 46V.

o Có 2 mạch cầu H hoạt ñộng ñộc lập, với dòng tối ña 2A cho mỗi cầu.

Chương 5: Các linh kiện sử dụng trong khối phần cứng

Hình 5.14 – Sơñồ chân L298N

Chân Tên Chức năng

1; 15 Sense A Sense B (adsbygoogle = window.adsbygoogle || []).push({});

Nối chân này qua ñiện trở cảm ứng dòng xuống GND

ñểñiều khiển dòng tải 2; 3 Out 1

Out 2

Ngõ ra của cầu A. Dòng của tải mắc giữa 2 chân này

ñược quy ñịnh bởi chân 1.

4 VS

Chân cấp nguồn cho tầng công suất, cần có một tụ ñiện cảm kháng 100nF nối giữa chân này và chân GND

5; 7 Input 1

Input 2 Chân ngõ vào của cầu A, tương thích chân TTL

6; 11 Enable A Enable B

Chân ngõ vào Enable tương thích chuẩn TTL. Mức thấp của chân này sẽ cấm ngõ ra cầu A, ñối với enable A; hoặc ngõ ra cầu B ñối với enable B;

8 GND Chân mass

9 VSS Chân cấp nguồn cho khối logic. Cần có tụ ñiện 100nF giữa chân này với chân GND

10; 12 Input 3

Input 4 Các chân logic ngõ vào của B 13; 14 Output 3

Output 4

Ngõ ra của cầu B, dòng của tải mắc giữa 2 chân này

ñược quy ñịnh bởi chân 15.

Hình 5.15 – Sơñồ nguyên lý của L298N

Từ sơñồ nguyên lý, dễ thấy mỗi ngõ ra (OUT1, OUT2, OUT3, OUT4) ñược ñiều khiển bởi 1 ngõ vào (IN1, IN2, IN3, IN4) ñộc lập. Khi ngõ vào ở mực logic thấp, ngõ ra tương ứng sẽñược kéo xuống GND qua RS mắc ở chân SENSE. Khi ngõ vào ở mức logic cao, ngõ ra tương ứng sẽñược kéo lên +VS.

EnA và EnB ñể cho phép hoặc cấm 2 cầu A và B.

SENSE A và SENSE B mắc với ñiện trở Sunt RSA và RSBñể lấy ñiện áp hồi tiếp về

mạch ñiều khiển nếu cần thiết. Khi không cần lấy ñiện áp hồi tiếp, có thể bỏ RSA và RSB, mắc trực tiếp SENSE A và SENSE B xuống GND.

VS là nguồn công suất cho ñộng cơ.

VSS là nguồn +5VDC cung cấp cho khối logic của L298.

Hoạt ñộng:

Ta có thể thay ñổi trạng thái của một ñộng cơ dựa vào (Input 1; Input 2), ởñây ta luôn ñể mức ra ở chân cho phép (Enable) là mức cao.

• ðểñộng cơ quay thuận, ta cấp mức logic 0 cho ngõ vào Input2, và cấp xung PWM cho Input1.

• Ngược lại, ñểñộng cơ quay nghịch, ta cấp mức logic 0 cho Input1, và cấp xung PWM cho Input2.

Vì vậy, ñểñiều khiển ñộng cơ chỉ cần ñiều khiển giá trị xuất ra từ cổng của PIC16F877A ở các chân nối với Input1, Input2, Input3 và Input4. (adsbygoogle = window.adsbygoogle || []).push({});

Chương 6: Thiết kế mạch phần cứng

CHƯƠNG 6

Thiết kế mch phn cng

6.1 Khi ngun:

Hình 6.1 – Sơ đồ khối nguồn

Khối nguồn có chức năng lấy điện áp 9V từ pin, điện áp này được đưa qua IC78L05 để chuyển đổi thành điện áp 5V cung cấp nguồn cho PIC16F877A và L298N.

6.2 Khối điều khin trung tâm:

Khối điều khiển trung tâm là khối có chức năng điều khiển chính trong khối phần cứng bao gồm điều khiển động cơ và giao tiếp RS232. PIC16F877A được lựa chọn sử

dụng trong luận văn đảm nhận chức năng khối điều khiển này.

Trong khối phần cứng dùng PIC16F877A để điều khiển động cơ. Cờ ngắt dùng trong việc truyền nhận dữ liệu giữa Laptop và PIC16F877A.

6.3 Khối điều khiển động cơ:

Hình 6.3 – Sơ đồ khối điều khiển động cơ

Khối này có thành phần chính là một mạch cầu L298N có chức năng điều khiển hoạt động của các động cơ robot. Nguyên tắc hoạt động của L298N như đã trình bày ở

Chương 6: Thiết kế mạch phần cứng

6.4 Khi truyn thông RS232:

Hình 6.4– Sơ đồ khối truyền thông RS232

Khối này có nhiệm vụ nhận tín hiệu điều khiển từ cổng RS232 của laptop truyền xuống cho PIC16F877A điều khiển hoạt động của robot.

6.5 Mch phn cng hoàn chnh:

Mạch được thiết kế bằng phần mềm Proteus 7 Professional. Sau khi thiết kế mạch in, ta hoàn thiện các mạch phần cứng như sau:

 Mạch điều khiển gồm khối nguồn, khối điều khiển trung tâm sử dụng PIC16F877A và khối truyền thông RS232.

Hình 6.5– Mạch điều khiển

Chương 6: Thiết kế mạch phần cứng

Hình 6.7– Mạch công suất

CHƯƠNG 7

Xây dng phn mềm điều khin 7.1 Sơ đồ tng quát ca robot:

7.2 Robot di động bám đối tượng:

Mục tiêu của luận văn là điều khiển robot bám theo một đối tượng sử dụng xử lý ảnh trong Matlab. Nó phải duy trì được khoảng cách nhất định giữa robot và đối tương, khi đối tượng di chuyển robot phải di chuyển theo dựa vào hình ảnh thu được từ

webcam để xác định đối tượng đi thẳng, đi lùi, rẽ trái, rẽ phải. Nghĩa là chúng ta phải

điều khiển cả tốc độ và hướng của robot tuy nhiên trong luận án này tôi chỉ điều khiển hướng, tốc độ của đối tượng có thể xem là không đổi. Để làm được việc này, chúng ta phải nhận dạng được đối tượng và xác định được hướng di chuyển của nó. Thứ hai phải xây dựng thuật toán bám đối tượng. Thứ ba là phải xây dựng được phần cứng để

kiểm định thuật toán (adsbygoogle = window.adsbygoogle || []).push({});

Có rất nhiều cách để dò tìm đối tượng ví dụ dựa trên hình dáng, âm thanh v..v. những thuật toán này thực sự rất phức tạp. Để giảm độ khó của thuật toán theo dõi chúng ta đặt phía sau đối tượng một vật có những thuộc tính về màu sắc đặc biệt ví dụ

màu đỏ, màu vàng, màu xanh v..v. Như vậy, lúc tiến hành theo dõi sẽ giảm được rất nhiều về việc xử lý nhiễu do nền và các đối tượng không mong muốn gây ra, giảm đáng kể sự nhầm lẫn đối tượng theo dõi. Chương trình xử lý ảnh để tiến hành theo dõi căn cứ

vào màu sắc đối tượng. Khoảng cách giữa robot và đối tượng chúng ta đặt là cốđịnh, Webcam Laptop Matlab xử lý ảnh Mạch điều khiển Frame RS232 PIC16F877A RS232 Mạch công suất L298N Động cơ DC

Chương 7: Xây dựng phần mềm điều khiển

dựa vào tâm của đối tượng tìm được chúng ta biết được vị trí của đối tượng tham chiếu trên mặt phẳng ảnh. Các thuộc tính nhận được sẽ truyền qua cổng giao tiếp RS232 xuống vi điều khiển PIC16F877A đểđiều khiển động cơ một chiều (DC) thông qua mạch cầu điều khiển động cơ L298N.

7.3 Xây dng phn mềm điều khin robot:

7.3.1 Nhn dng và tính toán vị trí, kích thước của đối tượng màu đỏ:

Áp dụng các hàm xử lý ảnh của Matlab để tìm đối tượng màu đỏ, sau đó tính toán toạ độ và kích thước của đối tượng trên mặt phẳng ảnh.

Dùng hàm Imread để đọc file ảnh và lưu lại dưới dạng ma trận trong Matlab. RGB=imread (‘redball.jpg’) ;

Hình 7.1 – Ảnh gốc cần xử lý

Ảnh gốc là một ảnh RGB. Ảnh này được biểu diễn bởi một ma trận ba chiều kích

thước m x n x 3, với m x n là kích thước ảnh theo pixels. Ma trận này định nghĩa các

thành phần màu red, green, blue cho mỗi điểm ảnh. Các mặt phẳng màu riêng rẽ của ảnh gốc:

 R = RGB ( ; ; 1 )

 G = RGB ( ; ; 2 )

 B = RGB ( ; ; 3 )

Vì đối tượng ta quan tâm có màu sắc là đỏ nên ta lấy ra mặt phẳng ảnh màu đỏ từ ảnh gốc.

Hình 7.2– Ảnh của ma trận đỏ

Tạo một ảnh grayscale từảnh gốc dùng hàm rgb2gray.

Chương 7: Xây dựng phần mềm điều khiển

Dùng hàm imsubtract để trừảnh grayscale từảnh của ma trận màu đỏ để lọc lấy màu đỏ.

Hình 7.4 – Ảnh thu được khi lấy màu đỏ

Dùng hàm medfilt2 để giảm nhiễu cho ảnh

Chuyển sang ảnh nhị phân dùng hàm im2bw

Hình 7.6 – Ảnh nhị phân

Dùng hàm bwareaopen để loại bỏ những đối tượng nhỏ

Chương 7: Xây dựng phần mềm điều khiển

Cuối cùng dùng các thuộc tính Centroid, Boundingbox, Area của hàm regionprops để xác

định tâm và vẽ hình chữ nhật xung quanh đối tượng màu đỏ.

Hình 7.8 – Xác định tâm và vẽ hình chữ nhật xung quanh (adsbygoogle = window.adsbygoogle || []).push({});

7.3.2 Các bước thu thp nh bng webcam

Bước 1: Gắn thiết bị thu hình vào máy tính và cài đặt driver điều khiển + Gắn thiết bị thu hình vào máy tính.

+ Cài đặt driver (trình điều khiển) cho thiết bị (được cho bởi nhà sản xuất).

+ Xem thử hình ảnh video hiện trên máy tính thông qua phần mềm của nhà sản xuất. + Khởi động Matlab.

Bước 2: Chỉ định thông tin phần cứng:

Cần chỉ định cho Matlab biết phần cứng nào dùng để lấy dữ liệu (vì có thể có nhiều camera kết nối tới PC)

Gõ lệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng.

>> imaqhwinfo

ans =

InstalledAdaptors: {'coreco' 'winvideo'} MATLABVersion: '7.5 (R2007b)'

ToolboxVersion: '3.0 (R2007b)'

Tên Loại thiết bị

'coreco' Thiết bị của công ty coreco

‘DCAM’ Các thiết bị dùng chuẩn IEEE 1394

‘dt’ Các thiết bị của Data Translation

‘Matrox’ Các thiết bị của hãng Matrox

‘winvideo’ Các thiết bị dùng chuẩn Windows Driver Model (WDM) hoặc Video for indows (VFW). Bao gồm các loại USB WEBCAM và camera IEEE 1394

Bảng 7.1 – Các loại thiết bị Webcam

Chỉ định thiết bị: Tùy vào loại thiết bị (adaptor name), mỗi thiết bị cùng loại gắn vào PC được đánh số ID, thiết bị thứ nhất có deviceID=1, thiết bị thứ 2 có deviceID=2,…

Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy, ta cũng dùng lệnh imaqhwinfo với đối số là winvideo. >> imaqhwinfo('winvideo') ans = AdaptorDllName: [1x81 char] AdaptorDllVersion: '3.0 (R2007b)' AdaptorName: 'winvideo' DeviceIDs: {[1]} DeviceInfo: [1x1 struct]

=> Có một thiết bị với DeviceID là 1. Ta có thể tìm hiểu thêm thông tin về thiết bị này:

>> imaqhwinfo('winvideo',1)

ans =

DefaultFormat: 'YUY2_160x120' DeviceFileSupported: 0

DeviceName: 'USB Video Device' DeviceID: 1

ObjectConstructor: 'videoinput('winvideo', 1)' SupportedFormats: {1x5 cell}

Chương 7: Xây dựng phần mềm điều khiển

Bước 3: Tạo đối tượng đại diện cho luồng dữ liệu video

Để tạo luồng dữ liệu video,dùng lệnh videoinput. Ví dụ

>> vid=videoinput(‘winvideo’,1) (adsbygoogle = window.adsbygoogle || []).push({});

Bước 4: Hiển thị luồng video trên màn hình để xem thử

Sau khi tạo biến tham chiếu luồng video (Matlab gọi là tạo đối tượng video ngõ vào), Ta có thể dùng Matlab để lấy dữ liệu từ thiết bị thu hình (thuật ngữ là “thu thập dữ liệu”). Tuy nhiên, trước khi làm việc này, bạn có thể xem trước luồng video để

chắc rằng thiết bị hoạt động tốt.

Để xem trước luồng dữ liệu video, dùng lệnh preview. Ví dụ: preview(vid)

Để kết thúc xem, dùng lệnh stoppreview. Hoặc để đóng cửa sổ preview, dùng lệnh closepreview(vid)

Bước 5: Cấu hình cho hoạt động trích hình ảnh

Một số thông số hoạt động của biến video mà t a c ó thể thay đổi như

FramesPerTrigger, ReturnedColorspace, FrameGrabInterval, FramesAcquired,…

Bước 6: Lấy dữ liệu hình ảnh

Ta tiến hành theo các bước sau để lấy dữ liệu:

+ Gọi hàm start để bắt đầu. (ví dụ : Start(vid)) . Một số thông số của biến video sẽ bị

khóa thành dạng chỉ đọc.

+ Lấy dữ liệu (hay còn gọi là thu thập dữ liệu): Tùy vào thông số TriggerType, ta có nhiều cách lấy dữ liệu.

+ Trích một ảnh từ luồng video thông qua lệnh getsnapshot.

Bước 7: Xử lý frame ảnh vừa thu được

Ta thực hiện các hàm xử lý ảnh ở trên để nhận dạng và tính toán vị trí cũng như kích thước của đối tượng màu đỏ.

Bước 8: Làm sạch bộ nhớ

Sau khi lấy dữ liệu video, ta có thể giải phóng bớt bộ nhớ bằng các lệnh sau: stop(vid)

flushdata(vid) clear vid

7.3.3 Mt phng nh:

Cấu trúc của hệ bám mục tiêu di động gồm hai phần chính. Phần thứ nhất là phần xử

lý ảnh dựa vào chuỗi hình ảnh thu được từ webcam để nhận dạng và tính toán vị trí của

đối tượng quan tâm.

Phần thứ hai là phần điều khiển, dựa vào thông tin vị trí đối tượng nhận được trong mặt phẳng ảnh, tính toán tín hiệu điều khiển robot sao cho đối tượng di chuyển

được duy trì ở một vị trí nhất định trên mặt phẳng ảnh và ở một khoảng cách nhất

định.

Mặt phẳng ảnh là mặt phẳng có gốc nằm phía trên bên trái, trục x là trục nằm ngang, trục y là trục thẳng đứng như hình vẽ.

Hình 7.9 – Mặt phẳng ảnh

Căn cứ vào vị trí dịch chuyển của đối tượng trên mặt phẳng ảnh so với gốc toạđộ

mà ta tính toán các khả năng di chuyển của robot sao cho đối tượng nằm ở một vị trí bất kỳ trên mặt phẳng ảnh. (adsbygoogle = window.adsbygoogle || []).push({});

Chương 7: Xây dựng phần mềm điều khiển

Dựa vào toạ độ x, y của tâm đối tượng nằm trên mặt phẳng ảnh, ta sẽ biết đối

tượng đang ở bên trái hay bên phải của robot, từ đó điều khiển robot quay về phía đối

tượng.

Dựa vào số lượng pixel hay kích thước của đối tượng, ta ước chừng được khoảng cách giữa robot và đối tượng, từ đó điều khiển robot di chuyển tới hay lùi.

Hình vẽ sau mô tả các vị trí tương ứng của đối tượng trên mặt phẳng ảnh tương ứng với điều kiện di chuyển:

Hình 7.10 – Biểu diễn đối tượng di chuyển trên mặt phẳng ảnh

7.3.4 Tp lệnh điều khin robot:

Dựa vào các kết quả nhận được, ta sẽ gửi tín hiệu điều khiển qua cổng kết nối RS232 để điều khiển robot di động bám đối tượng.

Lệnh Động cơ 1 Động cơ 2 Robot

f Tiến Tiến Đi thẳng

b Lùi Lùi Đi lùi

s Dừng Dừng Dừng lại r Tiến Lùi Rẽ phải l Lùi Tiến Rẽ trái

Một phần của tài liệu Thiết kế phần cơ sở của robot tự hành (Trang 64)