Hình thực tế mạch công suất

Một phần của tài liệu Báo cáo đồ án tốt nghiệp: Máy phay CNC mini v2 (Trang 52)

Hình 3.9 Hình thực tế mạch công suất 3.4.4 Giải thích hướng chọn các linh kiện

Thông số Mosfet irf540

Mosfet là Transistor hiệu ứng trường (Metal Oxide Semiconductor Field Effect Transistor) là một Transistor đặc biệt có cấu tạo và hoạt động khác với Transistor thông thường mà ta đã biết. Mosfet thường có công suất lớn hơn rất nhiều so với BJT.Đối với tín hiệu một chiều thì nó coi như là một khóa đóng mở. Mosfet có nguyên tắc hoạt động dựa trên hiệu ứng từ trường để tạo ra dòng điện, là linh kiện có trở kháng đầu vào lớn thích hợn cho khuyếch đại các nguồn tín hiệu yếu. Cấu tạo của Mosfet ngược Kênh N.

G: Gate gọi là cực cổng S: Source gọi là cực nguồn D: Drain gọi là cực máng

Trong đó: G là cực điều khiển được cách lý hoàn toàn với cấu trúc bán dẫn còn lại bởi lớp điện môi cực mỏng nhưng có độ cách điện cực lớn dioxit-silic (SiO2). Hai cực còn lại là cực gốc (S) và cực máng (D). Cực máng là cực đón các hạt mang điện.

Mosfet có điện trở giữa cực G với cực S và giữa cực G với cực D là vô cùng lớn , còn điện trở giữa cực D và cực S phụ thuộc vào điện áp chênh lệch giữa cực G và cực S (UGS).

Khi điện áp UGS = 0 thì điện trở RDS rất lớn, khi điện áp UGS > 0 => do hiệu ứng từ trường làm cho điện trở RDS giảm, điện áp UGS càng lớn thì điện trở RDS càng nhỏ.

Mosfet hoạt động ở 2 chế độ đóng và mở. Do là một phần tử với các hạt mang điện cơ bản nên Mosfet có thể đóng cắt với tần số rất cao.

+ Đối với kênh N: Điện áp điều khiển mở Mosfet là UGS > 0. Điện áp điều khiển đóng là UGS<=0. Dòng điện sẽ đi từ D xuống S.

Do đảm bảo thời gian đóng cắt là ngắn nhất người ta thường: Đối với Mosfet Kênh N điện áp khóa là UGS = 0V

Từ thông số trên ta thấy IRF540 thỏa mãn yêu cầu về điều khiển và công suất. Với điện áp đánh thủng đến 100V và dòng qua 33A.

3.4.5 Mô tả mạch công suất

Tín hiệu điều khiển từ mạch điều khiển qua một ngõ vào của cổng logic AND, ngõ vào còn lại là xung PWM điều chỉnh dòng điện ra. Ngõ ra cổng AND là tín hiệu

Hình 3.11 Nguyên lý cổng logic AND

Điện trở 4k7 trước A1015 và 10k có tác dụng hạn dòng và phân cực cho transistor này.

Transistor A1015 đóng cắt điện áp 0 – 12V cấp cho chân điều khiển đóng cắt Mosfet. A1015 là transistor thuận PNP. Nếu chân điều khiển (cực B) A1015 = “1” (+5V) thì Transistor khóa chắc chắn, điện áp đặt lên Mosfet là +12V làm nó dẫn hoàn toàn, thông mạch cho động cơ. Ngược lại nếu chân điều khiển A1015 = “0” thì Transistor thông. Chân điều khiển Mosfet (cực G) nối GND làm nó khóa lại. Không có dòng cấp cho động cơ.

Các điot có tác dụng bảo vệ chuyển mạch. Vì cuộn dây động cơ đơn cực có phân nấc ở giữa và hai nửa cuộn dây này được quấn trên cùng cặp cực stato nhưng ngược chiều nên cuộn dây như là một biến áp tự động. Khi mở chuyển mạch thì nửa cuộn dây nối với chuyển mạch này sẽ cảm ứng một điện áp nhọn cùng chiều với điện áp nguồn đồng thời sẽ hỗ cảm sang nửa kia của cuộn dây và tạo một điện áp kích ngược lên nửa cuộn dây này. Điện áp kích ngược có chiều ngược với điện áp nguồn.

Chƣơng 4

LẬP TRÌNH CHO MẠCH ĐIỀU KHIỂN VÀ KẾT NỐI MÁY TÍNH

4.1 Sơ đồ điều khiển

Hình 4.1 Sơ đồ kết nối và điều khiển 4.1.1 Kết nối bộ điều khiển với máy tính thông qua cổng LPT

Để có thể ghép nối các thiết bị ngoại vi, các mạch điện ứng dụng trong đo lường và điều khiển với cổng song song ta phải tìm hiểu cách trao đổi với các thanh ghi thông qua cách sắp xếp và địa chỉ các thanh ghi cũng như phần mềm. Các

Máy tính Bộ điều khiển Mạch công suất các trục Động cơ các trục, Spindle Cảm biến hành trình Chọn chế độ, dòng điện Bản vẽ G-code

đường dẫn của cổng song song được nối với ba thanh ghi 8 bit khác nhau như hình bên dưới:

- Thanh ghi dữ liệu (Data Register). - Thanh ghi trạng thái (Status Register). - Thanh ghi điều khiển (Control Register).

Hình 4.2 Sơ đồ chân LPT

Trên hình, thanh ghi dữ liệu được chỉ rõ là hai hướng dữ liệu có thể được xuất ra các chân D0 đến D7 hoặc đọc vào, thanh ghi điều khiển cũng là hai hướng, thanh ghi trạng thái chỉ có thể được đọc và vì vậy gọi là một hướng.

Ưu điểm:

 Tín hiệu được truyền song song nên việc nội suy được thực hiện dễ dàng.

 Đều sử dụng mức điện áp tương thích TTL: 0V ÷ +5V, trong đó: 0V: là mức logic LOW

+2V ÷ +5V là mức logic HIGH nên không cần module chuyển đổi.

Nhược điểm:

 Khoảng cách ghép nối bị hạn chế, dễ bị nhiễu.

 Khó lập trình vì các ngôn ngữ lập trình không hỗ trợ module điều khiển cổng LPT.

4.1.2 Nguyên lí điều khiển

Sử dụng các phần mềm vẽ mạch, vẽ hình khối trên máy tính rồi xuất ra file G- code là file chứa các thông số, dữ liệu điều khiển các chuyển động của máy CNC.

Thông qua phần mềm điều khiển, máy tính truyền các tham số đó xuống bộ điều khiển thông qua giao tiếp LPT. Từ các tham số nhận được từ máy tính kết hợp với các thông số về cảm biến hành trình, chế độ hoạt động của động cơ bước các trục, bộ điều khiển xuất tín hiệu điều khiển các động cơ qua mạch khuếch đại công suất.

4.2 Phần mềm điều khiển

Để điều khiển máy CNC dân dụng, có một số phần mềm thông dụng như CIMATRON, MASTERCAM, KCAM, MACH, và LinuxCNC…

Trong đó chỉ có Linux CNC là phần mềm mã nguồn mở chạy trên hệ điều hành Linux. Nhóm tác giả quyết định tìm hiểu và sử dụng phần mềm này điều khiển máy CNC.

4.2.1 Giới thiệu về LinuxCNC

- LinuxCNC (the Enhanced Machine Control) là hệ thống phần mềm cho phép máy tính điều khiển máy công cụ như máy phay, tiện, robots scara và các loại máy được điều khiển bởi máy tính khác lên đến 9 trục.

- LinuxCNC là phần mềm nguồn mở, dưới giấy phép GNU (GPL và LGPL). - LinuxCNC bao gồm:

 Giao diện đồ họa.

 Giao diện cho G-code.

 -Hệ thống chuyển động thời gian thực.

 Dễ dàng cài đặt thông số cho máy móc (CNC).

 Hỗ trợ lập trình PLC.

 Dễ dàng cài đặt.

 Có thể điều khiển đồng thời 9 trục với nhiều giao diện.

4.2.2 Cài đặt thông số

Sau khi được cài đặt, cần nhập vào các thông số của máy CNC trước khi máy có thể hoạt động.

Vào Applications > LinuxCNC > LinuxCNC StepConf Wizard Tạo một cài đặt mới:

Hình 4.3 Tạo một cài đặt mới

Điền thông tin cơ bản

- Tên máy, loại trục, đơn vị đo. - Thông số mạch điều khiển:

 Độ dài xung “ON”.

 Thời gian nhỏ nhất giữa 2 xung kề nhau.

 Độ dài tín hiệu về hướng sau khi thay đổi hướng.

 Độ dài tín hiệu về hướng trước khi có xung step gần nhất.

 Địa chỉ cổng song song.

Hình 4.4 Trang thông tin cơ bản

Cài đặt cổng song song

Hình 4.5 Cài đặt cổng song song

Cài đặt thông số trục X, Y, Z Thông số trục X

-Số bước/vòng (= 360/số độ 1 bước):200 -Số step cho một bước:1

-Độ dịch chuyển: 2.54 mm/vòng -Vận tốc lớn nhất : 5mm/s -Gia tốc lớn nhất: 300 mm/s2 -Vị trí gốc: 0 -Di chuyển bàn máy: 0 đến 190 mm Hình 4.6 Thông số trục X Hình 4.7 Thông số trục Y

Hình 4.8 Thông số trục Z

Thông số Spindle

Hoàn tất cài đặt: Nhấn Apply

Hình 4.10 Hoàn tất cài đặt

4.3 Sơ lƣợc trình tự gia công

- Mở phần mềm LinuxCNC - Bật nguồn trên phần mềm

- Đặt điểm gốc cho 3 trục và xác định vị trí mũi phay với phôi phù hợp - Mở file chứa code như .ngc, .tap …

- Bật Spindle

- Nhấn Play để máy chạy

Một số mã chương trình hỗ trợ

a) Hỗ trợ mã G (Supported G Codes)

– G00: chạy dao nhanh tuyến tính khi không gia công (Rapid Traverse). – G01: chạy dao gia công nội suy theo đường thẳng (Normal Traverse). – G02: nội suy cung tròn theo chiều kim đồng hồ (CW Arc).

– G03: nội suy cung tròn ngược chiều kim đồng hồ (CCW Arc).

– G04: dừng tại một vị trí trong khoảng thời gian (Execute Dwell Time). – G17: chọn mặt phẳng XY làm mặt phẳng gia công (XY Plane Selection). – G18: chọn mặt phẳng XZ làm mặt phẳng gia công (XZ Plane Selection). – G19: chọn mặt phẳng YZ làm mặt phẳng gia công (YZ Plane Selection). – G40: hủy bỏ bù dao khi gia công theo đường kính

(Cancel Cutter Diameter Compensation).

– G41: bắt đầu bù dao bên trái khi gia công theo đường kính (Start Cutter Diameter Compensation Left).

– G42: bắt đầu bù dao bên phải khi gia công theo đường kính (Start Cutter Diameter Compensation Right ).

– G45: chạy dao song song theo một trục (Normal Traverse). – G73: khoan lỗ có chu kỳ (Drill Cycle).

– G80: kết thúc khoan lỗ (End Drill Cycle). – G81: khoan lỗ (Drill Cycle).

– G82: khoan lỗ có thời gian dừng (Drill Cycle with Dwell). – G83: khoan lỗ (Drill Cycle).

– G90: thiết lập tọa độ tuyệt đối (Sets Absolute Mode).

– G91: chọn tọa độ tương đối theo gia số (Sets Incremental Mode). – Pxxx: chọn thời gian dừng là xxx (Sets Dwell Time to xxx). Ví dụ: P2.125 sẽ tạo ra khoảng thời gian dừng là 2,125s.

– Fxxx: thiết lập tốc độ chạy dao là xxx (Sets Feed Rate to xxx). Ví dụ: F45 sẽ có tốc độ chạy dao là 45inches/ phút.

b) Mã M (Mcodes)

KCAM hỗ trợ một số mã M sau:

– M00: dừng chương trình - Program Stop.

– M01: dừng chương trình có tùy chọn - Optional Program Stop. – M02: kết thúc chương trình - Program End.

– M03: quay theo chiều kim đồng hồ - Spindle on clockwise – CW.

– M06: thay dao - Tool Change.

– M07: bật dung dịch làm mát theo kiểu tia - Mist Coolant On. – M08: bật dung dịch làm mát theo kiểu phun - Flood Coolant On. – M09: tắt dụng dịch làm mát - Mist and Flood Coolant Off.

– M13: quay thuận chiều kim đồng hồ và bật dung dịch làm mát theo kiểu tia (Engage Spindle CW and Coolant Mist).

– M30: kết thúc & khởi động lại chương trình - Program End and Reset. – M60: Dừng chương trình - Program Stop.

Chƣơng 5

KẾT LUẬN VÀ KIẾN NGHỊ 5.1 Kết quả đạt đƣợc

5.1.1 Mô hình máy tổng thể

Hình 5.2 Mô hình máy tổng thể 5.1.2 Kết quả thử nghiệm

Mô hình máy CNC đã tạo ra sản phẩm theo như bản vẽ trên máy tính

5.2 Kết luận

Qua 10 tuần thực hiện, cùng với sự hướng dẫn chỉ bảo nhiệt tình của thầy giáo hướng dẫn cũng như các thầy cô trong bộ môn nhóm tác giả đã hoàn thành thiết kế, chế tạo máy phay CNC mini đảm bảo yêu cầu đã đặt ra.

Các thông số kỹ thuật của máy:

Tên sản phẩm: Máy phay CNC mini Tải trọng: 25 kg

Kích thước: 800 x 640 x 600 (mm) Công suất động cơ trục chính: 52W

Nguồn cấp cho máy: 220 VAC

Nhóm tác giả được củng cố, vận dụng những kiến thức đã học áp dụng vào thiết kế và chế tạo một máy phay cụ thể, học hỏi thêm nhiều kiến thức liên quan. Và điều quan trọng hơn là có được sự tự tin khi bắt tay vào làm một việc thực tế, là những kinh nghiệm quí báu cho bản thân khi chuẩn bị ra trường.

5.2.1 Ưu điểm

- Chi phí chế tạo máy thấp.

- Sử dụng các vật liệu, linh kiện thông dụng, sẵn có trên thị trường.

- Máy CNC đã chế tạo và chạy thử nghiệm với mô hình 2D thành công và cho kết quả tốt.

5.2.2 Nhược điểm

- Kết cấu cơ khí cồng kềnh và chưa thật sự vững chắc. - Độ chính xác còn thấp.

- Tốc độ hoạt động thấp.

5.3 Kiến nghị

Nhóm muốn phát triển sản phẩm hoàn thiện hơn với độ chính xác cao có thể phục vụ công tác nghiên cứu giảng dạy của nhà trường và sinh viên. Giúp sinh viên có điều kiện tiếp xúc với công nghệ CNC nhiều hơn nữa.

Nhóm muốn sản phẩm là cơ sở để đi tới chế tạo những máy có độ chính xác cao hơn, có thể phay được nhiều loại vật liệu khác nhau có thể ứng dụng thực tế, có khả năng thương mại trên thị trường với giá thành rẻ.

TÀI LIỆU THAM KHẢO

[1] T.S Nguyễn Văn Chí, 2013. Kỹ thuật đo lường và truyền thông công nghiệp. Nhà xuất bản Khoa học và kỹ thuật, Hà Nội.

[2] Nguyễn Quang Hùng, Trần Ngọc Bình. Động cơ bước Kỹ Thuật điều khiển và ứng dụng. Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội.

[3] PGS, TS Trương Hữu Chí, TS Võ Thị Ry,2007. Cơ Điện Tử trong Chế tạo máy. Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội.

[4] PGS, TS Trần Văn Địch, 2000. Công nghệ trên máy CNC. Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội.

[5] Micheal Fitzpatrick, 2005. Machining and CNC Technology, Higher Education. [6]Websites http://www.linuxCNC.org

[7]Websites http://www.thegioicnc.com

PHỤ LỤC

Code lập trình

/*

CNC_Driver using PIC 16F887

+++++++++++++++++++++++++++++ */

#include <16f887.h>

#define int_rb 0xff0b08 //sua o day de cho int co the chay #fuses hs, nowdt, noprotect, nolvp

/* adc */

#device ADC = 8

#use delay (clock = 20000000) #use fast_io (b)

char dem_x = 0, dem_y = 0, dem_z = 0; char vi_tri_x = 1, vi_tri_y = 1, vi_tri_z = 1; char data_in = 0, s_data_in = 0;

short step_x, step_y, step_z; short dir_x, dir_y, dir_z;

short x_fh, y_fh, z_fh; //fh: full or half step /*

* dinh nghia cac pin su dung ; * x axis

*/

#define x_fh_pin pin_c0 //=0:full step. =1: half step #define x_a pin_d0

#define x_b pin_d1 #define x_c pin_d2 #define x_d pin_d3 /* y axis */

#define y_b pin_c5 #define y_c pin_c6 #define y_d pin_c7 /* z axis */

#define z_fh_pin pin_c3 #define z_a pin_d4 #define z_b pin_d5 #define z_c pin_d6 #define z_d pin_d7

char const positions_f[4] = { 0b0101, 0b1001, 0b1010, 0b0110 };

char const positions_h[8] = { 0b0101, 0b0001, 0b1001, 0b1000, 0b1010, 0b0010, 0b0110, 0b0100 };

//=========================== void __thuan_x()

{

if(x_fh == 1){

vi_tri_x = (vi_tri_x + 1) & 7; dem_x = positions_h[vi_tri_x];} else{

vi_tri_x = (vi_tri_x + 1) & 3; dem_x = positions_f[vi_tri_x];} output_bit(x_a, (bit_test(dem_x, 0))); output_bit(x_b, (bit_test(dem_x, 1))); output_bit(x_c, (bit_test(dem_x, 2))); output_bit(x_d, (bit_test(dem_x, 3))); } //========================================= void __nguoc_x() { if(x_fh == 1){

dem_x = positions_h[vi_tri_x];} else{

vi_tri_x = (vi_tri_x - 1) & 3; dem_x = positions_f[vi_tri_x];} output_bit(x_a, (bit_test(dem_x, 0))); output_bit(x_b, (bit_test(dem_x, 1))); output_bit(x_c, (bit_test(dem_x, 2))); output_bit(x_d, (bit_test(dem_x, 3))); } //======================================== void __thuan_y() { if(y_fh == 1){

vi_tri_y = (vi_tri_y + 1) & 7; dem_y = positions_h[vi_tri_y];} else{

vi_tri_y = (vi_tri_y + 1) & 3; dem_y = positions_f[vi_tri_y];} output_bit(y_a, (bit_test(dem_y, 0))); output_bit(y_b, (bit_test(dem_y, 1))); output_bit(y_c, (bit_test(dem_y, 2))); output_bit(y_d, (bit_test(dem_y, 3))); } //========================================= void __nguoc_y() { if(y_fh == 1){

vi_tri_y = (vi_tri_y - 1) & 7; dem_y = positions_h[vi_tri_y];} else{

dem_y = positions_f[vi_tri_y];} output_bit(y_a, (bit_test(dem_y, 0))); output_bit(y_b, (bit_test(dem_y, 1))); output_bit(y_c, (bit_test(dem_y, 2))); output_bit(y_d, (bit_test(dem_y, 3))); } //========================================= void __thuan_z() { if(z_fh == 1){

vi_tri_z = (vi_tri_z + 1) & 7; dem_z = positions_h[vi_tri_z];} else{

vi_tri_z = (vi_tri_z + 1) & 3; dem_z = positions_f[vi_tri_z];} output_bit(z_a, (bit_test(dem_z, 0))); output_bit(z_b, (bit_test(dem_z, 1))); output_bit(z_c, (bit_test(dem_z, 2))); output_bit(z_d, (bit_test(dem_z, 3))); } //========================================= void __nguoc_z() { if(z_fh == 1){

vi_tri_z = (vi_tri_z - 1) & 7; dem_z = positions_h[vi_tri_z];} else{

vi_tri_z = (vi_tri_z - 1) & 3; dem_z = positions_f[vi_tri_z];} output_bit(z_a, (bit_test(dem_z, 0))); output_bit(z_b, (bit_test(dem_z, 1)));

output_bit(z_c, (bit_test(dem_z, 2))); output_bit(z_d, (bit_test(dem_z, 3))); } //========================================= void tat_x() { output_bit(x_a,0); output_bit(x_b,0); output_bit(x_c,0); output_bit(x_d,0); } void tat_y() { output_bit(y_a,0); output_bit(y_b,0); output_bit(y_c,0); output_bit(y_d,0); } void tat_z() { output_bit(z_a,0); output_bit(z_b,0); output_bit(z_c,0); output_bit(z_d,0); } //========================================= void chuyen_dong_step() {

/* chong trung step */

if(bit_test(s_data_in, 6)){bit_clear(data_in, 6);} if(bit_test(s_data_in, 7)){bit_clear(data_in, 7);} step_x = bit_test(data_in, 4); step_y = bit_test(data_in, 5); step_z = bit_test(data_in, 6); step_a = bit_test(data_in, 7); dir_x = bit_test(data_in, 0); dir_y = bit_test(data_in, 1); dir_z = bit_test(data_in, 2); dir_a = bit_test(data_in, 3); if(step_x) { /* motor x */

Một phần của tài liệu Báo cáo đồ án tốt nghiệp: Máy phay CNC mini v2 (Trang 52)

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

(79 trang)