1. Trang chủ
  2. » Luận Văn - Báo Cáo

THIẾT KẾ VÀ THỊ CÔNG HỆ THỐNG CÂN ĐÓNG GÓI

81 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 81
Dung lượng 1,01 MB

Nội dung

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA ĐIỆN – ĐIỆN TỬ LUẬN VĂN TỐT NGHIỆP Đề tài : THIẾT KẾ VÀ THI CÔNG HỆ THỐNG CÂN ĐÓNG GÓI GVHD SVTH LỚP KHOÁ : Th.S HOÀNG TRUNG HIẾU : TRƯƠNG THANH TÙNG : 06D3N : 05 TP.HCM, thaùng 07/2009 LỜI CẢM ƠN Em xin chân thành cảm ơn thầy Hoàng Trung Hiếu tận tình hướng dẫn hỗ trợ em hồn thành luận án tốt nghiệp Em xin cảm ơn thầy cô bạn giúp đỡ em suốt thời gian qua Em xin cảm ơn gia đình tạo điều kiện cho em hoàn thành luận án TP HCM tháng năm 2009 Sinh viên thực Trương Thanh Tùng GVHD : ThS.HOÀNG TRUNG HIẾU MỤC LỤC PHẦN I : GIỚI THIÊU LÝ THUYẾT Chương 1: Vi điều khiển AVR lập trình cho VĐK………………………… 1.1 Cấu trúc nhớ: ……………………………………………………….…… 1.2 Các chế độ truy nhập địa AVR… …………………….……… 1.3 Các ghi chức đặc biệt …………………………… ……… Chương 2: Lập trình cấu trúc Assembly…………………………………11 2.1 Chương trình Macro ………………………………………… 11 2.2 Phương pháp modul hóa chương trình ……………………………… 14 2.3 Vào liệu lập trình cho thiết bị ngoại vi ………………… 17 Chương : Giới thiệu loadcell 33 3.1.Giới thiệu loadcell .33 3.2 Các phương pháp cảm biến dùng đo lường khối lượng 41 3 Một số Loadcell thực tế 43 Chương : Khái quát động DC 46 4.1 Nguyên tắc hoạt động ……………………………………………… 46 4.2 Cơ chế sinh lực quay động điện chiều ………………… 47 4.3 Điều khiển tốc độ …………………………………………………….47 Chương : Giới thiệu LCD …………………………………………………50 5.1 Hình dáng kích thước LCD ……………………………………….50 5.2 Chiếu sáng hiển thị LCD ………………………………… 50 5.3 Các chân module LCD ………………………………… ……50 PHẦN II : THIẾT KẾ MÔ HÌNH HỆ THỐNG Chương : Thiết kế thi cơng phần cứng ………………………………… 53 1.1 Giới thiệu mơ hình ………………………………………………… 53 1.2 Tìm hiểu số linh kiện điện tử ………………………………… 55 1.3 Thiết kế gia công mạch điện ………………………………………56 1.4 Giới thiệu mạch khuyếch đại …………………………………………62 Chương : Phần mềm ………………………………………………………… 65 2.1 Lưu đồ giải thuật chương trình điều khiển …………………………65 Tự đánh giá ………………………………………………………………………78 Danh mục tài liệu tham khảo 79 SVTH : TRƯƠNG THANH TÙNG Trang GVHD : ThS.HOÀNG TRUNG HIẾU PHẦN I: GIỚI THIỆU LÝ THUYẾT Chương 1: Vi điều khiển AVR lập trình cho VĐK 1.1.Cấu trúc nhớ: Cũng vi điều khiển khác AVR có cấu trúc Harvard tức có nhớ đường bus riêng cho nhớ chương trình nhớ liệu Sơ đồ nhớ: Ta thấy không gian nhớ nhớ chương trình gồm 4Kx8 có địa từ 0000H tới FFFH Bộ nhớ liệu gồm hai phần: nhớ RAM nhớ EEPROM khơng gian nhớ RAM lại chia làm phần: Các ghi chức chung , ghi vào cuối 51 byte nhớ SRAM Bộ nhớ EEPROM phần nhớ liệu lại hoàn toàn đứng độc lập nhớ độc lập đánh địa riêng 1.1.1.Bộ nhớ liệu AVR có 32 ghi ch ức chung chúng liên kết trực tiế p với ALU điểm khác biệt AVR tạo cho tốc độ xử lý cực cao Các SVTH : TRƯƠNG THANH TÙNG Trang GVHD : ThS.HOÀNG TRUNG HIẾU ghi đặt tên từ R0 tới R31 Và đặc biệt cặp ghi cuối (từ R6 tới R31) đôi tao thành ghi 16 bit sử dụng làm trỏ trỏ tới nhớ chương trình liệu Chúng có tên X, Y, Z Khơng gian ghi cổng vào bao gồm cá ghi liệu ghi điều khiển cho cổng vào ra.(Phần nói tới phần lập trình cho thiết bị ngoại vi) Cuối nhớ SRAM 1.1.2.Bộ nhớ chương trình: Bộ nhớ chương trình có địa từ 0000H tới 0010H dành cho bảng véc tơ ngắt SVTH : TRƯƠNG THANH TÙNG Trang GVHD : ThS.HOÀNG TRUNG HIẾU 1.2.Các chế độ truy nhập địa AVR 1.2.1 Địa ghi đơn trực tiếp Ở chế dộ địa ghi lấy trực tiếp từ vùng ghi (từ tới 31) SVTH : TRƯƠNG THANH TÙNG Trang GVHD : ThS.HOÀNG TRUNG HIẾU Ví dụ: COM Rd NEG Rd 1.2.2 Địa hai ghi trực tiếp Đây chế độ mà lênh ALU truy nhập trực tiếp vào hai ghi Chế độ hoàn toàn tương tự chế độ Ví dụ: ADD Rd,Rr 1.2.3 Địa trực tiếp cổng vào Trong địa tốn hạng chứa bit từ lệnh n địa ghi nguồn đích Ví dụ: Out DDRB, R16 In R12, DDRB 1.2.4.Trực tiếp liệu Địa liệu RAM đưa trực tiếp vào lệnh SVTH : TRƯƠNG THANH TÙNG Trang GVHD : ThS.HOÀNG TRUNG HIẾU Ví dụ: LDS R12,0x0fff STS 0x0fff,R11 1.2.5 Địa liệu gián tiếp với dịch chuyển Ví dụ: LDD R11,Y+10 Địa tốn hạng nguồn đích trỏ ghi Y Z cộng thêm số 1.2.6 Địa gián tiếp liệu: Đây cách mà CPU truy nhập tới liệu RAM thông qua ghi X,Y,Z địa liệu lưu ghi SVTH : TRƯƠNG THANH TÙNG Trang GVHD : ThS.HOÀNG TRUNG HIẾU Ví dụ: ST X,R11 LD R13,Y 1.2.7 Địa liệu gián tiếp với tăng giảm trỏ Ví dụ: LD R17,X+ LD -Y,R14 1.2.8 Địa số nhớ chương trình Cách sử dụng cho lệnh LPM Địa số lưu ghi Z Ví dụ: LDI R30,0x07;dia chi truc tiep du lieu 0x07 LDI R31,0xFF LPM ; đưa nội dung ô nhớ có địa Z (0x07FF )về ghi R0 1.2.9 Địa nhớ chương trình gián tiếp: Địa đoạn mã trỏ ghi Z sử dụng lệnh IJMP ICALL SVTH : TRƯƠNG THANH TÙNG Trang GVHD : ThS.HOÀNG TRUNG HIẾU Ví dụ: Label: LDI R29,High(Label) LDI R28,Low(Lebel) ICALL 1.2.10 Địa tương dối nhớ chương trình Cách định địa dùng cho lệnh RJMPvà RCALL CPU có giá trị PC+k+1 Ví dụ: Label: LDI R29,High(Label) LDI R28,Low(Lebel) RCALL Label SVTH : TRƯƠNG THANH TÙNG Trang GVHD : ThS.HOÀNG TRUNG HIẾU CHƯƠNG : PHẦN MỀM 2.1 Lưu đồ giải thuật chương trình điều khiển: 2.1.1 Lưu đồ giải thuật: POWER ON INIT DISPLAY MAIN KEY2(ESC) GETKEY KEY2(RUN) KEY1(SET) SYSTEM RUNNING… SET MASS N MOTOR ON N GETKEY SENSOR ON KEY3(UP) KEY4(DOWN) Y DECREASE MASS INCREASE MASS MOTOR OFF N KEY1(OK) Y SET QUANTITY GETMASS >= SETMASS N KEY1(OK) KEY2(ESC) Y GETKEY SOLENOI OFF HAVE BOTTLE KEY3(UP) INCREASE MASS KEY4(DOWN) DECREASE MASS Y SOLENOI ON countQUANTITY < SETQUANTITY SVTH : TRƯƠNG THANH TÙNG Trang 65 GVHD : ThS.HOÀNG TRUNG HIẾU 2.1.2 Chương trình điều khiển: /************************************************** Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small External RAM size :0 Data Stack size : 256 *****************************************************/ #include // Alphanumeric LCD Module functions #asm equ lcd_port=0x15 ;PORTC #endasm #include #include #include //======================================================== #define ON #define OFF #define FALSE #define TRUE #define SW1 #define SW2 #define SW3 #define SW4 PIND.4 PIND.5 PIND.6 PIND.7 #define SOLENOI PORTB.2 #define SENSOR PIND.3 #define SPEED_NORMAL 15 #define SPEED_SLOW 10 #define ADC_VREF_TYPE 0x00 //======================================================== // Declare your function here SVTH : TRƯƠNG THANH TÙNG Trang 66 GVHD : ThS.HOÀNG TRUNG HIẾU void LCDDisplayMain(void); void DisplaySetMass(void); void DisplaySetQuantity(void); char GetKey(void); unsigned int read_adc(unsigned char adc_input); void ReadMass(void); char RunSystem(void); //======================================================== // Declare your global variables here char f_period=FALSE; char str[50]; char key[5]={0,0,0,0,0}; int SetMass=60; int GetMass=0; char Quantity=6; char sensorLast=0; //======================================================== void main(void) { // Declare your local variables here //char test=0; //int counter=0; //char StatusMachine=0; // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=0 State2=1 State1=T State0=T PORTB=0x04; SVTH : TRƯƠNG THANH TÙNG Trang 67 GVHD : ThS.HOÀNG TRUNG HIẾU DDRB=0b00001100;//0x0C; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTC=0x00; DDRC=0xff; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTD=0xFF; DDRD=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: 1382.400 kHz // Mode: Fast PWM top=FFh // OC0 output: Inverted PWM TCCR0=0x7A; TCNT0=0x00; OCR0=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Normal top=FFFFh // OC1A output: Discon // OC1B output: Discon // Noise Canceler: Off // Input Capture on Falling Edge // Timer Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; SVTH : TRƯƠNG THANH TÙNG Trang 68 GVHD : ThS.HOÀNG TRUNG HIEÁU OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: 10.800 kHz // Mode: CTC top=OCR2 // OC2 output: Disconnected ASSR=0x00; TCCR2=0x0F; TCNT2=0x00; OCR2=0x6C; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x80; // ADC initialization // ADC Clock frequency: 172.800 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: Free Running ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0xA6; SFIOR&=0x1F; // LCD module initialization lcd_init(16); #asm("sei"); // chuong trinh thuc hien lcd_clear(); SVTH : TRƯƠNG THANH TÙNG Trang 69 GVHD : ThS.HOÀNG TRUNG HIEÁU lcd_gotoxy(0,0); lcd_putsf("SYSTEM MEASURE"); lcd_gotoxy(0,1); lcd_putsf(" *** "); delay_ms(5000); LCDDisplayMain(); while (TRUE) { if(f_period) { f_period=FALSE; switch(key[0]) { case 0: key[0]=GetKey(); if(key[0]==1) { lcd_clear(); lcd_gotoxy(0,0); sprintf(str,"Mass: g",SetMass); lcd_puts(str); DisplaySetMass(); lcd_gotoxy(0,1); lcd_putsf("OK ESC UP DOWN"); } break; case 1: switch(key[1]) { case 0: key[1]=GetKey(); if(key[1]==1) { lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("Quantity: "); DisplaySetQuantity(); lcd_gotoxy(0,1); lcd_putsf("OK ESC UP DOWN"); SVTH : TRƯƠNG THANH TÙNG Trang 70 GVHD : ThS.HOÀNG TRUNG HIEÁU } break; case 1: switch(key[2]) { case 0: key[2]=GetKey(); break; case 1: case 2: key[0]=key[1]=key[2]=0; LCDDisplayMain(); break; case 3: key[2]=0; if(Quantity3) Quantity-=1; DisplaySetQuantity(); break; } break; case 2: key[0]=key[1]=0; LCDDisplayMain(); break; case 3: key[1]=0; if(SetMass50) SetMass-=10; DisplaySetMass(); break; SVTH : TRƯƠNG THANH TÙNG Trang 71 GVHD : ThS.HOÀNG TRUNG HIẾU } break; case 2: /* if(Getkey)==2) { key[0]=0; SOLENOI=OFF; OCR0=0; } */ if(RunSystem()) { key[0]=0; LCDDisplayMain(); } break; default: key[0]=0; break; } sensorLast=SENSOR; ReadMass(); } } } //======================================================== void LCDDisplayMain(void) { lcd_clear(); lcd_gotoxy(3,0); lcd_putsf("MAIN MENU"); lcd_gotoxy(0,1); lcd_putsf("SET RUN x x"); } //======================================================== void DisplaySetMass(void) { sprintf(str,"%d",SetMass); SVTH : TRƯƠNG THANH TÙNG Trang 72 GVHD : ThS.HOÀNG TRUNG HIẾU if(SetMass-20) { StatusRunSystem++; } else { StatusRunSystem=5; } } break; case 3: if(GetMass=SetMass) { SVTH : TRƯƠNG THANH TÙNG Trang 75 GVHD : ThS.HOÀNG TRUNG HIẾU SOLENOI=OFF; countTime=50; StatusRunSystem++; } if(++countTime>40) { countTime=0; lcd_gotoxy(0,0); lcd_putsf(" "); sprintf(str,"Get Mass: %d g",GetMass); lcd_gotoxy(0,0); lcd_puts(str); } break; case 5: if(++countTime>150) { lcd_gotoxy(0,0); lcd_putsf(" "); sprintf(str,"Get Mass: %d g",GetMass); lcd_gotoxy(0,0); lcd_puts(str); countTime=0; OCR0=SPEED_NORMAL; StatusRunSystem=1; } break; } return FALSE; } //======================================================== void ReadMass(void) { static char countReadAdc=0; static int SumReadAdc=0; static int varGetmass=0; if(++countReadAdc>10) { countReadAdc=0; varGetmass=((long)SumReadAdc/10)*500/480-320; //if(varGetmass

Ngày đăng: 30/10/2022, 20:03

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w