Thiết kế hệ thống ghép nối máy tính đo lường nhiều kênh

59 35 0
Thiết kế hệ thống ghép nối máy tính đo lường nhiều kênh

Đ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

MỤC LỤC LỜI MỞ ĐẦU CHƯƠNG TÌM HIỂU VỀ VI ĐIỀU KHIỂN AVR ATMEGA32 1.1 ĐẶT VẤN ĐỀ 1.2 CẤU TRÚC VI ĐIỀU KHIỂN ATMEGA32 .2 1.2.1 Cấu trúc tổng quát ATMEGA32 1.2.2 Một số đặc trưng 1.3 TỔNG QUAN AVR 1.3.1 ALU – Arithmetic Logic Unit 1.3.2 Thanh ghi trạng thái – Status Register 1.3.3 Tập ghi làm việc đa 1.3.4 Con trỏ ngăn xếp – Stack Pointer (SP) 10 1.3.5 Xử lý reset ngắt – Reset and Interrupt Handling 11 1.4 TỔ CHỨC BỒ NHỚ TRONG ATMEGA32 – AVR ATMEGA32 .13 1.4.1 Hệ thống nhớ lập trình lại Flash 13 1.4.2 Bộ nhớ liệu SRAM 13 1.4.3 Bộ nhớ liệu EEPROM 14 1.5 MÔ TẢ THANH GHI - THANH GHI ĐIỀU KHIỂN NGẮT THÔNG THƯỜNG 14 1.6 I/O PORT 15 1.6.1 Port với chức IO thông thường .15 1.6.2 Mô tả ghi I/O Port 16 1.7 NGẮT NGOÀI - EXTERNAL INTERRUPTS 17 1.7.1 Thiết lập kiểu ngắt – Interrupt Sense Control 17 1.7.2 Cho phép ngắt – Interrupt Request Enable 18 1.7.3 Cờ ngắt – Interrupt Flag 18 1.8 BỘ ĐỊNH THỜI 8BIT TIMER/COUNTER 18 1.8.1 Hoạt động Timer/Couter 19 1.8.2 Đơn vị đếm 21 1.8.3 Đơn vị so sánh ngõ 21 1.9 BỒ ĐỊNH THỜI/ĐẾM TIMER/COUNTER 16-BIT 22 1.9.1 Sơ đồ khối số đặc điểm .22 1.9.2 Một số định nghĩa 23 1.10 SPI (SERIAL PERIPHERAL INTERFACE) 23 1.10.1 Sơ đồ định nghĩa .23 1.11 BỘ SO SÁNH TƯƠNG TỰ (ALALOG COMPARATOR) .25 1.12 HỆ THỐNNG XUNG CLOCK 27 1.13 BỘ BIẾN ĐỔI A/D 28 CHƯƠNG GIAO TIẾP QUA CỔNG COM 31 2.1 GIỚI THIỆU 31 2.2 ƯU ĐIỂM CỦA GIAO DIỆN NỐI TIẾP RS232 32 2.3 NHỮNG ĐẶC ĐIỂM CẦN LƯU Ý TRONG CHUẨN RS232 32 2.4 CÁC MỨC ĐIỆN ÁP ĐƯỜNG TRUYỀN 32 2.5 CỔNG RS232 TRÊN PC 33 2.6 QUÁ TRÌNH DỮ LIỆU .34 CHƯƠNG THIẾT KẾ HỆ THỐNG GHÉP NỐI MÁY TÍNH ĐO LƯỜNG NHIỀU KÊNH 36 3.1 THIẾT KẾ HỆ THỐNG .36 3.2 XÂY DỰNG CHƯƠNG TRÌNH PHẦN MỀM 47 3.2.1 Chương trình cho PC 47 3.2.2 Chương trình viết cho vi điều khiển 52 KẾT LUẬN 56 TÀI LIỆU THAM KHẢO 57 LỜI MỞ ĐẦU Ngành công nghệ điện tử phát triển nhanh ngày nhiều sản phẩm xuất đời sống, sản xuất hay thị trường nhằm giúp cho người cải thiện chất lượng sống Trong q trình cơng nghiệp hóa đại hóa ngày nay, vấn đề cần thiết phải áp dụng công nghệ tự động vào trình sản xuất quản lý nhằm nâng cao suất làm việc công nhân Trên tình thần em chọn đề tài “Thiết kế hệ thống ghép nối máy tính đo lường nhiều kênh” làm đồ án tốt nghiệp Trong trình nhận đề tài với nỗ lực thân giúp đỡ tận tình thầy Nguyễn Văn Dương, em hoàn tất xong đồ án Tuy nhiên thời gian kinh nghiệm thân có hạn nên đồ án khơng tránh sai sót, em mong đóng góp ý kiến bảo thầy cô bạn Cuối em xin chân thành cảm ơn thầy cô giáo khoa Điện Điện tử trường Đại Học Dân Lập Hải Phòng tạo điều kiện giúp đỡ để em hoàn thành đồ án Đặc biệt em xin chân thành cảm ơn Nguyễn Văn Dương giảng viên hướng dẫn tận tình hướng dẫn bảo em suốt trình học trường thời gian làm đồ án vừa qua Sinh Viên CHƯƠNG TÌM HIỂU VỀ VI ĐIỀU KHIỂN AVR ATMEGA32 1.1 Đặt vấn đề Trên thị trường có hàng trăm loại vi xử lý vi điều khiển việc lựa chọn loại cụ thể phù hợp với ứng dụng ta trở thành cơng việc khó khăn Thơng thường việc lựa chọn phụ thuộc vào số yếu tố như: tính cơng việc, giá thành, thị trường, khả thiết kế, Nếu xét phương diện giá thành họ vi điều khiển AVR có giá thành cao gấp nhiều lần so với vi điều khiển loại cũ 89C51, xét phương diện chức ứng dụng giá thành AVR lại rẻ nhiều Để có chức AVR 89C51 cần nhiều mạch hỗ trợ bên ngoài, giá thành mạch bên làm tăng giá thành chung kích cỡ mạch, cơng suất tiêu thụ tăng lên nhiều Ngược lại, với AVR tích hợp nhiều thành phần ngoại vi vỏ chip nên kết cấu mạch nhỏ gọn nhiều theo giá thành cơng suất tiêu thụ giảm Ngày ứng dụng điện tử điều khiển đòi hỏi phải thật nhỏ gọn có trình độ cơng nghệ cao Người làm kĩ thuật ln ln tìm tịi, khám phá thành tựu cơng nghệ Vì lý trên, em định chọn họ vi điều khiển AVR mà cụ thể vi điều khiển ATMEGA32 làm dối tượng nghiên cứu phục vụ cho đề tài 1.2 Cấu trúc vi điều khiển ATMEGA32 1.2.1 Cấu trúc tổng quát ATMEGA32 ATMEGA32 loại vi điều khiển CMOS, nguồn thấp, bit, xây dựng tảng cấu trúc tập lệnh thu gọn tiên tiến cho AVR RISC – Reduced Instruction Set Computer CISC – Complex Instruction Set Computer Khả thực thi 1MIPS (Mega Instruction Per Second) 1MHz Bao gồm 32 ghi làm việc (General Purpose Working Register) liên kết trực tiếp với xử lý số học ALU (Arithmetic Logic Unit) Hình 1.1 Sơ đồ khối vi điều khiển ATMEGA32 Atmega32 có tính sau: 32K byte Flash có khả lập trinh tương thích hoạt động Read-While-Write 1024 byte EEPROM 2K byte SRAM 32 cổng xuất nhập đa dụng Tính On-chip debug Ngõ JTAG Timer/Counter Internal External Interrupt USART TWI kênh ADC 10-bit Watch_dog timer với dao động on_chip riêng biệt SPI Tính ISP thơng qua cổng SPI Boot Loader Hình 1.2 Sơ đồ chân Atmega32 + VCC: Điện áp nguồn nuôi + GND: Nối mass + PortA (PA7…PA0): PortA nhận vào tín hiệu tương tự (Analog) chuyển đổi thành tín hiệu số (Digital) Ngồi PortA tách làm vào/ra hướng bits chuyển đổi A/D không sử dụng Khi chân PA0 đến PA7 lối vào đặt xuống chế độ thấp từ bên ngồi, chúng nguồn dịng điện trở nối lên nguồn dương kích hoạt Các chân PortA vào trạng thái có điện trở cao tín hiệu Reset chế độ tích cực khơng có tín hiệu xung đồng hồ Port A cung cấp đường địa chỉ/dữ liệu vào/ra hoạt động theo kiểu đa hợp kênh dùng nhớ SRAM bên + PortB, D: tương tự PortA + PortC (PC7…PC0): tương tự PortA Nhưng cho phép giao diện JTAG, chân PC5, PC3, PC2 hoạt động reset lại tín hiệu + Reset: Lối vào đặt lại Bộ vi điều khiển đặt lại chân chế độ thấp 50ns, xung ngắn khơng tạo tín hiệu đặt lại + XTAL1: Lối vào khuếch đại đảo lối vào mạch tạo xung nhịp bên + XTAL2: Lối khuếch đại đảo: XTAL1 XTAL2 lối vào lối khuếch đại đảo Bộ khuếch đại bố trí để làm tạo dao động chip Một tinh thể thạch anh cộng hưởng gốm sử dụng Để điều khiển vi điều khiển từ nguồn xung nhịp bên ngoài, chân XTAL2 để trống, chân XTAL1 nối với dao động bên ngồi + AREF: Là chân chuyển đổi tín hiệu analog cho chuyển đổi A/D + AVCC: Là chân nguồn cho PortA cho chuyển đổi A/D Nó tự kết nối với nguồn ADC không sử dụng 1.2.2 Một số đặc trưng Hoạt động: Các lệnh chứa nhớ chương trình Flash Memory dạng ghi 16 bit Bộ nhớ chương trình truy cập chu kỳ xung Clock lệnh chứa Program memory nạp vào ghi lệnh (instruction Register), ghi lệnh tác động lựa chọn tệp ghi RAM cho ALU thực thi Trong thực thi chương trình, địa dịng lệnh thực thi định đếm chương trình – PC (Program Counter) AVR có ưu điểm hầu hết lệnh thực thi chu kỳ xung nhịp, mà số trường hợp dù nguồn clock AVR nhỏ số loại vi điều khiển khác (như PIC) thời gian thực thi nhanh Hình 1.3 Cấu trúc bên AVR 1.3 Tổng quan AVR Lõi AVR sử dụng kiến trúc Harvard – với bus riêng biệt cho chương trình liệu Lệnh từ nhớ chương trình thực thi thơng qua ống đơn cấp Khi lênh thực thi, lệnh nhốt (pre-fetch) từ nhớ chương trình, cho phép lệnh thực thi chu kì clock Các 32 ghi (8-bit) làm việc cho phép truy xuất nhanh chu kỳ clock Trong hoạt động thơng thường ALU, tốn hạng xuất từ ghi làm việc, lệnh thực thi, kết lưu ngược lại ghi làm việc chu kì clock số 32 ghi dùng trỏ địa gián tiếp 16bit sử dụng cho địa không gian liệu ghi địa dùng trỏ địa look-up table nhớ Flash Bộ ALU hỗ trợ hoạt động tính tốn số học logic ghi với nhau, hay ghi với số Các hoạt động ghi đơn thực ALU Sau tính tốn, ghi trạng thái (Status Register) cập nhật thông tin liên quan đến kết tính tốn Dịng chương trình (Program Flow) cung cấp lệnh nhảy có điều kiện khơng điều kiện, định địa chì trực tiếp đến tồn khơng gian địa Hầu hết lệnh AVR dạng 16-bit Mỗi địa nhớ chương trình chứa lệnh 16 32-bit Bộ nhớ chương trình chia làm phần: Boot Loader vùng ứng dụng Cả sử dụng lockbit để bảo vệ đọc/ghi Lệnh SPM thực thi việc ghi liệu vào vùng flash ứng dụng phải đặt vùng Boot Loader Trong trình ngắt hay hàm/chương trình gọi, địa trả đếm chương trình lưu ngăn xếp (stack) Stack phân bồ hiệu phần nhớ SRAM, vậy, độ lớn stack phụ thuộc vào SRAM việc sử dụng SRAM Chương trình người dùng cần phải khởi tạo giá trị cho SP – Con trỏ ngăn xếp (Stack Pointer) chương trình sau reset trước thực việc gọi hàm hay chương trình ngắt thực thi Module ngắt linh hoạt có ghi điều khiển riêng khơng gian IO có bit cho phép ngắt toàn cục ghi trạng thái (Status Register) Tất ngắt có vector ngắt riêng bảng vector ngắt Các ngắt có ưu tiên ngắt theo vị trí ngắt Địa ngắt thấp độ ưu tiên ngắt cao 1.3.1 ALU – Arithmetic Logic Unit Bộ ALU hiệu suất cao AVR hoạt động liên kết trực tiếp với 32 ghi làm việc Trong chu kì clock, hoạt động tính tốn số học ghi ghi với liệu trực tiếp thực thi Hoạt động ALU chia làm phần chính: xử lý số học, phép tốn logic phép toán với bit Một số bổ sung kiến trúc cho phép sử dụng nhân tử hiệu quả, cho khơng dấu/có dấu định dạng phân số 1.3.2 Thanh ghi trạng thái – Status Register Thanh ghi chứa kết liên quan đến lệnh xử lý số học gần Kết chứa ghi sử dụng để thực hoạt động có điều kiện Thanh ghi trạng thái không tự động lưu lại nhảy vào interrupt không tự động phục hồi (restore) quay về, cần thực điều phần mềm  Bit 7-I : cho phép ngắt tồn cục Khơng cho phép người sử dụng tự ý xóa Chỉ bị xóa có ngắt xuất dẫn RETI cho ngắt Có thể đặt xóa SEI CLI  Bit 6-T : bit lưu trữ Có thể chép từ BST sang BLD ngược lại Hình 3.5 Giao diện SPI Mỗi chip Master hay Slave có ghi liệu bits Cứ xung nhịp Master tạo đường giữ nhịp SCK, bit ghi liệu Master truyền qua Slave đường MOSI, đồng thời bit ghi liệu chip Slave truyền qua Master đường MISO Do gói liệu chip gởi qua lại đồng thời nên trình truyền liệu gọi “song cơng” Hình 3.6 mơ tả q trình truyền gói liệu thực module SPI AVR, bên trái chip Master bên phải Slave Hình 3.6 Truyền liệu SPI Cực xung giữ nhịp, phase chế độ hoạt động: cực xung giữ nhịp (Clock Polarity) gọi tắt CPOL khái niệm dùng trạng thái 43 chân SCK trạng thái nghỉ Ở trạng thái nghỉ (Idle), chân SCK giữ mức cao (CPOL=1) thấp (CPOL=0) Phase (CPHA) dùng để cách mà liệu lấy mẫu (sample) theo xung giữ nhịp Dữ liệu lấy mẫu cạnh lên SCK (CPHA=0) cạnh xuống (CPHA=1) Sự kết hợp SPOL CPHA làm nên chế độ hoạt động SPI Nhìn chung việc chọn chế độ không ảnh hưởng đến chất lượng truyền thông mà cốt cho có tương thích Master Slave Các gói SPI cho chuyển đổi ADC MCP3204 tạo thành từ 3byte: Byte Trong byte này, Master ghi chuỗi bit: '0' '0' '0' '0' '0' '1' 'S' 'D2' Byte Trong byte này, Master ghi theo trình tự: 'D1' 'D0' 'X' 'X' 'X' 'X' 'X 'X' Trong D2, D1, D0 lựa chon kênh tín tiệu tương tự vào D2 D1 D0 Channel 0 0 Channel 0 Channel Channel 1 Và Slaver trả theo trình tự: '?' '?' '?' 'N' 'B11' 'B10' 'B9' 'B8' Trong ? bit khơng xác định 'N' bit rỗng “0” 44 Byte Trong byte này, Master ghi byte không vào slave Trong thời gian, Slaver trả giá trị chuyển đổi bit B0 tới B7 * Khối Vi điều khiển Thực giao tiếp với ADC MCP3204 theo chuẩn SPI để nhận giá trị đo lường giao tiếp với máy tính theo chuẩn RS232 để nhận tín hiệu điều khiển từ máy tính truyền liệu Ở em sử dụng vi điều khiển AVR Atmega32 * Khối giao tiếp cổng COM Có nhiều mạch giao chuẩn RS232 máy tính thiết bị khác Ở em dùng mạch chuẩn giao tiếp RS232 với IC Max232 Max232 IC chuyên dùng cho giao tiếp RS232 thiết bị ngoại vi Max232 IC hãng Maxim Đây IC chay ổn định sử dụng phổ biến mạch giao tiếp chuẩn RS232 Giá thành Max232 phù hợp tích hợp hai kênh truyền cho chuẩn RS232 Dịng tín hiệu thiết kế cho chuẩn RS232 Mỗi đầu truyền cổng nhận tín hiệu bảo vệ chống lại phóng tĩnh điện Ngồi Max232 cịn thiết kế với nguồn +5V cung cấp nguồn công suất nhỏ Mạch giao tiếp hình 3.7 Hình 3.7 Sơ đồ giao tiếp RS 232 dùng MAX 232 45 - Vi maïch MAX 232 có nhiệm vụ chuyển đổi mức TTL lối vào thành mức +3…+15V -3…-15V thành mức TTL phía nhận hay mức +10V –10V phía truyền - Vi mạch MAX 232 có hai đệm hai nhận Đường dẫn điều khiển lối vào CTS, điều khiển việc xuất liệu cổng nối tiếp cần thiết, nối với chân vi mạch MAX 232 Còn chân RST (chân 10 vi mạch MAX ) nối với đường dẫn bắt tay để điều khiển trình nhận Thường đường dẫn bắt tay nối với cổng nối tiếp qua cầu nối, để không dùng đến hở mạch cầu Cách truyền liệu đơn giản dùng ba đường dẫn TxD, RxD GND (mass) * Mạch ngun lý Hình 3.8 Mạch nguyên lý giao tiếp máy tính vi điều khiển 46 3.2 Xây dựng chương trình phần mềm 3.2.1 Chương trình cho PC Chương trình viết Visual Basic, có giao diện hình 3.9 Hình 3.9 Giao diện chương trình đo lường nhiều kênh * Lưu đồ thuật toán Begin Đặt chế độ đo lường Đọc liệu từ thiết bị - Tính tốn, hiển thị - Lưu liệu vào file Tiếp tục? False Begin 47 True * Mã chương trình Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) Dim Inputuart As String Private Sub Check1_Click() End Sub Private Sub Command1_Click() End End Sub Private Sub Command2_Click() Timer1.Enabled = True End Sub Private Sub Command3_Click() Timer1.Enabled = False End Sub Private Sub Command4_Click() Me.MSComm1.Output = Chr(0) End Sub Private Sub Command5_Click() Me.MSComm1.Output = Chr(1) End Sub Private Sub Command6_Click() 48 Me.MSComm1.Output = Chr(2) End Sub Private Sub Command7_Click() Me.MSComm1.Output = Chr(3) End Sub Private Sub Form_Load() MSComm1.CommPort = MSComm1.Settings = "9600,N,8,1" Me.MSComm1.RThreshold = MSComm1.InputLen = MSComm1.PortOpen = True Check1.Value = Check2.Value = Check3.Value = Check4.Value = End Sub Private Sub MSComm1_OnComm() Dim InputText As String If Me.MSComm1.CommEvent = comEvReceive Then InputText = MSComm1.Input txtOutput.Text = txtOutput.Text + InputText 49 txtOutput.SelStart = Len(txtOutput.Text) Sleep (50) End If End Sub Private Sub Text1_Change() End Sub Private Sub Text5_Change() End Sub Private Sub txtInput_Change() End Sub Private Sub txtInput_KeyPress(KeyAscii As Integer) Me.MSComm1.Output = Chr(Key) End Sub Private Sub txtOutput1_Change() End Sub Private Sub Timer1_Timer() If Check1.Value = Then Me.MSComm1.Output = Chr(0) End If If Check2.Value = Then 50 Me.MSComm1.Output = Chr(1) End If If Check3.Value = Then Me.MSComm1.Output = Chr(2) End If If Check4.Value = Then Me.MSComm1.Output = Chr(3) End If If (Check1.Value = 0) And (Check2.Value = 0) And (Check3.Value = 0) And (Check4.Value = 0) Then txtOutput.Text = "Ban hay chon mot kenh!" End If End Sub Dim FileNum As Integer RecordLen = Len(dataArray(1)) FileNum = FreeFile Open "Data.Dat" For Random As FileNum Len = RecordLen For i = To sampleSize - dataArray(i) = 10 * Sin(10 * 3.1415 * i / sampleSize) Put #FileNum, i, dataArray(i) Next i End Sub 51 3.2.2 Chương trình viết cho vi điều khiển * Lưu đồ gải thuật cho vi điều khiển Start Khởi động Timer0, Timer1 Đặt giá trị ban đầu Cờ truyền Flag=0 Cho phép VĐK truyền Y - Nhận liệu đo xử lý phù hợp - Truyền liệu Flag=1 Y Flag=0? Y N VĐK truyền? N N Time out Cho phép PC truyền N Time out PC truyền? Y Y Nhận data, điều khiển chọn kênh đo Flag=0 N 52 * Mã chương trình #include #include #include #include #include "adc_ex.h" void uart_char_tx(unsigned char chr) { if (chr == '\n') uart_char_tx('\r'); while (bit_is_clear(UCSRA,UDRE)) { //cho den bit UDRE=1 } UDR=chr; } static FILE uartstd= FDEV_SETUP_STREAM(uart_char_tx, NULL,_FDEV_SETUP_WRITE); uint16_t result; unsigned char u_Data; 53 int main(void) { //Initialize External ADC Module InitADCEx(); //Khoi dong Module Uart //set baud, 57.6k ung voi f=8Mhz, xem bang 70 trang 165, Atmega32 datasheet UBRRH=0; UBRRL=103; //set khung truyen va kich hoat bo nhan du lieu UCSRA=0x00; UCSRC=(1

Ngày đăng: 29/09/2020, 19:14

Tài liệu cùng người dùng

Tài liệu liên quan