PHẦN 2: THIẾT KẾ MÁY ĐO ĐỘ ỒN CHƯƠNG 3: LINH KIỆN CHÍNH DÙNG CHO THIẾT KẾ
1. Kích thước của microphone
Hình 21: Kích thước của mic 65GC31T
Bảng 1: Các thông số kỹ thuật:
2. Đáp ứng tần số của microphone:
Hình 22: Đáp ứng tần số của mic 50GC30
3. Đặc tính nhiễu của microphone: là giá trị ghi nhận được khi microphone không
bị tác động bởi các yếu tố bên ngoài. Khi đo nhiễu người ta sẽ cách ly microphone trong một buồng kín, cách âm, cách ánh sáng, và từ trường ngoài.
Hình 23: Đặc tính nhiễu của mic 50GC30
Các thông số ảnh hưởng đến nhiễu là loại IC đệm, màng rung, bản tụ bị bẩn, mic bị xì.
II. Vi xử lý dùng ATMEGA8:
Nó là vi điều khiển có cấu trúc khá phức tạp, có đầy đủ chức năng của họ AVR. ATmega8159 là vi điều khiển CMOS 8bit công suất thấp trên nền kiến trúc kiểu RISC. Vào/ra: Analog - digital và có thể ngược lại. Bằng việc thực hiện câu lệnh trong một chu kỳ xung nhịp đơn, ATmega8159 đạt được một triệu phép tính trong 1 giây với tần số 1MHZ với tốc độ xử lý cao. Cấu trúc của ATmega8159 trong hình 1 gồm 512 Byte EEPROM với 100.000 lần viết/xoá. 512 Byte SRAM nội, hai bộ định thời 8bit và các chế độ chọn tần số xung nhịp riêng, một bộ định thời 16 bit và các chế độ chọn tần số xung nhịp riêng, 4 kênh PWM, 8 kênh ADC 10 bit, giao diện BUS hai dây truyền thông nối tiếp USART, giao diện nối tiếp SPI (Serial Peripheral Interface), bộ so sánh tương tự trên chip, bộ định thời watchog có thể lập trình được với mạch dao động riêng trên chíp. ATmega8159 khởi động khi bật nguồn, mạch dao động RC nội, các nguồn ngắt ngoại và nội, có 6 chế độ ngủ: IDLE, giảm nhiễu ADC, tiết kiệm năng lượng, Standby và Standby mở rộng(mạch dao động tiếp tục chạy khi ngoại vi duy trì standby cho phép khởi động
nhanh công suất tiêu thụ thấp). Điện áp hoạt động 4,5V - 5,5V, tần số hoạt động
từ 0 - 16 MHZ. Đặc biệt với vi điều khiển ATmega8159 là nhóm các lệnh làm việc với 32 thanh ghi đa năng nối trực tiếp với ALU đồng thời cho phép hai thanh ghi độc lập truy cập đồng thời trong một chu kỳ xung nhịp khi thực thi một lệnh.
Kiểu mã kết quả trả về hiệu quả hơn trong khi thời gian nhanh gấp 10 lần so với vi điều khiển kiểu CISC thông thường.
1. Cấu trúc ATmega8159
Sơ đồ chân ATMEGA8
Hình 24: Sơ đồ khối ATMEGA8
2. Bộ nhớ chương trình:
Program memory bus có độ rộng 16 bits và chỉ phục vụ cho thanh ghi lệnh (instruction). Là bộ nhớ Flash lập trình được bộ nhớ chương trình chỉ gồm 2 phần
là Application Flash Section và phần Boot Flash setion. Dung lượng của bộ nhớ chương trình là 8Kbytes
Hình 25: Cấu trúc bộ nhớ của ATMEGA8
Bộ nhớ dữ liệu: Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập
trình cho chip phần lớn là truy cập bộ nhớ này. Bộ nhớ dữ liệu có dung lượng khoảng 1632 bytes, về cơ bản phần bộ nhớ này được chia thành 5 phần:
Phần 1: là phần đầu tiên trong bộ nhớ dữ liệu, như mô tả trong hình 1, phần này
bao gồm 32 thanh ghi có tên gọi là register file (RF), hay General Purpose
Rgegister – GPR.
Phần 2: là phần nằm ngay sau register file, phần này bao gồm 64 thanh ghi được
gọi là 64 thanh ghi nhập/xuất (64 I/O register) hay còn gọi là vùng nhớ I/O (I/O Memory). Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi. Tất cả các thanh ghi điều khiển, trạng thái…của thiết bị ngoại vi đều nằm ở đây
Phần 3: RAM tĩnh, nội (internal SRAM), là vùng không gian cho chứa các biến
(tạm thời hoặc toàn cục) trong lúc thực thi chương trình, vùng này tương tự các thanh RAM trong máy tính nhưng có dung lượng khá nhỏ, 1KB.
Phần 4: RAM ngoại (external SRAM), các chip AVR cho phép người sử dụng
gắn thêm các bộ nhớ ngoài để chứa biến, vùng này thực chất chỉ tồn tại khi nào người sử dụng gắn thêm bộ nhớ ngoài vào chip
Phần 5: EEPROM (Electrically Ereasable Programmable ROM) là một phần quan
trọng của các chip AVR mới, vì là ROM nên bộ nhớ này không bị xóa ngay cả khi không cung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu. Phần bộ nhớ EEPROM được tách riêng và có địa chỉ tính từ 0x0000, nó có dung lượng 512 bytes.
3. Ngắt trên AVR
Interrupts, hay được gọi là ngắt, là một tín hiệu khẩn cấp gởi đến bộ xử lý, yêu cầu bộ xử lý tạm ngừng tức khắc các hoạt động hiện tại để “nhảy” đến một nơi khác thực hiện một nhiệm vụ khẩn cấp nào đó, nhiệm vụ này gọi là trình phục vụ ngắt – isr (interrupt service routine). Sau khi kết thúc nhiệm vụ trong isr, bộ đếm chương trình sẽ được trả về giá trị trước đó để bộ xử lý quay về thực hiện tiếp các nhiệm vụ còn dang dở. Như vậy, ngắt có mức độ ưu tiên xử lý cao nhất, ngắt thường được dùng để xử lý các sự kiện bất ngờ nhưng không tốn quá nhiều thời gian.
Hình dưới minh họa cách tổ chức ngắt thông thường trong các chip AVR
Hình 26: Các vector ngắt và Reset trên chip Atmega8.
Tổng quan các bộ Timer/Counter trên chip Atmega8:
Timer/Counter là các module độc lập với CPU. Chức năng chính của các bộ Timer/Counter, như tên gọi của chúng, là định thì (tạo ra một khoảng thời gian, đếm thời gian…) và đếm sự kiện. Trên các chip AVR, các bộ Timer/Counter còn có thêm chức năng tạo ra các xung điều rộng PWM (Pulse Width Modulation), ở một số dòng AVR, một số Timer/Counter còn được dùng như các bộ cân chỉnh thời gian (calibration) trong các ứng dụng thời gian thực. Các bộ Timer/Counter được chia theo độ rộng thanh ghi chứa giá trị định thời hay giá trị đếm của chúng, cụ thể trên chip Atmega8 có 2 bộ Timer 8 bit (Timer/Counter0 và Timer/Counter2) và 1 bộ 16 bit (Timer/Counter1). Chế độ hoạt động và phương pháp điều khiển của từng Timer/Counter cũng không hoàn toàn giống nhau, ví dụ ở chip Atmega8:
Timer/Counter0: là một bộ định thời, đếm đơn giản với 8 bit. Gọi là đơn giản vì
bộ này chỉ có 1 chế độ hoạt động (mode) so với 5 chế độ của bộ Timer/Counter1.
Chế độ hoạt động của Timer/Counter0 thực chất có thể coi như 2 chế độ nhỏ (và cũng là 2 chức năng cơ bản) đó là tạo ra một khoảng thời gian và đếm sự kiện.
Timer/Counter1: là bộ định thời, đếm đa năng 16 bit. Bộ Timer/Counter này có 5
chế độ hoạt động chính. Ngoài các chức năng thông thường, Timer/Counter1 còn được dùng để tạo ra xung điều rộng PWM dùng cho các mục đích điều khiển. Có thể tạo 2 tín hiệu PWM độc lập trên các chân OC1A (chân 15) và OC1B (chân 16) bằng Timer/Counter1.
Timer/Counter2: tuy là một module 8 bit như Timer/Counter0 nhưng
Timer/Counter2 có đến 4 chế độ hoạt động như Timer/Counter1, ngoài ra nó nó còn được sử dụng như một module canh chỉnh thời gian cho các ứng dụng thời gian thực (chế độ asynchronous).
Hình 27: Sơ đồ khối timer/counter 4. Chuyển đổi ADC trên AVR.
Chip AVR ATmega8 của Atmel có tích hợp sẵn các bộ chuyển đổi ADC với độ phân giải 10 bit. Có tất cả 8 kênh đơn (các chân ADC0 đến ADC7), 16 tổ hợp chuyển đổi dạng so sánh, trong đó có 2 kênh so sánh có thể khuếch đại. ADC trong AVR là loại chuyển đổi xấp xỉ lần lượt (successive approximation ADC).
ADC trên AVR cần được “nuôi” bằng nguồn điện áp riêng ở chân AVCC, giá trị điện áp cấp cho AVCC không được khác nguồn nuôi chip (VCC) quá +/-0.3V.
Nhiễu (noise) là vấn đề rất quan trọng khi sử dụng các bộ ADC, để giảm thiểu sai số chuyển đổi do nhiễu, nguồn cấp cho ADC cần phải được “lọc” kỹ. Một cách đơn giản để tạo nguồn AVCC là dùng một mạch LC kết nối từ nguồn VCC của chip như minh họa trong hình, đây là gợi ý bởi nhà sản xuất AVR
Hình 28: Tạo nguồn AVCC từ VCC
Điện áp tham chiếu cho ADC trên AVR có thể được tạo bởi 3 nguồn: dùng điện áp tham chiếu nội 2.56V (cố định), dùng điện áp AVCC hoặc điện áp ngoài đặt trên chân VREF. Một lần nữa, bạn cần chú ý đến noise khi đặt điện áp tham chiếu, nếu dùng điện áp ngoài đặt trên chân VREF thì điện áp này phải được lọc thật tốt, nếu dùng điện áp tham chiếu nội 2.56V hoặc AVCC thì chân VREF cần được nối với một tụ điện.
III. Giao tiếp RS-232
Chuẩn giao tiếp được coi là đơn giản và dễ dùng đó là RS232. Hầu như các thiết bị đều được giao tiếp với máy tính thông qua chuẩn này. Phần này trình bày tổng quan chung về RS232, Sơ đồ ghép nối, Giao diện phần mềm
1. Giao tiếp
Vấn đề giao tiếp giữa PC và vi điều khiển rất quan trọng trong các ứng dụng điều khiển, đo lường... Ghép nối qua cổng nối tiếp RS232 là một trong những kỹ thuật được sử dụng rộng rãi để ghép nối các thiết bị ngoại vi với máy tính. Nó là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết nối nhiều nhất là 2 thiết bị , chiều dài kết nối lớn nhất cho phép để đảm bảo dữ liệu là 12.5 đến 25.4m, tốc độ 20kbit/s đôi khi là tốc độ 115kbit/s với một số thiết bị đặc biệt. Ý nghĩa của chuẩn truyền thông nối tiếp nghĩa là trong một thời điểm chỉ có một bit được gửi đi dọc theo đường truyền.
Các máy tính thường có 1 hoặc 2 cổng nối tiếp theo chuẩn RS232C được gọi là cổng Com. Chúng được dùng ghép nối cho chuột, modem, thiết bị đo lường...Trên main máy tính có loại 9 chân hoặc lại 25 chân tùy vào đời máy và main của máy tính. Việc thiết kế giao tiếp với cổng RS232 cũng tương đối dễ dàng, đặc biệt khi chọn chế độ hoạt động là không đồng bộ và tốc độ truyền dữ liệu thấp. Mạch đo độ ồn trong phần này dùng RS232 9 chân.
2. Ƣu điểm của giao diện nối tiếp RS232
- Khả năng chống nhiễu của các cổng nối tiếp cao - Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện - Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua công nối tiếp
3. Những đặc điểm cần lưu ý trong chuẩn RS232:
- Trong chuẩn RS232 có mức giới hạn trên và dưới (logic 0 và 1) là +-12V. Hiện nay đang được cố định trở kháng tải trong phạm vi từ 3 kΩ - 7 kΩ
- Mức logic 1 có điện áp nằm trong khoảng -3V đến -12V, mức logic 0 từ -3V đến 12V
- Tốc độ truyền nhận dữ liệu cực đại là 100kbps (ngày nay có thể lớn hơn) - Các lối vào phải có điện dung nhỏ hơn 2500pF
- Trở kháng tải phải lớn hơn 3 kΩ ôm nhưng phải nhỏ hơn 7 kΩ ôm
- Độ dài của cáp nối giữa máy tính và thiết bị ngoại vi ghép nối qua cổng nối tiếp RS232 không vượt qua 15m
- Các giá trị tốc độ truyền dữ liệu chuẩn : 0,75,110,750,300,600,1200,2400,4800,9600,19200,28800,38400....56600,115200 bps
4. Các mức điện áp đường truyền
RS 232 sử dụng phương thức truyền thông không đối xứng, tức là sử dụng tín hiệu điện áp chênh lệch giữa một dây dẫn và đất. Do đó ngay từ đầu tiên ra đời nó đã mang vẻ lỗi thời của chuẩn TTL, nó vấn sử dụng các mức điện áp tương thích TTL để mô tả các mức logic 0 và 1. Ngoài mức điện áp tiêu chuẩn cũng cố định các giá trị trở kháng tải được đấu vào bus của bộ phận và các trở kháng ra của bộ phát.
Mức điện áp của tiêu chuẩn RS232C (chuẩn thường dùng bây giờ) được mô tả như sau:
+ Mức logic 0 : +3V , +12V + Mức logic 1 : -12V, -3V Các mức điện áp trong phạm vi từ -3V đến 3V là trạng thái chuyển tiếp. Chính vì từ - 3V tới 3V là phạm vi không được định nghĩa, trong trường hợp thay đổi giá trị logic từ thấp lên cao hoặc từ cao xuống thấp, một tín hiệu phải vượt qua quãng quá độ trong một thời gian ngắn hợp lý. Tốc độ truyền dẫn tối đa phụ thuộc vào chiều dài của dây dẫn. Đa số các hệ thống hiện nay chỉ hỗ trợ với tốc độ 19,2 kBit.
5. Cổng RS232 trên PC
Nhiều máy tính cá nhân trang bị 1 cổng Com hay cổng nối tiếp RS232. Số lượng cổng Com có thể lên tới 4 tùy từng loại main máy tính. Khi đó các cổng Com đó được đánh dấu là Com 1, Com 2, Com 3...Trên đó có 2 loại đầu nối được sử dụng cho cổng nối tiếp RS232 loại 9 chân (DB9) hoặc 25 chân (DB25). Tuy hai loại đầu nối này có cùng song song nhưng hai loại đầu nối này được phân biệt bởi cổng đực (DB9) và cổng cái (DB25).
Hình 29: Sơ đồ chân cổng Com 9 chân
Trên là các kí hiệu chân và hình dạng của cổng DB9 Chức năng của các chân như sau:
- Chân 1 : Data Carrier Detect (DCD) : Phát tín hiệu mang dữ liệu - Chân 2: Receive Data (RxD) : Nhận dữ liệu
- Chân 3 : Transmit Data (TxD) : Truyền dữ liệu
- Chân 4 : Data Terminal Ready (DTR) : Đầu cuối dữ liệu sẵn sàng được kích hoạt bởi bộ phận khi muốn truyền dữ liệu
- Chân 5 : Signal Ground (SG) : Mass của tín hiệu
- Chân 6 : Data Set Ready (DSR) : Dữ liệu sẵn sàng, được kích hoạt bởi bộ truyền khi nó sẵn sàng nhận dữ liệu
- Chân 7 : Request to Send : yêu cầu bộ gửi truyền đặt đường này lên mức hoạt động khi sẵn sàng truyền dữ liệu
- Chân 8 : Clear To Send (CTS) : Xóa để gửi ,bô nhận đặt đường này lên mức kích hoạt động để thông báo cho bộ truyền là nó sẵn sàng nhận tín hiệu -Chân 9 : Ring Indicate (RI) : Báo chuông cho biết là bộ nhận đang nhận tín hiệu rung chuông
6. Quá trình dữ liệu
- Quá trình truyền dữ liệu
Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ. Do vậy nên tại một thời điểm chỉ có một bit được truyền (1 kí tự). Bộ truyền gửi một bit bắt đầu (bit start) để thông báo cho bộ nhận biết một kí tự sẽ được gửi đến trong lần truyền bit tiếp the. Bit này luôn bắt đầu bằng mức 0. Tiếp theo đó là các bit dữ liệu (bits data) được gửi dưới dạng mã ASCII (có thể là 5,6,7 hay 8 bit dữ liệu) Sau đó là một Parity bit ( Kiểm tra bit chẵn, lẻ hay không) và cuối cùng là bit dừng - bit stop có thể là 1, 1,5 hay 2 bit dừng.
- Tốc độ Baud
Đây là một tham số đặc trưng của RS232. Tham số này chính là đặc trưng cho quá trình truyền dữ liệu qua cổng nối tiếp RS232 là tốc độ truyền nhận dữ liệu hay còn gọi là tốc độ bit. Tốc độ bit được định nghĩa là số bit truyền được trong thời gian 1 giây hay số bit truyền được trong thời gian 1 giây. Tốc độ bit này phải được thiết lập ở bên phát và bên nhận đều phải có tốc độ như nhau (Tốc độ giữa vi điều khiển và máy tính phải chung nhau 1 tốc độ truyền bit)
Ngoài tốc độ bit còn một tham số để mô tả tốc độ truyền là tốc độ Baud.
Tốc độ Baud liên quan đến tốc độ mà phần tử mã hóa dữ liệu được sử dụng để diễn tả bit được truyền còn tốc độ bit thì phản ánh tốc độ thực tế mà các bit được truyền. Vì một phần tử báo hiệu sự mã hóa một bit nên khi đó hai tốc độ bit và tốc độ Baud là phải đồng nhất
Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 56000, 115200 … Trong thiết bị họ thường dùng tốc độ là 19200
Khi sử dụng chuẩn nối tiếp RS232 thì yêu cầu khi sử dụng chuẩn là thời gian chuyển mức logic không vượt quá 4% thời gian truyền 1 bit. Do vậy, nếu tốc độ bit càng cao thì thời gian truyền 1 bit càng nhỏ thì thời gian chuyển mức logic càng phải nhỏ. Điều này làm giới hạn tốc Baud và khoảng cách truyền.
- Bit chẵn lẻ hay Parity bit
Đây là bit kiểm tra lỗi trên đường truyền. Thực chất của quá trình kiểm tra lỗi khi truyền dữ liệu là bổ xung thêm dữ liệu được truyền để tìm ra hoặc sửa một số lỗi trong quá trình truyền. Do đó trong chuẩn RS232 sử dụng một kỹ thuật kiểm tra chẵn lẻ.
Một bit chẵn lẻ được bổ sung vào dữ liệu được truyền để cho thấy số lượng các bit "1" được gửi trong một khung truyền là chẵn hay lẻ.
Một Parity bit chỉ có thể tìm ra một số lẻ các lỗi chả hạn như 1,3,5,7,9...
Nếu như một bit chẵn được mắc lỗi thì Parity bit sẽ trùng giá trị với trường hợp không mắc lỗi vì thế không phát hiện ra lỗi. Do đó trong kỹ thuật mã hóa lỗi này không được sử dụng trong trường hợp có khả năng một vài bit bị mắc lỗi.
7. Sơ đồ ghép nối RS232
- Mạch chuẩn giao RS232 dùng 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 (hình như là 15KV). Ngoà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ư sau: