THIẾT KẾ HỆ THỐNG

Một phần của tài liệu Thiết kế hệ thống ghép nối máy tính đo lường nhiều kênh (Trang 38)

Sơ đồ khối hệ thống nhƣ trong hỡnh 3.1.

Hỡnh 3.1. Sơ đồ khối hệ thống ghộp nối mỏy tớnh đo lƣờng nhiều kờnh Tớn hiệu từ cỏc kờnh đo lƣờng dƣới dạng là cỏc điện ỏp tƣơng tự, đƣợc cho qua bộ ADC để chuyển thành tớn hiệu số. Vi điều khiển ở đõy đảm nhận nhiệm vụ nhận dữ liệu từ ADC và thực hiện giao tiếp với mỏy tớnh theo chuẩn RS232. Mỏy tớnh nhận dữ liệu về, thực hiện hiển thị và lƣu trữ.

* Khối ADC

Thực hiện chuyển đổi cỏc mẫu điện ỏp tƣơng tự sang điện ỏp số. Gọi tớn hiệu tƣơng tự là UA, thỡ tớn hiệu số là UD đƣợc biểu diễn dƣới dạng mĩ nhị phõn nhƣ:

UD=bn-1.2n-1+bn-2.2n-2+…+b020

(3.1)

Trong đú cỏc hệ số bk là cỏc bớt của số nhị phõn. Bớt bn-1 đƣợc gọi là bit cú ý nghĩa lớn nhất (MSB), mỗi biến đổi giỏ trị của MSB tƣơng ứng với sự biến đổi của tớn hiệu là nửa dải làm việc. Bit b0 gọi là bit cú ý nghĩa nhỏ nhất (LSB), mỗi biến đổi giỏ trị của LSB tƣơng ứng với một mức lƣơng tử .

PC COM ADC VI ĐIỀU KHIỂN Tớn hiệu từ cỏc kờnh đo lƣờng Giao tiếp COM

Với một mạch biến đổi cú N bit đầu ra thỡ mỗi bƣớc của bậc thang tƣơng ứng một giỏ trị: 1 2 U U Q N Am LSB (3.2)

Trong đú, UAM là giỏ trị cực đại cho phộp cho phộp của điện ỏp đầu vào ADC. Q hoặc ULSB gọi là mức lƣợng tử. Do tớn hiệu số là rời rạc nờn trong quỏ trỡnh biến đổi AD xuất hiện một sai số gọi là sai số lƣợng tử húa đƣợc xỏc định nhƣ sau:

Q 2 1

Q (3.3)

Khi chuyển đổi AD phải thực hiện lấy mẫu tớn hiệu tƣơng tự. Để đảm bảo khụi phục lại tớn hiệu một cỏch trung thhực thỡ tần số lấy mẫu fM phải thỏa mĩn điều kiện:

fM≥2.fAmax (3.4) Trong đú, fAmax là tần số cực đại của tớn hiệu đầu vào

Quỏ trỡnh biến đổi A/D gồm 3 bƣớc: lấy mẫu, lƣợng tử húa và mĩ húa.

Hỡnh 3.2 Sơ đồ khối quỏ trỡnh chuyển đổi A/D - Lấy mẫu: Mạch lấy mẫu cú hai nhiệm vụ:

+ Lấy mẫu tớn hiệu tƣơng tự tại cỏc thời điểm khỏc nhau và cỏch đều nhau (rời rạc húa về mặt thời gian).

+ Giữ cho biờn độ điện ỏp tại cỏc thời điểm lấy mẫu khụng đổi trong suốt quỏ trỡnh chuyển đổi tiếp theo.

Lấy mẫu Lƣợng tử hoỏ Mĩ hoỏ UA ADC UD

- Lƣợng tử hoỏ: là quỏ trỡnh rời rạc cỏc mẫu về biờn độ. Chia khoảng biờn độ thành cỏc mức rời rạc gọi là cỏc mức lƣợng tử, biờn độ của cỏc mẫu đƣợc làm trũn về cỏc mức lƣợng tử đú.

- Mĩ hoỏ: Mĩ hoỏ cỏc mẫu sau khi đƣợc lƣợng tử hoỏ thành cỏc bits số.

Tổng quỏt ta cú cụng thức chuyển đổi A/D đối với mỗi mẫu tớn hiệu tƣơng tự: N ref Ai Di .2 U U Round U (3.5)

UAi: Điện ỏp tƣơng tự của mẫu thứ i

Uref: Điện ỏp tham chiếu (điện ỏp chuẩn cố định), dựng để so sỏnh với UAi tạo điện ỏp số.

UDi: Điện ỏp số ứng với mẫu UAi

UD

UA

Sai số lệch khụng 1/2 LSB

Sai số đơn điệu

Sai số khuyếch đại mộo phi tuyến Lý tƣởng (adsbygoogle = window.adsbygoogle || []).push({});

Thực

Hỡnh 3.3. Đặc tuyến truyền đạt lý tƣởng và thực của bộ chuyển đổi A/D

ở đõy yờu cầu UA≤Uref, nờn ta phải lựa chọn Uref thớch hợp với mỗi tớn hiệu UA. Với mỗi giỏ trị N, thỡ Uref càng lớn thỡ sai số lƣợng tử càng lớn. Với mỗi giỏ trị Uref thỡ N càng lớn thỡ sai số lƣợng tử càng nhỏ.

Cỏc tham số chớnh của bộ chuyển đổi A/D

- Dải biến đổi của điện ỏp tớn hiệu tƣơng tự ở đầu vào: là khoảng điện ỏp mà bộ chuyển đổi A/D cú thể thực hiện chuyển đổi đƣợc.Khoảng điện ỏp đú cú thể lấytrị số từ 0 đến một trị số dƣơng hay õm nào đú hoặc cú thể là điện ỏp hai cực tớnh

- Độ chớnh xỏc của bộ chuyển đổi A/D: Tham số đầu tiờn đặc trƣng cho độ chớnh xỏc của một ADC là độ phõn biệt.Trờn đầu ra mỗi bộ ADC là cỏc giỏ trị số đƣợc sắp xếp theo quy luật của một loại mĩ nào đú. Số cỏc số hạng của mĩ số ở đầu ra (số bits trong mĩ nhị phõn) tƣơng ứng với dải biến đổi của điện ỏp vào cho biết mức chớnh xỏc của phộp chuyển đổi. Một ADC cú N bit đầu ra thỡ nú cú thể phõn biệt đƣợc 2N

mức trong dải biến đổi của nú. Độ phõn biệt của một ADC là Q, nú chớnh là giỏ trị của một mức lƣợng tử húa hoặc cũn gọi là 1 LSB. Trong thực tế thƣờng dựng số bit N ở đầu ra để đặc trƣng cho độ chớnh xỏc với cựng một dải điện ỏp vào số cỏc số hạng của mĩ số ở đầu ra càng lớn thỡ độ chớnh xỏc càng cao.

Ngồi ra đặc trƣng cho tớnh chớnh xỏc của ADC cũn cú cỏc tham số khỏc, đú là :

+ Đƣờng đặc tuyến cú sai số lệch khụng, nghĩa là nú khụng xuất phỏt tại giỏ trị tƣơng ứng là 1/2 LSB. Nú là hỡnh bậc thang khụng đều do ảnh hƣởng của cỏc sai số.

+ Sai số khuyếch đại là sai số giữa độ dốc trung bỡnh của đƣờng đặc tuyến thực với độ dốc trung bỡnh của đƣờng đặc tuyến lý tƣởng.

+ Sai số phi tuyến đƣợc đặc trƣng bởi sự thay đổi độ dốc đƣờng trung bỡnh của đặc tuyến thực trong dảI biến đổi của của điện ỏp vào. Sai số này làm cho đặc tuyến chuyển đổi cú dạng hỡnh bậc thang khụng đều.

+ Sai số đơn điệu thực chất cũng do tớnh phi tuyến của đƣờng đặc tớnh biến đổi gõy ra, nhƣng nú làm cho độ dốc đƣờng trung bỡnh biến thiờn khụng đơn điệu, thậm chớ mất một vài mĩ mĩ số.

- Tốc độ chuyển đổi: Tốc độ chuyển đổi cho biết số mẫu chuyển đổi trong 1 giõy, đƣợc gọi là tần số chuyển đổi fc. Cũng cú thể dựng tham số thời gian chuyển đổi Tc để đặc trƣng cho tốc độ chuyển đổi. Vỡ giữa cỏc lần chuyển đổi cũn cú một khoảng thời gian cần thiết để cho ADC phục hồi lại trạng thỏi ban đầu, nờn thƣờng fc<1/Tc, ở đõy với một bộ ADC tốc độ cao thỡ phải trả giỏ bằng độ chớnh xỏc giảm hoặc ngƣợc lại.

Cỏc phương phỏp biến đổi số tương tự

Cú nhiều cỏch phõn loại cỏc phƣơng phỏp biến đổi số tƣơng tự. Trong đú cú cỏch phõn loại theo quỏ trỡnhchuyển đổi về mặt thời gian, theo cỏch phõn loại này cú bốn phƣơng phỏp biến đổi A/D:

- Biến đổi song song: trong phƣơng phỏp này, tớn hiệu đƣợc so sỏnh cựng một lỳc với nhiều giỏ trị chuẩn. Do đú, tất cả cỏc bớt đƣợc xỏc định đồng thời và đƣa đến đầu ra.

- Biến đổi nối tiếp theo mĩ đếm: quỏ trỡnh so sỏnh đƣợc thực hiện lần lƣợt từng bƣớc theo quy luật của mĩ đếm. Kết quả chuyển đổi đƣợc xỏc định bằng cỏch đếm số lƣợng giỏ trị chuẩn cú thể chứa đƣợc trong giỏ trị tớn hiệu tƣơng tự cần chuyển đổi.

- Biến đổi nối tiếp theo mĩ nhị phõn: quỏ trỡnh so sỏnh đƣợc thực hiện lần lƣợt từng bƣớc theo qui luật của mĩ nhị phõn. Cỏc đơn vị chuẩn dựng để so sỏnh lấy cỏc giỏ trị giảm dần theo quy luật của mĩ nhi phõn. Do đú cỏc bớt đƣợc xỏc định lần lƣợt theo từ bớt cú ý nghĩa lớn nhất đến bớt cú ý nghĩa nhỏ nhất.

- Biến đổi song song - nối tiếp kết hợp: trong phƣơng phỏp này, qua mỗi bƣớc so sỏnh cú thể xỏc định đƣợc tối thiểu là hai bớt đồng thời.

Sử dụng bộ chuyển đổi trong hệ thống

Trong hệ thống ở đõy ta sử dụng IC chuyển đổi 12 bits MCP3204 cú sơ đồ chõn nhƣ trong hỡnh 3.4.

Hỡnh 3.4. Sơ đồ chõn IC MPC3204

CH0 : Kờnh tớn hiệu tƣơng tự vào 0

CH1 : Kờnh tớn hiệu tƣơng tự vào 1

CH2 : Kờnh tớn hiệu tƣơng tự vào 2

CH3 : Kờnh tớn hiệu tƣơng tự vào 3

N/C : khụng nối.

DGND : Digital Ground.

CS: Chọn chớp.

Din : Kết nối tới AVRs MOSI (adsbygoogle = window.adsbygoogle || []).push({});

Dout : Kết nối tới AVRs MISO

CLK : Kết nối tới AVRs SCK

Agnd : Analog Ground

Vref : Điện ỏp so sỏnh.

IC MCP3204 thực hiện giao tiếp theo chuẩn SPI (Serial Peripheral Bus) là một chuẩn truyền thụng nối tiếp tốc độ cao do hĩng Motorola đề xuất. Đõy là kiểu truyền thụng Master-Slave, trong đú cú 1 chip Master điều phối quỏ trỡnh tuyền thụng và cỏc chip Slaves đƣợc điều khiển bởi Master vỡ thế truyền thụng chỉ xảy ra giữa Master và Slave. SPI là một cỏch truyền song cụng (full duplex) nghĩa là tại cựng một thời điểm quỏ trỡnh truyền và nhận cú thể xảy ra đồng thời. SPI đụi khi đƣợc gọi là chuẩn truyền thụng “4 dõy” vỡ cú 4 đƣờng giao tiếp trong chuẩn này đú là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Ouput Slave Input) và SS (Slave Select). Hỡnh 1 thể hiện một kết SPI giữa một chip Master và 3 chip Slave thụng qua 4 đƣờng.

SCK: Xung giữ nhịp cho giao tiếp SPI, vỡ SPI là chuẩn truyền đồng bộ nờn cần 1 đƣờng giữ nhịp, mỗi nhịp trờn chõn SCK bỏo 1 bit dữ liệu đến hoặc đi. Đõy là điểm khỏc biệt với truyền thụng khụng đồng bộ mà chỳng ta đĩ biết trong chuẩn UART. Sự tồn tại của chõn SCK giỳp quỏ trỡnh tuyền ớt bị lỗi và vỡ thế tốc độ truyền của SPI cú thể đạt rất cao. Xung nhịp chỉ đƣợc tạo ra bởi chip Master. MISO– Master Input / Slave Output: nếu là chip Master thỡ đõy là đƣờng Input cũn nếu là chip Slave thỡ MISO lại là Output. MISO của Master và cỏc Slaves đƣợc nối trực tiếp với nhau.

MOSI – Master Output / Slave Input: nếu là chip Master thỡ đõy là đƣờng Output cũn nếu là chip Slave thỡ MOSI là Input. MOSI của Master và cỏc Slaves đƣợc nối trực tiếp với nhau.

SS – Slave Select: SS là đƣờng chọn Slave cần giap tiếp, trờn cỏc chip Slave đƣờng SS sẽ ở mức cao khi khụng làm việc. Nếu chip Master kộo đƣờng SS của một Slave nào đú xuống mức thấp thỡ việc giao tiếp sẽ xảy ra giữa Master và Slave đú. Chỉ cú 1 đƣờng SS trờn mỗi Slave nhƣng cú thể cú nhiều đƣờng điều khiển SS trờn Master, tựy thuộc vào thiết kế của ngƣời dựng.

.

Hỡnh 3.5. Giao diện SPI.

Mỗi chip Master hay Slave cú một thanh ghi dữ liệu 8 bits. Cứ mỗi xung nhịp do Master tạo ra trờn đƣờng giữ nhịp SCK, một bit trong thanh ghi dữ liệu của Master đƣợc truyền qua Slave trờn đƣờng MOSI, đồng thời một bit trong thanh ghi dữ liệu của chip Slave cũng đƣợc truyền qua Master trờn đƣờng MISO. Do 2 gúi dữ liệu trờn 2 chip đƣợc gởi qua lại đồng thời nờn quỏ trỡnh truyền dữ liệu này đƣợc gọi là “song cụng”. Hỡnh 3.6. mụ tả quỏ trỡnh truyền 1 gúi dữ liệu thực hiện bởi module SPI trong AVR, bờn trỏi là chip Master và bờn phải là Slave.

Hỡnh 3.6. Truyền dữ liệu SPI.

Cực của xung giữ nhịp, phase và cỏc chế độ hoạt động: cực của xung giữ nhịp (Clock Polarity) đƣợc gọi tắt là CPOL là khỏi niệm dựng chỉ trạng thỏi của

chõn SCK ở trạng thỏi nghỉ. Ở trạng thỏi nghỉ (Idle), chõn SCK cú thể đƣợc giữ ở mức cao (CPOL=1) hoặc thấp (CPOL=0). Phase (CPHA) dựng để chỉ cỏch mà dữ liệu đƣợc lấy mẫu (sample) theo xung giữ nhịp. Dữ liệu cú thể đƣợc lấy mẫu ở cạnh lờn của SCK (CPHA=0) hoặc cạnh xuống (CPHA=1). Sự kết hợp của SPOL và CPHA làm nờn 4 chế độ hoạt động của SPI. Nhỡn chung việc chọn 1 trong 4 chế độ này khụng ảnh hƣởng đến chất lƣợng truyền thụng mà chỉ cốt sao cho cú sự tƣơng thớch giữa Master và Slave.

Cỏc gúi SPI cho chuyển đổi ADC MCP3204 đƣợc tạo thành từ 3byte:

Byte 1

Trong byte này, Master ghi 1 chuỗi bit: '0' '0' '0' '0' '0' '1' 'S' 'D2'

Byte 2

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 0 0 Channel 1 0 0 1 Channel 2 0 1 0 Channel 3 0 1 1 Và Slaver trả về theo trỡnh tự: '?' '?' '?' 'N' 'B11' 'B10' 'B9' 'B8' Trong đú ? là bit khụng xỏc định. 'N' là bit rỗng và luụn bằng “0”

Byte 3

Trong byte này, Master ghi 1 byte khụng vào slave.

Trong cựng thời gian, Slaver trả về giỏ trị chuyển đổi cỏc bit B0 tới B7.

* Khối Vi điều khiển

Thực hiện giao tiếp với ADC MCP3204 theo chuẩn SPI để nhận giỏ trị đo lƣờng và 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 và truyền dữ liệu về. Ở đõy em sử dụng vi điều khiển AVR Atmega32.

* Khối giao tiếp cổng COM

Cú rất nhiều mạch giao tiếp theo chuẩn RS232 giữa mỏy tớnh và cỏc thiết bị khỏc. Ở đõy em dựng mạch chuẩn giao tiếp RS232 với IC Max232.

Max232 là IC chuyờn dựng cho giao tiếp giữa RS232 và thiết bị ngoại vi. Max232 là IC của hĩng Maxim. Đõy là IC chay ổn định và đƣợc sử dụng phổ biến trong cỏc mạch giao tiếp chuẩn RS232. Giỏ thành của Max232 phự hợp và tớch hợp trong đú hai kờnh truyền cho chuẩn RS232. Dũng tớn hiệu đƣợc thiết kế cho chuẩn RS232. Mỗi đầu truyền ra và cổng nhận tớn hiệu đều đƣợc bảo vệ chống lại sự phúng tĩnh điện. Ngồi ra Max232 cũn đƣợc thiết kế với nguồn +5V cung cấp nguồn cụng suất nhỏ. Mạch giao tiếp nhƣ hỡnh 3.7.

- Vi mách MAX 232 coự nhieọm vú chuyeồn ủoồi mửực TTL ụỷ loỏi vaứo thaứnh mửực +3…+15V hoaởc -3…-15V thaứnh mửực TTL ụỷ phớa nhaọn hay mửực +10V hoaởc –10V ụỷ phớa truyền.

- Vi mách MAX 232 coự hai boọ ủeọm vaứ hai boọ nhaọn. ẹửụứng daĩn ủiều khieồn loỏi vaứo CTS, ủiều khieồn vieọc xuaỏt ra dửừ lieọu ụỷ coồng noỏi tieỏp khi cần thieỏt, ủửụùc noỏi vụựi chãn 9 cuỷa vi mách MAX 232. Coứn chãn RST (chãn 10 cuỷa vi mách MAX ) noỏi vụựi ủửụứng daĩn baột tay ủeồ ủiều khieồn quaự trỡnh nhaọn. Thửụứng thỡ caực ủửụứng daĩn baột tay ủửụùc noỏi vụựi coồng noỏi tieỏp qua caực cầu noỏi, ủeồ khi khõng duứng ủeỏn nửừa coự theồ hụỷ mách caực cầu naứy. Caựch truyền dửừ lieọu ủụn giaỷn nhaỏt laứ chổ duứng ba ủửụứng daĩn TxD, RxD vaứ GND (mass). (adsbygoogle = window.adsbygoogle || []).push({});

* Mạch nguyờn lý

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 đƣợc viết bằng Visual Basic, cú giao diện nhƣ trong 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

Tiếp tục?

Đọc dữ liệu từ thiết bị - Tớnh toỏn, hiển thị - Lƣu dữ liệu vào file

Begin

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

Me.MSComm1.Output = Chr(2) End Sub

Private Sub Command7_Click() Me.MSComm1.Output = Chr(3) End Sub

Private Sub Form_Load() MSComm1.CommPort = 4 MSComm1.Settings = "9600,N,8,1" Me.MSComm1.RThreshold = 1 MSComm1.InputLen = 1 MSComm1.PortOpen = True Check1.Value = 1 Check2.Value = 0 Check3.Value = 0 Check4.Value = 0 End Sub

Private Sub MSComm1_OnComm() Dim InputText As String

If Me.MSComm1.CommEvent = comEvReceive Then InputText = MSComm1.Input

txtOutput.SelStart = Len(txtOutput.Text) Sleep (50)

End If End Sub

Private Sub Text1_Change() End Sub (adsbygoogle = window.adsbygoogle || []).push({});

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 = 1 Then

Me.MSComm1.Output = Chr(0) End If

Me.MSComm1.Output = Chr(1) End If If Check3.Value = 1 Then Me.MSComm1.Output = Chr(2) End If If Check4.Value = 1 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 = 1 To sampleSize - 1

dataArray(i) = 10 * Sin(10 * 3.1415 * i / sampleSize) Put #FileNum, i, dataArray(i)

Next i End Sub

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.

Một phần của tài liệu Thiết kế hệ thống ghép nối máy tính đo lường nhiều kênh (Trang 38)