Cách ghép nối máy BKM-10 với máy tính để lấy đƣợc kết
quả đo: Với yêu cầu là có thể vẽ lên biểu đồ phân bố áp suất bên trong chu vi
ổ dạng hai chiều, để vẽ đƣợc biểu đồ dạng hai chiều ta phải có hai giá trị là
giá trị áp suất tại mỗi điểm bên trong ổ theo phƣơng chu vi ổ và tƣơng ứng là
vị trí ứng với giá trị áp suất đó trong ổ. Để có hai giá trin này ta sử dụng
đồng thời hai cảm biến đó là cảm biến đo áp suất và cảm biến đo vị trí và tín
hiệu từ hai cảm biến này đƣợc đƣa vào hai đầu lấy tín hiệu vào của chuột
tƣơng ứng với hai phƣơng dịch chuyển của con trỏ trên màn hình máy tính
và nó làm cho con trỏ di chuyển tƣơng ứng.
194 trang |
Chia sẻ: lylyngoc | Lượt xem: 2339 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Nghiên cứu thiết kế và chế tạo máy đo áp suất của ổ đỡ thuỷ động có kết nối máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
r (nghĩa là giảm nguồn cho
nó), nguồn motor đƣợc bật on/off một cách nhanh chóng. Phần trăm thời
gian mà nguồn đƣợc bật sẽ quyết định phần trăm hoạt động mà nó đƣợc thực
hiện
Giảng đồ trình bày khái niệm này, trình bày tín hiệu PWM đến hoạt
động motor tại 75%, 50%, 25% nguồn hoạt động.
Một khoảng rộng của tần số có thể đƣợc sử dụng cho tín hiệu PWM
Một dạng sóng PWM gồm 8 bit, mà mỗi một dạng sóng có thể là on
hoặc off, đƣợc lập lại để sử dụng cho động cơ. Mỗi một phần trăm của giây,
bit điều khiển quyết định motor là nạp hoặc ngắt. Mỗi 1/125 của giây dạng
sóng đƣợc lập lại.
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 132
Hình 3.27 Nguyên lý PWM
Thực chất của PWM là làm thay đổi tổng giá trị áp (trung bình) đặt
vào hai đầu cực của động cơ. Khi áp trung bình thay đổi tức là làm thay đổi
tốc độ động cơ ngay lập tức.
Có nhiều phƣơng pháp điều khiển PWM:
Phƣơng pháp tƣơng tự: tác động nhanh và liên tục.
Phƣơng pháp số: có thể điều khiển chính xác vị trí và tốc độ của
hệ truyền động.
IC chuyên dụng.
Dùng con vi điều khiển trện board.
Có hai phƣơng pháp phổ biến nhất làm thay đổi tổng điện áp đặt vào
hai cực động cơ Servo DC:
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 133
Hình 3.28 Các phương pháp PWM cho động cơ Servo
Hình trên minh họa phƣơng pháp PWM cho Servo chuẩn (phƣơng
pháp 1) và Servo số (phƣơng pháp 2)
+Phƣơng pháp 1: Bằng cách thay đổi thời gian Ton và Toff. Trong khi
chu kỳ xung vẫn giữ nguyên (không đổi)
Ví dụ: Chúng ta mong muốn mức logic ngõ ra PWM dùng điều khiển
tốc độ động cơ Servo DC. Khi đó, động cơ đạt tốc độ Minimum thi tƣơng
ứng với tín hiệu PWM là 100% off 0% on và khi động cơ đạt tốc độ Maxi-
mum thì tƣơng ứng với tín hiệu 0% off 100% on. Tuy nhiên điều này chỉ là
lý thuyết, trong thực tế phƣơng pháp PWM không bao giờ đạt con số 100%
off 0% on (hoặc 0% off 100% on) mà nó chỉ mang tính gần đúng .
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 134
Hình 3.29 Phương pháp PWM với tần số không đổi
t1 = t2 = TON + TOFF = const
Trong đó:
t1, t2: chu kỳ xung
Ton: thời gian On
Toff: thời gian Off
Theo tiêu chuẩn động cơ Servo, ta nên chọn chu kỳ xung t1=t2 =20ms
Chúng ta thấy rằng, thời gian Ton càngtăng thì điện áp trung bình
tƣơng ứng càng lớn, đồng nghĩa với tăng tốc độ động cơ và hoàn toàn ngƣợc
lại nếu Ton càng nhỏ thì điện áp trung bình tƣơng ứng càng giảm, đồng nghĩa
với giảm tốc độ động cơ
Hình 3.19 Quan hệ giữa thời gian Ton với điện áp
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 135
+ Phƣơng pháp 2: Bằng cách thay đổi tần số xung. Do đó trƣờng hợp
này làm cho chu kỳ xung bị thay đổi, tức là: t1 ≠ t2
Hình 3.30 Phương pháp PWM với tần số thay đổi
Nhìn chung cả 2 phƣơng pháp trên đều có một điểm chung đó là điều
tiết PWM dẫn đến làm thay đổi tổng áp trung bình đặt vào hai cực VCC và
GND của động cơ Servo DC. Tùy theo thế mạnh của từng phƣơng pháp, thế
mạnh của ngƣời dùng mà lựa chọn phƣơng pháp nào là hợp lý, dễ sử dụng và
mang lại hiệu quả cao
Hình 3.32 Sơ đồ điều khiển động cơ DC
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 136
3.4. Mạch xử lý giao tiếp với máy tính
a. Lý thuyết chung
- Thuật ngữ USART trong tiếng anh là viết tắt của cụm từ: Universal
Synchronous & Asynchronous serial Reveiver and Transmitter, nghĩa là bộ
truyền nhận nối tiếp đồng bộ và không đồng bộ. Cần chú ý rằng khái niệm
USART (hay UART nếu chỉ nói đến bộ truyền nhận không đồng bộ) thƣờng
để chỉ thiết bị phần cứng (device, hardware), không phải chỉ một chuẩn giao
tiếp. USART hay UART cần phải kết hợp với một thiết bị chuyển đổi mức
điện áp để tạo ra một chuẩn giao tiếp nào đó. Ví dụ, chuẩn RS232 (hay
COM) trên các máy tính cá nhân là sự kết hợp của chip UART và chip
chuyển đổi mức điện áp. Tín hiệu từ chip UART thƣờng theo mức TTL: mức
logic high là 5, mức low là 0V. Trong khi đó, tín hiệu theo chuẩn RS232 trên
máy tính cá nhân thƣờng là -12V cho mức logic high và +12 cho mức low
Chú ý là các giải thích trong tài liệu này theo mức logic TTL của USART,
không theo RS232.
- Truyền thông nối tiếp: giả sử bạn đang xây dựng một ứng dụng phức
tạp cần sử dụng nhiều vi điều khiển (hoặc vi điều khiển và máy tính) kết nối
với nhau. Trong quá trình làm việc các vi điều khiển cần trao đổi dữ liệu cho
nhau, ví dụ tình huống Master truyền lệnh cho Slaver hoặc Slaver gởi tín
hiệu thu thập đƣợc về Master xử lí…Giả sử dữ liệu cần trao đổi là các mã có
chiều dài 8 bits, bạn có thể sẽ nghĩ đến cách kết nối đơn giản nhất là kết nối
1 PORT (8 bit) của mỗi vi điều khiển với nhau, mỗi line trên PORT sẽ chịu
trách nhiệm truyền/nhận 1 bit dữ liệu. Đây gọi là cách giao tiếp song song,
cách này là cách đơn giản nhất vì dữ liệu đƣợc xuất và nhận trực tiếp không
thông qua bất kỳ một giải thuật biến đổi nào và vì thế tốc độ truyền cũng rất
nhanh. Tuy nhiên, nhƣ bạn thấy, nhƣợc điểm của cách truyền này là số
đƣờng truyền quá nhiều, bạn hãy tƣởng tƣợng nếu dữ liệu của bạn có giá trị
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 137
càng lớn thì số đƣờng truyền cũng sẽ nhiều thêm. Hệ thống truyền thông
song song thƣờng rất cồng kềnh và vì thế kém hiệu quả. Truyền thông nối
tiếp sẽ giải quyết vần đề này, trong tuyền thông nối tiếp dữ liệu đƣợc truyền
từng bit trên 1 (hoặc một ít) đƣờng truyền. Vì lý do này, cho dù dữ liệu của
bạn có lớn đến đâu bạn cũng chỉ dùng rất ít đƣờng truyền. Hình 3.16 mô tả
sự so sánh giữa 2 cách truyền song song và nối tiếp trong việc truyền con số
187 thập phân (tức 10111011 nhị phân).
Hình 3.33 Truyền 8 bit theo phương pháp song song và nối tiếp
- Một hạn chế rất dễ nhận thấy khi truyền nối tiếp so với song song là
tốc độ truyền và độ chính xác của dữ liệu khi truyền và nhận. Vì dữ liệu cần
đƣợc “chia nhỏ” thành từng bit khi truyền nhận, tốc độ truyền sẽ bị giảm.
Mặt khác, để đảm bảo tính chính xác của dữ liệu, bộ truyền và bộ phận cần
có những “thỏa hiệp” hay nhũng tiêu chuẩn nhất định. Do đó trong máy đo
áp suất thủy động ta dùng truyền thông nối tiếp.
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 138
Hình 3.34 Sơ đồ modul giao tiếp với máy tính
3.4. Thiết kế mạch điều khiển cho máy
3.4.1 Thiết kế mạch in cho máy
Hình 3.35 Sơ đồ mạch in
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 139
3.4.2 Code nạp cho vi điều khiển
#include
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include
#include "hard_def.h"
#include
/*************************************************************
*
* USART *
**************************************************************
/
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
#define RX_BUFFER_SIZE 100
unsigned char rx_buffer[RX_BUFFER_SIZE];
unsigned char rx_wr_index, // write index
rx_rd_index, // read index
rx_counter; // counter
bit rx_buffer_overflow; // USART reveiver buffer overflow flag
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 140
interrupt [USART_RXC] void usart_receiver(void){
unsigned char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DA-
TA_OVERRUN))==0){ // checking error
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE){
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
#ifndef _DEBUG_TERMINAL_IO_
#define _ALTERNATE_GETCHAR_
#pragma used+
unsigned char getchar(void){
unsigned char data;
while (rx_counter==0);
data = rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 141
#asm("sei")
return data;
}
#pragma used-
#endif
void reset_rx_buffer(){
#asm("cli")
rx_wr_index = rx_rd_index = rx_counter = 0;
rx_buffer_overflow=0;
#asm("sei")
}
// Standard Input/Output functions
#include
#include
/*************************************************************
*
* ADC 10-bit *
**************************************************************
/
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 142
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
eeprom unsigned char pre_vel;
unsigned int CW_encd = 0, CCW_encd = 0,
pressure = 0, cmd_angle = 0;
char *tempstr = " ";
float angle = 0;
const float OneStep = 3.6;
bit direction = 0;
unsigned char pressure_input_pin = 1, vel = 0;
#define APD_buffer_size 100
unsigned char APD_counter=0, APD_id = 0;
bit tx_finished = 0;
unsigned int PD[APD_buffer_size], AD[APD_buffer_size];
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 143
void system_init(){
PORTA=0x00;
DDRA=0x00;
PORTB=0x02;
DDRB=0x00;
PORTD=0x00;
DDRD=0x52;
// timer 0 stopped
TCCR0=TCNT0= OCR0=0x00;
//timer 1: PWM
TCCR1A=0x31; // inverted
TCCR1B=0x02;
TCNT1H= TCNT1L=ICR1H=ICR1L=0x00;
OCR1AH=OCR1AL=OCR1BH=PWM=0x00;
// timer 2 Stopped
ASSR=TCCR2=TCNT2=OCR2=0x00;
// External Interrupt(s) initialization
// INT0: off
// INT1: Off
// INT2: Off
GICR|=0;
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 144
MCUCR=0;
MCUCSR=0;
GIFR=0;
// 8 Data, 1 Stop, No Parity
// USART Receiver: interrupt
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
// Analog Comparator: Off
ACSR=0x80;
SFIOR=0x00;
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;
// LM016L init
lcd_init(16);
vel = pre_vel;
RELAY = 1;
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 145
PWM = 0;
direction = forward;
#asm("sei")
}
void push_APD(){
if( APD_counter == APD_buffer_size ) APD_counter =0;
else{
AD[APD_counter]= angle;
PD[APD_counter++]= pressure;
}
}
void reset_APD(){
APD_counter = 0;
APD_id = 0;
tx_finished = 0;
}
//////////////////////////////////////////////////////////////////////////////////////////
// ket qua gui ve may tinh:
// [_STARTING][_REPORT_AD][gia tri goc][_REPORT_PD][gia tri
ap suat][_ENDING]
//
//////////////////////////////////////////////////////////////////////////////////////////
void send_APD(){
if( APD_id >= APD_counter ){ tx_finished = 1; return;}
else{
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 146
char *tempstr = " ";
putchar(_STARTING);
putchar('X');
itoa(AD[APD_id], tempstr);
printf("%s",tempstr );
putchar('Y');
itoa(PD[APD_id], tempstr);
printf("%s",tempstr );
putchar(_ENDING);
APD_id++;
tx_finished = 0;
}
}
void reset_encd(){
CW_encd = CCW_encd = 0;
}
void set_origin(){
reset_encd();
APD_counter=0;
}
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 147
void lcd_putnum(unsigned int num){
char *str = " ";
itoa( num, str);
lcd_puts(str);
}
void move( ){
PWM = vel;
RELAY = direction;
}
void status_report(){
lcd_clear();
if( direction ) lcd_putsf("CW --- ");
else lcd_putsf("CCW --- ");
lcd_putnum(PWM);
lcd_gotoxy(0,1);
lcd_putnum(angle);
lcd_gotoxy(8,1);
lcd_putnum(pressure);
}
#define stop_move() { PWM = 0; }
void move_to_angle(unsigned int ang){
if( angle < ang ){
direction = forward;
while( angle <ang ) move();
}
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 148
else if( angle > ang ){
direction = reverse;
while( angle > ang ) move();
}
stop_move();
}
/////////////////////////////////////////////////////////////////////////////////////////////
// no_step : so lan lay gia tri ap suat < APD_buffer_size( mac dinh la 50, co
the set lai )
// d_ang : goc quay giua 2 lan lay ap suat
// dir : chieu quay
// stop_time: thoi gian dung (ms)lai sau khi quay mot goc d_ang, sau do doc
gia tri ap suat.
// Neu muon do lien tuc khong dung thi set = 0.
////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
// cmd_list: luu cac ma lenh duoc gui tu PC den AVR
// temp_cmd_data: luu du lieu can thiet de thuc thi
// function: + void reset_cmd_list
// + void push_cmd :nhap ma lenh vao cmd_list
// + unsigned char get_cmd :lay ma lenh tu command list
cmd_list
// + unsigned char cmd_decoder : giai ma lenh
///////////////////////////////////////////////////////////////////////
#define cmd_list_size 20
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 149
unsigned char cmd_list[cmd_list_size], cmd_counter=0,
cmd_wr_index=0,cmd_rd_index=0;
unsigned int temp_cmd_data[cmd_list_size], stepnumber = 0;
void reset_cmd_list(){
cmd_counter = cmd_wr_index = cmd_rd_index=0;
}
void push_cmd( unsigned char cmd_code ){
cmd_list[cmd_wr_index] = cmd_code;
if(++cmd_wr_index == cmd_list_size ) cmd_wr_index = 0;
++cmd_counter;
}
unsigned char get_cmd(){
unsigned char temp_cmd;
if (cmd_counter == 0) return 0;
temp_cmd = cmd_list[cmd_rd_index];
if(++cmd_rd_index == cmd_list_size ) cmd_rd_index = 0;
--cmd_counter;
return temp_cmd;
}
unsigned char cmd_decoder(){
unsigned char temp = 0;
unsigned char val = 0;
while ( temp != _STARTING ) temp = getchar(); // go to the start code
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 150
temp = getchar(); // get the CMD
if( temp == _RUN_TASK ){ getchar();return 1;} // if the command
is run, return
push_cmd(temp); // put the command into the cmd_list
temp = getchar(); // get the next data
// calculating data
while( temp != _ENDING ){
val *= 10;
val += (temp - '0');
temp = getchar();
};
temp_cmd_data[cmd_wr_index-1] = val;
return 0;
}
///////////////////////////////////////////////////////////////////////
// Thuc thi cac lenh tu PC
//
///////////////////////////////////////////////////////////////////////
void measure_pressure( ){
if( stepnumber == 0) { PWM = 0; return; }
CW_encd = 0;
reset_APD(); // clear all old data
reset_rx_buffer();
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 151
CW_encd = 0;
putchar(_STARTING);
putchar('X');
itoa(CW_encd, tempstr);
printf("%s",tempstr );
putchar('Y');
itoa(read_adc( pressure_input_pin), tempstr);
printf("%s",tempstr );
putchar(_ENDING);
GICR|=0x40;
MCUCR=0x02;
MCUCSR=0x00;
GIFR=0x40;
}
void process(){
unsigned char temp_cmd = 0;
do{
temp_cmd = get_cmd();
if( temp_cmd == _FORWARD_DIR ) {
RELAY = direction = forward;
}
else if( temp_cmd == _REVERSE_DIR ) {
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 152
RELAY = direction = reverse;
}
else if( temp_cmd == _STOP_MOVE ) {
stop_move();
}
else if( temp_cmd == _SET_VEL ) {
PWM = (unsigned char) temp_cmd_data[cmd_rd_index-1];
}
else if( temp_cmd == _START_MSR ) {
measure_pressure( );
}
else if( temp_cmd == _SET_ORIGIN ) {
set_origin();
}
else if( temp_cmd == _RETURN_ORIGIN ){
move_to_angle(0);
}
else if( temp_cmd == _SEND_APD ) {
lcd_clear();
lcd_putsf("dang gui");
while(tx_finished == 0){ send_APD();}
reset_APD();
lcd_clear();
lcd_putsf("da gui");
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 153
}
else if( temp_cmd == _RESET_APD ) {
reset_APD();
}
else if (temp_cmd == _STEP_NO ) {
stepnumber = temp_cmd_data[cmd_rd_index-1];
lcd_gotoxy(11,0);
lcd_putnum(stepnumber);
}
}
while(temp_cmd!=0);
}
///////////////////////////////////////////////////////////////////////
// kiem tra truyen du lieu : PC -> AVR
//
///////////////////////////////////////////////////////////////////////
void test_receive(){
char ch;
ch = getchar();
lcd_clear();
if( ch == _STARTING ) lcd_putsf("start");
else if( ch == _ENDING ) lcd_putsf("end");
else if( ch == _FORWARD_DIR ) lcd_putsf("forward");
else if( ch == _REVERSE_DIR ) lcd_putsf("reverse");
else if( ch == _STOP_MOVE ) lcd_putsf("stop");
else if( ch == _SET_VEL ) lcd_putsf("set vel");
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 154
else if( ch == _RETURN_ORIGIN ) lcd_putsf("return org");
else if( ch == _SEND_APD) lcd_putsf("send APD");
else if( ch == _RESET_APD ) lcd_putsf("reset apd");
else if( ch == _GOT_CMD ) lcd_putsf("got cmd");
else if( ch == _DONE) lcd_putsf("done");
else if( ch == _WAIT) lcd_putsf("wait");
else if( ch == _FREE) lcd_putsf("free");
else if( ch == _QUEUE) lcd_putsf("queue");
else if( ch == _BUSY) lcd_putsf("busy");
else if( ch == _REPORT_PD) lcd_putsf("report pd");
else if( ch == _REPORT_AD) lcd_putsf("report ad");
else if( ch == _RUN_TASK) lcd_putsf("run task");
else lcd_putsf("unknown cmd");
}
///////////////////////////////////////////////////////////////////////
// kiem tra truyen du lieu : AVR -> PC
//
///////////////////////////////////////////////////////////////////////
void test_transmit(){
unsigned char i = 0;
putchar( _STARTING);
putchar(' ');
putchar( _ENDING);
for( i = _FORWARD_DIR; i<=_RUN_TASK; i++){
putchar(i);
putchar(' ');
}
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 155
}
void main(void){
//unsigned char start_process = 0;
//char ch;
system_init();
angle = 0; pressure = 0 ;
push_APD();
angle = 1; pressure = 100 ;
push_APD();
angle = 2; pressure = 200 ;
push_APD();
angle = 3; pressure = 300 ;
push_APD();
angle = 4; pressure = 500 ;
push_APD();
angle = 5; pressure = 600 ;
push_APD();
angle = 6; pressure = 400 ;
push_APD();
angle = 7; pressure = 300 ;
push_APD();
angle = 8; pressure = 200 ;
push_APD();
angle = 9; pressure = 1000 ;
push_APD();
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 156
lcd_putsf("Ready");
while(getchar() != 'a');
lcd_clear();
lcd_putsf("Connected");
while (1) {
while(cmd_decoder() == 0);
process();
reset_cmd_list();
// lcd_putchar( getchar());
};
}
interrupt [EXT_INT0] void ext_int0_isr(void){
CW_encd ++;
if( CW_encd > stepnumber){
PWM = 0;
GICR =0;
MCUCR=0;
MCUCSR=0;
GIFR=0;
CW_encd = 0;
}
else {
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 157
lcd_clear();
lcd_putnum(CW_encd);
lcd_putchar('/');
lcd_putnum(stepnumber);
putchar(_STARTING);
putchar('X');
itoa(CW_encd, tempstr);
printf("%s",tempstr );
putchar('Y');
itoa(read_adc( pressure_input_pin), tempstr);
printf("%s",tempstr );
putchar(_ENDING);
}
}
interrupt [EXT_INT1] void ext_int1_isr(void){
CCW_encd ++;
}
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 158
CHƢƠNG IV: THIẾT KẾ PHẦN MỀM MÁY ĐO ÁP SUẤT Ổ
ĐỠ THỦY ĐỘNG
4.1. Giới thiệu các chƣơng trình viết giao diện
4.1.1. Giới thiệu về Visual Basic
Có rất nhiều chƣơng trình hay ngôn ngữ lập trình khác nhau nhƣ: C++,
Delphi, Visual Basic…có thể tạo ra chƣơng trình đáp ứng đƣợc những yêu
cầu giao tiếp mạch điều khiển, hiển thị tọa độ trỏ chuột của đề tài. Với điều
kiện cũng nhƣ khả năng của mình nhóm quyết định chọn Visua Basic để tạo
chƣơng trình chạy.
4.1.1.1. Tổng quan về Visual Basic
Giao diện chƣơng trình
IDE là tên viết tắt của môi trƣờng phát triển tích hợp (Inegreated
Development Enviroment). IDE là nơi tạo ra các chƣơng trình VB.
IDE của VB là nơi tập trung các menu, thanh công cụ và cửa sổ để
tạo ra chƣơng trình. Mỗi phần của IDE có các tính năng ảnh hƣởng đến
các hoạt động lập trình khác nhau. Thanh menu cho phép bạn tác động
cũng nhƣ quản lý trực tiếp trên toàn bộ ứng dụng. Thanh công cụ cho
phép truy cập các chức năng của thanh menu qua các nút trên thanh công
cụ.
Các biểu mẫu (Form) - khối xây dựng các chƣơng trình Visual ba-
sic - xuất hiện trong cửa sổ form. Hộp công cụ để thêm các điều khiển
vào các biểu mẫu của đề án. Project explorer hiển thị các đề án mà bạn
đang làm cũng nhƣ các thành phần của các đề án. Bạn duyệt và cài đặt
các thuộc tính của điều khiển, biểu mẫu và module trong cửa sổ property.
Cuối cùng, bạn bố trí và xem xét một hoặc nhiều biểu mẫu trên màn hình
thông qua cửa sổ form layout.
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 159
Hình 4.1 Giao diên Visual Basic
4.1.2. Giới thiệu về LabVIEW
LabVIEW (viết tắt của nhóm từ Laboratory Virtual Instrumentation
Engineering Workbench) là một phần mềm máy tính đƣợc phát triển bởi
công ty National Instrument, Hoa Kỳ. LabVIEW còn đƣợc biết đến nhƣ là
một ngôn ngữ lập trình với khái niệm hoàn toàn khác so với các ngôn ngữ
lập trình truyền thống nhƣ ngôn ngữ C, Pascal. Bằng cách diễn đạt cú pháp
thông qua các hình ảnh trực quan trong môi trƣờng soạn thảo, LabVIEW đã
đƣợc gọi với tên khác là lập trình G (viết tắt của Graphical, nghĩa là đồ họa).
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 160
a.Các khả năng chính của LabVIEW
LabVIEW đƣợc dùng nhiều trong các phòng thí nghiệm, lĩnh vực khoa
học kỹ thuật nhƣ tự động hóa, điều khiển, điện tử, cơ điện tử, hàng không,
hóa sinh, điện tử y sinh….. Hiện tại ngòa phát triển phiên bản LabVIEW cho
các hệ điều hành Windows, Linux, hãng NI đã phát triển các modul Lab-
VIEW cho máy hỗ trợ cá nhân. Các chức năng chính của LabVIEW có thể
tóm tắt nhƣ sau:
- Thu thập tín hiệu từ các thiết bị bên ngoài nhƣ cảm biến nhiệt độ,
hình ảnh từ webcam, vận tốc của động cơ…
- Giao tiếp với các thiết bị ngoại vi thông qua nhiều chuẩn giao tiếp
thông qua các cổng giao tiếp: RS232, RS485, USB….
- Mô phỏng và xử lý các tín hiệu thu nhận đƣợc để phục vụ các mục
đích nghiên cứu hay mục đích của hệ thống mà ngƣời lập trình
muốn.
- Xây dựng các giao diện ngƣời dùng một cách nhanh chóng và
thẩm mỹ hơn nhiều so với các ngôn ngữ khác nhƣ Visual Basic,
Matlab….
- Cho phép thực hiện các thuật toán điều khiển nhƣ PID, Logic mờ,
một cách nhanh chóng thông qua các chức năng tích hợp sẵn trong
LabVIEW.
- Cho phép kết hợp với nhiều ngôn ngữ lập trình truyền thông nhƣ C,
C++…….
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 161
Hình 4.2 Giao diện chính của chương trình LabVIEW
4.2. Chọn chƣơng trình viết giao diện của máy đo áp suất thủy động
Một số lý do để chọn Visual Basic làm ngôn ngữ thảo chƣơng trình:
- Dễ học
- Thíc hợp cho MS WINDOWS
- Tiện dùng cho MS OFICE 2000 về WEB
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 162
a. Hộp công cụ
Hộp công cụ là bảng chứa các điều khiển và ta thiết kế giao diện ngƣời sử
dụng bằng cách chọn các điều khiển từ hộp công cụ và đƣa chúng vào các
biểu mẫu.
Một số điều khiển có sẵn trong Visual basic và không thể gỡ bỏ khỏi hộp
công cụ. Một số khác nằm bên ngoài Visual basicvà chứa trong các tập tin
mà có phần mở rộng là. ocx. Các điều khiển này có thể đƣợc thêm vào hoặc
gỡ bỏ khỏi thanh công cụ.
Trong chƣơng trình của đề tài cần tập tin mở rộng là NTgraph.ocx điều
khiển này cho phép tạo một đồ thị trên form chính. Ngoài ra cần thêm vào
thanh công cụ phần Mscomm1. Để sử dụng ta tìm file Ntgraph.ocx trên trang
chủ sau đó paste và system32 trên giao diện của VB chọn menu project ->
components cửa sổ components hiện ra ta sẽ tìm và chọn các công cụ trên.
Hình 4.3 Hộp công cụ và components
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 163
b. Vẽ đồ thị với NTgraph.
Đây là một điều khiển OCX tạo ra một đồ thị 2D với tọa độ X,Y đƣợc tính
toán, điều chỉnh nhập vào từ bên ngoài có thể lấy từ tín hiệu qua cổng COM,
LPT, Card giao tiếp PC.
Hình 4.4 NTgraph active
Để vẽ đồ thị ta cũng có thể dùng Teechart nhƣng phức tạp hơn mà phải trả
phí. Với NTgraph thì giao thức đơn giản và phù hợp với tín hiệu 2 trục mà ta
cần trong đề tài này.
Trong NTgraph ta có thể đặt các thuộc tính màu sắc đƣờng nét, trục tọa
độ, tạo thêm nhiều đƣờng hiển thị khác…
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 164
Hình 4.5 Bảng lựa chọn chế độ vẽ đồ thị
Ta có thể sử dụng code để áp đặt thuộc tính cho đồ thị:
Graph.Caption = “ ” - tiêu đề của đồ thị.
.Xlabel = “ ” – tiêu đề trục X.
.Ylabel = “ ” – tiêu đề trục Y.
.PlotAreaColor = (red, green, black, white) - màu nền đồ thị.
.XgridNumber - vạch chia trên trục X.
.YgridNumber - vạch chia trên trục Y.
.SetRange(xmin, xmax, ymin, ymax) – đặt dải tọa độ trên các
trục.
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 165
.ClearGraph – xóa đồ thị.
Để nhận và vẽ đồ thị từ tín hiệu cảm biến chuột máy tính ta cần khai báo
các hàm, lệnh liên kết với windows.
c. Code chƣơng trình giao diện máy đo áp suất
Dim MotorDir As Boolean
Dim AD As FIFO
Dim PD As FIFO
Dim InputData As BYTEFIFO
Dim NumberStepValue As String
Dim Vel As String
Private Sub ExcelSave_Click()
'oXL.oWB.ORng
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
Vel = "0"
' Start Excel and get Application object.
Set oXL = CreateObject("Excel.Application")
oXL.Visible = True
' Get a new workbook.
Set oWB = oXL.Workbooks.Add
Set oSheet = oWB.ActiveSheet
' Add table headers going cell by cell.
oSheet.Cells(1, 1).Value = "Lan Do"
oSheet.Cells(1, 2).Value = "Goc"
oSheet.Cells(1, 3).Value = "Ap Suat"
' Format A1:D1 as bold, vertical alignment = center.
With oSheet.Range("A1", "C1")
.Font.Bold = True
.VerticalAlignment = xlVAlignCenter
End With
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 166
' Create an array to set multiple values at once.
Dim size As Integer
Dim i As Integer
AD.ResetReadIndex
PD.ResetReadIndex
i = 2
Do While Not AD.IsEmpty
oSheet.Cells(i, 1).Value = i - 1
oSheet.Cells(i, 2).Value = AD.Pop
oSheet.Cells(i, 3).Value = PD.Pop
i = i + 1
Loop
' Fill A2:B6 with an array of values (First and Last Names).
'oSheet.Range("A2", "C6").Value = Result
Set oRng = oSheet.Range("A1", "C1")
oRng.EntireColumn.AutoFit
' Make sure you release object references.
Set oRng = Nothing
Set oSheet = Nothing
Set oWB = Nothing
Set oXL = Nothing
Exit Sub
Err_Handler:
MsgBox Err.Description, vbCritical, "Error: " & Err.Number
End Sub
Private Sub CandyButton1_Click()
Unload Me
End
End Sub
Private Sub ClearCmd_Click()
CmdText.Text = ""
End Sub
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 167
Private Sub Excel_Click()
'oXL.oWB.ORng
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
' Start Excel and get Application object.
Set oXL = CreateObject("Excel.Application")
oXL.Visible = True
' Get a new workbook.
Set oWB = oXL.Workbooks.Add
Set oSheet = oWB.ActiveSheet
' Add table headers going cell by cell.
oSheet.Cells(1, 1).Value = "Lan Do"
oSheet.Cells(1, 2).Value = "Goc"
oSheet.Cells(1, 3).Value = "Ap Suat"
' Format A1:D1 as bold, vertical alignment = center.
With oSheet.Range("A1", "C1")
.Font.Bold = True
.VerticalAlignment = xlVAlignCenter
End With
Dim i As Integer
AD.ResetReadIndex
PD.ResetReadIndex
i = 2
Do While Not AD.IsEmpty
oSheet.Cells(i, 1).Value = i - 1
oSheet.Cells(i, 2).Value = AD.Pop * 0.9
oSheet.Cells(i, 3).Value = PD.Pop * 25 / 1023
i = i + 1
Loop
' Fill A2:B6 with an array of values (First and Last Names).
'oSheet.Range("A2", "C6").Value = Result
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 168
Set oRng = oSheet.Range("A1", "C1")
oRng.EntireColumn.AutoFit
' Make sure you release object references.
Set oRng = Nothing
Set oSheet = Nothing
Set oWB = Nothing
Set oXL = Nothing
Exit Sub
Err_Handler:
MsgBox Err.Description, vbCritical, "Error: " & Err.Number
End Sub
Private Sub Form_Load()
Set PD = New FIFO
Set AD = New FIFO
Set InputData = New BYTEFIFO
Dim cnttemp As Integer
PD.Reinitialize
AD.Reinitialize
InputData.Reinitialize
InputData.SetSpecialData ("z")
NumberStepValue = "1"
PWMScroll.Enabled = True
PWMScroll.Min = 0
PWMScroll.Max = 255
PWMScroll.Value = 0
ComList.AddItem "COM1"
ComList.AddItem "COM2"
ComList.AddItem "COM3"
ComList.AddItem "COM4"
ComList.AddItem "COM5"
ComList.ListIndex = 0
For cnttemp = 0 To 255
PWMValue.AddItem Str(cnttemp)
Next cnttemp
PWMValue.ListIndex = 0
For cnttemp = 1 To 400
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 169
StepNumber.AddItem Str(cnttemp * 0.9)
Next cnttemp
StepNumber.ListIndex = 0
MotorDir = True
'ConnectStt.Caption = "Chua Ket Noi"
With Graph
.PlotAreaColor = vbBlack
.FrameStyle = BITMAP
.Caption = " Do Thi Goc-Apsuat"
.XLabel = "Goc (Do)"
.YLabel = "Ap Suat (mBar)"
.ClearGraph
.ElementLineColor = RGB(255, 255, 0)
.XGridNumber = 19
.YGridNumber = 15
.GridColor = RGB(100, 100, 100)
.ShowGrid = True
.ElementWidth = 1
.ElementLinetype = Solid
.SetRange 0, 380, 0, 30
End With
Timer1.Interval = 50
' disable all button when the comport is not already connected
Timer1.Enabled = False
PWM.Enabled = False
Direction.Enabled = False
Dir.Enabled = False
PWMValue.Enabled = False
Command.Enabled = False
SaveGraph.Enabled = False
ClearGraph.Enabled = False
PWMScroll.Enabled = False
StartProcess.Enabled = False
StepButton.Enabled = False
StopMove.Enabled = False
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 170
Excel.Enabled = False
CmdText.Enabled = False
PWMValue.Enabled = False
Label2.Enabled = False
SendStt.Enabled = False
StepNumber.Enabled = False
Connect.ColorButtonUp = &HFF&
RefreshGraph.Enabled = False
ClearCmd.Enabled = False
End Sub
Private Sub PWM_Click()
Vel = Trim$(PWMValue.Text)
PWMScroll.Value = Val(Vel)
End Sub
Private Sub CmdText_Click()
On Error GoTo ErrHandle
SendStt = "Wait"
Exit Sub
ErrHandle:
If Err.Number = 8018 Then MsgBox "Loi: Chua chon cong COM!"
End Sub
Private Sub ClearGraph_Click()
With Graph
.ClearGraph
End With
End Sub
Private Sub Command_Click()
On Error GoTo ErrHandle
If CmdText.Text = "" Then
SendStt = "Error"
MsgBox ("Error:Khong Co du lieu")
Exit Sub
Else
Me.RS232Com.Output = CmdText.Text
SendStt = "Done"
End If
Exit Sub
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 171
ErrHandle:
If Err.Number = 8018 Then MsgBox "Loi: Chua chon cong COM!"
End Sub
Private Sub Connect_Click()
Dim Rs232ComId As Byte
Rs232ComId = 0
If ComList.Text = "COM1" Then
Rs232ComId = 1
ElseIf ComList.Text = "COM2" Then
Rs232ComId = 2
ElseIf ComList.Text = "COM3" Then
Rs232ComId = 3
ElseIf ComList.Text = "COM4" Then
Rs232ComId = 4
ElseIf ComList.Text = "COM5" Then
Rs232ComId = 5
End If
If RS232Com.PortOpen Then RS232Com.PortOpen = False
On Error GoTo ErrHandle
If Not Rs232ComId = 0 Then
RS232Com.CommPort = Rs232ComId
RS232Com.Settings = "9600,N,8,1"
Me.RS232Com.RThreshold = 1
RS232Com.InputLen = 1
RS232Com.PortOpen = True
Me.RS232Com.Output = "a"
Timer1.Enabled = True
PWM.Enabled = True
Direction.Enabled = True
Dir.Enabled = True
PWMValue.Enabled = True
Command.Enabled = True
SaveGraph.Enabled = True
ClearGraph.Enabled = True
PWMScroll.Enabled = True
StartProcess.Enabled = True
StepButton.Enabled = True
StopMove.Enabled = True
Excel.Enabled = True
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 172
CmdText.Enabled = True
PWMValue.Enabled = True
Label2.Enabled = True
SendStt.Enabled = True
StepNumber.Enabled = True
Connect.ColorButtonUp = &H404000
RefreshGraph.Enabled = True
ClearCmd.Enabled = True
Else
MsgBox ("Chua Chon Cong Com")
'ConnectStt.Caption = "Chua Ket Noi"
Timer1.Enabled = False
PWM.Enabled = False
Direction.Enabled = False
Dir.Enabled = False
PWMValue.Enabled = False
Command.Enabled = False
SaveGraph.Enabled = False
ClearGraph.Enabled = False
PWMScroll.Enabled = False
StartProcess.Enabled = False
StepButton.Enabled = False
StopMove.Enabled = False
Excel.Enabled = False
CmdText.Enabled = False
PWMValue.Enabled = False
Label2.Enabled = False
SendStt.Enabled = False
StepNumber.Enabled = False
Connect.ColorButtonUp = &HFF&
ClearCmd.Enabled = False
End If
Exit Sub
ErrHandle:
'ConnectStt.Caption = "Chua Ket Noi"
If Err.Number = 8002 Then MsgBox "Error: Thiet bi chua ket noi hoac
chua bat nguon !"
If Err.Number = 8018 Then MsgBox "Error: Chi gui duoc khi thiet di da
san sang!"
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 173
Timer1.Enabled = False
PWM.Enabled = False
Direction.Enabled = False
Dir.Enabled = False
PWMValue.Enabled = False
Command.Enabled = False
SaveGraph.Enabled = False
ClearGraph.Enabled = False
PWMScroll.Enabled = False
StartProcess.Enabled = False
StepButton.Enabled = False
StopMove.Enabled = False
Excel.Enabled = False
CmdText.Enabled = False
PWMValue.Enabled = False
Label2.Enabled = False
SendStt.Enabled = False
Connect.ColorButtonUp = &HFF&
RefreshGraph.Enabled = False
ClearCmd.Enabled = False
End Sub
Private Sub Direction_Click()
On Error GoTo ErrHandle
MotorDir = Not MotorDir
If Not MotorDir Then
Dir.Text = "Trai"
Me.RS232Com.Output = "aAzaRz"
Else
Dir.Text = "Phai"
Me.RS232Com.Output = "aBzaRz"
End If
Exit Sub
ErrHandle:
If Err.Number = 8018 Then MsgBox "Error: Chua chon cong COM!"
End Sub
Private Sub PWMScroll_Change()
PWMValue.Text = Str(PWMScroll.Value)
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 174
End Sub
Private Sub PWMValue_Change()
PWMScroll.Value = Val(PWMValue.Text)
End Sub
Private Sub RefreshGraph_Click()
Graph.SetRange 0, 380, 0, 30
End Sub
Private Sub RS232Com_OnComm()
Dim tempstr As String
If Me.RS232Com.CommEvent = comEvReceive Then
tempstr = RS232Com.Input
InputData.Push (tempstr)
End If
End Sub
Private Sub SaveGraph_Click()
Graph.PrintGraph
End Sub
Private Sub StartProcess_Click()
On Error GoTo ErrHandle
If Dir.Text = "Trai" Then
Me.RS232Com.Output = "aAz"
Else
Me.RS232Com.Output = "aBz"
End If
Me.RS232Com.Output = "aD" + Vel + "zaT" + NumberStepValue +
"zaEzaRz"
Exit Sub
ErrHandle:
If Err.Number = 8018 Then MsgBox "Error: Chua Ket Noi Thiet Bi!"
End Sub
Private Sub StepButton_Click()
NumberStepValue = Str(StepNumber.ListIndex + 1)
End Sub
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 175
Private Sub StopMove_Click()
On Error GoTo ErrHandle
Me.RS232Com.Output = "aD0zaRz"
PWMValue.Text = "0"
Exit Sub
ErrHandle:
If Err.Number = 8018 Then MsgBox "Error: Chua Ket Noi Thiet Bi!"
End Sub
Private Sub ComInputDecoder()
Dim Temp As String
Dim Value As Long
'Ma du lieu gui ve: aX[data]Y[data]z
'#define _REPORT_AD 'X' //
'#define _REPORT_PD 'Y' //
If InputData.CheckData Then
' Go to the Starting code
Temp = InputData.Pop
Do While Not Temp = "a"
Temp = InputData.Pop
Loop
' Get the next cmd code
Temp = InputData.Pop
Value = 0
If Temp = "X" Then
Temp = InputData.Pop
Do While Not Temp = "Y"
Value = Value * 10 + Val(Temp)
Temp = InputData.Pop
Loop
AD.Push (Value)
Value = 0
Temp = InputData.Pop
Do While Not Temp = "z"
Value = Value * 10 + Val(Temp)
Temp = InputData.Pop
Loop
PD.Push (Value)
Else
MsgBox ("Error: Unkown Code")
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 176
End If
End If
End Sub
Private Sub Timer1_Timer()
ComInputDecoder
If Not AD.IsEmpty And Not PD.IsEmpty Then
Graph.PlotXY AD.Pop * 0.9, PD.Pop * 25 / 1023, 0
End If
End Sub
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 177
CHƢƠNG V: NGHIÊN CỨU THỰC NGHIỆM MÁY ĐO ÁP
SUẤT Ổ ĐỠ THỦY ĐỘNG BKM-10
5.1. Sơ đồ độngvà nguyên lý hoạt động của máy BKM-10
5.1.1. Sơ đồ động của máy
m?ch x? lý
tín hi?u
máy tính
1
2
3
4
5
6 7 8 9 10 11 12 13 14 15 16
Hình 5.1 Sơ đồ động thử nghiệm
Máy thử nghiệm gồm các bộ phận chính sau:
1- Khung 9- trục vít
2- Động cơ xoay chiều 10- Bánh vít
3- Dây đai 11- Động cơ điện một chiều
4- Bánh đai 12- Khớp nối
5- Ổ lăn 13- Cảm biến áp suất
6- Buồng dầu 14- Encoder
7- Trục 15- Mạch xử lý tín hiệu
8- Cụm bánh vít 16- Máy tính
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 178
5.1.2. Nguyên lý hoạt động của máy.
Khi động cơ 2 quay thông qua bộ truyền đai làm cho trục chính 7
quay, dƣới tác động của tải W tác dụng lên ổ nó tạo ra khe hở giữa trục và
bạc ổ 8 dầu bôi trơn đƣợc đƣa từ thùng chứa tới ổ thủy động. Khi trục quay
nó sẽ tạo ra một nêm dầu bên trong ổ đỡ, để xác định giá trị của áp suất trong
ổ khi có nêm dầu ta sử dụng một cảm biến đo áp suất và dầu từ ổ đƣợc trích
ra đƣa lên cảm biến. Động cơ một chiều 12 quay làm cho trục vít 9 quay và
làm cho bánh vit quay, bánh vít đƣợc nắp chặt với bạc của ổ thủy động và nó
làm cho bạc ổ quay và tƣơng ứng với mỗi góc quay xác định của bánh vít ta
thu đƣợc một giá trị áp suất trên cảm biến đo áp suất và ở đây ta cũng sử
dụng một cảm biến đo vị trí của ổ. Hai tín hiệu của hai cảm biến này đƣợc
đƣa qua mạch ghép nối và đƣa lên máy tính và thông qua phần mềm đã đƣợc
lập trình bằng ngôn ngữ lập trình Visual Basic nó sẽ vẽ lên biểu đồ áp suất
của ổ.
5.2. Kết cấu ổ thực nghiệm
Mô hình ổ thí nghiệm bôi trơn thủy động có các số liệu sau:
* Trục ổ:
- Đƣờng kính trục D=24 mm
- Vật liệu làm trục Thép C45
- Trục đƣợc mài đạt Rz=0,63
* Bạc của ổ
- Vật liệu Đồng
- Lỗ bạc đƣợc mài đạt Rz=0,63
* Dùng dầu bôi trơn
- Dầu công nghiệp có độ nhớt động lực học =0,002Pas
- Khối lƣợng riêng =0,880kg/dm3
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 179
* Động cơ dùng để truyền động cho trục:
- Công suất động cơ P=0,7kW
- Số vòng quay n=1350vg/phút
* Khe hở hƣớng kính C=0,03mm
5.3. Sơ đồ đặt tải
P
O
W
L = 580 L = 581 2
Hình 5.2 Sơ đồ đặt tải
P: Là tải trọnh đặt vào cánh tay đòn
W: Là tải trọng tác dụng lên ổ
Xét cân bằng mômen tại điểm O ta có :
P.L1 – W.L2 =0 W=
2
1
L
PL
(N)
5.4. Kết nối máy tính và đƣa kết quả đo ra màn hình
5.4.1. Sơ đồ mạch kêt nối với máy tính
Để vẽ đƣợc biểu đồ phân bố áp suất trong ổ đỡ thủy động một mƣởng
đang tính ta sử dụng hai cảm biến để đo hai giá trị đó là:
- Cảm biến để đo vị trí.
- Cảm biến đo áp suất để xác định giá trị của áp suất trong ổ ứng với
các vị trí khác nhau trên ổ thủy động.
Hai tín hiệu lấy từ hai cảm biến này sẽ đƣợc đƣa qua một mạch xử lý
tín hiệu và mạch này tổng hợp hai tín hiệu lại và đƣa lên máy tính thông qua
cổng RS232.
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 180
5.4.2. Sơ đồ khối mạch điều khiển
Hinh 5.3 Sơ đồ khối mạch điều khiển
Máy Tính
ATmega 16
Pressure sensor
LCD
Động Cơ
Encorder
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 181
5.4.3. Lƣu đồ thuật toán
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 182
CHƢƠNG VI: KẾT QUẢ ĐẠT ĐƢỢC
6.1. Mô hình hoàn thiện máy say khi lắp ráp
Hình 6.4 Mô hình máy thực tế
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 183
6.2. Mạch điều khiển máy
Hình 6.5 Mạch thực tế của máy
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 184
6.3. Giao diện thực hiện của máy
6.3.1. Nhiệm vụ của giao diện
Có thể nhập các thông số để điều chỉnh động cơ 1 chiều.
Chọn tải cho máy BKM10.
Có thể xuất ra đồ thị dạng PDF.
Có thể xuất ra bảng excel kết quả đo.
6.3.2. Giao diện chƣơng trình
Trục tunh thể hiện giá trị của áp suất.
Trục hoành thể hiện vị trí của cảm biến trên bạc.
Các thanh công cụ:
- Kết nối : chọn cổng COM giao tiếp máy tính.
- Tải : chọn tải đặt trên máy BKM-10.
- chiều quay : Chọn chiều quay trái, phải cho động cơ 1 DC.
- Thanh trƣợt: di thanh trƣợt để điều khiển tốc độ động cơ DC.
- PWM :nhập giá trị từ 0-255 để điều khiển tốc độ đông cơ
DC.
- Góc : Chọn góc quay cho động cơ DC.
- Bắt đầu quá trình : khi đã chọn đầy đủ ấn nút này để bắt đầu quá
trình đo.
- Dừng động cơ : khi muốn dừng động cơ ở vị trí bất kì ấn nút
này.Sau khi ấn có thể kết thúc quá trình đo hoặc
ấn nút bắt đầu quá trình để tiếp tục đo.
- Lƣu đồ thị : khi muốn lƣu lại đồ thị,ấn nút này.
- Xóa đồ thị : Xóa đồ thị trên giao diện.
- Excel : Xuất ra bảng excel.
- Refrest : xóa toàn bộ thông số đã chon và kết quả đo đƣợc.
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 185
- Command : Nhập lệnh để đo nếu muốn.
Hình 6.5 Giao diện chương trình
6.4. Kết quả đo đƣợc từ máy BKM-10
Ta tiến hành đo với nhiều tải trọng khác nhau và các tốc độ khác nhau của
máy và có thể đo với nhiều loại dầu có độ nhớt khác nhau để có thể so sánh
các kết quả thu đƣợc ứng với mỗi lần đo cho ta các biểu đồ phân bố áp suất
nhƣ thế nào để có thể đƣa ra kết luận.
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 186
Ta tiến hành khảo sát áp suất bên trong ổ ứng với các thông số cố định là:
Tốc độ quay của trục là N=2000v/ph, độ nhớt động học của dầu là 0,015Pa.s.
Giá trị thay đổi ở đây chính là tải trọng đặt vào máy và ứng với mỗi một giá
trị tải trọng ta thu đƣợc một biểu đồ áp suất bên trong ổ. Ta có đồ thị ứng với
tải trọng đặt vào ổ và tốc độ trục chính là:
Hinh 6.6 Đồ thị ứng với tải 5kg và tốc độ 900 vòng/phút
Hinh 6.7 Đồ thị ứng với tải 10kg và tốc độ 900 vòng/phút
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 187
Hinh 6.8 Đồ thị ứng với tải 15kg và tốc độ 900 vòng/phút
Hinh 6.9 Đồ thị ứng với tải 5kg và tốc độ 1350 vòng/phút
Hinh 6.10 Đồ thị ứng với tải 10kg và tốc độ 1350 vòng/phút
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 188
Hinh 6.11 Đồ thị ứng với tải 15kg và tốc độ 1350 vòng/phút
Hinh 6.12 Đồ thị ứng với tải 5kg và tốc độ 2025 vòng/phút
Hinh 6.13 Đồ thị ứng với tải 10kg và tốc độ 2025 vòng/phút
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 189
Hinh 6.14 Đồ thị ứng với tải 15kg và tốc độ 2025 vòng/phút
Từ số liệu trên thấy áp suất lớn nhất tăng theo chiều tăng của tải trọng
và cũng tăng theo chiều tăng của tốc độ trục chính. Nhƣ vậy hoàn toàn phù
hợp với những tính toán lý thuyết về áp suất thủy động.
Ngoài ra các biểu đồ áp suất cũng cho thấy đƣợc thời điểm xuất hiện
áp suất trên ổ và vị trí đạt cực đại áp suất qua đó ta có thể dựng tƣơng đối
biểu đồ áp suất tác dụng lên trục.
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 190
Hinh 6.15 Áp suất thực tế trên ổ thủy động
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 191
Hình 6.15 Áp suất lý thuyết trên ổ thủy động
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 192
KẾT LUẬN
Với đề tài đƣợc giao là “Nghiên cứu mô hình thử nghiệm máy đo áp
suất ổ đỡ thuỷ động BKM-10 có kết nối máy tính” và sau khoảng thời gian
mƣời năm tuần thì nội dung công việc mà chúng em đã thực hiện đƣợc gồm:
Phần I: Lý thuyết: Tìm hiểu về lý thuyết bôi trơn, các dạng bôi trơn
trong đó chú ý đến phần bôi trơn thuỷ động và đi sâu vào tìm hiểu cách tính
toán các thông số cơ bản của ổ đỡ và ổ chặn trong bôi trơn thuỷ động, do đề
tài đƣợc giao về phần ổ đỡ nên chúng em có tìm hiểu sâu hơn về ổ đỡ. Ngoài
ra còn tìm hiểu thêm về các cách đo của các thông số cơ bản trong cơ khí
bằng các loại cảm biến nhƣ cảm biến đo áp suất và cảm biến xác định vị
trí…
Đi vào tìm hiểu thêm một số ngôn ngữ lập trình nhƣ Visual Basic…
Phần II: Cách ghép nối máy BKM-10 với máy tính để lấy đƣợc kết
quả đo: Với yêu cầu là có thể vẽ lên biểu đồ phân bố áp suất bên trong chu vi
ổ dạng hai chiều, để vẽ đƣợc biểu đồ dạng hai chiều ta phải có hai giá trị là
giá trị áp suất tại mỗi điểm bên trong ổ theo phƣơng chu vi ổ và tƣơng ứng là
vị trí ứng với giá trị áp suất đó trong ổ. Để có hai giá trin này ta sử dụng
đồng thời hai cảm biến đó là cảm biến đo áp suất và cảm biến đo vị trí và tín
hiệu từ hai cảm biến này đƣợc đƣa vào hai đầu lấy tín hiệu vào của chuột
tƣơng ứng với hai phƣơng dịch chuyển của con trỏ trên màn hình máy tính
và nó làm cho con trỏ di chuyển tƣơng ứng. Và thông qua một chƣơng trình
vẽ đƣợc viết trên ngôn ngữ lập trình Visual Basic nó sẽ vẽ lên biểu đồ phân
bố áp suất bên trong chu vi của ổ đỡ thuỷ động.
Phần III: Phần thực nghiệm: Đi vào nghiên cứu ổ đỡ thuỷ động có
chiều dài hữu hạn và tiến hành tính một số thông số cơ bản của của một ổ đỡ
Bộ môn: Máy và ma sát học Đồ án tốt nghiệp
Thực hiện:Nguyễn Tiến Long_Vũ Hoàng Thanh_Nguyễn Tiến Thành 193
có kích thƣớc xác định và đồng thời tiến hành tính toán các thông số của một
máy đo áp suất BKM-10 thử nghiệm.
Ta tiến hành ứng dụng máy này vào thực tế để đo đƣợc áp suất của ổ
ứng với các giá trị của tải trọng, của vận tốc, của độ nhớt của dầu…
Tiến hành đo giá trị áp suất trong ổ ứng với các giá trị tải trọng và tốc
độ quay của trục cũng nhƣ độ nhớt của dầu khác nhau và nó cho ta giá trị
cũng nhƣ sự phân bố áp suất bên trong ổ là khác nhau và ta cũng xác định
đƣợc giá trị lớn nhất của áp suát bên trong ổ là bao nhiêu để từ đó ta có thể
so sánh với lý thuyết để có thể đƣa ra đƣợc kết lận về độ chính xác của kết
quả đo và cung đƣa ra đƣợc kết lận về mô hình thử nghiệm này.
Để ta có thể biết đƣợc độ chính xác cũng nhƣ độ tin cậy của máy đến
đâu khi làm việc thì ta phải tiến hành so sánh giá trị thu đƣợc giữa lý thuyết
và thực nghiệm, nhƣng để tính đƣợc giá trị áp suất bên trong ổ đỡ thuỷ động
có kích thƣớc giới hạn thì không phải là một việc đơn giản ta không thể tính
bằng phƣơng pháp thông thƣờng mà buộc ta phải đi giải phƣơng trình vi
phân cấp hai để giải phƣơng trình này buộc ta phải sử dụng phƣơng pháp sai
phân hữu hạn bằng việc ứng dụng các ngôn ngữ lập trình nhƣ For-
tran…Nhƣng do thời gian có hạn nên việc tính theo lý thuyết là chƣa thực
hiện đƣợc nên việc so sánh về giá trị là chƣa thể thực hiện đƣợc, nhƣng về
dạng biểu đồ phân bố áp suất thì nó có dạng tƣơng đối giống với lý thuyết.
Các file đính kèm theo tài liệu này:
- thuyet_minh__7805.pdf