Chuẩn giao tiếp trong truyền dữ liệu

Một phần của tài liệu Nghiên cứu và thiết kế thiết bị lưu trữ dữ liệu phục vụ xử lý xe sau tai nạn đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 37)

2.4.1. Chuẩn giao tiếp SPI

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 vào những năm 1980. Đâ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).

30 Các bộ chuyển đổi (ADC và DAC). Các loại bộ nhớ (SD Card, MMC, EEPROM, Flash). Các loại IC thời gian thực. Các loại cảm biến (nhiệt độ, áp suất…) và một số loại khác như: bộ trộn tín hiệu, LCD, Graphic LCD, video game controller, …

Bus SPI bao gồm 4 tín hiệu hoặc chân. Chúng là

Master – Out / Slave – In (MOSI hay SI): Cổng ra của bên Master, cổng vào của bên Slave, dành cho việc truyền dữ liệu từ thiết bị Master đến thiết bị Slave

Master – In / Slave – Out (MISO hay SO): Cổng vào của bên Master, cổng ra của bên Slave, dành cho việc truyền dữ liệu từ thiết Slave đến thiết bị Master.

Serial Clock (SCK hay SCLK): Xung giữ nhịp cho giao tiếp SPI do Master tạo tín hiệu đồng hồ. Xung này có chức năng 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. Sự tồn tại của xung 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.

Chip Select (CS) hay Slave Select (SS): Chọn một Slave cụ thể bởi Master. Nếu 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 đó.

Vì đồng hồ được tạo ra bởi Master, luồng dữ liệu được điều khiển bởi Master. Với mỗi chu kỳ đồng hồ, một bit dữ liệu được truyền từ Master đến Slave và một bit dữ liệu được truyền từ Slave đến Master. Quá trình này xảy ra đồng thời và sau 8 chu kỳ đồng hồ, một byte dữ liệu được truyền theo cả hai hướng và do đó, SPI là một giao tiếp song công toàn phần (full – duplex). Nếu dữ liệu phải được truyền bởi chỉ một thiết bị, thì thiết bị kia phải gửi một cái gì đó (dữ liệu giả) và nó phụ thuộc vào thiết bị cho dù dữ liệu được truyền là dữ liệu thực tế hay không. Điều này có nghĩa là đối với mỗi bit được truyền bởi một thiết bị, thiết bị kia phải gửi dữ liệu một bit, tức là Master truyền dữ liệu đồng thời trên MOSI và nhận dữ liệu từ Slave trên đường MISO. Nếu Slave muốn truyền dữ liệu, Master phải tạo ra tín hiệu đồng hồ cho phù hợp bằng cách biết khi nào Slave muốn gửi dữ liệu trước.

31

Hình 2.12: Sơ đồ kết nối một Master với nhiều Slave

Mặc dù nhiều Slave được kết nối với Master trong bus SPI, ở một thời điểm bất kỳ thì chỉ có một Slave hoạt động. Để chọn Slave, Master sẽ kéo đường SS (Slave Select) hoặc CS (Chip Select) của Slave tương ứng xuống mức thấp.

Đối với Arduino Uno các chân giao tiếp SPI Lần lượt là SS-10; MOSI-11; MISO-12; SCK-13. Đối với Arduino Mega MISO là 50, MOSI là 51, SCK là 52 và SS thường là 53

32

2.4.2. Chuẩn giao tiếp I2C

Đầu năm 1980 Phillips đã phát triển một chuẩn giao tiếp nối tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter-Intergrated Circuit. Đây là đường Bus giao tiếp giữa các IC với nhau. I2C mặc dù được phát triển bởi Philips, nhưng nó đã được rất nhiều nhà sản xuất IC trên thế giới sử dụng. I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, có thể kể ra đây một vài tên tuổi ngoài Philips như: Texas Intrument(TI), MaximDallas, analog Device, National Semiconductor ... Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho rất nhiều loại IC khác nhau như các loại Vi điều khiển 8051, PIC, AVR, ARM... chip nhớ như: RAM tĩnh (Static Ram), EEPROM, các cảm biến nhiệt độ, áp suất, bộ chuyển đổi tương tự số (ADC), số tương tự (DAC), IC điểu khiển LCD, LED, IC DS1307 (Real Time Clock)

Cấu tạo và nguyên lý hoạt động: I2C sử dụng hai đường truyền tín hiệu.

 Một đường xung nhịp đồng hồ (SCL – Serial Clock Line) chỉ do Master phát đi (thông thường ở 100kHz và 400kHz. Mức cao nhất là 1Mhz và 3.4MHz).

 Một đường dữ liệu (SDA – Serial Data Line) theo 2 hướng.

Dữ liệu được truyền đi được gửi qua dây SDA và được đồng bộ với tín hiệu đồng hồ (clock) từ SCL.

Có rất nhiều thiết bị có thể cùng được kết nối vào một bus I2C, tuy nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được nhận ra bởỉ một địa chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt thời gian kết nối. Mỗi thiết bị có thể hoạt động như là thiết bị nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ (master) hay tớ (slave).

Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân biệt, nó còn được cấu hình là thiết bị chủ hay tớ. Trên một bus I2C thì quyền điều khiển thuộc về thiết bị chủ. Thiết bị chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa hai thiết bị chủ-tớ giao tiếp thì thiết bị chủ có nhiệm vụ tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ trong suốt quá trình giao tiếp. Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trong việc giao tiếp.

Master: Giữ vai trò điều khiển các tín hiệu đường truyền (Bus I2C).

 Tạo xung Clock trong suốt quá trình giao tiếp với Slave.  Phát các tín hiệu Start bắt đầu cho quá trình truy xuất.

33  Gửi địa chỉ của thiết bị Slave cần truy xuất

 Phát tín hiệu đọc hoặc ghi (R/W) tới Slave.  Truyền dữ liệu tới thiết bị Slave.

 Nhận dữ liệu từ Slave gửi lên.

 Tạo tín hiệu Not-ACK khi kết thúc nhận dữ liệu từ Slave.  Tạo tín hiệu Stop kết thúc quá trình truy xuất.

Slave

 Nhận địa chỉ và bit R/W từ Master chỉ trả lời khi đúng địa chỉ của Slave .  Nhận dữ liệu từ Master gửi tới đồng thời gửi bit ACK sau mỗi 8 Clock.  Truyền dữ liệu tới Master, chờ tín hiệu ACK từ Master để tiếp tục gửi đi.

 Thực hiện chức năng chuyên dụng của Slave ( EEPROM, Real Time Clock, Driver LCD, IoTs...).

Giao thức truyền dữ liệu:

Dữ liệu được truyền giữa thiết bị Master và các thiết bị Slave thông qua một đường dữ liệu SDA duy nhất, thông qua các chuỗi có cấu trúc gồm các số 0 và 1 (bit). Mỗi chuỗi số 0 và 1 được gọi là giao dịch (transaction) và dữ liệu trong mỗi giao dịch có cấu trúc như sau:

Hình 2.13: Cấu trúc dữ liệu trong mỗi giao dịch

Điều kiện bắt đầu (Start Condition): Bất cứ khi nào một thiết bị chủ / IC quyết

định bắt đầu một giao dịch, nó sẽ chuyển mạch SDA từ mức điện áp cao xuống mức điện áp thấp trước khi đường SCL chuyển từ cao xuống thấp. Khi điều kiện bắt đầu được gửi bởi thiết bị Master, tất cả các thiết bị Slave đều hoạt động ngay cả khi chúng ở chế độ ngủ (sleep mode) và đợi bit địa chỉ.

34

Hình 2.14: Điều kiện bắt đầu trong mỗi giao dịch dữ liệu

Khối địa chỉ: Thiết bị Master gửi 7 bit địa chỉ của thiết bị Slave mà thiết bị Master

muốn giao tiếp cùng với bit Read/Write. Tất cả các thiết bị Slave trên bus I2C so sánh các bit địa chỉ này với địa chỉ của chúng.

Bit Read / Write: Bit này xác định hướng truyền dữ liệu. Nếu thiết bị Master / IC

cần gửi dữ liệu đến thiết bị Slave - read, bit này được thiết lập là ‘0’. Nếu IC Master cần nhận dữ liệu từ thiết bị Slave - write, bit này được thiết lập là ‘1’.

Bit ACK / NACK: ACK/NACK là viết tắt của Acknowledged/NotAcknowledged.

Nếu địa chỉ vật lý của bất kỳ thiết bị Slave nào trùng với địa chỉ được thiết bị Master phát, giá trị của bit này được set là ‘0’ bởi thiết bị Slave. Ngược lại, nó vẫn ở mức logic ‘1’ (mặc định).

Khối dữ liệu: Nó bao gồm 8 bit và chúng được thiết lập bởi bên gửi, với các bit dữ

liệu cần truyền tới bên nhận. Khối này được theo sau bởi một bit ACK / NACK và được set thành ‘0’ bởi bên nhận nếu nó nhận thành công dữ liệu. Ngược lại, nó vẫn ở mức logic ‘1’.

Sự kết hợp của khối dữ liệu theo sau bởi bit ACK / NACK được lặp lại cho đến quá trình truyền dữ liệu được hoàn tất.

Điều kiện kết thúc (Stop condition): Sau khi các khung dữ liệu cần thiết được

truyền qua đường SDA, thiết bị Master chuyển đường SDA từ mức điện áp thấp sang mức điện áp cao trước khi đường SCL chuyển từ cao xuống thấp.

35

Hình 2.15: Điều khiện kết thúc của giao dịch dữ liệu

Hình dưới đây thể hiện toàn bộ các bit dữ liệu được gửi trên đường SDA và thiết bị điều khiển chúng khi thiết bị Master gửi dữ liệu đến thiết bị Slave.

Hình 2.16: Các bit dữ liệu gửi trên đường SDA khi Master gửi đến Slave.

36 Về lý thuyết lẫn thực tế I²C sử dụng 7 bit để định địa chỉ, do đó trên một bus có thể có tới 2^7 địa chỉ tương ứng với 128 thiết bị có thể kết nối, nhưng chỉ có 112, 16 địa chỉ còn lại được sử dụng vào mục đích riêng. Bit còn lại quy định việc đọc hay ghi dữ liệu (1 là write, 0 là read).

Điểm mạnh của I²C chính là hiệu suất và sự đơn giản của nó: Một khối điều khiển trung tâm có thể điều khiển cả một mạng thiết bị mà chỉ cần hai lối ra điều khiển.

Hình 2.18: Giao tiếp I2C giữa Master và Slave

Ngoài ra I2C còn có chế độ 10bit địa chỉ tương đương với 1024 địa chỉ, tương tự như 7 bit, chỉ có 1008 thiết bị có thể kết nối, còn lại 16 địa chỉ sẽ dùng để sử dụng mục đích riêng.

Mỗi thiết bị có 1 địa chỉ được cài sẵn hoặc 1 địa chỉ thiết bị duy nhất để thiết bị chủ (Master) có thể giao tiếp. 2 chân SDA VÀ SCL là 2 chân của giao tiếp I2C, trong đó chân SCL là chân Clock, có tác dụng đồng bộ hóa việc truyền dữ liệu giữa các thiết bị, và việc tạo ra xung clock đó là do thiết bị chủ (Master). Chân còn lại là chân SDA là chân truyền dữ liệu (DATA). 2 chân này luôn hoạt động ở chế độ mở, vì vậy để sử dụng được cần phải có trở kéo, tức là nối +5V => điện trở => I2C bởi các thiết bị trên bus I2C hoạt động ở mức thấp. Giá trị thường được sử dụng cho các điện trở là từ 2K cho tốc độ vào khoảng 400 kbps, và 10K cho tốc độ thấp hơn khoảng 100 kbps.

2.5. Tổng quan cảm biến MEMS

Vào thế kỷ XX, các thiết bị điện tử được tích hợp với số lượng ngày càng lớn, kích thước ngày càng nhỏ và chức năng ngày càng được nâng cao. Điều này đã mang lại sự biến đổi sâu sắc cả về mặt công nghệ lẫn xã hội. Vào cuối những năm 50 của thế kỷ XX, một

37 cuộc cách mạng hoá về công nghệ micro đã diễn ra và hứa hẹn một tương lai cho tất cả các ngành công nghiệp hệ thống vi cơ điện tử. Tuy rằng MEMS mới ra đời chưa lâu nhưng đã có rất nhiều ứng dụng góp phần không nhỏ vào sự phát triển đời sống xã hội.

a. Cấu trúc của Vi cảm biến gia tốc

Cảm biến gia tốc là một thiết bị dùng để đo gia tốc.

Cảm biến vi cơ là một loại cảm biến được chế tạo theo công nghệ vi cơ. Nó chính là một trong những sản phẩm phong phú và đa dạng nhất của công nghệ MEMS.

Hình 2.19: Sơ đồ một hệ đo gia tốc

Cảm biến vi cơ ngày càng nhanh hơn, nhạy hơn, nhẹ hơn, rẻ hơn và có độ tin cậy cao chưa từng có so với các cảm biến chế tạo theo công nghệ điện tử trước đây. Trong đề tài này chúng ta đặc biệt quan tâm đến khả năng ứng dụng của cảm biến gia tốc vi cơ điện tử. Cảm biến gia tốc chế tạo theo công nghệ vi cơ điện tử có hai loại là cảm biến kiểu tụ và cảm biến kiểu áp trở. Trong nhiều ứng dụng việc lựa chọn cảm biến kiểu tụ hay kiểu áp trở là rất quan trọng. Cảm biến kiểu áp trở có ưu điểm là công nghệ cấu tạo rất đơn giản. Tuy nhiên nhược điểm của nó là hoạt động phụ thuộc nhiều vào sự thay đổi nhiệt độ và có độ nhạy kém hơn cảm biến kiểu tụ. Các cảm biến kiểu tụ có độ nhạy cao hơn, ít bị phụ thuộc vào nhiệt độ, ít bị nhiễu và mất mát năng lượng. Tuy nhiên chúng có nhược điểm là mạch điện tử phức tạp hơn. Hiện nay cảm biến gia tốc kiểu tụ được ứng dụng rộng rãi hơn.

Hình 2.20: Các kiểu cảm biến gia tốc

38 Cảm biến gia tốc vi cơ đã nhanh chóng thay thế các loại cảm biến gia tốc thông thường trước đây trong nhiều ứng dụng. Một vài những ứng dụng điển hình của cảm biến gia tốc vi cơ.

Cảm biến góc Roll –Pitch:

 Định hướng 3D trong không gian

 Phát hiện va chạm: Những thông tin về gia tốc, vận tốc và độ dịch chuyển giúp phân biệt sự va chạm và việc không xảy ra va chạm

 Đo và điều khiển mức rung

 Điều khiển và dự đoán khả năng làm việc của máy móc, thiết bị đo một số thông số sinh học trong cơ thể con người

Hình 2.21: Hệ trục cảm biến gia tốc

Gia tốc là sự thay đổi của vận tốc theo thời gian. Vận tốc lại đo sự thay đổi của độ dịch chuyển theo thời gian. Lực trọng trường là nguyên nhân gây ra gia tốc rơi tự do và gia tốc này bằng 9.81 m/s2(1g). Gia tốc thường được tính thông qua lực gây ra gia tốc đó vì lực liên hệ với gia tốc theo công thức F = ma. Ở đó F là lực gây ra gia tốc, m là khối lượng, a là gia tốc. Lực có đơn vị là N, m có đơn vị là kilogram (kg), a có đơn vị là m/s2. Các thiết bị dùng để đo gia tốc phải xác định được giá trị của lực tác dụng lên một khối vật thể đã biết trước. Một cách tiếp cận khác để tính toán gia tốc đó là: Gia tốc là đạo hàm của vận tốc theo thời gian. Vận tốc lại là đạo hàm của độ dịch chuyển theo thời gian.

39 Gia tốc

Vận tốc

Độ dịch chuyển

Hình 2.22: Đồ thị gia tốc, vận tốc, độ dịch chuyển theo thời gian

Gia tốc cũng có thể được xác định một cách dễ dàng nhờ một dụng cụ đơn giản như sau.

Theo định luật II Newton: ΣF = ma

Ta suy ra: Tcosθ - mg = 0 => T = mg/cosθ Tsinθ = ma

Như vậy: a = g*tgθ

40

Nguyên tắc hoạt động của vi cảm biến gia tốc kiểu tụ

Khi hệ quy chiếu được gia tốc, gia tốc này được truyền cho khối m thông qua lò xo. Lò xo giãn ra và độ dịch chuyển này được xác định bởi một cảm biến độ dịch chuyển. Theo định luật Hooke, lực kéo khối lượng m tỉ lệ với độ biến dạng của lò xo F = kx, với k là hệ số tỉ lệ hay độ cứng của lò xo (N/m), x là khoảng dịch chuyển so với vị trí cân bằng (m). Theo định luật II Newton, trong hệ quy chiếu quán tính đứng yên, lực F này cung cấp cho khối lượng m có một gia tốc a theo công thức F = ma. Tại vị trí cân bằng ta có :

Một phần của tài liệu Nghiên cứu và thiết kế thiết bị lưu trữ dữ liệu phục vụ xử lý xe sau tai nạn đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 37)

Tải bản đầy đủ (PDF)

(101 trang)