Đề tài Xây dựng hệ đo điều khiển cường Đồ ánh sáng dùng PSOC

Mục lục

CHƯƠNG I

GiớI THIệU Về CảM BIếN, CảM BIếN QUANG ĐO

Cường độ ánh sáng

Trang

1.1. Giới thiệu chung về cảm biến 3

1.2. Cảm biến quang (Tế bào quang dẫn) 7

Chương II

tổng quan về PSoC

2.1. Giới thiệu về chíp PsoC 10

2.2 . Giới thiệu về chip PSoC CY8C27443-24PXI 11

2.2.1. Thông số của CY8C27443-24PXI 11

2.2.2. Các chế độ địa chỉ trong PsoC 15

2.2.3. Ngắt và bộ điều khiển ngắt 17

2.2.4. Các cổng vào ra đa chức năng 21

2.2.5. Các bộ tạo dao động 29

2.2.6. Các khối PSoC số 33

2.2.7 . Hệ thống khối PSoC tương tự. 37

2.3. Giới thiệu chung về PSoC Designer. 43

2.4. Các bước thiết kế và lập trình trong PSoC Designer. 45

Chương II

Xây dựng hệ đo, ĐIềU KHIểN CƯờng độ ánh

sáng sử dụng chip PSOC CY8C27443-24PXI

3.1. Sơ đồ khối chức năng của hệ thống. 813.2 .Sơ đồ nguyên lý và chức năng của các thành phần. 81

3.2.1. Sơ đồ mạch nguồn 81

3.2.2. Sơ đồ mạch định pha Dimmer 82

3.2.3. Sơ đồ mạch công suất 83

3.2.4. Modul giao tiếp máy tính 84

3.2.5. chíp Psoc CY8C27443-24PXI 86

3.2.6. Cảm biến quang (Quang trở) 87

3.3. Lưu đồ thuật toán 90

pdf51 trang | Chia sẻ: Thành Đồng | Ngày: 06/09/2024 | Lượt xem: 45 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng hệ đo điều khiển cường Đồ ánh sáng dùng PSOC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
có một ngắt sinh ra từ các khối chức năng trong chíp PSoC. Mỗi một khối số có một ngắt riêng và mỗi cột khối tương tự cũng có một ngắt riêng. Mỗi một ngắt cho nguồn cấp, chế độ ngủ, xung nhịp thay đổi, và một ngắt toàn cục cho các chân vào ra đa chức năng. Bộ điều khiển ngắt cùng với những thanh ghi của nó cho phép các ngắt có thể bị vô hiệu hoá đồng thời hoặc độc lập nhau. Các thanh ghi cung cấp một cách thức để người sử dụng có thể xóa tất cả những ngắt đang chờ và thông báo ngắt, hoặc có thể xoá một cách độc lập hay riêng biệt thông báo ngắt và ngắt chờ. Mức ưu tiên ngắt Địa chỉ Tên ngắt 0(Cao nhất) 0000h Reset 1 0004h Supply Voltage Monitor 2 0008h Analog Column 0 3 000Ch Analog Column 1 4 0010h Analog Column 2 5 0014h Analog Column 3 6 0018h VC3 7 001Ch GPIO 8 0020h PSOC Block DBB 00 9 0024h PSOC Block DBB 01 10 0028h PSOC Block DBB 02 11 002Ch PSOC Block DBB 03 12 0030h PSOC Block DBB 10 13 0034h PSOC Block DBB 11 14 0038h PSOC Block DBB 12 15 003Ch PSOC Block DBB 13 24 0060h I 2 C 25(Thấp nhất) 0064h Sleep Timer Bảng 2.10 : Bảng các vecter ngắt. Dẫy các sự kiện xẩy ra khi một ngắt được thi hành như sau: 1. Khi một ngắt được kích hoạt, có thể là do một điều kiện ngắt được sinh ra (do tràn bộ đếm chẳng hạn) và trước đó thông báo ngắt cho phép bởi thanh ghi mặt nạ che ngắt, hoặc có một ngắt đang chờ được xử lý và GIE (global Interrupt enable- cho phép ngắt toàn cục) được đặt từ 0 sang 1 trong thanh ghi cờ của CPU. 2. Lệnh thi hành hiện thời kết thúc ở biên giới lệnh (biên giới lệnh là thời điểm CPU chuyển từ lệnh này sang lệnh khác). 3. Thủ tục ngắt bên trong được thực hiện, tiêu tốn 13 chu kỳ máy. Trong khoảng thời gian này CPU thực hịên những công việc sau: - Lưu byte cao, byte thấp của bộ đếm chương trình (PCH và PCL) và thanh ghi cờ (CPU_F) vào trong Stack theo thứ tự trên. - Thanh ghi cờ được xoá trắng và từ đó bit GIE bị xoá về 0 và những ngắt mới sinh ra tạm thời bị cấm. - Byte cao của bộ đếm chương trình (PC[15:8]) được xoá về 0. - Vector ngắt được đọc từ bộ điều khiển vetor ngắt và giá trị của nó được đặt vào trong byte thấp của bộ đếm chương trình trỏ vào địa chỉ thích hợp trong bảng vetor ngắt. 4. Chương trình sẽ thi hành vetor trong bảng vetor ngắt. Nhìn chung thì một lệnh LJMP trong bảng vetor ngắt sẽ chuyển sự thi hành của CPU tới trình phục vụ ngắt của người dùng để phục vụ ngắt này. 5. Trình phục vụ ngắt được thi hành. Lưu ý rằng tất cả các ngắt đều bị vô hiệu hoá kể từ khi bit GIE= 0. Các ngắt khác có thể được mở lại trong trình phục vụ ngắt nếu cần thiết bằng cách đặt bit GIE=1 (hãy cẩn thận trong việc này bởi vì nó sẽ làm cho tràn stack). 6. Khi phục vụ ngắt kết thúc với lệnh RETI thì thanh ghi cờ (CPU_F), byte thấp và byte cao của bộ đến chương trình được lấy ra khỏi Stack theo đúng trình tự trên. Từ khi thanh ghi cờ (CPU_F) được khôi phục lại giá trị thì nó sẽ cho phép các ngắt (GIE=1). 7. Chương trình sẽ bắt đầu thi hành ở lệnh kế tiếp, ngay sau khi lệnh được thực hiện trước khi xẩy ra ngắt. Tuy nhiên, nếu như có ngắt đang chờ được phục vụ thì nó sẽ được thực hiện trước. 2.2.4. Các cổng vào ra đa chức năng Các cổng vào ra đa chức năng tạo cho CPU một giao diện với bên ngoài. Chúng đòi hỏi một số lượng lớn thanh ghi cấu hình để hỗ trợ cho nhiều hoạt động vào, ra bao gồm cả số và tương tự. Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access 0,xxh PRTxDR Data Registor (Thanh ghi dữ liệu ) RW:00 0,xxh PRTxIE Bit Interrupt Enable (Bit cho phép ngắt) RW:00 0,xxh PRTxGS Globol Select (Lựa chọn toàn cục) RW:00 0,xxh PRTxDM2 Driver Mode 2 (Thanh ghi hoạt động chế độ 2) RW:FF 1,xxh PRTxDM0 Driver Mode 0 (Thanh ghi hoạt động chế độ 0) RW:00 1,xxh PRTxDM1 Driver Mode 1 (Thanh ghi hoạt động chế độ 1) RW:FF 1,xxh PRTxIC0 Interrupt Control 0 (Thanh ghi điều khiển ngắt 0) RW:00 1,xxh PRTxIC1 Interrupt Control 1 (Thanh ghi điều khiển ngắt 1) RW:00 Bảng 2.11: Các thanh ghi vào ra đa chức năng. Chú ý: Ký tự “X” sau dấu phẩy trong trường địa chỉ có nghĩa là các cổng vào ra đều có riêng biệt các thanh ghi trên. Mỗi một cổng thì thanh ghi sẽ có một địa chỉ riêng. Nhưng để dễ hiểu ta chỉ cần xét chung cho trường hợp tổng quát. Các cổng vào đa chức năng đều có độ rộng là 8 bit/1cổng. Mỗi một cổng vào/ra bao gồm 8 khối GPIO giống hệt nhau. Mỗi một khối GPIO đều được kết nối với bit có số thứ tự tương ứng trong địa chỉ và thanh ghi. Bởi vậy, những thanh ghi trong bảng 2-22 thực sự chỉ dành cho một cổng (bao gồm 8 khối GPIO). Trong đó thì vị trí của các bit sẽ chỉ rõ là khối GPIO nào trong 8 khối được điều khiển với cổng vào ra. Mỗi một khối GPIO có thể được sử dụng cho những kiểu vào ra sau: - Vào ra số (Vào ra số điều khiển bởi phần mềm). - Vào ra toàn cục (Vào ra cho các khối PSoC số). - Vào ra tương tự (Vào ra cho các khố PSoC tương tự). Mỗi một chân vào ra đều có vài chế độ hoạt động cũng như là khả năng tạo ngắt. Trong khi tất cả chân đều được nối vào đường vào ra số, thì một vài chân lại không được kết nối với chức năng vào ra của khối tương tự hoặc bus toàn cục. Vào ra số. Một trong những chức năng hoạt động cơ bản của cổng vào ra đa chức năng là cho phép CPU gửi thông tin ra ngoài chíp và lấy thông tin từ bên ngoài vào. Điều này được thực hiện nhờ thanh ghi dữ liệu cổng (Port Data Register- PRTxDR). Việc viết dữ liệu vào thanh ghi PTRxDR sẽ lưu lại trạng thái dữ liệu, mỗi bit cho một chân GPIO. Trong chế độ thường (Standart Non-Bypass) thì mỗi chân GPIO sẽ lập lại bit dữ liệu đó. Nghĩa là khi ta viết một giá trị vào trong thanh ghi dữ liệu PRTxDR thì ở đầu ra của cổng tương ứng sẽ có giá trị giống như trong thanh ghi dữ liệu. Điện áp thực ở chân ra phụ thuộc vào chế độ hoạt động của chân tại bên ngoài được nối vào chân đó (Xem cấu trúc của một chân vào ra để hiều rõ thêm). CPU có thể đọc giá trị của một cổng bằng cách đọc giá trị của thanh ghi PRTxDR. Khi CPU đọc giá trị của PRTxDR thì giá trị điện áp hiện thời của chân vào ra sẽ được chuyển đổi sang giá trị logic và được trả về cho CPU. Hoạt động này sẽ đọc giá trị điện áp của chân vào ra chứ không phải là đọc về giá trị chốt của thanh ghi PRTxDR. Vào ra toàn cục (Global IO). Các cổng vào ra đa chức năng cũng được nối liền với các khối số thông qua các vào ra toàn cục. Tính năng vào ra toàn cục của mỗi cổng được mặc định ở trạng thái tắt. Để sử dụng được tính năng này thì có 2 thông số cần phải thay đổi. Thứ nhất để cấu hình cho một chân GPIO hoạt động như là một đầu vào toàn cục thì bit lựa chọn cổng toàn cục cần phải được set để yêu cầu GPIO sử dụng thanh ghi PRTxGS. Thứ hai là chế độ hoạt động của GPIO cần phải đưa về trạng thái cao trở. Để cấu hình cho chân GPIO hoạt động như là một đầu ra toàn cục thì bit lựa chọn cổng toàn cục cần phải được set lần nữa. Nhưng trong trường hợp này thì chế độ hoạt động của GPIO là bất kỳ trừ khi độ cao trở Vào ra tương tự. Tín hiệu tương tự có thể được truyền dẫn giữa CPU và chân của chíp thông qua chân AOUT của khối. Chân này được nối với khối thông qua một điện trở (khoảng 300 ). Chân vào ra đa chức năng cần phải đưa về chế độ cao trở trong trường hợp này. Các ngắt của khối GPIO. Mỗi một khối GPIO đều có thể được cấu hình một cách độc lập cho khả năng ngắt. Các khối GPIO được cấu hình cho phép lựa chọn ngắt cho từng chân và cũng có thể lựa chọn kiểu ngắt phù hợp. Nghĩa là các khối có thể sinh ra ngắt khi chân ở mức logic cao, thấp hoặc khi nó thay đổi so với lần đọc trước. Các khối đều có một đầu ra ngắt riêng (INT0), nó được nối với các khối GPIO khác bằng một kiều nối dây loại OR. Do tất cả các chân đều được nối với nhau theo kiểu OR để sử dụng chung một hệ thống ngắt GPIO. Nếu một ngắt GPIO được chia sẻ cho nhiều chân vào ra thì trình phục vụ ngắt của người sử dụng cần phải sử dụng vài kỹ thuật được thiết kế sẵn để quyết định xem chân nào được chọn là nguồn sinh ngắt. Sử dụng một ngắt GPIO yêu cầu những bước sau: 1. Đặt chế độ ngắt cho khối chân GPIO. 2. Mở bit ngắt cho khối chân GPIO. 3. Mở bit mặt nạ ngắt cho ngắt GPIO. 4. Xác nhận bit ngắt toàn cục GIE. Sơ đồ khối chính của một khối GPIO được minh hoạ trong hình 2-4. Lưu ý rằng một vài chân không có đủ các chức năng ngắt như hình vẽ mà nó phụ thuộc vào kết nối bên trong. Hình 2.3: Sơ đồ một khốiGPIO 2.2.5. Các bộ tạo dao động 2.2.5.1 Bộ tạo dao động chính bên trong. Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access 1,E8h IMO_TR Trim [7:0] W:00 Bảng 2.15: Thanh ghi của IMO. Đầu ra của bộ IM0 có 2 loại, một loại là SYSCLK có thể là nguồn xung nhịp 24MHz ở bên trong hay nguồn xung nhịp bên ngoài, một loại là SYSCLK2x có tần số xung nhịp gấp đôi SYSCLK. Khi không có đầu vào chính xác cao từ bộ dao động thạch anh 32KHz thì độ chính xác của nguồn xung nhịp 24/48MHz ở bên trong sẽ là +/- 2,5% đối với giải nhiệt độ và hai mức điện áp hoạt động (3.3V+/- 0.3V và 5.0V+/- 5%). Không cần thêm một thành phần bên ngoài nào để đạt được mức độ chính xác này. Có một lựa chọn để chốt pha của bộ dao động bên trong này sang bộ dao động thạch anh bên ngoài. Vì thế việc lựa chọn thạch anh và độ chính xác của nó quyết định tính chính xác của bộ dao động ngoài. Bộ dao động thạch anh bên ngoài cần phải ổn định trước khi chốt tần số dao động của bộ dao động chính bên trong vào nguồn xung nhịp này. Bộ IMO có thể được khoá khi sử dụng nguồn xung nhịp bên ngoài. Bởi vậy, mạch nhân đôi tần số (SYSCLK2x) có thể được ngắt để tiết kiệm năng lượng cho hệ thống. Lưu ý rằng khi sử dụng nguồn xung nhịp bên ngoài, nếu như SYSCLK2x được cần đến thì IMO không thể bị khoá. Thanh ghi IMO-TR (Internal Main Oscillator Trim Registor) Giá trị mặc định của tần số chíp cho chế độ hoạt động 5V được tải vào thanh ghi IMO_TR tại thời điểm khởi động. Bộ IMO sẽ hoạt động với độ sai lệch riêng trong dải điện áp từ 4.75 đến 5.25V khi giữ nguyên giá trị của thanh ghi này. Nếu như chíp hoạt động ở điện áp thấp, mã của người sử dụng cần thay đổi nội dung của thanh ghi này. Để hoạt động với giải điện áp 3.0 V+/- 0.3V thì phải thực hiện với một lệnh đọc bảng tới SROM (Supervisor Rom), nó có thể cung cấp một giá trị các tần số cho chế độ hoạt động này. Để hoạt động giữa hai giải điện áp này mã của người sử dụng có thể tự động thêm vào giá trị tốt nhất sử dụng hai cắt tần số có sẵn của nhà sản xuất. Bit 7-0: Những bit này lưu giữ giá trị cắt tần số của bộ IMO, giá trị của thanh ghi càng lớn thì tần số dao động của bộ IMO càng lớn. 2.2.5.2. Bộ dao động tốc độ thấp nội tại. Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access 1,E9h ILO_TR Bias Trim [7:0] Freq Trim [3:0] W:00 Bảng 2.16 : Thanh ghi ILO. ILO là bộ phát xung nhịp nội tại tốc thấp 32KHz. Nó có khả năng sinh ra ngắt để đánh thức chế độ ngủ và reset lại đồng hồ Watchdog. Bộ tạo dao động này cũng được sử dụng như là một nguồn xung nhịp cho các khối số. Thanh ghi ILO_TR Thanh ghi này đạt độ điều chỉnh cho ILO. Giá trị mặc định được đặt vào những bit Trim của thanh ghi trong quá trình khởi động. Nó dựa vào mặc định của nhà sản xuất. Nhà sản xuất khuyến cáo người sử dụng không được thay đổi giá trị của thanh ghi này. Bít 7 và 6 : Không dùng đến Bit 5 và 4: Bias Trim hai bit được sử dụng để đặt dòng điện bias trong nguồn dòng PTAT. Bit 5 được nghịch đảo vì thế chế độ bias trung bình được chọn khi cả hai bit =0. Dòng điện bias được đặt theo bảng sau. Bias Current Bit 5 Bit 4 Medium Bias 0 0 Maximum Bias 0 1 Minimum Bias 1 0 Not Needed* 1 1 Bảng 2.17 : Dòng điện bias trong PTAT. Cao hơn khoảng 15% so với chế độ Minimum Bias Bit 3 tới bit 0: Freq Trim bốn bit được sử dụng để cắt tần số. Bit 0 là bit có trọng số nhỏ nhất, bit 3 là bit có trọng số lớn nhất. Bit 3 được nghịch đảo bên trong thanh ghi, bởi vậy, mã 8h sẽ làm cho tất cả các nguồn dòng tắt (tần số = 0KHz). Một mã 0h sẽ bật nguồn dòng có trọng số lớn nhất( tần số = trung bình). Một mã 7h sẽ bật tất cả các nguồn dòng (tần số = lớn nhất). 2.2.5.3. Bộ tạo dao dộng thạch anh 32KHz (ECO) Mạch tạo dao động thạch anh 32 KHZ cho phép người sử dụng thay thế bộ tạo dao dộng bên trong (ILO) với một bộ tạo dao động bên ngoài với độ chính xác cao hơn, giá thành thấp và năng lượng tiêu hao ít. Addres s Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access 1,E0h OSC_CR0 32k Select PLL Mode No Buzz Sleep[1:0] CPU Speed [2:0] RW:00 1,EBh EC0_TR PSSDC[1: 0] W:00 X,Feh CPU_SC R1 ECO_EXW ECO_E X IRAMDI S Bảng 2.18 : Các thanh ghi của bộ dao động thạch anh. Mạch tạo dao động thạch anh sử dụng một thạch anhvà hai tụ nhỏ là thành phần bên ngoài. Tất cả các thành phần khác đều nằm trong chíp PSoC. Bộ dao động thạch anh có thể cấu hình để cung cấp một tham chiếu đến bộ tạo dao động bên trong (IMO) trong chế độ PLL (Phase Lock Loop) để tạo ra nguồn xung nhịp hệ thống 24 MHz với độ chính xác cao hơn. Chân XTALIN và chân XTALOUT hỗ trợ kết nối với thạch anh 32.768 KHz. Để có thể sử dụng bộ dao động thạch anh bên ngoài thì bit 7 của thanh ghi điều khiển bộ dao động OSC_CR0 cần phải được đặt =1 (mặc định là 0). (Xem hình 2.4). Hình2.4: Tạo bộ dao động ngoài Các bước của chương trình cần phải thực hiện trong việc chuyển đổi giữa bộ phát xung nhịp chậm nội tại sang bộ phát xung nhịp thạch anh 32 KHz như sau: 1. Tại thời điểm reset, chíp bắt đầu hoạt động và nó sử dụng bộ phát xung nhịp chậm nội tại. 2. Lựa chọn khoảng thời gian nghỉ 1 giây bằng bit[4:3] trong thanh ghi OSC_CRO như là khoảng thời gian để ổn định bộ phát xung nhịp. 3. Cho phép bộ phát xung nhịp thạch anh 32 KHz bằng cách đặt bit 7 trong thanh ghi OSC_CRO lên 1. 4. Bộ phát xung nhịp thạch anh 32KHz trở thành nguồn xung nhịp được lựa chọn tại thời điểm kết thúc một giây nói trên. khoảng thời gian nghỉ cho phép bộ phát xung nhịp có thời gian để ổn định trước khi nó trở thành nguồn cung cấp xung nhịp. Ngắt sleep không được mở trong khi việc chuyển đổi đang diễn ra. Reset lại Sleep Timer để đảm bảo khoảng thời gian nghỉ cần thiết (Nếu như nó không giao tiếp với bất kỳ một hệ thống thời gian thực nào). Lưu ý rằng bộ phát xung nhịp tốc độ thấp vẫn tiếp tục chạy cho đến khi chuyển hẳn sang bộ phát xung nhịp ngoài nhờ vào ngắt của Sleep Timer. XTALIn P1[1] XTALOut P1[1] Thạch anh Vdd Vdd C1 C2 2.2.6. Các khối PSoC số Bảng 2.32: Thanh ghi của khối PSoC số Tất cả các khối PSoC số đều có thể cấu hình để thực hiện bất cứ một chức năng nào trong 5 chức năng cơ bản sau: Bộ định thời, bộ đếm, bộ điều chế độ rộng xung, PRS, kiểm tra chu kỳ thừa (CRC). Những chức năng này được sử dụng bằng cách cấu hình một khối PSoC độc lập hay một chuỗi vài khối PSoC liền nhau để thực hiện chức năng lớn hơn 8 bit. Các khối PSoC số truyền thông có thêm hai chức năng nữa là: SPI

Các file đính kèm theo tài liệu này:

  • pdfde_tai_xay_dung_he_do_dieu_khien_cuong_do_anh_sang_dung_psoc.pdf