.11 Hệ dẫn động vơ lăng

Một phần của tài liệu Tự động hóa quá trình đo độ rơ vô lăng trong quy trình đăng kiểm (Trang 44)

38

1- Mô tơ điện 2- Đai răng 3- Cơ cấu gá

Đƣờng truyền mô men xoắn từ động cơ điện đến vô lăng:

Hình 3.12 Sơ đồ đường truyền cơng suất đến vô lăng

Sau hi mô phỏng hoạt động của cơ cấu cơ hí với SolidWor s và tiến hành đánh giá hả năng đáp ứng các yêu cầu của quá trình đo độ rơ vơ lăng tự động trên xe cơ giới. Nhận ra cơ cấu này có thể hồn tồn hả năng thực hiện điều đó, vì vậy đây sẽ là cơ cấu đƣợc sử dụng và bắt đầu quá trình chế tạo thử một cơ cấu đo độ rơ thực tế.

3.1.7. Tiến hành chế tạo mơ hình thực tế cơ cấu đo độ rơ vô lăng

Từ những k năng thực hành cơ hí đã đƣợc thực hành trong q trình học tập và số liệu ích thƣớc của từng chi tiết đã đƣợc cho trong các bản vẽ 2D bên trên. Chúng em đã tiến hành thực hiện và hoàn thiện lần lƣợt từng bộ phận trong mơ hình cơ hí đã đƣa ra. Một số u cầu đề ra trong quá trình thực hiện:

 K năng sử dụng máy hàn Mig CO2

 Đo đạc chế tạo các bộ phận bằng ích thƣớc trong bản vẻ với dung sai nhỏ nhất để tránh tạo thêm độ rơ cơ hí cho ết quả đo iểm

 Tuân thủ các quy tắc về an toàn lao động trong quá trình chế tạo Một số hình ảnh về cơ cấu cơ hí thực tế đã đƣợc chế tạo:

Động cơ điện DC 24V

Bộ truyền động đai răng

Cơ cấu gá vít 3 chạm

39

Hình 3.13 Cơ cấu gá vơ lăng

40

Hình 3.15 Giá đỡ cảm biến

Hình 3.16 Giá đỡ cơ cấu dẫn động vơ lăng và hình ảnh tổng quát về cơ cấu đo độ rơ vô lăng được thực hiện

41

3.2. Mô phỏng mạch trên Proteus

Chúng em thảo luận với nhau sử dụng Arduino Nano để làm vi điều khiển trung tâm, dùng LCD 16x2 để làm màn hình hiển thị thơng tin, dùng cảm biến siêu âm US-015 để phát hiện sự dịch chuyển của bánh xe, sử dụng incremental rotary encoder LPD3806- 400BM-G5-24C có 600 xung/vịng để đo góc xoay của vơ lăng, nhƣ vậy độ chia nhỏ nhất của của cảm biến là độ. Dùng cầu H rờ le để điều khiển động cơ. Trong Proteus thì chúng em sử dụng sẵn Motor có sẵn Encoder giả lập phát 3 tín hiệu xung pha A, pha B và pha Z, chúng em chỉ sử dụng hai pha A và pha B để xác định góc quay. Nhƣ hình 3.17 thì hoảng cách của cảm biến siêu âm tới bánh xe dẫn hƣớng đƣợc điều chỉnh bằng biến trở, đầu tiên thì vi điều khiển lƣu hoảng cách chuẩn từ cảm biến siêu âm tới bánh xe dẫn hƣớng, cho động cơ điện phát động vô lăng quay ngƣợc chiều im đồng hồ, khi khoảng cách từ cảm biến siêu âm tới bánh xe dẫn hƣớng nhỏ hơn khoảng cách chuẩn thì dừng động cơ điện lại, đặt giá trị đo góc về 0, tiếp tục cho vơ lăng quay qua phải tới khi khoảng cách từ cảm biến siêu âm tới bánh xe dẫn hƣớng lớn hơn khoảng cách chuẩn thì dừng lại, ghi nhận giá trị góc quay tự do hay độ rơ vô lăng và xuất giá trị ra màn hình LCD. Sau hi lập trình trên Arduino, cho chạy thử trên Proteus thì chúng em thấy hệ thống hoạt động thành công trên nguyên lý đo.

42 Code để cảm biến siêu âm biết đƣợc khoảng cách:

long sieuam() {

digitalWrite(TrigPin, LOW); delayMicroseconds(2);

digitalWrite(TrigPin, HIGH); //tạo ra một xung trong khoảng thời gian ngắn delayMicroseconds(5);

digitalWrite(TrigPin, LOW);

Time_Echo_us = pulseIn(EchoPin, HIGH,20000);

/* cảm biến sẽ tạo xung HIGH ở chân Echo từ khi phát đến khi nhận lại tín hiệu xung ở chân Trig, hàm pulse sẽ đo khoảng thời gian đó*/

kc = Time_Echo_us/2/29.412;

/* Tốc độ của âm thanh trong khơng khí là 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm (106 / (340*100)). Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.*/

return kc; // trả kết quả về hàm sieuam()}

Code để encoder biết đƣợc góc xoay:

attachInterrupt(0, demxung, FALLING);

/* dùng hàm ngắt khi pha A của encoder từ mức HIGH xuống mức LOW thì gọi chương trình demxung để thực thi */

void demxung() { if (digitalRead(int2) == LOW) { xung++; }

// khi đó pha B ở mức LOW thì encoder xoay theo chiều kim đồng hồ, xung sẽ tăng lên một đơn vị

else { xung--;

43

}

// nếu pha B ở mức HIGH thì encoder xoay ngược chiều kim đồng hồ, xung sẽ giảm một đơn vị

}

Khi ta đó để tính được góc xoay encoder ta lấy xung*360/600

Code để điều khiển động cơ điện hình 3.1:

void quaytrai() {

digitalWrite(in1,HIGH); // vi điều khiển tạo điện áp làm transitor Q1 dẫn, điện qua cuộn dây làm rờ le 1 dẫn, động cơ điện quay trái

digitalWrite(in2,LOW); }

void quayphai() {

digitalWrite(in1,LOW);

digitalWrite(in2,HIGH); // vi điều khiển tạo điện áp làm transitor Q2 dẫn, điện qua cuộn dây làm rờ le 2 dẫn, động cơ điện quay phải

}

void dungyen() {

digitalWrite(in1,LOW);

digitalWrite(in2,LOW); // vi điều khiển ngắt điện áp kích làm hai transitor khơng dẫn, nên hai rờ le ngắt, động cơ điện đứng yên}

Code điều khiển hệ thống mô phỏng đo độ rơ vô lăng:

void loop()

{if (kcc == 0) kcc = sieuam(); // đầu tiên đặt khoảng cách chuẩn từ cảm biến đến bánh xe

while ( kcc == sieuam()) quaytrai(); // trong khi khoảng cách chuẩn bằng với khoảng cách siêu âm trả về thì động cơ điện quay trái

dungyen();

44

point = true;// xác định động cơ điện đã quay sang trái

while ((kcc < sieuam()) && point ==true) quayphai(); // trong khi khoảng cách chuẩn nhỏ so với khoảng cách siêu âm trả về thì động cơ điện quay phải while ((kcc >= sieuam()) && point ==true ) dungyen(); // // trong khi khoảng cách chuẩn lớn hơn hoặc bằng với khoảng cách siêu âm trả về thì động cơ điện đứng yên

lcd.begin(16, 2); lcd.setCursor(1,0);

lcd.print("DO RO VO LANG"); lcd.setCursor(0,1);

lcd.print(xung*360/600); // xuất giá trị góc quay tự do hay độ rơ ra màn hình lcd.print(" do");

if (xung*360/600 < 12) lcd.print(" ------ Dat"); else {lcd.print(" ------Chua Dat");}

3.3. Lắp đặt và lập trình độ rơ vơ lăng thực tế 3.3.1. Kiểm tra hoạt động của các linh kiện 3.3.1. Kiểm tra hoạt động của các linh kiện

Chúng em tiến hành đi dây điện cho linh kiện theo phƣơng án đã đề ra, gá đỡ tạm lên tấm formex, để trong thực tế có nhiều hó hăn hơn lúc mơ phỏng có thể dễ dàng thay thế linh kiện. Ban đầu chúng em sử dụng cầu H bằng rờ le để điều khiển động cơ điện, nhƣng nhận thấy đƣợc độ trễ của rờ le trong lúc đóng ngắt sẽ làm tăng sai số hi đo độ rơ vô lăng, nên chúng em quyết định sử dụng module cầu H BTS7960 để điều khiển động cơ điện.

45

Hình 3.19 Hệ thống hoạt động khi cấp nguồn Bảng 3.1 Sơ đồ kết nối chân các linh kiện hệ thống Bảng 3.1 Sơ đồ kết nối chân các linh kiện hệ thống

Tên linh kiện Chân linh kiện Chân Arduino

Cảm biến siêu âm

Trig D10 Echo D11 VCC +5V GND GND LCD 16x2 và module I2C SLC A5 SDA A4 VCC +5V GND GND Module BTS7960 VCC +5V GND GND R_EN D7 L_EN D8 RPWM D5 LPWM D5 Encoder VCC +24V GND GND Phase A D2 Phase B D3

46 Để hệ thống hoạt động ổn định và dễ tìm nguyên nhân lỗi làm hệ thống hông hoạt động, chúng em tiến hành iểm tra thử từng linh kiện. Đầu tiên chúng em iểm tra cảm biến siêu âm (linh kiện quan trọng nhất quyết định sự đúng sai của phép đo), với code chúng em sử dụng để đo hoảng cách trong mô phỏng hi đo ngồi thực tế đơi hi mất tín hiệu hơng rõ lý do, sẽ làm cho hệ thống hoạt động mất ổn định, để tăng sự ổn định thì chúng em quyết định sử thƣ viện arduino cảm biến siêu âm HCSR04[4], sau khi kiểm tra lại thì thấy cảm biến đã hơng bị mất tín hiệu mà hoạt động bình thƣờng. Tiếp theo chúng em thấy đƣợc tín hiệu trả về ln bị nhiễu nhƣ hình 3.20, chúng em thảo luận nếu dùng bộ lọc để giảm nhiễu thì cảm biến sẽ mất đi độ nhạy hi bánh xe vừa dịch

Hình 3.20 Tín hiệu gửi về của cảm biến siêu âm

chuyển và nhƣ vậy sẽ làm phép đo hơng chính xác. Chúng em quyết định dùng thuật toán xác định biên độ khoảng cách dao động, sau đó dùng hoảng cách vừa mới nhận đƣợc để so sánh hoảng biên độ dao động, nếu có sự chêch lệch tức bánh xe đã chuyển động nhƣ hình 3.21.

Kho

ảng các

47

Hình 3.21 Tín hiệu cảm biến siêu âm khi bánh xe dẫn hướng dịch chuyển

Lƣu đồ thuật toán nhƣ sau:

Code nhƣ sau: Code nhƣ sau: Kho ảng các h (mm) Đ Đ Đ S S S While i< 10

Khoảng cách siêu âm KC

MAX < KC

MIN > KC

MAX = KC

MIN = KC

Xuất MIN MAX i+ =1

48

thoigian = millis();

while ((millis() - thoigian) <10000) // nếu khoảng thời gian nhỏ hơn 10 giây thì thực hiện chương trình { if (lonnhat < int(Sensor1.ping(58,615)*10)) lonnhat=Sensor1.ping(58,615)*10; // tìm khoảng lớn nhất if (nhonhat > int(Sensor1.ping(58,615)*10)) )) nhonhat=Sensor1.ping(58,615)*10; // tìm khoảng nhỏ nhất Serial.println(lonnhat); Serial.println("&");

Serial.println(nhonhat); // xuất kết quả ra màn hình }

Đối với các linh iện module hác, chúng em iểm tra thấy hoạt động bình thƣờng và hơng hác lúc mô phỏng nên chúng em tiến hành đo thực tế.

3.3.2. Q trình đo độ rơ vơ lăng thực tế

Hệ thống đƣợc tiến hành thử nghiệm trên chiếc xe Toyota Vios. Tồn cảnh q trình thử nghiệm nhƣ hình 3.23

49 Chúng em tiến hành đo độ rơ vô lăng thực tế trên chiếc xe Toyota Vios. Đầu tiên chúng em gá cơ cấu dẫn động vào vô lăng, ết nối bánh đai răng với cơ cấu đỡ động cơ điện nhƣ hình 3.24, kết nối dây điện từ bộ xử lý trung tâm đến động cơ điện và cảm biến đo góc. Đặt cảm biến siêu âm ở bánh gần bánh dẫn hƣớng, cấp nguồn điện và tiến hành đo độ rơ vô lăng nhƣ hình 3.26.

Hình 3.24 Gá cơ cấu dẫn động vào vơ lăng

50

Hình 3.26 Đặt cảm biến siêu âm ở gần bánh xe dẫn hướng

Chúng em tiến hành khởi động xe và đo thì đƣợc kết quả nhƣ hình 3.27:

Hình 3.27 Kết quả đo độ rơ vơ lăng

Thuật tốn để đo độ rơ vô lăng thực tế là đầu tiên xác định khoảng cách từ cảm biến siêu âm đến bánh xe dẫn hƣớng hi bánh xe ở vị trí thẳng đứng, trong 5 giây tìm biên độ dao động khoảng cách của siêu âm, sau đó quay vơ lăng qua trái nếu khoảng cách từ cảm biến siêu âm đến bánh dẫn hƣớng nhỏ hơn biên độ dao động khoảng cách của siêu âm thì dừng quay vô lăng lại trong 5 giây, tiếp tục xác định biên độ dao động khoảng cách của siêu âm hi bánh xe dẫn hƣớng ở vị trí mới trong 5 giây, sau đó quay vơ lăng qua phải, nếu khoảng cách từ siêu âm đến bánh xe dẫn hƣớng lớn hơn biên độ dao động khoảng cách của cảm biến thì dừng lại, xuất giá trị góc quay tự do hay độ rơ vơ lăng ra màn hình.

Code thực tế nhau sau:

51

{

thoigian = millis();

while ((millis() - thoigian) <5000) { if (lonnhat < int(Sensor1.ping(58,615)*10)) lonnhat=Sensor1.ping(58,615)*10; if (nhonhat > int(Sensor1.ping(58,615)*10)) nhonhat=Sensor1.ping(58,615)*10; Serial.println(lonnhat); Serial.println("&"); Serial.println(nhonhat); }

while ((int(Sensor1.ping(58,615)*10) >= nhonhat ) && point== 0) { quaytrai(200); } dungyen(); delay(5000); xung = 0 ; point = 1; lonnhat = 0; thoigian = millis();

while ((millis() - thoigian) <5000) { if (lonnhat < int(Sensor1.ping(58,615)*10)) lonnhat=Sensor1.ping(58,615)*10; if (nhonhat > int(Sensor1.ping(58,615)*10)) nhonhat=Sensor1.ping(58,615)*10; Serial.println(lonnhat); Serial.println("&"); Serial.println(nhonhat);

52

}

while ((int(Sensor1.ping(58,615)*10) <= lonnhat ) && point ==1) { quayphai(200); xung1 = xung; } dungyen(); lcd.clear(); lcd.setCursor(1,0); lcd.print("DO RO VO LANG"); lcd.setCursor(0,1); lcd.print(xung1*360/600); lcd.print("."); lcd.print(xung1*360%600); lcd.print("do");

if (xung1*360/600 < 12) lcd.print(" DAT"); else lcd.print(" CHUADAT");

while(1){}; }

Chúng em tiến hành đo 100 lần để tìm giá trị trung bình, phƣơng sai, độ lệch chuẩn và hoảng tin cậy.

Bảng 3.2 Thống kê các lần đo độ rơ vô lăng xe Toyota Vios

ần đo Góc ( ) ần đo Góc ( ) ần đo Góc ( ) ần đo Góc ( ) ần đo Góc ( ) 1 4 21 3 41 3 61 0 81 3 2 4 22 3 42 4 62 3 82 4 3 4 23 3 43 0 63 4 83 4 4 0 24 3 44 4 64 4 84 3 5 4 25 3 45 0 65 4 85 3 6 4 26 3 46 4 66 4 86 3 7 2 27 0 47 1 67 4 87 0 8 3 28 0 48 2 68 2 88 0 9 3 29 3 49 0 69 3 89 0 10 3 30 4 50 1 70 3 90 0

53 11 3 31 4 51 4 71 3 91 2 12 3 32 0 52 4 72 0 92 3 13 3 33 4 53 4 73 3 93 3 14 3 34 3 54 4 74 4 94 0 15 3 35 3 55 4 75 4 95 4 16 3 36 3 56 3 76 4 96 4 17 3 37 0 57 0 77 4 97 0 18 4 38 0 58 3 78 3 98 4 19 4 39 0 59 3 79 3 99 0 20 0 40 3 60 3 80 4 100 0 Trung bình 2,59 Phƣơng sai 2,28 Độ lệch chuẩn 1,51

Khoảng tin cậy 0,30

Qua số liệu thống ê chúng em nhận thấy rằng sai số ngẫu nhiên của hệ thống là 1.51, trong thực tế để đánh giá độ chính xác của một phép đo, ngƣời ta dùng đại lƣợng độ lệch chuẩn tƣơng đối, tỉ lệ càng nhỏ phép đo càng chính xác.

Độ lệch chuẩn tƣơng đối = Độ lệch chuẩn/Giá trị trung bình = 1.51/2.59 = 58.3%

Với độ lệch chuẩn tƣơng đối lên đến 58.3% là một sai số há lớn, cho thấy sai số từ cảm biến siêu âm cộng với độ dao động của hệ thống vẫn là hó hăn nhất đối với nhóm trong q trình thực hiện phép đo.

3.3.3. Dùng module thu phát không giây NRF24L01

Để thuận tiện trong việc thực hiện phép đo độ rơ vô lăng, chúng em thảo luận sử dụng thêm module thu phát hông giây NRF24L01 trong việc gửi tín hiệu từ cảm biến siêu âm về bộ điều khiển trung tâm, làm cho hệ thống đƣợc gọn và dễ lắp đặt hơn. Chúng em sử thêm một vi điều khiển Arduino Nano để nhận tín hiệu từ cảm biến siêu âm và gửi tín hiệu về bộ xử lí trung tâm, với sơ đồ chân nhƣ sau:

Bảng 3.3 Sơ đồ kết nối chân module NRF24L1

NRF24L01 Arduino

GND GND

VCC 3.3V

CE D9

54

SCK D13

MOSI D11

MISO D12

Hình 3.28 Sau khi kết nối module thu phát không dây

Code cho bên vi xử lý gửi tín hiệu về bộ xử lý trung tâm:

#include <SPI.h> // sử dụng thư viện giao tiếp SPI

#include <HCSR04.h> // sử dụng thư viện cảm biến siêu âm #include "RF24.h" // sử dụng thư viện module NRF24L01 const uint64_t pipe = 0xE8E8F0F0E1LL; // địa chỉ để phát RF24 radio(9,10);

byte msg[3];

HCSR04 Sensor1(7,8); void setup()

{

/* cài đặt để cho mudule truyền tín hiệu */ radio.begin();

radio.setAutoAck(1); radio.setRetries(1,1);

55

radio.setDataRate(RF24_1MBPS); // Tốc độ truyền

radio.setPALevel(RF24_PA_MAX); // Dung lượng tối đa radio.setChannel(10); // Đặt kênh radio.openWritingPipe(pipe); // Mở kênh } void loop() { msg[0] = int(Sensor1.ping(58,615)*10);

radio.write(&msg, sizeof(msg)); // Gửi tín hiệu đi }

Code cài đặt nhận tín hiệu bên vi xử lý trung tâm:

#include <SPI.h> #include "RF24.h"

const uint64_t pipe = 0xE8E8F0F0E1LL; // địa chỉ phát RF24 radio(9,10); byte msg[3]; void setup() { radio.begin(); radio.setAutoAck(1); radio.setDataRate(RF24_1MBPS); // Tốc độ dữ liệu radio.setChannel(10); // Đặt kênh radio.openReadingPipe(1,pipe);

radio.startListening(); // bắt đầu nhận tín hiệu }

void loop() {

if (radio.available()) // nếu có tín hiệu radio {

while (radio.available()) // cho đến khi tín hiệu cịn truyền thì thực hiện {

56

radio.read(&msg, sizeof(msg)); //đọc giá trị cảm biến gửi về }}}

Sau khi nhận đƣợc giá trị khoảng cách siêu âm gửi về thì vi xử lý trung tâm cũng sử thuật toán nhƣ hi truyền tín hiệu có dây để tìm đƣợc độ rơ vơ lăng.

Một phần của tài liệu Tự động hóa quá trình đo độ rơ vô lăng trong quy trình đăng kiểm (Trang 44)

Tải bản đầy đủ (PDF)

(72 trang)