ex-10_2006

Page 1

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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.