UART / TTL / RS232 / MAX232 / MAX3232 คืออะไร

rs232 to ttl

               มีคำถามจากท่านลูกค้าที่เป็นนักศึกษา และผู้สนใจระดับเริ่มต้น ในเรื่องของ UART, TTL, RS232, MAX232 คืออะไร มันเป็นยังไง และ มันสัมพันธ์กันอย่างไร  เพราะการสื่อสารข้อมูลแบบนี้ เป็นที่นิยมใช้กันอย่างมาก และ มีการใช้เชื่อมต่อเพื่อสื่อสารกับอุปกรณ์ต่างๆ มากมาย เช่น การสื่อสารกับคอมพิวเตอร์, RFID, GPS, GSM Module, RF Module ฯลฯ บทความนี้ทีมงานจาก ThaiEasyElec.com จะมาให้คำอธิบาย เพื่อให้เข้าใจและนำไปใช้ได้อย่างถูกต้องครับ

TTL (Transistor-Transistor Logic)

TTL เป็นระดับแรงดันที่ถูกกำหนดขึ้นในยุคแรกๆเพื่อใช้ระหว่าง Transistor กับ Transistor ภายในวงจรรวม(IC) ดังนั้น TTL จะใช้ระดับแรงดัน อยู่ที่ 0 – 5 V แต่ในปัจจุบันมีอุปกรณ์หลายเบอร์ที่ทำงานในช่วง 0 – 3.3 V (เรียกแรงดันระดับนี้ว่า LVTTL) ซึ่งผู้ใช้ควรตรวจสอบจาก Datasheet ของอุปกรณ์ที่ใช้เสียก่อนว่าเป็นระดับแรงดันแบบใด เพราะหากใช้ผิดประเภทจะทำให้อุปกรณ์เสียหาย

UART
ย่อมาจากคำว่า Universal Asynchronous Receiver Transmitter หมายถึงอุปกรณ์ที่ทำหน้าที่รับและส่งข้อมูลแบบอะซิงโครนัส (Asynchronous ) ซึ่งเป็นส่วนหนึ่งในการสื่อสารอนุกรม แบบ Asynchronous  

แท้จริงแล้วการสื่อสารแบบอนุกรมจะแบ่งเป็น 2 แบบ คือ

1) การสื่อสารอนุกรมแบบ Synchronous เป็นรูปแบบที่ใช้วิธีส่งข้อมูล โดยใช้สัญญาณ Clock มาเป็นตัวกำหนดจังหวะ การรับส่งข้อมูล การส่งข้อมูลแบบนี้ เป็นการรับส่งที่ค่อนค่างมีคุณภาพ และส่งได้ที่ความเร็วสูง มีโอกาสที่ข้อมูลจะสูญหายระหว่างการส่งน้อย ตัวอย่างการส่งข้อมูลลักษณะนี้เช่น I2C, I2S, SPI ข้อเสียของการส่งข้อมูลแบบนี้คือ ต้องใช้สายสัญญาณมาก เพราะว่าต้องส่ง Clock ไปด้วย

2) การสื่อสารอนุกรมแบบ Asynchronous เป็นการส่งข้อมูลที่ไม่ต้องใช้สัญญาณ Clock มาเป็นตัวกำหนดจังหวะการรับส่งข้อมูลแต่ ใช้วิธีกำหนด รูปแบบ Format การรับส่งข้อมูลขึ้นมาแทน และ อาศัยการกำหนด ความเร็วของการรับ และ ส่ง ที่เท่ากันทั้งฝั่งรับและฝั่งส่ง ข้อดีของการใช้ Asynchronous คือสามารถสื่อสารแบบ Full Duplex รับ และ ส่งได้ในเวลาเดียวกัน แต่ Asynchronous มีโอกาสที่ข้อมูลจะสูญหายขณะรับส่งข้อมูล หรือ รับส่งข้อมูลผิดพลาดได้มากกว่าแบบ Synchronous  

สรุปกล่าวคือ UART (Universal Asynchronous Receiver Transmitter) หมายถึง รูปแบบการส่งข้อมูล ที่ถูกกำหนดขึ้นมาเพื่อใช้รับส่งข้อมูลแบบ Asynchronous โดยมีรูปแบบดังรูป

เริ่มต้นจาก Start Bit เป็น Logic 0 จากนั้นจะตามด้วย Data ที่เราส่ง แล้วจะถูกปิดด้วย STOP Bit เป็น Logic 1

สำหรับผู้เริ่มต้นศึกษา ถ้าคุณต้องการติดต่อสื่อสาร UART ระหว่าง ไมโครคอนโทรลเลอร์ กับ คอมพิวเตอร์ สามารถทำได้โดยใช้โปรแกรม Hyperterminal เข้าช่วย เพื่อการทดสอบการ รับ และ ส่ง ข้อมูล ขอให้ศึกษาเพิ่มเติมจาก link นี้ครับ

http://www.mind-tek.net/serial.php
http://members.fortunecity.com/taksina/anal_hyp.html


แนวคิดวิธีเชื่อมต่อระหว่างอุปกรณ์

จากรูปแสดงถึงการเชื่อมต่อ ระหว่างบอร์ด SUN7 เพื่อส่ง Data หากันระหว่างบอร์ดด้วย UART
1) A ส่งข้อมูล ออกไปทางขา Tx ไปยัง B ซึ่งเป็นฝั่งรับ เพราะฉะนั้น ต้องต่อสายสัญญาณจากขา Tx ของ A ไปยังขา Rx ของ B
2) B ส่งข้อมูล ออกไปทางขา Tx ไปยัง A ซึ่งเป็นฝั่งรับ เพราะฉะนั้น ต้องต่อสายสัญญาณจากขา Tx ของ B ไปยังขา Rx ของ A 
3) ต้องต่อ GND ของทั้ง A และ B ร่วมกันเพื่อทำให้ระดับแรงดันของทั้ง 2 บอร์ดมีจุดอ้างอิงเดียวกัน

RS232 (Recommended Standard 232)
RS232 คือ มาตรฐานการเชื่อมต่อข้อมูลแบบ Serial ใช้เพื่อเพิ่มระยะทางในการส่งข้อมูล แบบ Serial ให้สามารถส่งได้ระยะทางที่มากขึ้น โดยมีการเปลี่ยนระดับแรงดัน ของ Logic จากเดิมที่จะอยู่ในช่วง 0-5 V หรือ 0-3.3 V เป็นช่วง  -15 ถึง 15 V โดยมีรายละเอียดดังนี้

Logic 0 ของ RS232 จะอยู่ในช่วง 3 ถึง 15V
Logic 1 ของ RS232 จะอยู่ในช่วง -3 ถึง -15V  

จากรูปจะเห็นได้อย่างชัดเจนครับ ว่าทั้ง 2 อย่าง ส่ง Data เหมือนกันครับ แต่ ระดับแรงดันที่ใช้ต่างกันมากครับ หากอุปกรณ์เป็น TTL แล้ว ไปต่อกับ RS232 ก็จะเกิดความเสียหายตามมาได้ครับ

“แล้วจะทำอย่างไรให้ TTL รับส่งข่อมูลกับ RS232 ได้?”
จากคำถามนี้จึงเป็นที่มาของหัวข้อถัดไปคือ IC MAX 232 ก็คือ IC ที่ Boot TTL เป็น RS232 และ Down RS232 เป็น TTL นั่นเองครับ

ความยาวของสาย และ อัตราความเร็วในการส่งข้อมูล

Baud rateMaximum cable length (ft)
1920050
9600500
48001000
24003000

RS232 cable length according to Texas Instruments
(Thank: http://www.lammertbies.nl/comm/info/RS-232_specs.html)

IC MAX 232
เป็น IC ที่ใช้เปลี่ยน TTL เป็น RS232 ในฝั่งส่ง และ เปลี่ยน RS232 เป็น TTL ในฝั่งรับ ดังรูป

วิธีต่อใช้งาน MAX232
วงจรนี้ใช้กับ TTL 0-5V เป็น RS 232


วิธีต่อใช้งาน MAX3232

วงจรนี้ใช้กับ TTL 0-3.3V เป็น RS 232 นอกจาก MAX3232 ของ MAXIM หรือ TI อาจใช้ IC ยี่่ห้ออื่น เช่น ICL3232 ของ Intersil

ขาของ คอนเน็กเตอร์ DB9

การเชื่อมต่อสาย DB9
การเชื่อมต่อสาย DB9 โดยทั่วไปแบ่งได้เป็น 3 แบบดังรูป

TX = เป็นขาส่งข้อมูล
RX = เป็นขารับข้อมูล
RTS = เป็นขาที่ส่งสถานะไปยังตัวรับ ว่าต้องการส่งข้อมูล เมื่อต้องการส่งข้อมูล จะ ON จนกระทั่งส่ง Data ออกทางขา TX จนเสร็จจึงจะ OFF

CTS  = เป็นขาที่รอรับสถานะ จาก RTS ของอุปกรณ์ที่ต่ออยู่ด้วย
DTR = เป็นขาที่แสดงสถานะว่า Port นั้นเปิดอยู่หรือไม่ 
DSR = เป็นขาที่ใช้ตรวจเช็ค สถานะ DTR ของอุปกรณ์ที่เชื่อมต่ออยู่ด้วย 
GND = Signal Ground  

ตัวอย่างการนำไปใช้งาน

จากรูปเป็นตัวอย่างการเชื่อมต่อ Microcontroller (MCU) กับ PC เนื่องจาก Serial Port ของ PC เป็น มาตรฐาน RS232 แต่ MCU เป็น TTL จึงต้องใช้ MAX232 ปรับระดับแรงดันให้อยู่ในระดับเดียวกัน

จากรูปเป็นการติดต่อกัน ระหว่าง MCU 2 ตัว สามารถต่อ Rx -> Tx , Tx -> Rx กันโดยตรงได้เลยเนื่องจาก ทั้ง 2 ตัวมีระดับแรงดันเป็น TTL เหมือนกัน

*** MCU ที่ใช้กัน มี 2 ระดับ คือ 0-5V และ 0-3.3V การต่อดังรูปต้องแน่ใจว่า MCU ทั้ง 2 ตัวอยู่ในระดับแรงดันที่เท่ากัน

รูปนี้จะเห็นว่าจะมี MAX 232 ต่อกับ MCU ทั้ง 2 ฝั่ง วิธีต่อแบบนี้มีข้อดีคือสามารถส่งข้อมูลผ่านสายได้ไกลมากขึ้นเนื่องจาก RS 232 ใช้แรงดันในสายสัญญาณสูงทำให้สามารถส่งได้ไกลกว่าใช้ TTL และเมื่อ MCU ตัวหนึ่งส่งข้อมูลมาในรูปแบบ มาตรฐาน RS232 ทำให้อุปกรณ์ หรือ MCU อีกตัวก็จะต้อง รับ และ ส่ง ข้อมูล แบบ RS232 ด้วย

จากตัวอย่างที่ได้แสดงไปข้างต้น นั้น ได้ใช้ MCU เป็นการยกตัวอย่าง ซึ่งหากเราไปต่อใช้กับ อุปกรณ์ตัวอื่นๆที่ ไม่ใช่ MCU ก็สามารถใช้หลักการข้างต้นเพื่อตัดสินใจในการต่อวงจรโดยพิจารณาจาก แรงดันเป็นหลักว่า แรงดันจากตัวที่ส่งมาอยู่ในระดับใด และ ฝั่งรับอยู่ในระดับใดและเปลี่ยนให้อยู่ในระดับเดียวกัน

Article By STK@TEE