ทัวร์ฝรั่งเศส บอร์โด ลุ่ม ......ว นท ส บอร โด-เท ยวชมแหล งอง นท ำไวน บอร โด
EX-10EX-10 บอร ดวัดอุณหภูมิและเทอร โมสตัตผ...
Transcript of EX-10EX-10 บอร ดวัดอุณหภูมิและเทอร โมสตัตผ...
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 1
บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
AX-2000/AX-2000 Plus ชดุทดลองการเชือ่มตอคอมพวิเตอรกับอปุกรณภายนอกเปนชุดทดลองที่จัดเตรียมข้ึนเพ่ือตอบสนองความตองการเรียนรูของผูสนใจดาน PC Interfacing โดย
จะเนนไปที่การเชื่อมตอผานพอรตขนานหรือพอรตเครื่องพิมพและพอรตอนุกรมของคอมพิวเตอรพีซีเปนหลักในชดุทดลอง AX-2000 ไดจดัจาํหนายใน 2 รปูแบบคอื เปนชดุสมบูรณประกอบดวยบอรดทดลอง 9-12 บอรด*,สเตป็เปอรมอเตอร, อะแดปเตอร และหนงัสือปฏิบัติการอีก 2-3 เลม* กับชุดแยก ซึ่งจะนําบอรดทดลองทั้งหมดรวมทั้งหนังสือมาแยกจําหนายสําหรับผูสนใจเฉพาะดาน ดังนั้นสําหรับผูที่จัดซื้อในชุดแยกนี้สามารถติดตามบอรดทดลองในอนกุรมนีไ้ดอยางตอเนือ่งรวมถึงหนงัสอืคูมอืไดจากตวัแทนจาํหนายของบริษัท อินโนเวตีฟ เอ็กเพอริเมนต จํากัด
ในสวนของแผนดสิกโปรแกรมตวัอยางจะบรรจอุยูในชดุของ P-Board และ S-Board เทานัน้ในกรณทีีจ่ดัซือ้แบบแยก สวนในชุดสมบูรณไดจัดเตรียมไวใหเรียบรอยแลว* บอรดทีใ่ชในการทดลองม ี12 บอรดและหนังสือ 3 เลมในรุน AX-2000 Plus* บอรด EX-10 นีม้จีดัใหพรอมในชดุทดลองรุน AX-2000 Plus เทานัน้
(C) Innovative Experiment Co.,Ltd.
บอรดท่ีใชงานรวมกันเพ่ือทําการทดลองเพ่ิมเติม (จําหนายแยก) P-Board บอรดเช่ือมตอพอรตขนาน , S-Board บอรดเช่ือมตอพอรตอนุกรม
EX-10คณุสมบัติทางเทคนิคl ใชไอซี DS1621 ทีว่ดัอณุหภมิูไดตัง้แต -55๐C ถึง+125๐C สาํหรบัตวับอรดสามารถใชงานในชวง 0-50 ๐Cl สงขอมูลอุณหภูมิผานระบบบัส I2Cl ตัง้คาจดุทรกิอุณหภูมิสูงและตํ่า เม่ือทํางานในโหมดเทอรโมสตัตไดl มีเอาตพุตแสดงผลการทํางานในโหมดเทอรโมสตัตพรอมวงจรขับ LED, ลําโพงเปยโซ และรีเลย โดยเลือกดวยจั๊มเปอรl สามารถตอพวงไดรวม 8 บอรดl เช่ือมตอกบั P-Board และ S-Board ผานทางแจก I2CBUS
2 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
DS1621 ไอซีวัดอุณหภูมิแบบดิจิตอลผูผลิตคือ Dallas Semiconductor เปนไอซีวัดอุณหภูมิท่ีใชการติดตอผานระบบบัส I2C ใน
รูปท่ี 1 แสดงการจัดขาและหนาท่ีของแตละขาของไอซี DS1621 สําหรับคุณสมบัติท่ีสําคัญของDS1621 มีดังนี้
l สามารถวดัอณุหภมิูไดตัง้แต -55๐C ถึง +125๐C โดยมีความละเอียดในการวัด 0.5๐Cเทียบเปนหนวยของฟาเรนไฮตไดเทากบั -67๐F ถึง +257๐F ความละเอียด 0.9๐F โดยไมตองใชอปุกรณตอรวมภายนอก
l ความละเอียดของขอมูลอุณหภูมิดิจิตอล 9 บิตl ใชไฟเลีย้งไดตัง้แต 2.7-5.5Vl ใชเวลาในการวัดอุณหภูมิแลวแปลงเปนขอมูลดิจิตอล 1 วินาทีl สามารถทํางานเปนเทอรโมสตัต (thermostat) ได พรอมขาเอาตพุต 1 ขาl สามารถตั้งคาอุณหภูมิท่ีตองการเม่ือทํางานเปนเทอรโมสตัตได โดยติดตอผานระบบบัส
I2C และคาท่ีกาํหนดนีจ้ะคงอยูตลอดไป แมปลดไฟเลี้ยงแลวก็ตาม สามารถเปลี่ยนแปลงไดโดยการกาํหนดทางซอฟตแวรเทานั้น
l สามารถตอพวงกันไดสูงสุด 8 ตัว
การทํางานของ DS1621ในรูปท่ี 2 แสดงผังการทํางานรวมของ DS1621 หัวใจสําคัญอยูท่ีสวนวัดอุณหภูมิ เม่ือ
DS1621 เริม่ทํางาน จะทําการวดัอณุหภูมิ โดยภายในไอซีจะมีตัวตรวจจับอุณหภูมิบรรจุอยู ผลการวดัจะสงตอไปยงัสวนจดัการแอดเดรสและควบคมุอนิพุตเอาตพุต ในสวนนีน้าํขอมูลอณุหภมิูท่ีวัดไดสงตอไปยงับสัผานทางขา SDA โดยไดรบัการกาํหนดจงัหวะการทํางานจากสวนรจีสิเตอรควบคมุและแสดงสถานะ หากมีการกาํหนดใหทํางานในโหมดเทอรโมสตตั ขอมูลการวดัถกูสงไปเปรยีบเทียบกบัจดุกระตุนทางสงูและตํา่ท่ีสวนเปรยีบเทียบขอมูลดจิิตอล ผลการเปรียบเทียบจะสงออกทางขา TOUT
เนือ่งจาก DS1621 มีขากาํหนดแอดเดรส 3 ขาคอื A2-A0 จงึทําใหสามารถตอพวง DS1621ไดสงูสดุ 8 ตวั โดยแตละตวัตองกาํหนดสถานะลอจกิท่ีขาแอดเดรสท้ังสามใหแตกตางกนั สวนจดัการแอดเดรสและควบคมุอนิพุตเอาตพุตของ DS1621 แตละตวัจะเปนตวัจดัการสงขอมูลตามท่ีอปุกรณมาสเตอรรองขอ
ทฤษฎี
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 3
คาของอุณหภูมิท่ีวัดไดถูกเก็บอยูรูปของขอมูลเลขฐานสองขนาด 9 บิต ดังแสดงตัวอยางในตารางท่ี 11-1 ขอมูลดจิติอลเอาตพุตจะแบงเปน 2 สวน 8 บติบนหรอืไบตสงูจะเปนคาอณุหภมิูจาํนวนเต็ม โดยบิต MSB จะเปนตัวแสดงเครื่องหมายวา อุณหภูมิเปนบวกหรือลบ หากบิต MSB เปน“1” แสดวาอุณหภูมิท่ีวัดไดมีคาเปนลบ ในขณะท่ี 8 บิตลางหรือไบตลางจะมีใชงานเพียงบิตเดียวจะเปนบิตแสดงคาความละเอียด ซึ่งเทากับ 0.5๐C
เม่ือสั่งให DS1621 สงขอมูลอุณหภูมิออกมา DS1621 จะใชเวลาไมเกิน 1 วินาที จึงจะสงขอมูลออกมา ดังนั้นในการควบคุมการทํางานจึงตองมีการหนวงเวลา เพ่ือรอให DS1621 วัดและแปลงคาออกมาเปนขอมูลใหเรียบรอยเสียกอน
การทํางานในโหมดเทอรโมสตัตนอกจากวดัอณุหภมิูแลว DS1621 ยงัสามารถทํางานในแบบเทอรโมสตตัหรอืใหเอาตพุตเม่ือ
อณุหภมิูต่ําหรอืสงูถงึจดุท่ีกาํหนดไว โดยผูใชงานสามารถโปรแกรมไดตามตองการและคาท่ีโปรแกรมนีจ้ะอยูตลอดไปจนกวาจะมีการแกไขแมวาจะตดัไฟเลีย้งไปแลวกต็าม ผูใชงานตองกาํหนดคาของจดุทริกอุณหภูมิสูง (high temperature trigger : TH) และ จุดทริกอุณหภูมิต่ํา (low temperaturetrigger :TL) และเลอืกสญัญาณแอกตฟีวา เม่ืออณุหภมิูสงูมาถงึจดุท่ีกําหนดจะใหขาเอาตพุต TOUTสงสัญญาณลอจิกแบบใดออกไป สามารถเลือกได 2 แบบคือ ลอจิก “0” หรือ “1”
เม่ือกาํหนดคาเรยีบรอยแลว DS1621 จะวดัอณุหภมิูไปเรือ่ยๆ จนกระท่ังเม่ืออุณหภูมิสูงจนถึงจุด TH ขา TOUT ก็จะแอกตีฟทันที และแอกตีฟคางอยูเชนนั้นจนกวาอุณหภูมิท่ีวัดไดลดตํ่าลงกวาจุด TL ดังนั้นการกําหนดคาของ TH และ TL จึงสําคัญมาก หากกําหนดไวแคบหรือมีความแตกตางกนันอยเกนิไป และอณุหภมิูท่ีวดัจรงินัน้มีการเปลีย่นแปลงในชวงแคบๆ หรอืจรงิๆ แลวคอนขางคงท่ี จะทําใหเอาตพุตท่ีขา TOUT เกิดสัญญาณลอจิกท่ีไมคงท่ี จนคลายกับเปนสัญญาณรบกวนสงผลใหการนาํสญัญาณไปใชงานทําไดไมด ีแตถาหากกาํหนดไวหางหรอืมีความแตกตางมากเกินไปอาจทําใหมองไดวา วงจรเทอรโมสตัตนี้มีความไวในการทํางานตํ่า เพราะกวาจะตัดเอาตพุตตองรอใหอุณหภูมิลดคาลงตํ่ากวาจุด TH มากๆ ซึ่งอาจสงผลเสียหากการลดลงของอุณหภูมิท่ีเกิดข้ึนจริง
7B00H
1900H
0080H
0000H
FF80H
E700H
C900H
+125๐C
ขอมูลดิจิตอลเอาตพุต(เลขฐานสิบหก)อุณหภูมิ
+25๐C+0.5๐C
0๐C-0.5๐C
-25๐C-55๐C
00011001 00000000
01111101 00000000
00000001 00000000
00000000 00000000
11111111 10000000
11100111 00000000
11001001 00000000
ขอมูลดิจิตอลเอาตพุต(เลขฐานสอง)
ตารางท่ี 1 แสดงรูปแบบขอมลูดิจติอลตัวอยางของอณุหภูมท่ีิวดัไดจาก DS1621 จะเหน็ไดวาขอมูลอุณหภูมิอยูท่ี 8 บิตบน สวน 8 บิตลางแสดงคาความละเอียด
4 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
ลงไมถงึจดุ TL แตอปุกรณท่ีตองการนําสัญญาณนี้ไปใชมีความสามารถในการทนอุณหภูมิในชวงระหวาง TH และ TL ไดไมนาน ก็จะสงผลใหเกิดความเสียหายตออุปกรณนั้นๆ ได ในรูปท่ี 3 แสดงรูปแบบการทํางานของ DS1621 ในโหมดเทอรโมสตัตนี้
รีจิสเตอรกําหนดการทํางานของ DS1621ในการกําหนดคา TH และ TL ของ DS1621 ตลอดจนการเลือกสัญญาณแอกตีฟในโหมด
เทอรโมสตัตสามารถกระทําผานรีจิสเตอรตัวหนึ่งท่ีช่ือวา รีจิสเตอรกําหนดการทํางานและแสดงสถานะ (Configuration/Status register) โดยมันสามารถทําหนาท่ีได 2 อยางคอื ใชสําหรับกําหนดพารามิเตอรสาํคญัเม่ือกาํหนดให DS1621 ทํางานในโหมดเทอรโมสตัต และใชแสดงสถานะการวัดและแปลงคาอุณหภูมิ โดยรีจิสเตอรกําหนดการทํางานนี้มีขนาด 8 บิต สามารถเขาถึงดวยกระบวนการติดตอผานระบบบัส I2C แตละบิตของรีจีสเตอรมีรายละเอียดดังนี้
บิต 7DONE
บิต 6THF
บิต 5TLF
บิต 4NVB
บิต 31
บิต 20
บิต 1POL
บิต 01SHOT
DONE (Conversion done - บติ 7) : บติแสดงสถานะของการแปลงขอมูลอุณหภูมิ“0” - ยงัอยูในระหวางการแปลงขอมูล“1” - การแปลงขอมูลเสรจ็สมบรูณแลว
THF (Temperature High Flag - บติ 6) : บติแฟลกแจงวาอณุหภมิูท่ีวดัไดสงูกวาจุดทริกอุณหภูมิสูงหรือ TH โดยเม่ือเกิดเหตุการณนี้ข้ึน บิตนี้จะเซตเปน “1” และดํารงสถานะนี้ไวจนกวาจะมีการเขียนขอมูล “0” มายงับตินีด้วยกระบวนการทางซอฟตแวร หรอืเคลยีรดวยการปลดไฟเลีย้งออกจาก DS1621 ประโยชนของบิตนี้คือ หากบิตนี้เซตทันทีท่ีจายไฟเลี้ยงใหม ผูใชงานก็จะทราบไดทันท่ีเชนกนัวา ขณะนีอ้ณุหภมิูท่ีวดัไดมีคาสงูกวาจดุทรกิอณุหภมิู TH ผูใชงานสามารถเลอืกไดกอน
ขาที่ ชื่อขา หนาที่/การทํางาน
2 SCL
1 SDA ขาขอมูลอนุกรมสําหรับเช่ือมตอกับระบบบัส I 2C
3 TOUT
4 GND
5-7 A2-A0
8 +Vcc
ขาสัญญาณนาฬิกาสําหรับเช่ือมตอกับระบบบัส I 2C
ขาเอาตพุตเทอรโมสตัต กระแสซอรสเอาตพุต 1mA กระแสซิงกเอาตพุต 4mA"แอกตีฟ" เมื่ออุณหภูมิสูงถึงจุดกระตุนสูง (TH)"รีเซต" เมื่ออุณหภูมิลดลงต่ํากวาจุดกระตุนต่ํา (TL)
ขาตอกราวดของวงจร
ขากําหนดแอดเดรสของ DS1621 หากมีตัวเดียวในระบบควรตอลงกราวด
ขาตอไฟเล้ียง +5V
1
2
3
4
8
7
6
5
DS1621Digital
Tthermometerand thermostat
SDA
SCL
TOUT
GND A2
A1
A0
+Vcc
รูปท่ี 1 การจัดขาและการทํางานของ DS1621 ไอซีวัดอุณหภูมิแบบดิจิตอล
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 5
วา จะแกไขคาอุณหภูมิของจุด TH หรือไม หรือไปแกไขในสวนอื่นแทน ดังนั้นเม่ือเริ่มตนใชงานDS1621 จึงควรอานบิตแฟลกนี้กอนเพ่ือตรวจสอบ เพราะบางทีผูใชงานไมทราบมากอนวาคา THกอนหนานี้ของ DS1621 ถูกกําหนดไวเทาใด
TLF (Temperature Low Flag - บติ 5) : บติแฟลกแจงวาอณุหภมิูท่ีวดัไดเทากับหรือตํ่ากวาจุดทริกอุณหภูมิตํ่าหรือ TL โดยเม่ือเกิดเหตุการณนี้ข้ึน บิตนี้จะเซตเปน “1” และดํารงสถานะนี้ไวจนกวาจะมีการเขียนขอมูล “0” มายงับตินีด้วยกระบวนการทางซอฟตแวร หรือเคลียรดวยการปลดไฟเลี้ยงออกจาก DS1621 ประโยชนของบิตนี้คือ หากบิตนี้เซตทันทีท่ีจายไฟเลี้ยงใหม ผูใชงานก็จะทราบไดทันท่ีเชนกนัวา ขณะนีอ้ณุหภมิูท่ีวดัไดมีคาเทาหรือตํ่ากวาจุดทริกอุณหภูมิตํ่า TL ผูใชงานสามารถเลือกไดกอนวา จะแกไขคาอุณหภูมิของจุด TL หรือไม หรือไปแกไขในสวนอื่นแทน ดังนั้นเม่ือเริม่ตนใชงาน DS1621 จงึควรอานบติแฟลกนีก้อนเพ่ือตรวจสอบ เพราะบางทีผูใชงานไมทราบมากอนวาคา TL กอนหนานี้ของ DS1621 ถูกกําหนดไวเทาใด
NVB (Nonvolatile Memory Busy Flag - บติ 4) : บติแฟลกแสดงสถานะการเขียนขอมูลลงในหนวยความจําอีอีพรอมภายใน DS1621 เพ่ือเก็บคาพารามิเตอรท่ีจําเปน ปกติจะใชเวลาประมาณ 10 มิลลิวินาที
“0” - ยงัอยูระหวางการเขียนขอมูล“1” - การเขียนขอมูลเสรจ็สมบรูณ
บิต 3 : ไมใชงาน กําหนดใหเปน “1”
บิต 2 : ไมใชงาน กําหนดใหเปน “0”
สวนกําหนดแอดเดรสและควบคุม
ขาอินพุตเอาตพุต
รีจิสเตอรควบคุมและแสดงสถานะ
ตัวตรวจวัดอุณหภูมิ
จุดทริกอุณหภูมิสูง (TH)
จุดทริกอุณหภูมิต่ํา (TL)
สวนเปรียบเทียบขอมูลดิจิตอล TOUT
SCL
SDA
A0A1A2
รูปท่ี 2 ผังการทํางานเบื้องตนโดยรวมของ DS1621 ไอซีวัดอุณหภูมิแบบดิจิตอล
6 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
POL (Output Polarity Bit - บติ 1) : บติเลอืกสถานะเอาตพุตของขา TOUT เม่ือทํางานในโหมดเทอรโมสตตั เม่ือเลอืกแลวขอมูลของบตินีจ้ะดาํรงอยูไปตลอดแมปลดไฟเลีย้งกต็าม หรอืเรยีกวา นอนโวลาไทล (non-volatile)
“0” - แอกตฟีดวยลอจกิ “0”“1” - แอกตฟีดวยลอจกิ “1”
1SHOT (One Shot Mode - บติ 0) : บติเลอืกวธีิการวดัและแปลงคาอณุหภมิูของ DS1621เม่ือเลือกแลวขอมูลของบิตนี้จะดํารงอยูไปตลอดแมปลดไฟเลี้ยงก็ตาม หรือเรียกวา นอนโวลาไทล(non-volatile)
“0” - กาํหนดให DS1621 ทําการวดัและแปลงคาอยางตอเนือ่ง“1” - กาํหนดให DS1621 เริม่ทําการแปลงคาอณุหภมิูเม่ือไดรบัสญัญาณเริม่ตน
โดยปกตแิลวควรกาํหนดให DS1621 วดัและแปลงคาอณุหภูมิอยางตอเนื่อง เวนแตมีความตองการควบคมุการใชพลงังานเพราะหาก DS1621 ไมไดวดัอณุหภมิูและแปลงคาจะใชพลงังานลดลง
DS1621
TH=60TL=59.5active "1"
อุณหภูมิจริงเปลี่ยนแปลงในชวง 59-60๐C(อาจถือไดวาคอนขางคงท่ี)
TOUT
DS1621
TH=59TL=30
active "1"
อุณหภูมิจริงเริ่มตนจาก 0-60๐Cแลวลดลงจากน้ันจะเปลี่ยนแปลงในชวง
50-60๐C TOUT
t5t1 t3 t4 t6
TH
TL
TOUT
"0"
"1"
t2
t
t
อุณหภูมิคาวัดไดจาก DS1621
รูปท่ี 3 รูปแบบการทํางานในโหมดเทอรโมสตัตของ DS1621
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 7
คําสั่งในการใชงาน DS1621การอานและเขียนขอมูลกับ DS1621 มีรูปแบบตางๆ กันไปตามลักษณะขอมูลและคําสั่งดัง
แสดงในรูปท่ี 4 ในการเขียนขอมูลหรือคําสั่งไปยัง DS1621 อุปกรณมาสเตอร (ซึ่งในท่ีนี้คือคอมพิวเตอร) จะกําหนดคาแอดเดรสของ DS1621 ตัวท่ีตองการติดตอ แลวตามดวยการเซตบิตR/W จากนัน้จะรอการตอบรบัจากอปุกรณสเลฟ ซึง่กค็อื DS1621 เม่ือไดรบัการตอบรบัแลว อปุกรณมาสเตอรจะจดัเตรยีมคาํสัง่เพ่ือใชงาน DS1621 ตอไป โดยทุกครัง้ท่ีมีการเขียนคาํสัง่ไปยงั DS1621ตองเคลยีรบติ R/W ดวยเสมอ เม่ือ DS1621 ไดรับคําสั่งจากอุปกรณมาสเตอรก็จะดําเนินการตามท่ีกาํหนดมาจากอปุกรณมาสเตอร และทุกครัง้จะตองสงสญัญาณรบัรูหรอืตอบรับกลับไปยังอุปกรณมาสเตอร สําหรับคําสั่งท้ังหมดของ DS1621 มีดังนี้
SCL
SDA S 1 0 0 1 A2 A1 A0 W A C7 C6 C5 C4 C3 C2 C1 C0 A P
START
แอดเดรส คําสั่ง
DS1621ACK
STOPDS1621ACK
เขียนคําสั่งในกลุมท่ีไมตองการขอมูล เชน คําสั่งเร่ิมตน/หยุดการแปลงคาอุณหภูมิ
เขียนคําสั่งในกลุมท่ีตองการขอมูล 1 ไบต เชน คําสั่งเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะSCL
SDA S 1
START
0 0 1 A2 A1 A0 W A
แอดเดรส
DS1621ACK
C7 C6 C5 C4 C3 C2 C1 C0 A
คําสั่ง
DS1621ACK
D7 D6 D5 D4 D3 D2 D1 D0
ขอมูล
A P
DS1621ACK
STOP
เขียนคําสั่งในกลุมท่ีตองการขอมูล 2 ไบต เชน คําสั่งเขาถึงคา TH และ TL
SDA S 1
START
0 0 1 A2 A1 A0 W A
แอดเดรส
DS1621ACK
C7 C6 C5 C4 C3 C2 C1 C0 A
คําสั่ง
DS1621ACK
D7 D6 D5 D4 D3 D2 D1 D0
ขอมูลไบตสูง
A P
DS1621ACK
STOP
SCL
A
DS1621ACK
D7 D6 D5 D4 D3 D2 D1 D0
ขอมูลไบตต่ํา
SDA S 1
START
0 0 1 A2 A1 A0 W A
แอดเดรส
DS1621ACK
C7 C6 C5 C4 C3 C2 C1 C0 A
คําสั่ง
DS1621ACK
SCL
อานขอมูลจากรีจิสเตอรท่ีมีขนาด 1 ไบต ไดแก รีจิสเตอรกําหนดการทํางานและแสดงสถานะ, ตัวนับ และตัวนับสโลป
A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0
ขอมูล
N P
MASTERNACK
STOP
R
RepeatSTART
1 0 0 1
แอดเดรส
Rd
DS1621ACK
A
อานขอมูลจากรีจิสเตอรท่ีมีขนาด 2 ไบต ไดแก คาของ TH, TL และคาอุณหภูมิSCL
SDA S 1
START
0 0 1 A2 A1 A0 W A
แอดเดรส
DS1621ACK
C7 C6 C5 C4 C3 C2 C1 C0 A
คําสั่ง
DS1621ACK
A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0
ขอมูล
N P
MASTERNACK
STOP
R
RepeatSTART
1 0 0 1
แอดเดรส
Rd
DS1621ACK
A D7 D6 D5 D4 D3 D2 D1 D0
ขอมูล
A
MASTERACK
รูปท่ี 4 ไดอะแกรมเวลาแสดงรูปแบบการติดตอบนระบบบัส I2C ของ DS1621
8 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
คําสั่งอานอุณหภูมิ (Read Temperature : ขอมูลคําสั่งเปน AAH)เปนคําสั่งอานคาอุณหภูมิลาสุดท่ี DS1621 แปลงเสร็จสมบูรณ โดยขอมูลมีขนาด 2 ไบต
คําสั่งเขาถึงคา TH (Access TH : ขอมูลคําสั่งเปน A1H)เปนคําสั่งเขาถึงคาของจุดทริกอุณหภูมิสูงหรือ TH ถาหากบิต R/W ถูกกําหนดใหเปน “0”
เปนการระบวุาตองการเขียนขอมูลกบั DS1621 เพ่ือกาํหนดคาหรอืตัง้คา TH ใหม โดยขอมูลท่ีเขียนมีขนาด 2 ไบต แตถาบติ R/W เปน “1” จะเปนการเขาถงึเพ่ืออานคา TH ในขณะนั้นของ DS1621คําสั่งเขาถึงคา TL (Access TL : ขอมูลคําสั่งเปน A2H)
เปนคําสั่งเขาถึงคาของจุดทริกอุณหภูมิตํ่าหรือ TL ถาหากบิต R/W เปน “0” เปนการระบุวาตองการเขียนขอมูลไปยัง DS1621 เพ่ือกําหนดคาหรือตั้งคา TL ใหม โดยขอมูลท่ีเขียนมีขนาด2 ไบต แตถาบิต R/W เปน “1” จะเปนการเขาถึงเพ่ืออานคา TL ในขณะนั้นของ DS1621 แทนคําสั่งเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ (Access Config : ขอมูลคําส่ังเปน ACH)
เปนคาํสัง่สาํหรบัเขาถงึหรอืตดิตอกบัรจีสิเตอรกาํหนดการทํางานและแสดงสถานะ (Config)ถาหากบติ R/W ถกูกาํหนดใหเปน “0” เปนการระบวุาตองการเขียนขอมูลไปยงัรจีสิเตอรเพ่ือกาํหนดลักษณะการทํางานของ DS1621 โดยขอมูลท่ีเขียนนั้นมีขนาด 1 ไบต แตถาหากบิต R/W เปน“1” จะเปนการเขาถึงเพ่ืออานคาของรีจิสเตอรเพ่ือตรวจสอบสถานะการทํางานของ DS1621คําสั่งอานตัวนับ (Read Counter : ขอมูลคําสั่งเปน A8H)
เปนคาํสัง่อานคาตวันบัท่ีใชในการแปลงคาอณุหภมิูเม่ือใชคําสั่งนี้บิต R/W เปน “1” เทานั้นคําสั่งอานคาตัวนับละเอียด (Read Slope : ขอมูลคําสั่งเปน A9H)
เปนคาํสัง่สาํหรบัอานคาตวันบัละเอยีด ในกรณท่ีีตองการใหแสดงรายละเอยีดคาของอณุหภมิูซึง่เกบ็อยูในตวันบัละเอยีด (slope counter) ในการใชงานคําสั่งนี้ตองกําหนดใหบิต R/W เปน “1”คําสั่งเริ่มตนแปลงคาอุณหภูมิ (Start Convert T : ขอมูลคําสั่งเปน EEH)
เปนคําสั่งท่ีกําหนดให DS1621 เริ่มตนการแปลงคาอุณหภูมิคําสั่งหยุดการแปลงคาอุณหภูมิ (Stop Convert T : ขอมูลคําสั่งเปน 22H)
เปนคาํสัง่ท่ีกาํหนดให DS1621 หยดุการแปลงคาอณุหภมิู มักจะใชเม่ือตองการให DS1621หยุดทําการวัดและแปลงคาอุณหภูมิอยางตอเนื่อง หลังจากท่ี DS1621 กระทําคําสั่งนี ้คาอุณหภูมิท่ีแปลงไดลาสดุจะยงัคงอยู จนกวาจะมีการกาํหนดให DS1621 กลบัมาเริม่ตนแปลงคาอณุหภมิูใหม
ในตารางท่ี 2 เปนตารางสรุปคําสั่งใชงาน DS1621จังหวะการทํางานของ DS1621
เพ่ือใหสามารถเขาใจถงึลาํดบัการทํางานรวมถงึสถานะตางๆ ของ DS1621 จึงไดทําการสรุปสถานะของบัส โหมดการทํางานของ DS1621 และชนิดของขอมูลท่ีปรากฏไวในตารางท่ี 3
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 9
EX-10 บอรดวดัอุณหภมิูผานระบบบสั I2Cในรปูท่ี 5 แสดงวงจรสมบรูณของ EX-10 บอรดวดัอณุหภมิูและเทอรโมสตตัท่ีทํางานบน
ระบบบัส I2C หัวใจสําคัญของบอรดนี้คือ IC1001 เบอร DS1621 ซึ่งเปนไอซีวัดอุณหภูมิท่ีใชการติดตอผานระบบบัส I2C โดยขาสัญญาณ SDA และ SCL ของ IC1001 จะตอเขากับ K1001 และK1002 ซึง่เปนจดุเช่ือมตอระบบบสั I2C กบั P-Board โดยใชแจกโมดลูารทําใหการเช่ือมตอสามารถทําไดงายและมีความแข็งแรง JP1001-JP1003 ใชสําหรับกําหนดคาแอดเดรสทางฮารดแวรของDS1621 ทําใหสามารถตอพวงบอรด EX-10 นีไ้ดสงูสดุรวม 8 บอรด โดยการกําหนดสถานะท่ีขาA2-A0 ของ DS1621 ใหแตกตางกนัดวยจัม๊เปอร JP1001-JP1003 สาํหรบัเอาตพุตของ DS1621ซึ่งใชแสดงผลการทํางานของวงจรเทอรโมสตัตนั้น จะตอเขากับอุปกรณ 2 แบบคือ ลําโพงเปยโซสาํหรบัแสดงผลดวยเสยีงและวงจรขับรีเลยเพ่ือใหทํางานเหมือนสวิตชตัดตอ การเลือกอุปกรณท่ีขาTOUT ของ DS1621 นั้นตองกระทําผาน JP1004 และ JP1005 โดยสามารถเลือกใหแสดงผล
เร่ิมตนแปลงคาอุณหภูมิ
อานคาอุณหภูมิอานคาตัวนับอานคาตัวนับสโลป
หยุดแปลงคาอุณหภูมิ
AAHA8HA9HEEH22H
อานขอมูล 2 ไบต
คําสั่ง ขอมูลคําสั่ง การทํางานหลังสงคําสั่ง หมายเหตุ
อานขอมูล 1 ไบตอานขอมูล 1 ไบต
หยุดและเตรียมพรอมเร่ิมตนหยุดและเตรียมพรอมเร่ิมตน
11
เขาถึง THเขาถึง TLเขาถึงรีจิสเตอร Config.
A1HA2HACH
เขียนขอมูล 1 ไบต 222
เขียนขอมูล 1 ไบตเขียนขอมูล 1 ไบต
หมายเหตุ1. ในโหมดการแปลงคาอยางตอเนื่อง เมื่อ DS1621 กระทําคําสั่งหยุดการแปลงคา จะเปนการยกเลิกการแปลงคาอยางตอเนื่องทันที หากตองการให DS1621 แปลงคาอีกครั้ง ตองเขียนคําสั่งเริ่มตนการแปลงคาใหแก DS1621 ใหม2. การเขียนขอมูลไปยังรีจิสเตอร DS1621 ตองการเวลา 10 มิลลิวินาทีเปนอยางนอยในการเขียนขอมูลใหสมบูรณ
คําสั่งเก่ียวกับการแปลงคาอุณหภูมิ
คําสั่งในโหมดเทอรโมสตัต
ตารางท่ี 2 ตารางสรุปคําสั่งสําหรับใชงาน DS1621
10 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
ดวยเสยีงพรอมกบัรเีลยทํางานกไ็ด นอกจากนัน้ยงัมีการแสดงผลการทํางานของ DS1621 ในโหมดเทอรโมสตัตอีกอยางหนึ่งคือ แสดงผลดวยแสง นั่นคือ LED1001 จะติดสวางเม่ือคาอุณหภูมิท่ีวัดสูงถึงจุด TH
รเีลย RY1001 ท่ีใชไดจดัเตรยีมเทอรมินอลบลอ็กสาํหรบัตอสายเพ่ือเช่ือมตอกบัอปุกรณหรอืสัญญาณภายนอกไวเรียบรอย โดยมีพิกัดของหนาสัมผัสรีเลยสูงสุดเทากับ 220VAC 5A และหาก
โหมดการทํางานของอุปกรณมาสเตอร
โหมดการทํางานของDS1621
สภาวะและขอมูลท่ีปรากฏบนบัส รายละเอียด
TX RX START คอมพิวเตอรกําหนดสภาวะเริ่มตนใหเกิดขึ้นบนบัสTX RX <ADDRESS,0> คอมพิวเตอรสงคาแอดเดรสของ DS1621 และกําหนดบิต R/W เปน "0"RX TX ACK DS1621 สงสัญญาณรับรูตอบกลับ
RX TX ACK DS1621 สงสัญญาณรับรูตอบกลับTX RX ACH คอมพิวเตอรสงคําสั่งเขาถึงรีจิสเตอรกําหนดการทํางาน
RX คอมพิวเตอรสงขอมูลเพ่ือกําหนดให DS1621 แปลงคาอยางตอเน ื่องและใหเอาตพุตเปนลอจิกสูงเมื่ออุณหภูมิที่วัดสูงถึงจุด TH
RX TX ACK DS1621 สงสัญญาณรับรูตอบกลับTX RX START คอมพิวเตอรกําหนดสภาวะเริ่มตนใหเกิดขึ้นบนบัสอีกครั้ง
RX TX ACK DS1621 สงสัญญาณรับรูตอบกลับTX RX <address,0> คอมพิวเตอรสงคาแอดเดรสของ DS1621 และกําหนดบิต R/W เปน "0"
TX RX A1H คอมพิวเตอรสงคําสั่งเขาถึง THRX TX ACK DS1621 สงสัญญาณรับรูตอบกลับTX RX 28H คอมพิวเตอรเขียนขอมูลไบตสูงของคา TH (กําหนดใหเทากับ +40๐C)
TX RX 00H คอมพิวเตอรเขียนขอมูลไบตตํ่าของคา THRX TX ACK DS1621 สงสัญญาณรับรูตอบกลับ
RX TX ACK DS1621 สงสัญญาณรับรูตอบกลับTX RX START คอมพิวเตอรกําหนดสภาวะเริ่มตนใหเกิดขึ้นบนบัสอีกครั้งTX RX <address,0> คอมพิวเตอรสงคาแอดเดรสของ DS1621 และกําหนดบิต R/W เปน "0"
TX RX A2H
RX TX ACK DS1621 สงสัญญาณรับรูตอบกลับ
RX TX ACK
TX RX 0AH
TX RX 00H
TX RX START คอมพิวเตอรกําหนดสภาวะเริ่มตนใหเกิดขึ้นบนบัสอีกครั้งRX TX ACK
TX RX <address,0> คอมพิวเตอรสงคาแอดเดรสของ DS1621 และกําหนดบิต R/W เปน "0"RX TX ACK DS1621 สงสัญญาณรับรูตอบกลับTX RX EEH คอมพิวเตอรสงคําสั่งเริ่มตนแปลงคาอุณหภูมิ
TX RX STOP คอมพิวเตอรกําหนดสภาวะหยุดใหเกิดขึ้นบนบัส เพ่ือหยุดการทํางานRX TX ACK DS1621 สงสัญญาณรับรูตอบกลับ
RX TX ACK
02HTX
คอมพิวเตอรสงคําสั่งเขาถึง TLDS1621 สงสัญญาณรับรูตอบกลับคอมพิวเตอรเขียนขอมูลไบตสูงของคา TL (กําหนดใหเทากับ +10๐C)
คอมพิวเตอรเขียนขอมูลไบตตํ่าของคา TLDS1621 สงสัญญาณรับรูตอบกลับ
DS1621 สงสัญญาณรับรูตอบกลับ
หมายเหตุTX หมายถึง ทําหนาที่เปนตัวสง, RX หมายถึง ทําหนาที่เปนตัวรับ, H ที่อยูหลังขอมูลใชแสดงวา ขอมูลนั้นๆ เปนขอมูลเลขฐานสิบหก
ตารางท่ี 11-3 แสดงตัวอยางลําดับการทํางาน โหมดการทํางานของอปุกรณมาสเตอร (ซึ่งในท่ีนี้คือ คอมพิวเตอร) และ DS1621 ตลอดจนสถานะของบัสในขณะติดตอ
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 11
Q1001BC547
R100115k
+5VBUS
SDA
SCL
K1001I2C BUS(RJ11-4)
+5VBUS
SDA
SCL
+5VBUS
R100215k
SDASCL
12
A1 A0
7
A2
65
GND4
VDD
Tout
R10034.7
"1"
"0"
A1 A0A2
JP1001-JP1003ADDRESS
83
ZD10015V1
C10010.1/50V
Temperature Sensor
R100410k
R100510k
R10061k
LED1001ACTIVE
Q1002BC337
R1007470k
Q1003BC557
Q1004BC547
R100810k
C10020.01/50V
R100912
R1010470
1/2W
JP1004SOUND
SP1001PIEZO
SPEAKER
JP1005RELAY
NC
COM
NO
RY1001RELAY 12V
D10011N4001
D10021N4001
+12V.
GNDK1003
EXTERNAL12V. INPUT
K1004RELAY
CONTACT
K1002I2C BUS(RJ11-4)
Contact rating : 220V 5A
IC1001DS1621
รูปท่ี 5 วงจรของ EX-10 บอรดวดัอณุหภูมแิละเทอรโมสตัตผานระบบบสั I2C
ตองการใหรเีลยทํางาน จะตองจายไฟเลีย้ง +12V ใหแกบอรด EX-10 แทนการใชไฟเลี้ยงจาก I2CBUS ท่ีมาจากคอนเน็กเตอร K1001
นัน่หมายความวา บอรด EX-10 สามารถใชไฟเลีย้งไดจาก 2 แหลงคอื จากคอนเน็กเตอรK1001 ซึ่งมาจาก I2C BUS ของ P-Board และจากแหลงจายไฟตรงภายนอกท่ีมีคาไมเกนิ +12Vเนื่องจากบนบอรดมีไอซีควบคุมแรงดันไฟเลี้ยงคงท่ีท่ี +5V เบอร 78L05 อยูดวย จึงสามารถสรางไฟเลี้ยง +5V เพ่ือจายใหแก DS1621 และอุปกรณท้ังหมดได หากไมใชไฟเลี้ยง +12V ภายนอกกจ็ะไมสามารถใชงานรีเลยได และจะตองปลดจั๊มเปอร JP1005 ออกดวยเสมอ หากใชไฟเลี้ยงจากI2C BUS หรอืเม่ือไมตองการใชงานรเีลย ท้ังนีเ้พ่ือลดปรมิาณกระแสไฟฟาท่ีใชของบอรด EX-10
อยางไรก็ตาม อุปกรณเอาตพุตท้ังหมดไมวาจะเปนแสงจาก LED เสียงจากลําโพงเปยโซหรือรีเลยจะสามารถใหผลการทํางานท่ีถูกตองก็ตอเม่ือกําหนดให DS1621 สงลอจิกสูงหรือลอจิก“1” ออกทางขา TOUT เม่ืออุณหภูมิสูงถึงจุด TH เทานั้น นั่นคือตองเซตบิต POL ในรีจิสเตอรกําหนดการทํางานและแสดงสถานะของ DS1621 ใหเปน “1”
12 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
เคร่ืองมือและอุปกรณ1. บอรดเช่ือมตอพอรตขนาน P-Board 1 แผน2. EX-10 บอรดวัดอณุหภูมผิานระบบบัส I2C 1 แผน3. คอมพิวเตอรที่ติดต้ังระบบปฏิบัติการวินโดวสและ Visual BASIC อยางนอยเวอรชัน 5.04. สายเช่ือมตอ I2C 1 เสน
การทดลองการทดลองอานคาอุณหภูมิจาก DS1621
กอนอานคาจากรีจิสเตอร Temperature ตองสั่งให DS1621 เริ่มการแปลงคาอุณหภูมิ(Start Convert) ซ่ึงมีข้ันตอนดังนี้
1. สงสัญญาณ START2. สงขอมลูกาํหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ
กําหนดการเขียนขอมูลไปยัง DS16213. รอรับสัญญาณ ACK จาก DS16214. สงคําสั่ง (Command) &HEE สั่งใหเริ่มการแปลงคาอุณหภูมิ5. รอรับสัญญาณ ACK จาก DS16216. สงสัญญาณ STOPถาตองการให DS1621 หยุดการแปลงคาอุณหภูม ิ(Stop Convert) มีข้ันตอนดังนี้1. สงสัญญาณ START2. สงขอมลูกาํหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสดุทายเปน “0” เพือ่กาํหนด
การเขียนขอมูลไปยัง DS16213. รอรับสัญญาณ ACK จาก DS16214. สงคําสั่ง (Command) &H22 สั่งใหหยุดการแปลงคาอุณหภูมิ5. รอรับสัญญาณ ACK จาก DS16216. สงสัญญาณ STOP
การทดลอง
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 13
การอานคาจากรีจิสเตอร Temperature มีข้ันตอนดังนี้1. สงสัญญาณ START2. สงขอมลูกาํหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ
กําหนดการเขียนขอมูลไปยัง DS16213. รอรับสัญญาณ ACK จาก DS16214. สงคําสั่ง (Command) &HAA สําหรับอานคาจากรีจิสเตอร Temperature ให DS16215. รอรับสัญญาณ ACK จาก DS16216. สงสัญญาณ START7. สงขอมลูกาํหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสดุทายเปน “0” เพือ่กาํหนด
การเขียนขอมูลไปยัง DS16218. รอรับสัญญาณ ACK จาก DS16219. อานคาจาก MSB ของรีจิสเตอร Temperature10. สงสัญญาณ Master ACK ให DS162111. อานคาจาก LSB ของรีจิสเตอร Temperature12. สงสัญญาณ Master Not ACK ให DS162113. สงสัญญาณ STOPจากข้ันตอนดังกลาวสามารถเขียนเปนโปรแกรมทดลองตามข้ันตอนตอไปนี้
1.1 สรางฟอรมและเปลีย่นช่ือคอนโทรลตางๆดังรูปที่ P1-1
รูปท่ี P1-1 หนาตาฟอรมของโปรแกรมทดลองอานคาอุณหภูมิจากไอซี DS1621บน บอรด EX-10
Name cmdRdTemp
Caption Read Temp
Name cmdSTARTConv
Caption Start Convert
Name txtTemp
Text
Name cmdSTOPConv
Caption Stop Convert
1.2 เปลี่ยนคุณสมบัติของคอนโทรลตางๆ ดังนี้
14 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
1.3 เขียนโปรแกรมใหกับเหตุการณ cmdSTARTConv_Click ดังนี้Private Sub cmdSTARTConvert_Click() I2CSTART Send8BIT &H90 Ack Send8BIT &HEE ‘Start Convert Temperature Command Ack I2CSTOPEnd Sub
1.4 เขียนโปรแกรมใหกับเหตุการณ cmdSTOPConv_Click ดังนี้Private Sub cmdSTOPConvert_Click() I2CSTART Send8BIT &H90 Ack Send8BIT &H22 ‘Stop Convert Temperature Command Ack I2CSTOPEnd Sub
1.5 เขียนโปรแกรมใหกับเหตุการณ cmdRdTemp_Click ดังนี้Private Sub cmdRdTemp_Click()Dim tmp As DoubleDim datH As IntegerDim datL As Integer I2CSTART Send8BIT &H90 Ack Send8BIT &HAA ‘Read Temperature Command Ack I2CSTART Send8BIT &H90 + 1 Ack datH = Read8Bit ‘Read TH Register MAck datL = Read8Bit ‘Read TL Register MNAck I2CSTOP If (datL And &H80) = &H80 Then tmp = datH + 0.5 Else tmp = datH End If txtTemp.Text = tmpEnd Sub
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 15
1.6 หลังจากสิ้นสุดกระบวนการติดตอกับ DS1621 ขอมูลที่ไดจะตองนํามาคํานวณเพิ่มเติมโดยตรวจสอบวาบิต 7 ของขอมูลไบตลางของรีจิสเตอร Temperature มีคาเปน “1” หรือไม ถาเปนใหนาํคาทีไ่ดจากขอมลูไบตบนหรอืไบตสงูของรจิีสเตอร Temperature บวกดวย 0.5 แตถาเปนตรงขาม ขอมูลไบตสูงของรีจิสเตอร Temperature ก็คือ คาของอุณหภูมิที่อานได1.7 รันโปรแกรมแลวทดลองคลิ้กปุม Read Temp จะเห็นวาคาที่อานไดเปน 0 เนื่องจากยังไมมีการเริ่มตนการแปลงคาอุณหภูม ิคาที่อานไดจากรีจิสเตอร Temperature จึงเปน 0
1.8 คลิ้กปุม Start Convert เพื่อเริ่มการแปลงคาอุณหภูมิ จากนั้นคลิ้กที่ปุม Read Temp อีกครั้งจะสามารถอานคาอุณหภูมิได1.9 ทดลองใชนิว้หรอือปุกรณอืน่แตะทีตั่ว DS1621 ใหอณุหภูมเิปลีย่น จากนัน้คลิก้ปุม Read Tempอีกครั้ง ถาไมมีการเปลี่ยนแปลง มีสาเหตุคือ ตัว DS1621 ไมทําการแปลงคาอุณหภูมิอยางตอเนื่อง เพราะที่บิต 1SHORT ในรีจิสเตอรกําหนดการทํางานและแสดงสถานะมีคาเปน “1” ซ่ึงเปนโหมดแปลงคาอุณหภูมิเพียงครั้งเดียวเมื่อไดรับสัญญาณ Start Convert และหยุดการทํางานอตัโนมัติ ถาเกดิการเปลี่ยนแปลงคาขึ้น แสดงวา ทีบิ่ต 1Shot มีคาเปน “0” อันเปนโหมดแปลงคาตอเนื่องเมื่อไดรับสัญญาณ Start Convert
รายละเอียดของโปรแกรมทดลองนี้ดูไดจากไฟล LAB15A.VBPการทดลองเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ (Config register)
การเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะสามารถทําไดโดยใชคําสั่ง &HACซ่ึงมีข้ันตอนดังนี้
1. สงสัญญาณ START2. สงขอมลูกาํหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ
กําหนดการเขียนขอมูลไปยัง DS16213. รอรับสัญญาณ ACK จาก DS16214. สงคําสั่ง (Command) &HAC เพื่อเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ5. รอรับสัญญาณ ACK จาก DS16216. สงสัญญาณ START7. สงขอมลูกาํหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “1” เพื่อ
กําหนดการอานขอมูลออกจาก DS16218. รอรับสัญญาณ ACK จาก DS16219. รับคาจากรีจิสเตอรกําหนดการทํางานและแสดงสถานะ
16 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
10. สงสัญญาณ Master Not ACK ให DS162111. สงสัญญาณ STOPสวนการเขียนขอมูลลงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ ทําไดโดยใชคําสั่ง
&HAC มีข้ันตอนดังนี้1. สงสัญญาณ START2. สงขอมลูกาํหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ
กําหนดการเขียนขอมูลไปยัง DS16213. รอรับสัญญาณ ACK จาก DS16214. สงคําสั่ง (Command) &HAC เพื่อเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ5. รอรับสัญญาณ ACK จาก DS16216. สงขอมูลสําหรับรีจิสเตอรกําหนดการทํางานและแสดงสถานะ ไปที่ DS16217. รอรับสัญญาณ ACK จาก DS16218. สงสัญญาณ STOPสําหรับการเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะสามารถเขียนโปรแกรม
ทดลองไดดังตอไปนี้1.10 สรางปุม 2 ปุมและ 1 TextBox เพิม่เติมและเปลี่ยนช่ือดังรูปที่ P1-2
รูปท่ี P1-2 หนาตาฟอรมของโปรแกรมทดลองอานคาอุณหภูมิจากไอซี DS1621บน บอรด EX-10 ท่ีมกีารเพิม่คําสัง่เพือ่อานและเขยีนคากบัรีจสิเตอรกาํหนดการทํางานของDS1621
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 17
1.11 เปลี่ยนคุณสมบัติของคอนโทรลตางๆดังนี้Name cmdRdConfig
Caption Read Config
Name cmdWrConfig
Caption Write Config
Name txtConfig
Text
1.12 เพิ่มโปรแกรมที่เหตุการณ cmdRdConfig_Click เพื่ออานขอมูลจากรีจิสเตอรกําหนดการทาํงานและแสดงสถานะPrivate Sub cmdRdConfig_Click() I2CSTART Send8BIT &H90 Ack Send8BIT &HAC Ack I2CSTART Send8BIT &H91 Ack txtConfig.Text = Hex(Read8Bit) MNAck I2CSTOPEnd Sub
1.13 เพิม่โปรแกรมที่เหตุการณ cmdWrConfig_Click เพื่อเขียนขอมูลไปยังรีจิสเตอรกําหนดการทาํงานและแสดงสถานะPrivate Sub cmdWrConfig_Click() I2CSTART Send8BIT &H90 Ack Send8BIT &HAC Ack Send8BIT CByte(“&H” & txtConfig.Text) Ack I2CSTOPEnd Sub1.14 ทดลองต้ังคาบิต 1Shot ในรีจิสเตอรกําหนดการทํางานและแสดงสถานะ ใหเปน “0” เพื่อเขาสูโหมดแปลงคาตอเนื่อง โดยพิมพเลข 8 ใน txtConfig จากนั้นคลิ้กปุม Write Config แลวคลิ้กปุมStop Convert (ให DS1621 หยดุการทาํงาน เพือ่เปลีย่นโหมดการแปลงคา ) คลิก้ปุม Start Convertเพือ่เริม่อานอุณหภูมิอีกครั้งในโหมดการแปลงคาอุณหภูมิตอเนื่อง
สามารถดูรายละเอียดของโปรแกรมพรอมทดลองใชงานไดจากไฟล LAB15B.VBP
18 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
การทดลองใช DS1621 ทํางานในโหมดเทอรโมสตัตการอานขอมลูจากรจิีสเตอร TH และ TL นัน้มข้ัีนตอนเหมอืนการอานรจิีสเตอร Temperature
แตคําสั่ง (Command) แตกตางกัน คือการอานรีจิสเตอร TH ใชคําสั่ง &HA1 สวน TL ใชคําสั่ง&HA2
สวนการเขียนขอมูลไปยังรีจิสเตอรทั้งสองมีข้ันตอนดังนี้1. สงสัญญาณ START2. สงขอมลูกาํหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ
กําหนดการเขียนขอมูลไปยัง DS16213. รอรับสัญญาณ ACK จาก DS16214. สงคําสั่ง (Command) &HA1 เพื่อเขาถึงรีจิสเตอร TH หรือคําสั่ง &HA2 สําหรับ TL5. รอรับสัญญาณ ACK จาก DS16216. สงขอมูล MSB ของ รีจิสเตอร TH / TL ไปที่ DS16217. รอรับสัญญาณ ACK จาก DS16218. สงขอมูล LSB ของ รีจิสเตอร TH / TL ไปที่ DS16219. รอรับสัญญาณ ACK จาก DS162110. สงสัญญาณ STOPในการติดตอกับรีจิสเตอร TH และ TL สามารถเขียนโปรแกรมทดลองไดดังนี้
1.15 เพิม่คอนโทรลและเปลีย่นช่ือดังรปูที ่P1-3
รูปท่ี P1-3 หนาตาของโปรแกรมทดลองอานและต้ังคาอณุหภูมกิบั DS1621 เมือ่กําหนดใหทํางานในโหมดเทอรโมสตัต
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C 19
1.16 เพิ่มโปรแกรมใหกับเหตุการณ cmdRdTH_Click ดังนี้Private Sub cmdRdTH_Click()Dim tmp As DoubleDim datH As IntegerDim datL As Integer I2CSTART Send8BIT &H90 Ack Send8BIT &HA1 ‘Access TH Register Command Ack I2CSTART Send8BIT &H91 Ack datH = Read8Bit ‘Read MSB TH Register MAck datL = Read8Bit ‘Read LSB TH Register MNAck I2CSTOP If (datL And &H80) = &H80 Then tmp = datH + 0.5 Else tmp = datH End If txtTH.Text = tmpEnd Sub
จะเหน็ไดวา โปรแกรมสาํหรบัเหตุการณ cmdRdTL_Click นั้นเหมือนกับ cmdRdTH_Clickแตเปลี่ยน Command เปน &HA2 และเก็บคาลงใน txtTL.Text1.17 เขียนโปรแกรมใหกับเหตุการณ cmdWrTH_Click ดังนี้Private Sub cmdWrTH_Click()Dim tmp As DoubleDim datH As ByteDim datL As Byte datH = Fix(txtTH.Text) tmp = Val(txtTH.Text) - datH If tmp <> 0 Then datL = &H80 I2CSTART Send8BIT &H90
20 EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
Ack Send8BIT &HA1 ‘Access TH Register Command Ack Send8BIT datH Ack Send8BIT datL Ack I2CSTOPEnd Sub
จากโปรแกรมขางตน เหตุการณ cmdWrTL_Click ถูกแกไขใหรับคาจาก txtTL.Text และใช Command &HA21.18 รนัโปรแกรมแลวเขียนคา Config ใหเปน A คลิก้ปุม Write Config เพือ่กาํหนดโหมดการแปลงคาตอเนื่อง และให Thermostat ทํางานโหมด Active High1.19 ใสคา 30 ในชอง TH และ 28 ในชอง TL คลิ้กปุม Write ของ TH และ TL1.20 คลิก้ปุม Start Convert ให DS1621 เริ่มแปลงคาอุณหภูมิ ใชนิ้วหรือวัตถุอื่นแตะให DS1621เปลีย่นอณุหภูม ิคลิก้ปุม Read Temp สงัเกตอณุหภูมทิีอ่านได ถามคีามากกวา 30 LED บนบอรดEX-10 จะตดิพรอมกบัมเีสยีงและรเีลยทาํงานตามจ๊ัมเปอรทีต่ัง้ไว เมือ่อานคาจากรจิีสเตอรConfig จะมีคาเปน 2A เพราะบิต THF มีคาเปน “1” ทั้งนี้เปนผลมาจากอุณหภูมิที่วัดไดมีคามากกวา TH ที่ตั้งไว
สามารถดูรายละเอียดของโปรแกรมพรอมกับทดลองใชงานไดจากไฟล LAB15C.VBP ในแผนซีดีรอม (ซ่ึงอยูในชุดของ P-Board)