Yêu cầu của đề tài
Trong cuộc sống hiện tại, khoa học kỹ thuật phát triển rất nhanh, những công cụ ra đời sẽ giúp giải phóng sự lao động trí óc: nghiên cứu, cải tiến, sáng tạo Chỉ tiêu của khoa học kỹ thuật là làm sao nâng cao được chất lượng và hiệu suất công việc, hầu như công nghệ tự động ra đời là đáp ứng nhu cầu đó Cho nên, em đã nghiên cứu về đề tài “ Điều khiển giám sát nhà cao tầng dùng vi xử lý 89C51 qua mạng RS-485. Các kít vi xử lý này có thể hoạt động hoàn toàn độc lập theo một chương trình lập sẵn. Bên cạnh đó, chúng còn có thể được giám sát và điều khiển các thiết bị trong từng phòng thông qua gởi lệnh đến đúng kít vi xử lý cần điều khiển để thi hành lệnh đó. Ngoài việc điều khiển các thiết bị dùng điện trong phòng, ta còn có thể đảm bảo an ninh cho từng phòng bằng hệ thống phát hiện cháy, phát hiện trộm bằng cảm biến quang.
Một chuyên gia về công nghệ nhà thông minh ( Home Automation ) – Kenne P.Wacks – đã viết một bài báo giới thiệu về ngôi nhà thông minh như sau:
“ Hơn 6 năm qua, một công nghệ mới gọi là công nghệ nhà thông minh đã được nghiên cứu và phát triển Công nghệ này sẽ tạo nên một thế hệ mới của các thiết bị cung cấp cho người dùng chúng Những công nghệ trước đó cùng với khái niệm ngôi nhà thông minh sau này sẽ tạo nên những sản phẩm và loại hình dịch vụ mới mẻ trong tương lai Một số ít các công ty đang giới thiệu về ngôi nhà tự động Một vài công ty lớn và các viện nghiện cứu đang thăm dò công nghệ mới nhưng đầy tiềm năng này Mạng truyền thông trong nhà sẽ cung cấp những cơ sở hạ tầng để liên kết các thiết bị cảm biến, bộ điều khiển và bảng điều khiển trong nhà Điều này sẽ trở nên khả thi bằng cách tạo ra sự phát triển công nghệ truyền thông trong những ngôi nhà tự động.
Trong ngôi nhà thông minh từ “thiết bị” không chỉ đề cập đến các dụng cụ trong nhà bếp, thiết bị video/audio, các hệ thống có thể dịch chuyển , các thiết bị chiếu sáng, thiết bị sưởi ấm, làm lạnh, hệ thống an ninh Công nghệ này sẽ bật đèn xanh cho các công ty nghiên cứu cho ra đời những sản phẩm và hình thức dịch vụ mới Các sản phẩm này sẽ có chung điểm tương đồng nào đó hay là những thuộc tính tương tự nhau Các thuộc tính đó là:
Vai trò của các thiết bị trong nhà thông minh: hầu hết các thiết bị trong nhà đều có vỏ bằng nhựa hay kim loại Một vài thiết bị vận hành độc lập với các thiết bị khác Tuy nhiên cũng có những dụng cụ cần có một thiết bị khác điều khiển nó. Các thiết bị trong ngôi nhà thông minh đều có thể truyền dữ liệu Ta sẽ nhóm các thiết bị này lại chung một nhóm Ví dụ: hệ thống an ninh, hệ thống Audio/Video Trong tương lai các hệ thống này có thể cho phép máy giặt hay máy rửa chén yêu cầu bộ phận nung nóng nước, chuẩn bị nước nóng khi chúng cần đến.
Sự hợp nhất các chuẩn truyền thông: các thiết bị trong tương lai đều có một chuẩn truyền thông chung, có cùng dây nối đặc biệt Tiêu chuẩn của ngôi nhà thông minh là sẽ làm nhẹ bớt đi công việc của các nhà sản xuất về việc phải sáng chế ra giao thức truyền thông và cung cấp các đường dây dẫn dữ liệu.
Yêu cầu của đề tài mà em được giao:
- Thiết kế phần cứng mạch báo cháy tự động.
- Mạch động lực điều khiển thiết bị dùng điện bằng vi xử lý.
- Mạch phát hiện trộm bằng cảm biến: dùng LED hồng ngoại.
- Mạch giao tiếp máy tính của từng vi xử lý.
- Lập trình giao tiếp bằng ngôn ngữ visual basic.
Hướng thực hiện đề tài
Để thực hiện được phần cứng đảm bảo yêu cầu như trên, em đã thiết kế mạch mô phỏng cảm biến quang phát hiện trộm và cảm biến quang đếm người ra vào phòng Do mạch cảm biến cháy có giá trị rất cao nên em đã dùng một IC đo nhiệt độ để mô phỏng Đó là IC nhiệt LM 335 Dùng vi xử lý 89C51 để điều khiển mạch động lực đóng tắt các thiết bị.
Chuẩn truyền thông nối tiếp thông dụng hiện nay là RS-232C, tuy nhiên chuẩn truyền thông này chỉ dùng truyền số liệu trên khoảng cách ngắn (15m) Nên để có thể truyền dữ liệu từ kit vi xử lý về máy tính ở khoảng cách xa hơn ta dùng chuẩn RS-485 Để chuyển đổi từ chuẩn RS-232C sang chuẩn RS-485 ta cần phải có một mạch điện chuyển đổi
Sơ đồ khối mạch chuyển đổi như sau:
Kit vi xử lý em thiết kế có những chức năng sau:
Đo nhiệt độ hiện tại trong phòng hiển thị lên LED 7 đoạn, ngoài chức năng đo nhiệt độ, mạch này còn thay thế cho cảm biến cháy Khi nhiệt độ trên IC LM335 tăng lên, tùy theo từng mức được lập sẵn trong chương trình mà nó sẽ báo chuông, hay sẽ gởi dữ liệu về máy tính để cho biết trạng thái hiện tại trong phòng theo giao thức truyền dữ liệu theo kiểu hỏi vòng.
Ngoài ra, mạch còn có chức năng đếm số người đi ra hay vào phòng Trong phòng để đảm bảo tính tự động hoàn toàn sẽ không có công tắc điện của những thiết bị mà vi xử lý có thể điều khiển Nếu số người trong phòng lớn hơn hay bằng 1 thì vi xử lý sẽ gởi một tín hiệu đến mạch động lực kích đóng các thiết bị như quạt, máy lạnh, đèn Nếu người trong phòng là không thì vi xử lý sẽ gởi một tín hiệu đến mạch động lực tắt các thiết bị trong phòng Tuy nhiên, trên mạch có hai nút nhấn hay một số
Sơ đồ khối mạch kết nối giữa máy tính và các kit vi xử lí II nút nhấn để người trong phòng có thể điều khiển có tín hiệu hồi tiếp về cho nên vi xử lý sẽ nhận biết các thiết bị đó đang đóng hay mở Khi người dùng nhấn nút tương ứng thì tùy vào trạng thái của thiết bị mà vi xử lý sẽ kích đóng hay ngắt thiết bị đó Phần này sẽ làm cho mạch được linh động, không tuân theo chương trình phần mềm cài sẵn một cách cứng ngắt.
Giả sử khi nhiệt độ ngoài trời giảm xuống khoảng 15 o C thì cũng không cần bật máy lạnh làm gì Tuy nhiên, vi xử lý cứ nhận thấy có người trong phòng là nó sẽ đóng nguồn cho máy lạnh hoạt động Người trong phòng có thể tắt máy lạnh bằng nút nhấn trên mạch vi xử lý Ta có thể khắc phục được nhược điểm này bằng cách viết chương trình cho vi xử lý so sánh nhiệt độ hiện tại trong phòng với nhiệt độ chuẩn
( 15 o C chẳng hạn ) Nếu nhiệt độ đo được bé hơn 15 o C thì sẽ tắt máy lạnh đi Do mạch sử dụng ADC 0809 sai số tương đối không nhiều, tuy nhiên do mạch gia công tín hiệu ra của IC nhiệt LM335 cho nên nhiệt độ càng thấp thì áp ra càng nhỏ và ADC sẽ đổi ra sai số tương đối cao Sai số này là do mạch gia công gây ra đồng thời cộng thêm sai số của chính bản thân ADC 0809 Cho nên không đảm bảo rằng mạch hoạt động đúng như thiết kế ở nhiệt độ nhỏ hơn 15 o C.
Mạch cảm biến quang dùng để phát hiện trộm đặt ở những thiết bị hay dụng cụ cần gìn giữ.
Sơ lược cảm biến báo cháy
Chuyển đổi nhiệt điện
Chuyển đổi nhiệt điện là những chuyển đổi dựa trên các quá trình nhiệt như đốt nóng, làm lạnh, trao đổi nhiệt… Thực tế khi đo lường các đại lượng không điện theo phương pháp điện thường dùng hai hiện tượng, đó ( là hiệu ứng nhiệt điện và hiệu ứng thay đổi nhiệt trở của dây dẫn hay chất bán dẫn khi nhiệt độ thay đổi.
Tương ứng với hai hiện tượng trên, người ta phân thành hai loại: chuyển đổi cặp nhiệt điện và chuyển đổi nhiệt điện trở.
1 Chuyển đổi cặp nhiệt điện: a Nguyên lý làm việc của cặp nhiệt điện : chủ yếu dựa trên hai hiện tượng sau:
Nếu hai dây dẫn khác nhau nối với nhau tại hai điểm 1 và 2, và một trong hai điểm đó ( ví dụ ta lấy tại điểm 1) được đốt nóng thì trong mạch sẽ xuất hiện một dòng điện gây bởi sức điện động gọi là sức điện động nhiệt điện, là hiệu số các hàm số nhiệt độ
ET = f(t1)- f(t2) Mạch điện như còn gọi là cặp nhiệt điện hay cặp điện ngẫu. Điểm được đốt nóng gọi là đầu công tắc ( điểm 1 ), điểm còn lại gọi là đầu tự do( điểm thứ 2 ) là hằng số f(t2)=const thì:
ET = f(t1) – C Biểu thức trên là cơ sở của phép đo nhiệt độ bằng cặp nhiệt điện Theo phương pháp này, việc đo nhiệt độ t1 sẽ dẫn đến việc đo sức điện động của cặp nhiệt điện khi giữ cố định nhiệt độ đầu tự do của nó.
Vật liệu dùng để chế tạo cặp nhiệt điện ngẫu cần đảm bảo các yêu cầu sau: quan hệ giữa sức điện động nhiệt điện với nhiệt độ là một hàm đơn trị, tính chất nhiệt điện không thay đổi, độ bền hóa học và cơ học phải cao, dẫn nhiệt tốt, có trị số suất điện động nhiệt lớn.
Cặp nhiệt điện được nối với nhau bằng phương pháp hàn đặc biệt và đặt trong thiết bị bảo vệ nhằm tránh bị ăn mòn hóa học, thiết bị này được chế tạo từ vật liệu bền cơ học, không thấm khí, không bị ăn mòn.
Thiết bị trên thường là các ống được chế tạo bằng thép đặc biệt Đối với cặp nhiệt điện quí , ống bảo vệ chế tạo bằng thạch anh và gốm Để cách điện người ta dùng Amian (300 0 C ), ống thạch anh ( với 1000 0 C ) hoặc ống sứ đến 140 0 C. b Những nguyên nhân gây sai số và hiệu chỉnh cho đúng:
Ta biết rằng phương trình biến đổi của cặp nhiệt điện trong trường hợp chung, một cách gần đúng có thể biểu diễn dưới dạng :
ET : là sức điện động nhiệt T: hiệu nhiệt độ giữa đầu công tắc và đầu tự do.
A, B, C :các hằng số phụ thuộc vào vật liệu của dây làm cặp nhiệt điện.
Và độ nhạy của nó được tính như sau:
ST A+2Bt +3Ct Độ nhạy không phải là hằng số mà phụ thuộc vào nhiệt độ.
Do vậy các cặp nhiệt điện công nghiệp thường cho trước một bảng sức điện động ứng với các nhiệt độ khác nhau trong khoảng 1 0 C với đầu tự do ở 0 0 C. c Chuyển đổi nhiệt điện trở:
Nhiệt điện trở là chuyển đổi có điện trở thay đổi theo sự thay đổi nhiệt độ của nó Tùy theo tác dụng nhiệt của dòng điện cung cấp chạy qua chuyển đổi người ta phân ra: nhiệt điện trở đốt nóng và nhiệt điện trở không đốt nóng.
Trong nhiệt điện trở không đốt nóng dòng điện chạy qua rất nhỏ không làm tăng nhiệt độ của điện trở và nhiệt độ của nó bằng nhiệt độ môi trường Nhiệt điện trở loại này dùng để đo nhiệt độ và các đại lượng cơ học như đo sự dịch chuyển.
Nhiệt điện trở đốt nóng, dòng điện chạy qua rất lớn làm nhiệt độ của nó tăng lên cao hơn nhiệt độ môi trường , nên có sự tỏa nhiệt ra môi trường xung quanh Nhiệt điện trở loại này được dùng trong việc đo lưu lượng, lưu tốc của dòng chảy, phân tích các chất hóa học… Nhiệt điện trở được chế tạo bằng dây hoặc chất bán dẫn Yêu cầu đối với vật liệu chế tạo là có hệ số nhiệt độ lớn, bền hóa học, điện trở suất rất lớn, khó nóng chảy… Để giảm tổn hao nhiệt dẫn, chiều dài của nhiệt điện trở cần phải lớn hơn đường kính dây gấp nhiều lần
2 Các loại cảm biến nhiệt: a Thermocouples:
Thermocouples biến đổi đại lượng nhiệt độ thành dòng điện hay điện áp DC nhỏ Nó gồm có hai dây kim loại khác nhau nối với nhau tại hai đầu mối nối Khi các mối nối được đặt tại các vị trí khác nhau, trong dây dẫn xuất hiện sức điện động Sức điện động này tỉ lệ với chênh lệch nhiệt độ giữa hai đầu mối nối Thermocouples có hệ số nhiệt dương. b Thermistor:
Thermistor là điện trở có độ nhạy nhiệt rất cao nhưng phi tuyến vả có hệ số nhiệt âm Điện trở giảm phi tuyến đối với sự tăng nhiệt độ vì Thermistor là điện trở nên dòng điện qua nó sinh ra nhiệt gây nên sai số rất lớn Do đó phải hạn chế dòng qua nó rất nhỏ. c Điện trở dò nhiệt (RTDs):
Cảm biến loại này dựa vào đặc tính trở phụ thuộc nhiệt độ của vật liệu Nó có hệ số nhiệt dương nhỏ, nhưng đo rất chính xác. d IC cảm biến nhiệt độ bán dẫn:
IC cảm biến bán dẫn kết hợp với mạch gia công bên trong Nhờ đó IC có thể tạo tín hiệu điện áp ra tỷ lệ với nhiệt độ tuyệt đối, với độ nhạy nhiệt và độ chính xác cao IC loại này khá phổ biến trên thị trường hiện nay Với IC thông dụng hiện nay làLM335.
Mạch phát hiện khói ( dùng cảm biến quang hay cảm biến ion )
1 Mạch phát hiện khói dùng phương pháp quang ( cảm biến quang):
Loại này được sử dụng linh kiện thu phát quang Người ta sử dụng linh kiện phát quang ( LED hồng ngoại ) chiếu một tia sáng qua vùng cần bảo vệ và một linh kiện thu quang ( Photodiode, Phototransistor, quang trở…) Khi có khói bay lên vùng cần bảo vệ sẽ che chắn hay làm yếu đi cường độ ánh sáng chiếu vào linh kiện thu. Khi cường độ ánh sáng thay đổi đến một giá trị nào đó thì bộ cảm biến sẽ nhận dạng được và phát ra tín hiệu báo động. a Điện trở quang: Điện trở quang là một linh kiện bán dẫn thụ động không có lớp chuyển tiếp
PN Vật liệu để chế tạo điện trở quang là Cds (Cadmiun Sulfid) , CdSe (Cadmiun Selenid ), ZnS ( Zine Sulfid ) hoặc các tinh thể khác.
Khi bị chiếu ánh sáng, độ dẫn điện ( điện dẫn suất ) của vật liệu bán dẫn gia tăng do các hạt mang điện tích được gia tăng ra thêm.
=e(nn + pp ) n và p : là mật độ electron và lỗ trống
n , p : là độ di động của electron và lổ trốngVới phương trình trên đô dẫn điện có thể gia tăng nhờ hai cách:
_ Gia tăng mật độ các hạt mang điện tích.
_ Gia tăng độ di động hiệu dụng.
Các đặc tính quan trọng của một điện trở quang : Điện trở quang có ba đặc tính quan trọng:
Là hàm số của mật độ năng lượng u với độ dài sóng không thay đổi của ánh sáng :
Độ nhạy của quang trở đối với quang phổ: Đó chính là sự thay đổi dẫn suất phot hàm số của khi mật độ năng lượng không thay đổi : u= const
Vận tốc làm việc là thời gian hồi đáp ( Reponse times) của một quang trở khi có sự thay đổi từ sáng sang tối hay từ tối sang sáng (rise ) Thời gian lên được xác định là thời gian cần thiết để quang trở đạt 65 % trị số cuối cùng khi được chiếu sáng từ 0 lux sang 10 lux.
Thời gian trễ được xác định là khoảng thời gian cần thiết để một quang trở thay đổi còn 35% giá trị của nó (so với lúc được chiếu sáng – khoảng 10 lux trong 1 s) khi không còn được chiếu sáng.
Với cường độ ánh sáng mạnh, quang trở làm việc nhanh hơn Quang trở có khuynh hướng làm việc chậm đi khi trời lạnh Quang trở làm việc chậm hơn nếu được cất giữ trong bóng tối và làm việc nhanh hơn nếu được cất giữ ngoài ánh sáng.
Các đặc tính quan trọng khác của điện trở quang:
Hệ số nhiệt độ của quang trở
Điện trở tối ( Dark Reasistance )
Công suất tiêu tán cao nhất
Điện trở quang với sự gia tăng độ di động n,p
Điện trở quang với vật liệu không pha tạp chất
2 Mạch phát hiện khói dùng nguyên lý ion (cảm biến ion):
Dưới tác dụng của các tia phóng xạ và tia Rơnghen, chất khí (khói ) sẽ bị ion hoá Nếu bình ion hoá được đặt một điện áp thì các điện tử và ion sẽ chuyển động có hướng và khi đó sẽ tạo thành dòng điện ion Khi có dòng điện sẽ kích hoạt tín hiệu báo động.
III Mạch phát hiện cháy 10
Chuyển đổi ion hóa có thể nhiều loại khác nhau, song bất kỳ loại nào cũng cần có nguồn phóng xạ và thiết bị thu các suất phẩm của quá trình ion hóa để tạo thành dòng điện Thiết bị đó gọi là bộ thu bức xạ.
Bộ thu bức xạ có nhiệm vụ biến đổi năng lượng bức xạ hạt nhân thành điện năng Bộ thu bức xạ dựa vào hiện tượng ion hóa các tia phóng xạ đi qua nó hoặc dựa vào hiện tượng ion hóa chất khí khi cho tia phóng xạ đi qua nó hoặc dựa vào hiện tượng phát quang của một số chất dưới tác dụng của năng lượng bức xạ hạt nhân.
Có ba loại bình thu bức xạ:
Máy đếm phóng điện trong chất khí.
Trong hình đặc tính Volt Ampere của bình ion hóa và cấu tạo của một bình ion hóa bằng tia Dòng quang điện thường rất nhỏ( 10 -3 _10 -7 )A Điện áp đặt lên điện cực cao áp ( vỏ bình) cỡ hàng nghìn Volt, dòng điện ion lấy qua cực lưới được khuếch đại bằng các bộ khuếch đại đo lường. Để tránh dòng điện rò, cách điện giữa các cực lưới và vỏ (cực cao áp) phải đạt tới (10 8 – 10 13 ) M, vì thế điện cực lưới được bọc bởi cực bảo vệ nối đất với mạch đo lường để thu dòng điện rò từ cực cao áp.
Người ta sử dụng một lượng nhỏ chất phóng xạ để ion hóa không khí trong hộp cảm biến Không khí bị ion hóa sẽ dẫn điện và tạo thành một dòng điện chạy giữa hai điện cực đã được nạp điện Khi các phần tử khói lọt vào trong vùng cảm nhận được ion hóa sẽ làm tăng điện trở trong vùng cảm nhận và làm giảm luồng điện giữa hai điện cực Khi luồng điện giảm xuống tới một giá trị nào đó thì bộ cảm biến sẽ phát điện và phát tín hiệu báo động.
Nói chung thì loại cảm biến phát hiện khói kiểu ion hóa nhạy hơn và hiệu quả hơn loại dùng các linh kiện quang điện tử, nhưng linh kiện và vật liệu rất khó kiếm. Loại phát hiện khói dùng quang dù ít nhạy hơn nhưng linh kiện rất dễ tìm và lắp đặt tương đối dễ dàng Tuy nhiên cả hai loại này có thể báo động nhằm do bụi hay khói lan vào Cho nên khi thiết kế cần phải xem xét và qui định nồng độ khói nhất định để thiết bị hoạt động chính xác.
III Mạch phát hiện cháy :
Dưới tác động của các dòng ánh sáng với bước sóng thích hợp chiếu vào Catot, điện tử đi từ Catot bị bắn ra, tạo thành dòng điện Chuyển đổi quang điện được phân chia thành ba loại:
Là phần tử quang điện sử dụng hiệu ứng quang điện ngoài Đó là một đèn chân không hay có khí mà Catot của nó sẽ phát ra các điện tử dưới tác dụng của dòng ánh sáng.
Là loại chuyển đổi quang điện dựa vào hiệu ứng quang điện Điện trở của một vài chất bán dẫn thay đổi dưới tác dụng của dòng ánh sáng Các chất có hiệu ứng quang điện trong mạch đó là muối Sunfil Cadmi,…
Là chuyển đổi quang điện, dưới tác dụng của ánh sáng, lớp khóa của một số mặt ghép các chất bán dẫn sẽ trở thành nguồn dòng điện.
Với hiệu ứng quang điện, ta có thể phát sinh một điện áp ở lớp chuyển tiếp pn, khi lớp chuyển tiếp này được chiếu sáng Tùy theo chức năng và cấu trúc, có thể phân Photodiode thành nhiều loại:
Diode quang với các hiệu ứng khác.
Photodiode được dùng với mạch khuếch đại có tổng trở cao:
Nhẹ và có sức bền cơ học.
IV Đo nhiệt độ bằng thạch anh:
Một ứng dụng cổ điển của thạch anh là thực hiện bộ dao động có độ vững lớn, chỉ phụ thuộc vào nhiệt độ Với tinh thể thạch anh có phương tinh thể xác định trước nó đặc trưng cho sự thay đổi nhiệt độ ảnh hưởng tần số dao động.
Ngược lại, khi dùng làm cảm biến đo nhiệt độ, thạch anh có phương tinh thể làm sao cho tần số dao động gần như tuyến tính với nhiệt độ tinh thể của thạch anh Cảm biến này rất chính xác và nhạy, mặt khác việc xác định nhiệt độ dẫn đến việc đếm tần số có hai điều lợi:
_ Việc đo rất chính xác.
_ Việc chuyển đổi ra dạng số rất dễ dàng với thông tin liên quan đến tần số 1 Cộng hưởng cơ của thạch anh:
Trong tinh thể thạch anh được cắt theo dạng tiết diện vuông, tam giác hoặc tròn, các đặc tính phụ thuộc vào dạng hình học, và kích thước của chúng cũng như phương tinh thể Thạch anh là một chất áp điện Trong trường hợp mặt phẳng thu điện tích thẳng góc với trục điện sẽ xuất hiện các điện tích trái dấu trên mặt phẳng Đó là hiệu ứng áp điện trực tiếp.
_ Một sự thay đổi bề dày của bản thạch anh, nén lại hoặc bè ra tùy thuộc theo dấu của điện áp khi đưa vào các bề mặt, đó là hiệu ứng áp điện ngược.
_ Một bản thạch anh có thể xảy ra các dao động cơ liên quan đến các loại biến dạng khác nhau: sự kéo dài ra, uốn cong, cắt Tần số dao động được xác định bởi dạng thức hình học, kích thước và phương của tinh thể và có thể diễn tả bởi công thức sau: c: Độ lớn đàn hồi, phụ thuộc vào phương tinh thể.
: Trọng lượng riêng của thạch anh. l: Kích thước của bản thạch anh theo phương truyền động. n: Số nguyên ; 1 System => Device Manager => Port (COM và LPT) =>Port Settings Việc thiết lập các cổng truyền thông (IRQ và địa chỉ cổng) có thể thay đổi bằng cách lựa chọn
Control Panel => System => Device Manager => Port (COM và LPT) => Resources
Truyền thông nối tiếp dùng visual basic
Do sự phát triển ngày càng tăng của các ứng dụng truyền thông qua cổng nối tiếp ,từ phiên bản 4.0 của Visual Basic ,điều khiển truyền thông đã được hoàn chỉnh để sử dụng cho việc lập trình ghép nối máy tính qua cổng nối tiếp Trong phần này ta sẽ tìm hiểu về điều khiển này
Bình thường khi chạy phần mềm Visual Basic ta chỉ thấy có một số thành phần quen thuộc trên hộp công cụ (toolbox) Nhưng Visual Basic cho phép nhiều thành phần có thể được bổ sung thêm vào Điều khiển truyền thông Mscomm của Visual Basic là một trong số các đối tượng có thể được bổ sung để tham gia vào một số ứng dụng cần việc chuyển nhận dữ liệu qua cổng nối tiếp
Trong Visual Basic 5.0 và 6.0 ta có thể bổ sung thành phần Mscomm đề cập ở trên như sau : Chọn Project => Components (Ctrl – T) ,cửa sổ sau sẽ xuất hiện. Điều khiển truyền thông cung cấp hai khả năng để trao đổi thông tin :
Điều khiển sự kiện : Truyền thông điều khiển sự kiện là phương pháp tốt nhất được sử dụng trong quá trình điều khiển việc trao đổi thông tin nối tiếp khi nó giải phóng máy tính để làm các công việc khác Trong nhiều tình huống, ta cần được thông báo về sự thay đổi Thí dụ như ta cần biết khi có ký tự gửi đến hoặc sự thay đổi xảy ra trên đường DCD (Data Carrier Detect ) hoặc đường RTS (Request To Send) Để làm điều đó ta sẽ sử dụng sự kiện truyền thông OnComm để bẫy và điều khiển các sự kiện Điều khiển truyền thông còn phát hiện và điều khiển các lỗi truyền thông.
Hỏi Vòng (Polling) : Ta cũng có thể hỏi vòng các sự kiện và lỗi bằng cách kiểm tra giá trị của đặc tính ComEvent sau mỗi chu kỳ của chương trình để xác định xem liệu một sự kiện hoặc một lỗi đã xuất hiện Chẳng hạn, chương trình có thể tạo vòng lặp để chờ một ký tự cần được nhận Cứ mỗi lần như vậy, ký tự được đọc từ bộ đệm nhận Thông thường phương pháp này được sử dụng khi chương trình có thời gian để tiến hành hỏi vòng bộ nhận thông tin, hay nói cách khác là trong các ứng dụng không lớn.
Visual Basic sử dụng các bộ điều khiển cửa sổ chuẩn cho các cổng truyền tin nối tiếp (như serialui.dll và serial.vxd ) Điều khiển truyền thông được bổ sung cho ứng dụng của một cổng nối tiếp, nói khác đi mỗi điều khiển truyền thông mà ta dùng chỉ có thể điều khiển một cổng nối tiếp Nếu cần truy nhập nhiều cổng trong ứng dụng thì ta phải dùng nhiều điều khiển truyền thông Địa chỉ cổng và địa chỉ ngắt có thể thay đổi nhờ Control Panel trong Windows Các tham số (như tốc độ truyền theo bit ,chẵn lẻ ,…) đều có thể được thay đổi bằng cách lựa chọn: Control Panel => System => Device Manager => Port (COM và LPT) =>Port Settings Việc thiết lập các cổng truyền thông (IRQ và địa chỉ cổng) có thể thay đổi bằng cách lựa chọn
Control Panel => System => Device Manager => Port (COM và LPT) => Resources
Thành phần Comm được bổ sung vào biểu mẫu ( Form ) bất cứ lúc nào cần đến việc truyền thông nối tiếp Theo mặc định, cổng thứ nhất tạo ra đối tượng có tên MSComm1, đối tượng ứng với cổng thứ hai được gọi là MSComm2,…Có thể nhìn thấy các đặc tính chính của đối tượng là: CommPort, DTREnable, EOFEnable,
HandShaking ,InBufferSize, Index, InputLen, Inputmode, Left, Name, NullDiscard, OutBufferSize, ParityReplace, Rthreshold, RTSEnable, Settings, SThreshold, Tag, Top Ta thấy điều khiển truyền thông có nhiều thuộc tính, nhưng để có thể làm việc với điều khiển truyền thông, trước hết ta cần hiểu kỹ các thuộc tính chính được liệt kê trong bảng sau
Các thuộc tính Sự mô tả
CommPort Đặt và trả lại số cổng truyền thông
Input(nhập vào) Trả lại và loại bỏ các ký tự khỏi bộ đệm nhận
Output(xuất ra) Viết một xâu ký tự tới vào bộ đệm truyền
PortOpen Mở/Đóng một cổng (tùy thuộc vào thông số) và đặt thông số cho cổng Settings Đặt và trả lại các tham số truyền thông như :tốc độ truyền theo bit ,chẵn lẻ ,số các bit dữ liệu ,…
Thí dụ sau đây chỉ ra cách truyền thông qua cổng nối tiếp có thể được tiến hành như thế nào bằng cách sử dụng một Modem.
‘biến để lưu giữ chuỗi nhập vào
‘9600 baud ,no parity ,8 bit data ,1 stop bit
‘ra lệnh cho điều khiển Mscomm1 đọc hết bộ đệm nhận khi dùng
‘gửi lệnh attention tới MODEM
Mscomm11.Output = “ATV1Q0” & Chr$(13) ‘để chắc rằng
‘đợi dữ liệu trả lời gửi về cổng nối tiếp
DoDoEvents Buffer$ = Buffer$ & MSComm1.Input Loop Until InStr(Buffer$ , “OK” &vbCRLF)
‘đọc dữ liệu trả lời “OK”
Mscomm11.PortOpen = False End Sub
Sau đây ta sẽ lần lượt tìm hiểu một số thuộc tính quan trọng của điều khiển truyền thông
Thuộc tính Settings đặt và trả lại các thông số truyền thông cho cổng RS-232, như tốc độ baud, tính chẵn lẻ, số bit dữ liệu và số các bit dừng.
Cú pháp của câu lệnh là :
Nếu paramString$ không hợp lệ (valid) thì khi mở cổng, điều khiển truyền thông sẽ phát sinh lỗi 380 ( lỗi giá trị thuộc tính không hợp lệ ).
ParamString$ là một chuỗi chứa 4 thông số thiết lập cho cổng truyền thông RS-232 và có dạng như sau :
“BBBB ,P ,D ,S” Ở đây BBBB xác định tốc độ baud, P là bit chỉ tính chẵn lẻ, D là số bit dữ liệu và S là số các bit dừng (stop bits) Giá trị mặc định của paramString$ là : “9600, N, 8,1” Bảng sau đây liệt kê các giá trị baud hợp lệ :
Số bit dữ liệu hợp lệ trong một lần truyền (khung truyền) là : 4 ,5 ,6 ,7 ,8 (default)
Số bit Stop hợp lệ là : 1 ,1.5 ,2.
Thông số tốc độ baud
Thí dụ sau cho phép đặt thông số cho cổng truyền ở tốc độ baud là 4800,không kiểm tra bit chẵn lẻ ,8 bit dữ liệu ,1 bit dừng :
Kiểu dữ liệu của Mscomm11.Settings là : String
Thuộc tính này đặt và trả lại số cổng truyền thông Cú pháp của câu lệnh là :
Trong khi thiết kế (design time) ta có thể đặt Portnumber% bằng một giá trị nằm trong khoảng từ 1 đến 16 (giá trị mặc định là 1) Trước khi dùng lệnh PortOpen phải thiết lập cổng bằng CommPort Nếu ta dùng thuộc tính PortOpen trước khi thiết lập cổng bằng CommPort thì điều khiển truyền thông sinh ra lỗi 68 (cổng không tồn tại).
Thuộc tính PortOpen đặt và trả lại trạng thái của cổng truyền thông (đóng hoặc mở) Thuộc tính này không có trong thời gian thiết kế chương trình Cú pháp của câu lệnh là :
[form.] MSComm.PortOpen [={True/ False}]
Thông số thiết lập là True để mở cổng, còn False để đóng (giải phóng) cổng và xóa nội dung các bộ đệm nhận và truyền MSComm tự động đóng cổng nối tiếp khi ứng dụng kết thúc (Terminated).
Trước khi dùng thuộc tính này (PortOpen), phải đặt thông số cổng bằng thuộc tính CommPort với một giá trị hợp lệ, nếu ta quên đi thuộc tính này lỗi 68 sẽ phát sinh
Thí dụ sau đây mở cổng truyền thông số 1 (COM1) với tốc độ baud là 4800 baud, không kiểm tra tính chẵn lẻ, 8 bit dữ liệu, 1 bit stop:
MSComm1.CommPort=1 MSComm1.PortOpen=True Kiểu dữ liệu : Boolean.
Các thuộc tính phục vụ việc nhập dữ liệu ( Input ,InBufferCount và InBufferSize ) a Thuộc tính Input :
Phần giao diện
Chương trình giao tiếp nối tiếp dùng ngôn ngữ Visual Basic như sau:
‘Phần khai báo biến toàn cục trrong module public LenhT, DiaChi As String 'bien chua ma lenh dua ve cho vi xu ly
Public GTNhan As Variant ' bien chua data tu vi xu ly gui len
Public Byte1, Byte2, Byte3, Byte4 As String
'la 4 byte nhan duoc tu vi xu ly
'byte1 chua dia chi cua vxl
'byte2 chua gia tri nhiet do
'byte3 chua so nguoi trong phong
'byte4 trang thai den va quat
Public Byte21, Byte22, Byte23, Byte24 As String
Public Const AnNinh = "Khong co nguoi la xam nhap"
Public Const KAnNinh = "Canh bao co nguoi la xam nhap"
‘ ham truyen du lieu toi cac vi xu li
Public Sub TRUYEN(GIATRI As String)
Dim i As Integer frmchinh.MSComm1.RTSEnable = True frmchinh.MSComm1.Output = GIATRI
Next i frmchinh.MSComm1.RTSEnable = False
‘ Ham nhan du lieu tu vi xu li
Dim Test As String frmchinh.MSComm1.RTSEnable = False
Loop Until (frmchinh.MSComm1.InBufferSize >= 4) Or (i
'thuc hien gan gia tri cho bytei (i=1-4)
Else thongbao = MsgBox("So lieu truyen ve bi loi.Can xem lai duong truyen", vbOKOnly, "Loi duong truyen")
If ChkP01.Value = 1 Then frmP01.Show
If ChkP02.Value = 1 Then frmP02.Show
If MSComm1.PortOpen = True Then MSComm1.PortOpen = FalseMSComm1.CommPort = 1
'cho thu du lieu dua ve tu vi xu ly frmP02.Timer1.Enabled = True frmP01.Timer1.Enabled = True
'hien thi so nguoi len frmchinh frmchinh.Timer1 = True
With frmP01 frmP01.fraDkP01.Enabled = False frmP01.OptTdenP01.Enabled = False frmP01.OptMdenP01.Enabled = False frmP01.OptTquatP01.Enabled = False frmP01.OptMquatP01.Enabled = False frmP01.Frame1.Enabled = False frmP01.Frame2.Enabled = False
With frmP02 frmP02.FraDkP02.Enabled = False frmP02.OptTdenP02.Enabled = False frmP02.OptMdenP02.Enabled = False frmP02.OptTquatP02.Enabled = False frmP02.OptMquatP02.Enabled = False frmP02.Frame2.Enabled = False frmP02.Frame3.Enabled = False
End With frmP01.cmdDongYP01.Enabled = False frmP02.cmDongYP02.Enabled = False '*********************************** End Sub
With frmP01 frmP01.fraDkP01.Enabled = True frmP01.OptTdenP01.Enabled = True frmP01.OptMdenP01.Enabled = True frmP01.OptTquatP01.Enabled = True frmP01.OptMquatP01.Enabled = True frmP01.Frame1.Enabled = True frmP01.Frame2.Enabled = True
With frmP02 frmP02.FraDkP02.Enabled = True frmP02.OptTdenP02.Enabled = True frmP02.OptTquatP02.Enabled = True frmP02.OptMdenP02.Enabled = True frmP02.OptMquatP02.Enabled = True frmP02.Frame2.Enabled = True frmP02.Frame3.Enabled = True
End With frmP01.cmdDongYP01.Enabled = True frmP02.cmDongYP02.Enabled = True
' xuat so nguoi ra frmchinh i1 = Val(frmP01.TxtSoNguoiP01.Text) i2 = Val(frmP02.TxtSoNguoiP02.Text)
'xac dinh lenh hoat dong cho vxl
If (OptMdenP01.Value = False And OptMquatP01.Value False) Then LenhT = "C"
If (OptMdenP01.Value = False And OptMquatP01.Value True) Then LenhT = "D"
If (OptMdenP01.Value = True And OptMquatP01.Value False) Then LenhT = "F"
If (OptMdenP01.Value = True And OptMquatP01.Value True) Then LenhT = "G"
'xac dinh dia chi truyen la vxl 1
'goi ham truyen LenhT cho vi xu ly
Unload Me frmchinh.ChkP01.Value = False
If frmchinh.OptAuto.Value = True Then
With frmP01 frmP01.fraDkP01.Enabled = False frmP01.OptTdenP01.Enabled = False frmP01.OptMdenP01.Enabled = False frmP01.OptTquatP01.Enabled = False frmP01.OptMquatP01.Enabled = False frmP01.Frame1.Enabled = False frmP01.Frame2.Enabled = False
With frmP02 frmP02.FraDkP02.Enabled = False frmP02.OptTdenP02.Enabled = False frmP02.OptMdenP02.Enabled = False frmP02.OptTquatP02.Enabled = False frmP02.OptMquatP02.Enabled = False frmP02.Frame2.Enabled = False frmP02.Frame3.Enabled = False
If frmchinh.MSComm1.PortOpen = True Then frmchinh.MSComm1.PortOpen = False frmchinh.MSComm1.CommPort = 1 frmchinh.MSComm1.Settings = "9600,n,8,1" frmchinh.MSComm1.PortOpen = True
'Cap nhat trang thai cua phong frmP01.Timer1.Enabled = True
Dim NhietdoP01, SoNguoiP01, i As Integer
NhietdoP01 = Asc(Byte2) txtNhietDoP01.Text = Val(NhietdoP01) 'hien thi nhiet do
TxtSoNguoiP01.Text = Val(SoNguoiP01) 'hien thi so nguoi
If Byte4 = "O" Then txtDenP01.Text = "OFF" txtQuatP01.Text = "OFF" frmchinh.LblTThai = AnNinh
If Byte4 = "P" Then txtDenP01.Text = "OFF" txtQuatP01.Text = "OFF" frmchinh.LblTThai = KAnNinh
If Byte4 = "Q" Then txtDenP01.Text = "OFF" txtQuatP01.Text = "ON" frmchinh.LblTThai = AnNinh
If Byte4 = "R" Then txtDenP01.Text = "OFF" txtQuatP01.Text = "ON" frmchinh.LblTThai = KAnNinh
If Byte4 = "S" Then txtDenP01.Text = "ON" txtQuatP01.Text = "OFF" frmchinh.LblTThai = AnNinh
If Byte4 = "T" Then txtDenP01.Text = "ON" txtQuatP01.Text = "OFF" frmchinh.LblTThai = AnNinh
If Byte4 = "U" Then txtDenP01.Text = "ON" txtQuatP01.Text = "ON" frmchinh.LblTThai = AnNinh
If Byte4 = "X" Then txtDenP01.Text = "ON" txtQuatP01.Text = "ON" frmchinh.LblTThai = KAnNinh
'BAO LOI TRUYEN (lenh truyen ve sai)
End Select thongbao = MsgBox("Ban can kiem tra lai he thong.Chu trong cac he thong chong trom", vbOKOnly, "Loi dieu khien")
Private Sub Timer1_Timer() Dim Kich As String
Hướng phát triển của đề tài
Ngày nay trong đà phát triển chung thì nước ta sẽ ngày có thêm nhiều nhà cao tầng, để có thể quản lý được toàn bộ tòa nhà thì chỉ có phương pháp là dùng mạng kết nối các thành vìên trong từng phòng lại với nhau Trong các chuẩn của mạng truyền thông thì mạng RS-485 được sử dụng nhiều nhất vì tính hiệu quả và kinh tế của nó. Để tài này có thể áp dụng được ngoài thực tế vì tính sát thực nó Ngoài dùng để điều khiển các thiết bị như đèn và quạt trong đề tài các kit vi xử lý còn có thể điều khiển thêm nhiều thiết bị khác Tuy nhiên trong thực tế sẽ có rất nhiều phòng cần được điều khiển, vì thế nếu áp dụng cách điều khiển trực tiếp từ máy tính xuống từng kit thì mạng RS-485 không thể đáp ứng được, vì có thể ta có đến vài trăm phòng, do mạng RS-485 chỉ có thể tối đa 128 slave nền ta có thể áp dụng phương pháp điều khiển phân cấp.
Tại mỗi tầng sẽ có một master đóng vai trò trung gian trong giao tiếp giữa máy tính và các kit vi xử lý trong từng phòng Master này sẽ chịu trách nhiệm chính trong việc phân chia thời gian truyền của các kit vi xử lý, như vậy máy tính chỉ giao tiếp với các master trung gian này mà thôi, hệ thống sẽ có tới 2 cấp điều khiển
Hạn chế nếu ta dùng phương pháp hỏi vòng thì chu kỳ bus sẽ dài, không đáp ứng được trong các trường hợp cần truyền về máy tính.
[1] Hoàng Minh Sơn: “ Mạng truyền thông trong công nghiệp”, NXB Khoa Học Kỹ Thuật, 2001
[2] “Tra cứu IC Nhật Bản”, NXB Khoa Học Kỹ Thuật
[3] Dương Minh Trí,” Sơ đồ chân linh kiện”, NXB Khoa Học Kỹ
[4] Ngô Diên Tập, “Đo lường và điều khiển bằng máy tính”, NXB Khoa Học Kỹ Thuật
[5] Ngô Diên Tập, “ Lập trình kết nối máy tính trong Window”, NXB Khoa Học Kỹ Thuật
2 nd ed By Prentice Inc-1995.
[7] Jan Axelson :” Programming and Circuits for RS-232 and RS-485 Links and Network:
BÁO CÁO KẾT QUẢ THI CÔNG
Với phần cứng như mạch đã trình bày thì khi viết chương trình điều khiển sẽ gây ra một số khó khăn trong lúc xử lý chương trình.
Do trong mạch dùng hiển thị LED 7 đoạn theo phương pháp quét, giải mã bằng phần cứng( dùng IC giải mã 74247 ) Cho nên ta phải quét LED liên tục để đảm bảo độ sáng cho LED ít nhất mỗi LED được phép sáng trong vòng 1ms Nếu chương trình bị một ngắt gây ra một khoảng thời gian delay không quét LED trong thời gian 5ms thì sẽ làm cho LED tắt Đây là điều không mong muốn Ta có hai hướng để khắc phục tình trạng trên như sau:
Bằng phần cứng : dùng phương pháp chốt để hiển thị LED, như vậy sẽ không ảnh hưởng đến độ sáng của LED khi ta ngắt chương trình để thực hiện một việc khác
Bằng phần mềm : ta dùng ngắt timer để hiển thị LED , cũng như để tạo ra khoảng thời gian delay dài khi cần thiết Khi ngắt truyền xảy ra thì ta cần đến 5ms liên tiếp để truyền số liệu về máy tính Khi ngắt timer xảy ra thì cho phép
AD đổi lần thứ nhất, khi ngắt timer tiếp theo xảy ra thì ta cho phép hiển thị LED Chỉ đến 500ms sau thì ta mới cho phép AD đổi lần thứ hai.
Mạch động lực em thiết kế trên nguyên tắc là kích đóng bằng mức 1 và kích ngắt bằng mức 0 điều này sẽ làm cho vi xử lý kích đóng các thiết bị mỗi khi ta reset lại vi xử lý