Warning: call_user_func_array() expects parameter 1 to be a valid callback, class '' not found in /home/thaiamp/public_html/wp-includes/class-wp-hook.php on line 308

Warning: Cannot modify header information - headers already sent by (output started at /home/thaiamp/public_html/wp-includes/class-wp-hook.php:308) in /home/thaiamp/public_html/wp-includes/feed-rss2.php on line 8
article – "เราทำสิ่งที่แตกต่างเพื่อให้ตรงตามความต้องการของคุณ" https://thaiamp.com research and develope embedded system electronics Tue, 05 Nov 2013 21:40:46 +0000 th hourly 1 https://wordpress.org/?v=6.2.6 ทดสอบความเที่ยงตรงของเครื่องวัดรอบ https://thaiamp.com/archives/324 Tue, 11 Jun 2013 07:12:31 +0000 http://www.thaiamp.com/?p=324 ทดสอบความเที่ยงตรงของเครื่องวัดรอบแบบดิจิตอล

ก่อนอื่นเราต้องทำความเข้าใจกับการวัดรอบการทำงานของเครื่องจักรต่างๆ กันก่อน เพื่อที่จะหาวิธีการวัดค่าความเที่ยงตรงได้เหมาะสม โดยผู้อ่านทดลองดูตามวิธีการดังนี้ คือ คำว่ารอบต่อนาที
แปลง่ายๆ ก็ คือ ในหนึ่งนาทีสามารถทำงานได้กี่รอบ และถ้าหากต้องการทราบว่าใน 1 วินาที ทำงานได้กี่ครั้ง เพื่อให้อ่านค่าออกมาเป็น Hz ได้ ก็จะนำมาเขียนเป็นสมการออกมาดังนี้

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

  • ดิจิตอลออสซิลโลสโคป
  • ซิกแนลเจนเนอร์เรเตอร์

โดย การนำสัญญาณที่เครื่องซิกแนลเจนฯ สร้างขึ้นส่งให้กับเครื่องวัดรอบที่สร้างขึ้น พร้อมกันนั้นเราจะทำการวัดค่าโดยออสซิลโลสโคป ดูรูปประกอบ

รูปวิธีการทดสอบ

ยก ตัวอย่างเช่น หากต้องการให้ Tacho meter อ่านค่าออกมาเป็น 60 rpm เราต้องตั้งให้ซิกแนลเจนฯ สร้างสัญญาณพัลส์ออกมาที่ 1Hz เครื่องวัดรอบที่สร้างขึ้นต้องอ่านค่าได้ 60 และเช่นเดียวกัน ถ้าเราตั้งค่า
ที่ซิกแนลเจนเป็น 30Hz เครื่องวัดรอบที่สร้างขึ้นจะต้องอ่านค่าได้ 1,800 rpm เป็นต้น

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

[zooeffect AILALMLYSM1g]

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

เทคนิค ที่ใช้สร้างเครื่องวัดรอบเครื่องนี้ใช้เทคนิคการวัดความกว้างของพัลส์ที่ อ่านได้ โดยการอ่านจากขอบของสัญญาณ ทำให้การนำไปวัดสัญญาณใด ๆ นั้นถึงแม้สัญญาณจะมี duty cycle ไม่เท่ากันก็ตาม เครื่องวัดก็ยังสามารถอ่านค่าได้เที่ยงตรง ที่สำคัญคือ เครื่องวัดนี้จะอ่านค่าของรอบการทำงานทุกๆ รอบนำมาคำนวณ ทำให้ค่าที่คำนวณได้นี้ นำไปใช้ในการทำงานของเครื่องมืออื่นๆ ต่อไปได้ เช่น การนำค่าที่คำนวณได้นี้ไปสร้างกล่อง ECU ที่ใช้ควบคุมเครื่องยนต์ หรือนำไปควบคุมกล่อง CDI เพื่อปรับองศาการจุดระเบิดของเครื่องยนต์ได้ อีกทั้งค่าที่ส่งออกมานี้ยังสามารถนำมาเขียนกราฟการทำงานของเครื่องยนต์ เครื่องจักรที่เรานำไปวัดได้อีกด้วย และหากสังเกตุการทำงานของเครื่องวัดนี้แล้ว จะเห็นว่าในส่วนของตัวเลข จะมีการกระพริบน้อยมาก เนื่องจากค่าที่นำมาแสดงในส่วนของตัวเลขนี้ มีการนำค่าที่อ่านได้หลายๆ ครั้งมาก เฉลี่ยแล้วจึงส่งผลให้ค่าที่เราจะอ่านจากหน้าจอสามารถอ่านค่าได้ทัน แต่ในส่วนของแถบแสงนั้น มีการเฉลียค่าที่แสดงน้อยกว่า จึงเห็นว่าแถบแสงจะเปลี่ยนแปลงค่าได้เร็วกว่าในส่วนของตัวเลข และหากมีการวัดค่าที่สูงกว่าค่าที่ตั้งไว้ แถบแสงก็ยังสามารถแสดงผลได้โดยการเลื่อนแถบไปในรอบที่สูงขึ้นมากถึงสองเท่า เช่น หากตั้งค่าสูงสุดไว้ที่ 8,000 รอบต่อนาที แต่ค่าที่เครื่องวัด สามารถวัดได้มีค่าสูงกว่า แถบแสงจะเลื่อนไปในด้านที่ค่าสูง เพื่อให้ผู้ใช้งานทราบว่าค่ามากเกินกว่าที่ควรจะเป็นแล้ว

ในส่วนของการคำนวณที่ให้ผลการวัดออกมาได้มากถึง 55,000 รอบต่อนาทีนั้น ทำให้เครื่องที่สร้างขึ้นสามารถนำไปประยุกต์ใช้งานในงานอื่นๆไ ด้อีกมากมาย เช่น การวัดรอบการทำงานของมอเตอร์ไฟฟ้า ความเร็วของเครื่องจักร ความเร็วของใบพัดเครื่องบิน และตัวเครื่องที่สร้างขึ้นยังสามารถรับสัญญาณอินพุทจากอุปกรณ์ตรวจจับอื่นๆ ได้อีกหลายชนิด เช่น การนำไปต่อกับตัวตรวจจับแสง พล๊อกสวิตช์ 

ในส่วนของการนำ ไปประยุกต์ใช้งานอื่นๆ นั้น ผู้สร้างจะนำมานำเสนอวิธีการนำไปใช้ เช่น การต่อเพื่อวัดรอบเครื่องจักร ให้เห็นกันอีกในโอกาสต่อไปครับ

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

พิเศษ สำหรับผู้ที่ต้องการนำเครื่องวัดรอบนี้ไปใช้งานในรูปแบบของตัวเอง ไม่ซ้ำกับใครๆ สามารถสั่งทำกล่องใส่ให้มีความแตกต่างออกไปได้ เช่น ที่บังแสงให้สั้นกว่าที่โชวในเว็บ หน้ากากสีอื่นๆ หรือแม้กระทั้งสีของหลอดไฟแสดงผลก็เลือกได้ว่าต้องการสีอะไร "เพื่อให้ท่านได้สินค้าที่ตรงกับความต้องการมากที่สุด และเป็นงานที่สร้างขึ้นเฉพาะท่านเท่านั้น"

บทความโดย กิติภูมิ กาญจนา

]]>
การเข้ารหัสข่าวสารแบบตรวจสอบและแก้ที่ผิดด้วย MCS51 https://thaiamp.com/archives/200 Thu, 06 Jun 2013 07:47:26 +0000 http://www.thaiamp.com/?p=200         การเข้ารหัสข่าวสารเป็นอีกวิธีการหนึ่งที่จะทำให้การส่งข้อมูลเข้าไปยังช่องสัญญาณได้อย่างมีประสิทธิภาพ เนื่องจากหากส่งข้อมูลไปในช่องสัญญาณโดยไม่มีการเข้ารหัส เมื่อเกิดสัญญาณลบกวนในช่องสัญญาณก็จะทำให้ข้อมูลที่รับได้เกิดความผิดพลาดขึ้น แต่ถ้าหากผู้ส่งมีการเข้ารหัสสัญญาณข้อมูลก่อนส่งแล้ว เมื่อเกิดสัญญาณลบกวนขึ้นในช่องสัญญาณ ภาครับก็ยังสามารถตรวจสอบและแก้ไขข้อมูลที่ส่งมาให้ถูกต้องเหมือนข้อมูลต้นฉบับได้ แต่ทั้งนี้วิธีการตรวจสอบแก้ไขข้อผิดพลาดจะได้มากหรือน้อยก็ขึ้นอยู่กับหลักการที่นำมาใช้

        การทดลองครั้งนี้ผมจะนำไมโครคอนโทรเลอร์ตระกูล MCS51

มาทดลองการส่งและรับข้อมูลโดยให้วงจรสามารถแก้ไขที่ผิดพลาดได้ 1 จุด หมายความว่าการส่งข้อมูล 8 บิต หากมีข้อมูลบิตใดบิตหนึ่งผิดพลาดไป ภาครับจะยังสามารถแก้ไขที่ผิดได้ให้ข้อมูลกลับมาถูกต้อง โดยจะขอนำหลักการที่มีใช้อยู่ในปัจจุบัน จะเริ่มจากหลักการง่ายๆ ก่อนที่จะใช้หลักการที่ซับซ้อนต่อไป

        เริ่มจาก สมมุติว่าเราต้องการจะส่งข้อมูล 10011010 เข้าไปในช่องสัญญาณที่เป็นคลื่นวิทยุ (ใช้วงจรสื่อสารไร้สายเพื่อการพัฒนา) และสมมุติว่าเกิดสัญญาณลบกวนขึ้นเนื่องจากมีฟ้าผ่าในช่วงสั่นๆทำให้ข้อมูลที่รับได้จากเดิม 10011010 กลายเป็น 11011010 แทน ทำให้ภาครับรับสัญญาณ ที่เป็น MSB ผิดพลาดไป หากไม่มีการแก้ไขก็จะทำให้ภาครับตีความหมายข่าวสารผิดไปค่อนข่างมาก จากตัวอย่างที่ยกมาให้ดูเราจะทำการเพิ่มเติมขั้นตอนการเข้ารหัสก่อนที่จะส่งข้อมูลออกไป และจะเพิ่มขั้นตอนวิธีการเมื่อภาครับรับสัญญาณได้ก่อนที่จะนำข้อมูลไปใช้

        วิธีการ คือ เราจะทำการเพิ่มบิตของข้อมูลที่เป็นรหัสเพื่อใช้ในการตรวจสอบเข้าไป สามารถหาปริมาณบิตที่ต้องการเพิ่มได้จากการคำนวณดังนี้ สมมุติว่าต้องการให้แก้ที่ผิดได้ 1 ที่ ในข้อมูล 8 บิต จะได้ว่า  2  สัญลักษณ์  โดย (จำนวนบิตทั้งหมด + 1) x 2บิตข้อมูล ≤ 2จำนวนบิตทั้งหมดจะได้ว่า 2  ≤ 212 แสดงว่า เราจะต้องใช้จำนวนบิตทั้งหมดที่ต้องส่งเป็น 12 บิต เพื่อให้สามารถตรวจสอบและแก้ไขข้อมูลจำนวน 8 บิตได้  เมื่อได้จำนวนบิตทั้งหมดแล้วเราจะนำมาเพิ่มบิตข้อมูลเข้าไปครับ วิธีการเพิ่มดูได้จากตาราง

 

*

1

*

2

3

4

*

5

6

7

8

ตำแหน่งข้อมูลแต่ละบิต

1

2

3

4

5

6

7

8

9

10

11

12

ตำแหน่งข้อมูล LSB – MSB

* คือ ตำแหน่งที่ใส่บิตตรวจสอบ

        จากนั้นนำข้อมูลที่จะส่งมาจัดลงตามตำแหน่งจะได้ดังนี้

          จากข้อมูล 10011010

 

 

*

*

1

*

0

0

1

*

1

0

1

0

ตำแหน่งข้อมูลแต่ละบิต

1

2

3

4

5

6

7

8

9

10

11

12

ตำแหน่งข้อมูล LSB – MSB

 

 

        เมื่อนำข้อมูลมาใส่แล้วก็ต้องเพิ่มบิตตรวจสอบที่เหลือลงไปพิจารณาจากตำแหน่งของบิตที่เป็น LOGIC 1 ในที่นี้คือตำแหน่งที่ 3,7,9,11 จากนั้นค่าของแต่ละตำแหน่งมา XOR กัน

        ตารางค่าประจำตำแหน่ง   

 

 

หลัก

ค่าข้อมูล

1

1000

2

0100

3

1100

4

0010

5

1010

6

0110

7

1110

8

0001

9

1001

10

0101

11

1101

12

0011

13

1011

14

0111

15

1111

 

 

           นำค่าของหลักที่เป็น LOGIC 1 มาตั้งแล้วทำการ XOR ได้ดังนี้

 

 

1100

3

1110

7

1001

9

1101

11

0110

ผลที่ได้

 

 

            นำค่าที่ได้มาใส่ในช่องที่ว่างไว้ * โดยเรียงลำดับกันไปจะได้

 

 

0 1 1 1 0 0 1 0 1 0 1 0 ตำแหน่งข้อมูลแต่ละบิต
1 2 3 4 5 6 7 8 9 10 11 12 ตำแหน่งข้อมูล LSB – MSB

 

 

            ข้อมูล 001100101010 จะเป็นข้อมูลที่เราจะส่งไปในช่องสัญญาณ  

          เมื่อข้อมูลเดินทางมาถึงภาครับ จากข้อมูล 10011010 นำมาเข้ารหัสได้ข้อมูลเป็น 011100101010 เพิ่มจากเดิม 8 บิตเป็น 12 บิต เมื่อข้อมูล 011100101010 เดินทางมาถึงภาครับและช่องสัญญาณมีสัญญาณลบกวนทำให้ข้อมูลผิดพลาดไป 1 บิต กลายเป็นข้อมูล 111100101010บิตแรกมีการผิดพลาดไป หากไม่มีการแก้ไขจะทำให้ภาครับตีความหมายผิดไปจากเดิมมาก แต่หากภาครับมีการตรวจสอบแก้ไขแล้ว จะสามารถแก้ไขข้อมูลกลับมาได้โดยมีวิธีการดังนี้

    วิธีการคือ นำข้อมูลที่ได้มาตรวจสอบดังนี้

 

 

1 1 1 1 0 0 1 0 1 0 1 0 แทนค่าตำแหน่งข้อมูลแต่ละบิต
1 2 3 4 5 6 7 8 9 10 11 12 ตำแหน่งข้อมูล LSB – MSB

 

 

        นำค่าของตำแหน่ง LOGIC ทีเป็น 1 มา XOR กัน ได้ดังนี้ ตำแหน่งที่ 1,2,3,4,7,9,11

 

 

 

1000

1

0100

2

1100

3

0010

4

1110

7

1001

9

1101

11

1000

รวม

 

 

        ถ้าผลที่ได้ของการ XOR ที่ภาครับไม่เป็น 0000  แสดงว่ามีที่ผิด จากตัวอย่างได้ผลเป็น 1000 แสดงว่าหลักที่ 1 ของข้อมูลผิดพลาด วงจรก็จะทำการกลับบิตที่ผิดตำแหน่งที่ 1 กลายเป็น 011100101010 เหมือนข้อมูลที่ภาคส่งส่งมาและทำการแยกข้อมูลออกจากรหัส โดยการดึงตำแหน่งที่ต้องการออกมา คือ

 

 

0

1

1

1

0

0

1

0

1

0

1

0

แทนค่าตำแหน่งข้อมูลแต่ละบิต

1

2

3

4

5

6

7

8

9

10

11

12

ตำแหน่งข้อมูล LSB – MSB

 

 

        ได้ 10011010 ออกมาเหมือนเดิม จากตัวอย่างนี้ทดลองใส่ข้อมูลผิดพลาดเข้าไปที่ตำแหน่งใดก็ได้ วงจรก็จะยังสามารถระบุที่ผิดและทำการแก้ไขให้โดยการกลับบิตที่เป็นผลลัพธ์เท่านั้น

          จากตัวอย่างที่ยกมาจะเห็นได้ว่าเมื่อเราเพิ่มบิตตรวจสอบเข้าไปกับข้อมูล เราก็จะสามารถระบุตำแหน่งที่ข้อมูลผิด และแก้ไขได้ เมื่อทราบวิธีการตรวจสอบและแก้ไขแล้วทีนี้ผมก็จะนำเสนอวงจรที่สร้างด้วย MCS51 ให้สามารถส่งข้อมูลแบบมีการเข้ารหัสข่าวสาร เพื่อให้สามารถแก้ไขที่ผิดได้ ส่งผลให้ข้อมูลที่เราทำการส่งออกไปไม่ว่าจะเป็นสัญญาณควบคุมระบบอะไรสักอย่างก็ตามที่ในช่องสัญญาณมีการรบกวนค่อนข่างสูง ข้อมูลที่ภาครับรับได้ก็จะยังสามารถรับได้อย่างถูกต้อง ถึงแม้ว่าวิธีการนี้จะสามารถแก้ไขได้เพียง 1 จุดเท่านั้น และต้องแรกกับปริมาณข้อมูลที่เพิ่มขึ้น 4 บิต ก็ตาม แต่ก็ยังถือว่าคุ่มค้ากับข้อมูลที่ถูกต้องที่ภาครับสามารถรับได้ครับ

บทความโดย กิติภูมิ

 

 

 

 

]]>