Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
2,32 MB
Nội dung
DKS_GROUP Microcontroller Training Center Thực hành KIT AVR_DKS_03 DKS Group www.EmbestDKS.com DKS_GROUP Microcontroller Training Center MỤC LỤC Bài 1: Điều khiển IO (vào ra) led đơn 1.Kíến trúc vi điều khiển Giới thiệu vi điều khiển Atmega16L 2.1.Mơ tả chân: Phần mềm lập trình codevision(Hitech): 3.1.Mô tả phần cứng KIT AVR 03: 3.2.Lập trình: Bài 2.Điều khiển với led đoạn 4 4 6 18 1.Yêu cầu 18 2.Mổ tả 18 3.Thực hành 18 Bài 3.Điều khiển IO với LCD 23 1.Yêu cầu 23 2.Lý thuyết 23 3.Mô tả 23 4.Thực hành 24 Bài 4.ADC với LM35 27 1.Yêu cầu 27 2.Lý thuyết 27 3.Mô tả 28 4.Thực hành 28 Bài 5.Giao tiếp I2C với DS1307 32 1.Yêu cầu 32 2.Mô tả 32 3.Thực hành 32 Bài 6.Truyền thông RS-232 với Visual Basic 1.Yêu cầu DKS Group 38 38 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center 2.Mô tả 38 3.Thực hành 40 4.Visual Basic 42 Bài 7.Đo lường sử dụng máy tính 54 1.u cầu 54 2.Mơ tả 54 3.Thực hành 54 Bài 8.Điều khiển Step motor 59 1.Yêu cầu 59 2.Lý thuyết 59 2.1.Giới thiệu động bước 59 2.2.Hệ thống điều khiển động bước 59 3.Nguyên lý điều khiển động đơn cực 61 4.Mạch điều khiển động bước 62 DKS Group www.EmbestDKS.com DKS_GROUP Microcontroller Training Center Yêu cầu: - Khởi tạo project CodeVision - Nạp chương trình - Điều khiển led đơn KIT theo ý muốn Lý thuyết: 1.Kiến trúc vi điều khiển: AVR họ vi điều khiển bit theo cơng nghệ mới, với tính mạnh tích hợp chip hãng Atmel theo cơng nghệ RISC, mạnh ngang hàng với họ vi điều khiển bit khác PIC, Pisoc.Do đời muộn nên họ vi điều khiển AVR có nhiều tính đáp ứng tối đa nhu cầu người sử dụng, so với họ 8051 89xx có độ ổn định, khả tích hợp, mềm dẻo việc lập trình tiện lợi * Tính họ AVR: - Giao diện SPI đồng - Các đường dẫn vào/ra (I/O) lập trình - Giao tiếp I2C - Bộ biến đổi ADC 10 bit - Các kênh băm xung PWM - Các chế độ tiết kiệm lượng sleep, stand by vv - Một định thời Watchdog - Timer/Counter bit - Timer/Counter 16 bit - so sánh analog - Bộ nhớ EEPROM - Giao tiếp USART vv Giới thiệu vi điều khiển Atmega16L: DKS Group www.EmbestDKS.com DKS_GROUP Microcontroller Training Center Atmelga16L có đầy đủ tính họ AVR, giá thành so với loại khác giá thành vừa phải nghiên cứu làm công việc ứng dụng tới vi điều khiển Tính năng: - Bộ nhớ 16K(flash) - 512 byte (EEPROM) - K (SRAM) - Đóng vỏ 40 chân , có 32 chân vào liệu chia làm PORT A,B,C,D Các chân có chế độ pull_up resistors - Giao tiếp SPI - Giao diện I2C - Có kênh ADC 10 bit - so sánh analog - kênh PWM - timer/counter bit, timer/counter1 16 bit - định thời Watchdog - truyền nhận UART lập trình 2.1.Mơ tả chân: - Vcc GND chân cấp nguồn cho vi điều khiển hoạt động - Reset chân reset cứng khởi động lại hoạt động hệ thống - chân XTAL1, XTAL2 chân tạo dao động cho vi điều khiển, chân nối với thạch anh (hay sử dụng loại 4M), tụ gốm (22p) - Chân Vref thường nối lên 5v(Vcc), sử dụng ADC chân sử dụng làm điện so sánh, chân phải cấp cho điện áp cố định, sử dụng diode zener: DKS Group www.EmbestDKS.com Microcontroller Training Center 24VCC DKS_GROUP 10K R Vref 5V GND DIODE BREAKDOWN Hình 2.1 Cách nối chân Vref - Chân Avcc thường nối lên Vcc sử dụng ADC chân nối qua cuộn cảm lên Vcc với mục đích ổn định điện áp cho biến đổi Phần mềm lập trình codevision(Hitech): Lựa chọn phần mềm : phần mềm sử dụng rộng dải xây dựng ngơn ngữ lập trình C, phần mềm viết chuyên nghiệp hướng tới người sử dụng đơn giản, hổ trợ cao thư viện có sẳn 3.1.Mơ tả phần cứng KIT AVR 03: Các led đơn nối với cổng vào ATMEGA16L(PORTAPORTB-PORTC-PORTD) Để led sáng cần đưa mức logic chân IO AVR lên mức cao(5V), để led tắt đưa chân IO AVR xuống mức thấp DKS Group www.EmbestDKS.com DKS_GROUP D3 Microcontroller Training Center R_470 chan VDK 5VCC LED 3.2.Lập trình: Thiết lập cổng vào ra: Khi xem xét đến cổng I/O AVR ta phải xét tới ghi bit DDxn,PORTxn,PINxn -Các bit DDxn để truy cập cho địa xuất nhập DDRx Bit DDxn ghi DDRx dùng để điều khiển hướng liệu chân cổng này.Khi ghi giá trị logic ‘0’ vào bit ghi trở thành lối vào,còn ghi ‘1’ vào bit trở thành lối -Các bit PORTxn để truy cập địa xuất nhập PORTx Khi PORTx ghi giá trị chân có cấu tạo cổng điện trở kéo chủ động(được nối với cổng).Ngắt điện trở kéo ra, PORTx ghi giá trị chân có dạng cổng ra.Các chân cổng trạng thái điều kiện reset tích cực chí xung đồng hồ khơng hoạt động -Các bit PINxn để truy cập địa xuất nhập PINx PINx cổng để đọc,các cổng đọc trạng thái logic PORTx.PINx ghi,việc đọc PINx cho phép ta đọc giá trị logic chân PORTx.chú ý PINx ghi,việc đọc PINx cho phép ta đọc giá trị logic chân PORTx DKS Group www.EmbestDKS.com DKS_GROUP Microcontroller Training Center Nếu PORTxn ghi giá trị logic ‘1’ chân cổng có dạng chân ,các chân có giá trị ‘1’.Nếu PORTxn ghi giá trị ‘0’ chân cổng có dạng chân chân có giá trị ‘0’ Các cổng AVR đọc,ghi Để thiết lập cổng cổng vào ,ra ta tác động tới bit DDxn, PORTxn,PINxn.ta thiết lập để bit làm cổng vào,ra khơng với cổng,như ta sử lí tới bit,đây điểm mạnh dòng Vi điều khiển bit Ta sử dụng CodeWizardAVR để thiết lập cho PORTx Pinx Ví dụ hình:các bit 0,1,2,4,7 PORTA làm chân có trở kéo,còn bit lại làm chân vào Khi thiết lập xong bit 0,1,2,4,7 xuất liệu bit lại nhận liệu vào Ví dụ : Ta muốn ghi liệu giá trị logic ’0’ PORTA.0 để bật tắt Led thì: DKS Group www.EmbestDKS.com DKS_GROUP Microcontroller Training Center PORTA.0=1; Ta muốn đọc liệu bit từ chân PORTA: Bit x; x=PINA.3; Cũng ta thiết lập PORTA làm cổng ta xuất liệu từ PORTA: PORTA=0xAA; PORTA Còn ta thiết lập PORTA làm cổng vào giá trị thời PORTA: PORTA Thì sau câu lệnh đọc giá trị từ PORTA: x=PORTA x=0x55 Khi thiết lập PORTA làm cổng reset giá trị PORTA PORTA=0xFF; PORTA Khi thiết lập PORTA làm cổng vào reset giá trị PORTA PORTA=0x00; PORTA Việc thiết lập cổng vào việc quan trọng tùy theo mục đích sử dụng cổng làm cổng vào ra,thì ta phải thiết lập sử dụng được, động tác khác với họ vi điều khiển 8051- AT8951 CodeVision: Chạy CodeVision cách click chuột vào ICON CodeVision Desktop cửa sổ sau: DKS Group www.EmbestDKS.com DKS_GROUP Microcontroller Training Center Để tạo Project chọn menu: File Ỉ New sau: Chọn Project sau click chuột vào OK cửa sổ hỏi xem có sử dụng Code Winzard khơng: Chọn Yes cửa sổ CodeWinzardAVR sau : DKS Group 10 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center Được kết sau: Cắm cổng COM vào test chương trình DKS Group 53 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center 1.Yêu cầu: Điều khiển led đơn KIT AVR 03 máy tính Đo kết ADC từ biến trở cảm biến nhiệt LM35 hiển thị lên máy tính • Điều khiển led: Tạo Form VB sau: Trong FORM có: đối tượng picturebox chứa logo DKS Có 10 đối tượng button đối tượng button Led1 Led8 mảng button có tên từ Command1(0) Command1(7) Muốn tạo mảng button ta việc lấy đối tượng button sửa tên tất chúng thành Command Hai button lại Phản hồi Exit Có textbox để hiển thị liệu phản hồi Hoạt động phần mềm sau: Khi nhấn vào button Led truyền liệu 0x01 xuống cổng nối tiếp PC, AVR nhận đưa liệu cổng AVR để led Kit sáng Tương tự cho bấm nút Led lại Đồng thời AVR gửi ln giá trị vừa nhận lên PC Và bấm nút phản hồi liệu Textbox Khi nhấn nút Exit khỏi phần mềm DKS Group 54 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center Thực hành: Phần mềm VB Code sau: Private Sub Command1_Click(Index As Integer) If Index = Then MSComm1.Output = Chr$(1) End If If Index = Then MSComm1.Output = Chr$(2) End If If Index = Then MSComm1.Output = Chr$(4) End If If Index = Then MSComm1.Output = Chr$(8) End If If Index = Then MSComm1.Output = Chr$(16) End If If Index = Then MSComm1.Output = Chr$(32) End If If Index = Then MSComm1.Output = Chr$(64) End If If Index = Then MSComm1.Output = Chr$(128) End If End Sub Private Sub Command2_Click() MSComm1.PortOpen = False End End Sub Private Sub Command3_Click() If MSComm1.Input = "" Then Exit Sub Else Text1.Text = Asc(MSComm1.Input) End If End Sub DKS Group 55 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center Private Sub Form_Load() MSComm1.CommPort = MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True End Sub Firm ware: Khởi tạo CodeVision AVR cho phép cổng nối tiếp hoạt động, PORT D out put trước học Sau lập trình cho hàm main sau: Trong hàm main có sử dụng thêm biến temp nên dĩ nhiên bạn phải khai báo thêm biến phía ngồi hàm main Nạp chương trình vào chip AVR Kết nối dây cổng Com từ KIT cổng Com máy tính test kết DKS Group 56 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center Đo ADC từ biến trở LM35 Trên VB tạo giao diện phần mềm sau: Form gồm có: label để hiển thị hình text box để hiển thị liệu button: Thu du lieu Thoat khỏi phần mềm Code VB sau: Private Sub Command1_Click() If MSComm1.Input = "" Then Exit Sub Else Text1.Text = Asc(MSComm1.Input) Text2.Text = Asc(MSComm1.Input) End If End Sub Private Sub Command2_Click() MSComm1.PortOpen = False DKS Group 57 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center End End Sub Private Sub Form_Load() MSComm1.CommPort = MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True End Sub Firm Ware: Khởi tạo CodeWinzard AVR cho cổng nối tiếp USART hoạt động, cho phép ADC hoạt động(interrupt) trước sau viết code cho hàm main sau: Dịch nạp chương trình test DKS Group 58 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center 1.Yêu cầu : Hiểu nguyên lí điều khiển động bước đơn cực Điều khiển AVR 2.Lý thuyết: 2.1.Giới thiệu động bước: Động bước thực chất động đồng dùng để biến đổi tín hiệu điều khiển dạng xung điện rời rạc thành chuyển động góc quay chuyển động roto có khả cố định roto vào vị trí cần thiết Động bước làm việc nhờ có chuyển mạch điện tử đưa tín hiệu điều khiển vào stato theo thứ tự tần số định Tổng số góc quay roto tương ứng với số lần chuyển mạch, chiều quay tốc độ quay roto, phụ thuộc vào thứ tự chuyển đổi tần số chuyển đổi Khi xung điện áp đặt vào cuộn dây stato (phần ứng) động bước roto (phần cảm) động quay góc định, góc bước quay động Khi xung điện áp đặt vào cuộn dây phần ứng thay đổi liên tục roto quay liên tục (Nhưng thực chất chuyển động theo bước rời rạc) 2.2.Hệ thống điều khiển động bước Một hệ thống có sử dụng động bước khái quát theo sơ đồ sau DKS Group 59 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center D.C.SUPPLY: Có nhiệm vụ cung cấp nguồn chiều cho hệ thống Nguồn chiều lấy từ pin động có cơng suất nhỏ Với động có cơng suất lớn dùng nguồn điện chỉnh lưu từ nguồn xoay chiều CONTROL LOGIC: Đây khối điều khiển logic Có nhiệm vụ tạo tín hiệu điều khiển động Khối logic nguồn xung, hệ thống mạch điện tử Nó tạo xung điều khiển Động bước điều khiển theo bước theo nửa bước POWER DRIVER: Có nhiệm vụ cấp nguồn điện điều chỉnh để đưa vào động Nó lấy điện từ nguồn cung cấp xung điều khiển từ khối điều khiển để tạo dòng điện cấp cho động hoạt động STEPPER MOTOR: Động bước Các thơng số động gồm có: Bước góc, sai số bước góc, mơmen kéo, mơmen hãm, mômen làm việc Đối với hệ điều khiển động bước, ta thấy hệ thống đơn giản khơng có phần tử phản hồi Điều có động bước q trình hoạt động khơng gây sai số tích lũy, sai số động sai số chế tạo Việc sử dụng động bước đem lai độ DKS Group 60 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center xác chưa cao ngày sử dụng phổ biến Vì cơng suất độ xác bước góc ngày cải thiện Bước góc động bước chế tạo theo bảng tiêu chuẩn sau: 3.Nguyên tăc điều khiển động bước đơn cực: Động bước đơn cực, ( động vĩnh cửu động hỗn hợp ) có 5,6 dây thường quấn sơ đồ Khi dùng, đầu nối trung tâm thường nối vào cực dương nguồn cấp, hai đầu lại mấu nối đất để đảo chiều từ trường tạo quận Hình 1-5 : Động đơn cực Tín hiệu điều khiển Điều khiển đủ bước (full step) : Winding 1a 1000100010001000100010001 Winding 1b 0010001000100010001000100 Winding 2a 0100010001000100010001000 Winding 2b 0001000100010001000100010 time -> Winding 1a 1100110011001100110011001 Winding 1b 0011001100110011001100110 Winding 2a 0110011001100110011001100 Winding 2b 1001100110011001100110011 DKS Group 61 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center time -> Điều khiển nửa bước ( half step ) Winding 1a 11000001110000011100000111 Winding 1b 00011100000111000001110000 Winding 2a 01110000011100000111000001 Winding 2b 00000111000001110000011100 time -> 4.Mạch điều khiển động bước: Mạch điều khiển động bước bao gồm số chức sau đây: Tạo xung với tần số khác Chuyển đổi phần cho phù hợp với thứ tự kích từ Làm giảm dao động học Đầu vào mạch điều khiển xung Thành phần mạch bán dẫn, vi mạch Kích thích phần động bước theo thứ tự 1-2-3-4 transistor công suất T1 đến T4 thực hiện.Với việc thay đổi vị trí chuyển mạch, động quay theo chiều kim đồng hồ ngược lại Điện áp cấp qua khố chuyển để ni cuộn dây, tạo từ trường làm quay rotor Các khoá khơng cụ thể, thiết bị DKS Group 62 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center đóng cắt điều khiển rơle, transitor công suất Tín hiệu điều khiển đưa từ điều khiển vi mạch chuyên dụng, máy tính Với động nhỏ có dòng cỡ 500 mili Ampe, dùng IC loại dãy darlington collector hở : ULN2003, ULN2803 ( Allegro Microsystem) DS2003 (National Semiconductor), MC1413 ( Motorola) IC họ ULN200x có đầu vào phù hợp TTL, đầu emitor nối với chân Mỗi transitor darlington bảo vệ hai diode Một mắc emitor tới collector chặn điện áp ngược lớn đặt lên transitor Diode thứ hai nối collector với chân Nếu chân nối với cực dương cuộn dây, tạo thành mạch bảo vệ cho transitor Với động lớn có dòng > 0.5A IC họ ULN khơng đáp ứng ta dùng Tranzitor trường(IRF).Một số loại IRF thông dụng: IRF540 tranzitor ngược chịu dòng đến 20A IRF640 tranzitor ngược chịu dòng đến 18A DKS Group 63 www.EmbestDKS.com DKS_GROUP IRF250 Microcontroller Training Center tranzitor ngược chịu dòng đến 30A Sơ đồ mạch thiết kế sau: DKS Group 64 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center 5.Code : #include #include // Khai bao bien unsigned char stepA[] = {0xFF,0xFE,0xFD,0xFB,0xF7}, stepB[] = {0xFF,0xEF,0xDF,0xBF,0x7F}, stepC[] = {0xFF,0xEF,0xDF,0xBF,0x7F}; unsigned char indexA, indexB, indexC; unsigned char n_data; unsigned char n_step=10; unsigned int n_step3=5000,n_i; // // Declare your global variables here void main(void) { // Declare your local variables here // 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=0xFF; DDRA=0xFF; // Port B 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 PORTB=0xFF; DDRB=0xFF; // Port C 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 PORTC=0xFF; DDRC=0xFF; // Port D 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 PORTD=0xFF; DDRD=0xFF; DKS Group 65 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; 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; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization DKS Group 66 www.EmbestDKS.com DKS_GROUP Microcontroller Training Center // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; while (1) { // Place your code here if(indexA ++>3) indexA = 1; if(indexB ++>3) indexB = 1; if(indexC ++>3) indexC = 1; PORTA = stepA[indexA] & stepB[indexB]; PORTC = stepC[indexC]; // delay_ms(500); }} DKS Group 67 www.EmbestDKS.com ... nên họ vi điều khiển AVR có nhiều tính đáp ứng tối đa nhu cầu người sử dụng, so với họ 8051 89xx có độ ổn định, khả tích hợp, mềm dẻo việc lập trình tiện lợi * Tính họ AVR: - Giao diện SPI đồng... 3.1.Mơ tả phần cứng KIT AVR 03: Các led đơn nối với cổng vào ATMEGA16L(PORTAPORTB-PORTC-PORTD) Để led sáng cần đưa mức logic chân IO AVR lên mức cao(5V), để led tắt đưa chân IO AVR xuống mức thấp... chân , có 32 chân vào liệu chia làm PORT A,B,C,D Các chân có chế độ pull_up resistors - Giao tiếp SPI - Giao diện I2C - Có kênh ADC 10 bit - so sánh analog - kênh PWM - timer/counter bit, timer/counter1