Cấu trúc vật lý của cổng RS232

Một phần của tài liệu báo cáo tốt nghiệp mô phỏng hệ thống điều khiển thiết kế dựa trên mạng nơron (Trang 73)

CHƯƠNG 4 : ỨNG DỤNG ĐIỀU KHIỂN ĐỐI TƯỢNG THỰC

4.2. Thiết kế bộ điều khiển trên nền vi điều khiển Atmega 128

4.2.3.1 Cấu trúc vật lý của cổng RS232

Hình 4.8: Cổng đực

Hình 4.10 : Kích thước của cổng COM

Trong máy tính cổng COM của máy là cổng nối tiếp theo chuẩn RS232

Chân Tên gọi Mục đích

3 TD (Transmit data) Truyền dữ liệu

Truyền dữ liệu đến một thiết bị khác 2 RD (Receive data)

Nhận dữ liệu

Nhận dữ liệu từ một thiết bị khác 7 RTS (Request to send)

Yêu cầu truyền dữ liệu

Cho biết là thiết bị đã sẵn sàng để truyền dữ liệu ra

8 CTS (Clear to send ) Cho biết thiết bị đã sẵn sàng để nhận dữ liệu.

6 DSR (Data set ready) Cho biết thiết bị nhận dữ liệu đã được kết nối và sẵn sàng để nhận dữ liệu

5 GND (Signal ground) Xác định cả hai thiết bị đều sử dụng cùng một hiệu điện thế cho truyền dữ liệu. 4 DTR (Data terminal

ready)

Cho biết là thiết bị đầu cuối ( DTE ) đã sắn sàng cho việc sử dụng

1 DCD (Data Carrier Detect)

Tách tín hiệu mang dữ liệu 9 RI (Ring Indicator ) Báo chuông

Bảng 4.1: Chức năng của các chân cổng RS232 4.2.3.2 Quá trình truyền và nhận dữ liệu của cổng COM của PC

Truyền dữ liệu là quá trình đưa dữ liệu ra cổng nối tiếp từ máy tính. Khi máy tính muốn truyền một byte dữ liệu ra cổng để truyền ra cáp bên ngồi, máy tính sẽ

gửi byte này trên bus dữ liệu bên trong máy tính. ra tới địa chỉ vào ra của cổng COM. Cổng COM sẽ giữ byte này, và gửi nó ra ngồi từng bit một (dòng truyền bit dữ liệu) qua chân truyển của cổng. Byte này được đưa vào một thanh ghi dịch bên trong cổng. Các bit trên thanh ghi cổng này được lấy từng byte một và được truyền từng bit một trên đường truyền nối tiếp. Khi bit cuối cùng được truyền đi thì thanh ghi dịch cần byte khác để truyền thì nó có thể yêu cầu CPU gửi cho nó một byte khác. Cơng việc có vể như đơn giản, song nó u cầu phải có thời gian trễ bởi vì CPU khơng thể đưa ra byte ngay lập tức do nó cịn phải làm mốt số cơng việc khác khơng thể chỉ có việc quản lý cổng COM. Có một cách để giải quyết việc trễ thời gian này đó là sắp xếp lại mọi thứ để cho CPU gửi byte vào bộ đệm của cổng COM(trong phần cứng) trước khi thanh ghi dịch cần nó. Nhờ vậy khi thanh ghi dịch truyền byte của nó ra ngồi và đang cần một byte mới thì phần cứng của cổng COM chuyển byte tiếp theo từ bộ đệm của nó cho thanh ghi dịch mà khơng cần gọi CPU phát lệnh truyền một byte mới.

Kích thước của bộ đệm (phần cứng) của cổng COM trước đây chỉ là một byte, nhưng hiện nay thơng thường có 16 byte. Hiện này vẫn tồn tại vấn đề về giữ bộ đệm cung cấp đầy đủ byte để khi thanh ghi dịch cần byte để truyền nó sẽ ln tìm thấy (trừ khi khơng có byte nào để gửi đi nữa). Điều này được thực hiện bằng việc kết nối với CPU bằng việc sử dụng “ngắt”. Ngắt ở đây có thể hiểu là sự dừng cơng việc đang thực hiện để thực hiện một công việc ở vị trí khác, và sẽ trở lại làm cơng việc này sau khi hồn thành cơng việc ở ngắt. Ở đây có thể xem cơng việc của ngắt là q trình cung cấp dữ liệu cho bộ đệm của cổng COM. CPU khi có ngắt gọi sẽ tạm dừng cơng việc mà nó đang làm để cung cấp dữ liệu cho bộ đệm cổng COM. Sau khi cung câp xong dữ liệu thì nó sẽ trở lại cơng việc của nó.

Với trường hợp của cổng COM cũ với 8 bit trong bộ đệm. Khi thanh ghi dịch lấy byte ra khỏi bộ đệm và nó yêu cầu một byte khác. Lúc này nó sẽ gửi ngắt tới CPU bằng cách đưa một điện áp lên dây chức năng chuyên dụng lên bus của máy tính. Trừ khi CPU đang làm một cơng việc gì cực kỳ quan trọng mà không cho phép ngắt này được thực hiện, cịn trong các trường hợp cịn lại thì ngắt sẽ tác động đến

CPU để nó dừng cơng việc đang thực hiện và bắt đầu thực hiện một chương trình dùng để cung cấp một byte khác cho bộ đệm của cổng COM. Mục đích của bộ đệm này là dữ một byte dự trữ trong hàng đợi (trờ để truyền) trong phần cứng để khơng bị trống trong q trình truyền các byte dữ liệu ra cáp của cổng COM.

Đối với CPU, một khi nhận được ngắt, nó sẽ biết ai đã gửi ngắt cho nó vì có một dây ngắt đặc thù cho mỗi cổng COM (trừ khi các ngắt bị chia sẻ). Tiếp đó CPU sẽ chạy thiết bị nối tiếp để kiểm tra địa chỉ của cổng gửi ngắt. Nó sẽ thấy bộ đệm của cổng này bị trống và đang đợi một byte gửi vào. Vì vậy nếu có byte để gửi thì nó sẽ chuyển byte kế tiếp để truyền vào trong bộ đệm. Byte sẽ được kế tiếp có thể được đưa vào bộ đệm trong khi byte trước nó đang ở trong thanh ghi dịch truyền dữ liệu và đang trong q trình truyền dữ liệu từng bit một.

Tóm lại khi một byte đã truyền hoàn toàn ra đường truyền của cổng COM và thanh ghi dịch đang trống thì sẽ có 3 vấn đề xảy ra gần như là đồng thời:

Byte kế tiếp sẽ được chuyển từ bộ đệm truyền của cổng COM vào thanh ghi dịch truyền dữ liệu.Quá trình truyền dữ liệu từng bit một của byte mới bắt đầu Một ngắt khác được phát ra để báo cho cho thiết bị biết để gửi một byte khác tới bộ đệm hiện thời đang trống.

Vì vậy có thể coi cổng COM là một thiết bị hoạt động có ngắt. Mỗi khi cổng COM phát ra một ngắt thì CPU sẽ truyền cho nó một byte khác. Một khi một byte được gửi tới bộ đệm bởi CPU, CPU sẽ tiếp tục tự do để thực hiện hàng động khác cho tới khi nó nhận được một ngắt khác. Cổng COM sẽ truyền dữ liệu các bit với tốc độ thích hợp với tốc độ được chọn bởi người sử dụng (hoặc một trình ứng dụng nào đó). Tốc độ này được gọi là baudrate. Ngoài ra cổng COM cũng thêm các bit như bit start, stop, đơi khi cả parity vì vậy thường có tới 1 bit được gửi trong mỗi byte dữ liệu. Ở tốc độ 19200 bps sẽ có 1920 byte/sec (và cùng có tới 1920 ngắt/sec). Để thực hiện tất cả các cơng việc này thì CPU phải làm rất nhiều việc. Đầu tiên là gửi 8 byte 8 bit trong một lần trong khi bus dữ liệu của máy tính là 32 bit (hoặc có thể lên tới 64 bit). Việc này đã không sử dụng hiệu quả độ rộng của bit dữ liệu. Tiếp đó là có quá nhiều các ngắt cần xử lý và việc xử lý các ngắt cũng yêu cầu

nhiều việc. Khi một ngắt được nhận vào, thiết bị điều khiển chỉ biết là có ngắt ở cổng mà khơng biết đó là ngắt u cầu thêm ký tự vào chỗ ký tự đã được truyền đi. Thiết bị điều khiển phải làm rất nhiều sự kiểm tra để phát hiện ra cái gì đã xảy ra dẫn đến ngắt. Bởi khi một ký tự được nhận cũng có cùng ngắt như vậy cộng thêm đường điều khiển thay đổi trạng thái…Với tốc độ truyền chậm thì việc có bộ đệm nhận 1 byte khơng là vấn để gì nhưng khi tốc độ cao hơn thì sẽ có thể đẫn đển việc CPU khơng thể thực hiện công việc của UART đúng lúc gây ra sự ghi đè dữ liệu (trong khi nhận dữ liệu) gây ra các lỗi “overrun” hay “overflow”.

Một sự tiến bộ lớn đó là tăng dung lượng bộ đệm của cổng COM từ 1 byte lên tới 16 byte. Điều này nghĩa là khi CPU nhận được ngắt nó có thể đưa vào bộ đệm tới 16 byte tiếp để truyền. Nó làm cho ngắt ít hơn để làm các cơng việc khác trong khi dữ liệu vẫn được gửi từng byte trên một độ rộng bit. Với 16 byte khơng những bộ đệm có thể đợi nhiều byte hơn mà có thể nhận tới 16 byte một lúc. Bộ đệm 16 byte thực sự là một hàng đợi kiểu FIFO (First In First Out)- vào trước ra trước.

application 8k-byte 16-byte 1k-byte tele- BROWSER ------- MEMORY -------- FIFO --------- MODEM -------- phone program buffer buffer buffer line

Quá trình nhận dữ liệu từ các byte bởi cổng COM cũng giống như việc truyền chúng chỉ khác là có chiều ngược lại. Nó cũng cần gọi ngắt. Với loại cổng COM kiểu cũ, khi một byte được nhận đầy đủ. từ cáp bên ngồi nó được được chuyển vào bộ đệm nhận 1 byte. Tiếp đó cổng sẽ đưa cho CPU một ngắt để báo rằng nó nhận được một byte yêu cầu lấy byte đó đi để nó có thể có chỗ trống cho byte tiếp theo đang được nhận về. Với cổng COM mới thì ngắt sẽ đươc đưa ra khi có tới 14 byte được nhận vào trong bộ đệm. Khi đó CPU sẽ thực hiện việc lấy 14 hoặc 16 byte ra khỏi bộ đệm. Trong q trình thực hiện ngắt có thể có thêm 2 byte nữa được nhận vào trong bộ đệm. Nếu như có tới 3 byte được đưa vào trong thời gian này thì sẽ gây ra lỗi Overrun. Để chắc chắn khơng xảy ra lỗi này, có thể phát tín hiệu gọi ngắt khi bộ đệm có ít hơn 14 byte. Việc đặt bao nhiêu phần trăm bộ

đệm thì phát tín hiệu ngắt cho CPU lấy dữ liệu ra tùy thuộc vào người phần mềm bên trong. Nếu đặt 1 byte thì nó sẽ hoạt động như cổng COM kiểu cũ (trừ trường hợp trong bộ đệm đã có 15 byte đầy).

Tại sao bộ đệm FIFO lại nhỏ như vậy, tại sao khơng làm nó lớn. Lý do có phải là do giá làm bộ nhớ đắt hay không? Đây chắc chắn sẽ là thắc mắc đối với người biết về cấu trúc của bộ đêm FIFO. Câu trả lời đó là khơng phải bởi vì giá bộ nhớ rất rẻ nên khơng có vấn đề gì về giá khi tăng bộ đệm này lên kilobyte. Vấn đề ở đây chính là do việc điều khiển đường truyền trong quá trình truyền nhận dữ liệu. Chế độ điều khiển đường truyền có thể làm dừng lại dòng chảy của dữ liệu trên đường truyền nối tiếp khi thấy cần thiết. Nếu một tín hiệu stop được ra cổng COM, tiếp đó việc yêu cầu dừng lại được giữ bởi chế độ Software phần cứng của cổng COM không biết về điều khiển đường truyền. Nếu bộ đệm của cổng COM chứa 64 byte sẵn sàng để truyền đi khi nó nhận tín hiệu điều khiển đường truyền để dừng q trình truyền lại, nó sẽ gửi 64 byte ra một cách lộn xộn trong khi bị bắt dừng lại. Sẽ khơng có sự dừng lại q trình gửi vì nó khơng biết về chế độ điều khiển này. Nếu như bộ đệm lớn hơn thì sẽ có nhiều byte hơn bị gửi trong khi bị yêu cầu bắt buộc dừng của chế độ điều khiển đường truyền.

Mặc dù không để cho bộ đệm truyền ở phần cứng lớn nhưng trong chế độ truyền thơng nối tiếp cũng có các bộ đệm nối tiếp lớn hơn 16 byte. Đó là các bộ đệm được lấy trong bộ nhớ chính. Chúng được sử dụng như sau:

Khi CPU lấy được các byte từ bộ đệm 16 byte nó đặt các byte này vào bộ đệm lớn hơn lấy trong bộ nhớ chính (Khoản 8k-byte). Tiếp đó chương trình lấy dữ liệu từ cổng COM sẽ lấy dữ liệu từ bộ đệm lớn hơn này. Đối với truyền dữ liệu cũng tương tự. Khi CPU cần phải nạp một số byte để truyền nó lấy chúng ra khỏi một bộ đệm truyền lớn (8k-byte) trong bộ nhớ chính và đưa chúng vào trong bộ đệm truyền 16 byte trong phần cứng.

4.2.3.3 Các loại truyền thơng nối tiếp

Có hai loại truyền thơng nối tiếp đó là đồng bộ và khơng đồng bộ. Truyền thông đồng bộ cho phép tốc độ truyền dữ liệu nhanh hơn phương thức không đồng bộ. Bởi vì các bit thêm để đánh dấu đầu và cuối byte là khơng u cầu. Cổng COM của máy tính là thiết bị khơng truyền thơng khơng đồng bộ cho nên nó chỉ hỗ trợ cho truyền thơng nối tiếp khơng đồng bộ.

Truyền thông không đồng bộ không yêu cầu truyền hay nhận các ký tự vơ nghĩa. Tuy nhiên nó u cầu có các bit đánh đấu đầu và cuối của mỗi byte dữ liệu được gửi đó là các bit start, stop.Cổng nối tiếp (COM) thường là RS-232-C, EIA- 232-D hoặc EIA-232-E. Chuẩn RS232 là chuẩn điện áp ±12V khơng tương thích với TTL, trong khi vi điều khiển chỉ tương thích với chuẩn TTL. Vì vậy, cần có mạch chuyển đổi giữa RS232 sang TTL. Các vi mạch chuyển đổi từ RS232 sang TTL rất thông dụng trên thị trường như DS275 hoặc MAX232. Phần này chỉ đề cập đến giải pháp sử dụng MAX232 làm bộ chuyển đổi . Cấu tạo của MAX232 được trình bày trên hình 4.11.

Hình 4.11: MAX232

Trên MAX232 có 2 bộ chuyển đổi RS232. Các chân Tout và Rin là các chân đầu ra chuẩn tương thích với chuẩn RS232 cịn các chân Tin và Rout là các chân

tương thích với TTL. Nguyên lý hoạt động của MAX232 có thể mơ tả như sau: Khi có mức 1 (5V) trên chân Tin, tụ C2 và C4 đảo ngựơc điện áp 5V và nhân đôi nó lên trở thành mức -10V. Khi có mức 0 trên chân Tin, tụ C1 và C3 nhân đôi điện áp 5V lên thành 10V. Giá trị các tụ C1, C2, C3, C4 thông thường được chọn là 10uF. Mạch chuyển đổi sử dụng MAX232 tỏ ra ổn định ở toàn bộ dải truyền của chuẩn RS232.

4.2.4. Khối driver điều khiển động cơ

4.2.4.1. Giới thiệu về IC cầu H MC33886

Để điều khiển động cơ một chiều ta cần phải thiết kế Driver cho động cơ. Ta sẽ sử dụng IC cầu H MC33886 để điều khiển. MC33886 là một cầu H đơn dùng để điều khiển động cơ một chiều. Có nguồn logic bên trong, sau khi đã cấp nguồn cho cầu H từ 5V – 30V nó tự động tạo ra nguồn logic ở bên trong cầu H. Một đầu ra báo lỗi hiển thị dưới dạng điện áp, báo trạng thái quá dòng, quá điều kiện nhiệt độ cho phép. Hai đầu vào độc lập để điều khiển cầu H. MC33886 có dải nhiệt độ làm việc từ −40oCđến 125oC và giải điện áp làm việc từ 5V đến 30V.

Tổng quan về IC cầu H MC 33886

 MC 33886 có 20 chân

 Giải điện áp làm việc từ 5V đến 30V

 Đầu váo so sánh TTL/CMOS

 Tần số PWM là 10 kHz

 Tự động giới hạn quá dịng PWM

 Bảo vệ ngắn mạch đầu ra

Hình 4.12: Sơ đồ ghép nối đơn giản giữa MC33886 với bộ điều khiển

Hình 4.14: Sơ đồ chân của MC33886

Mơt tả chức năng của các chân: Chân Tên chân Mô tả

1 AGND Chân đất

2 FS Báo lỗi trạng thái

3 IN1 Điều khiển đầu ra 1

4,5,16 PWR Kết nối với nguồn dương 6,7 OUT1 Đầu ra 1 của cầu H

8,20 DNC Không nối

9,12 PGND Nối đất

14,15 OUT2 Đầu ra 2 của cầu H

19 IN2 Điều khiển đầu ra 2

Đặc tính Ký hiệu min typ max Đơn vị

Tần số PWM fPWM - 10 - kHz

Tần số giới gạn trong quá trình hoạt động

AX

M

f - - 20 kHz

Thời gian trễ khi bật đầu ra tD ON( ) - - 18 µs

4.2.4.2. Sơ đồ nguyên lý của driver điều khiển động cơ

IC cầu H MC 33886 có 2 chân IN1 và IN2 để có thể điều khiển đảo chiều động cơ. Do ở đây chúng em chỉ điều khiển tốc độ nên chỉ sử dụng chân IN1 để điều khiển tốc độ. Chân IN1 của IC cầu H MC33886 được nối với chân PWM thuộc timer1 của vi điều khiển. Sơ đồ nguyên lý được trình bày dưới hình 4.15.

G N D V C C J 1 C O N 5 1 2 3 4 5 0 R 9 3 9 0 U 5 B 7 4 1 4 / S O 3 4 14 7 1 2 V V C C + C 6 1 0 u F 5 0 V 0 J 4 C O N 5 1 2 3 4 5 + C 7 4 7 u F 5 0 V J 1 1 1 2 D 5 L E D 0 U 4 M C 3 3 8 8 6 1 2 3 4 5 6 7 8 9 1 0 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 A G N D F S

Một phần của tài liệu báo cáo tốt nghiệp mô phỏng hệ thống điều khiển thiết kế dựa trên mạng nơron (Trang 73)

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

(95 trang)
w