Giới thiệu Chip PSOC. ứng dụng PSOC trong việc thiết kế thiết bị đo nhiệt độ và độ ẩm. Giưới thiệu sơ lược về USB. Nghiên cứu truyền dữ liệu USB với máy tính. Giới thiệu Chip PSOC. ứng dụng PSOC trong việc thiết kế thiết bị đo nhiệt độ và độ ẩm. Giưới thiệu sơ lược về USB. Nghiên cứu truyền dữ liệu USB với máy tính.
Trang 1B Ộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRONG ĐO LƯỜNG ĐIỀU KHIỂN
Hà N ội, 2006
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRONG ĐO LƯỜNG ĐIỀU KHIỂN
Trang 3Lời cảm ơn
Lời đầu tiên tôi xin được gửi lời cảm ơn sâu sắc đến TS Nguyễn Quốc Cường, người đã tận tình chỉ bảo , hướng dẫn , giúp đỡ tôi trong suốt thời gian thực hiện luận văn
Tôi xin cảm ơn các thầy cô giáo ở Bộ môn Kỹ thuật Đo và Tin học Công nghiệp nói riêng và các thầy cô giáo trong Khoa Điện nói chung đã truyền thụ kiến thức cho tôi trong quá trình học tập dưới mái trường Đại học Bách khoa
Trang 4trình thực hiện luận văn tốt nghiệp với nội dung “Nghiên cứu, thiết kế thiết
bị đo các đại lượng không điện sử dụng Psoc và truyền tin USB” cho thấy
sự tiện lợi của công nghệ chip tích hợp và chuẩn USB Trước đây tôi đã từng thiết kế các mạch đo sử dụng các chip xử lý(chỉ đơn thuần là một chip xử lý)
và chuẩn truyền thông RS232 Bây giờ trong quá trình thực hiện luận văn tôi
được tiếp cận các công nghệ mới khiến tôi vô cùng hứng thú trong việc đi thiết
kế một mạch đo theo hướng hoàn toàn mới mặc dù có đôi lúc bỡ ngỡ Những
bỡ ngỡ ban đầu thực sự qua rất nhanh một khi đã quen với công nghệ Psoc Vì vậy nội dung và công việc chính của luận văn là:
Nghiên cứu công nghệ Psoc qua đó thấy được một số ưu điểm của Psoc
so với các chíp cũ Để làm rõ điều này trong quá trình thực hiện, tôi có thiết
kế một thiết bị đo nhiệt độ, độ ẩm sử dụng Psoc
Nghiên cứu truyền tin USB, cụ thể là phương pháp truyền dữ liệu trong USB và thiết kế một mạch dùng để truyền số liệu giữa một chip(được tích hợp USB) với máy tính So sánh kết quả truyền để thấy được ưu điểm của USB
Trang 5Chương 1 5
đặt vấn đề 5
1.1 Một số điểm khái quát về thiết bị đo hiện nay 5
1.1.1 Các vấn đề thường gặp khi thiết kế các thiết bị đo 5
1.1.2 Xu hướng hiện nay 7
1.1.3 Các tính năng của Psoc 10
1.2 Mục tiêu của đề tài 11
Chương 2 12
Giới thiệu chip Psoc 12
2.1 Sơ đồ cấu trúc Psoc 12
2.1.1 Sơ đồ khối chức năng của Psoc 12
2.1.2 Chế độ hoạt động các cổng vào/ra của Psoc 13
2.1.3 Các khối trong analog block 18
2.2 Tần số dao động của Psoc 21
2.3 Sự tiêu thụ năng lượng của Chip 24
Chương 3 27
ứng dụng Psoc trong việc thiết kế thiết bị đo 27
nhiệtđộ và độ ẩm 27
3.1 Giao tiếp Psoc với cảm biến nhiệt độ 28
3.2 Đo độ ẩm : 30
3.3 Kết quả thực hiện 37
Chương 4 41
Sơ lược về usb 41
4.1Giới thiệu về chuẩn USB : 41
4.2 Host USB : 43
4.3 Quá trình truyền dữ liệu của USB 44
4.4 Mô hình luồng dữ liệu USB 46
4.5 Bus Topology 47
4.5.1 USB host 47
4.5.2 Các thiết bị USB 48
4.5.3 Kiến trúc bus vật lý 49
4.6 Luồng truyền thông USB 49
4.7 Các loại truyền dữ liệu Usb 50
4.7.1.Truyền điều khiển : 50
4.7.2 Truyền ngắt : 51
4.7.3.Truyền đẳng thời 51
4.7.4 Truyền khối : 51
4.8 Các tầng giao thức của USB 52
4.8.1Trường đồng bộ : 52
4.8.2Trường số khung và trường số liệu : 53
Trang 64.9 HID 53
4.10 Sơ lược về hoạt động truyền tin trong USB : 61
Chương 5 62
Nghiên cứu truyền dữ liệu USB với máy tính 62
5.1 Một số vấn đề cần chú ý 62
5.2 Thiết kế mạch giao tiếp USB và máy tính 63
Chương 6 66
Chương trình 66
6.1 Mã lệnh chương trình chính 66
6.2 Các chương trình hỗ trợ 68
Kết luận và hướng phát triển 72
Trang 7Chương 1
đặt vấn đề
1.1.1 Các vấn đề thường gặp khi thiết kế các thiết bị đo
Hiện tại vấn đề đối với các nhà nghiên cứu và các kỹ sư thiết kế các thiết bị đo là các tín hiệu đo và việc xử lý các tín hiệu này ra làm sao để đạt
được yêu cầu cao nhất mà chi phí lại rẻ nhất Do đó vấn đề thường gặp khi thiết kế mạch đo là vấn đề xử lý các tín hiệu đo và vấn đề tích hợp Hiện nay
do sự phát triển của nền công nghiệp bán dẫn đã làm giá của các bộ vi xử lý giảm xuống tạo cơ hội cho người sử dụng có cơ hội lựa chọn một cấu hình chip hợp lý nhất Từ trước đến nay khi thiết kế một mạch đo ta luôn nghĩ ngay
đến một bộ chuyển đổi tương tự – số với số bit phù hợp yêu cầu bài toán để biến đổi tín hiệu cần đo sang tín hiệu số, như vậy mạch đo ngoài phần xử lý trung tâm cần thêm một bộ ADC hay một bộ khuyếch đại nữa Đó cũng là thói quen khi mà công nghệ bán dẫn chưa phát triển như hiện nay làm cho người thiết kế gặp rất nhiều khó khăn, do các khối cơ bản như ADC, khuyếch đại và
xử lý luôn tách rời nhau vì Tuy nhiên đó mới chỉ là một vấn đề hay gặp trong quá trình thiết kế mạch đo
Như vậy ta có thể hình dung ra một mạch đo (là một phần của thiết bị
đo ) gồm có các khối cơ bản như sau :
Trang 8Xu hướng hiện đại trong khi phát triển các hệ thống nhúng (Embeđed system ) hay các sản phẩm tương đối phức tạp , thường có các khối ngoại vi như các bộ khuyếch đai thuật toán (OPAM) bộ lọc (Filter) , các khối biến đổi
số tương tự và tương tự số Khi đó sẽ xuất hiện một số vấn đề nảy sinh như :
• Càng nhiều các thành phần thì càng chiếm không gian diện tích do
đó không nhỏ gọn
• Tiêu hao công suất do phải cung cấp cho nhiều linh kiện
Trang 9• Các vấn đề khi thiết kế mạch in ( độ phức tạp cao hơn , khó kiểm tra theo dõi và bảo trì …)
• Tốn kinh phí cho các thiết bị ngoại vi
• Sai số cho mạch đo do các thiết bị ngoại vi gây nên , dễ bị nhiễu
bộ đếm nào đó
Nếu có một loại chip có những tính năng như vậy thì một sơ đồ khối mạch đo như hình 1.1 chỉ gói gọn trong một con chip như hình mô tả 1.2 , như vậy khi đó người sử dụng chỉ cần chip này và các đầu đo ( cảm biến
…) Điều này giúp người dùng hạn chế được những nhược điểm nêu trên Một phần cũng do xu cầu hiện nay cần có một linh kiện kết hợp tất cả các thành phần trên lại với nhau Rất nhiều xu hướng thiết kế gần đây
đang chuyển sang thực hiện Soc(System on chip) Sáng tạo ra Soc với những đặc điểm kỹ thuật của chúng cho phép người thiết kế cuối cùng tính mềm dẻo để phù hợp với thiết kế của họ
Trang 10Hình 1.2
Do đó trên thị truờng bây giờ có một loại chip giúp người thiết kế khắc phục được phần nào các lý do nêu trên Đó chính là Psoc Một kiểu mới của linh kiện lập trình đã được phát triển để kết hợp tốt nhất các thành phần là vi xử lý, khối logic và khối tương tự Nó cung cấp sự giải quyết cân bằng cho nhiều ứng dụng trong thế giới thực
Vậy chip Psoc là gì ?
Với công nghệ Csoc được tích hợp cả Proceesor và bộ nhớ Ram , Flash cho phép ta lập trình các thuật toán xử lý phức tạp bằng ngôn ngữ C hay Asb
So với các vi điều khiển như họ 8051 của Atmel, Pic của Microchip …là các
họ có cấu trúc CPU ngoại vi cố định ( fixed digital and analog peripheral) thì chíp Csoc có khả năng mềm dẻo thích ứng với đa dạng ứng dụng và nhất là khả năng định dạng cấu hình tạo thành nhiều loại chip khác nhau trên một chip ở những thời điểm khác nhau trong một ứng dụng
Trang 11Công nghệ chế tạo chip thông minh trong đo lường và điều khiển trên công nghệ Csoc có tính hiệu quả kinh tế nhất là đối với chip Psoc của Cypress Micro System vì có khả năng xử lý hỗn hợp dữ liệu tương tự và số
Trước hết ta sẽ tìm hiểu thuật ngữ Psoc : là chữ viết tắt Programble system on chip là một khái niệm tương đối mới trong thế giới vi điều khiển Bản thân Psoc cũng là một dạng vi điều khiển 8 bit nhưng nó có những nét đặc trưng riêng mà các họ vi điều khiển khác không có được Đó là bên trong Psoc có các khối tương tự số khả trình Với các khối này Psoc cho phép người
sử dụng thiết lập các thiết bị ngoại vi ngay trong lòng của Psoc Các khối số ( digital block ) bao gồm nhiều khối lập trình được nhỏ hơn cho phép cấu hình theo yêu cầu người sử dụng Các khối tương tự dùng để phát triển các phần tử như : các bộ lọc , các bộ biến đổi ADC , DAC
Linh kiện Psoc bao gồm các khối mạch logic và tưưong tự có thể lập trình được và một lõi vi xử lý Chúng là những linh kiện có thể lập trình được, người thiết kế có thể tuỳ biến cấu hình linh kiện bằng công cụ phát triển trên máy tính của họ Những khả năng của chúng đặc biệt thuận lợi trong thị trường công nghệ nhúng, khi mà người thiết kế thường phải thiết kế các sản phẩm kết hợp tất cả các thành phần của hệ thống
Hãng Cypress đưa ra cách lập trình cho Psoc hoàn toàn mới
Hơn nữa phần mềm thiết kế được xây dụng trên cơ sở hướng đối tượng với cấu trúc modun hoá Mỗi một khối chức năng là một modun mềm Việc lập trình cho chip như thế nào là tuỳ thuộc vào người lập trình thông qua thư viện chuẩn Trên giao diện thiết kế có các modun như Timer , counter , PWM , ADC… người lập trình thiết lập cấu hình đơn giản trên chip chỉ đơn giản muốn chip có chức năng gì chỉ cần dùng chuột kéo chức năng đó thả vào khối tài nguyên số hoặc tương tự … Và việc thiết lập ngắt trên chân nào , loại ngắt nào , các chân có chế độ hoạt động ra sao đều phụ thuộc vào việc thiết lập của người lập trình khi thiết kế ( hay định dạng cấu hình cho Psoc )
Trang 12Với những khả năng cấu hình mạnh mẽ như trên , một thiết bị đo luờng
có thể được gói gọn trong một chip duy nhất Và đây cũng là lý do mà hãng Cypress đã không goi sản phẩm của mình là vi điều khiển như thông thường
mà gọi là Psoc device hay thiết bị Psoc và nhà sản xuất hy vọng người sử dụng
sẽ có được những thiết bị điều khiển , đo lường … giá rẻ , kích thước nhỏ gọn
có thể thay thế được các họ vi điều khiển đã có trước đây
Vậy chip Psoc có đủ tốt cho một đề án hay kế hoạch của người sử dụng
?
Có lẽ cách tốt nhất để nhận ra giá trị đích thực của Psoc là thông qua việc so sánh các chức năng :
1.1.3 Các tính năng của Psoc
Ngoài các tính năng giống các họ vi điều khiển khác thì hầu hết các ưu
điểm của Psoc được liệt kê ở dưới đây :
1 Bên trong Psoc được tích hợp các bộ khuyếch đại đảo và không đảo
điều này rất hiếm gặp trong các họ vi điều khiển hiện nay do việc tích hợp khá phức tạp(đa phần thường dùng các bộ khuyếch đại thuật toán bên ngoài)
2 MAC ( Mulyply_accumulate ) là một phần thiết yếu của những bộ xử lý tín hiệu số ( bộ phận cho phép thực hiện một cách đầy đủ các thuật toán
xử lý tín hiệu số ) Điều này thật sự giá trị khi mà hiện nay …( chưa dịch được …)
3 Các mã lệnh(code) liên quan đến các khối như ADC, Counter, Khuyếch
đại… đều có sẵn khi đó người sử dụng chỉ việc lấy ra điền tiếp một vài thông số để các khối này có thể hoạt động Có thể nói một phương pháp lập trình rất mới và hay
4 Các khối như Timer, Counter, PWM thì linh động và mềm dẻo hơn đa
số các thành phần thực thi
Trang 135 Chức năng điện áp cung cấp thấp (xấp xỉ 1V) là một cải tiến hết sức to lớn trong hệ thống hoạt động các pin
6 Đặc biệt trong trường hợp ứng dụng mà người sử dụng cần một dẫy các thành phần lớn hơn ,Psoc hỗ trợ chức năng chuyển đổi động , cho phép người sử dụng thay đổi trong thời gian chạy mà không cần dừng lại
Rất có thể Psoc chưa đáp ứng được hết những yêu cầu của người thiết kế, tuy nhiên đã tạo cho người dùng một xu hướng mới khi thiết kế một mạch đo Khi
đó người thiết kế không phải chú trọng quá nhiều đến quá trình làm mạch in, bởi vi các chip tích hợp khi đó đã bao gồm trong nó hầu hết các thành phần cần thiết cho một mạch đo Do đó việc vận dụng linh hoạt các tài nguyên có sắn trong Psoc là điều cần thiết
Xu hướng ngày nay các thiết bị có khả năng giao tiếp với PC với tốc độ rất cao (do tốc độ của chíp xử lý được nâng lên) vì vậy các phương pháp truyền thông như chuẩn nối tiếp RS232, cổng máy in… đã được thay thế dần dần bằng các phương pháp mới như USB, Bluetooth Trong đó phương pháp USB đang chiếm ưu thế trên hầu hết các thiết bị công nghệ cao do đáp ứng
được các yêu cầu về tốc độ , sự tiện lợi, khả năng tích hợp trên hầu hết các thiết bị và được hỗ trợ bởi các hệ điều hành
Trong nội dung của bản luận văn tốt nghiệp sẽ tập trung vào 2 vấn đề chính :
Nghiên cứu các khả năng tích hợp của Psoc và áp dụng Psoc trong việc
đo các đại lượng không điện Trong nội dung của luận văn sẽ thực hiện hai phép đo nhiệt độ và độ ẩm trên cùng 1 chip
Nghiên cứu chuẩn truyền thông USB và ứng dụng chuẩn truyền thông này trong việc kết nối thiết bị đo với PC để tận dụng khả năng truyền với tốc
độ cao
Trang 14Chương 2 Giới thiệu chip Psoc
2.1 Sơ đồ cấu trúc Psoc
2.1.1 Sơ đồ khối chức năng của Psoc
Vi điều khiển Psoc được thiết kế dựa trên kiến trúc 8 bit CISC Cấu trúc chung của Psoc với các khối cơ bản được thể hiện ở sơ đồ sau :
Hình 2.1
Khối CPU là phần chính của Psoc có mục đích là thực hiện các lệnh của chương trình và điều khiển kiểu workflow các khối khác
Trang 15Khối các tần số ( frequency generator ) dễ dàng tạo ra các tín hiệu cần
thiết cho sự hoạt động của CPU cũng như là một dẫy các tần số mà được sử dụng bởi các khối khả trình Những tín hiệu này có thể được dựa trên các nguồn dao động bên trong Psoc hay từ bên ngoài
Reset controller có khả năng làm cho vi điều khiển bắt đầu các hoạt
động và mang vi điều khiển đến một trạng thái hợp lệ trong trường hợp có một vào sự kiện bất thường xảy ra
Watchdog timer có tác dụng để phát hiện các lỗi phần mềm ( ở một
câu lệnh nào đó bị lặp đi lặp lại nhiều lần không thoát ra được gọi là dead_loop )
Sleep timer có tác dụng đánh thức timer một cách đều đặn từ chế độ
tiết kiệm năng lượng Và nó có thể được sử dụng như như một timer bình thường khác
Các chân vào và ra có khả năng giao tiếp giữa các khối CPU , các khối khả trình số và tương tự và các thiết bị bên ngoài
Khối điện áp chuẩn rất cần thiết cho sự làm việc của các thành phần tương tự có ngay bên trong các khối tương tự khả trình
2.1.2 Chế độ hoạt động các cổng vào/ra của Psoc
Một trong các khả năng nổi bật của Psoc đó là các chế độ hoạt động của các cổng vào/ra của Psoc Một cổng vào ra tuỳ thuộc vào yêu cầu của bài toán
có thể thực hiện chức năng này nhưng khi sang một ứng dụng khác nó lại có những chức năng hoàn toàn khác điều này thực sự đem lại điều bất ngờ cho người sử dụng đặc biệt là những người có khả năng kết hợp khéo léo các chức năng này
Các chân của chip Psoc có khả năng thay đổi chế độ hoạt động tuỳ theo yêu cầu của người sử dụng , các chân của chip Psoc có các chế độ hoạt động sau :
1 Đầu ra logic có thể cung cấp dòng đến 25mA với các điện trở Pull up hay Pull down bên trong
Trang 162 Thay đổi được ngắt trên từng chân ( không quy định cứng chân nào là ngắt như họ 89 của Atmel ) Tức là có thể chọn chân này là ngắt lúc này và lúc khác nó chỉ là các chân vào ra thông thường
3 Các cổng ra tương tự có thể cung cấp dòng lên đến 40mA
4 Các chân có chế độ vào ra ba trạng thái (Trigger Schmitt)
5 Có nhiều cổng vào ra đa chức năng trên chip Các chip Psoc có cấu trúc CPU 8 bit dựa trên cấu trúc Harvard ( là cấu trúc phổ biến hiện nay mà trong đó bus dữ liệu bus địa chỉ và tín hiệu điều khiển độc lập với nhau )
Các cổng vào ra đa chức năng trong Psoc :
Thế nào là các cổng vào ra đa chức năng : các cổng vào ra đa chức
năng cung cấp cho CPU một giao diện với bên ngoài bao gồm cả tương tự lẫn
số
• Các cổng vào ra đa chức năng có độ rộng là 8 bit / một cổng và mỗi một cổng này lại bao gồm 8 khối GPIO giống hệt nhau Mỗi một khối GPIO được sử dụng cho các kiểu vào ra như sau :
1 Vào ra số ( các kiểu vào ra số được điều khiển bằng phần mềm )
2 Vào ra toàn cục
3 Vào ra tương tự ( cho các khối tương tự )
Trang 17Hình 2.2
Sơ đồ khối chính của một khối GPIO được mô tả như hình 3.2 Tuy nhiên một vài chân không có dủ những chức năng như trong hình vẽ điều này phụ thuộc vào kết nối ở bên trong
Lưu ý một số chế độ (trạng thái) chân mà Psoc có ( điều này là rất cần
thiết khi thiết kế để chọn chế độ cho đúng ) được định nghĩa trong các bit DM2, DM1.DM0
1 Strong : được sử dụng khi người sử dụng phải nối trực tiếp các
trạng thái trong thanh ghi PRTxDR tới các chân Sự kết nối này
được cung cấp khi các chân được sử dụng như đầu vào
Trang 18Hình 2.3
2 Analog Hi_z : Chế độ này được sử dụng ta cần kết nối với các tín hiệu analog ( như bộ biến đổi AD ) Trong chế độ này tất cả các kết nối bên trong giữa thanh ghi PRTxDR và các chân sẽ không còn được duy trì ( không còn được kết nối nữa ) vì vậy nó sẽ không can thiệp vào các giá trị điện áp mang nữa(tức là không có
sự kết nối với đầu vào ra số nữa)
Hình 2.4
3 Chế độ Pull_up và Pull_down ( các điện trở treo ) : được sử dụng khi ta kết nối các nút bấm hoặc các thiết bị khác mà có yêu cầu giống như vậy những Các điện trở này dùng để hạn chế các trạng thái của đầu vào khi các phím bấm không được sử dụng
4 Open drain : Chế độ này được sử dụng khi ta cần kết nối một vài thiết bị trên cùng một đường , khi đó nó cần phải thêm vào một
điện trở treo lên hay treo xuống Chế độ này rất thuận tiện khi
đầu ra công suất ở mức thấp còn ở mức cao thì là cực máng bỏ ngỏ
Trang 19Hình 2.5
• Vào ra toàn cục :
Các cổng vào ra đa chức nă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 , tuy nhiên 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 Muôn sử dụng ta cần phải thực hiện một số thao tác sau :
1 Để cấu hình cho một chân GPIO như một cổng vào ra toàn cục thì bit lựa chọn toàn cục phải được set để yêu cầu GPIO sử dụng thanh ghi PRTxGS
2 Đặt chế độ hoạt động của GPIO về trạng thái cao trở
Khi muốn cấu hình cho GPIO hoạt động như một đầu ra toàn cục thì bit lựa chọn toàn cục cần phải set lên lần nữa và khi đó chế độ hoạt động là bất kỳ ngoại trừ chế độ 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 chip 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 300Ohm) Chân vào ra đa chức năng cần phải đưa vào chế độ cao trở trong trường hợp này
Lấy một ví dụ cụ thể về chip Psoc CY8C27443 (họ Psoc này
được sử dụng trong luận văn) để ta dễ hình dùng về cách bố trí các chân vào ra tương tự : Các chân của Port 0 đều là các chân vào hoặc ra tương tự( hoặc là
Trang 20cả hai chế độ vào và ra trên cùng một chân ) cũng như 4 chân thấp của Port 2
là các đầu vào tương tự Tuy nhiên lại có sự khác biệt giữa hai Port này như sau : các đầu vào của Port 0 được nối đến các khối tương tự trong Psoc thông qua các bộ dồn kênh tương tự , trong khi đó các chân của Port 2 lại được nối trực tiếp khả trình SC Trong Psoc các đầu ra ( output) có thể được nối 4 bộ
đệm ra
2.1.3 Các khối trong analog block
Các khối analog khả trình được tập hợp thành những cột của 3 khối khả trình Số lượng các cột này phụ thuộc vào họ của Psoc có thể là 1 , 2 hoặc cột Từng cột lại có các đầu vào của bộ dồn kênh
Cấu trúc bên trong Psoc : Để có thể hiểu rõ hơn về Psoc ta xét đến cấu trúc bên trong của Psoc , để tìm hiểu vấn đề này không có gì khó khăn vì phần mềm Psoc designer có giao diện giúp người sử dụng có thể nhìn thấy các khối chức năng bên trong Psoc Điều này có thể hiểu như sau các khối tương tự và các khối số được nằm tách biệt với nhau thành 2 phần tách biệt nhau, mỗi phần lại được nối với nhau tương tự như một mạch điện Giả dụ nếu người sử dụng muốn sử dụng chức năng Counter thì chỉ việc hối chung vào bus của hệ thống đồng thời cung cấp xung clock … Còn trong trường hợp không muốn sử dụng ta chỉ cần ngắt bỏ sự nối kết của khối chức năng đấy với hệ thống bus của chip bên trong Psoc được hỗ trợ bằng đồ hoạ rất tiện cho việc ghép nối các khối Phạm vi người sử dụng chỉ cần biết đến cách hoạt động của các khối và việc ghép nối thế nào cho đúng , đây cũng chính là tính mềm dẻo của Psoc so với các họ vi điều khiển khác Còn việc lập trình cho Psoc cũng không khác các chip
Trước hết là các khối số khả trình :
Chú ý một điểm : Các bộ phận của khối số như timer , counter … được cấy bên trong các khối khả trình thì không được nối trực tiếp tới các chân input và
Trang 21output Theo sơ đồ mô tả (hình 2.6 ) nhóm của 4 khối số khả trình cho thấy :
sự kết nối các chân đ−ợc thiết lập bằng cách sử dụng các dây kết nối toàn cục , các bộ dồn kênh và các dây của khối khả trính số ( hình vẽ chỉ minh hoạ một nhóm gồm 4 khối số )
Hình 2.6 Nhận thấy trên sơ đồ có các cột đánh số từ 0 đến 7 là GIO và GIE ở bên trái sơ
đồ , đây chính là các dây nối toàn cục giành cho đầu vào , các dây này thiết lập sự kết nối giữa các chân và các bộ dồn kênh Các dây này đ−ợc chia làm hai nhóm là GIO và GIE , các dây GIO chỉ đ−ợc phép kết nối vào các Port lẻ ,
ví dụ nh− GIO_0 chỉ có thể nối tới chân số 0 của các Port lẻ nh− P1[0] , P3[0]
… và các GIE (giành cho Port chẵn )thì ng−ợc lại
Hình 2.7
Trang 22Và ở phía trên của hình 2.8 ta thấy một loạt các dây khối đầu vào ( Input Block lines ) , việc kết nối giữa các GIO hay GIE với dây này thông qua một
bộ dồn kênh Mux được thể hiện trên hình 3.9 Bộ dồn kênh này chọn một trong các dây toàn cục và nối nó với dây mang tín hiệu để dẫn nó tới các khối
số cần được nối
Hình 2.10 Bên trong các khối số khả trình ngưới sử dụng có thể thể định cấu hình cho các thành phần như : timer , counter , PWM , … và các thiết bị cho SPI , cổng hồng ngoại và UART Quá trình thiết đặt và kết nối rất đơn giản để hiểu nhưng trước hết người sử dụng cần phải hiểu hết các chức năng và cách hoạt
động của các thàn phần này Hâu hết các thành phần như bộ đếm , PRS và các
bộ phát CRC có thể được cất phần trong bất kỳ các khối nào Mặt khác , các thành phần truyền thông như Rx , Tx , và SPI có thể được đặt mặt phải của các khối khả trình
Số lượng cần thiết các khối mà được sử dụng cho các thành phần khi cấu hình như sau :
Bảng 2.1 Số bit của các bộ Counter , Timer và PWM
Số lượng các khối Các thành phần
1 Counter 8bit , timer 8 bit , PWM 8
2 Counter 16 , timer 16 , PWM 16 , UART
3 Counter 24 , timer 24 , PWMDB 24
4 Counter 32 , timer 32
Trang 232.2 Tần số dao động của Psoc
Tín hiệu tần số này được cần đến cho sự làm việc của các thành phần số Phụ thuộc vào tốc độ mong muốn nên có một vài khoảng giành cho sự lựa chọn này như sau :
• Các tín hiệu tần số nội bộ như VC1 , VC2 , VC3 , SYSCLKx2 , CPU_32
• Và tận dụng luôn đầu ra của các khối gần kề làm tần số hoạt động
• Các đường dây quảng bá (Broadcast line) được dùng cho các khối muốn
có cùng tốc độ
• Input (RI) hay ouput (RO) của các block line
Các tín hiệu thông dụng la VC1 , VC2 và VC3 bởi vì nó có các giá trị khác nhau để người sử dụng lựa chọn cho thiết kế của mình Nếu các tần số VC1 , VC2 , VC3 không thể cung cấp tần số danh định ( do các khoảng để lựa chọn tần số là có giới hạn do vậy không thể tần số nào cũng dùng VC1 ,VC2 và VC3 được ) khi đó ta có thể tận dụng các đầu ra của counter , timer hoặc PWM như là các tần số thêm vào được đặt trước Hình vẽ phía dưới sẽ chỉ cho chúng ta biết cách nối một cách trực tiếp từ một đầu ra của một khối tạo dao
động như Counter hay PWM tới một khối liền kề với nó Thuận tiện hơn nữa
là nếu tín hiệu này được nối ngang qua một vài khối khác , thì việc kết nối sẽ
đựoc thực hiện dây BC
Hình 2.11
Trang 24ở hình vẽ trên đầu ra của PWM được nối tới dây BC và các khối khác có thể
sử dụng tần số bằng cách nối trục tiếp tới dây BC này
Tần số phát :
Các tần số này rất cần thiết cho các chức năng của khối CPU , như là các khối khả trình Mỗi tành phần khả trình đương nhiên luôn có những yêu cầu về tốc độ Do vậy chip Psoc có một hệ thống phát ra các tín hiệu tần số khác nhau và việc này được thực hiện bằng cách chọn cáckhối đồ hoạ với thông số thích hợp So đồ dưới sẽ chỉ cho ta thấy hai hệ thống độc lập với nhau cho việc phát ra những tín hiệu như SYSCLK và SYSCLK 32k
• Trong đó SYSCLK là tín hiệu xung nhịp chính bên trong chip Psoc với
tốc độ là 24Mhz Nó được sử dụng để làm chuẩn cho các hầu hết các tín hiệu khác
• SYSSCLKx2 là tín hiệu xung nhịp có gái trị gấp đôi tín hiệu SYSCLK
• 24V1 là tín hiệu nhận được bằng cách chia tần số SYSCLK với thông số
cho trước là N1 ( có giá trị từ 1 ữ 16 ) Như vậy 24V1 = SYSCLK/N1
và có giá trị nhỏ nhất là 1.5Mhz (với N1 = 16 ) và lớn nhất 24Mhz (với N1 = 1)
• 24V2 lại là tín hiệu có được bằng cách chia tần số 24Mhz với các giá trị
là N1*N2 ( N1 , N2 đều trong khoảng 1 ữ16) Như vậy 24V2 = SYSCLK/N1N2 và có giá trị trong khoảng từ 93.75khz đến 24Mhz( N1
= N2 =1)
• 24V3 là tín hiệu có được bằng cách chia các tín hiệu tần số sau : 24V1 ,
24V2 , SYSCLK , SYSCLKx2 với số bị chia N (N ∈[1…256] )
• CPU_CLK được sử dụng như một khối tần số CPU và có ảnh hưởng
trực tiếp tới tốc độ thực hiện các câu lệnh CPU_CLK có 8 tần số bất
kỳ trong khoảng 93.75Khz đến 24Mhz
Trang 25Sự lựa chọn tần số 24V1 , 24V2 , 24V3 và CPU_CLK đ−ợc thực hiện rất là dễ dàng bằng cách đặt các thông số thích hợp trong quá trình Device Editor ( đặt cấu hình hoạt động cho chip ) hoặc trong suốt quá trình chạy bằn việc lựa chọn 3 bit thấp của thanh ghi OSCCR0
• CLK32K là một tín hiệu chậm với tần số là 32K , nó có thể đ−ợc sử
dụng nh− các programmble component input Tần số này cũng đ−ợc sử dụng trong chế độ sleep timer khi đó các tần số SYSCLK khác sẽ không
hoạt động
Hình 2.12 Mô tả các tín hiệu bên trong Psoc
Các nguồn tín hiệu dùng cho quá trình hoạt động của Psoc đ−ợc mô tả trên hình 2.12
Tín hiệu SYSCLK có thể đạt đ−ợc bằng cách sử dụng bộ dao động chính bên trong chip ( Internal Main Oscillator _IMO) Và tín hiệu CLK32k có thể đạt
Trang 26được bằng các bộ dao động cục bộ bên trong ( Internal Local Oscillator _ILO)
2.3 Sự tiêu thụ năng lượng của Chip
Các tín hiệu tần số CPUCLK có ảnh hưởng trực tiếp tới tốc độ thực thi
các lệnh của chip ( do được nối trực tiếp bộ tạo xung nhịp của CPU ) Nếu tăng gấp đôi tần số , quá trình thực hiện chương trình cũng tăng lên xấp xỉ gấp
đôi Mặt khác tần số cao hơn không phải lúc nào cũng cần thiết trong tất cả quá trình thực hiện Một sự bất lợi chính trong việc tần số tăng lên đó là những hiệu quả không mong muốn trong việc tiêu thụ năng lượng , là một trong vấn đề chính trong trường hợp sử dụng nguồn pin hay ắc quy Điểm bất lợi khác của tần số cao dễ bị ảnh hưởng của nhiễu điện từ ở xung quanh thiết
bị Do vậy chúng ta cần phải lựa chọn một tần số thấp nhất mà thoả mãn những điều kiện nêu trên Tần số mặc định bên trong chip Psoc là 3Mhz nên
có sự chọn lựa hợp lý giữa tôc độ và tiêu thụ
Hầu hết các họ vi điều khiển chỉ hoạt động một cách theo định kỳ và sẽ
ở trạng thái không làm gì trong suốt thời gian nào đó ( chẳng hạn đợi một ngắt nào đó xảy ra… ) Do đó ta có thể tiết kiệm được nguồn năng lượng cuang cấp cho chip bằng cách đưa vi điều khiển tới chế độ sleep ( ngủ không làm gì ) trong lúc vi điều khiển không đóng vai trò quan trọng nào trong hệ thống Sở
dĩ việc tiết kiệm có thể đạt được là do tất cả các tần số , loại trừ CPU32k và SLEEP là vẫn hoạt động , trong lúc bộ vi xử lý dừng việc thực thi các lệnh
Và vi điều khiển có thể được kích hoạt ngay lập tức từ chế độ sleep trở lại chế
độ hoạt động bình thường chỉ bằng reset hay một ngắt Ngắt này có thể được phát ra bởi sleep timer hoặc từ một vài khối số sử dụng tần số CPU_32k , các ngắt từ các chân GPIO và các cột tương tự cũng có thể được sử dụng cho mục
đích đánh thức CPU Sleep Timer đóng vai trò như một bộ counter đặc biệt
mà chức năng chính của nó là phát ra những ngắt định kỳ có thể đánh thức
Trang 27CPU từ chế độ tiết kiệm năng lượng Tần số ngắt của sleep timer trong phạm
vi từ 1 đến 512Hz Cần có một loại ngắt tương ứng dùng để đánh thức (kích hoạt ) vi điều khiển từ chế độ sleep Bắt đầu một trạng thái mới nghĩa là các thanh ghi được cho các giá trị hoạt động và chương trình tiếp tục thực hiện những công việc của nó từ trạng thái ban đầu
• Trong Psoc có một chế độ đặc biệt đó là chế độ SMP( Switch Mode Pump )
Chế độ này được dùng như một nguồn cung cấp cho Psoc hoạt động
Vậy SMP là như thế nào ? Quan sát hình 2.12 ta nhận thấy SMP hoạt động dựa trên nguyên lý biến đổi BOOSTDC/DC Loại biến đổi này mang giá trị
điện áp cao hơn điện áp của pin cung cấp (nguồn nuôi) (hình ảnh minh hoạ 2.13 cho thấy pin chỉ cần 1.5V) Để chế độ SMP có thể hoạt động ngoài pin ta cần nối thêm diode, cuộn cảm và tụ điện Khi hoạt động ở chế độ này chân số
9 của Psoc có thể kích nguồn lên đến điện áp mà Psoc có thể hoạt động
được(tuy nhiên dòng lại hơi nhỏ do vậy không ứng dụng được trong các bài toán lớn )
Hình 2.13
Trang 28• Reset
Trong suốt quá trình hoạt động của vi điều khiển , sự thay đổi hay bất ổn định của nguồn cung cấp có thể xảy ra bất kỳ lúc nào Và điều này thật sự là nguy hiểm khi điện áp rơi ở dưới mức giới hạn cho phép vì vi điều khiển sẽ bị những tác động không thể tiên đoán trước được Trong trường hợp phát hiện
điện áp rơi vi điều khiển lập tức chuyển sang chế độ reset nguồn ( Power on reset ) và ở chế độ này đến khi điện áp trở lại ổn định trên mức tới hạn quy
định
Trang 29Cụ thể trong ứng dụng thiết bị đo sẽ gồm có 8 khối số và 12 khối analog , những khối này có thể được kết nối tuỳ theo nhu cầu sử dụng và lập trình để
đưa ra các chức năng khác nhau Giả dụ ta muốn sử dụng tính năng truyền thông song công (cho cổng Com ) khi đó hai khối số sẽ được chỉ định một giành cho việc nhận dữ liệu một đảm nhận chức năng truyền dữ liệu
Trong chương này em xin được đề cập đến công việc được thực hiện trong luận văn đó là việc thiết kế thiết bị đo nhiệt độ và độ ẩm sử dụng Psoc Công việc được chia làm 2 phần :
1 Thiết kế mạch đo nhiệt độ
Trang 30Hình 3.1
3.1 Giao tiếp Psoc với cảm biến nhiệt độ
Cách đo nhiệt độ nếu sử dụng một vi điều khiển truyền thống :
Sẽ gồm các thành phần cơ bản sau về mặt nguyên lý nh− sau : một khối khuyếch đại để khuyếch đại điện áp ra từ cảm biến nhiệt độ lên một điện
áp thích hợp sau đó sẽ là bộ biến đổi ADC để biến đổi tín hiệu này sang dạng số để vi điều khiển xử lý
Tuy nhiên khi sử dụng Psoc trên hình 3.1 em chỉ cần kết nối cảm biến nhiệt độ LM35 với Psoc là đủ Công việc thực hiện nh− mạch đo truyền thống sẽ đ−ợc bên trong Psoc xử lý
Trang 3115 16 17 18 19 20
25 26 27 28
11 12 13 14
21 22 23 24
P0_7/AI P0_5/AIO P0_3/AIO P0_1/AI P2_7 P2_5 P2_3/AI P2_1/AI SMP P1_7/SCL
P1_0/XTALout/SDA
P1_2 P1_4/EXTCLK P1_6 XRES P2_0/AI
P0_2/AIO P0_4/AIO P0_6/AI VDD
P1_5/SDA P1_3 P1_1/XTALin/SCL VSS
P2_2/AI P2_4/Ext AGND P2_6/Ext Vref P0_0/AI
Hình 3.1
Linh kiện được sử dụng :
• Cảm biến nhiệt độ LM35
• Psoc loại CY8c27443
ở đây nhiệt độ được đo bằng sesor nhiệt độ loại LM35DZ , đầu ra của sensor sẽ là một điện áp có giá trị phụ thuộc vào sự thay đổi tuyến tính của nhiệt độ môi trường và có thể đo được nhiệt độ ở trên 32°F mà không cần thiết bị hỗ trợ thêm vào Thay đổi tuyến tính 10mV/°C , và ở 32°F thì sẽ có
điện áp ra là 0V Do tín hiệu 10mV không đủ lớn để đưa vào bộ ADC , vì vậy chip Psoc được định dạng để tạo ra một khối khuyếch đại (PGA) cỡ 8 lần ( và
sử dụng mất tài nguyên của Psoc một khối analog ) Trong trường hợp điện áp cung cấp là 5V và sử dụng ADC 12 bit để biến đổi thì nhiệt độ đo có thể tính bằng công thức dưới đây :
Tempout(°C) = [(5V/4096steps)(ADCval)+2.5V](1°C/80mV)
Tempout(°C) = (0.0152588*ADCval + 31.25 ) °C
Tính toán nhiệt độ : kết quả nhiệt độ đạt được bằng cách đọc các giá trị trong ADC và sử dụng công thức ở trên
Trang 323.2 Đo độ ẩm :
Trong phạm vi của luận án em có dùng sensor độ ẩm loại HS1101(đo độ
ẩm của không khí ) có các thông số kỹ thuật như sau :
• Giải nhiệt độ hoạt động trong khoảng từ -40°
C - 100°C
• Khả năng đo độ ẩm trong khoảng từ 0 đến 100 %RH
• Với giá trị điện dung là 0.34pF thì tương đương với 1%RH
• Điện dung của HS1101 trong khoảng 177pF(tương đương độ ẩm
là 55%) và lớn nhất được là 180pF
…
Hình 3.2 Trên bề mặt của cảm biến có các khe hở tiếp xúc với không khí
Hình 3.3 Nhận xét trên đồ thị hoạt động của HS1101 nhận thấy
Để đo được độ ẩm ta có thể dùng phương pháp đo như sau :
Trang 33THR DSCHG
R4
3.5-12V
Fout
C1 HS1101
Do việc nạp và xả của cảm biến thông qua hai điện trở khác nhau R2 và R4 Toàn bộ quá trình đ−ợc tính toán nh− sau :
tnạp = C*(R2+R4)*ln2 txả = C*R2*ln2
Và chu kỳ dao động là :T = Tnạp + Tphóng = 0.693(R4 + 2R2)
Và tần số dao động sẽ là :f = 1/T = 1.443/((R1 + 2R2)*C)
Trang 34Vì vậy sử dụng một thiết bị đo tần số đầu ra của IC 555 ta có thể xác
định được điện dung C từ đó có được dộ ẩm tương ứng Như vậy một mạch đo độ ẩm phải gồm những linh kiện như trên và phải gồm các linh kiện đo tần số như các bộ đếm chưa kể đến các linh kiện xử lý bộ đếm
được để từ đó tính ra điện dung để xác định độ ẩm là bao nhiêu Vì vậy mạch đo là khá phức tạp , lại không đạt được độ chính các cao do phải qua nhiều khâu xử lý
R1 1M
P1[6]
LCD_6
TX232 RX232
15 16 17 18 19 20
25 26 27 28
11 12 13 14
21 22 23 24
P0_7/AI P0_5/AIO P0_3/AIO P0_1/AI P2_7 P2_5 P2_3/AI P2_1/AI SMP P1_7/SCL
P1_0/XTALout/SDA
P1_2 P1_4/EXTCLK P1_6 XRES P2_0/AI
P0_2/AIO P0_4/AIO P0_6/AI VDD
P1_5/SDA P1_3 P1_1/XTALin/SCL VSS
P2_2/AI P2_4/Ext AGND P2_6/Ext Vref P0_0/AI
5V
U1?
HS 1101
2 1
2 1 TP6
độ ẩm là 100%) để đưa ra độ ẩm tương đương Khi áp dụng Psoc cũng gần như là dựa trên nguyên lý dùng IC555 nhưng các công việc này hầu như được thực hiện trong nội bộ Psoc
Quá trình thực hiện như sau :
Chân P2[6] là chân vào ra đa chức năng (GPIO) được nối với thông qua một điện trở cảm biến HS1101 , như vậy chân GPIO
Trang 35này có chức năng nạp điện cho HS1101 thông qua một điện trở ( HS1101 có chức năng như một tụ điện có điện dung thay dổi phụ thuộc vào độ ẩm môi trường ) Sau một thời gian nào đấy chân này sẽ được nối đất và cho phép HS1101 xả điện tích mà nó đã
được nạp Theo sơ đồ nguyên lý thì chân P[0] được nối tới sensor
và bên trong chip của nó được nối một bộ so sánh Đầu ra của bộ
so sánh được nối với một bộ đếm 16 bit theo sơ đồ dưới đây Khi
điện áp của HS1101 rơi xuống thấp hơn một ngưỡng đã được chọn thì bộ so sánh sẽ lật trạng thái và không cho phép bộ đếm hoạt động Sau đó bộ đếm sẽ được đọc và thực hiện công việc tính toán để xác định ra độ ẩm tương ứng
Các công thức liên quan đến phương pháp đo độ ẩm :
Như đã biết một công thức chuẩn để xác định sự phóng nạp của mạch RC như sau :
số cung cấp là 6Mhz do đó ta có thể xác định rõ giá trị của bộ counter
và giá trị nầy bị hạn chế trong khoảng là 809 đến khoảng 1003 counts (
số đếm ) nhận thấy giá trị max chênh với giá trị min là 103 counts đó là
sự chênh lệch về độ ẩm từ 0% đến 100% RH
Trang 36Giả sử độ ẩm là 0% sẽ tương đương với giá trị của cảm biến HS1101 một giá trị là 162pF, như vậy biết được T ta có thể xác định được giá trị C theo 3.2 và từ đó suy ra độ ẩm tương đương (0.34pf tương đương với một
đơn vị của độ ẩm %RH) Khi đó ta lấy đựoc số đếm trong thanh ghi của bộ đếm ( bộ đếm sẽ được khởi động ngay khi tụ bắt đầu xả và kết thúc khi qua trình này ngừng )
Như vậy mỗi %RH tương ứng với 2 số đếm của bộ đếm 16 bit
Thực hiện chương trình trong ứng dụng như sau :
Mô tả chương trình : Khi đó chương trình sẽ set chân P2[6] lên giá trị là 1 để cho phép HS1101 nạp Sau một khoảng thời gian trễ cho phép để HS1101 đã nạp
đầy , trong khoảng thời gian này các ngắt sẽ bị cấm để không bị ảnh hưởng đến quá trình nạp , và sau khi đã nạp đầy P2[6] sẽ bị nối xuống
đất bên trong Psoc ( set chân P2[6] xuống 0 ) quá trình này đồng nghĩa với việc xả điện trong HS1101 và ngay lập tức một bộ đếm 16 bit được khởi động
Khi đó phần mềm sẽ lặp đi lặp lại đợi đến khi bộ so sánh trạng thái phát hiện ra là HS1101 đã xả điện áp để biết mức Sau đó các thanh ghi bộ
đếm đựoc đọc để xác định thời gian xả của HS1101 là bao lâu ? Trong trường hợp này hằng số Humidity_Offset được trừ từ số đếm để cho phép một số dao động trong sensor Như ta đã biết ở trên mỗi %RH được thay thế bởi khoảng hai số đếm trong bộ đếm
Sơ đồ thuật toán được thể hiện ở lưu đồ dưới đây :
Trang 37Sơ đồ thuật toán xử lý sensor đo độ ẩm :
Trang 38Bắt đầu
Bắt đầu nạp ( P2[6] = 1)
Tạo trễ chờ nạp đầy
Cấm các ngắt
Ngng quá trình nạp (P2[6] = 0) Khởi động Counter