Điển hình là dòng IC 8051/8052.Với sự ra đời của dòng IC mới đã làm thúc đẩy sự phát triển của nhũng IC chuyển đổi số sang tương tự như PCF8591,DAC0808,DAC0800...Nếu nói việc chuyển đổi
Trang 1y với sự phát triển vượt bật của công nghệ Nano hàng loạt IC mới được chế tạo Những IC này thông minh hơn rất nhiều so với các IC trước và đặc biệt là chúng ta có thể ghi/xóa dữ liệu vào một cách dể dàng Vì thế nó được sử dụng trong nhiều thiết bị Điện - Điện Tử và ngày càng thể hiện được bản chất ưu việt của mình Điển hình là dòng IC 8051/8052.
Với sự ra đời của dòng IC mới đã làm thúc đẩy sự phát triển của nhũng
IC chuyển đổi số sang tương tự như PCF8591,DAC0808,DAC0800 Nếu nói việc chuyển đổi tín hiệu từ dạng tương tự sang dạng số là cổng ngõ vào thế giới
vi xử lý thì cũng có thể nói việc chuyển đổi tín hiệu từ dạng số sang dạng tương
tự là cổng ngõ ra Vì đa số tín hiệu trong thực tế đều là dạng tương tự nên muốn điều khiển, xử lý hay lưu trữ các dạng tín hiệu này cần phải tìm hiểu ,nghiên cứu cũng như phát triển các phương pháp chuyển đổi tương tự sang số hoặc là chuyển đổi số sang tương tự.Như vậy công việc chuyển đổi này có một vai trò khá quan trọng ,cần phải được quan tâm,đầu tư và phát triển một cách đúng mức
Cùng với sự phát triển của khoa học kỹ thuật,các công cụ sửa chữa cũng được phát triển theo,đặc biệt là các bộ nguồn tín hiệu.Các bộ nguồn tín hiệu là một trong những công cụ rất quan trọng cung cấp cho kĩ thuật viên các dạng điện áp chuẩn,các dạng tín hiệu mong muốn góp phần rất lớn vào việc nghiên cứu ,phát triển hay sửa chữa các thiết bị điện tử
Xuất phát từ thực tiển này em đã đi đến quyết định “Thiết kế Bộ Tạo Tín
Hiệu Phục Vụ Đo Kiểm” Nhằm đáp ứng nhu cầu ham muốn học hỏi của bản
thân, cũng như là góp phần nâng giá trị của những mạch điện tử trong đời sống của con người
Trang 2II LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Bộ nguồn là một phần rất quan trọng và không thể thiếu trong các thiết bị điện tử.Việc hỏng hóc đa phần là do các bộ nguồn gây ra,vì vậy việc cung cấp nguồn cho các thiết bị với các yêu cầu về dạng tín hiệu ,công suất sẽ loại bỏ rất nhiều các nguyên nhân gây hỏng thiết bị,giúp kĩ thuật viên khoanh vùng và chuẩn đoán chính xác các pan bệnh trên thiết bị cần sửa chữa,giúp cho việc sửa chữa cũng như đo kiểm được dễ dàng,tốn ít công sức hơn
Bộ nguồn là bộ phận quan trọng và không thể thiếu trong các thiết bị điện
tử Việc hỏng hóc đa phần là do các bộ nguồn gây ra, vì vậy việc cung cấp nguồn cho các thiết bị với các yêu cầu về dạng tín hiệu, công suất sẽ loại bỏ rất nhiều những nguyên nhân gây hỏng thiết bị, giúp kỹ thuật viên khoanh vùng
và chuẩn đoán chính xác các pan bệnh trên thiết bị cần sửa chữa giúp cho việc sửa chữa cũng như đo kiểm được dễ dàng ít công sức hơn
Thực tế trên thị trường đã tồn tại rất nhiều các loại bộ nguồn tín hiệu nhưng đa số các nguồn này đều không ứng dụng vi điều khiển vì vậy chỉ có thể cung cấp một cách có giới hạn các dạng tín hiệu và việc điều chỉnh đa phần là dùng triết áp , độ chính xác cũng không được cao
Đề tài của em thực hiện sẽ ứng dụng vi điều khiển tạo ra các dạng tín hiệu chuẩn với độ chính xác cao , cách sử dụng dễ dàng với giao diện bàn phím và màn hình hiển thị.Việc tạo ra các dạng tín hiệu hoàn toàn ứng dụng cơ chế chuyển đổi tín hiệu từ dạng số sang dạng tương tự qua việc sử dụng vi điều khiển kết nối với IC chuyển đổi số sang tương tự PCF8591
Đề tài em thực hiện sẽ góp phần chế tạo ra các bộ nguồn tín hiệu ngày càng thông minh và chính xác ,thúc đẩy thị trường các bộ nguồn nói riêng và thị trường các thiết bị điện tử nói chung
Tuy nhiên do bản thân em kiến thức còn hạn hẹp ,khả năng chuyên môn
Trang 3chưa đáp ứng được yêu cầu,em mong các thầy cô thông cảm và các ý kiến đóng góp quý giá của các thầy cô sẽ là không thể thiếu để sản phẩm có thể đưa vào thực tế hoạt động.
III MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI
Trong luận án này em sử dụng một IC chuyển đổi số sang tương tự(PCF8591T) kết hợp với vi điều khiển 89S52 qua giao diện I2C, 89S52 có nhiệm vụ điều khiển IC PCF8591,để IC này tạo ra một dải điện áp từ 0 – 5 vôn.Và việc điều chỉnh dải điện áp này thông qua bàn phím.Việc giao tiếp với thiết bị này nhờ vào bàn phím và màn hình.Điện áp được lấy ra từ 1 giắc cắm và
có thể đo điện áp này nhờ đồng hồ đo điện vạn năng,tạo ra xung vuông biểu diễn trên 8 LED đơn có tần số điều chỉnh được và đo tần số dao động của IC NE555
Ý tưởng của em là tạo ra một sản phẩm sử dụng vi điều khiển điều khiển một IC chuyển đổi số sang tương tự để tạo ra các tín hiệu như điện áp một chiều,các tín hiệu dạng sóng hình sin,các tín hiệu xung với các thông số có thể điều khiển được.Tuy nhiên trên thực tế sản phẩm chưa thể đáp ứng theo như ý tưởng mong muốn mà em chỉ có thể sử dụng vi điều khiển để điều khiển IC PCF8591 tạo ra một dải điện áp hẹp từ 0- 5 vôn ,và việc điêu chỉnh dải điện áp
là qua bàn phím,tạo xung vuông có tần số điều khiển được và đo tần số dao động của ic NE555
Tuy sản phẩm còn rất nhiều thiếu sót nhưng về cơ bản em đã tìm hiểu và
đi đúng hướng của đề tài.Việc sản phẩm có thể được như ý tưởng mong muốn hay không ,phần lớn là nhờ các ý kiến quý giá của các thầy cô
Trang 4CHƯƠNG II: CƠ SỞ LÝ THUYẾTI.GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52
1 Tổng quan về 89S52
AT89S52 là họ IC vi điều khiển do hãng Intel sản xuất Các sản phẩm AT89S52 thích hợp cho những ứng dụng điều khiển Việc xử lý trên byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất
dữ liệu nhanh trên RAM nội Tập lệnh cung cấp một bảng tiện dụng của những lệnh số học 8 bit gồm cả lệnh nhân và lệnh chia Nó cung cấp những hổ trợ mở rộng trên chip dùng cho những biến một bit như là kiểu dữ liệu riêng biệt cho phép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển
AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3 TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP.Các đặc điểm của chip AT89S52 được tóm tắt như sau:
• 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
• Tần số hoạt động từ: 0Hz đến 24 MHz
• 3 mức khóa bộ nhớ lập trình
• 3 bộ Timer/counter 16 Bit
• 128 Byte RAM nội
• 4 Port xuất /nhập I/O 8 bit
Trang 62.Mô tả chân 89S52
2.1 Sơ đồ chân 89S52
Mặc dù các thành viên của họ 8051(ví dụ 8751, 89S52, 89C51, DS5000) đều có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In-Line Pakage), dạng vỏ dẹt vuông QPF (Quad Flat Pakage) và dạng chip không
có chân đỡ LLC (Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức
năng khác nhau như vào ra I/O, đọc RD, ghi WR, địa chỉ, dữ liệu và ngắt Cần phải lưu ý một số hãng cung cấp một phiên bản 8051 có 20 chân với số cổng vào
ra ít hơn cho các ứng dụng yêu cầu thấp hơn Tuy nhiên vì hầu hết các nhà phát triển sử dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập trung
mô tả phiên bản này
Hình 1.2: Sơ đồ chân của AT89S52
2.2 Chức năng của các chân 89S52
A T 89 S
Trang 7IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu.
Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7) Port 1 là port IO dùng cho giao
tiếp với thiết bị bên ngoài nếu cần
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có tác dụng
kép dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có tác dụng
kép Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên
hệ đến các đặc tính đặc biệt của 89S52 như ở bảng sau:
chuyển đổiP3.0
P3.1P3.2P3.3P3.4P3.5P3.6P3.7
RXDTXDINT0INT1T0T1WRRD
Ngõ vào dữ liệu nối tiếp
Ngõ xuất dữ liệu nối tiếp
Ngõ vào ngắt cứng thứ 0
Ngõ vào ngắt cứng thứ 1
TIMER/
COUNTER thứ 0
Ngõ vào của TIMER/
Trang 8Tín hiệu ghi dữ liệu lên bộ nhớ ngoài
Tín hiệu đọc bộ nhớ dữ liệu ngoài
Bảng 1.1:Chức năng đặc biệt các chân port3
PSEN (Program store enable):
PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng và thường được nối đến chân OE của Eprom cho phép đọc các byte
mã lệnh
PSEN ở mức thấp trong thời gian 89S52 lấy lệnh Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 89S52 để giải mã lệnh Khi 89S52 thi hành chương trình trong ROM nội, PSEN ở mức cao
Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ
và dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt
Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động
Trang 9ở mức 0, 89S52 thi hành chương trình từ bộ nhớ mở rộng Chân EA được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89S52.
RST (Reset): Khi ngõ vào tín hiệu này đưa lên mức cao ít nhất 2 chu kỳ
máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch phải tự động reset
Các giá trị tụ và điện trở được chọn là:
R1=10Ω, R2=220Ω, C=10 F
Hình 1.3: Thiết lập cho nút reset
Trang 10Các ngõ vào bộ dao động X1, X2:
Bộ tạo dao động được tích hợp bên trong 89S52 Khi sử dụng 89S52, người
ta chỉ cần nối thêm thạch anh và các tụ Tần số thạch anh tùy thuộc vào mục đích của người sử dụng, giá trị tụ thường được chọn là 33p
AT89S52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những vùng vbộ nhớ riêng biệt cho chương trình và dữ liệu Chương trình và dữ liệu có thể chứa bên trong 89S52 nhưng 89S52 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu bên ngoài
RAM bên trong AT89S52 được phân chia như sau:
Các bank thanh ghi có địa chỉ từ 00H đến 1FH
RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH
RAM đa dụng từ 30H đến 7FH
Các thanh ghi chức năng đặc biệt từ 80H đến FFH
Trang 11Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:
Trang 12RAM đa dụng có địa chỉ từ 30h – 7Fh có thể truy xuất mỗi lần 8 bit bằng cách dùng chế độ định địa chỉ trực tiếp hay gián tiếp.
Các vùng địa chỉ thấp từ 00h – 2Fh cũng có thể sử dụng cho mục đích như trên, ngoài các chức năng đặc biệt được đề cập ở phần sau
3.2 RAM có thể định địa chỉ bit
Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM đa dụng (truy xuât mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh xử lý bit
3.3 Các bank thanh ghi
Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h – 07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh Các bank thanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7 Sau khi khởi động thì hệ thống bank 0 được chọn sử dụng
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được truy xuất bởi các thanh ghi R0 đến R7 Viêc thay đổi bank thanh ghi được thực hiện thông qua thanh ghi từ trạng thái chương trình (PSW)
3.4 Các thanh ghi có chức năng đặc biệt
Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp)
Cũng như R0 đến R7, 89S52 có 21 thanh ghi có chức năng đặc biệt (SFR:
Special Function Register) ở vùng trên của RAM nội từ địa chỉ 80H đến 0FFH
Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:
Trang 133.4.1 Thanh ghi trạng thái chương trình (PSW: Program Status Word)
00=Bank 0; address 00H÷07H01=Bank 1; address 08H÷0FH10=Bank 2; address 10H÷17H11=Bank 3; address 18H÷1FH
Bảng 1.3:Nội dung thanh ghi trạng thái chương trình PSW
Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag):
Cờ nhớ thường nó được dùng cho các lệnh toán học: C =1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngược lại C = 0 nếu phép toán cộng không tràn và phép trừ không có mượn
Trang 14- Cờ Carry phụ AC (Auxiliary Carry Flag):
Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0AH - 0FH Ngược lại AC = 0
- Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xóa sau khi reset hệ thống và được thay đổi bởi phần mềm khi cần thiết
Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là Bank 0, Bank1, Bank2 và Bank3
Trang 15Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẵn với thanh ghi A Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn chẵn Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1 trong A và P tạo thành số chẵn.
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port
nối tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu.
3.4.2 Thanh ghi TIMER
Vi Điều Khiển 89S52 có 3 timer 16 bit, mỗi timer có bốn cách làm việc Người ta sử dụng các timer để:
o Định khoảng thời gian
o Đếm sự kiện
o Tạo tốc độ baud cho port nối tiếp trong 89S52
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những khoảng đều đặn và đặt cờ tràn timer Cờ được dùng để đồng bộ hóa chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các ngõ ra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ đo độ rộng xung)
3.4.3 Thanh ghi ngắt (INTERRUPT)
Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác
Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng
vi điều khiển Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện đó trong khi một chương trình khác đang thực thi
Trang 16- Tổ chức ngắt của 89S52:
Có 5 nguồn ngắt ở 89S52: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port
nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống
và được cho phép từng cái một bằng phần mềm Mức độ ưu tiên của các ngắt được lưu trong thanh ghi IP (Interrupt Priority) hay nói cách khác thanh ghi IP cho phép chọn mức ưu tiên cho các ngắt (giá trị thanh ghi IP khi reset là 00h)
Trang 17Bit Ký hiệu Địa chỉ
bit
Mô tả
IP.5 ET2 BDH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
timer 2IP.4 ES BCH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
cổng nối tiếp
IP.3 ET1 BBH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
timer 1IP.2 EX1 BAH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
ngắt ngoài 1IP.1 ET0 B9H Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
timer 0IP.0 EX0 B8H Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
ngắt ngoài 0
Tóm tắt thanh ghi IP
Bảng 1.5: Tóm tắt nội dung thanh ghi IP
Nếu 2 ngắt xảy ra đồng thời thì ngắt nào có nào có mức ưu tiên cao hơn
Trang 18 Nếu chương trình của một ngắt có mức ưu tiên thấp đang chạy mà có một ngắt xảy ra với mức ưu tiên cao hơn thì chương trình này tạm dừng để chạy một chương trình khác có mức ưu tiên cao hơn.
- Cho phép và cấm ngắt:
Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE (Interrupt Enable: cho phép ngắt) ở địa chỉ A8H
Trang 19Bit Ký hiệu Địa chỉ
bit
Mô tả
IE.7 EA AFH Cho phép / Cấm toàn bộ
IE.5 ET2 ADH Cho phép ngắt từ Timer 2 (8052)IE.4 ES ACH Cho phép ngắt port nối tiếpIE.3 ET1 ABH Cho phép ngắt từ Timer 1
IE.2 EX1 AAH Cho phép ngắt ngoài 1
IE.1 ET0 A9H Cho phép ngắt từ Timer 0
IE.0 EX0 A8H Cho phép ngắt ngoài 0
Tóm tắt thanh ghi IE
Trang 20
Bảng 1.6: Tóm tắt nội dung thanh ghi IE
- Các cờ ngắt:
Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên mức cao để xác nhận ngắt
Ngắt Cờ Thanh ghi SFR và vị trí bit
Các loại cờ ngắt
Bảng1.7:Các loại cờ ngắt
- Các vectơ ngắt:
Khi chấp nhận ngắt, giá trị được nạp vào PC gọi là vector ngắt
Nó là địa chỉ bắt đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau :
Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo nghĩa này, nó giống ngắt: nó ngắt chương trình chính và nạp cho PC giá trị mới
Trang 21II.CƠ SỞ LÝ THUYẾT CHUYỂN ĐỔI SỐ - TƯƠNG TỰ
Có thể nói sự biến đổi qua lại giữa các tín hiệu từ dạng tương tự sang dạng
dụ dùng điện thế tương tự để điều khiển vận tốc động cơ)
1 Các phương pháp chuyển đổi số sang tương tự (DAC)
Chuyển đổi số tương tự (DAC) là quá trình tìm lại tín hiệu tương tự từ N số hạng(N bít) đã biết của tín hiệu số với độ chính xác là một mức lượng tử tức là một LSB
Trang 22Hình 2.1 Sơ đồ khối quá trình chuyển đổi số sang tương tự
Đồ thị thời gian của tín hiệu ra sau mạch chuyển đổi DA có dạng như hình vẽ:
Hình 2.2 Đồ thị thời gian của tín hiệu sau mạch chuyển đổi DA
Tín hiệu ra là tín hiệu rời rạc theo thời gian như trên hình vẽ.Tín hiệu này được đưa qua bộ lọc thông thấp lý tưởng LTT.Trên đầu ra của LTT có tín hiệu Va biến thiên liên tục theo thời gian là tín hiệu nội suy của Vm
Sau đây sẽ xét các phương pháp biến đổi cơ bản:
1.1 Chuyển đổi DA bằng phương pháp thang điện trở
Trang 23Hình 2.3 Sơ đồ nguyên lý bộ chuyển đổi D/A theo phương pháp thang điện trởTrên đầu vào bộ khuếch đại thuật toán là một thang điện trở mà trị số của chúng phân bố theo mã nhị phân: các điện trở lân cận nhau có trị số hơn kém nhau 2 lần.Tín hiệu điều khiển chính là tín hiệu số cần chuyển đổi.Bit có ý nghĩa nhỏ nhất LSB được đưa đến điều khiển khóa nối với điện trở R,bit có ý nghĩa lớn hơn tiếp đó được đưa đến điều khiển khóa nối với điện trở nhỏ hơn R/2….và MSB điều khiển khóa nối với điện trở nhỏ nhất(R/(2^(N-1))).Nếu một bít có giá trị 0 thì khóa tương ứng nối với đất và nếu một bít có giá trị 1 thì khóa tương ứng nối với điện áp chuẩn Uch để tạo nên một dòng điện tỷ lệ nghịch với trị số điện trở của nhánh đó nghĩa là I0 có giá trị nhỏ nhất và In-1 có giá trị lớn nhất.Dòng điện sinh ra trong các nhánh đưa tới đầu vào bộ khuếch đại thuật toán ,trên đầu ra bộ khuếch đại thuật toán có điện áp
Trang 24Hình 2.4 Minh họa nguyên tắc làm việc của chuyển mạch K trên hình 2.3
Để thực hiện chuyển mạch K có thể dùng sơ đồ hình 2.4 Đây là một mạch khuếch đại vi sai làm việc ở trạng thái bão hòa.Khi tín hiệu điều khiển có giá trị
0 thì I0 qua T1 xuống đất, khi tín hiệu điều khiển có giá trị 1 thì I0 được dẫn qua T2 đến đầu vào bộ khuếch đại thuật toán.Chuyển đổi D/A theo phương pháp này yêu cầu trị số của các điện trở phải rất chính xác
1.2 Chuyển đổi DA bằng phương pháp mạng điện trở
Trong mạch này các nguồn dòng được tạo ra từ các nguồn điện áp chuẩn Uch
Trang 25Hình 2.5 Sơ đồ nguyên lý bộ chuyển đổi D/A theo phương pháp mạng điện trởDòng điện của chúng bằng nhau và bằng I0.Tín hiệu cần chuyển đổi (tín hiệu điều khiển) được đưa đến chuyển mạch K.Khi một bit nào đó của tín hiệu điều khiển là 0 thì I0 tương ứng với bit đó bị ngắn mạch qua khóa xuống đất.Ngược lại,nếu một bit nào đó của tín hiệu điều khiển là 1 thì I0 tương ứng với bit đó được dẫn đến đầu vào bộ khuếch đại thuật toán qua mạng điện trở.Trong sơ đồ này mạng điện trở làm nhiệm vụ phân dòng.Vì điện trở nhánh ngang bằng một nửa điện trở nhánh dọc,nên dòng điện khi qua mỗi khâu điện trở thì giảm đi một nửa.Dòng điện ứng với LSB đi qua (N-1) khâu điện trở,dòng điện ứng với bít có
ý nghĩa lớn hơn đi qua (N-2) khâu… và dòng điện ứng với MSB được đưa trực tiếp đến đầu vào bộ khuếch đại thuật toán (I0).Kết quả là các dòng điện ở cửa vào bộ khuếch đại thuật toán có trị số tương ứng với bit mà nó đại diện.Chúng
có trị số giảm dần từ MSB đến LSB theo mã nhị phân.Trong sơ đồ,điện trở ở nhánh ngang cuối cùng có trị số là 2R bằng điện trở nhánh dọc.Kết cấu này nhằm đảm bảo sự phân dòng cho I(N-2)=I0/2 ở khâu cuối cùng cũng giống các khâu trước.Trong sơ đồ này số điện trở phải dùng khá lớn,nếu phải chuyển đổi N bit thì số điện trở phải dùng là 2*(N-1),trong khi phương pháp thang điện trở thì chỉ cần dùng N điện trở mà thôi
1.3 Chuyển đổi DA bằng phương pháp mã hóa Shannon-Rach
Mạch mã hóa Shannon-Rach được biểu diễn trên hình 2.6
Trang 26Hình 2.6 Sơ đồ nguyên lý bộ chuyển đổi D/A theo phương pháp mã hóa Shannon-Rach
Đây là quá trình chuyển đổi nối tiếp từng bit một.Tín hiệu điều khiển số được đưa lần lượt từ LSB đến MSB đến điều khiển K1.Gọi thời gian chuyển đổi một bit là T,thì trong khoảng đầu T/2,K2 mở,K1 đóng nếu tín hiệu điều khiển là 1 và
mở khi tín hiệu điều khiển là 0.Khi K1 đóng thì tụ được nạp.Sang nửa sau của T/2 ,K1 mở,K2 đóng,C phóng điện qua R và Uc giảm dần.Quá trình đó lặp lại khi lần lượt đưa các bit đến điều khiển K1.Nếu cần chuyển đổi N bit thì thời gian chuyển đổi là N*T.Sau thời gian N*T điện áp còn lại trên tụ chính là điện
áp tương tự cần tìm
Để minh họa xét tín hiệu số cần chuyển đổi là 1001
Hình 2.7 Đồ thị minh họa quá trình chuyển đổi D/A theo phương pháp mã hóa Shannon-Rach(tín hiệu số 1001,LSB=(1/16)*U0
- Ứng dụng của chuyển đổi DAC:
Trang 27Hình 2.8 Mạch khởi động êm
Trong mạch điều khiển hệ truyền động có động cơ sử dụng kỹ thuật số, người ta thường sử dụng các bộ khởi động êm giúp hệ thống tránh được các xung đột biến cơ học giúp động không bị xoắn gãy trục hay hư hỏng các chi tiết cơ khí cũng như điện từ khác
Khi hệ nhận được tín hiệu "START" từ mạch điều khiển, mạch đếm nhận xung clock và bắt đầu đếm lên, cùng lúc này ngõ ra Op-Amps là tín hiệu EOC (End-Of-Conversion) đang ở mức cao Theo nhịp đếm lên của mạch đếm, DAC chuyển đổi các số nhị phân theo giá trị lớn dần như dạng sóng điện áp VAX trên hình vẽ Tín hiệu này điều khiển hệ thống khởi động êm cho đến khi VA = VAX thì tín hiệu ngõ ra Op-Amps EOC sẽ về 0 dẫn đến kết thúc quá trình khởi động êm do cổng AND 3 ngõ vào hoạt động như một khoá điện tử
Rõ ràng, thay vì đột biến từ 0 đến VA, tín hiệu điện áp VAX tăng dần theo từng nấc nhỏ Khoảng cách giữa 2 nấc chính là độ phân giải của DAC
2.Đặc tính kỹ thuật của mạch đổi DAC
Trang 282.1Bit có ý nghĩa thấp nhất (LSB) và bit có ý nghĩa cao nhất (MSB)
Qua các mạch biến đổi DAC kể trên ta thấy vị trí khác nhau của các bit trong số nhị phân cho giá trị biến đổi khác nhau, nói cách khác trị biến đổi của một bit tùy thuộc vào trọng lượng của bit đó
Nếu ta gọi trị toàn giai là VFS thì bit LSB có giá trị là: LSB
= VFS / (2^n- 1).và bít
Điều này được thể hiện trong kết quả của thí dụ 2 ở trên
Hình 2.8(a,b) Đặc tuyến chuyển đổi của một số nhị phân 3 bit
(H 2.8a) là đặc tuyến lý tưởng, tuy nhiên, trong thực tế để đường trung bình của đặc tính chuyển đổi đi qua điểm 0 điện thế tương tự ra được làm lệch (1/2)LSB (H 2.8b) Như vậy điện thế tương tự ra được xem như thay đổi ở ngay giữa hai mã số nhị phân vào kế nhau Thí dụ khi mã số nhị phân vào là 000 thì điện thế tương tự ra là 0 và điện thế tương tự ra sẽ lên nấc kế 000+(1/2)LSB rồi nấc kế tiếp ở 001+(1/2)LSB.v.v Trị tương tự
ra ứng với 001 gọi tắt là 1LSB và trị toàn giai VFS = 7LSB tương ứng với số 111
2.2 Sai số nguyên lượng hóa (quantization error)
Trong sự biến đổi, ta thấy ứng với một giá trị nhị phân vào, ta có một khoảng điện thế tương tự ra Như vậy có một sai số trong biến đổi gọi là sai số nguyên lượng hóa và =(1/2)LSB
Trang 29Độ phân giải được hiểu là giá trị thay đổi nhỏ nhất của tín hiệu tương tự
ra có thể có khi số nhị phân vào thay đổi Độ phân giải còn được gọi là trị bước (step size) và bằng trọng lượng bit LSB
Số nhị phân n bit có 2^n giá trị và 2^n - 1 bước
Hiệu thế tương tự ra xác định bởi v0 = k.(B)2
Trong đó k chính là độ phân giải và (B)2 là số nhị phân
Người ta thường tính phần trăm phân giải:
Hình 2.9 a:Tuyến tính ,b: Tuyến tính nhưng không đúng
III GHÉP NỐI GIỮA AT89S52 VÀ PCF8591 QUA GIAO DIỆN I2C
Trang 30 I2C là viết tắc của từ Inter - Integrated Circuit là một chuẩn truyền thông nối tiếp đồng bộ do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm 1990.
Các khái niệm cơ bản trong giao diện I2C:
Master (chip chủ): là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị cần giao tiếp và tạo xung giữ nhịp trên đường SCL
Slave (chip tớ): là chip có một địa chỉ cố định, được gọi bởi Master và phục vụ yêu cầu từ Master
SDA (Serial Data): là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ hay dữ liệu đều được truyền trên đường này theo thứ tự từng bit một Chú ý
là trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền đi trước nhất
SCL (Serial Clock): là đường xung giữ nhịp nối tiếp I2C là chuần truyền thông nối tiếp đồng bộ, cần có 1 đường tạo xung giữ nhịp cho quá trình truyền/nhận, cứ mỗi xung trên đường giữ nhịp SCL, một bit dữ liệu trên đường SDA sẽ được lấy mẫu (sample) Dữ liệu nối tiếp trên đường SDA được lấy mẫu khi đường SCL ở mức cao trong một chu kỳ giữ nhịp, vì thế đường SDA không được đổi trạng thái khi SCL ở mức cao (trừ điều kiện START và STOP) Chân SDA có thể được đổi trạng thái khi SCL ở mức thấp
Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL) SDA là đường truyền dữ liệu theo 2 hướng (từ master đến slave và ngược lại), còn SCL là đường truyền xung đồng hồ chỉ truyền theo một hướng (từ master đến slave)
Hình 3 1 Truyền nhận dữ liệu giữa chủ/tớ
Trang 31 Trong một giao diện I2C thì có một thiết bị là chủ (master) và một thiết
bị là tớ (slave) Tại sao lại có sự phân biệt này? Đó là vì trên một giao diện 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 bộ cho toàn hệ thống, khi giữa 2 thiết bị chủ/tớ giao tiếp thì thiết bị chủ có nhiệm vụ tạo ra xung đồng bộ và quản lý đến 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 quá trình giao tiếp
Một giao diện I2C có thể hoạt động ở nhiều chế độ khác nhau:
- Một chủ một tớ (one master – one slave)
- Một chủ nhiều tớ (one master – multi slave)
- Nhiều chủ nhiều tớ (Multi master – multi slave)
Vài điều kiện cần biết khi thiết lập một giao tiếp I2C:
- Điều kiện START (gọi tắt là S): điều kiện START được thiết lập khi có một sự chuyển đổi trạng thái từ cao xuống thấp tại SDA, khi SCL đang ở mức cao (mức cao là 1, mức thấp là 0)
- Điều kiện STOP (gọi tắt là P): điều kiện STOP được thiết lập khi có một
sự chuyển đổi trạng thái từ thấp lên cao tại SDA, khi SCL đang ở mức cao
- Điều kiện REPEAT START (bắt đầu lặp lại): khoảng giữa điều kiện START và STOP là khoảng bận của đường truyền, các master khác không tác động được vào đường truyền trong khoảng này Trường hợp sau khi kết thúc quá trình truyền/nhận mà master không gởi điều kiện STOP lại gởi thêm 1 điều kiện START gọi là REPEAT START Khả năng này thường được dùng khi master muốn lấy dữ liệu liên tiếp từ các Slaves
Hình 3.2 Mô tả điều kiện START, STOP và REPEAT
Trang 32- Bit ACK: dùng để báo hiệu dữ liệu đã được nhận, bit ACK được tạo ra tại thời điểm xung clock thứ 9 bằng cách kéo chân SDA xuống mức thấp.
- Bit NACK: dùng để báo hiệu dữ liệu đã bị lỗi hoặc byte truyền cuối cùng, bit NACK cũng được tạo ra tại thời điểm xung clock thứ 9 bằng cách kéo chân
SDA lên mức cao
Hình 3.3 Bit ACK/NACK trong giao diện I2C
Định dạng dữ liệu truyền:
Dữ liệu được truyền trên bus I2C theo từng bit, bit dữ liệu được truyền
đi tại mỗi sườn lên của xung đồng hồ trên đườngdây SCL, quá trình thay đổi bit
dữ liệu xảy ra khi SCL đang ở mức thấp
Hình 3.4 Quá trình truyền nhận 1 bit dữ liệuMỗi byte dữ liệu được truyền có độ dài là 8 bit Số byte có thể truyền trong
Trang 33truyền đi lần lượt Sau 8 xung clock thì dữ liệu đã được truyền đi, ở xung clock thứ 9 thì bit ACK được truyền đi báo hiệu đã nhận đủ 8 bits Thiết bị truyền sau khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình truyền hoặc kết thúc.
Hình 3.5 Dữ liệu được truyền trên giao diện I2CMột byte truyền đi có kèm theo bit ACK là điều kiện bắt buộc, nhằm đảm bảo cho quá trình truyền nhận được chính xác Khi không nhận được đúng địa chỉ hay muốn kết thúc quá trình giao tiếp, thiết bị nhận sẽ gởi một xung Not_ACK (NACK) để báo cho thiết bị chủ biết Thiết bị chủ sẽ tạo ra xung STOP để kết thúc hay lặp lại một xung START để bắt đấu quá trình mới
2 Mode truyền dữ liệu giữa PCF8591 và AT89S52
2.1 Khái quát về IC PCF8591
-PCF8591 là một IC sản xuất theo công nghệ CMOS với bốn đầu vào tương tự , một đầu ra tương tự , tích hợp 2 chức năng là bộ chuyển đổi tín hiệu tương tự thành số(ADC) và bộ chuyển đổi tín hiệu số thành tín hiệu tương tự(DAC) có độ phân giải 8bit,giao tiếp theo chuẩn I2C Địa chỉ các chân A0 , A1
và A2 được sử dụng để lập trình địa chỉ phần cứng , cho phép việc sử dụng lên
Trang 34đến tám thiết bị kết nối với IC qua giao diện I2C mà không cần phần cứng bổ sung
-Một vài thông số của IC PCF8591:
• Điện áp cung cấp dùng nguồn đơn
• Điện áp cung cấp hoạt động từ 2,5 V đến 6,0 Vν
• Dữ liệu đầu vào nối tiếp và dữ liệu đầu ra thông qua chuẩn giao tiếp I2C
• Lựa chọn địa chỉ bằng 3 chân địa chỉ phần cứng A0,A1,A2
• Tỷ lệ lấy mẫu tối đa được đưa ra bởi tốc độ I2C bus
• 4 đầu vào tương tự
• Có sử dụng kênh lựa chọn tự động
• Dải điện áp tương tự từ VSS để VDD
• 8 -bit chuyển đổi A / D
• Nhân DAC với một đầu ra tương tự
• Cung cấp giám sát
• Thiết lập tham chiếu
• Vòng điều khiển tương tự
Hình 3.6 Sơ đồ chân của IC PCF8591P và PCF8591T
Trang 35Tên chân Số chân Tóm tắt chức năng
AIN0 1 Đầu vào tương tự (Chuyển đổi A/D)
AIN1 2 Đầu vào tương tự (Chuyển đổi A/D)
AIN2 3 Đầu vào tương tự (Chuyển đổi A/D)
AIN3 4 Đầu vào tương tự (Chuyển đổi A/D)
A0 5 Chân địa chỉ phần cứng của chip tớ(slave)A1 6 Chân địa chỉ phần cứng của chip tớ(slave)A2 7 Chân địa chỉ phần cứng của chip tớ(slave)
SDA 9 Đường dữ liệu nối tiếp theo chuẩn I2CSCL 10 Đường xung nhịp nối tiếp theo chuẩn I2C
EXT 12 Chuyển đổi nội bộ cho dao động đầu vàoAGND 13 Chân mass đầu ra điện áp tương tự
Vref 14 Điện áp tham chiếu đầu vào(Vref=5.0V)AOUT 15 Đầu ra điện áp tương tự (chuyển đổi D/A)
Bảng 3.1 Tóm tắt chức năng các chân của IC PCF8591
Trang 36Hình 3.7 Sơ đồ khối của IC PCF8591 -Bộ chuyển đổi tín hiệu số thành tín hiệu tượng tự trên PCF8591 hoạt động như sau:
Dữ liệu số 8bit đầu vào được lưu trong thanh ghi DAC và sau đó được chuyển đổi thành các mức điện áp khác nhau nhờ bộ chuyển đổi DAC
Bộ chuyển đổi DAC bao gồm một chuỗi các điện trở liên kết với nhau được nối với đầu vào điện áp tham chiếu bên ngoài.Thông qua các chuyển mạch ,điện áp tham chiếu Vref được chia thành 256 mức điện áp khác nhau.Dữ liệu số trong thanh ghi DAC sẽ lựa chọn chuyển mạch tương ứng giá trị được nhập vào và cho ra giá trị điện áp tương ứng trên chân DAC OUT
Trang 37Hình 3.8 Mô tả hoạt động chuyển đổi D/A của IC PCF8591-Giá trị điện áp ra được tính toán theo công thức như hình dưới
Hình 3.9 Mô tả cách chuyển đổi D/A của IC PCF8591-Bộ chuyển đổi tín hiệu tương tự thành tín hiệu số trên PCF8591 hoạt động như sau:
Trang 38Khi một chu kỳ chuyển đổi được kích hoạt,khối ADC sẽ tiến hành lấy mẫu tínđiện áp đầu vào trên kênh tương ứng được chọn rồi lưu trữ trên chíp sau đó chuyển đổi thành số 8bit nhị phân tương ứng.
Điện áp tham chiếu bên ngoài sẽ quyết định giới hạn điện áp có thể nhận biết được
Công thức chuyển đổi như sau :
Dout=(Vin-VAGND)/((Vref-VAGND)/256)
2.2 Ghép nối giữa AT89S52 với PCF8591
Trong giao tiếp I2C giữa PCF8591 và 89S52 thì chip 89S52 dóng vai trò là một master và PCF8591 đóng vai trò là một slave Do chỉ có một master và một chip slave giao tiếp với nhau nên chỉ có 2 mode (chế độ) hoạt động giao tiếp giữa 2 chip này Hai mode dó là: Data Write (từ AT89S52 đến PCF8591) và Data Read (từ PCF8591 vào AT89S52)
-PCF8591 giao tiếp theo chuẩn giao tiếp I2C nên ta cần quan tâm các byte sau :+Byte Address :
Hình 3.10 Định dạng của byte address
Trang 39Tổng quát byte address đối với PCF8591 có dạng như sau:
Bảng 3.2 Định dạng của byte address
Ba bit A2,A1,A0 sẽ xác định địa chỉ thiết bị , ở trong mạch thiết kế 3 chân địa chỉ của PCF8591 được nối cứng xuống đất nên các giá trị A2,A1,A0 sẽ bằng 0 khi giao tiếp
Bit R/W xác định chế độ đọc hay ghi
Bảng 3.3 Định dạng của bit R/W
+Byte Control :
Hai bit thấp xác định kênh đầu vào bộ chuyển đổi ADC của PCF8591
Bit thứ 2 là cờ kích hoạt chế độ tự động chuyển kênh
Hai bit 4,5 xác đinh kiểu mắc các kênh đầu vào ở dạng đơn từng kênh hay dạng
so sánh
Bit 6 là bit cho phép đầu ra bộ chuyển đổi DAC của PCF8591 được hoạt động
Trang 40Hình 3.11 Định dạng của byte Control-Khung truyền I2C của PCF8591 ở chế độ DAC:
Hình 3.12 Khung truyền I2C của PCF8591 ở chế độ DAC