EX-10
บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
(C) Innovative Experiment Co.,Ltd.
คุณสมบัติทางเทคนิค
ใชไอซี DS1621 ทีว่ ดั อุณหภูมไิ ดตงั้ แต -55๐C ถึง +125๐C สําหรับตัวบอรดสามารถใชงานในชวง 0-50 ๐C l สงขอมูลอุณหภูมิผานระบบบัส I2C l ตัง้ คาจุดทริกอุณหภูมิสูงและตํ่า เมื่อทํางานในโหมด เทอรโมสตัตได l มีเอาตพุตแสดงผลการทํางานในโหมดเทอรโมสตัต พรอมวงจรขับ LED, ลําโพงเปยโซ และรีเลย โดยเลือก ดวยจั๊มเปอร l สามารถตอพวงไดรวม 8 บอรด l เชือ ่ มตอกับ P-Board และ S-Board ผานทางแจก I2C BUS l
บอรดที่ใชงานรวมกันเพื่อทําการทดลองเพิ่มเติม (จําหนายแยก) P-Board บอรดเชือ่ มตอพอรตขนาน , S-Board บอรดเชือ่ มตอพอรตอนุกรม
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 เทานัน้ EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
1
ทฤษฎี 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.5V l ใชเวลาในการวัดอุณหภูมิแลวแปลงเปนขอมูลดิจิตอล 1 วินาที l สามารถทํางานเปนเทอรโมสตัต (thermostat) ได พรอมขาเอาตพุต 1 ขา l สามารถตั้งคาอุณหภูมิที่ตองการเมื่อทํางานเปนเทอรโมสตัตได โดยติดตอผานระบบบัส I2C และคาทีก่ าํ หนดนีจ้ ะคงอยูต ลอดไป แมปลดไฟเลี้ยงแลวก็ตาม สามารถเปลี่ยนแปลงไดโดยการ กําหนดทางซอฟตแวรเทานั้น l สามารถตอพวงกันไดสูงสุด 8 ตัว
การทํางานของ DS1621 ในรูปที่ 2 แสดงผังการทํางานรวมของ DS1621 หัวใจสําคัญอยูที่สวนวัดอุณหภูมิ เมื่อ DS1621 เริม่ ทํางาน จะทําการวัดอุณหภูมิ โดยภายในไอซีจะมีตัวตรวจจับอุณหภูมิบรรจุอยู ผลการ วัดจะสงตอไปยังสวนจัดการแอดเดรสและควบคุมอินพุตเอาตพตุ ในสวนนีน้ าํ ขอมูลอุณหภูมทิ วี่ ัดได สงตอไปยังบัสผานทางขา SDA โดยไดรบั การกําหนดจังหวะการทํางานจากสวนรีจสิ เตอรควบคุมและ แสดงสถานะ หากมีการกําหนดใหทาํ งานในโหมดเทอรโมสตัต ขอมูลการวัดถูกสงไปเปรียบเทียบกับ จุดกระตุน ทางสูงและตํา่ ทีส่ ว นเปรียบเทียบขอมูลดิจิตอล ผลการเปรียบเทียบจะสงออกทางขา TOUT เนือ่ งจาก DS1621 มีขากําหนดแอดเดรส 3 ขาคือ A2-A0 จึงทําใหสามารถตอพวง DS1621 ไดสงู สุด 8 ตัว โดยแตละตัวตองกําหนดสถานะลอจิกทีข่ าแอดเดรสทัง้ สามใหแตกตางกัน สวนจัดการ แอดเดรสและควบคุมอินพุตเอาตพตุ ของ DS1621 แตละตัวจะเปนตัวจัดการสงขอมูลตามทีอ่ ปุ กรณ มาสเตอรรองขอ 2
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
ขอมูลดิจิตอลเอาตพุต (เลขฐานสอง)
ขอมูลดิจิตอลเอาตพุต (เลขฐานสิบหก)
๐ ๐ +25 C ๐ +0.5 C ๐
01111101 00000000
7B00H
00011001 00000000
1900H
00000001 00000000
0080H
00000000 00000000
0000H
๐ -0.5 C ๐ -25 C ๐
11111111 10000000
FF80H
11100111 00000000
E700H
11001001 00000000
C900H
อุณหภูมิ +125 C
0 C
-55 C
ตารางที่ 1 แสดงรูปแบบขอมูลดิจติ อลตัวอยาง ของอุณหภูมทิ วี่ ดั ไดจาก DS1621 จะเห็นไดวา ขอมูลอุณหภูมิอยูที่ 8 บิตบน สวน 8 บิตลาง แสดงคาความละเอียด
คาของอุณหภูมิที่วัดไดถูกเก็บอยูรูปของขอมูลเลขฐานสองขนาด 9 บิต ดังแสดงตัวอยางใน ตารางที่ 11-1 ขอมูลดิจติ อลเอาตพตุ จะแบงเปน 2 สวน 8 บิตบนหรือไบตสงู จะเปนคาอุณหภูมจิ าํ นวน เต็ม โดยบิต MSB จะเปนตัวแสดงเครื่องหมายวา อุณหภูมิเปนบวกหรือลบ หากบิต MSB เปน “1” แสดวาอุณหภูมิที่วัดไดมีคาเปนลบ ในขณะที่ 8 บิตลางหรือไบตลางจะมีใชงานเพียงบิตเดียว จะเปนบิตแสดงคาความละเอียด ซึ่งเทากับ 0.5๐C เมื่อสั่งให DS1621 สงขอมูลอุณหภูมิออกมา DS1621 จะใชเวลาไมเกิน 1 วินาที จึงจะสง ขอมูลออกมา ดังนั้นในการควบคุมการทํางานจึงตองมีการหนวงเวลา เพื่อรอให DS1621 วัดและ แปลงคาออกมาเปนขอมูลใหเรียบรอยเสียกอน
การทํางานในโหมดเทอรโมสตัต นอกจากวัดอุณหภูมแิ ลว DS1621 ยังสามารถทํางานในแบบเทอรโมสตัตหรือใหเอาตพตุ เมือ่ อุณหภูมติ าํ่ หรือสูงถึงจุดทีก่ าํ หนดไว โดยผูใ ชงานสามารถโปรแกรมไดตามตองการและคาทีโ่ ปรแกรม นีจ้ ะอยูต ลอดไปจนกวาจะมีการแกไขแมวา จะตัดไฟเลีย้ งไปแลวก็ตาม ผูใ ชงานตองกําหนดคาของจุด ทริกอุณหภูมิสูง (high temperature trigger : TH) และ จุดทริกอุณหภูมิตํ่า (low temperature trigger :TL) และเลือกสัญญาณแอกตีฟวา เมือ่ อุณหภูมสิ งู มาถึงจุดที่กําหนดจะใหขาเอาตพุต TOUT สงสัญญาณลอจิกแบบใดออกไป สามารถเลือกได 2 แบบคือ ลอจิก “0” หรือ “1” เมือ่ กําหนดคาเรียบรอยแลว DS1621 จะวัดอุณหภูมไิ ปเรือ่ ยๆ จนกระทัง่ เมื่ออุณหภูมิสูงจน ถึงจุด TH ขา TOUT ก็จะแอกตีฟทันที และแอกตีฟคางอยูเชนนั้นจนกวาอุณหภูมิที่วัดไดลดตํ่าลง กวาจุด TL ดังนั้นการกําหนดคาของ TH และ TL จึงสําคัญมาก หากกําหนดไวแคบหรือมีความ แตกตางกันนอยเกินไป และอุณหภูมทิ วี่ ดั จริงนัน้ มีการเปลีย่ นแปลงในชวงแคบๆ หรือจริงๆ แลวคอน ขางคงที่ จะทําใหเอาตพุตที่ขา TOUT เกิดสัญญาณลอจิกที่ไมคงที่ จนคลายกับเปนสัญญาณรบกวน สงผลใหการนําสัญญาณไปใชงานทําไดไมดี แตถา หากกําหนดไวหา งหรือมีความแตกตางมากเกินไป อาจทําใหมองไดวา วงจรเทอรโมสตัตนี้มีความไวในการทํางานตํ่า เพราะกวาจะตัดเอาตพุตตองรอ ใหอุณหภูมิลดคาลงตํ่ากวาจุด TH มากๆ ซึ่งอาจสงผลเสียหากการลดลงของอุณหภูมิที่เกิดขึ้นจริง
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
3
ขาที่ ชื่อขา SDA
1
SCL
2
TOUT 3
DS1621 Digital Tthermometer and thermostat
GND 4
หนาที่/การทํางาน
8 +Vcc
1
SDA
ขาขอมูลอนุกรมสําหรับเชื่อมตอกับระบบบัส I 2C
7
A0
2
SCL
ขาสัญญาณนาฬิกาสําหรับเชื่อมตอกับระบบบัส I 2C
6
A1
3
TOUT
5
A2
ขาเอาตพุตเทอรโมสตัต กระแสซอรสเอาตพุต 1mA กระแสซิงกเอาตพุต 4mA "แอกตีฟ" เมื่ออุณหภูมิสูงถึงจุดกระตุนสูง (TH) "รีเซต" เมื่ออุณหภูมิลดลงตํ่ากวาจุดกระตุนตํ่า (TL)
4
GND
ขาตอกราวดของวงจร
5-7
A2-A0 ขากําหนดแอดเดรสของ DS1621 หากมีตัวเดียวในระบบควรตอลงกราวด
8
+Vcc
ขาตอไฟเลี้ยง +5V
รูปที่ 1 การจัดขาและการทํางานของ DS1621 ไอซีวัดอุณหภูมิแบบดิจิตอล ลงไมถงึ จุด TL แตอปุ กรณทตี่ อ งการนําสัญญาณนี้ไปใชมีความสามารถในการทนอุณหภูมิในชวงระ หวาง TH และ TL ไดไมนาน ก็จะสงผลใหเกิดความเสียหายตออุปกรณนั้นๆ ได ในรูปที่ 3 แสดง รูปแบบการทํางานของ DS1621 ในโหมดเทอรโมสตัตนี้
รีจิสเตอรกําหนดการทํางานของ DS1621 ในการกําหนดคา TH และ TL ของ DS1621 ตลอดจนการเลือกสัญญาณแอกตีฟในโหมด เทอรโมสตัตสามารถกระทําผานรีจิสเตอรตัวหนึ่งที่ชื่อวา รีจิสเตอรกําหนดการทํางานและแสดง สถานะ (Configuration/Status register) โดยมันสามารถทําหนาทีไ่ ด 2 อยางคือ ใชสําหรับกําหนด พารามิเตอรสาํ คัญเมือ่ กําหนดให DS1621 ทํางานในโหมดเทอรโมสตัต และใชแสดงสถานะการวัด และแปลงคาอุณหภูมิ โดยรีจิสเตอรกําหนดการทํางานนี้มีขนาด 8 บิต สามารถเขาถึงดวยกระบวน การติดตอผานระบบบัส I2C แตละบิตของรีจีสเตอรมีรายละเอียดดังนี้
บิต 7
DONE
บิต 6 THF
บิต 5 TLF
บิต 4 NVB
บิต 3 1
บิต 2 0
บิต 1 POL
บิต 0
1SHOT
DONE (Conversion done - บิต 7) : บิตแสดงสถานะของการแปลงขอมูลอุณหภูมิ “0” - ยังอยูใ นระหวางการแปลงขอมูล “1” - การแปลงขอมูลเสร็จสมบูรณแลว THF (Temperature High Flag - บิต 6) : บิตแฟลกแจงวาอุณหภูมทิ วี่ ดั ไดสงู กวาจุดทริก อุณหภูมิสูงหรือ TH โดยเมื่อเกิดเหตุการณนี้ขึ้น บิตนี้จะเซตเปน “1” และดํารงสถานะนี้ไวจนกวา จะมีการเขียนขอมูล “0” มายังบิตนีด้ ว ยกระบวนการทางซอฟตแวร หรือเคลียรดว ยการปลดไฟเลีย้ ง ออกจาก DS1621 ประโยชนของบิตนี้คือ หากบิตนี้เซตทันทีที่จายไฟเลี้ยงใหม ผูใชงานก็จะทราบ ไดทนั ทีเ่ ชนกันวา ขณะนีอ้ ณ ุ หภูมทิ วี่ ดั ไดมคี า สูงกวาจุดทริกอุณหภูมิ TH ผูใ ชงานสามารถเลือกไดกอ น 4
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
รีจิสเตอรควบคุมและแสดงสถานะ SCL SDA
สวนกําหนด แอดเดรส และควบคุม ขาอินพุตเอาตพุต
A0 A1 A2
ตัวตรวจวัดอุณหภูมิ จุดทริกอุณหภูมิสูง (TH) จุดทริกอุณหภูมิตํ่า (TL)
สวนเปรียบเทียบขอมูลดิจิตอล
TOUT
รูปที่ 2 ผังการทํางานเบื้องตนโดยรวมของ DS1621 ไอซีวัดอุณหภูมิแบบดิจิตอล วา จะแกไขคาอุณหภูมิของจุด 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”
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
5
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 ไมไดวดั อุณหภูมแิ ละแปลงคาจะใชพลังงานลดลง TOUT "1" t
"0"
อุณหภูมิ
คาวัดไดจาก DS1621
TH
TL t1
t2
t3
อุณหภูมิจริงเปลี่ยนแปลงในชวง 59-60๐C (อาจถือไดวาคอนขางคงที)่
t4
t5
t
DS1621 TH=60 TL=59.5 active "1"
อุณหภูมิจริงเริ่มตนจาก 0-60๐C แลวลดลงจากนั้นจะเปลี่ยนแปลงในชวง 50-60๐C
t6
TOUT
DS1621 TH=59 TL=30 active "1"
TOUT
รูปที่ 3 รูปแบบการทํางานในโหมดเทอรโมสตัตของ DS1621 6
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
เขียนคําสั่งในกลุมที่ไมตองการขอมูล เชน คําสั่งเริ่มตน/หยุดการแปลงคาอุณหภูมิ SCL SDA
S 1 0 0 1 A2 A1 A0 W A C7 C6 C5 C4 C3 C2 C1 C0 A
แอดเดรส START
P
คําสั่ง DS1621 ACK
STOP
DS1621 ACK
เขียนคําสั่งในกลุมที่ตองการขอมูล 1 ไบต เชน คําสั่งเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ SCL SDA
S 1 0 0 1 A2 A1 A0 W A C7 C6 C5 C4 C3 C2 C1 C0 A D7 D6 D5 D4 D3 D2 D1 D0 A
แอดเดรส START
คําสั่ง DS1621 ACK
P
ขอมูล DS1621 ACK
DS1621 ACK
STOP
เขียนคําสั่งในกลุมที่ตองการขอมูล 2 ไบต เชน คําสั่งเขาถึงคา TH และ TL SCL SDA
S 1 0 0 1 A2 A1 A0 W A C7 C6 C5 C4 C3 C2 C1 C0 A D7 D6 D5 D4 D3 D2 D1 D0 A D7 D6 D5 D4 D3 D2 D1 D0 A
แอดเดรส START
คําสั่ง DS1621 ACK
ขอมูลไบตสูง DS1621 ACK
P
ขอมูลไบตตํ่า DS1621 ACK
DS1621 ACK
STOP
อานขอมูลจากรีจิสเตอรที่มีขนาด 1 ไบต ไดแก รีจิสเตอรกําหนดการทํางานและแสดงสถานะ, ตัวนับ และตัวนับสโลป SCL SDA
S 1 0 0 1 A2 A1 A0 W A C7 C6 C5 C4 C3 C2 C1 C0 A
แอดเดรส START
R
1 0
คําสั่ง DS1621 ACK
0 1 A2 A1 A0 Rd A D7 D6 D5 D4 D3 D2 D1 D0 N
แอดเดรส DS1621 ACK Repeat START
P
ขอมูล STOP MASTER NACK
DS1621 ACK
อานขอมูลจากรีจิสเตอรที่มีขนาด 2 ไบต ไดแก คาของ TH, TL และคาอุณหภูมิ SCL
SDA
S 1 0 0 1 A2 A1 A0 W A C7 C6 C5 C4 C3 C2 C1 C0 A
แอดเดรส START
R
1 0
คําสั่ง DS1621 ACK
0 1 A2 A1 A0 Rd A D7 D6 D5 D4 D3 D2 D1 D0 A D7 D6 D5 D4 D3 D2 D1 D0 N
แอดเดรส DS1621 ACK Repeat START
ขอมูล DS1621 ACK
P
ขอมูล MASTER ACK
STOP MASTER NACK
รูปที่ 4 ไดอะแกรมเวลาแสดงรูปแบบการติดตอบนระบบบัส I2C ของ DS1621
คําสั่งในการใชงาน DS1621 การอานและเขียนขอมูลกับ DS1621 มีรูปแบบตางๆ กันไปตามลักษณะขอมูลและคําสั่งดัง แสดงในรูปที่ 4 ในการเขียนขอมูลหรือคําสั่งไปยัง DS1621 อุปกรณมาสเตอร (ซึ่งในที่นี้คือ คอมพิวเตอร) จะกําหนดคาแอดเดรสของ DS1621 ตัวที่ตองการติดตอ แลวตามดวยการเซตบิต R/W จากนัน้ จะรอการตอบรับจากอุปกรณสเลฟ ซึง่ ก็คอื DS1621 เมือ่ ไดรบั การตอบรับแลว อุปกรณ มาสเตอรจะจัดเตรียมคําสัง่ เพือ่ ใชงาน DS1621 ตอไป โดยทุกครัง้ ทีม่ กี ารเขียนคําสัง่ ไปยัง DS1621 ตองเคลียรบติ R/W ดวยเสมอ เมื่อ DS1621 ไดรับคําสั่งจากอุปกรณมาสเตอรก็จะดําเนินการตาม ทีก่ าํ หนดมาจากอุปกรณมาสเตอร และทุกครัง้ จะตองสงสัญญาณรับรูห รือตอบรับกลับไปยังอุปกรณ มาสเตอร สําหรับคําสั่งทั้งหมดของ DS1621 มีดังนี้ EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
7
คําสั่งอานอุณหภูมิ (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 8
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
คําสั่ง
ขอมูลคําสั่ง
การทํางานหลังสงคําสั่ง หมายเหตุ
คําสั่งเกี่ยวกับการแปลงคาอุณหภูมิ อานคาอุณหภูมิ AAH อานคาตัวนับ A8H อานคาตัวนับสโลป A9H
อานขอมูล 2 ไบต อานขอมูล 1 ไบต อานขอมูล 1 ไบต
เริ่มตนแปลงคาอุณหภูมิ หยุดแปลงคาอุณหภูมิ คําสั่งในโหมดเทอรโมสตัต เขาถึง TH
EEH 22H
หยุดและเตรียมพรอมเริ่มตน หยุดและเตรียมพรอมเริ่มตน
1 1
A1H
เขียนขอมูล 1 ไบต
2
เขาถึง TL เขาถึงรีจิสเตอร Config.
A2H ACH
เขียนขอมูล 1 ไบต เขียนขอมูล 1 ไบต
2 2
หมายเหตุ 1. ในโหมดการแปลงคาอยางตอเนื่อง เมื่อ DS1621 กระทําคําสั่งหยุดการแปลงคา จะเปนการยกเลิกการ แปลงคาอยางตอเนื่องทันที หากตองการให DS1621 แปลงคาอีกครั้ง ตองเขียนคําสั่งเริ่มตนการแปลงคา ใหแก DS1621 ใหม 2. การเขียนขอมูลไปยังรีจิสเตอร DS1621 ตองการเวลา 10 มิลลิวินาทีเปนอยางนอยในการเขียนขอมูลให สมบูรณ
ตารางที่ 2 ตารางสรุปคําสั่งสําหรับใชงาน DS1621
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 โดยสามารถเลือกใหแสดงผล EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
9
โหมดการทํางานของ อุปกรณมาสเตอร
โหมดการทํางานของ DS1621
สภาวะและขอมูลที่ ปรากฏบนบัส
TX
RX
START
TX
RX
<ADDRESS,0>
รายละเอียด คอมพิวเตอรกําหนดสภาวะเริ่มตนใหเกิดขึ้นบนบัส คอมพิวเตอรสงคาแอดเดรสของ DS1621 และกําหนดบิต R/W เปน "0"
RX
TX
ACK
TX
RX
ACH
DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรสงคําสั่งเขาถึงรีจิสเตอรกําหนดการทํางาน
RX
TX
ACK
DS1621 สงสัญญาณรับรูตอบกลับ
TX
RX
02H
คอมพิวเตอรสงขอมูลเพื่อกําหนดให DS1621 แปลงคาอยางตอเน ื่อง และใหเอาตพุตเปนลอจิกสูงเมื่ออุณหภูมิที่วัดสูงถึงจุด TH DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรกําหนดสภาวะเริ่มตนใหเกิดขึ้นบนบัสอีกครั้ง
RX
TX
ACK
TX
RX
START
คอมพิวเตอรสงคาแอดเดรสของ DS1621 และกําหนดบิต R/W เปน "0"
TX
RX
<address,0>
RX
TX
ACK
DS1621 สงสัญญาณรับรูตอบกลับ
TX
RX
A1H
RX
TX
ACK
TX
RX
28H
คอมพิวเตอรสงคําสั่งเขาถึง TH DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรเขียนขอมูลไบตสูงของคา TH (กําหนดใหเทากับ +40๐C)
RX
TX
ACK
DS1621 สงสัญญาณรับรูตอบกลับ
TX
RX
00H
คอมพิวเตอรเขียนขอมูลไบตตํ่าของคา TH DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรกําหนดสภาวะเริ่มตนใหเกิดขึ้นบนบัสอีกครั้ง คอมพิวเตอรสงคาแอดเดรสของ DS1621 และกําหนดบิต R/W เปน "0"
RX
TX
ACK
TX
RX
START
TX
RX
<address,0>
RX
TX
ACK
TX
RX
A2H
RX
TX
ACK
TX
RX
0AH
RX
TX
ACK
TX
RX
00H
RX
TX
ACK
TX
RX
START
TX
RX
<address,0>
RX
TX
ACK
TX
RX
EEH
RX
TX
ACK
TX
RX
STOP
DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรสงคําสั่งเขาถึง TL DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรเขียนขอมูลไบตสูงของคา TL (กําหนดใหเทากับ +10๐C) DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรเขียนขอมูลไบตตํ่าของคา TL DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรกําหนดสภาวะเริ่มตนใหเกิดขึ้นบนบัสอีกครั้ง คอมพิวเตอรสงคาแอดเดรสของ DS1621 และกําหนดบิต R/W เปน "0" DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรสงคําสั่งเริ่มตนแปลงคาอุณหภูมิ DS1621 สงสัญญาณรับรูตอบกลับ คอมพิวเตอรกําหนดสภาวะหยุดใหเกิดขึ้นบนบัส เพื่อหยุดการทํางาน
หมายเหตุ TX หมายถึง ทําหนาที่เปนตัวสง, RX หมายถึง ทําหนาที่เปนตัวรับ, H ที่อยูหลังขอมูลใชแสดงวา ขอมูลนั้นๆ เปนขอมูลเลขฐานสิบหก
ตารางที่ 11-3 แสดงตัวอยางลําดับการทํางาน โหมดการทํางานของอุปกรณมาสเตอร (ซึ่ง ในที่นี้คือ คอมพิวเตอร) และ DS1621 ตลอดจนสถานะของบัสในขณะติดตอ ดวยเสียงพรอมกับรีเลยทาํ งานก็ได นอกจากนัน้ ยังมีการแสดงผลการทํางานของ DS1621 ในโหมด เทอรโมสตัตอีกอยางหนึ่งคือ แสดงผลดวยแสง นั่นคือ LED1001 จะติดสวางเมื่อคาอุณหภูมิที่วัด สูงถึงจุด TH รีเลย RY1001 ทีใ่ ชไดจดั เตรียมเทอรมนิ อลบล็อกสําหรับตอสายเพือ่ เชือ่ มตอกับอุปกรณหรือ สัญญาณภายนอกไวเรียบรอย โดยมีพิกัดของหนาสัมผัสรีเลยสูงสุดเทากับ 220VAC 5A และหาก 10
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
+5V BUS
+5V BUS K1001 I2C BUS (RJ11-4)
R1001 15k
JP1001-JP1003 ADDRESS A1 A0
R1003 4.7
SCL
5 2 SCL 1 SDA
+5V BUS
SDA
Temperature Sensor
6 A1 IC1001 DS1621
A0 8 VDD 3 Tout
+12V.
K1003 EXTERNAL 12V. INPUT
LED1001 ACTIVE ZD1001 5V1
7
D1002 1N4001
C1001 0.1/50V
"0"
SDA
D1001 1N4001
GND
"1"
R1002 15k
A2
K1002 I2C BUS (RJ11-4)
R1010 470 1/2W
A2
JP1004 SOUND
R1006 1k
JP1005 RELAY
R1004 10k Q1001 BC547
GND 4
SP1001 PIEZO SPEAKER
NC COM
SCL
NO Q1003 BC557
R1008 10k R1007 470k
R1009 12
RY1001 RELAY 12V
K1004 RELAY CONTACT
Contact rating : 220V 5A
C1002 0.01/50V Q1004 BC547
R1005 10k Q1002 BC337
รูปที่ 5 วงจรของ EX-10 บอรดวัดอุณหภูมแิ ละเทอรโมสตัตผานระบบบัส I2C ตองการใหรเี ลยทาํ งาน จะตองจายไฟเลีย้ ง +12V ใหแกบอรด EX-10 แทนการใชไฟเลี้ยงจาก I2C BUS ที่มาจากคอนเน็กเตอร 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”
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
11
การทดลอง เครื่องมือและอุปกรณ 1. บอรดเชือ่ มตอพอรตขนาน P-Board 1 แผน 2. EX-10 บอรดวัดอุณหภูมผิ า นระบบบัส I2C 1 แผน 3. คอมพิวเตอรที่ติดตั้งระบบปฏิบัติการวินโดวสและ Visual BASIC อยางนอยเวอรชัน 5.0 4. สายเชื่อมตอ I2C 1 เสน
การทดลอง
การทดลองอานคาอุณหภูมิจาก DS1621 กอนอานคาจากรีจิสเตอร Temperature ตองสั่งให DS1621 เริ่มการแปลงคาอุณหภูมิ (Start Convert) ซึ่งมีขั้นตอนดังนี้ 1. สงสัญญาณ START 2. สงขอมูลกําหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ กําหนดการเขียนขอมูลไปยัง DS1621 3. รอรับสัญญาณ ACK จาก DS1621 4. สงคําสั่ง (Command) &HEE สั่งใหเริ่มการแปลงคาอุณหภูมิ 5. รอรับสัญญาณ ACK จาก DS1621 6. สงสัญญาณ STOP ถาตองการให DS1621 หยุดการแปลงคาอุณหภูมิ (Stop Convert) มีขั้นตอนดังนี้ 1. สงสัญญาณ START 2. สงขอมูลกําหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพือ่ กําหนด การเขียนขอมูลไปยัง DS1621 3. รอรับสัญญาณ ACK จาก DS1621 4. สงคําสั่ง (Command) &H22 สั่งใหหยุดการแปลงคาอุณหภูมิ 5. รอรับสัญญาณ ACK จาก DS1621 6. สงสัญญาณ STOP
12
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
การอานคาจากรีจิสเตอร Temperature มีขั้นตอนดังนี้ 1. สงสัญญาณ START 2. สงขอมูลกําหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ กําหนดการเขียนขอมูลไปยัง DS1621 3. รอรับสัญญาณ ACK จาก DS1621 4. สงคําสั่ง (Command) &HAA สําหรับอานคาจากรีจิสเตอร Temperature ให DS1621 5. รอรับสัญญาณ ACK จาก DS1621 6. สงสัญญาณ START 7. สงขอมูลกําหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพือ่ กําหนด การเขียนขอมูลไปยัง DS1621 8. รอรับสัญญาณ ACK จาก DS1621 9. อานคาจาก MSB ของรีจิสเตอร Temperature 10. สงสัญญาณ Master ACK ให DS1621 11. อานคาจาก LSB ของรีจิสเตอร Temperature 12. สงสัญญาณ Master Not ACK ให DS1621 13. สงสัญญาณ STOP จากขัน้ ตอนดังกลาวสามารถเขียนเปนโปรแกรมทดลองตามขั้นตอนตอไปนี้ 1.1 สรางฟอรมและเปลีย่ นชือ่ คอนโทรลตางๆดังรูปที่ P1-1
รูปที่ P1-1 หนาตาฟอรมของ โปรแกรมทดลองอ า นค า อุณหภูมิจากไอซี DS1621 บน บอรด EX-10
1.2 เปลี่ยนคุณสมบัติของคอนโทรลตางๆ ดังนี้ Name
cmdRdTemp
Name
Caption
Read Temp
Text
Name
cmdSTARTConv
Name
cmdSTOPConv
Caption
Start Convert
Caption
Stop Convert
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
txtTemp
13
1.3 เขียนโปรแกรมใหกับเหตุการณ cmdSTARTConv_Click ดังนี้ Private Sub cmdSTARTConvert_Click() I2CSTART Send8BIT &H90 Ack Send8BIT &HEE ‘Start Convert Temperature Command Ack I2CSTOP End Sub
1.4 เขียนโปรแกรมใหกับเหตุการณ cmdSTOPConv_Click ดังนี้ Private Sub cmdSTOPConvert_Click() I2CSTART Send8BIT &H90 Ack Send8BIT &H22 ‘Stop Convert Temperature Command Ack I2CSTOP End Sub
1.5 เขียนโปรแกรมใหกับเหตุการณ cmdRdTemp_Click ดังนี้
Private Sub cmdRdTemp_Click() Dim tmp As Double Dim datH As Integer Dim 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 = tmp End Sub
14
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
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. สงสัญญาณ START 2. สงขอมูลกําหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ กําหนดการเขียนขอมูลไปยัง DS1621 3. รอรับสัญญาณ ACK จาก DS1621 4. สงคําสั่ง (Command) &HAC เพื่อเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ 5. รอรับสัญญาณ ACK จาก DS1621 6. สงสัญญาณ START 7. สงขอมูลกําหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “1” เพื่อ กําหนดการอานขอมูลออกจาก DS1621 8. รอรับสัญญาณ ACK จาก DS1621 9. รับคาจากรีจิสเตอรกําหนดการทํางานและแสดงสถานะ EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
15
10. สงสัญญาณ Master Not ACK ให DS1621 11. สงสัญญาณ STOP สวนการเขียนขอมูลลงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ ทําไดโดยใชคําสั่ง &HAC มีขั้นตอนดังนี้ 1. สงสัญญาณ START 2. สงขอมูลกําหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ กําหนดการเขียนขอมูลไปยัง DS1621 3. รอรับสัญญาณ ACK จาก DS1621 4. สงคําสั่ง (Command) &HAC เพื่อเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะ 5. รอรับสัญญาณ ACK จาก DS1621 6. สงขอมูลสําหรับรีจิสเตอรกําหนดการทํางานและแสดงสถานะ ไปที่ DS1621 7. รอรับสัญญาณ ACK จาก DS1621 8. สงสัญญาณ STOP สําหรับการเขาถึงรีจิสเตอรกําหนดการทํางานและแสดงสถานะสามารถเขียนโปรแกรม ทดลองไดดังตอไปนี้ 1.10 สรางปุม 2 ปุม และ 1 TextBox เพิม่ เติมและเปลี่ยนชื่อดังรูปที่ P1-2
รูป ที่ P1-2 หนาตาฟอรมของโปรแกรมทดลองอานคาอุณหภูมิจากไอซี DS1621 บน บอรด EX-10 ทีม่ กี ารเพิม่ คําสัง่ เพือ่ อานและเขียนคากับรีจสิ เตอรกาํ หนดการทํางานของ DS1621 16
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
1.11 เปลี่ยนคุณสมบัติของคอนโทรลตางๆดังนี้ Name
cmdRdConfig
Name
cmdWrConfig
Name
Caption
Read Config
Caption
Write Config
Text
txtConfig
1.12 เพิ่มโปรแกรมที่เหตุการณ cmdRdConfig_Click เพื่ออานขอมูลจากรีจิสเตอรกําหนดการ ทํางานและแสดงสถานะ Private Sub cmdRdConfig_Click() I2CSTART Send8BIT &H90 Ack Send8BIT &HAC Ack I2CSTART Send8BIT &H91 Ack txtConfig.Text = Hex(Read8Bit) MNAck I2CSTOP End Sub
1.13 เพิม่ โปรแกรมที่เหตุการณ cmdWrConfig_Click เพื่อเขียนขอมูลไปยังรีจิสเตอรกําหนดการ ทํางานและแสดงสถานะ Private Sub cmdWrConfig_Click() I2CSTART Send8BIT &H90 Ack Send8BIT &HAC Ack Send8BIT CByte(“&H” & txtConfig.Text) Ack I2CSTOP End Sub
1.14 ทดลองตั้งคาบิต 1Shot ในรีจิสเตอรกําหนดการทํางานและแสดงสถานะ ใหเปน “0” เพื่อเขา สูโ หมดแปลงคาตอเนื่อง โดยพิมพเลข 8 ใน txtConfig จากนั้นคลิ้กปุม Write Config แลวคลิ้กปุม Stop Convert (ให DS1621 หยุดการทํางาน เพือ่ เปลีย่ นโหมดการแปลงคา ) คลิก้ ปุม Start Convert เพือ่ เริม่ อานอุณหภูมิอีกครั้งในโหมดการแปลงคาอุณหภูมิตอเนื่อง สามารถดูรายละเอียดของโปรแกรมพรอมทดลองใชงานไดจากไฟล LAB15B.VBP EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
17
การทดลองใช DS1621 ทํางานในโหมดเทอรโมสตัต การอานขอมูลจากรีจสิ เตอร TH และ TL นัน้ มีขนั้ ตอนเหมือนการอานรีจสิ เตอร Temperature แตคําสั่ง (Command) แตกตางกัน คือการอานรีจิสเตอร TH ใชคําสั่ง &HA1 สวน TL ใชคําสั่ง &HA2 สวนการเขียนขอมูลไปยังรีจิสเตอรทั้งสองมีขั้นตอนดังนี้ 1. สงสัญญาณ START 2. สงขอมูลกําหนดแอดเดรสบนบอรด EX-10 ให DS1621 โดยบิตสุดทายเปน “0” เพื่อ กําหนดการเขียนขอมูลไปยัง DS1621 3. รอรับสัญญาณ ACK จาก DS1621 4. สงคําสั่ง (Command) &HA1 เพื่อเขาถึงรีจิสเตอร TH หรือคําสั่ง &HA2 สําหรับ TL 5. รอรับสัญญาณ ACK จาก DS1621 6. สงขอมูล MSB ของ รีจิสเตอร TH / TL ไปที่ DS1621 7. รอรับสัญญาณ ACK จาก DS1621 8. สงขอมูล LSB ของ รีจิสเตอร TH / TL ไปที่ DS1621 9. รอรับสัญญาณ ACK จาก DS1621 10. สงสัญญาณ STOP ในการติดตอกับรีจิสเตอร TH และ TL สามารถเขียนโปรแกรมทดลองไดดังนี้ 1.15 เพิม่ คอนโทรลและเปลีย่ นชือ่ ดังรูปที่ P1-3
รูปที่ P1-3 หนาตาของโปรแกรมทดลองอานและตัง้ คาอุณหภูมกิ บั DS1621 เมือ่ กําหนด ใหทํางานในโหมดเทอรโมสตัต 18
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
1.16 เพิ่มโปรแกรมใหกับเหตุการณ cmdRdTH_Click ดังนี้ Private Sub cmdRdTH_Click() Dim tmp As Double Dim datH As Integer Dim 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 = tmp End Sub
จะเห็นไดวา โปรแกรมสําหรับเหตุการณ cmdRdTL_Click นั้นเหมือนกับ cmdRdTH_Click แตเปลี่ยน Command เปน &HA2 และเก็บคาลงใน txtTL.Text 1.17 เขียนโปรแกรมใหกับเหตุการณ cmdWrTH_Click ดังนี้ Private Sub cmdWrTH_Click() Dim tmp As Double Dim datH As Byte Dim datL As Byte datH = Fix(txtTH.Text) tmp = Val(txtTH.Text) - datH If tmp <> 0 Then datL = &H80 I2CSTART Send8BIT &H90
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C
19
Ack Send8BIT &HA1 Ack Send8BIT datH Ack Send8BIT datL Ack I2CSTOP End Sub
‘Access TH Register Command
จากโปรแกรมขางตน เหตุการณ cmdWrTL_Click ถูกแกไขใหรับคาจาก txtTL.Text และ ใช Command &HA2 1.18 รันโปรแกรมแลวเขียนคา Config ใหเปน A คลิก้ ปุม Write Config เพือ่ กําหนดโหมดการแปลง คาตอเนื่อง และให Thermostat ทํางานโหมด Active High 1.19 ใสคา 30 ในชอง TH และ 28 ในชอง TL คลิ้กปุม Write ของ TH และ TL 1.20 คลิก้ ปุม Start Convert ให DS1621 เริ่มแปลงคาอุณหภูมิ ใชนิ้วหรือวัตถุอื่นแตะให DS1621 เปลีย่ นอุณหภูมิ คลิก้ ปุม Read Temp สังเกตอุณหภูมทิ อี่ า นได ถามีคา มากกวา 30 LED บนบอรด EX-10 จะติดพรอมกับมีเสียงและรีเลยทาํ งานตามจัม๊ เปอรทตี่ งั้ ไว เมือ่ อานคาจากรีจสิ เตอร Config จะมีคาเปน 2A เพราะบิต THF มีคาเปน “1” ทั้งนี้เปนผลมาจากอุณหภูมิที่วัดไดมี คามากกวา TH ที่ตั้งไว สามารถดูรายละเอียดของโปรแกรมพรอมกับทดลองใชงานไดจากไฟล LAB15C.VBP ใน แผนซีดรี อม (ซึง่ อยูใ นชุดของ P-Board)
20
EX-10 บอรดวัดอุณหภูมิและเทอรโมสตัตผานระบบบัส I2C