Thai microtron community

Electronic Knowledge Base => Microcontoller & Electronics => Topic started by: jjj on July 09, 2008, 01:32:25 AM



Title: เกี่ยวกับ Ac power line x-10
Post by: jjj on July 09, 2008, 01:32:25 AM
อยากทราบการเขียนProgram Micro controllerครับ(ใช้ pic 16f628)
หลักการเขียนยังไงบ้างครับมีความสนใจอยากศึกษาครับ
ช่วยตอบทีครับ.......ขอขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: admin on July 10, 2008, 12:06:09 AM
สวัสดีครับ การควบคุมอุปกรณ์ไฟฟ้า ผ่านสาย AC-Line ด้วยมาตรฐาน X10
ที่ http://www.thaimicrotron.com/X10/X10-MainPage.htm

เื่พื่อใช้ในการศึกษาการส่งสัญญาณที่ใช้ในควบคุมอุปกรณ์ไฟฟ้าตามมาตรฐาน X10 นั้นควรมี ชุดมาตารฐาน X10 ไว้ 1ชุดครับ
ซื้อได้ตามห้างสรพสินค้าใหญ่ๆ (ผมซื้อที่เซนทรัลชิดลม นานแล้วครับ)
หรืออาจหาซื้อได้จากเวบ http://www.monitoringathome.com/package_promotion.html
ผมใช้ชุดนี้ครับ
(http://www.thaimicrotron.com/X10/Graph/RR501-RT504.jpg)

ไม่เช่นนั้นต้องทำ X10 LAB ทำไว้ 2 ชุดครับ ซึ่งอาจจะยากไปสำหรับมือใหม่ครับ เพราะจะต้องปรับแต่งของใหม่ทั้งสองตัว

วิธีการศึกษามีดังนี้ครับ

-ศึกษาโปรโตคอล X10 ที่ใช้รับส่ง
- ศึกษาการใช้งาน MCU PIC16F648A
  โดยจะต้องมีตัวโปรแกรมดูได้จาก http://www.thaimicrotron.com/PROPIC/USB1/Main.htm
  ศึกษาภาษา C ซึ่งแนะนำ CCS ครับเพราะไม่ยากนัก มี third party เยอะ ซึ่งสามารถค้นหาได้ตาม forum ต่างๆ
  แรกๆ ลองศึกษาการใช้งาน I/O ให้ชำนาญก่อน เช่นทำไฟกระพริบ,การตรวจสอบการกดปุ่ม ฯลฯ
- ทำ PCB และหาอุปกรณ์ประกอบ ตามที่ให้ไว้ โปรแกรม PIC แล้วทดสอบ และmonitor ผ่าน PC จะเห็นการทำงานเบื้องต้น




Title: เกี่ยวกับ Ac power line x-10
Post by: jjj on July 10, 2008, 07:29:47 PM
ขอบคุณมากครับช่วยตอบคำถาม....ครับ
คือที่จะเริ่มทำงานเกี่ยวกับเรื่องนี้ได้อย่างไรครับ

ที่บอกว่า..แรกๆ ลองศึกษาการใช้งาน I/O ให้ชำนาญก่อน เช่นทำไฟกระพริบ,การตรวจสอบการกดปุ่ม ฯลฯ
มี Program ที่เกี่ยวข้องมีอะไรอีกบ้างครับ.
ขอความช่วยเหลือด้วยครับ....


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: admin on July 10, 2008, 10:53:24 PM
ผมพูดกว้างๆนะครับ สำหรับคนที่เริ่มใหม่
เพราะยังไม่ทราบว่าคุณ jjj ศีกษาไปถึงไหนครับ
และมีอะไรอยู่ในมือบ้างแล้ว
การศึกษาก็เช่น ศึกษาการใช้งาน  MCU PIC จาก
บทความใน web นี้ครับ เช่น เรียนรู้ภาษาซีกับ CCS


Title: เกี่ยวกับ Ac power line x-10
Post by: jjj on July 11, 2008, 01:02:22 AM
ขอขอบคุณครับที่ช่วยตอบ....
คือผมเป็นมือใหม่จริงๆๆๆๆครับ
ตอนนี้ผมศึกษาภาษา C อยู่ครับ
พอจะเขียนเล็กๆๆน้อยๆๆได้บ้าง....

ก็ศึกษาการใช้งาน+บทความใน web นี้ครับ เรียนรู้ภาษาซีกับ CCS ดีมากครับ.....อ่านจบแล้ว
อยากรบกวนถาม program(ภาษาc) interrut กับ timmer ที่ใช้กับ 16F628 เขียนไงครับ
ขอความกรุณาครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: admin on July 11, 2008, 08:30:05 AM
ลองดูในนี้ครับ
http://www.thaimicrotron.com/CCS-628/Timer/TimerCounter.htm


Title: Program ที่ใช้เขียน Pic
Post by: jjj on July 18, 2008, 07:21:12 AM
อยากรบกวนถามProgramที่ใช้เขียนpic 16f628 ที่ใช้กับ (power liner x-10)
ที่อยู่ในเว็บนี้ใช้ Program อะไรเขียนครับ


Title: Re: Program ที่ใช้เขียน Pic
Post by: admin on July 21, 2008, 09:35:54 PM
ใช้ CCS ครับเดี๋ยวจะ post ให้นะครับ
ขอหาก่อน ไม่ได้ update ซะนาน


Title: Re: Program ที่ใช้เขียน Pic
Post by: admin on July 23, 2008, 04:21:14 PM
Source CCS X10
http://www.thaimicrotron.com/X10/X10LAB/Code/X10.zip

EX_X10o.C    source code
X10Mon2.C    สำหรับ monitor ข้อมูล X10 ทั้งหลายที่วิ่งอยู่บน AC LINE ออกทาง RS232 ใช้ hardware ตัวเดียวกันครับ


Title: Re: Program ที่ใช้เขียน Pic
Post by: jjj on July 24, 2008, 07:16:09 AM
ขอบคุณมากๆๆๆครับ......
ที่ช่วยโพสตอบครับ


Title: รบกวนถาม...ระหว่าง
Post by: zzone on July 24, 2008, 07:39:42 AM
รบกวนถาม...ระหว่าง PIC 16F628 กับ PIC16F648(ที่ใช้สำหรับX10)
เขียนโปรแกรมเหมือนกันเลยหรือเปล่าครับดูโครงสร้างภายในดาต้าชีสแล้วลักษณะเหมือนกัน......
แล้วเมื่อเขียนProgramเสร็จแล้ว......บอร์ดที่ใช้อัดProgram เข้าไปหาซื้อได้ที่ไหนครับ/ราคาประมาณเท่าไร่
แล้วใช้Programอะไรเขียนและcomply ครับ


Title: Re: รบกวนถาม...ระหว่าง
Post by: smitdh on July 24, 2008, 01:19:18 PM
PIC 16F628 กับ PIC16F648A โครงสร้างทาง hardware คล้ายกันครับ code program
PIC16F628   มี 2K EEPROM 128 byte
PIC16F648A มี 4K EEPROM 256 byte

ใช้แทนกันได้ครับเวลาเขียนโปรแกรม INCLUDE ให้ถูกเบอร์แล้วกันครับ
ผมชอบใช้ PIC16F648A เพราะหน่วยความจำโปรแกรมมากกว่า ราคาแทบไม่ต่างกัน
ส่วนคอมไพล์เลอร์ภาษา C ก็ใช้ CCS ครับ include ตามนี้ครับ

    
#include <16F648A.h> เมื่อใช้ 16F648A
#include <16F628.h>   เมื่อใช้ 16F628 

ส่วนบอร์ดที่ใช้ Program MCU PIC ลองดูที่นี่ครับ
http://www.thaimicrotron.com/PROPIC/USB1/Main.htm

ลองทำเองดูสิครับจะได้ฝึกประสพการณ์ไปด้วยครับ



Title: Re: รบกวนถาม...ระหว่าง
Post by: zzone on July 27, 2008, 05:59:52 PM
อยากเรียนรู้ในการเขียน Program (controller)ภาษา C (PIC ครับ)
จะเริ่มต้นยังไงดีครับ...ได้อ่านข้อมูลเกี่ยวกับการเขียน Program (controller)ภาษา C
ที่ทางweb post ไว้แล้ว
และผมลอง down load program ccs มาเล่นยังใช้ไม่เป็นเท่าไรเลยครับ
ขอความชี้แนะด้วยครับ
จากเริ่มต้นทำยังไงพอที่จะเขียน program ได้บ้าง
ขอขอบคุณมากๆๆครับ



..........มือใหม่จริงๆๆๆๆๆ


Title: Re: รบกวนถาม...ระหว่าง
Post by: smitdh on July 27, 2008, 10:46:45 PM
แรกๆ ลองศึกษา I/O ให้ชำนาญก่อน เช่นทำไฟกระพริบ,การตรวจสอบการกดปุ่ม ฯลฯ
ศึกษาภาษา C ซึ่งแนะนำ CCS ครับเพราะไม่ยากนัก มี third party เยอะ ซึ่งสามารถค้นหาได้ตาม forum ต่างๆ
ศึกษาภาษา C (standard C) จากหนังสือภาษา C ทั้วไปเพราะใน Help  CCS จะไม่มีอธิบาย
ศึกษา BUILT-IN-FUNCTIONS ดูจาก Help จะได้ไม่สร้างฟังก์ชั่นซ้ำ

ศึกษาจากตัวอย่าง อย่างเข้าใจ ว่าแต่ละบรรทัดทำงานอย่างไร ไม่ใช่ว่า คอมไพล์ผ่านแล้ว ดูการทำงานเฉยๆ ครับ

เพื่อฝึกความชำนาญ ลองตั้งโปรเจคมา เพื่อที่จะได้ทดสอบตัวเองว่าเข้าใจไหม
เพราะการอ่านเฉยๆ เวลาลงมือทำจริงจะทำไม่ได้ ติดขัดไปหมด

ลองดูนะครับเอาใจช่วย ติดขัดอะไรก็ถามมาครับ


Title: อยากจะสั่งซื้อ..........
Post by: zzone on September 12, 2008, 04:05:20 PM
อยากจะสั่งซื้อเครื่องควบคุมไฟฟ้าผ่านAC line (x-10)power carrier
ราคาเท่าไรครับและหาซื้อได้แถวไหนครับ
ที่ทาง Web จัดทำคือเสร็จแล้วใช่มั๊ยครับอยากซื้อมาศึกษาและลองใช้ครับ :o


Title: Re: อยากจะสั่งซื้อ..........
Post by: smitdh on September 16, 2008, 02:02:01 PM
สามารถหาซื้อตามห้างสรรพสินค้าใหญ่ๆ ครับผมซื้อที่เซ็นทรัลชิดลม นานแล้วครับไม่ทราบว่าตอนนี้จะยังมีหรือเปล่า

สำหรับ web ไทยก็มี
http://www.monitoringathome.com/x10_and_power_line_communication.html

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


Title: power line carrire (x-10)
Post by: zzone on October 18, 2008, 03:26:46 AM
รบกวนถามเกี่ยวกับpower line carrire (x-10)ถ้าผมสร้างตัวอุปกรณ์(ที่ทางwebทำ)ขึ้นมา2ตัว
อยากถามว่ามันจะส่ง-รับกันได้ไหม
ใช้โปรแกรมอะไรเขียนmicroครับและโปรแกรมจะเขียนยังไงบ้างครับ
ขอคำแนะนำด้วยครับ.....


Title: Re: power line carrire (x-10)
Post by: smitdh on October 19, 2008, 01:13:50 AM
ใช่ครับต้องทำ 2 ตัว มือใหม่จะยากหหน่อยนะครับ
เพราะต้องมีเครื่องมือ เช่น สโคบ ,เครื่องกำเนิดสัญญาณ ปรับที่ 120 KHz

แต่ตัวที่ทำ เป็น X-10 monitor ครับ คือแสดงข้อมุลที่รับได้บน AC-Line แสดงผลออกทาง rs232
โดยตัวมันเองควบคุมอุปกรณ์ไฟฟ้าได้ 1จุด (ไว้ทดสอบ)
หากจะใช้สั่งงาน ไปควบคุมตัวอื่นต้องสั่งผ่าน rs232 ครับ เพราะไม่ได้ทำปุ่มไว้สั่งตัวอื่น (ต้องทำเพิ่ม)
MCU ใช้ PIC16F628 หรือ PIC16F648A
Compiler ใช้ CCS ครับ แต่ถ้าเข้าใจในหลักการ จะเขียนด้วยอะไรก็ได้ครับ



Title: เกี่ยวกับสัญญาณX-10
Post by: zzone on October 31, 2008, 03:35:17 AM
รบกวนถามเกี่ยวกับการวัดคลื่นสัญญาณ x-10(ความถี่120kHZ)
คลื่นสัญญาณ120kHZนี้เอาสโคปไปวัดที่ตัวไมโคร(pic16f628)ใช่หรือไม่ครับ.....
แล้วโปรแกรมที่เราเขียนขึ้นมาจำเป็นต้องให้ไมโครได้เท่ากับ120kHZหรือเปล่าครับ
ส่วนผมเข้าใจว่าเขียนโปรแกรมเข้าตัวไมโครให้ได้เท่ากับ120kHZจากนั้น
ตัวอุปกรณ์ที่เป็นHard ware จะ mod สัญญาณเข้าที่ 50kHZ ใช่หรือเปล่าครับ
อยากรู้เรื่องนี้มากๆๆครับ

ขอบคุณครับ.......


Title: Re: เกี่ยวกับสัญญาณX-10
Post by: smitdh on October 31, 2008, 05:59:45 PM
รายละเอียดจะอยู่ที่หน้านี้
http://www.thaimicrotron.com/X10/X10LAB/X10Lab1.htm

(http://www.thaimicrotron.com/X10/X10LAB/X10RX-TX.gif)

สัญญาณ120kHZ จะถูกสร้างโดย Q1 ครับ และถูกควบคุมการส่งโดย RB0
และการรับจะรับผ่าน U1 โดยจะแปลงสัญญาณที่ถูก mod ด้วย 120 KHz มาเป็น digital แล้ว ออกทาง
ขา 6 ของ U1 ไปยังขา RA1 ของ PIC ครับ

(http://www.thaimicrotron.com/X10/X10LAB/X10PowerZ.gif)

เราจะใช้สัญญาณ 50 Hz ของไฟบ้านเป็นสัญญาณนาฬิกา โดยตรวจสอบ Zero Crossing ด้วย RA0


Title: Test power line carrier
Post by: zzone on November 18, 2008, 12:25:04 PM
อยากรบกวนถามครับ......
คือผมได้ทำอุปกรณ์power line carrier 2ตัวตามที่web เขียนคือ รับ-ส่ง
แต่ติดปัญหาคือว่าเบอร์ของตัวกระป๋อง IFไม่รู้เบอร์ไหนครับผมจึงเอาIF AM วิทยุมาใส่ก่อนและTest ดู
โดยให้ com 2 ตัวติดต่อกันผ่าน program hyper และอยากทราบว่า cord ที่ติดต่อกันทำได้อย่างไรครับ....
ขอเบอร์โทรติดต่อได้มั๊ยครับ.....อยากรู้เรื่องนี้จริงๆครับ
ขอขอบคุณครับ...


Title: Re: Test power line carrier
Post by: smitdh on November 18, 2008, 09:09:06 PM
IF ตัวสีดำ เป็นของ วิทยุ AM ใช้แทนกันได้หมดครับ รายระเอียดที่หน้านี้ครับ
http://www.thaimicrotron.com/X10/X10LAB/X10Lab1.htm

Source CCS X10
http://www.thaimicrotron.com/X10/X10LAB/Code/X10.zip

EX_X10o.C    source code
X10Mon2.C    สำหรับ monitor ข้อมูล X10 ทั้งหลายที่วิ่งอยู่บน AC LINE ออกทาง RS232 ใช้ hardware ตัวเดียวกันครับ

ที่บรรทัดนี้จะเป็น address เริ่มต้น ให้แก้ที่นี่ครับ

#rom  0x2100={'A',0x01}        //Init EEPROM

คือให้ device เป็น Group A ตัวที่1

หากมี 2 ตัวให้โปรแกรมตัวนึงเป็น ตัวที่1 และอีกตัวเป็นตัวที่2 จะได้ ควบคุมกันได้ครับ

ให้คอมไพล์ไฟล์ EX_X10o.C    แล้วโปรแกรมลง PIC ครับ
เลือกเบอร์ให้ตรงกับเบอร์ที่ใช้ด้วยครับ โดยคอมเมนต์ตัวที่ไม่ใช้
อย่างเช่นใช้ 16F628A.h
//#include <16F648A.h>
#include <16F628A.h>

การปรับแต่งที่หน้านี้
http://www.thaimicrotron.com/X10/X10LAB/X10Lab3.htm

(http://www.thaimicrotron.com/X10/X10LAB/X10RX-TX.gif)
หากไม่มีอุปกรณ์เช่นสโคบ เครื่องวัดความถี่ ให้จูนคอยล์ ไวที่กลางๆ ครับ
และปรับ VR1 (ตัวควบคุมแรงดันเอาต์พุต)ไว้ที่ตำแหน่งกลางๆ ก่อน

เมื่อเสียบไว้ใกล้ๆกัน จะควบคุมกันได้ครับ

เปิดโปรแกรม Hyper terminal ตั้ง baud rate 9600,no parity ,8 bit ,1 stop bit
ก่อนใส่ MCU ควรตรวจแรงดันที่ผ่านเรคกูเลเตอร์ว่าเป็น 5V หรือไม่ ด้วยนะครับ

เมื่อใส่ PIC ลงบนบอร์ด แล้วเสียบปลั๊ก
จะปรากฏเสียง ติ๊ดๆๆ 3 ครั้ง แล้วปรากฏคำว่า

X10-LAB ADDRESS=A01

หมายถึง ตัวนี้ถูกโปรแกรมให้เป็น grop A ตัวที่1ครับ

การควบคุมผ่าน  Hyper terminal (ตอนนี้ทำไว้เพื่อ test ครับ)
กดเลข 0 หมายถึง ให้ตัวที่ 1 group A ดับ
กดเลข 1 หมายถึง ให้ตัวที่ 1 group A ติด

กดเลข 2 หมายถึง ให้ตัวที่ 2 group A ดับ
กดเลข 3 หมายถึง ให้ตัวที่ 2 group A ติด

กดเลข 9 หมายถึง ทุกตัวใน group A ดับหมด

ดูรายระเอียดใน code นะครับ

ส่วนสาย RS232 เป็น DB9 แบบ 3 เส้น
http://www.thaimicrotron.com/CCS-628/Referrence/RS232.htm

เนื่องจากวงจรมีส่วนที่ต่อกับ 220V ควรระมัระวังด้วยนะครับ










Title: ควบคุมอุปกรณ์ไฟฟ้า ผ่านสาย AC-Line ด้วยมาตรฐา
Post by: zzone on November 29, 2008, 03:13:03 AM
ทางwebจะ up date เกี่ยวกับข้อมูลการปรับแต่งภาครับเมื่อไหร่ครับ...
และอยากถามเกี่ยวกับ IF AM ตัวสีดำครับ
เพราะทั้งสีแดง,สีเหลือง,สีดำ(ที่เห็นในวิทยุ)มีความแตกต่างกันยังไงบ้างครับ
และถ้าผมเอาIF AM ตัวสีแดง,สีเหลืองมาใส่จะใช้ได้หรือเปล่าครับ
หรือจะต้องใช้เฉพาะIF AM ตัวสีดำเท่านั้นครับ...
เนื่องจากผมได้ลองใช้IF  ตัวสีตัวสีแดง,สีเหลืองมาใส่ปรับค่าได้ตามspeckครับ
หรือผมทำผิดก็ไม่รู้ครับ
ช่วยชี้แนะด้วยครับ.....ขอขอบคุณครับ


Title: Re: ควบคุมอุปกรณ์ไฟฟ้า ผ่านสาย AC-Line ด้วยมาตรฐ
Post by: smitdh on November 29, 2008, 10:12:09 PM
เรื่อง up date ต้องขอโทษจริงๆครับ ที่ทิ้งไว้นาน เพราะติดภาระกิจอื่น
แลัวจะรีบทำให้นะครับ ที่จริงแล้ว กระทู้ก่อนหน้านี้ ก็ 80% แล้วครับ

ส่วน IF AM คือส่วนขยายสัญญาณที่ถูกผสมแล้วเป็นความถี่กลาง (IF) 455KHz
โดยมากจะมีอยู่ 3 ภาค ตัวกระป๋องคอยล์จะมีสี ขาว-เหลือง-ดำ เรียงกันไป
ตัวสีดำจะเป็นภาคสุดท้าย ก่อนเข้าภาคขยายเสียงครับ พวก IF คอยล์พวกนี้จะมีตัวเก็บประจุภายในอยู่แล้ว เมื่อนำมาต่อกับ ตัวเก็บประจุภายนอก ค่าความจุ เท่ากับ 222 (0.002) แล้วจูนคอย์ไว้ที่ตำแหน่งกลางๆ จะได้ความถี่ประมาณ  120KHz ครับ หากต้องการให้เที่ยงตรงต้องใช้เครื่องนับความถี่ หรือสโคบมาปรับแต่งอีกทีครับ

คอยล์สี ขาว-เหลือง-ดำ เป็นคอยล์ 455KHz เหมือนกันต่างกันที่ impedance คืออัตราส่วนการพันระหว่าง ขดลวด primary
และ secondary หากนำมาต่อกับตัวเก็บประจุภายนอกเพื่อลดความถี่ลงก็ใช้ได้เหมือนกัน แต่ค่าความจุก็จะต่างกันไป
แต่ตัวสีดำจะหาซื้อได้ง่ายที่สุดครับ

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


Title: เกี่ยวกับโปรแกรมที่เขียนเอาไว้ใน X-10 Powerline
Post by: tbkk on December 01, 2008, 01:25:19 AM
เพิ่งจะเริ่มขัดเขียน ยังไม่ค่อยมีความรู้ ช่วยแนะนำหน่อยนะครับ
คือว่า จาก code ด้านล่างที่ตัดมาบางส่วนของทางเว็บเอง จะรู้ได้ยังไงว่า ตอนนี้มี ZeroCross เกิดขึ้นแล้ว เพื่อจะส่ง data ต่อไป
 
เราใช้อะไรเป็นตัวตรวจจับ ZeroCross ครับ

void CheckZeroCross()
{
  if(input(X10_ZERO_CROSS))             //If = 1
     while(input(X10_ZERO_CROSS)) ;     //wait 0
  else
     while(!input(X10_ZERO_CROSS)) ;    //if = 1 wait 0
}


Title: Re: เกี่ยวกับโปรแกรมที่เขียนเอาไว้ใน X-10 Powerline
Post by: tbkk on December 01, 2008, 01:43:28 AM
ขออีกคำถามนะครับ ;D

จากรูปคลื่น sine ที่มีการส่ง data(120kHz) ออกไป 3 ชุด
ตัวเลข 1080us กับ 1850us เป็นช่วงห่างของเวลา ของการส่ง data ลูกที่ 2 กับลูกที่ 3 ใช่ไหมครับ

void X10WriteBit(BYTE b)
{
BYTE xdata,i;

   CheckZeroCross();
   //delay_us(50);
   for(i=0;i<3;++i)
   {
    output_bit(X10WRITEPIN,b);
    delay_us(1080);
    output_low(X10WRITEPIN);
    delay_us(1850);
   }
}
ขอรบกวน Administrator ช่วยตอบด้วยนะครับ
ขอบคุณครับ


Title: Re: เกี่ยวกับโปรแกรมที่เขียนเอาไว้ใน X-10 Powerline
Post by: smitdh on December 01, 2008, 08:54:48 AM
จากหน้า
http://www.thaimicrotron.com/X10/X10LAB/X10Lab1.htm

การตรวจสอบจุดตัดศูนย์ (Zero Crossing) จะใช้ OPAMP 741 ทำหน้าที่เป็นวงจร Schmitt Trigger ครับ
เพื่อแปลงสัญญาณซายน์ เป็นคลื่นสี่เหลี่ยม เพื่อใช้จัดจังหวะ (synconize)ในการส่งครับ
หรือพูดง่ายๆว่า ใช้สัญญาณ 50 Hz จากไฟบ้าน มาเป็น clock นั้นเองครับ

จาก ทฤษฎี
http://www.thaimicrotron.com/X10/X10-MainPage.htm

เป็นขนาด(ความกว้าง)ของพัลซ์แต่ละลูก กับระยะห่างของแต่ละลูกครับ



Title: x-10 ตัวโปรแรมครับรบกวน Admin
Post by: tbkk on December 06, 2008, 12:38:40 PM
 ;D sw1กับ sw2 ที่ต่ออยู่กับขา RB6&RB7 เอาไว้ on-off ตรงส่วนไหนของวงจรเหรอครับ
แล้วขา RB5 ที่ต่อไป LED มาจากการควบคุมจากขา RB6&RB7 หรือเปล่า
รบกวน Admin ด้วยครับ

มีอีกหลายส่วนที่ยังไม่เข้าใจ คราวหน้าขอรบกวนใหม่นะครับ
ขอบคุณครับ  ;D


Title: Re: x-10 ตัวโปรแรมครับรบกวน Admin
Post by: smitdh on December 10, 2008, 07:37:08 PM
SW1-SW2 เป็นสวิทช์เปิด-ปิดอุปกรณ์ไฟฟ้า ที่ตัวโมดูลครับ จะอยู่ที่ Panel ด้านหน้า
(http://www.thaimicrotron.com/X10/X10LAB/X10LABPan.gif)

(http://www.thaimicrotron.com/X10/X10LAB/X10-RS232UI.jpg)

RB5 ต่อกับ LED สีเขียว (X-10 RX) จะกระพริบเมื่อได้รับสัญญาณ X-10 ที่ปรากฎบน AC-Line
(http://www.thaimicrotron.com/X10/X10LAB/X10Controler.gif)

LED2 สีแดง หมายถึงการทำงานของโหลดครับ


Title: เกี่ยวกับ IF ครับ
Post by: zzone on December 17, 2008, 04:24:02 PM
มีเรื่องรบกวนถามครับ...คือ
1.กระป๋องIF AM สีดำหาซื้อได้ที่ไหนครับหาซื้อได้อยากมากครับ
และมีปัญหาอีกอย่างหนึ่งคือเวลาไปซื้อเค้าจะขายเป็นชุดเลยครับแต่ที่ว่าหนักไปอีกคือจะต้องระบุยี่ห้อด้วย
หรือครับ.....ผมไม่เข้าใจครับ(เพราะร้านเค้าบอกว่าถ้าไม่ใช่ยี่ห้อเดียวกันมันจูนหากันไม่ได้ครับ)
2.ถ้าตัวส่งเรา(tranmisstion)ออกแบบเป็น4สวิทช์จะใช้ pic เบอร์ไหนครับและตัวรับ(resive)ควบคุม1จุดเหมือนเดิมครับ
ขอบคุณมากครับ....


Title: Re: เกี่ยวกับ IF ครับ
Post by: smitdh on December 18, 2008, 01:15:53 AM
ผมซื้อที่สิริโภคาบ้านหม้อครับ ในซอย ES เก่า เค้าแบ่งขายครับ
ตัวส่งถ้าสวิทช์ไม่มากก็ใช้ PIC16F628/PIC16F648A เหมือนเดิมครับ
ถ้าต้องการ สวิทช์มากๆ ก็ PIC16F877 ครับ ขาเยอะดี โค็ดก็เหมือนเดิมครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on February 20, 2009, 07:50:26 PM
รบกวนท่านผู้รู้ด้วยนะครับบ
               
       จุดประสงค์ของบอร์ดในความเข้าใจของผมคือ เมื่อกด sw1(on) จะส่งสัญญาณผ่าน PIC แล้วทำให้
RLY1 ทำงาน ส่งผลให้ Load ติด   ในขณะเดียวกันก็จะส่งสัญญาณผ่าน AC Line ไปยังบอร์ดอีกบอร์ดนึง
     ทำให้ PIC ที่อยู่บอร์ดภาครับอีกตัว รู้ว่ามีการกด sw1 ซึ่งก็จะทำให้ Load ของบอร์ดภาครับออนด้วยใช่มั้ยครับ
 
          ซึ่งสามารถสั่งเปิด-ปิด Load ได้ทั้งบอร์ดภาคส่งและภาครับใช่มั้ยครับ

                                               รบกวนด้วยนะครับ ขอบคุณครับ   


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 20, 2009, 08:16:11 PM
SW1-SW2 ไว้สำหรับ เปิด/ปิด อุปกรณ์ตัวนั้นเท่านั้นครับ ไม่ได้มีการส่งสัญญาณออกไปบน AC-line
เพราะตั้งใจทำอุปกรณ์ตัวนี้เป็น X10-monitor

แต่ก็มีค่ำสังไว้ทดสอบ การ เปิด/ปิด ผ่าน software อย่าง Hyper terminal รายละเอียดอยู่ที่นี่ครับ
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg222#msg222


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on February 20, 2009, 11:13:59 PM
SW1-SW2 ไว้สำหรับ เปิด/ปิด อุปกรณ์ตัวนั้นเท่านั้นครับ ไม่ได้มีการส่งสัญญาณออกไปบน AC-line
เพราะตั้งใจทำอุปกรณ์ตัวนี้เป็น X10-monitor

แต่ก็มีค่ำสังไว้ทดสอบ การ เปิด/ปิด ผ่าน software อย่าง Hyper terminal รายละเอียดอยู่ที่นี่ครับ
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg222#msg222


คำว่า "อุปกรณ์ตัวนั้นเท่านั้น" หมายถึง Load ใช่มั้ยครับ
แล้ว...ใช้วงจรส่วนไหนในการส่งสัญญาณผ่าน AC Line ครับ (ใช่ที่ขา 4 และขา 5 ของ L2 รึเปล่าครับ)
แล้วก็ผมยังไม่เข้าใจว่าจะส่งสัญญาณอะไร ในรูปแบบไหนผ่าน AC Line อะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 21, 2009, 08:16:37 AM
- อุปกรณ์ตัวนั้นเท่านั้น หมายถึง Load ที่เสียบอยู่กับ บอร์ด X10-LAB ครับ
http://www.thaimicrotron.com/X10/X10LAB/X10Lab1.htm

-ใช่ครับส่งสัญญาณผ่าน AC Line ที่ขา 4 และขา 5 ของ L2
โดยสัญญาณที่ส่งเป็นรูปแบบมาตรฐานของ X-10 ดูที่หน้านี้ครับ
http://www.thaimicrotron.com/X10/X10-MainPage.htm#Theory


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on February 21, 2009, 02:22:39 PM
ขอบคุณมากครับที่ ให้คำตอบ...^^


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on February 21, 2009, 03:54:20 PM
ในการสั่ง code ต่างๆ ก็สั่งใน Hyper terminal ใช่มั้ยครับ
     ตัวอย่างเช่น จะสั่งให้ A2 on

ต้องพิมพ์ code ใน Hyper terminal ว่า A2 on หรือ
ต้องพิมพ์เป็น data แบบนี้ครับ ???
 1110 0110 1001 1010 1001 01
 1110 0110 1001 1010 1001 01
 000000
 1110 0110 1001 0101 1001 10
 1110 0110 1001 0101 1001 10   ครับ

   ถ้าสามารถสั่งได้แบบนี้ แสดงว่า โปรแกรมที่เขียนใส่ PIC ต้องมีการเขียนเพื่อรับคำสั่งไว้แล้วใช่มั้ยครับ...


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 21, 2009, 04:05:01 PM
คุณ OHM_HZ คงอ่านข้ามแล้วมังครับ ลองอ่าน forum นี้ตั้งแต่ต้นซิครับ ทั้งหมดมี 3 page
 
รายละเอียดการควบคุมผ่าน Hyper terminal จะอยู่ที่
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg222#msg222


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on March 08, 2009, 03:30:58 AM
จากที่หายไปนาน.... ผมลอง test ด้วย hyper terminal แล้วครับ มันขึ้นเป็น Address = A04 อะครับ
ถ้าต้องการเปลี่ยน address เป็น A02 เพื่อที่จะควบคุม load ได้ 2 วิธี(ที่ sw กับ PC) จะต้องแก้ code อย่างไรครับ
     รบกวนขอ file code ที่เป็น .C ด้วยได้มั้ยครับ
ขอบคุณมากครับ คุณศมิทธิ์


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 08, 2009, 04:11:05 AM
Code จะอยู่ที่หน้านี้ครับ
http://www.thaimicrotron.com/X10/X10LAB/X10Lab2.htm#code

วิธีเซ็ท address
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg222#msg222


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on March 08, 2009, 04:32:57 AM
ขอบคุณครับ
     คือ ตอนนี้ผม burn file Hex "File for PIC16F628 V1.0Beta" ลง pic แล้วครับ ใช้งานได้ครับ
(ที่โหลดมาเป็น file .hex ครับ) รบกวนขอ soure code ของไฟล์ .hex ตัวนี้ด้วยคร๊าบบ จะได้แก้ adress ได้ครับ
ขอบคุณครับ  ผลเปนอย่างไรเด้วรายงานเปนระยะๆ ครับ ^^   


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on March 08, 2009, 04:40:26 AM
แล้วก็...ผมลอง คอมไพล์ ตัว EX_X10o.C แล้วมันไม่ผ่านอะครับ
     ผมใช้โปรแกรม mikroC ของ smartleaning ครับ ไม่ทราบว่าใช้ได้มั้ยครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 08, 2009, 04:45:28 AM
คอมไพล์เลอร์เป็น CCS ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on March 08, 2009, 04:54:51 AM
อ่อ... ขอบคุณครับ
          - ในส่วนของภาครับ การปรับแต่งเหมือนกันกับภาคส่งมั้ยครับ?
          - ผมคิดว่าในส่วนของภาครับจะไม่ทำในส่วนของการติดต่อกับ PC จะมีปัญหาไรมั้ยครับ?
                                                                               รบกวนด้วยคร๊าบบ

      ตอนนี้ทำเสร็จ อันหนึ่งแล้วครับ  แหะๆ   ผลออกมาใช้ได้ครับ (แต่ยังไม่ได้ส่งผ่าน AC Line )


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 08, 2009, 07:48:05 AM
ภาครับ การปรับแต่งเหมือนกันกับภาคส่งครับ
จะไม่ทำในส่วนของการติดต่อกับ PC ก็ได้ครับ เพราะการส่งเข้า PC เพื่อ monitor
และทำความเข้าใจข้อมูลของ X10


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on March 08, 2009, 02:53:17 PM
ขอบคุณมากครับ
     เอ่อ คือ  ผมหาโปรแกรม CCS ไม่ได้เลยอะครับ ก็เลยอยากขอ โปรแกรมที่ Address เป็น A02 อะครับ
รบกวนพี่ช่วยแก้ address แล้วส่งมาให้ทีครับ ส่งมาเป็น .hex เลยนะครับ
       ขอบคุณอย่างแรงครับ

ปล. file "Hex File for PIC16F628 V1.0Beta" ที่ให้โหลด  address = A04


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 08, 2009, 08:08:51 PM

Address เป็น A02 ครับ
http://www.thaimicrotron.com/X10/X10LAB/EX_X10o.zip

ที่จริงแล้ว address อยู่ที่ EEPROM ครับ ใช้ตัวโปรแกรมที่แก้ไข EEPROM ได้เช่น WINPIC800
http://www.winpic800.com/
Load Hex File แล้วมาแก้ไข EEPROM แล้วค่อยโปรแกรม ก็ได้ครับไม่ต้อง Compile ใหม่


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: OHM_HZ on March 09, 2009, 06:22:16 AM
ขอบคุณมากครับบบบ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on May 11, 2009, 09:39:58 PM
คือว่าผมลองทำดู(สองตัว) แล้ววัดความถี่มันได้ 160KHz ทั้งสองตัว(คือผมปรับต่ำสุดแล้ว) ก็เลยสงสัยว่ามันจะสามารถส่งข้อมูลหากันได้มันครับ ?


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on May 12, 2009, 11:33:08 PM
ผมขอย้าย topic ที่ซ้ำมาที่นี่เลยนะครับ

จากคำถาม
>>คือว่าผมลองทำตามแบบที่พี่ๆลงใน WEb แล้วลองวัดดูที่ IF มันได้ 160 kHz (ปรับต่ำสุดได้แค่นี้นะ)แล้วมันจะทำงานได้รึป่าวครับคือผมทำสองตัวแล้วมัน เหมือนกันเลย เลยอยากถามหน่อยครับ <<

ความถี่มันสูงไปครับ IF สีอะไรครับควรจะเป็นสีดำนะครับ
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg222#msg222

วิธีแก้ก็ให้ปรับ IF ไว้ที่ต่ำแหน่งกลางๆ ก่อน แล้วลองเพิ่ม C1 เพื่อให้ความถี่ต่ำลง จากรหัส 222 (0.0022U) เป็น 0.0033
หรือจะลองใช้พ่วงขนานกันก่อนก็ได้ครับ ค่อยนำมาหาค่ารวมที่หลัง แล้วลองปรับละเอียดอีกทีที่ IF

หากจะให้เป็น 160KHz หรือความถี่อื่นก็ได้ครับถ้าเข้าใจในหลักการ โดยปรับภาครับให้ตรงกัน ปรับ L2 และ C3 ด้วย
แต่จะใช้ร่วมกับมาตรฐาน X10 ที่มีขายไม่ได้ครับ




Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on May 21, 2009, 09:59:25 PM
คือผมลองต่อผ่านสายแปลงจาก rs232 เป็น usb แล้วมันขึ้นแค่ บอกว่ามันเป็นแอสเดส A02 แล้วก็ไม่อะไรอีก พิมในโปรแกรม hyper terminal ไม่ได้ พี่ช่วยวิเคราะทีครับ เป็นเพราะสายแปลงรึว่าอะไร (ผมลองใช้กับ Notebook)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on May 22, 2009, 04:45:37 AM
หากมันขึ้นว่า แอสเดส A02 ก็น่าจะรับข้อมูลได้แล้วนะครับ
ลองดู
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg222#msg222


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on May 29, 2009, 09:26:05 PM
 if(kbhit())
  {
   c=getch();
   switch(c)
   {
    case '1':
        X10Write('A',1,3);
        printf("%c\r\n",c);
        break;

    case '2':
        X10Write('A',1,2);
        printf("%c\r\n",c);
        break;
    case '3':
        X10Write('A',2,3);
        printf("%c\r\n",c);
        break;

    case '4':
        X10Write('A',2,2);
        printf("%c\r\n",c);
        break;
    case '9':
        //X10Write('A',1,2);
        output_low(X10OUT);
        X10WriteFn('A',0);      //All Unit Off
        printf("%c\r\n",c);
        break;
คือว่า จาก code ข้างบน ถ้าผมต้องการเพิ่มฟังชั่นอีกผมก็แค่เพิ่ม code แบบนี้ใช่มั้ยครับ แล้วไม่ต้องไปแก้ code ในส่วนอื่นอีกใช่รึป่าวครับพี่
     case '8':
        //X10Write('A',1,2);
        output_high(X10OUT);
        X10WriteFn('A',0);       //All Unit On (คือผมเพิ่ม code ในส่วนนี้เพื่อให้ อุปกรณ์ ใน กรุ๊ป A ทั้งหมดติด)
        printf("%c\r\n",c);
        break;แล้วถ้าผมต้องการเพิ่มคำสั่งเกี่ยวกับการใช้สวิทควบคุม ออกทาง x10 ผมก็เพิ่มเข้าไปใน code ส่วนนี้ได้เลยรึป่าวครับ
สุดท้ายขอขอบคุณพี่ เจ้าของกระทู้ ที่ช่วยชี้แนะ คร้าบ..........พี่น้อง


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on May 30, 2009, 03:05:21 AM
code เพื่อให้ อุปกรณ์ ใน กรุ๊ป A ทั้งหมดติด เป็น function 1 ครับ ดูในตาราง
http://www.thaimicrotron.com/X10/X10-MainPage.htm#FnCode


case '8':
        output_high(X10OUT);
        X10WriteFn('A',1);       //All Unit On
        printf("%c\r\n",c);
        break;

การเพิ่มคำสั่งเกี่ยวกับการควบคุม โดยผ่าน RS232 ก็เพิ่มในส่วนนี้แหละครับ

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

A1(ON) <ENTER>
A1(OFF) <ENTER>

ALL(ON)  <ENTER>
ALL(OFF)  <ENTER>

A1(DIM)  <ENTER>
A1(BRIGHT)  <ENTER>


ตอนนี้พอจะมีเวลาบ้างแล้ว เดี๋ยวจะปรับตัวอย่างให้นะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on May 30, 2009, 08:54:22 PM
(ตามความเข้าใจของผมนะครับ) แสดงว่าผมต้องแก้ code ตรงนี้ด้วยใช่มั้ยครับ
}
void EXEX10Func(void)
{
BYTE H,N;

   //Get Address form EEPROM House & Number
    H=read_eeprom(0);
    N=read_eeprom(1);

    if(H==rHouse && N==rNumber)
    {
       switch(rFunction)
       {
        case 2:                   //ON  จากเลข 2 ต้องเป็น เลข 1 รึป่าว
          output_high(X10OUT);
          break;
        case 3:                   //OFF จากเลข 3 ต้องเป็น เลข 0 รึป่าว
          output_low(X10OUT);
          break;
       }
    }
}
เพราะว่าในอีกชุดของคำสั่ง ที่พี่เอามาเป็นตัวอย่างมันเป็นอย่างนี้

void StrFuncMsg(BYTE n)
{
      switch(n)
      {
       case 2:
            strcpy(StrFunc,"ON");
          break;
       case 3:
            strcpy(StrFunc,"OFF");
          break;
       case 4:
            strcpy(StrFunc,"Dim");
          break;
       case 5:
            strcpy(StrFunc,"Bright");
          break;

     default:
          strcpy(StrFunc,"Unknow");
      }
}
แล้วอีกอย่างคือถ้าผมจะเพิ่มคำสั่งที่จะใช้ สวิทช์เพื่อส่งข้อมูลออกไป ควรจะไปเพิ่มตรงไหนดีครับพี่
ขอขอบคุณอย่างแรงที่ให้คำแนะนำครับผม


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on May 30, 2009, 11:54:44 PM
EXEX10Func();
เป็นฟังก์ชันที่ใช้ตรวจสอบว่าตรงกับแอดเดรสของเครื่องเราหรือเปล่า
ถ้าตรงเป็นฟังก์ชั่นอะไร ตอนนี้เครื่องเรามีความสามารถแค่ 2 คำสั่งที่สามรถทำงานได้
คือ ON กับ OFF (หรี่ไฟไม่ได้ครับ)

การควบคุมอุปกรณ์ตัวอื่น โดยผ่าน RS232 ไม่ต้องแก้ในส่วนนี้ครับ

void StrFuncMsg(BYTE n);
เป็นส่วน monitor ด้วยครับ คือถ้ารับมาถึงแม้ไม่ใช่แอดเดรสเรา
ก็จะแสดงออกทาง RS232 ด้วยว่าเป็นคำสั่งอะไร ที่วิ่งอยู่บน AC-LINE

คำสั่งที่จะใช้ สวิทช์เพื่อส่งข้อมูลออกไป
หากหมายถึงกดปุ่มที่ตัวเครื่องเอง ก็ต้องหาขาว่างๆ มาทำเป็นอินพุตต่อไปอีก
การอ่านค่าก็คล้ายๆ กับปุ่มที่เเราใช้ RB6,RB7 ใช้ Fn ScanKey();

แต่ถ้าหากต้องการสั่งงานผ่าน RS232 ก็ต้องแก้ที่ Fn UARTReady(); ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on May 31, 2009, 04:23:01 PM
ขอคุณพี่ที่ช่วยตอบคำถามผมสำหรับครั้งที่แล้ว
วันนี้มาอีกคำถามครับ
เริ่มเลยดีกว่า
งั้นถ้าผมต้องการ เปลี่ยนการทำงานของ ขา RB6,RB7 เป็นส่งข้อมูลออก ไม่ใช่ควบคุมโหลด ผมทำอย่างนี้มันถูกมั้ยครับ
BYTE ScanKey(void)
{
BYTE D1,D2,Key;
int Cn;

   Key=0;
   D1=ReadPortB();              //Read again
   D1&=0B11000000;

   if(D1==0)                    //No Key press
    return 0;
   else
   {
    delay_ms(KEYDELAY);         //Delay for test
    D2=ReadPortB();             //Read again
    D2&=0B11000000;
    if(D1==D2)
    {
     Key=1;                     //Key press is normal
     Cn=0;
     do
     {
      //restart_wdt();
      delay_ms(30);
      D2=ReadPortB();           //Read again
      D2&=0B11000000;
      if(Key==1)                //Normal press only
      {
       Cn++;
       if(Cn==100)
       {
        output_low(X10OUT);
        SoundFn();
        Key=2;                   //Key press is FnKey
        Cn=0;
       }
      }
      //while(D2!=0 && Key==2);   //wait for FnKey Release
     }
     while(D2!=0);              //Wait for Release Key

     if(Key==1)
     {
       switch(D1)
       {
        case 0x80:
           output_high(X10OUT);
           X10WriteFn('A',1);       //All Unit On  ผมทำตรงนี้มันถูกมั้ยครับ
           break;
        case 0x40:
          output_low(X10OUT);
          X10WriteFn('A',0);      //All Unit Off
          break;                  }
      SoundPress();
     }

    }
   }

 return Key;

ช่วยชี้แนะทีครับพี่ ขอบคุณล่วงหน้าครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on May 31, 2009, 09:26:44 PM
พอดีมีคำถามอีกนะครับ
เวลาที่เราส่งข้อมูลตัวเครื่องที่เราใช้ส่งจะไม่สามารถรับคำสั่งใช่มั้ยครับ
พอดีผมลองส่งข้อมูลสั่ง แอดเดรส ของตัวเครื่งส่งเอง มันไม่ทำงาน รึว่าเป็นเพราะผมปรับภาครับไม่ถูก กลับความถี่ของภาคส่งครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on May 31, 2009, 10:20:17 PM
ทาง hardware ทำเสร็จแล้วหรือยังครับ ผลเป็นอย่างไรบ้าง
ปรับเป็น 120 KHz ได้หรือยัง รับส่งกันได้ไหม ลองเล่าให้ฟังบ้าง
เผื่อผมจะได้นำไปปรับปรุง

หากจะใช้ RB6,RB7 เป็นปุ่มที่กดแล้ว ส่งคำสั่งออกไปบน AC-Line เพื่อควบคุมตัวอื่น
(แทนที่จะ ON/OFF ตัวมันเอง) ก็ได้ครับ

ก่อนอื่นขออธิบาย Fn BYTE ScanKey(void); คร่าวๆก่อนนะครับ
เนื่องจากมี 2 Key เอง ก็เลยเขียนเป็นโครงสร้างง่ายๆ อย่างที่เห็น เพื่อให้เข้าใจง่าย

หลักการทำงานของมันก็คือ
- ตรวจสอบการกดคีย์
 หากมีการกดคีย์ ให้หน่วงเวลาซักนิด แล้ว ลองอ่านอีกครั้ง เพื่อหลีกเหลี่ยง noise กับ debounce
 หากค่าที่อ่านได้ยังเหมือนเดิม ถือว่าเป็นการกดคีย์ที่ถูกต้อง
- รอการปล่อยคีย์ และจะเริ่มจับเวลา
 หากกดคีย์เกินกว่า 3 วินาทีจะถือว่าเป็น Fn Key (เป็นคีย์พิเศษไว้สำหรับ Setup Address) และค่าที่ return เป็น 2 และออกจาก Fn ไปเลย
 หากปล่อยคีย์เร็วกว่านั้นถือว่าเป็นคีย์ปกติ ก็จะทำตามคำสั่ง ON หรือ OFF ทันที

      if(Key==1)
     {
       switch(D1)
       {
        case 0x80:
            output_high(X10OUT);
            break;
        case 0x40:
            output_low(X10OUT); 
            break;
       }

หากจะเปลี่ยนปุ่มไปทำหน้าที่อย่างอื่นก็แก้ที่นี่ละครับ
โดยตัด output_high(X10OUT); กับ output_low(X10OUT);  ออกไปเพราะเป็นคำสั่งเปิด-ปิดตัวมันเองครับ
เช่นตัวอย่างจาก code ของคุณ

     if(Key==1)
     {
       switch(D1)
       {
        case 0x80:
            X10WriteFn('A',1);       //All Unit On
            break;
        case 0x40:
            X10WriteFn('A',0);      //All Unit Off
            break;
       }

นอกจากจะ setup address ที่ EEPROM ที่ code โปรแกรมแล้ว
เรายังสามารถ setup address ใหม่ได้ด้วย FnKey นี่แหละครับ

โดยกดปุ่ม Load ON หรือ OFF ก็ได้ นาน 3 วินาที จะได้ยินเสียงสูง (ติ๊ด... ) 1 ครั้ง แล้วให้ปล่อยคีย์
จะเห็นว่า LED  RX สีเขียวจะติด  และส่งข้อมูลผ่าน RS232 ไปที่ PC

Setup Address

จากนั้นก็ให้ส่ง แอดเดรสเป็นฟังก์ชั่น ON หรือ OFF ก็ได้ ผ่าน AC-Line ด้วย X-10 ตัวอื่น ภายใน 10 วินาที
เช่น A8(ON) จะมีข้อมูลส่งไปที่ PC ว่า

NEW ADDRESS=A08

และจะได้ยินเสียงสูง  ติ๊ด... ติ๊ด... ติ๊ด...  3 ครั้ง  LED  RX สีเขียวจะดับ
ตอนนี้ แอดเดรสของเครื่องก็จะเป็น A08 แล้ว
หากไม่ส่งแอดเดรสมาภายใน 10 วินาที เครื่องก็จะส่งเสียงต่ำยาวๆ ตืด.........1 ครั้ง
จะมีข้อมูลส่งไปที่ PC ว่า

Setup Abort

การส่งข้อมูลบน AC-Line เป็นแบบ Half Duplex  เป็นการส่งและรับข้อมูลแบบสลับกัน
คือเมื่อด้านหนึ่งส่ง อีกด้านหนึ่ง เป็นฝ่ายรับ สลับกัน ไม่สามารถรับ-ส่งในเวลาเดียวกันได้

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


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 01, 2009, 08:46:36 PM
ขอบคุณพี่ ที่ชี้แนะและให้ความรู้ใหม่ๆเสมอ
ตอนนี้ ผม ทำเสร็จเครื่องหนึ่งแล้ว(คือประกอบลงกล่องเรียบร้อย)ผมส่งรูปมาให้ดูด้วย
ส่วนอีกเครื่องยังไม่ได้ประกอบ
เครื่องที่ประกอบเสร็จแล้ว สามรถวัดความถี่ได้120kHz แต่ภาครับไม่รู้ว่าจะวัดยังไงผมเลยป้อนความถี่จาก ฟังก์ชันเจน ป้อนเข้าทางที่เชื่อมกับสาย AC แล้วเอาสโครปวัดดูว่าความถี่ที่ผ่านออกมาได้รูปใกล้เคียงกับความถี่ที่ป้อนมั้ย (ตรงนี้ผมทำถูกทางรึป่าวครับ) เลยไม่สามรถบอกกับพี่ว่ามันจะรับส่งกันได้มั้ย แต่เครื่องที่ทำเสร็จ มันสามรถจะควบคุมผ่าน PC กับที่ สวิท ได้อยู่ครับ
อืม..สำหรับคำตอบที่พี่เขียนบอกว่าหั้ยลองเขียน code เพื่อตรวจสอบคำสั่ง สำหรับ ให้เครื่องสามรถควบคุมตัวมันเองผ่าน AC line ผมขอบอกพี่เลยว่า...............พี่ช่วยเขียน code  เพื่อเป็นแนวทางให้ผมดูหน่อย คร้าบ  ....อิอิ
อืมเกือบลืม  แล้ววิธีการปรับแต่งภาครับละครับพี่ ที่ว่าจะบอกตั้งแต่แรก ๆ
ผมรอคำตอบจากพี่อยู่ ขอบคุณล่วงหน้าครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 01, 2009, 11:44:30 PM
นับถือความพยายามจริงๆครับ นับถือ.. นับถือ..
ตอนแรกที่ลงบทความนี้ ก็เพื่อบันทึกความทรงจำ และแนวทางที่น่าทำของผมเองครับ
และพอให้เป็นแนวทางกับผู้ที่สนใจ เพราะหาข้อมูลยากจริงๆ เจ้า X-10 นี่
ไม่นึกว่าจะมีผู้สนใจมากนัก เพราะทาง RF เข้าก็มีอยู่กันมากมาย
ที่ผมลองทำก็เพราะมีตัวเก่าอยู่ กว่า 20 ปีแล้วได้มั้ง ซื้อมาคู่นึง 3000 กว่า นับว่าแพงพอดู
ตอนนั้นไม่มีความรู้พอที่จะ แกะโค๊ดมัน พอสัก 4 ปีที่แล้ว นำมาปัดฝุ่น ดูใหม่ แล้วความรู้ใหม่ๆ ก็ได้ จาก
Internet เนี่ยแหละครับ ทำให้ได้ข้อมูลมาบ้าง จึงเริ่มแกะโค๊ด X-10 ได้
จริงๆ แล้ว X-10 ตัวมันมีอุปกรณ์ไม่กี่ชิ้น แต่จะทำอย่างไรให้ศึกษาอย่างปลอดภัย จับได้ วัดได้
ก็เลยออกมาเป็น X-10 LAB นี่แหละครับ

ที่จริงแล้วข้อมูลมากมายก่อนหน้านี้ได้คุยกันไว้ใน webbord รุ่นก่อน ได้มีคนนำหลักการ
ไปทำเป็น โปรโตคอล ของตัวเองสำเร็จไปแล้วครับ ก็ดีใจด้วยที่ บันทึกของผมพอจะเป็นแนวทาง
ให้เด็กรุ่นใหม่ ได้ค้นคว้า แต่เสียดายที่ถูก spam โจมตีจนเอาไม่อยู่ เลยต้องทำ webbord ใหม่
อย่างที่เห็นนี่แหละครับ แต่ spam bot รู่นใหม่ๆ มันก็ยังสมัครสมาชิกเองได้ post web โป๊
admin คอยตามลบอยู่ไม่ไหว ก็เลยใช้วิธี block IP ต่างประเทศ บาง IP แทน

วิธีการปรับแต่งภาครับ จริงๆใน Topic
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg222#msg222
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg393#msg393
ก็หมดแล้วครับ เหลืออีกนิดก็

(http://www.thaimicrotron.com/X10/X10LAB/X10RX-TX.gif)
โดยปรับ L1 ให้ได้ 120 KHz  ส่วน L2 ไว้กลางๆ ก็ใช้ได้แล้วครับ
หากจะปรับละเอียดต้องใช้ X10Strength meter ที่ปรับความถี่ที่ 120 KHz แล้ว
http://www.thaimicrotron.com/X10/X10LAB/X10Strength/X10Strength.htm
หรือใช้ภาครับอีกตัววัดความแรง โดยปรับให้รับแรงที่สุด ซึ่งผมดูแล้วมันก็ไม่ต่างกันมากนัก
เพราะสัญญาณ ที่รับเข้ามานั้นจะมาจากขา C ของ Q2 ซึ่งปรับให้ส่ง 120 KHz ได้
ภาครับก็จะรับได้ครับเพราะมันใช้คอยล์ ตัวเดียวกัน

แล้วจะรวบรวมไปลงในส่วนของการปรับแต่งภาครับ ให้เรียบร้อยอีกทีนะครับ

ที่จริงแล้วเรามีวิธีใช้ PIC เป็นเครื่องมือในการสร้างความถี่ 120 KHz เพื่อใช้ในการปรับแต่ง ความถี่
โดยเขียนโค๊ดขึ้นมา

หรือใช้วัดความถี่อย่างเช่น
http://www.thaimicrotron.com/CCS-628/Timer/CaptureEx1.htm
โดยถ้าเข้าใจหลักการก็สามารถแก้มาวัดความถี่ 120 KHzได้
หรือใช้ PIC Logic Analyzer
http://www.thaimicrotron.com/PROPIC/USB1/PICkit2Logic.htm

โดยการวัดจะต้องต่อความต้านทานแบ่งแรงดันให้เหมาะสม เพื่อไม่ให้แรงดันเกิน 5 V
เพราะอาจจะทำให้ PIC เสียหายได้


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 02, 2009, 11:08:47 AM
ขอบคุณอีกครั้งครับพี่ที่มา ชี้แนะข้อสงสัยของผมโดยตลอด ยังไงถ้าทำเสร็จทั้งสองเครื่องแล้วจะเอาผลการทดลองมาให้ดู
อืม แต่มีอีกอย่างครับพี่ คือ หากคุณต้องการให้ตัวมันเองทำงานด้วย ก็ให้เขียนคำสั่งแยกออกมาตรวจสอบ
ว่าแอดเดรสที่ส่งออก ตรงกับแอดเดรสตัวเองหรือเปล่าครับ
มันจะเขียนยังไงครับพี่ ขอบคุณล่วงหน้าครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 03, 2009, 01:53:07 AM
เดี๋ยวเขียนให้ดูครับ วันนี้กลับดึกไปหน่อย
เลยหมดสภาพครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 03, 2009, 08:14:44 AM
กลับซะดึก ไปเที่ยวมาละสิ 555(ล้อเล่นนะครับพี่)
ยังไงก็ขอบขอบคุณอีครั้งครับ แล้วจะรอดู Code นะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 04, 2009, 09:16:07 AM
เออ พี่ครับ ผมมีคำถามมาอีกอย่างนะครับ คือว่าถ้าผมจะลองเขียน code ให้ pic มันผลิตความถี่ 120KHz โดยใช้ฟังชันประเภท PWM แล้ว ฮาร์ดแวร์ มันจะต้องเปลี่ยนด้วยมั้ยครับ คือผมเข้าใจว่า เจ้าเครื่องที่พี่เอามาลงให้ดู pic มันไม่ได้ผลิตความถี่ออกมาใช่มั้ยครับ เลยอยากลองถาม เพื่อจะได้รวบรวมข้อมูลเพื่อพัฒนาต่อ
ขอบคุณล่วงหน้าครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 04, 2009, 07:07:31 PM
ก็เป็นความคิดที่ถูกต้องครับ เพราะ PWM มันผลิตความถี่ได้เป็นอิสระ คือเซ็ทอับแล้วไม่ต้องดูแลอีกซึ่งผมเห็นในตัวอย่างของ microchip ใน Application note เค้าก็มีแนะนำไว้
- แต่ผมเห็นว่าผลิตออกมาแล้วระดับแรงดันเป็น 5V ก็ต้องเอามาขยายอีก แต่ osc พวกคอยล์ มันมีอัตราขยายบ้างอยู่แล้ว
- ต้องการประหยัด code เพราะมีหน่วยความจำน้อย ตอนนั้น PIC16F628 มี 2K ยังแพงอยู่ ช่วงหลังๆ PIC16F648A ถึงจะออก

แต่ตอนนี้ชิพใหม่ๆ Program code มากขึ้น ถูกลงมากเกือบครึ่งก็มี
http://www.thaimicrotron.com/webboard2/index.php?topic=148.msg405#msg405

ลองดูหน้า
http://www.thaimicrotron.com/CCS-628/EXAM/ModuleCCP1.htm
http://www.thaimicrotron.com/CCS-628/Referrence/PWM-Calculate.htm

แต่เป็นสไตล์ ASM นะครับแล้วเขียนแบบ ANSI-C เองเลยแบบเข้าถึง รีจีสเตอร์โดยตรง
แต่เขียนแบบใช้ Fn built-in ของ CCS จะง่่ายกว่ากันเยอะ complier จะคำนวนให้หมด
เช่นลองศึกษา Fn set_pwm1_duty( );


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 09, 2009, 02:13:42 AM
ตอนนี้กำลังปรับปรุ่ง code ใหม่แบบยกเครื่อง ทั้งเรื่องการรับ-ส่ง ของ X-10 และการใช้คำสั่งควบคุ่ม X-10 ผ่าน RS232
เพื่อให้เข้าใจและทดสอบได้ง่ายขึ้น  สำหรับ code ที่ตรวจสอบแอดเดรสตัวเองของคุณ muiim ก็จะมารวมไว้ที่นี่ด้วยกันเลยครับ

โปรดรอสักครู่


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 09, 2009, 09:38:42 AM
รอได้เสมอครับพี่ ขอบคุณล่วงหน้าอีกครั้ง ไงก็ขอเป็นกำลังใจน้อยๆ ให้พี่พัฒนาผลงานต่อไปครับผม


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 10, 2009, 09:22:12 AM
จากรูปที่ผมแนบมาด้วย พี่คิดว่ามันจะสามรถมาใช้ในมาตรฐาน x-10 ได้มั้ยครับพี่ (มันเป็นวงจรครับ)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 10, 2009, 09:59:34 PM
หากเป็นมาตรฐาน X-10 แล้วไม่ว่าบริษัทใดผลิต สามารถใช้ร่วมกันได้ทั่วโลกครับ
แต่ถ้าความถี่ไฟบ้านต่างกัน 50Hz กับ 60Hz ผมไม่แน่ใจว่าจะใช้กันใด้ไหม
จากรูปที่ให้มาเป็น TDA5051 Home automation modem
น่าสนใจตรงที่ interface กับ 220V มีอุปกรณ์ไม่มาก
แต่เนื่องจาก IC หายากครับ ศึกษาพวกไมโครฯ เหนื่อยหนเดียวครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 11, 2009, 07:55:57 AM
ขอบคุณที่ชี้แนะครับ อืม(.....หวังว่า code ตัวใหม่ของพี่จะเสร็จเร็วนี้นะครับ ม่ายด้ายรอเลยนะหนิ)555


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 12, 2009, 05:28:59 AM
Code ใหม่เสร็จแล้วนะครับเนื่องจากมีคุณสมบัติมากขึ้น ไฟล์ขนาดใหญ่ขึ้นเลยต้องใช้กับ PIC16F648A

ทั้งนี้ต้องขอขอบคุณ คุณนพรัตน์ เจ้าของ web http://www.monitoringathome.com/
ได้ให้ยืม ชุด X10 Pro1  http://www.monitoringathome.com/____x10pro1.html
ซึ่งเป็นแบบ bidirectional คือ X-10 ที่รับส่งได้ในตัวเดียวกัน (Transceiver) ทำให้สามารถตรวจสอบได้
ว่าอุปกรณ์นั้นเปิดหรือปิดอยู่ ทำให้ code ตัวใหม่นี้เป็นแบบ bidirectional ด้วย

X10Demo2.c  http://www.thaimicrotron.com/X10/X10LAB/Code/X10Demo2_C.zip
X10Demo2.hex http://www.thaimicrotron.com/X10/X10LAB/Code/X10Demo2_hex.zip

ส่วนการใช้งาน
http://www.thaimicrotron.com/X10/X10LAB/X10Demo2.htm


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 12, 2009, 10:00:19 AM
เย่ๆๆๆๆๆ ไม่ต้องรอนาน แต่ก็ยังงงๆ อยู่ครับพี่ แล้ว ฮาดแวร์ตัวเก่า ใช้กับ code ได้รึป่าวครับ คือว่าอยากจะลอง ตรวจสอบดูว่ามัน สามารถตรวจสอบสถานะตัวเองได้ป่าวครับ ขอบคุณล่วงหน้าครับผม


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 12, 2009, 03:32:56 PM
ใช้กับ Hardware ตัวเดิมเลยครับ
ตรวจสอบสถานะตัวเอง หากหมายถึง เมื่อส่งคำสั่ง

A04-03
ตัวมันเองเป็น A04 มันก็จะติด

เมื่อส่งคำสั่ง
A04-04
ก็จะดับครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 15, 2009, 07:56:50 AM
ขอใช้ศัพท์วัยรุ่นหน่อยละกันครับ (แจ่มไปเลยพี่น้อง)
งั้นต้องลองไปหาซื้อ pic เบอร์ 16F478A มาเล่นซะแล้ว


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 15, 2009, 08:03:11 AM
เอ๊ย 16F648A แก้ไข


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 15, 2009, 09:16:59 PM
ครับต้องคอยตามกระแสด้วยครับ คอยตรวจสอบราคา กับเบอร์ใหม่ๆบ่อยๆ ไม่งั้นตกยุค ใช้ของแพงแต่คุณภาพต่ำกว่า
PIC16F628 แพงกว่า PIC16F648A อีกครับ

http://www.thaimicrotron.com/webboard2/index.php?topic=148.msg405#msg405

ส่วนตอนนี้ผมเล็ง PIC16F886 8K อยู่ครับ ว่าจะเอามาทำ X-10 Keypad ขาเยอะดี มี A/D แถมยังถูกที่สุดอีกด้วย
ส่วนตอนนี้กำลังทำ Remote RF to X-10 อยู่ครับ เพราะชุด X-10LAB ทำให้ผมเข้าใจระบบ X-10 ขึ้นเยอะ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 19, 2009, 10:15:44 AM
คอม ผมเจ๋งครับพี่ ไม่ได้เข้ามาหลายวัน ไงก็ขอให้พี่ทำผลงานออกมาอีกเยอะๆนะครับผมจะคอยชม


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on June 19, 2009, 11:22:53 AM
คือว่า ผมจะใช้สวิทย์เพื่อสั่งข้อมูลx10ออกทาง powerline แล้วคำสั่งผมจะทำไงดีครับ ผมไม่ค่อยเข้าใจ code ตัวใหม่นะครับพี่
 switch(D1)
       {
        case KEY_ON:
            output_high(X10OUT);
            break;
        case KEY_OFF:
            output_low(X10OUT); 
            break;
ผมจะเพิ่มอะไรเข้าไปในส่วนนี้ ดีละครับพี่ (ถ้าผมต้องการสั่งให้ ALL unit on / ALL unit off)
ขอบคุณล่วงหน้าครับพี่


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on June 19, 2009, 06:47:56 PM
code เก่าเป็น code ที่ได้มาจากตัวอย่าง ของ CCS ครับคือ C:\Program Files\PICC\Examples\ EX_X10.c
ซึ่งจะมีอยู่ในตัวอย่างของ CCS ซึ่งจะต้องใช้กับ X10 โมดูล TW523
เอามาดัดแลงใหม่เป็น EX_X10o.c เพื่อให้ใช้กับ X10LABของเรา ทำให้อ่านยากนิดนึง

ส่วนโค๊ดตัวใหม่เขียนตามความเข้าใจ ที่เกิดขึ้น มาเรียบเรียงใหม่ โดยสามารถให้ใช้กับ X10-Pro รุ่นใหม่ๆ ได้
อย่างเช่นของ บางบริษัท ซึ่งเป็นแบบ bidirection

จากโค๊ดที่คุณให้มา เป็นการ เปิด/ปิดตัวเองครับ X10OUT เป็นขาที่ควมคุม Reley เรากำหนดไว้เป็น RA2
#define X10OUT          PIN_A2

fn ที่สำคัญจะอยู่ใน UARTReady(); ครับ ในส่วน
...
             if(len==3)    //House,Function
             {
              printf("Sending...%c%02d\r\n",RxHouse,RxFn);
              X10WriteFn(RxHouse,RxFn);
              if(RxFn==1||RxFn==2)
                X10FuncExe(RxHouse,RxNo,RxFn);
             }
             if(len==6)    //House,Number,Function
             {
              printf("Sending...%c%02d-%02d\r\n",RxHouse,RxNo,RxFn);
              X10Write(RxHouse,RxNo,RxFn);
              if(RxFn==3||RxFn==4)          //@Test Self Address
                X10FuncExe(RxHouse,RxNo,RxFn);
             }
...

ตัวแปรที่สำคัญ RxHouse,RxNo,RxFn
RxHouse  เก็บ House  เป็นตัวักษรครับ เช่น 'A','B'
RxNo   เป็น int เป็น Keycode หรือ number code
RxFn   เป็น int เป็น Function code

fn ที่สำคัญ
http://www.thaimicrotron.com/X10/X10-MainPage.htm#FnCode

void X10Write(char House,int Number,int Fn);
เช่นต้องการ ส่งคำสั่งบน ac line A02 ON
   X10Write('A',02,X10FN_STATUS_ON);


void X10WriteFn(char House,int Fn);  เป็น fn ที่ไม่ต้องระบุ keycode ,numbercod เช่นพวก ALL ทั้งหลาย Dim ,Bright
จะมีอยู่ 5 ฟังก์ชั่นเท่านั้นที่ใช้ได้     
     1). All Units Off   
     2). All Units On   
     5). Dim   
     6). Bright   
     7). All Lights Off

เช่น  All Units Off คืออุปกรณ์ ใน House A ดับหมด
X10WriteFn('A',X10FN_ALL_UN_OFF);

เช่น  All Units On คืออุปกรณ์ ใน House A ประเภทหลอดไฟ ติดหมด
X10WriteFn('A',X10FN_ALL_UN_ON);

X10FuncExe();   เป็น fn ที่ตรวจสอบว่า ตรงกับแอดเดรสตัวเองหรือเปล่า


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on July 20, 2009, 11:17:12 AM
สวัดดีครับ คือผมมีความสนใจที่จะทำเครื่องรับส่งสัญญาณดิจิตอล ผ่านสายac line
สัญญาณที่จะส่งเป็นสัญญาณจากหัววัดอุณหภูมิsmt-160 แล้วนำสัญญาณนี้ไปใช้ครับ
ผมจะนำX-10lab นี้ไปประยุกต์ได้อย่างไร ขอแค่สัญญาณที่ออกจากเครื่องรับเหมือนสัญญาณ
ที่ส่งเข้ามาจากหัววัดก็เพียงพอแล้วครับ ช่วยแนะนำด้วยครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on July 20, 2009, 04:44:09 PM
ครับการส่งข้อมูลบน AC Line ก็ใช้หลักการเดียวกันกับ X10 ครับ
เพียงแต่หลักการของ X10 เป็นการส่งคำสั่งสั้นๆ เพื่อควบคุมอุปกรณ์ไฟฟ้าเท่านั้น โดยอาศัย ความถี่ไฟบ้านเป็น
สัญญาณนาฬิกา  แต่ก็มีฟังก์ชั่นที่ไว้สำหรับส่งข้อมูลเหมือนกัน เช่น Extended Code
http://www.thaimicrotron.com/X10/X10-MainPage.htm#FnCode

หรือเมื่อเราเข้าใจในหลักการแล้วก็สามารถสร้างโปรโตคอลของเราเองได้


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on July 20, 2009, 05:46:10 PM
แล้ววงจรรับส่ง ของX-10lab นี้สามารถนำไปใช้งานของผมได้เลยไหมครับ แต่ผมไม่ค่อยเข้าใจกับวงจรครับว่าส่งตรงจุดไหนรับจุดไหน เพราะจากวงจรเห็นมีจุดที่ต่อกับไฟac เพียงจุดเดียว ก็เลยงงๆ ครับ
เพราะผมเพิ่งเริ่มศึกษาเรื่องนี้ครับ เรื่องของPower line นี้เป็นเรื่องใหม่สำหรับผมครับ เรื่องของเรื่องคืออาจารย์เขาเพิ่มเข้ามาในโปรเจ็คคิดไม่ถึงเหมือนกันครับว่าจะได้ศึกษาเรื่องนี้ ก็จากที่ค้นหาจากเว็บไซ้ ก็ มีเว็บนี้ละครับที่ให้ความรู้มากที่สุดครับ คุณศมิทธิ์ ช่วยเป็นไกดิ์ให้หน่อยนะครับ ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on July 20, 2009, 07:58:09 PM
ทาง Hardware ผมคิดว่าน่าจะได้เลยครับทาง software อาจจะต้องปรับปรุงบ้างแล้วแต่ ลักษณะโครงงาน  แต่จะต้องทำไว้ 2 ชุดจึงจะทดสอบการรับส่งได้ ตอนนี้กำลังหา วิธีการทำเครื่องมือในการปรับแต่งอยู่ครับ ที่เห็นต่อกับไฟac เพียงจุดเดียว เพราะเป็นการสื่อสารแบบแบบ ฮาล์ฟดูเพลกซ์ (Half Duplex) คือเป็นการส่งและรับข้อมูลแบบสลับกันครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on July 21, 2009, 11:48:53 AM
คุณศมิทธิ์ครับถ้าผมนำวงจรx-10LAB นี้มาทำเป็นตัวส่งและตัวรับ แยกกัน ทำได้อย่างไรครับและต้องมีการปรับเปลี่ยนวงจรอย่างไร จึงจะเหมาะสมกับโครงงานผมครับ ช่วยแนะนำด้วยครับ ตอนนี้ไฟรนก้นแล้วครับ ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on July 21, 2009, 11:19:13 PM
เนื่องจาก X10-Lab เป็นอุปกรณ์ที่ใช้รับ-ส่งข้อมุลผ่าน AC-Line อยู่แล้วครับไม่ต้องเปลี่ยนแปลงอะไร หากทำไว้ 2 ตัวก็จะรับส่งกันได้
ซึ่งการส่งข้อมูลเป็นลักษณะ broadcast ครับ คือทุกตัวจะได้รับข้อมูลเหมือนกันหมด ซึ่งแต่ละตัวจะสนใจข้อมูล เมื่อมีแอดเดรสตรงกับของตัวเองเท่านั้น
ส่วนทาง software ก็ขึ้นอยู่กับลักษณะงานครับ ว่าจะรับส่งข้อมูลอะไร ความยาวเท่าไร บ่อยไหม


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on July 22, 2009, 12:34:15 PM
ขอบคุณครับ ขอบคุณมากมากเลยครับ :) :


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on July 23, 2009, 11:14:32 AM
"ซึ่งแต่ละตัวจะสนใจข้อมูล เมื่อมีแอดเดรสตรงกับของตัวเองเท่านั้น"
ตรงบทความนี้ช่วยขยายความอีกหน่อยได้ไหมครับ ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on July 23, 2009, 06:20:20 PM
การรับ-ส่งข้อมุลผ่าน AC-Line ก็เป็นลักษณะแบบ network เหมือนกันครับ โดยอาจจะแบ่งเป็น Master กับ slave
ตัว Master เช่น  X10-Lab, X10-Keypad ,X10-Clock  ต้องการส่งข้อมูลคำสั่ง ไปยัง ตัวลูกอย่างเช่น A02-ON
อุปกรณ์ทุกตัวก็ได้รับคำสั่งนี้เหมือนกันหมด แต่อุปกรณ์ ที่ถูกเซ็ทแอดเดรสไว้เป็น A02 เท่านั้น จะปฏิบัติตามคำสั่ง
นอกนั้น อุปกรณ์ที่ถูกเซ็ทไว้เป็นแอดเดรสอื่น ก็จะไม่สนต่อคำสั่งนี้ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on July 24, 2009, 04:22:50 PM
x-10lab นี้มีข้อจำกัดของสัญญาณที่จะส่งไหมครับ คือสัญญาณของผมที่จะส่งมีลักษณะดังนี้ครับ
Output:
- เป็น duty cycle = 0.320 + 0.00470*t   (t = temperature in °C)
-  มี   frequency  1 - 4    Khz
-      noise      0.005  °C
- impedance  200   Ohm
 สัญญาณแบบนี้จะมีปัญหาอะไรรึป่าวครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on July 27, 2009, 09:29:59 AM
จากคุณสมบัติที่กล่าวมา เป็นคุณสมบัติของเซนเซอร์ครับ จะต้องใช้ไมโครฯ แปลงเป็นข้อมูลก่อนครับ
แล้วจึงนำข้อมูลนั้นมาส่งอีกทีหนึ่ง อย่างเช่น

http://www.thaimicrotron.com/PIC/CCS/SHT15/SHT15.htm#test


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on July 29, 2009, 05:11:57 PM
จากตัวอย่างโปรแกรมของเซนเซอร์ตัวนี้ นำไปใช้ได้เลยรึป่าวครับ สัญญาณสามารถนำไปส่งผ่านบอร์ดx10-labได้เลยรึป่าวครับขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on July 30, 2009, 09:47:53 AM
เมื่อดูจากโครงสร้างของโครงงานแล้วพอจะสรุปขั้นตอนได้ดังนี้ครับ

1). ศึกษาการทำงานของ เซนเซอร์  และใช้ไมโครฯ แปลงเป็นข้อมูล โดยขั้นแรก อาจส่งข้อมูล ไปยัง PC ผ่าน RS232 ก่อน
2). สร้างอุปกรณ์ที่ใช้สื่อสารบน AC Line (อย่างเช่น X10-Lab) 1คู่ โดยปรับความถี่ให้ตรงกัน
     - โครงสร้างของ Hardware X10-Lab เป็นพื้นฐานของการ รับ-ส่งข้อมูลบน AC-Line สามารถนำไปใช้กับ โปรโตคอลใดๆก็ได้ แต่ผู้ใช้ควรจะมีความรู้มาบ้าง
3). ใช้รูปแบบโปรโตคอลของ X10
     - ตัวส่ง ส่งข้อมูลจากข้อ 1 โดยใช้ใช้ ฟังชั่นของ X10 เช่น  Extended Code (ผมเองก็ยังไม่เคยลอง)
     - ตัวรับ รับข้อมูล แล้วนำไปแสดงผล
4). สร้างโปรโตคอล ขึ้นมาเอง โดยสร้างฟังชั่นในการ รับ-ส่ง ข้อมูลขึ้นมาใหม่ ตามโครงสร้างและขนาดที่ออกแบบไว้


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on August 15, 2009, 07:15:57 PM
สวัดดีครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on August 20, 2009, 08:24:30 AM
สวัสดีครับ..พี่สมิธ   

- ถ้าผมจะใช้บอร์ด dsPIC ตัวนี้ http://www.etteam.com/product/pic/ET-dsPIC33WEB-V1_P-ET-A-00348.html  เป็นตัวควบคุมได้รึป่าวคับ  พอดีว่าผมต้องการให้ควบคุมผ่าน internet อ่าคับ  (ที่ต้องใช้บอร์ดนี้ เพราะว่าผมทำโปรเจคเกี่ยวกับการควบคุมอุปกรณ์ไฟฟ้าและระบบรักษาความปลอดภัยภายในบ้าน โดยควบคุมผ่านทางinternet อ่าคับ)

 - ความถี่พัล ต้องประมาณเท่าไรอ่าคับ ที่จะใส่ในสัญญาณ sin ได้

...ขอบคุณครับ
   


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on August 20, 2009, 04:39:24 PM
น่าจะใช้ dsPIC33WEB-V1 เป็น master แล้วติดต่อผ่าน RS232 มายังโมดูล X10-LAB ดีกว่าครับ
ไม่ต้องเขียนใหม่ทั้งหมด
http://www.thaimicrotron.com/X10/X10LAB/X10Demo2.htm

ความถี่ที่ใช้เป็นคลื่นพาหะบน AC-Line เค้าทดสอบแล้วว่าอยู่ระหว่าง 100K-300K ครับ แล้วใช้ 50 Hz เป็น clock
หากสูงไปกว่านี้สัญญาณจะไปได้ไม่ไกลครับ
ส่วน X10 จะใช้ 120K ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on August 24, 2009, 04:42:49 PM
ขอบคุณคับพี่ ที่ช่วยตอบ... แต่ผมยังมีปัญหาอยุ่เยอะเลย  แล้วผมจะค่อยๆ ถามพี่ไปนะคับ  (แบบว่าโง่มากคับ- -")



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on August 29, 2009, 06:55:04 PM
- ที่ขา C ของ Q1 ผมวัดความถี่ได้ 120kHz.  Vp-p ประมาณ 24 กว่าๆ   Vrms ประมาณ 8 กว่า  ไม่ทราบถูกต้องป่าวคับ
 
- ผมทำตัวรับตัวส่งแล้ว ลองส่งสัญญาณพัล ที่ได้จากวงจรไฟกระพริบ IC 555 ผ่านสาย AC-line 

ผลที่ได้คือที่ตัวรับสามารถรับสัญญาณได้ และไฟกระพริบคับ แต่ตัวทรานซิสเตอร์ 2SD667A มันร้อนมากคับ (ควันขึ้น พังไปเลย) ผมลองเปลี่ยนเป็นเบอร์ 2N5551 ก็ยังร้อนคับ แต่มันยังทนได้ดีกว่า 2SD667A

ส่วนเรื่องการปรับค่า VR1 ผมต้องหมุนปรับไปทางขา 1 ที่ต่อกับขาฺB ของQ2 เกือบจะสุดเลยอ่าคับ มันถึงจะส่งได้(ที่ตัวรับ ไฟกระพริบชัดเจน)
มันก็เลยทำให้ทรานซิสเตอร์ร้อนมาก

ที่ผมทดลองมานี้พอจะใช้ได้มั้ยคับ  แล้วต้องแก้ปัญหาเรื่องทรานซิสเตอร์ที่ร้อนอย่างไรดีคับ...


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on September 02, 2009, 01:33:26 AM
ต้องขอโทษคุณ coldman ด้วยครับที่ตอบช้า เพราะติดงานนะครับ
- ให้ข้อมูลน้อยไปหน่อยครับ คุณ coldman ได้ต่อวงจรตามที่ web ได้ลงไว้ (X10-LAB) และโปรแกรม PIC เสร็จแล้วใช่ไหมครับ ส่วนตัวลูกใช้อะไรครับ หรือว่าต่อไว้ 2 ตัว
- แล้วการต่อวงจรต่ออย่างไรต่อลงโปรโตบอร์ด หรือว่าทำ PCB
- ที่ว่าไฟกระพริบนั้นคือ LED ที่ต่อกับขา RB5 ใช่หรือเปล่าครับ
- แล้วที่ว่า ใช้ IC 555 ส่งพัลซ์ นั้นต่ออย่างไรครับ

(http://www.thaimicrotron.com/X10/X10LAB/X10RX-TX.gif)

- จากรูป ความถี่ 120 KHz จะออกจากขา C ของ Q1 ผ่าน C 103 และ R2K2 (คับปลิ้ง) ไปยังขา B ของ Q2 โดยมี VR 100K เพื่อปรับระดับแรงดัน โดยปกติจะปรับไปที่ขา 1 จนสุด(แรงที่สุด) ยกเว้นเมื่อต้องการให้ ส่งสํญญาณ อย่างต่อเนื่อง เพื่อปรับแต่ง ภาครับตัวอื่น และเพื่อเป็นการต่อขา B ของ Q2 ลงกราวน์ เพื่อป้องกันไม่ให้ ขา B ของ Q1 ลอยในขณะที่ OSC ไม่ทำงาน

ไม่ทราบว่าคุณ coldman ได้อ่านการปรับแต่ง  แล้วกระแสวัดที่จุด J2 ได้เท่าไรครับ
http://www.thaimicrotron.com/X10/X10LAB/X10Lab3.htm#TXADJ

- สัญญาณที่ขา C ของ Q2 เป็นอย่างไรครับวัดหรือยัง
- ทรานซิสเตอร์ 2SD667A จะทนแรงดันได้ 80V และกระแสไม่เกิน 1 A ครับ
- Zener 68V ที่ต่อไว่ที่ขา C กับกราวน์ ก็เพื่อป้องกันแรงดันเกิน
- R 2R2 ต่อไว้ที่ขา E ของ Q2 ก็เพื่อป้อนกลับ ป้องกันไม่ให้กระแสสูงเกินไป
(http://www.thaimicrotron.com/X10/X10LAB/COIL1.PNG)
จากรูปค่าที่วัดได้ที่ขาต่างๆ เมื่อปรับคอยล์ ต่ำสุด และสูงสุด โดยจะมีอัตราส่วน 9:1
* เหตุที่ Q2 ไหม้อาจเกิดจาก
- ค่า coil ต่ำเกินไป (กระแสเกิน) ค่าที่ขา 1,3 จะมีค่าประมาณ 700UH และที่ขา 4,5 จะมีค่าประมาณ 80UH
- ปกติแล้ว OSC จะทำงานช่วงสั้นๆ ไม่ทราบว่าคุณ coldman jump  J1 ไว้หรือครับ
- แล้ว R 2R2 ต่อไว้ที่ขา E ของ Q2 น่าจะไหม้และขาดไปก่อนที่ Q2 จะเสียครับ งงเหมือนกัน



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on September 03, 2009, 01:25:16 AM
ขอบคุณพี่มากคับที่ช่วยตอบคำถามผม...
เริ่มด้วยเรื่อง การทดลองส่งสัญญาณไฟกระพริบนะคับ....เพื่อทดลองวงจรดูว่าสามารถส่งสัญญาณผ่าน AC Line ได้มั้ย?

- ก็มีวงจรภาครับ ภาคส่ง และภาคจ่ายไฟอย่างละชุด (ยังไม่ได้ใช้ภาคควบคุม) ต่อลงโฟรโตบอร์ด ปรับแต่งวงจรได้ตามที่พี่ให้มาเรียบร้อย
- ใช้สัญญาณพัลที่ได้จากวงจรไฟกระพริบ(IC555) เป็นอินพุทเข้าที่ขา 1 ของ PC817 หรือตำแหน่ง RB0 อ่าคับ
- แล้วก็ลองส่งไปยังภาครับดู ระยะห่างของปลั๊คที่เสียบประมาณ 10 เมตรคับ แล้วปรับ VR 100k ไว้ที่กลางๆ ก็ส่งกันได้แล้วคับที่ภาครับไฟกระพริบชัดเจน...(ต่อ LED ไว้ที่ขา 6 ของ 4069)
- แต่ในตอนแรกต้องปรับ R 100k ไปจนสุดขา 1 เลยคับไฟที่ภาครับถึงจะกระพริบ แต่พอใส่ C9 ที่พี่โพสรูปให้ใหม่ ก็เลยปรับ R 100kไว้ที่กลางๆ ก็ส่งได้แล้ว (ไม่รู้จะเกี่ยวกันป่าว - -")  ส่วนทรานซิสเตอร์ 2SD667A หรือ 2N5551 ที่ผมใช้อยู่ตอนนี้มันก็เลยไม่ร้อน ถ้าไม่ปรับ R 100k ไปจนสุดขา 1 ...

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

--- ปกติ J1 จะไม่ได้ jump ไว้ใช่มั้ยคับ มีแต่ J2 เท่าั้นั้นที่ jump ---



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on September 03, 2009, 11:52:04 AM
- การปรับแต่งนั้นสามารถ short J1 ได้เลยครับ(แต่ต้องไม่นานนัก) เพราะเวลาจูน จะได้สังเกตง่าย
- แล้ว R 2R2 ต่อไว้ที่ขา E ของ Q2 ไม่ควรใช้ watt สูงเกินไปครับ เพราะถ้าให้กระแสสูงและนานเกินไป มันจะขาดไปก่อนที่ Q2 จะเสีย
- เวลาใช้งาน VR 100k ปรับไปจนสุดเลย เพราะเราส่งคำสั่งเป็นระยะเวลาสั้นๆ (3 sec) ต่อ1 คำสั่ง
- C9 ร่วมกับ R5 เป็น High pass ครับ (จำเป็นครับ)
- ส่วน code นั้นใช้ได้เหมือนเดิมครับ เพราะไม่ได้ใช้คุณสมบัติพิเศษ อะไรของ MCU ครับ แค่ include ใช้ถูกเบอร์ก็แล้วกัน


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on September 14, 2009, 08:28:43 PM
สวัสดีครับพี่สมิธ...

- ในภาคจ่ายไฟพี่เปลี่ยนรูปที่ -12,+12 เป็น -15,+15 มันจะเอาไปใช้ในส่วนไหนเหรอคับ  แล้วมันแตกต่างกันยังไงเหรอคับ
 
   แล้วผมก็ไม่ได้ใช้หม้อแปลง 12V อ่าคับเพราะค่าแรงดันที่ได้มันเกิน  ผมจึงใช้แค่ 9V ทำให้ได้แรงดัน -12,+12,-5,+5 พอดี


   


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on September 15, 2009, 02:33:09 AM
จากรูป อาจจะดูยากหน่อยเพราะวงจรแบ่งออกเป็น 3 ส่วน สำหรับภาคจ่ายไฟก็คือ
(http://www.thaimicrotron.com/X10/X10LAB/X10PowerZ.gif)

ลองดูแบบภาพรวมนะครับ
(http://www.thaimicrotron.com/X10/X10LAB/SCH_Plane.png)

- วัตถุประสงต์ เราต้องการแรงดัน 5V ให้กับ MCU ,15V ให้กับ OSC และ ,30V ให้กับ 120KHz Driver
- 12VAC (RMS) เมื่อแปลงเป็น VDC โดยผ่านไดโอดและตัวเก็บประจุ ต้องคูณด้วยรูท 2 จะได้ประมาณ 15V ครับ
- เหตุที่เราต้องใช้หม้อแปลง 12V-0-12V  เพื่อแปลงเป็น (+15)-GND-(-15)
- เราจะใช้ +15V - GND กับ Regulator 7805 เพื่อใช้กับ MCU หากใช้ 30V จะทำให้ Regulator ร้อนจัดครับ
-  ส่วนแรงดัน (+5)-GND-(-5) ใช้กับ Opamp เพื่อใช้ตรวจสอบ Zero Crossing
- GND-(-15V) มันก็ตือ  +15V จ่ายให้กับ OSC
-  (+15) (-15) มันก็ตือ  +30V ให้กับ 120KHz Driver ครับ



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on September 15, 2009, 10:41:53 AM
สวัสดีครับพี่ หลังจากหายไปนานเนื่องจากติดงานไม่มีเวลาลองทำ ตอนนี้ ผมทำเสร็จ 2 แต่มันติดต่อกันไม่ แต่ความถี่ที่วัดได้ก็ 120 kHz อยู่นะครับ แต่ไม่รู้ว่าจูนภาครับถูกรึป่าว เลยมีข้อสงสัยครับ ว่า ลาย PCB ตรงที่วงไว้ในรูป มันต้องติดกันรึป่าว มันเป็นตรง R ปรับค่าได้ 100k นะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on September 15, 2009, 08:42:50 PM
ไม่ติดกันครับ สงสัยผมเพิ่มมาที่หลังว่าจะต่อ VR ย่ายไปไว้ที่หลังกล่องจะได้ไม่ต้องเปิดฝาบ่อยๆ เวลา test นะครับ
ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on September 16, 2009, 11:49:39 AM
สวัดดีครับพี่สมิธ คือผมติดปัญหาเรื่องกระป๋อง IF ครับ คือไม่รู้ว่าจะเลือกซื้อกระป๋องเบอร์อะไร ยี่ห้ออะไร เพราะตอนไปซื้อทางร้านเขาถามกลับมาอะครับ  ผม รู้แต่ว่าสีอะไร  แต่ไม่รู้ว่าเบอร์อะไร ยี้ห้ออะไร และกระป๋องแต่ละเบอร์แต่ละยี้ห้อ แต่ละสี มันต่างกันอย่างไรครับ พี่สมิธช่วยแนะนำหน่อยนะครับ หรือชาวสมาชิกช่วยแนะนำก็ได้นะครับ ขอความรู้หน่อยนะครับ  ขอบคุณมากครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on September 16, 2009, 02:36:26 PM
ถ้าได้เป็นยี้ห้อ และเบอร์ ก็ขอขอบคุณมากมากเลยครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on September 16, 2009, 04:31:20 PM
ข้อแตกต่างแต่ละสี ดูใน topic เก่า
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg227#msg227

ผมซื้อที่สิริโภคาบ้านหม้อซอย ES เก่าครับเค้าแบ่งขายเป็นตัวๆ
ส่วนเบอร์ที่เขียนไว้ข้างกระป๋องคือ I402 ไม่ทราบยี่ห้อครับ

รู้สึกหลายท่านจะติดที่คอยล์ เดี๋ยวผมจะบอกวิธีพันคอยล์ ให้ครับ ขอเวลาแป๊บหนึง


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on September 19, 2009, 10:08:15 AM
ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on September 21, 2009, 04:04:58 PM
สวัสดีครับ พี่สมิธ...

- สัญญาณ 120kHz. ที่ไปมอดกับสัญญาณ 220Vac มันเป็นสัญญาณซายน์หรือสัญญาณพัลส์อ่าครับ
- ในcode ส่วนที่เป็น #fuses  มันขึ้นอยู่กับว่าเราใช้ไมโครคอนโทรลเลอร์ตัวไหนใช่มั้ยครับ  ไม่จำเป็นต้องตามที่พี่ให้มา (ผมใช้ dsPIC33)

ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on September 21, 2009, 07:47:25 PM
จะเป็นสัญญาณ sine เล็กๆที่ขี่อยู่บน 50 Hz อีกทีครับ แบบนี้แหละ
(http://www.thaimicrotron.com/X10/Graph/Fig1.png)

แต่เมื่อเรา detect ออกมาแล้วจะเป็นพัลซ์ ที่มี 50 Hz ของไฟบ้านเป็น clock
เนื่องจากไม่ได้ใช้คุณสมบัติพิเศษของ PIC การคอมไพล์ก็กำหนด preprocessor ตาม MCU ที่ใช้ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 14, 2009, 03:01:54 PM
คือว่าผมต้องการกด สวิท ที่ตัวเครื่อง แล้ว ให้มันเป็นฟังชันก์ เปิดทั้งหมด กับ ปิดทั้งหมดผมเลย ใส่ code เป็นอย่างนี้นะครับ
 case KEY_ON:
            X10WriteFn('A',X10FN_ALL_UN_ON);
            //output_high(X10OUT);
            break;
        case KEY_OFF:
            X10WriteFn('A',X10FN_ALL_UN_OFF);
            //output_low(X10OUT); 
            break;
(มันมีสัญญาณที่ขา RA1 นะครับ)แต่ทำไม รีเลย์  ทั้งเครื่องรับและเครื่องส่ง ไม่ทำงานครับพี่ หรือแป็นเพราะผมใส่ code ไม่ถูกต้อง


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 16, 2009, 03:31:43 PM
อ่า... ตอนนี้ติดต่อกันได้แล้ว สามารถสั่งผ่านสวิตช์ได้แล้ว (ข้อผิดพลาดเกินจากผมต่อLEDที่ขา RA1 ทำให้แรงดันตกคร่อมLEDทั้งหมด)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on October 17, 2009, 12:30:49 PM
สวัสดีครับ...
มีคำถามอีกแล้วครับ

- ในภาคส่งอ่าครับ เวลาที่สัญญาณ 120kHz ถูกสร้างแล้วไหลผ่าน Q2 ...ทำไมสัญญาณถึงไหลไปที่ U1 กลับเข้าตัวเองด้วยอ่าครับ  มันมีผลยังไงครับ

- การมอดสัญญาณข้อมูลเข้ากับสัญญาณ120kHz. คือการมอดแบบASK และสัญญาณ120kHz. มอดกับสัญญาณ50Hz.คือแบบ AM ผมเข้าใจอย่างนี้ถูกต้องมั้ยครับ

ตอนนี้ผมกำลังศึกษาโค้ดอยู่ (งงมากมาย - -") ติดอยุ่ที่เรื่องของ eeprom นี้แระครับ..แล้วจะมาขอคำปรึกษาอีกนะครับ  ขอบคุณมากครับ...


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 20, 2009, 12:17:31 AM
ขอโทษที่หายไปนานครับไปเที่ยวงาน china sourcing fair (http://tradeshow.globalsources.com/TRADESHOW/INDIA-ELECTRONICS.HTM?source=TSCCSF_GS_CSFlogo) มาเลยหายไปเกือบอาทิตย์
(http://www.thaimicrotron.com/X10/X10LAB/X10RX-TX.gif)
- การที่สัญญาณที่ถูกส่งผ่าน Q2 แล้วปรากฏกลับมาที่ U1 ถูกต้องแล้วครับเพราะเราใช้คอยล์ L2 เป็นส่วนของภาครับด้วย
- การมอดสัญญาณข้อมูลเป็นการมอดแบบ ASK กับสัญญาณ50Hz ครับแต่ไม่ได้มอดทีดียวทั้งลูก แต่เป็นการมอดเป็นจังหวะๆ ตาม Zero Cossing ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: zodazaa on October 20, 2009, 04:15:24 PM
สวัสดีครับพี่สมิทธิ์

ผมกำลังทำโครงงานเรื่องการวัดกระแสไฟฟ้าโดยส่งข้อมูลผ่านทางสายไฟบนx10 หน่ะครับ

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

ในโครงงานจะมี 2 วงจร คือ
1.ตัววัดกระแส (ตัวนี้จะใช้ PIC ในการ แปลง A2D ก่อนส่งค่าเข้าไปใน x10)
2.ตัวควบคุม (ฝั่งนี้จะใช้ในการจับสัญญาณ X10 ที่ส่งมาตามเวลาที่เราจะกำหนดก่อนที่จะทำการรวมข้อมูลเป็นชุดๆ แล้วทำการส่งไปให้กับ computer ผ่าน RS232 อีกทีหน่ะครับ)

ในการทำงานจะใช้ PIC ของวงจรวัดกระแสทำการส่งข้อมูลผ่าน x10 ไปให้กับตัวควบคุมครับ

อันนี้ผมมีข้อสงสัยหลายข้อตามนี้ครับ

- ไม่รู้จะ design ในส่วนของ  pic ของตัววัดกระแสให้แปลง A2D แล้วส่งออกขาไหนยังไง และต้องมีการเพิ่ม Address ด้วยไหมที่จะทำให้ PIC ส่วนวงจรควบคุม ได้รู้ว่าข้อมูล ณ เวลานั้นๆได้มาจากอุปกรณ์ตัวไหน และข้อมูลได้เริ่มและหมดไปแล้ว เริ่มข้อมูลชุดใหม่

- ปัญหานั้นรวมถึง ตัว pic ในส่วนของตัวควบคุมด้วยครับว่าจะให้รับข้อมูลนั้นมาแล้วส่งเฉพาะข้อมูลนั้นๆไปให้กับ computer ได้ยังไง ??

ตอนนี้ขอ 2 คำถามก่อนนะครับ จริงๆมีเยอะกว่านั้น แหะ ๆ

ขอบคุณมากครับพี่


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 20, 2009, 11:50:22 PM
ตัววัดกระแส AC นั้นต้องใช้หม้อแปลงครับ ซึ่งจะทำให้สามารถแยกแรงดันไฟ AC ออกจากไมโครฯ
- ส่วนของหม้อแปลงก็จะแบ่งเป็น ขด primary และ secondary จำนวนรอบที่พันมีอัตราส่วน N1:N2
- ขด primary เป็นส่วนที่ต่ออนุกรมกับโหลดที่จะวัด (shunt ) โดยขนาดของลวดจะต้องใหญ่หน่อย
- ขด secondary เป็นส่วนที่จะนำมาวัด โดยแรงดันจะได้จากอัตราส่วน V1/V2 =N1/N2 โดยนำแรงดันที่ได้ มาเร็คติไฟร์ เป็นกระแสตรง เข้ากับขา A2D ของไมโครฯ
- นำข้อมูล A2D ที่ได้ (0-255) มาแปลงเป็นหน่วยกระแสไฟฟฟ้า
- ส่วนการส่งข้อมูลก็ให้แปลงหน่วยกระแสไฟฟฟ้า เป็น sttring ก็ได้ ส่งให้กับ PC

ในส่วนของไมโครฯ คงจะมี 2 ส่วน
- ตัวแม่ที่รับข้อมูลจากตัวลูกแล้วส่งค่าไปยัง PC
- ตัวลูกที่ทำหน้าที่วัดกระแสไฟฟ้า

- การรับส่งข้อมูล ตัวแม่จะต้องคอย Polling  ถามตัวลูกแต่ละตัว
- โดยตัวลูกจะมีแอดเดรสประจำตัว โดยเลียนแบบ X10 คือ A-P + No. เช่น A0,A9, C4,C10 ... ได้ 256 ตัว

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


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on October 21, 2009, 11:59:58 AM
สวัสดีครับ...

ได้อ่านข้อความรึยังครับ...ผมขออนุญาตเอา X-10Lab นี้ไปทำเป็นโปรเจคนะครับ แต่ผมจะเพิ่มในส่วนของการควบคุมผ่านอินเตอร์เน็ตด้วย
ผลงานที่ได้ผมจะให้เครดิตท่านพี่สมิธและก็ทางเว็บนะครับ...

มีคำถามครับ...  คือผมไม่ค่อยเข้าใจขั้นตอนการมอดและดีมอดสัญญาณอ่าครับ ตามนี้นะครับไม่รู้ถูกรึป่าว
- สัญญาณข้อมูลดิจิตอล (ไบนารี 1,0) มอดกับสัญญาณ120kHz. ใช้แบบASK เป็นหน้าที่ของL1

- พอได้สัญญาณ120kHz.มาแล้วไปมอดกับสัญญาณ50Hz. ที่L2  ที่พี่บอกว่าเป็นแบบASK ตามจังหวะของZero Crossing ก็คือเหมือนเอาสัญญาณ120kHz. 3ลูกไปแปะไว้บนสัญญาณ50Hz. เพราะว่าความกว้างของพัลส์ของZero Crossingจะเท่ากับความกว้างของสัญญาณ50Hz. (แต่ถ้าไม่มีZero Crossingมันก็มอดกับสัญญาณ50Hz. ได้นี้ครับ จากที่ผมได้ทดลองส่งสัญญาณไฟกระพริบตามที่เคยได้บอกพี่ไปแล้ว)
   ***ประเด็นคือสัญญาณ120kHz.มอดกับ50Hz. ยังไง แบบไหน แล้วระหว่างมีZero Crossingกับไม่มีZero Crossingต่างกันอย่างไร***

- ต่อไปการดีมอดนะครับ...เดียวมาต่อครับ หิวข้าวคร้าบบบบบบบ -_-"


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 21, 2009, 02:40:14 PM
ครับได้อ่าน PM แล้ว
- L1 กับ Q1 เป็น OSC 120KHz ครับ L2 กับ Q2 เป็น Driver ซึ่งปกติ OSC จะ OFF อยู่ จะ ON ก็ต่อเมื่อ RB0 เป็น 1
- การมอดสัญญาณ 120KHz เข้ากับสัญญาณ sine 50 Hz โดยใช้ การตรวจสอบ Zero Crossing (ได้ทั้งขอบขาขึ้นและขาลง) แล้วส่งสัญญาณ 120KHz เป็นเวลา 1ms 3 ลูก แต่ละลูกห่างกัน 120 องศา เพื่อให้ใช้งานได้กับระบบไฟ 3 เฟส เช่น อพาร์ทเมนท์,โรงแรม ,โรงงาน หากไม่ซีเรียส ส่งลูกเดียวก็ได้ครับ
- การใช้ Zero Crossing จะทำให้การรับ-ส่ง แม่นยำมากขึ้นครับ เพราะป้องกันไม่ให้สัญญาณถูกมอด ที่ยอดคลื่น sine เพราะจะทำให้ ตัวป้องกันอย่างเช่น varister, MOV ในอุปกรณ์ไฟฟ้าตัดทิ้งหมด ส่วนภาครับก็จะใช้ Zero Crossing ในการหาข้อมูลเริ่มต้นด้วยครับ
ทำให้ข้อมูลแยกออกมาจาก noise ได้ง่าย เพราะ noise บน AC Line มีมากมายครับ

หากไม่ใช้ Zero Crossing ก็ได้ครับ แต่ต้องกรอง noise ออกเอาเองทาง software ถ้าหากใช้การมอดแบบ FM ก็จะช่วยได้บ้างครับ แต่ก็ต้องเพิ่มภาคส่งกับภาครับ FM เข้าไปอีก ทำให้วงจรซับซ้อนมาขึ้น


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on October 21, 2009, 03:18:54 PM
ต่อครับ...
- สัญญาณ120kHz.ถูกกรองออกจาก50Hz.เมื่อผ่าน  C9และR5 (High Pass)  ก่อนจะเข้าU1 ที่จุดต่อzener 5V มันจะตัดสัญญาณsine120kHz. ให้เป็นสี่เหลี่ยม 5V แล้วเข้า U1 เพื่อกรองเอาสัญญาณข้อมูลจากสัญญาณ120kHz.ตรงช่วงที่ขา10และขา9ของU1(เข้าใจว่าน่าจะเป็น Low Pass)

ตามนี้อ่าคับ  ไม่รู้ว่าเข้าใจถูกต้องรึป่าว...ขอคำชี้แนะด้วยนะครับ   ขอบคุณมากครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 21, 2009, 06:24:51 PM
- เมื่อเป็นภาครับ สัญญาณจะเข้ามาทางขา C ของ Q1 ผ่าน C9 ,R5  (High Pass)  ซึ่งถูกป้องกันแรงดันเกินด้วยซีเนอร์ 5 V เข้ามาทาง U1-1(13,12) ซึ่งทำหน้าที่ขยายสัญญาณเบื้องต้น ให้เอาพุตออกทางขา 12
- ส่วน U1-2 (11,10)  ซึ่งทำหน้าที่ขายสัญญาณอีกต่อหนึ่ง ที่เอาต์พุตของ U1-2 (ขา10) ถูกต่อไว้กับไดโอด และ C6 ทำหน้าที่เป็น Envelope Detector ซึ่งจะตัดสัญญาณ 120 KHz ทิ้งที่นี่เหลือแต่สัญญาณ ดิจิตอล
- สัญญาณที่ได้จะผ่านเข้า U1-3 (9,8) ทำหน้าที่ปรับรูปคลื่นให้คมชัดขึ้น
- U1-4 (5,6) ทำหน้าที่กลับเฟสให้ตรงกับที่เราต้องการ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: coldman on October 22, 2009, 12:06:15 PM
สวัสดีครับ...

ตอนนี้วงจรเสร็จเรียบร้อยใช้งานได้แล้วครับ สามารถควบคุมอุปกรณ์1ตัวต่อ1จุด... ต่อไปก็จะเขียนโค้ดเพิ่มเป็นควบคุมอุปกรณ์3ตัวต่อ1จุด
ขอไปศึกษาโค้ดให้เข้าใจก่อนนะครับ  ติดขัดตรงไหนแล้วจะมาถามอีก รบกวนด้วยนะครับ
ขอบคุณมากครับ...


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 26, 2009, 05:01:51 PM
ถ้าผมเพิ่ม
#rom  0x2100={'A',0x2}        //Init EEPROM
#rom  0x2100={'A',0x3}
#rom  0x2100={'A',0x4}
(มันคือการกำหนดให้ตัวเครื่องมี 3 addressรึป่าวครับ)

และ code ข้างล่างคือ ส่วนที่เปรียบเทียบ address กับฟังชั่นที่สั่ง การปิด-เปิด LOAD ใช่มั้ย
void X10FuncExe(int House,int Number,int Fn)
{
int H,N,P;

   //Get Address form EEPROM House & Number
    H=read_eeprom(0);
    N=read_eeprom(1);

//Private Function
    if(H==House && N==Number)
    {
     switch(Fn)
     {
      case X10FN_ON:                        //ON
        output_high(X10OUT);
        break;
      case X10FN_OFF:                       //OFF
        output_low(X10OUT);
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortA();
          P&=0B00000100;
          if(P==0B00000100)
             X10Write(H,N,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else
             X10Write(H,N,X10FN_STATUS_OFF);
          break;
     }
    }
ดังนั่นถ้าผมจะสั่งให้มัน ควบคุมโหลด(คือ สมมุติว่าเครื่อง มีโหลดคือ X10OUT1,X10OUT2,X10OUT3
แล้วผมจะแยกการควบคุม 1 โหลด ต่อ 1 แอดเดรสยังไงครับ อาจารย์สมิทร์ ช่วยชี้แนะทีครับ)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 26, 2009, 07:59:35 PM
คำสั่ง preprocessor #rom start_address เป็นการบอกคอมไพล์เลอร์ให้เขียนข้อมูล ลงในส่วน eeprom ครับ
โดย PIC 16FXXX จะมี address อยู่ที่ 0x2100
ดูเพิ่มเติมที่ http://www.thaimicrotron.com/CCS-628/EEPROM/InEEPROM.htm

หากกำหนดแบบที่คุณกำหนดตามข้างบน มันจะทับกันเป็น 'A',0x4 ตัวเดียวครับ
ต้องกำหนดแบบเรียงต่อกันไปแบบนี้ครับ
#rom  0x2100={'A',0x2,'A',0x03','A',0x4}
เนื่องจากแอดเดรสมีขนาด 2 ไบท์ การเข้าถึง eeprom ภายในตามต่ำแหน่ง คือ 00,02,04 สำหรับแอดเดรสของอุปกรณ์ 1,2,3 ตามลำดับ

ปกติแล้ว device แต่ละตัวจะมีแอดเดรสประจำตัวค่าเดียว แต่หากต้องการให้มีมากกว่านั้น
ให้กำหนด X10OUT ทั้ง 3  X10OUT1, X10OUT2, X10OUT3

#define X10OUT1          PIN_A2
#define X10OUT2          PIN_??
#define X10OUT3          PIN_??

?? หมายถึงพอร์ตที่ว่าง อย่าลืมเซ็ทเป็นเอาต์พุตด้วย

เพื่อไม่ให้สับสนให้ copy function  void X10FuncExe(int House,int Number,int Fn)
ไปเป็น 3 function
void X10FuncExeADR1(int House,int Number,int Fn)
void X10FuncExeADR2(int House,int Number,int Fn)
void X10FuncExeADR3(int House,int Number,int Fn)


โดยค่ำสังภายในจะต่างกันเล็กน้อยดั้งนี้ครับ
X10FuncExeADR1
   //Get Address form EEPROM House & Number
    H=read_eeprom(0);
    N=read_eeprom(1);

ตรง X10OUT ให้เปลี่ยนเป็น X10OUT1

X10FuncExeADR2
   //Get Address form EEPROM House & Number
    H=read_eeprom(2);
    N=read_eeprom(3);

ตรง X10OUT ให้เปลี่ยนเป็น X10OUT2

X10FuncExeADR3
   //Get Address form EEPROM House & Number
    H=read_eeprom(4);
    N=read_eeprom(5);

ตรง X10OUT ให้เปลี่ยนเป็น X10OUT3


ส่วน case X10FN_STATUS_REQ ให้ตัดทิ้งไปก่อน

ใน function main() ตรง
X10FuncExe(rHouse,rNumber,rFunction);

ให้เปลี่ยนเป็น
X10FuncExeADR1(rHouse,rNumber,rFunction);
X10FuncExeADR2(rHouse,rNumber,rFunction);
X10FuncExeADR3(rHouse,rNumber,rFunction);




Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 26, 2009, 10:50:22 PM
ขอบคุณสำหรับคำชี้แนะครับ อาจารย์สมิทร์ เมื่อถามทาง output แล้ว ทีนี้จะถามทาง inputครับ จากcode
if(Key==1)
     {
       switch(D1)
       {
        case KEY_ON:
            X10WriteFn('A',X10FN_ALL_UN_ON);
            output_high(X10OUT1);
            output_high(X10OUT2);
            output_high(X10OUT3);
            break;

        case KEY_OFF:
            X10WriteFn('A',X10FN_ALL_UN_OFF);
            output_low(X10OUT1);
            output_low(X10OUT2);
            output_low(X10OUT3);
            break;

        case KEY_ON1:
            X10Write('A',02,X10FN_ON);  (ผมต้องการให้แอสเดรส A02 on)
            break;
        case KEY_OFF1:
            X10Write('A',02,X10FN_OFF); (ผมต้องการให้แอสเดรส A02 off)
            break;

           
       }
      SoundPress();
     }
 สมมุติว่าผมจะเพิ่ม สวิทช์ ผมก็เพิ่มเข้าไปในส่วนนี้ได้เลยใช่มั้ยครับ(ผมเข้าใจถูกรึป่าว)
อีกอย่างนะครับ ตรง #define นะครับ ในcodeมันเป็นแบบนี้
มีทั้ง #define SWOFF           PIN_B6
      #define SWON            PIN_B7
แล้วก็
      #define KEY_ON              0x80
      #define KEY_OFF             0x40
(ผมเลือกที่จะ define แบบไหนก็ได้ใช่มั้ยครับ)
สุดท้าย วงจรในภาครับ ภาคส่ง มันเป็น วงจรOSC แบบไหนครับ
ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 27, 2009, 02:02:18 AM
(http://www.thaimicrotron.com/X10/X10LAB/X10Controler.gif)
อธิบายของเก่าก่อนนะครับ ให้ดูจากโค็ดนะครับ การที่เรากำหนด
#define SWOFF           PIN_B6
#define SWON            PIN_B7

ก็เพราะเราใช้ RB7 ,RB6 เป็นปุ่มที่ใช้ควบคุมโหลด
โดย ที่พอร์ตทั้งสองต่อ R pull down 10K ไว้ เมื่อมีการกดปุ่ม บิทนั้นจะเป็น 1
เมื่อเราอ่านพพอร์ต B เข้ามาด้วยฟังช์ชั่น
D1=ReadPortB();
เราจะสนใจบิท ที่ 6 กับ 7 จึงนำข้อมูลที่อ่านได้มา and กับ 0B11000000 (0B หมายถึง ไบนารี)
D1&=0B11000000;
เป็นการกำจัดบิท 0-5
หากค่าที่ได้เป็น 0 แสดงว่าไม่มีการกดคีย์ ให้ออกจากฟังชั่น

หากค่าที่อ่านได้ไม่ใช่ 0 เราก็จะหาต่อว่าเป็นปุ่มใด
หน่วงเวลา แล้วอ่านค่าใหม่ แต่ทีนี้เก็บไว้ในตัวแปร D2 (เป็นการ check debounce)
D2=ReadPortB();
กำจัดบิท 0-5
D2&=0B11000000;

หากค่า D1=D2 แสดงว่าไม่ใช่ bounce หรือ noise
กรณีปุ่มที่ RB7 ถูกกด ค่าจะเป็น 0B10000000  หรือ 0x80
กรณีปุ่มที่ RB6 ถูกกด ค่าจะเป็น 0B01000000  หรือ 0x40
เราจึงกำนดเป็น
#define KEY_ON              0x80
#define KEY_OFF             0x40

ดังนั้นในการตรวจสอบจึงเป็น
       switch(D1)
       {
        case KEY_ON:
            output_high(X10OUT);
            break;
        case KEY_OFF:
            output_low(X10OUT); 
            break;
       }

วิธีนี้เป็นการอ่านเข้ามาทั้งพอร์ต แล้วทำการ mark บิทที่เราสนใจเพื่อตรวจสอบ
แต่ก็เหมาะสำหรับอินพุตทั้งหมดอยู่ในพอร์ตเดียวกัน
กรณีที่อินพุตอยู่กันคนละพอร์ต เช่นบางส่วนอยู่ในพอร์ต A
ให้ใช้ฟังก์ชั่นประเภท ตรวจสอบทีละบิทเช่น value = input (PIN_A3) จะสะดวกกว่า โดยใช้หลักการเดียวกัน

//************************************************************
กรณีของคุณ ต้องใช้ปุ่ม 6 ปุ่มในการ ON/OFF เอาต์พุต 3 ตัว
#define SW1OFF          PIN_P1
#define SW1ON           PIN_P2
#define SW2OFF          PIN_P3
#define SW2ON           PIN_P4
#define SW3OFF          PIN_P5
#define SW3ON           PIN_P6

PIN_P1-PIN_P6 ไป map เอาเองแล้วกันครับ ว่าจะใช้ขาใด

ส่วนค่าของคีย์ ก็ขึ้นอยู่ว่าคุณใช้บิทใด
#define KEY1_ON              0x80
#define KEY1_OFF             0x40
#define KEY2_ON              ??
#define KEY2_OFF             ??
#define KEY3_ON              ??
#define KEY3_OFF             ??

ซึ่งถ้าใช้ปุ่มเยอะๆ น่าจะใช้แบบ Matrix key จะประหยัดพอร์ตกว่าครับ

ส่วนภาค OSC  Q1 กับ L1 เป็นแบบ Armstrong ครับ
ภาครับ L2,C3 เป็นวงจรจูน ครับ U1(4069) ใช้เป็น ภาคขยายสัญญาณ,Envelope Detector,และกลับเฟส ตามลำดับครับ
ดูที่ http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg800#msg800


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 27, 2009, 04:45:24 PM
ขอบคุณสำหรับคำชี้แนะต่างๆนะครับ
ผมมีปัญหาอีกแล้ว คือว่า ผมลอง #include <16F877.h>
แล้วมัน error ครับ มันบอกว่า error ตรง #FUSE unknow keyword 'MCLR'
ยังไงดีละครับอาจารย์


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 27, 2009, 05:35:44 PM
PIC16F877 ไม่มี fuse ตัวนี้ครับ ให้ลบออก แล้วลองคอมไพล์ใหม่


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 27, 2009, 05:37:22 PM
ถ้าผมแก้โดยการตัด MCLR ออกจาก#fuse คือ
#fuses XT,PUT,BROWNOUT,NOWDT,NOPROTECT,NOLVP
แล้วเพิ่ม
#define CMCON   0x1F
กับ
void InitialChip(void) ตัวนี้คือที่เข้าไปแทน
{
#asm
//Disable Comparator features
    CLRF   PORTA         //Clear Port A
    //CLRF   PORTB         //Clear Port B
   MOVLW   0x07         //Turn Comparator off and
   MOVWF   CMCON         //Enable pins for I/O
#endasm

   set_tris_a(0B11110011);
   set_tris_b(0B11000010);
}
เอาไปแทนที่ตัวเดิมคือ
void InitialChip(void)
{
   setup_comparator(NC_NC_NC_NC);   //Input Digital
   output_a(0);
   output_b(0B00000100);
   set_tris_a(0B11110011);
   set_tris_b(0B11000010);
}
มันไม่error ครับ แต่ไม่รู้ว่าถูกรึปาว


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 27, 2009, 05:46:43 PM
ถึงลบ MCLR ออก มันก็ error อยู่ครับตรงนี้แหละครับ
void InitialChip(void)
{
   setup_comparator(NC_NC_NC_NC);   //Input Digital


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 27, 2009, 08:30:33 PM
ใช้ค่ำสั่งนี้แทนได้ครับ
#asm
//Disable Comparator features
    CLRF   PORTA         //Clear Port A
    //CLRF   PORTB         //Clear Port B
   MOVLW   0x07         //Turn Comparator off and
   MOVWF   CMCON         //Enable pins for I/O
#endasm

CCS ก็แปลกครับ ต่างเบอร์ พารามิเตอร์ก็ต่างกันออกไป


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 27, 2009, 08:35:37 PM
สรุปว่าผมทำถูกแล้วใช่มั้ยครับ ที่แทน
void InitialChip(void)
{
#asm
//Disable Comparator features
    CLRF   PORTA         //Clear Port A
    //CLRF   PORTB         //Clear Port B
   MOVLW   0x07         //Turn Comparator off and
   MOVWF   CMCON         //Enable pins for I/O
#endasm

   set_tris_a(0B11110011);
   set_tris_b(0B11000010);
}
ด้วยตัวนี้ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 27, 2009, 08:58:52 PM
ถูกแล้วครับ
เนื่องจาก PIC16F877 CCS ไม่มีฟังก์ชั่น setup_comparator(NC_NC_NC_NC);
แต่ใน PIC16F877A ถึงจะใช้ได้ครับ

ตามความเห็นผม PIC16F877 ไม่ควรใช้แล้วครับมี error เพียบ ถึงแม้จะเปลี่ยนมาใช้ PIC16F877A ก็ยังไม่หมดปัญหา
-ชอบแฮงค์ บ่อยๆ จาก
- เวลาไฟกระชาก
- UART รับข้อมูลจำนวนมากๆ
- Timer, CCP

เอาไว้ทดลองพอได้
ให้เปลี่ยนเป็น PIC16F887 เป็นรุ่นใหม่เลยดีกว่าครับ
หรือพวก PIC18 เช่น PIC18F458



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on October 27, 2009, 09:42:09 PM
ขอบคุณที่แนะนำครับ งั้นผมลองหามาลองดูก่อนละกัน ส่วนการ #include น่าจะเป็นไปทางเดียวกันกับ 16F877ใช่มั้ยครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 27, 2009, 11:30:25 PM
หาเบอร์ไหนได้ ก็ใช้ทดลองไปก่อนครับ จะได้ไม่เสียเวลา
ถ้ามีเวลาค่อยหามาเปลี่ยน


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 02, 2009, 08:10:29 AM
อาจารย์สมิทร์ครับ คือผมมีปัญหาว่าตอนนี้ผมลองต่อ วงจรแล้วใช้ไมโครเป็น 16F877 กับ 18F458 แล้วมันไม่ทำงานครับ คือ เปิดแล้วมีเสียงปิ๊บ อยู่ แต่ไม่สามารถ สั่งให้รีเลย์ทำงานได้ ใช้ code เดียวกันกับที่ให้มาครับ คอมไพล์ผ่านแล้วนะครับผมแนบวงจรมาด้วย (แต่มีเฉพาะการต่อไมโครนะครับ) ขอบคุณล่วงหน้าครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 02, 2009, 05:09:29 PM
อีกอย่างลอง sim ใน proteus ก็ไม่ ทำงานครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 03, 2009, 09:54:27 AM
จาก code ที่แนบมาด้วยนะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: zodazaa on November 03, 2009, 04:53:06 PM
update ความคืบหน้าครับ

ต่อจากเรื่องที่ประยุกต์วัดกระแสไฟแล้วใช้การส่งข้อมูลผ่าน powerline นะครับ

ตอนนี้ผมออกแบบการส่งใหม่โดยให้ตัวลูกส่งข้อมูล startbit 8 bit / data 8 bit / stopbit 8 bit ครับผม

ตอนนี้เกิดปัญหาตรงที่ถ้ามีเครื่องลูกหลายๆเครื่องแล้วให้มันส่ง address ของตัวมันเองไปด้วย  ทีนี้ตัวแม่เวลารับข้อมูลก็จะได้ address ของตัวลูกไปด้วย แต่ไม่รู้ว่าจะออกแบบยังไงให้ตัวลูกหลายๆตัวส่งข้อมูลมาไม่ชนกันดีครับ ?? >> คือว่าต้องออกแบบให้มันมีการส่งข้อมูลแบบ internet พวก request และ ack ด้วยรึเปล่าตรงนี้เลยนั่งคิดๆ อยู่เหมือนกันครับ



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 04, 2009, 07:41:19 PM
I have read all of your questions.
But no time to respond. Because now I'm looking at Exhibition in shenzhen.
See you next week.


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 05, 2009, 08:23:43 AM
อาจารย์ไปจีนเหรอครับ ไงก็จะรอคำตอบนะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 07, 2009, 09:32:31 AM
คือว่าผมอ่าน datasheet ของ 18f458 แล้ว
define portA ที่ 0xF80
define portB ที่ 0xF81
แต่ ส่วน#ROM อ่านแล้วไม่รู้ว่ามันเริ่มที่ตรงไหน
18Fเริ่มที่ 2100 มั้ยครับ(มันเป็นส่วนที่ทำให้picไม่ทำงานรึป่าวครับ)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 07, 2009, 02:32:57 PM
อีกอย่างครับ ทำไง ถึงจะใช้ขา RA4 ของ 18F458ได้ครับ(ให้มันเป็นเอาพุต)
ผมเพิ่ม sw อย่างนี้ ถูกมั้ยครับ(คือมันไม่ตอบสนองเลย)
int ScanKey2(void)
{
int D1,D2,Key;
int Cn;

   Key=0;
   D1=ReadPortD();              //Read again
   D1&=0B11111111;

   if(D1==0)                    //No Key press
    return 0;
   else
   {
    delay_ms(KEYDELAY);         //Delay for test
    D2=ReadPortD();             //Read again
    D2&=0B11111111;
    if(D1==D2)
    {
     Key=1;                     //Key press is normal
     Cn=0;
     do
     {
      //restart_wdt();
      delay_ms(30);
      D2=ReadPortD();           //Read again
      D2&=0B11111111;
      if(Key==1)                //Normal press only
      {
       Cn++;
       if(Cn==100)
       {
        output_low(X10OUT1);
        output_low(X10OUT2);
        output_low(X10OUT3);
        output_low(X10OUT4);
        SoundFn();
        Key=2;                   //Key press is FnKey
        Cn=0;
       }
      }
      //while(D2!=0 && Key==2);   //wait for FnKey Release
     }
     while(D2!=0);              //Wait for Release Key

     if(Key==1)
     {
       switch(D1)
       {
        case KEY_ON1:
            X10Write('A',01,X10FN_ON);
            output_high(X10OUT1);

            break;
        case KEY_OFF1:
            X10Write('A',01,X10FN_OFF);
            output_low(X10OUT1);

            break;
        case KEY_ON2:
            X10Write('A',02,X10FN_ON);
            output_high(X10OUT2);

            break;
        case KEY_OFF2:
            X10Write('A',02,X10FN_OFF);
            output_low(X10OUT2);

            break;
        case KEY_ON3:
            X10Write('A',03,X10FN_ON);
            output_high(X10OUT3);

            break;
        case KEY_OFF3:
            X10Write('A',03,X10FN_OFF);
            output_low(X10OUT3);

            break;
        case KEY_ON4:
            X10Write('A',04,X10FN_ON);
            output_high(X10OUT4);

            break;
        case KEY_OFF4:
            X10Write('A',04,X10FN_OFF);
            output_low(X10OUT4);

            break;
       }
      SoundPress();
     }

    }
   }

 return Key;
ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 08, 2009, 02:48:38 PM
ตอนนี้เริ่มเข้าที่แล้วครับ เหลือแต่เพิ่ม sw นะครับ คือผมจะให้ PORTD ทั้งพอร์ต เ็ป็น สวิตช์ แต่มันไม่เวิคครับช่วยชี้แนะด้วยครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 08, 2009, 03:44:55 PM
ตอนนี้ทำงานทุกอย่าง(simนะครับ)เหลือลองของจิงไม่รู้จะเวิคมั้ยไงจะส่งข่าวครับ ยังมีข้อสงสัยอยู่ของ 18F #rom ตำแหน่งเดียวกันมั้ย


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 09, 2009, 09:04:19 AM
ใช่เิ่ริ่มที่ 8100มั้ยครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 09, 2009, 12:43:08 PM
หายไปนานเลย กลับมาแล้วครับ

สำหรับ PIC18 EEProm address จะอยู่ที่ 0xF00000 การใช้งานเช่น
#rom  0xF00000={'A',0x04}

สำหรับ address ที่จำเป็นของ PIC18
//PIC18F458 ADDRESS
#define  ADCON1  0xFA1
#define  PORTA    0xF80
#define  PORTB    0xF81
#define  PORTC    0xF82
#define  PORTD   0xF83
#define  PORTE   0xF84
#define  LATD    0xF8C
#define  TRISD   0xF95
#define  CMCON   0xFB4

การใช้งาน PORTD เป็นอินพุต digital
ฟังชั่น  setup_adc_ports(NO_ANALOGS); ผมลองใช้แล้วมันไม่ work
ไม่รู้ว่า CCS คอมไพล์เลอร์รุ่นหลังๆ V4 ขึ้นไปจะใช้งานได้หรือยัง

แต่ผมใช้แบบนี้มานานแล้ว OK ตั้งแต่ V3.249
#asm
    CLRF    PORTD
    CLRF    LATD
    MOVLW   0xFF   //PORTD All input digital
    MOVWF   TRISD

    MOVLW   0x07         //Turn Comparator off and
    MOVWF   CMCON         //Enable pins for I/O

#endasm

ส่วน RA4 เป็น Open drain เวลาใช้งาน ต้องต่อ R pullup ซัก 10K ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 09, 2009, 01:43:57 PM
สำหรับคำถามของคุณ zodazaa
การที่มีตัวลูกหลายๆตัวนั้น ตัวแม่จะต้องรู้จักทุกตัว
เพื่อหลีกเหลี่ยงการชนกัน ง่ายที่สุดคือการ polling คือให้ตัวแม่วนถามแต่และตัวครับ
เพราะตัวแม่จะสามารถจัดจังหวะได้ดีกว่า ปล่อยให้ตัวลูกส่งข้อมูลแบบอิสระ
และเนื่องจากการสื่อสารบน ac line จะช้ากว่าการสื่อสารแบบอื่นๆ

ตัวอย่างโปรโตคอล
http://www.thaimicrotron.com/webboard2/index.php?topic=206.0


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 10, 2009, 09:12:00 AM
ขอบคุณที่ตอบคำถามครับอาจารย์ อีกอย่างตอนนี้ผมสามารถใช้งานพอร์ตดี ได้แล้วโดยการใช้codeที่ถามอาจารย์นั่นแหละครับแต่เพิ่มส่วนนี้เข้าไปตอนท้ายของcode ทั้งหมดด้วย
  }

     Key=ScanKey1();
     Key=ScanKey2(); ส่วนที่เพิ่มเข้าไป
     
     if(Key==2)
     {
      output_high(LEDOK);
      printf("Setup Address\r\n");
      SetAddress();
      output_low(LEDOK);
   
ปรากฏว่ามันเวิคครับ
อีกอย่างคือการที่จะใช้พวกแอสซัมบีใน code นี้เราต้องอ้างอิงจาก datasheetใช่มั้ยครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 10, 2009, 09:51:49 AM
พวก code ก็ดูจาก datasheet ครับ
ส่วนวิธีการเขียนภาษา assembly ก็ดูจากหนังสือ แต่ก่อนเคยใช้งานอยู่ครับ แต่พัฒนาค่อนข้างช้า พอ CCS ออกภาษาซีมา เลยลองเล่นดู บางส่วนมีปัญญาหา ก็ลองแทรกโค๊ด assembly ปรากฏว่าใช้ได้ ก็ตัดปะ เรื่อยมาครับ ปัจจุปันก็เลยไม่ได้ไปหาฟังก์ชั่น ของ CCS ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 10, 2009, 05:40:44 PM
ตอนนี้มีปัญหาแล้วครับ คือตอนกด sw มันไม่สามารถทำเป็นแบบระบุแอดเดรสได้ครับไม่รู้จาทำไงดี(มันได้แต่ปิดทั้งหมดกับเปิดทั้งหมด) ผมงงอีกแล้วครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 10, 2009, 05:49:13 PM
อีกอย่างครับ code ตรงนี้
void X10FuncExeADR(int House,int Number,int Fn)
ตรง int House มันต้องเป็น char House รึป่าว


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 10, 2009, 07:12:54 PM
ใน X10Demo2.c มีแต่ฟังก์ชั่น void X10FuncExe(int House,int Number,int Fn) นะครับ
ในกรณีของ CCS ตัวแปร int ,char จะมีขนาด 8 บิทเท่ากันครับ ใช้ร่วมกันได้(อย่างระมัดระวัง)
จริงๆแล้วผมตั้งใจให้เป็น int (ตัวเลข) ครับ คือ 0x41-0x50  แต่กลัวว่านานๆไป เวลาดูจะงง เวลากำหนด ก็เลยใช้ 'A' คอมไพล์เลอร์จะเปลี่ยนให้เป็น 0x41ครับ เช่น
#rom  0x2100={'A',0x04}


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on November 10, 2009, 08:41:24 PM
หวัดดีครับ พี่สมิธ  ตอนนี้ผมได้ต่อวงจรไปเเล้ว 2 ชุดครับ  ปรับความเเต่งความถี่ที่ขา C ของ Q1 ทั้ง 2 วงจรได้ 120kHz ตามที่พี่บอกเเล้ว จากนั้นผมลองเทสตามคุณ Coldman โดยการใช้สัญญาณไฟกระพิบ IC 555 ส่งตามคุณ Coldman เเต่ผลออกมา
led ที่ต่อกับขา 6 ของ U1 ไม่กระพิบ มันติดบ้างเเล้วมันก็ดับหายไปเลย ปรับลดค่า VR ก็ไม่มีสัญญาณจากขา C เเต่ตอนปรับจูนที่ Jump J1 ยังมีสัญญาณอยู่ครับ ผมขอคำเเนะนำหน่อยครับ
         
                ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 11, 2009, 08:11:45 AM
ขอบคุณครับอาจารย์ ตอนนี้ผมเลยคิดว่าน่าจะเป็นเพราะมันไม่สามารถอ่านแอดเดรสจาก eepromได้มากกว่าครับ (ที่มันไม่สามารถสั่งแบบระบุแอดเดรสได้นะ) คือตอนนี้ คอมไพล์เป็น 18F ครับ
ขอตอบคุณ plom นะครับ
ถ้าต่อ jumper j1 แล้วมีสัญญาณที่ขา 6 ของ 4069 (เอาled ต่อไว้มันจะติดค้างเลยนะ) แสดงว่า pc-817 ไม่ทำงานละครับ แต่ถ้ามีสัญญาณที่ขาCของQ1แต่ไม่มีสัญญาณที่ขา 6 ของ 4069 แสดงว่า Q2ไม่ทำงานครับ (ในความเข้าใจของผมนะ)



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 11, 2009, 09:07:23 AM
ผมมีอีกคำถามครับ ใน X10FuncExe เราสามารถกำหนดใน
int H,N,P;

   //Get Address form EEPROM House & Number
    H=read_eeprom(0);
    N=read_eeprom(4);

//Private Function
    if(H==House && N==Number)
 แทนที่จะอ่านจาก eeprom (คือระบุแอดเดรสไปเลยนะครับ)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 11, 2009, 10:44:20 AM
สำหรับ PIC18 เปลี่ยน แอดเดรส EEPROM เป็น 0xF00000 ก็ยังใช้ไม่ได้หรือครับ
ให้ลองศึกษา EEPROM จาก
http://www.thaimicrotron.com/CCS-628/EEPROM/InEEPROM.htm
จะได้ทราบสาเหตุที่แท้จริง
ฟังก์ชั่น X10FuncExe parameter สามารถระบุเป็นค่าคงที่ได้ครับ แต่จะทำให้เปลี่ยนแปลงทีหลังไม่ได้

ขอบคุณ คุณ muiim ครับที่ช่วยวิเคราะห์ปัญญา ให้กับคุณ  plom ด้วย
ส่วนของคุณ plom ที่ต่อไว้ ต่อแบบไหนครับบนโปรโตบอร์ด หรือว่าทำ PCB
หากว่าทำ PCB ได้แก้ไขตรงนี้หรือยังครับ
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg671#msg671

ต้องขอโทษอีกครั้ง ที่ไม่ได้ตรวจให้ละเอียด เพราะทำไว้หลายเวอร์ชั่น ตอนประกอบเห็นว่าน่าจะมีอะไรเพิ่มเติม
แต่แก้เฉพาะที่ PCB ส่วน prototype ไม่ได้ทำใหม่ครับ ใช้โยงสายเอา
ต้องขอขอบคุณ คุณ muiim อีกครั้งที่ช่วยตรวจสอบให้


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on November 11, 2009, 12:57:34 PM
ขอขอบคุณ  muiim  มากครับ ตอนนี้ส่งกันได้แล้วครับ ที่ภาครับLEDที่ขา 6 ของ4069 กระพริบตามสัญญาณของไอซีห้าๆ แต่ต้องปรับค่าVR1ลดลงในช่วงที่ส่งกันระยะไกล(ประมาณ10เมตร) คือว่าถ้ารับส่งกันมากกว่า10เมตรก็ต้องปรับVR1ลดลงอีก ตรงนี้ผมคิดว่าQ2 ต้องพังแน่ครับ เพราะส่งระยะไม่เกิน10เมตรก็ร้อน แล้วแต่ถ้าเสียบเต้ารับเดียวกันก็ไม่ต้องปรับลดVRเลยครับ  แต่สัญญาณที่รับได้ แรงดันจะเหลือประมาณครึ่งหนึ่งของแรงดันที่ส่งไป ตรงนี้จะเพิ่มการขยายของ4069ได้ไหมครับ หรือมีวิธีที่ดีกว่านี้ครับ ช่วยแนะนำด้วยครับ
 ;D ;D ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on November 11, 2009, 01:06:47 PM
ขอเพิ่มอีกหน่อยนะครับ ผมต่อลงโฟโต้บอร์ด 2 ชุดครับ แล้วปรับความถี่ให้เท่ากันคือ120Khz ดูจากการทำงานแล้ว Q2 จะที่งานที่บอร์ดภาคส่งเท่านั้นส่วนภาครับจะไม่ทำงาน(สองบอร์ดต่อเหมือนกันหมดเลยครับ แต่ไม่ได้ใช้ภาคควบคุม) ถ้าผมส่งสัญาณจากภาครับมาหาภาคส่งจะเป็นไปได้ไหมครับ ตรงนี้ผมกำลังจะลองทำครับ แต่ขอคำแนะนำก่อนครับ  ;D :D ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 11, 2009, 06:54:14 PM
เนืองจาก X10-LAB 1.0 ได้ออกแบบมาให้ทำงานทั้งรับและส่งอยู่แล้วครับ แต่เป็นแบบ Half Duplex คือเป็นการส่งและรับข้อมูลแบบสลับกัน
- เมื่อเป็นภาคส่ง L2+Q2,L1+Q1 จะทำงานทั้งหมด
- เมื่อเป็นภาครับ L2+ U1(4069)

ส่วนที่ว่า "แต่สัญญาณที่รับได้ แรงดันจะเหลือประมาณครึ่งหนึ่งของแรงดันที่ส่งไป" นั้นวัดจากที่ไหนครับ
ส่วนที่จะเพิ่มการขยายของ 4069 ซึ่งเอาต์พุตออกมาทางขา 6 นั้นจะเป็นพัลซ์ 0-5V เสมอครับ (ถ้ารับได้) ถ้าไม่ใช้ให้ตรวจภาครับใหม่
หากต่อ LED กับเอาต์พุตที่ขา 6 ควรจะต่ออนุกรมกับ R 1K ครับเอาแค่พอมองเห็นไม่เช่นนั้นจะโหลดเกินไปทำให้แรงดันตก


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 11, 2009, 08:53:14 PM
ผมขอชี้แจงคุณplomก่อนนะครับ เท่าที่ทดลองทำเครื่องนี้มา ผมใช้หม้อแปลง1A ปรับ VR จนสุด ปรากฏว่าไม่ร้อนครับ แต่ผมก็ไม่กล้าปรับไว้นานยกเว้นต้องการให้ส่งได้ไกล ระยะที่เคยทดสอบ 50 - 100 เมตร confirm (ระยะนี้เท่าทีมีสายนะ เวลาที่ใช้ 1 ชม)
อาจารย์ครับขอถามอีกที ถ้าผมกำหนดอย่างนี้ถูกต้องรึป่าว (กำหนดแบบตรงตัวครับ)
void X10FuncExeADR1(int House,int Number,int Fn)
{
int H,N,P;

   //Get Address form EEPROM House & Number
   // H=read_eeprom(0);
   // N=read_eeprom(1);
      H='A' ;
      N= 01 ;


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 11, 2009, 09:00:45 PM
ถามอีกอย่างครับ
#rom  0x2100={'A',0x04}
 ตรง 0x04 เรามองมันเป็นเลขฐาน 16 ใช่มั้ยครับ

แต่ถ้าเปลี่ยนเป็น
#rom  0x2100={'A',4} จะได้มั้ย


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 11, 2009, 11:30:42 PM
เรื่องระยะทาง หากเป็นสายเปล่า ไม่มีโหลดอื่นมาต่ออยู่ตรงกลางจะส่งได้ไกลมากครับ
แต่ถ้ามีโหลด ระยะทางก็จะลดลงไปเรื่อยๆ ยิ่งโหลดอื่นมาก ระยะทางจะสั่นลงครับ
ยิ่งโหลด บางประเภทมี วารีสเตอร์,MOV สำหรับป้องกันไฟเกิน ยิ่งลดฮวบๆ ครับ

ตอบคุณ muiim ได้ทั้งสองกรณีครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 12, 2009, 08:15:37 AM
อาจารย์ครับแล้วกำหนดค่าแบบนี้มันจะได้รึป่าวกำหนดตายตัวไม่แก้ทีหลังนะครับ

Code:
void X10FuncExe(int House,int Number,int Fn)
{
int H,N,P;

   //Get Address form EEPROM House & Number
   // H=read_eeprom(0);
   // N=read_eeprom(1);
      H='A' ;
      N= 0x01 ;


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 12, 2009, 08:38:06 AM

ในฟังก์ชั่น X10FuncExe(); ตัวแปร  H,N สร้างขึ้นมารับ ข้อมูลจาก eeprom ครับ ถ้าไม่ใช้ข้อมูลใน eeprom ก็ตัดออกได้
โดยระบุเป็นค่าคงที่ ในฟังก์ชั่น X10Write(); ได้เลยครับ

int P;
.
.
.
   X10Write('A',1,X10FN_STATUS_ON);



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 12, 2009, 09:51:49 AM
ถ้าอย่างนั่น ทำอย่างนี้รึป่าว ครับ
void X10FuncExe(int House,int Number,int Fn)
{
int P;

 
//Private Function
    if(House== 'A' && Number==1)
    {
     switch(Fn)
     {
      case X10FN_ON:                        //ON
        output_high(X10OUT);
        break;
      case X10FN_OFF:                       //OFF
        output_low(X10OUT);
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortA();
          P&=0B00000100;
          if(P==0B00000100)
             X10Write(H,N,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else
             X10Write(H,N,X10FN_STATUS_OFF);
          break;
     }
    }

//ALL Unit Function
   switch(Fn)
   {
    case X10FN_ALL_UN_OFF:                  //All Units Off
    case X10FN_ALL_LG_OFF:                  //All Lights Off
      output_low(X10OUT);
      break;

    case X10FN_ALL_UN_ON:                   //All Units On
      output_high(X10OUT);
        break;
   }

}
คือว่าผมงง กับที่อาจารย์บออกนะครับ
int P;
.
.
.
   X10Write('A',1,X10FN_STATUS_ON);


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 12, 2009, 11:34:49 AM
ต้องแก้ที่ฟังชั่น X10Write ด้วยครับ

void X10FuncExe(int House,int Number,int Fn)
{
int P;

 
//Private Function
    if(House== 'A' && Number==1)
    {
     switch(Fn)
     {
      case X10FN_ON:                        //ON
        output_high(X10OUT);
        break;
      case X10FN_OFF:                       //OFF
        output_low(X10OUT);
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortA();
          P&=0B00000100;
          if(P==0B00000100)
             X10Write('A',1,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else
             X10Write('A',1,X10FN_STATUS_OFF);
          break;
     }
    }
.
.
.




Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 12, 2009, 11:37:19 AM
อ๋อ ขอบคุณครับอาจารย์ ไงเดี๋ยวเอาไปลองดูก่อนครับ ได้ผลยังไงเดี๋ยวมาบอก ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 12, 2009, 02:52:27 PM
ตอนนี้ผมสามารถควบคุมแบบแยกแอดเดรสได้แล้ว(กำหนดค่าแบบตรงตัวไม่ใช้ eeprom) แต่มีปัญหาที่ ฟังชันก์ตรวจสอบสถานะครับ มันตรวจสอบได้แอดเดรสเดียวจากทั้งหมด 4แอดเดรส ขออาจารย์ช่วยชี้แนะอีกทีครับ ขอบคุณครับ
Code:
  UARTReady();
    //Check X10 Line Status
     if(X10READY())
     {
      if(X10Read())
      {
       switch(rFunction)
       {
        case 1:
        case 2:
            printf("(Fn%02d)-%s\r\n",rFunction,StrFunc);
            break;
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
        case 9:
        case 10:
        case 11:
        case 12:
        case 13:
        case 14:
        case 15:
            //printf("%X %X %X  ",HouseCode[1],KeyCode[1],kType[1]);
            printf("%c%02d(Fn%02d)-%s\r\n",rHouse,rNumber,rFunction,StrFunc);
            break;

        default:
            printf("UnKnow Function\r\n");
       }
       X10FuncExeADR1(rHouse,rNumber,rFunction);
       X10FuncExeADR2(rHouse,rNumber,rFunction);
       X10FuncExeADR3(rHouse,rNumber,rFunction);
       X10FuncExeADR4(rHouse,rNumber,rFunction);
       SoundOK();
      }
     }
น่าจะมีปัญหาช่วงนี้นะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 12, 2009, 03:13:01 PM
ผมเอาcode ในส่วน แอดเดรส มาให้ดูด้วยครับ
Code:
void X10FuncExeADR1(char House,int Number,int Fn)
{
int H,N,P;

   //Get Address form EEPROM House & Number
   // H=read_eeprom(0);
   // N=read_eeprom(1);
      //H='A';
      //N= 01 ;


//Private Function
   // if(H==House && N==Number)
   if(House=='A' && Number==1)
    {
     switch(Fn)
     {
      case X10FN_ON:                        //ON
        output_high(X10OUT1);
        break;
      case X10FN_OFF:                       //OFF
        output_low(X10OUT1);
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortA();
          P&=0B00000100;
          if(P==0B00000100)
             X10Write('A',1,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else
             X10Write('A',1,X10FN_STATUS_OFF);
          break;
     }
     //ALL Unit Function
    }
     switch(Fn)
   {
    case X10FN_ALL_UN_OFF:                  //All Units Off
    case X10FN_ALL_LG_OFF:                  //All Lights Off
      output_low(X10OUT1);
      output_low(X10OUT2);
      output_low(X10OUT3);
      output_low(X10OUT4);
      break;

    case X10FN_ALL_UN_ON:                   //All Units On
      output_high(X10OUT1);
      output_high(X10OUT2);
      output_high(X10OUT3);
      output_high(X10OUT4);
        break;
   }

}
    //Execute Function code
void X10FuncExeADR2(char House,int Number,int Fn)
{
int H,N,P;

   //Get Address form EEPROM House & Number
   // H=read_eeprom(2);
   // N=read_eeprom(3);

//Private Function
   // if(H==House && N==Number)
   if(House=='A' && Number==2)
    {
     switch(Fn)
     {
      case X10FN_ON:                        //ON
        output_high(X10OUT2);
        break;
      case X10FN_OFF:                       //OFF
        output_low(X10OUT2);
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortA();
          P&=0B00001000;
          if(P==0B00001000)
             X10Write('A',2,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else
             X10Write('A',2,X10FN_STATUS_OFF);
          break;
     }
    }
    //ALL Unit Function
   switch(Fn)
   {
    case X10FN_ALL_UN_OFF:                  //All Units Off
    case X10FN_ALL_LG_OFF:                  //All Lights Off
      output_low(X10OUT1);
      output_low(X10OUT2);
      output_low(X10OUT3);
      output_low(X10OUT4);
      break;

    case X10FN_ALL_UN_ON:                   //All Units On
      output_high(X10OUT1);
      output_high(X10OUT2);
      output_high(X10OUT3);
      output_high(X10OUT4);
        break;
   }

}
    //Execute Function code
void X10FuncExeADR3(char House,int Number,int Fn)
{
int H,N,P;

   //Get Address form EEPROM House & Number
   // H=read_eeprom(4);
   // N=read_eeprom(5);

//Private Function
   // if(H==House && N==Number)
   if(House=='A' && Number==3)
    {
     switch(Fn)
     {
      case X10FN_ON:                        //ON
        output_high(X10OUT3);
        break;
      case X10FN_OFF:                       //OFF
        output_low(X10OUT3);
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortE();
          P&=0B00000001;
          if(P==0B00000001)
             X10Write('A',3,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else
             X10Write('A',3,X10FN_STATUS_OFF);
          break;
     }
    }

//ALL Unit Function
   switch(Fn)
   {
    case X10FN_ALL_UN_OFF:                  //All Units Off
    case X10FN_ALL_LG_OFF:                  //All Lights Off
      output_low(X10OUT1);
      output_low(X10OUT2);
      output_low(X10OUT3);
      output_low(X10OUT4);
      break;

    case X10FN_ALL_UN_ON:                   //All Units On
      output_high(X10OUT1);
      output_high(X10OUT2);
      output_high(X10OUT3);
      output_high(X10OUT4);
        break;
   }

}
void X10FuncExeADR4(char House,int Number,int Fn)
{
int H,N,P;

   //Get Address form EEPROM House & Number
   // H=read_eeprom(6);
   // N=read_eeprom(7);

//Private Function
   // if(H==House && N==Number)
   if(House=='A' && Number==4)
    {
     switch(Fn)
     {
      case X10FN_ON:                        //ON
        output_high(X10OUT4);
        break;
      case X10FN_OFF:                       //OFF
        output_low(X10OUT4);
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortA();
          P&=0B00100000;
          if(P==0B00100000)
             X10Write('A',4,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else
             X10Write('A',4,X10FN_STATUS_OFF);
          break;
     }
    }

//ALL Unit Function
   switch(Fn)
   {
    case X10FN_ALL_UN_OFF:                  //All Units Off
    case X10FN_ALL_LG_OFF:                  //All Lights Off
      output_low(X10OUT1);
      output_low(X10OUT2);
      output_low(X10OUT3);
      output_low(X10OUT4);
      break;

    case X10FN_ALL_UN_ON:                   //All Units On
      output_high(X10OUT1);
      output_high(X10OUT2);
      output_high(X10OUT3);
      output_high(X10OUT4);
        break;
   }

}


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 12, 2009, 08:02:15 PM
อาจารย์ครับผมเพิ่มตัวนี้เข้าไปในฟังชันก์ X10FuncExe  มันจะแสดง ออกน่าจอมั้ยครับ
if(House=='A' && Number==1)
 {
     switch(Fn)
     {
case X10FN_STATUS_ON:
         printf("A01 = STATUS ON\r\n");
         break;
case X10FN_STATUS_OFF:
         printf("A01 = STATUS OFF\r\n");
         break;
      }
}


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 13, 2009, 11:01:44 AM
สักครูนะครับ วันนี้มีประชุมหลายที่ครับ รู้สึกว่า ฟังก์ชันค่อนข้างจะซ้ำซ้อนมาก
เดี๋ยวต้องใจเย็นๆ ทำความเข้าใจไปกับคุณ muiim ด้วย


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 13, 2009, 12:49:23 PM
ครับอาจารย์ อีกอย่างผมใช้แอดเดรสจาก eeprom ได้แล้วครับ ของ 18F458 เนี้ย มันจะเขียนไว้ตำแหน่งของเลขคู่ครับ
คือ #rom  0xf00000={'A',0x1,'A',0x02,'A',0x03,'A',0x04} ก็จะเป็น ตำแหน่ง 0,2,4,6,8,A,C,E กว่าจะรู้เรื่องขอบคุณบทความของอาจารย์อีกทีครับ แล้วก็ โปรแกรม PICkit ด้วย ที่ทำให้เห็นว่ามันเขียนลงตำแหน่งอะไร(งงตั้งนาน)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 13, 2009, 05:22:35 PM
ไม่ใช่ว่ามันจะเขียนไว้ที่เลขคู่หรอกครับ บังเอิญ Record size มันเท่ากับ 2 มันเลยลงที่เลขคู่
การเก็บข้อมูลลง eeprom ซึ่งมีขนาด 8 บิท โดยการจัดเก็บ จะเก็บเรียงต่อกันไป
ในกรณีของเราใน 1 แอดเดรสจะมีข้อมูล 2 ไบท์เช่น 'A',01 หรือ 0x41 0x01
ดังนั้นใน 1 Record จะมีขนาด 2 ไบท์ หากเก็บข้อมูลต่อๆ กันไปการเข้าถึงข้อมูลหาได้จาก

eepromADR = RecordSize*RecNo; โดย RecNo มีค่าเท่ากับ 0-n
ในกรณีของเรา RecordSize = 2
ดังนั้นการหาแอดเดรสของ eeprom ที่ RecNo ต่างๆ คือ
2*0 = 0
2*1 = 2
2*2 = 4
2*3 = 6
2*4 = 8
2*5 = 10 (0x0A)
2*6 = 12 (0x0C)
2*7 = 14 (0x0E)


ซึ่งจะเป็นตำแหน่งตามที่คุณ muiim สังเกตมา
แล้ว ตกลงจะไปทิศทางไหนครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 13, 2009, 06:06:07 PM
ขอบคุณอาจารย์ที่ช่วยให้ความเข้าใจเพิ่มเติมครับ ผมตกลงใจแล้วว่าจะไปในทิศทาง ของeeprom ครับ(แต่จริงๆก็อยากจะทำความเข้าใจทั้งสองอย่างนั่นแหละครับ อีกทางหนึ่งก็น่าจะทำความเข้าใจได้ง่ายกว่ามั้ย ???) ยังไงก็ขอบคุณอาจารย์สมิทร์อีกทีครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 15, 2009, 01:25:45 PM
ตอนนี้สามารถตรวจสอบสถานะแอดเดรสต่างได้แล้วครับ แต่ผมมีปัญหาใหม่คือ(18F458)
case X10FN_STATUS_REQ:                     //12 ON ,13 OFF       
          P=ReadPortE();
          P&=0B001;
          if(P==0B001)         
             X10Write(H,N,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else       
             X10Write(H,N,X10FN_STATUS_OFF);
          break;
ฟังก์ชันนี้มันไม่ทำงานครับ(ประมาณว่ามันอ่าน พอร์ต E ไม่ได้ครับ )
ผมให้ พอร์ต E0 เป็น out put มันทำงานได้ แต่พอให้มันอ่าน พอร์ตเพื่อใช้ฟังก์ชัน 15 มันไม่ทำงาน


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 17, 2009, 11:50:19 AM
จากข้อมูลในคำถาม เข้าใจว่าใช้ RE0 เป็นเอาต์พุต

1) สำหรับการใช้งาน PORTD จะอยู่ที่การกำหนด 3 ส่วนนี้ครับ
#define X10OUT   PIN_D0
#define  PORTD   0xF83

char ReadPortD(void)
{
 #asm
    movf  PORTD,0     //mov to W
    movwf _RETURN_
 #endasm
}

2) การเซ็ท I/O set_tris_d(0B00000000);    เป็นเอาต์พุต

3) การใช้งาน
...
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortD();
          P&=0B00000001;
          if(P==0B00000001)
             X10Write(H,N,X10FN_STATUS_ON);      //X10Write(H,N,12);
          else
             X10Write(H,N,X10FN_STATUS_OFF);
          break;
...


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 18, 2009, 08:26:03 AM
ขอบคุณอาจารย์ที่ตอบคำถามครับ
สาเหตุที่ผมอ่าน PortEไม่ได้น่าจะมาจากสาเหตุที่ผมDefine port ผิด(เอะอะ ถามอยากเดียว ลืมเช็ค code ตัวเอง ) อีกอย่างครับ คือผมมตรวจสอบสถานะการทำงานด้วยการที่ ให้เครื่องหนึ่งทำเป็นตัวส่ง อีกเครื่องเป็นตัวรับ ตัวส่งก็ตัด ฟังชั่น ในส่วน
 case X10FN_STATUS_REQ://12 ON ,13 OFF
          .
          .
แล้วเพิ่มส่วนนี้เข้าไป       
      case X10FN_STATUS_ON:
         printf("A04 = STATUS ON\r\n");
         break;
      case X10FN_STATUS_OFF:
         printf("A04 = STATUS OFF\r\n");
         break;
มันก็ทำให้สามรถตรวจสอบแบบหลายแอดเดรสได้(อาจารย์ช่วยแนะนำเพิ่มเติมด้วยครับ) ขอบคุณล่วงหน้าครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on November 18, 2009, 02:48:55 PM
สวัดดีครับพี่สมิธ ตอนนี้อึนมากเลยครับ  คือว่าผมจะต้องทดสอบตัวรับ ตัวส่ง ให้ได้ผลอย่างไรครับ ถึงจะแน่ใจได้ว่าสามารถนำไปใช่ส่งข้อมูลในโมดูลอื่นๆได้ครับ ช่วยแนะนำหน่อยนะครับ ตอนนี้เรียนหนักมากเลยครับพี่ ขอบคุณที่เป็นอาจารย์ที่ปรึกษาให้ครับ ขอบคุณมากครับ :) :) :)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on November 19, 2009, 08:32:05 AM
ขอถามคุณ plom หน่อยละกันนะครับ
ในคำว่า โมดูลอื่นๆ นะ มีความหมายเกียวกับอะไร จะใช้x10 lab เป็นเครื่องปลายทางเพื่อ ควบคุมโหลด(หลอดไฟ ,พัดลม ...) หรือใช้เป็นตัวกลางในการสื่อสารระหว่าง โมดูล ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 19, 2009, 11:59:39 AM
ขอโทษครับที่ตอบช้าตอนนี้งานค่อนข้างวุ่นนะครับ
ตอบคุณ muiim  ในส่วนที่ ตัด case X10FN_STATUS_REQ: ออกไปแล้วเพิ่ม
ในส่วน การแสดงผล "A04 = STATUS ON" ไม่เห็นมีส่วนตรวจสอบ hardware เลยครับ อย่างเช่น
          P=ReadPortD();
          P&=0B00000001;

สำหรับฟังก์ชั้นที่คุณ muiim  สร้างขึ้นมา
       X10FuncExeADR1(rHouse,rNumber,rFunction);
       X10FuncExeADR2(rHouse,rNumber,rFunction);
       X10FuncExeADR3(rHouse,rNumber,rFunction);
       X10FuncExeADR4(rHouse,rNumber,rFunction);

เป๋นการ pump code เหมาะสำหรับทดสอบเท่านั้นครับ ไม่เหมาะสำหรับนำไปใช้งานเพราะมีส่วนที่ซ้ำซ้อนค่อนข้างมาก และจะทำให้โค๊ดใหญ่ด้วย

ในกรณีของคุณ muiim  ส่วนของฟังก์ชั่นจะแบ่งออกเป็น 4 ประเภท
- ส่วนตรวจสอบแอดเดรส
- ส่วนตรวจสอบคำสั่ง
- ส่วนควบคุมเอาต์พุต
- ส่วนแสดงผล

ส่วนตรวจสอบแอดเดรส
ในกรณีนี้มีแอดเดรส A01,A02,A03,A04

จะเห็นว่าแอดเดรสประกอบไปด้วย House และ Number
เราจะตรวจสอบจากใหญ่ไปเล็ก
ในส่วนการตรวจสอบเงื่อนไข หากมีเงื่อนไขเดียวก็ใช้ if หากเงื่อนไขมีมากกว่า 1 ให้ใช้ switch
ในกรณีที่ไม่ใช้ eeprom

ในฟังก์ชั่น X10FuncExe()

//Private Function
//ส่วนตรวจสอบแอดเดรส ส่วนที่1
    if(H=='A' && N==1)
    {
//ส่วนตรวจสอบคำสั่ง
     switch(Fn)
     {
      case X10FN_ON:                        //ON
//ส่วนควบคุมเอาต์พุต
        output_high(X10OUT1);
        break;
      case X10FN_OFF:                       //OFF
//ส่วนควบคุมเอาต์พุต
        output_low(X10OUT1); 
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortD();
          P&=0B00000001;
//ส่วนควบคุมเอาต์พุต และแสดงผล
          if(P==0B00000001)
          {
           X10Write(H,N,X10FN_STATUS_ON);      //X10Write(H,N,12);
           printf("A01 = STATUS ON\r\n");
          }
          else
          {
           X10Write(H,N,X10FN_STATUS_OFF);
           printf("A01 = STATUS OFF\r\n");
          }
          break;
     }
    }

//ส่วนตรวจสอบแอดเดรส ส่วนที่2
 if(H=='A' && N==2)
    {
     switch(Fn)
     {
      case X10FN_ON:                        //ON
        output_high(X10OUT2);
        break;
      case X10FN_OFF:                       //OFF
        output_low(X10OUT2); 
        break;
      case X10FN_STATUS_REQ:                     //12 ON ,13 OFF
          P=ReadPortD();
          P&=0B00000010;
          if(P==0B00000010)
          {
           X10Write(H,N,X10FN_STATUS_ON);      //X10Write(H,N,12);
           printf("A02 = STATUS ON\r\n");
          }
          else
          {
           X10Write(H,N,X10FN_STATUS_OFF);
           printf("A02 = STATUS OFF\r\n");
          }
          break;
     }
    }
.
.
.
ให้ทำจนครบ 4 address ในแต่ละส่วนให้แ้ก้ไขในส่วนที mark เป็นสีแดงครับ
โค็ดอาจจะเขียนรวมให้กระชับมากกว่านี้แต่จะดูยากครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 19, 2009, 08:53:58 PM
ตอบคุณ plom
การที่คุณทำภาครับและภาคส่ง โดยใช้ IC555 ทำให้ภาคส่งๆ เป็นพัลซ์
เมื่อต่อ LED ที่ภาครับ แล้วมันกระพริบตามจังหวะที่ IC555 ทำงานก็ถือว่ารับส่งกันได้แล้วครับ
โดยการที่ LED ติดถือว่าเป็นข้อมูล "1" ต่อไปคุณก็เอา IC555 ออก แล้วนำ MCU มาต่อแทน ทั้งในภาครับและภาคส่ง
และทำการทดสอบส่องข้อมูล 1 ไบต์ก่อน เช่น 'A' = 0x40 = ไปนารี 0100 0001
วิธีการส่งแบบ MSB หรือส่งบิทสูงไปก่อน D7,D6,D5...D0  เช่นส่ง 0 1 0 0 0 0 0 1
ส่วนในภาครับ ก็รับข้อมูลที่ละบิต เมื่อครบ 8 บิท ก็ให้แสดงค่าออกมา

X10-LAB ออกแบบมาเพื่อ ศึกษาการสื่อสารบน AC Line หรือ Power Line Carrier (P.L.C.)
โดยยกตัวอย่างมาตรฐาน X10 ขึ้นมา คุณน่าจะทำตามให้ได้ก่อน เพราะ hardware ก็เป็นลักษณะเดียวกันกับการสื่อสารด้วย AC Line ประเภทอื่นๆ
เมื่อคุณเข้าใจแล้ว จะดัดแปลงไปใช้งานอื่น จะง่ายขึ้นครับ
ดีกว่าที่คุณจะตัดมาเพียงบางส่วน แล้วมาคิด format  และ protocol  เอง นั้นคือคุณจะเริ่มจากศูนย์

ใน AC Line มี noise มากมาย คุณจะรู้ได้อย่างไรว่าอันไหนเป็น noise อันไหนเป็นข้อมูล
แล้วการตรวจสอบข้อผิดผลาดของข้อมูล จะทำด้วยวิธีใด
ใน X10 จะแยก noise กับข้อมูลด้วย start bit และตรวจสอบข้อมูลด้วย compliment 

ตัวอย่าง format  และ protocol ดูที่ topic
http://www.thaimicrotron.com/webboard2/index.php?topic=206.msg644#msg644


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on November 22, 2009, 09:26:34 PM
ถึงคุณ muiim ครับ คือผมจะทำเครื่องวัดอุณหภูมิครับ คือสัญญาณที่ได้จากจุดวัดจะต้องผ่านสายAC ก่อน แล้วจึงจะนำไปแสดงค่าอุณหภุมิที่จอแสดงผล ครับ คือตอนนี้ผมกำลังศึกษาการส่งข้อมูลและพิจารณา หัววัดอุณหภุมิอยู่ครับว่าอันไหนจะส่งผ่านสัญญาณได้ง่ายที่สุด(ไม่ยุ่งยากมากในการส่งผ่านสายAC)ระหว่าง SMT160-30 กับ SHT11 ซึ้งเป็นตัววัดอุณหภูมิทั้งคู่ แต่ที่ผมคิดไว้คือผมจะใช้ SHT11 เพราะในเวฟนี้มีข้อมูลให้เยอะเลยครับ ขอคำแนะนำด้วยครับ และขอขอบคุณพี่สมิธเป็นอย่างสูงที่คอยบอกขั้นตอนการทดลองให้ครับ ขอบคุณครับ:D :D :D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on November 23, 2009, 12:53:26 PM
ถึงพี่สมิธ การทดสอบส่งข้อมูลที่พี่แนะนำ โดยใช้ โมดูลนี้ เชื่อมต่อกับคอมพิวเตอร์ให้แสดงค่าออกมา ที่หน้าจอ PC แสดงผลผ่าน RS232 ตามโมดูล X-10lab นี้เลยใช้ไหมครับ ผมเข้าใจอย่างนี้ถูกต้องรึป่าวครับ ??? ??? ???


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on November 23, 2009, 04:25:01 PM
ใช่ครับเพราะ X10 LAB เป็นทั้งตัวส่งและตัวรับอยู่แล้ว ให้รับค่าแล้วแสดงผลออกทาง RS232 ก่อน ได้แล้วคุณค่อยดัดแปลงไปทำอย่างอื่น


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on November 25, 2009, 10:37:07 AM
ขอบคุณครับ :) :) :)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on December 09, 2009, 06:18:04 PM
สวัสดีครับพี่สมิธ  ตอนนี้ผมได้ต่อไมโครทั้งภาครับเเละภาคส่งเเล้วครับ ในส่วนของการเเสดงผลที่มอนิเตอร์นี้ จะแสดงได้อย่างไรครับ  และพี่ช่วยเขียนโค้ดโปรแกรมในส่วนของภาคส่ง และภาครับ ที่จะนำมาโปรแกรมลงMCU ขั้นต้นตามที่พี่แนะนำให้หน่อยนะครับ  เริ่มไม่ถูกจริงๆครับ ผมใช้PIC 16f628 ทั้งภาครับ ภาคส่ง ครับ  :'( :'( :'(


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on December 14, 2009, 12:47:37 AM
ติดธุระไปต่างจังหวัดซะนานเลยครับ
ที่คุณ plom ว่า ได้ต่อไมโครทั้งภาครับเเละภาคส่งเเล้ว นั้นตัดต่อวงจรออกมาทำเอง หรือว่าเหมือนกับ X10 LAB ครับ
หากเหมือนกับ X10 LAB ตัวอย่างที่ให้ก็ค่อนข้างจะสมบูรณ์ แล้วนะครับ ทั้ง TX,RX Zerocossing อีกทั้งมีการแสดงผลที่ได้รับออกทาง RS232 ด้วย


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on December 14, 2009, 06:35:34 PM
สวัดดีครับ  คือผมทำตามX-10LAB เลยครับ แต่ไม่ได้ต่อชุดPANEL และชุด รีเลย์ ครับ  ผมต่อเฉพาะตัว MCU ทั้งภาครับ ภาคส่ง  ทั้งสองบอร์ดต่อเหมือนกันทุกอย่างครับ  วิธีที่ผมทดลองมีดังนี้ครับ(แบบว่าลองผิด ลองถูกนะครับ)
1. ผมนำโค้ด EX_X10o.C  เบิร์นลงMCU ที่อยู่ในบอร์ดที่ผมเอาเป็นภาคส่ง  แต่ไม่ได้ต่อ  RS232 นะครับ
2. ผมนำโค้ด X10Mon2.C เบิร์นลง MCU ที่อยู่ในบอร์ดที่ผมเอาเป็นภาครับ  และต่อ RS232 เข้าPC หวังให้เป็นภาครับและแสดงผล
   ตาม x-10LAB ครับ เพื่อให้แน่ใจว่า ภาค AC Line ใช้งานได้ ครับ  แต่ผลออกมาไม่มีอะไรเกิดขึ้นเลยครับ ไม่มีข้อความใดๆขึ้นที่Serial Port Monitor เลยครับ  ก็เลยโพสขอคำแนะนำจากพี่สมิธ  พี่ช่วยแนะนำด้วยนะครับ ผมไม่รู้ว่าที่ผมทำมันถูกหรือผิดตรงไหนบ้าง (ขอบคุณครับ)
ในส่วนของโค้ดโปรแกรมของภาคส่ง และภาครับ ที่จะนำมาโปรแกรมลงMCU ที่จะนำมาทดลองขั้นต้นตามที่พี่แนะนำผมก็เริ่มไม่ถูกจริงๆครับ   
ขอขอบคุณพี่สมิธ มากมากครับ ที่เป็นอาจารย์ที่ปรึกให้ผมมาตลอด ขอบคุณ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on December 15, 2009, 01:35:11 AM
ที่คุณ plom บอกว่าทำตาม X-10LAB นั้นได้ทำ PCB หรือเปล่าครับ แล้วดูข้อผิดผลาดที่นี่หรือยัง
http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg671#msg671
ส่วนที่แก้ไขแล้วดูที่
http://www.thaimicrotron.com/X10/X10LAB/X10LabPCB.pdf

คุณ plom คงไม่ได้ update ซะนาน
EX_X10o.C เป็น code เก่าเมื่อ 2 ปีที่แล้วปัจจุบันเป็น X10Demo2.c ซึ่งใช้ PIC16F648A ครับ
ดู code ใหม่และวิธีใช้งานที่
http://www.thaimicrotron.com/X10/X10LAB/X10Lab2.htm#code
วิธีใช้งาน
http://www.thaimicrotron.com/X10/X10LAB/X10Demo2.htm

จากรูป
(http://www.thaimicrotron.com/X10/X10LAB/X10Controler.gif)

หากคุณ plom ไม่ได้ต่อ Panel ที่ขา RB6,RB7 จะต้องต่อ R10K ลงกราวน์ไว้ ไม่เช่นนั้นโปรแกรมโปแกรมจะติดอยูในลูป การอ่านค่าคีย์ ไปทำงานอื่นไม่ได้
แล้วที่ ขา RB4 ควรจะต่อลำโพงเปียโซไว้ เพื่อที่ไว้สังเกตุการทำงานและข้อผิดพลาด
ลำโพงเปียโซนะครับไม่ใช่ลำโพงแม่เหล็ก ดูเรื่องลำโพงที่
http://www.thaimicrotron.com/CCS-628/Referrence/Speaker.htm

แล้วทดลองตามนี้
http://www.thaimicrotron.com/X10/X10LAB/X10Demo2.htm
ให้ได้ก่อน จะได้ทราบว่า HardWare ทำงานได้ถูกต้องหรือเปล่าครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on December 15, 2009, 09:08:56 AM
สวัดดีตอนเช้าครับพี่สมิธ  คือผมต่อลงโฟโต้บอร์ดครับ ตอนนี้กำลังทำลงPCB ที่แก้ไข ที่VR แล้วครับ
ขั้นตอนที่ผมทำนี้
1. ผมนำโค้ด EX_X10o.C  เบิร์นลงMCU ที่อยู่ในบอร์ดที่ผมเอาเป็นภาคส่ง  แต่ไม่ได้ต่อ  RS232 นะครับ
2. ผมนำโค้ด X10Mon2.C เบิร์นลง MCU ที่อยู่ในบอร์ดที่ผมเอาเป็นภาครับ  และต่อ RS232 เข้าPC หวังให้เป็นภาครับและแสดงผล

ถูกต้องแล้วใช้ไหมครับ

เหลือเพียง อัพเดทโค้ดเป็น x10Demo2 และโค้ด X10Mon2 เปลี่ยนเป็นinclude <16F648A.h>
ส่วน HardWare ก็ต่อ R10K ที่ขาRB6 RB7  และเปี้ยโซที่ขาRB4

ผมเข้าใจอย่างนี้ถูกต้องรึป่าวครับ(หรือผิดตรงไหน) ช่วยแนะนำด้วยครับ
ขอบคุณครับ :)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on December 15, 2009, 12:50:04 PM
การทำ PCB เป็นการบังคับให้คุณต่อให้ถูกครับ เหลือแต่การปรับแต่งคอยล์ ซึ่งก็แค่ปรับไว้กลางๆ เมื่อวางไว้ใกล้ๆกัน ก็จะรับส่งกันได้แล้วครับ เพราะถ้าคุณต่อบนโปรโตบอร์ด เวลามันไม่ทำงานก็ไม่ทราบว่าจะให้คำแนะนำอย่างไร เพราะไม่ทราบว่าผิดตรงไหนหรือเปล่า

โคีด EX_X10o.C , X10Mon2.C ก็ยังคงใช้ได้ครับ แต่โค๊ดตัวใหม่จะละเอียดกว่า
ให้คอมไพล์และโปรแกรมด้วย X10Demo2.c ทั้งสองตัวเลยครับ เพราะมันเป็น bidirection คือรับส่งได้ในตัวเดียวกัน
เพียงแต่ตอนคอมไพล์ให้แก้ที่โค๊ด ตัวแรกให้เป็น A04 อีกตัวให้เป็น A05
โดยแก้โค๊ดที่
#rom  0x2100={'A',0x04}

โดยดัวแรก(A04)ต่อกับ PC ผ่าน RS232 แล้วใช้คำสั่ง ให้ตัวที่สอง(A05)ทำงาน จะสังเกตุได้จาก LED1 ที่ต่อไว้กับ RB5 กระพริบ แล้วจะมีเสียงออก มาทางลำโพงเปียโซครับ โดยให้ทดลองตามนี้ครับ
http://www.thaimicrotron.com/X10/X10LAB/X10Demo2.htm


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on December 15, 2009, 01:19:28 PM
ขอบคุณครับ  :) :) :)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 12, 2010, 03:26:24 PM
สวัดดีครับพี่สมิธ กลับมาลุยอีกครั้งครับหลังจากที่สอบมิดเทอมเสร็จครับ คือผมลองcomplierตัวโปรแกรมX10Demo2.c ด้วยโปรแกรมccs ครับ มันcomplier ไม่ผ่านครับ ขึ้นข้อความนี้ครับ
Error[43]   C:\Documents and Settings\Administrator\Desktop\x-10compileer\x10000.c 867 : Expecting a declaration
แต่complier ตัวโปรแกรมที่ใช้pic16f628 complierได้ครับ ช่วยแนะนำหน่อยนะครับ

และการลงอุปกรณ์ อุปกรณ์ที่ต่อขนานกับตัว C 220uF/35V  ตัวสีแดงอะครับคือตัวอะไรครับ ช่วยแนะนำหน่อยนะครับ

ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 12, 2010, 10:34:51 PM
เนื่องจาก X10Demo2.c โค็ดค่อนข้างใหญ่
- ต้องใช้ PIC16F648A หรือเบอร์ที่มีขนาด 4 K ขึ้นไปครับ
ผมลองคอมไพล์โดยใช้ CCS Version 3.249 และ 4.074 ก็ผ่านนิครับ
- มีการดัดแปลงโค๊ดหรือเปล่า คอมไพล์เลอร์ฟ้องว่ามี error ที่บรรทัด 867 ซึ่งก็เป็นบรรทัดสุดท้ายของโปรแกรม
ก็น่าจะเป็นว่า หน่วยความจำไม่พอ


ตัวสีแดง ที่ว่าคือ C0.1/50V แบบมัลติเลเยอร์ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on January 13, 2010, 09:16:50 AM
ก่อนอื่นต้องขอ สวัสดีปีใหม่ อาจารย์ศมิทธิ์ ก่อนนะครับ(คงไม่ช้่าเกิน) หลังจากไม่ได้เข้ามานาน
คือผมอยากจะขอให้อาจารย์ช่วยเขียน Flow chat ของ code (ในขณะทำหน้าที่ส่งกับทำหน้าที่รับ)ให้ดูหน่อยนะครับเพื่อประกอบความเข้าใจเพิ่มขึ้นครับ
อีกอย่างว่าจะถามเรื่องวงจรภาคส่ง-รับ ตรง R 1M ที่ต่อคร่อม ขา 13,12 กับ ขา 11,10 (ของ ic 4069)มันทำหน้าที่อะไรครับ ยังไงก็ขอขอบคุณอาจารย์ล่วงหน้านะครับ สุดท้ายก็ขอให้อาจารย์มีความสุขตลอดปี 2553 ครับ
   
     


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 13, 2010, 11:36:20 AM
สวัสดีปีใหม่ครับ
ส่วนของ Flow chat ต้องขอเวลานิดนะครับ เพราะช่วงนี้งานชุกชุม

R 1M  ที่ต่อคร่อม ขา 13,12 กับ ขา 11,10 ของ ic 4069 มีน่าที่ ป้อนกลับแบบ negative ครับ
ดูเพิ่มเติมที่
http://www.thaimicrotron.com/X10/X10LAB/X10Lab1.htm#RX


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 13, 2010, 02:04:39 PM
สวัดดีครับพี่สมิธ ตอนนี้complierผ่านแล้วครับ คือ ผมลบคอมเม้นบันทัด867ออกหมดเลยครับ

แล้วตัว C ใช่ชนิดโพลี  ได้รึป่าวครับช่วยแนะนำหน่อยครับ

ขอบคุณครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 13, 2010, 08:25:24 PM
C ทำหน้าที่กรองแรงดัน ใช้ได้หลายชนิดครับ โพลี,เซรามิค,ไม่ล่า แต่ตัวมันจะใหญ่เท่านั้นครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on January 14, 2010, 09:47:16 AM
ขอบคุณที่ตอบคำถามนะครับ อืมอีกอย่างนะครับ ตัวcode เองเวลาที่รับเนี้ย เราใช้การอ่านข้อมูลแบบไหนครับถึงจะรู้ว่ามันเข้ามาเป็น 1รึเป็น 0 sampling รึป่าวครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 14, 2010, 07:18:09 PM
สวัสดีครับพี่สมิท มีเรื่องให้ช่วยครับ คือว่าที่ขา3ของ 741 ทำไมในวงจรเป็นไฟ DC12V เเต่ในปริ้น เป็นไฟ AC12V ครับ เเละตรงbrid rectifly จ่ายไฟมาเเล้วมีเเต่ไฟ -12V DC ไฟบวก 12 V ไม่มีครับ ซึ่งผมต่อวงจรครบทุกอย่างเเล้ว เหลือเเต่รีเลย์ตัวเดียวที่ยังไม่ได้ต่อ เเละตรงTLP434A กับ RLP434Aเอาไปใช้ต่อกับอะไรครับ  พี่สมิทช่วยทีครับ ขอบคุณครับ :)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 15, 2010, 03:12:52 AM
ตอบคุณ muiim การอ่านข้อมูลเป็นแบบ sampling ครับ ส่วนรายละเอียดขอเวลาแป๊บนึง ช่วงนี้วุ่นๆอยู่ครับ
ผมเองก็ต้อง ไปไล่โค๊ดดูเหมือนกันครับ

ตอบคุณ plom ที่ขา3 ของ 741 เป็นแรงดันไฟสลับครับ ผ่าน R 10K มาอีกที
หากใช้แรงดัน 12 0 12 AC เมื่อผ่านวงจรเร็คติไฟล์แล้ว จะได้ประมาณ +15 0 -15 ครับ(คือ 12 คูณด้วยรูท2)
PCB เก่า เป็น 9 0 9 ยังไม่ได้แก้ครับ
ที่ PCB ออกแบบไว้ สามารภใช้ไดโอดแบบบริดจ์ ตัวกลม หรือแบบใช้ ไดโอด 4 ตัว ครับ หากไฟออกไม่ครบลองดูที่นี่ครับ

(http://www.thaimicrotron.com/X10/X10LAB/X10BASE-TOV.gif)

(http://www.thaimicrotron.com/X10/X10LAB/X10-RS232UIin.jpg)

ส่วน TLP434A กับ RLP434A เป็นภาครับและภาคส่ง RF ครับไม่ต้องต่อ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 15, 2010, 05:08:47 PM
สวัสดีครับพี่สมิธ คืออยากถามว่าทำไมต้องเอาไฟ บวก12V ต่อลงกราวด์ตรงjumper ตัวที่ใกล้กับTLP434A
ด้วยครับ จากผลตรงนี้ทำให้ไดโอดที่บริดร้อนเเละเเรงดันมาไม่ครบครับ เเต่พอถอดjumperตรงนี้ออก
เเรงดันที่บริดออกครบถ้วนครับ เเต่IC recgurator ทั้ง2ตัวร้อนมากครับ ช่วยเเนะนำหน่อยครับ
 ขอถามอีกเรื่องครับ ตรง R 1K ที่ต่อตรงรีเลย์กับซีเนอร์ไดโอด ในปริ้นกับในลายวงจรทำไมต่อไม่เหมือนกันครับ
คือในปริ้น R1K จะไปต่อกับขั้วลบของ LED เเต่ในวงจร R1K ไปต่อกับขั้วบวกของ LED


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on January 18, 2010, 12:50:39 PM
ตอบคุณ Plom  R1k ผมว่ามันไม่ส่งผลซักเท่าไหร่หรอกครับจะต่อไว้หน้า รึว่าข้างหลัง jumper ที่ว่ามันตรงไหนครับ เผื่อผมจะอธิบายได้เอารูปมาดูด้วย (อีกอย่างลองเขียน pcb เอง ตามวงจรของ อาจารย์ smitdh น่าจะทำความเข้าใจได้ดีกว่านะครับ confirm ชัว)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 18, 2010, 12:54:33 PM
Jumper ที่ใกล้กับ TLP434A เป็นการ Jump Ground ไปให้ขา 15,13,11 ของ Max232 ครับ
หากว่า มันช๊อด ให้ดูที่ขา 16 ของ Max232 ว่ามันช๊อคกับขา 15 หรือเปล่าเพราะ  PCB  มันใกล้กันมาก

จากหน้า
http://www.thaimicrotron.com/X10/X10LAB/X10Lab2.htm#code
ให้ลองโหลด File PCB ไปไล่เช็คดูครับ

จากรูป
(http://www.thaimicrotron.com/X10/X10LAB/X10-RS232UIin.jpg)

เป็นโครงงานที่ทำไว้นานแล้วครับ
เวลาประกอบพบจุดบกพร่อง ก็จะนำมาแก้และเพิ่มเติมที่ไฟล์ PCB แต่ไม่ได้นำมาทำ PCB ใหม่ครับ ใช้วิธี เจาะและตัดต่อลายปริ้นเอา
เลยจะพบข้อแตกต่างของตำแหน่งกันบ้างอย่าง R 1K ที่ต่อตรงรีเลย์กับซีเนอร์ไดโอด ถูกสลับต่ำแหน่งด้วยเหตุผลในการออกแบบ PCB ครับ
ส่วน IC recgurator ทั้ง2ตัว ปกติจะไม่ร้อนครับ เพราะวงจรขณะ standby แทบไม่กินกระแส
เหตุที่ร้อนอาจจะยังมีบางอย่างผิดอยู่ ลองจ่ายไฟโดยยังไม่ต้องใส่ PIC,4069,MAX232,741 แล้วลองวัดไฟดูอีกครั้ง
ลองไล่ดูขั้ว โดยเฉพาะพวก C อิเลคโตไลท์ ว่าถูกต้องหรือเปล่า


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 18, 2010, 01:04:05 PM
ต้องขอขอบคุณ คุณ muiim ด้วยครับที่ช่วยตวจสอบให้อีกทาง
ส่วนที่ติดค้างไว้ ขอเวลาอีกนิดครับ เพราะตอนนี้มีเวลาเพียงเข้ามาดู web เป็นพักๆเท่านั้นครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 18, 2010, 02:09:24 PM
ขอบคุณครับอาจารย์


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 18, 2010, 02:41:53 PM
Jumper ที่ใกล้กับ TLP434A  ตัวที่เป็นสีเหลืองอะครับ ดูในวงจรแล้ว
จะเป็นการต่อไฟ12VDC ที่มาจาก J1 ลงกราวด์ที่ ICMAX 232 อะครับ ตรงนี้ละครับ
ที่ผมสงสัยว่าจะผิด พี่สมิธช่วยพิจารณาตรงจุดนี้ให้หน่อยนะครับ
ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 18, 2010, 02:53:25 PM
เป็นตัวเก็บประจุครับ มีค่าเท่ากับ 0.1/50V ชนิด Multilayer
(http://www.es.co.th/Picture/SR215.jpg)
http://www.es.co.th/detail.asp?Prod=SR215C104KARAP4-90


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 19, 2010, 12:48:03 PM
ขอบคุณครับอาจารย์
 ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 19, 2010, 04:38:05 PM
สวัสดีครับพี่สมิธ หลังจากที่ผมต่อ C 0.1U เเบบมัลติเลเยอร์ พอผมจ่ายไฟผลปรากฎว่า ไฟมาครบครับ เเต่ที่ขา 13 ของ IC4069 ทำไมไฟมาไม่ถึง 5V ครับมาเเค่ 3.6V ผมลองถอดซีเนอร์ได5V 1/4w ออกปรากฎว่าไฟมาครบครับ 5V พอดีเลย ถ้าเกิดผมไม่ใส่ซีเนอร์ไดโอดจะเป็นอะไรไหมครับ พี่สมิธช่วยเเนะนำด้วยครับ  :)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 19, 2010, 07:37:09 PM
การวัดแรงดันเข้า ของ IC 4069 วัดที่ขา 14 ว่ามา 5 Vหรือเปล่า
ส่วนขา 13 เป็นอินพุตครับ

ดูเพิ่มเติมที่
http://www.thaimicrotron.com/X10/X10LAB/X10Lab1.htm#RX


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on January 20, 2010, 04:14:26 PM
ผมขอเสนอคุณ plom อีกสักอย่างคงไม่ว่ากันนะครับ
ผมคิดว่าคุณ plom น่าจะลองต่ออุปกรณ์ลงโฟโต้บอร์ดดูก่อนนะครับ เอาแค่ ภาครับส่ง กับ ภาคจ่ายไฟน่าจะทำความเข้าใจได้ง่ายกว่า แล้วก็ลองส่งสัญญาณผ่านไฟบ้านดู ถ้าได้ก็น่าจะ ok ว่ามั้ย(อีกอย่าง pcb ของอาจารย์ศมิทธิ์ ผมว่าแกออกแบบไว้รองรับอุปกรณ์อย่างอื่นด้วยเวลาเรามา ศึกษาวงจรจะทำให้เราค่อนข้างติดขัด แต่ถ้าเราเริ่มต้นจากการ ศึกษาจากวงจรทีอาจารย์ ให้มาด้วย จะทำให้เราเข้าใจได้เร็วขึ้นนะ )


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 20, 2010, 11:45:29 PM
ขอบคุณ คุณmuiim มากครับที่ช่วยแนะนำ ผมลองต่อโฟโต้บอด 2บอร์ดเหมือนกันทุกอย่าง ทดลองการรับส่ง โดยส่งสัญญาณไฟกระพิบ จากIC 555 ที่บอร์ดตัวที่หนึ่ง ไปที่บอร์ดอีกตัวหนึ่ง ที่ภาครับLEDที่ขา 6 ของ4069 กระพริบตามสัญญาณของไอซีห้าๆ (แต่ไม่ได้ใช้ภาคควบคุมนะครับ) ตอนนี้ก็เลยทำPCB เพื่อที่เกิดปัญหาอะไร
พี่สมิธจะได้แนะนำได้ง่ายขึ้น
  ตอนนี้ PCB น่าจะโอเคแล้วครับ หลังจากที่งงกับอุปกรณ์ แต่ก็ได้คำแนะนำจากพี่สมิธจนพอจะเข้าใจบ้างแล้ว 
 ตอนนี้กำลังศึกษาโปรแกรมรับส่งสัญญาณของX-10อยู่อะครับ  เพื่อที่ผมจะเอาการใช้งาน SHT15 ที่เป็น
โมดูลวัดอุณหภูมิ และความชื้น มาวัดแล้วส่งผ่ายสายAC แสดงผลผ่านRS232  จากโมดูลวัดอุณหภูมิที่มีก็เป็นการแสดงผลที่RS232 อยู่แล้วครับ ใช้ไมโครตัวเดียวกัน แต่ไม่รู้ว่าจะเป็นไปได้ไหมที่จะส่งผ่านสายAC โดยส่งผ่านโมดูลX-10lab นี้ ช่วยแนะหน่อยนะครับว่าจะต้องศึกษาอะไรบ้าง และต้องดัดแปลงตรงไหน

ขอบคุณครับ ;D



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on January 21, 2010, 08:51:36 AM
ผมว่าคุณ plom ต้องกำหนด protocol ก่อนละครับว่าจให้มันเป็นแบบไหน เหมือนกับตัว code ของ x10 ที่ ต้องมีการส่ง เฮาร์โค๊ด keycode function code เพื่อที่จะระบุการทำงานได้ (ผมคิดว่าจากโมดูล SHT15 ที่ทำการแสดงผลทุกๆ1วิ จะทำให้เรากำหนด ได้ยากนะครับ) อืม อีกอย่าง ไอ้ SHT15 เนี้ยมันส่งข้อมูลเป็นแบบไหนยังไง มันมีcode ของตัวองใช่มั้ยนิ  ::)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 22, 2010, 10:38:56 AM
ขอบคุณ คุณmuiimครับ
รอคำแนะนำเพิ่มเติมจากพี่สมิธครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 27, 2010, 01:02:08 PM
สวัดดีครับพี่สมิธ ตอนี้ผมทำPCB เสร็จแล้วครับ  ปรับความถี่ที่BC547 เป็น 120 KHz ผมไม่ได้ต่อtransistor ตรงภาคที่Relay และไม่ได้ต่อ Panel แต่ที่ที่ขา RB6,RB7 คือที่ขา12 ,13จะต่อ R10K ลงกราวน์ไว้ครับ ขา10 RB4 ต่อลำโพงเปียโซไว้ แต่ขาที่11ไม่ได้ต่อLED ไว้ครับ และผมทำตามที่พี่บอกคือคอมไพล์และโปรแกรมด้วย X10Demo2.c ทั้ง2ตัว แล้วแก้ที่โค๊ด ตัวแรกให้เป็น A04 อีกตัวให้เป็น A05 โดยแก้โค๊ดที่
#rom  0x2100={'A',0x04}
โดยดัวแรก(A04)ต่อกับ PC ผ่าน RS232 ครับ แล้วทำการทดลองเปิดโปรแกรมพวก Hyperterminal หรือใน CCS จะมีโปรแกรมอยู่ใน Tools ชื่อว่า Serial Port Monitor Set Baud rate 9600,no parity ,8 bit ,1 stop bitแล้วจ่ายไฟให้กับบอร์ดครับ ผลคือไม่มีอะไรขึ้นที่จอ และก็ไม่มีเสียงที่เปี้ยโซ้ครับ แต่พอรอไปประมาณ 3-4 นาที่จะมีแรงดันประมาณ 5V ออกที่ขา11 คือขาRB5 ครับ เป็นผลมาจากอะไรครับ ช่วยแนะนำหน่อยนะครับ

ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 27, 2010, 04:12:55 PM
ในขั้นแรกคุณลองทดสอบที่ละตัวก่อนครับ
โดยทดสอบกับ PC โดยใช้โปรแกรมพวก Hyperterminal
เมื่อเริ่มจ่ายไฟให้วงจร
- จะได้ยินเสียง ติ๊ดๆๆ
- และปรากฏคำว่า X10-LAB DEMO-2 ADDRESS=A04 บน Hyperterminal
ดูเพิ่มที่หน้า
http://www.thaimicrotron.com/X10/X10LAB/X10Demo2.htm
เอาแค่นี้ก่อนครับ


- หากไม่ได้ยินเสียง ก็แสดงว่าผิดปกติ ตั้งแต่ต้นแล้วครับ
ให้ตรวจสอบ hardware ใหม่อีกที
- หากไม่ปรากฏ ข้อมูล ออก Hyperterminal ลองดูเรื่องสาย

ที่ขา RB5 จะต่อกับ LED จะติดก็ต่อเมื่อ
- ได้รับสัญญาณ X10 (กระพริบ)
- ติดค้างเมื่ออยู่ใน mode setup

ในส่วนของอินพุต จะใช้ RB6,RB7 จะเป็นโลจิก 0 เมื่อไม่ได้กดปุ่ม
และจะเป็นโลกจิก 1 เมื่อมีการกดปุ่ม (และจะได้ยินเสียงด้วย)
และ RB6,RB7 จะใช้ในการโปรแกรมด้วยครับ

คุณใช้อะไรโปรแกรมครับ
หรือใช้วิธีใดโปรแกรม เช่น
- ถอดไอซีออกไปโปรแกรม เสร็จแล้ว นำกลับมาเสียบ
- หรือ ใช้ socket adaptor


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 27, 2010, 05:20:24 PM
ขอบคุณพี่สมิธมากครับ

ผมถอดไอซีออกไปโปรแกรม เสร็จแล้ว นำกลับมาเสียบครับ :D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 27, 2010, 06:00:39 PM
ที่ถามในส่วนนี้ก็เพราะว่าตัวโปรแกรม ICP (In Circuit Programing) บางรุ่น จะนำขา  RB6,RB7 ไปใช้งานอยู่
หากถอดไอซีออกไปโปรแกรม เสร็จแล้ว นำกลับมาเสียบ ก็หมดข้อสงสัย ว่ามีอะไรมายู่งกับสองขานี้หรือเปล่า

เพราะฟังดูแล้วดูเหมือนว่า PIC มันยัง start ไม่ออกครับ
- ให้ลองวัดไฟที่ขา  RB6,RB7 นี้อีกทีว่าเป็นโลจิก 0 หรือเปล่า
- ลองดูขา 4 (MCLR) ว่าต่อถูกไหม
- ใช้ XATL 4 Mhz หรือเปล่า
- แล้ววงจรมีอะไรที่ไม่ได้ต่ออีก นอกจาก Relay,Panel

แล้วทำสองข้อนี้ให้ได้ก่อน
เมื่อเริ่มจ่ายไฟให้วงจร
- จะได้ยินเสียง ติ๊ดๆๆ
- และปรากฏคำว่า X10-LAB DEMO-2 ADDRESS=A04 บน Hyperterminal


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on January 28, 2010, 03:09:49 AM
อ้ออีกอย่างหนึ่งครับ ลำโพงที่ใช้ต่อที่ขา RB4 นั้นเป็นลำโพงเปียโซนะครับ ไม่ใช่ลำโพงแม่เหล็ก
ไม่เช่นนั้นจะทำให้ PIC overload ได้ ดูรายละเอียดเพิ่มเติมได้ที่
http://www.thaimicrotron.com/CCS-628/Referrence/Speaker.htm


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on January 29, 2010, 01:34:59 PM
ขอบคุณพี่สมิธมากครับ

ผมใช้ เปี้ยโซ ที่อยู่ในคอมพิวเตอร์ครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on February 01, 2010, 03:15:10 PM
สวัดดีครับพี่สมิธ ผมวัดแรงดันที่ขาRB6 RB7 ได้ระดับแรงดันได้ประมาณ 20mV ครับ มันไม่เป็น0V ครับ

และตัวคริสตอล มันกำเนิดความถี่อย่างไรครับเพราะในวงจรไม่มีแรงดันจ่ายให้มันครับ ช่วยบอกวิธีการทดสอบตัวคลิสตอลด้วยครับ
ขอบคุณครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on February 01, 2010, 03:48:26 PM
ลืมบอกครับแรงดันที่ได้ประมาณ20mV จากขาRB6 RB7 ตอนที่ขาRB5 มี่แรงดันเป็น 5V ครับ แต่ตอนที่RB5 เป็น 0V ขาRB6 RB7 ก็0Vครับ ช่วยแนะนำด้วยนะครับ ขอบคุณมากครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on February 01, 2010, 05:52:30 PM
พี่สมิธ ผมต่อสายRS232แบบ Null Modem แบบ 3 wire เป็นตัวเมียทั้งสองข้าง 
ส่วนที่บอร์ดต่อแบบ DB9 เป็นตัวผู้ครับ
ส่วนที่ไม่ได้ต่อในบอร์ดก็มี ภาคRelay  Panel และ ตัวTLP434AกับRLP434A ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 01, 2010, 06:45:56 PM
การวัดระดับโลจิก ว่าเป็น 0 หรือ 1 ให้วัดด้วยโลจิกโพร้บครับ
หากวัดด้วยโวลต์มิเตอร์ ระดับ TTL
- แรงดันที่ต่ำกว่า 0.8 V จะเป็นโลจิก 0
- แรงดันที่สูงกว่า 2.4 V จะเป็นโลจิก 1 ครับ

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

ที่จริงแล้วมันแค่วงจรพิ้นฐานครับ แค่ต่อวงจรให้ถูก
แล้วตวจสอบว่า เมื่อเริ่มจ่ายไฟให้วงจร
- จะได้ยินเสียง ติ๊ดๆๆ
- และปรากฏคำว่า X10-LAB DEMO-2 ADDRESS=A04 บน Hyperterminal

ยังไม่เกี่ยวกับภาครับ-ภาคส่งเลยครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on February 02, 2010, 02:26:27 PM
สวัดดีครับพี่สมิธ ใช้โอมห์มิเตอร์วัดที่ลำโพงเปียโซดู มันจะมีแค่เสียง แคร็กๆ ครับ

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

พี่สมิธครับตัวคลิสตอล มันวัดความถี่อย่างไรครับ ผมมีทั้งสโคป และมิตเตอร์วัดความถี่ ครับ
คลิสตอลที่ใช้ก็ 4MHz ครับ ที่ตัวมันพิมไว้ M4.000 ครับ

พี่สมิธช่วยแนะนำหน่อยนะครับ ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 02, 2010, 02:35:19 PM
โทษทีครับเพิ่งย้อนไปเห็นคำถามเรื่องคริสตอล
ภายใน PIC จะมีวงจรออสซิเลเตอร์อยู่แล้วครับ เพียงแต่ต่อคริสตอล เข้าไป ร่วมกับ C 20p อีกสองตัว ก็ทำงานแล้วครับ ส่วนในโปรแกรมก็กำหนดฟิวส์ให้ตรง เช่นเราใช้ 4 Mhz ก็เซ็ทฟิวส์เป็น XT
การตรวจคริสตอล ก็อาจต่อวงจรไฟกระพริบ เพื่อทดสอบก็ได้ครับ ว่ามันดีหรือเสีย
http://www.thaimicrotron.com/CCS-628/EXAM/PORTA.htm


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 04, 2010, 07:26:13 PM
แล้วตอนนี้คุณ plom ทำเสร็จแล้วหรือยังครับ (เปิดเครื่องแล้วมีเสียง ติ๊ดๆๆ)
แล้วส่วนที่ต่อผิด คิดว่า C0.1 เป็น Jumper นั้นทำให้ Regulator ร้อนจัด มันมีอะไรเสียบ้างหรือเปล่า
ที่ถามถึงการตรวจสอบ xtal นั้น เมื่อจ่ายไฟมันเงียบหรือครับ

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


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on February 05, 2010, 02:34:32 PM
ครับอาจารย์ ผมรอได้ครับ ยังไงก็รักษาสุขภาพด้วยครับ  :D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on February 07, 2010, 05:08:35 PM
อีก อย่างนะครับ อาจารย์ มีรูปคลื่นสัญญาณ ที่แสดง ความถี่ 120 Khz ขี่ไปบนไฟ AC มั้ยครับ ถ้ามีก็กรุณาเอามาลงให้เห็นภาพด้วยครับ ขอบคุณล่วงหน้า


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 08, 2010, 07:56:10 AM
คงต้องเอารูปของคนอื่นให้ดูไปก่อนครับ เนื่องจากสัญญาณมันเร็วผมถ่ายรูปไม่ทัน
ไม่เช่นนั้นต้องเขียนโปรแกรมให้ส่งค่า 1 ค้างไว้นานๆ
(http://idobartana.com/hakb/scope/scope5.jpg)
จากรูปไม่ค่อยชัดเท่าไร ส่งแบบ single phase ด้วย

ดูเพิ่มเติมได้ที่
http://idobartana.com/hakb/oscope.htm


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on February 08, 2010, 08:08:53 PM
ยังไงก็ ขอบคุณอาจารย์อีกครั้ง ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on February 08, 2010, 10:11:25 PM
สวัดดีครับพี่สมิธ ตอนนี้ก้ยังแก้ไม่ได้เลยครับ จ่ายไฟแล้วก็ยังเงียบอยู่ครับ เป็นทั้งสองบอร์ดเลยครับ

ตรงที่ถามถึงการตรวจสอบ xtal นั้น ใช่ครับกลัวมีอุปกรณ์ตัวใดตัวหนึ่งเสีย
ที่ผมวัดดูตามแหล่งจ่าย ก็โอเคนะครับ  Regulator ก็จ่ายได้5V และ -5V  ไม่เสียครับ  ตรงบริด ก็ได้ประมาณ15-16V ครับ รองปรับแต่งความถี่ก็ปรับได้ครับ ถ้าปรับVR ค่าน้อยๆ Q2 ก็ร้อน ครับ

 ตอนที่ต่อผิด คิดว่า C0.1 เป็น Jumper ตอนนั้นยังไม่ได้ใส่ ตัวไมโคร และก็ MAX232 ครับ 
ก็ที่ตรวจสอบก็ได้ลักษณะนี้ ทั้งสองบอร์ดครับ 

ขอขอบคุณพี่มากครับ ผมจะพยายามแก้ไขให้ได้ครับ ;D



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on February 09, 2010, 04:18:32 PM
สวัดดีครับพี่สมิธ พี่สมิธช่วยแสดงลำดับการcomplier code x-10lab ด้วยโปรแกรม PIC C Complier ให้หน่อยครับ ผมไม่รู้ว่าปรับตรงไหนผิดหลักไปรึป่าวครับ

ขอบคุณครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 09, 2010, 05:29:09 PM
การคอมไพล์ก็เพียงแค่ใช้ CCS เปิดไฟล์ขึ้นมาแล้วกด F9 ก็จะได้ HEX ไฟล์แล้วครับ
แล้วนำ HEX ไฟล์ที่ได้มาโปรแกรม หรือ นำ HEX ไฟล์จากตัวอย่าง(PIC16F648A)
http://www.thaimicrotron.com/X10/X10LAB/Code/X10Demo2_hex.zip

แล้วตอนนี้เครื่องโปรแกรมใช้อะไรอยู่ครับพวก PICKit2 หรือเปล่า 


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on February 10, 2010, 12:28:15 AM
ใช้ครับใช้ PICKIT 2 กับบอร์ดของETT ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on February 20, 2010, 07:05:56 PM
ผมมีโอกาสได้วักรูปคลื่นของเครื่องที่ผม ทำขึ้น เลยเอามาลงเผื่อมีคนอยากเห็นบ้าง (555)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 22, 2010, 09:04:24 PM
คุณ muiim มีความพยายาม มากเลยครับ
ส่วนที่ติดค้างไว้ ต้องขอผลัดอีกสักระยะนะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: chowarat on March 01, 2010, 10:24:53 AM
สวัสดีครับ ผมสมาชิกใหม่ หาข้อมูลเกี่ยวกับตัวนี้ตั้งนาน เจอสักที คือผมสนใจจะทำตัว x 10 control เหมือนกันครับ ขอฝากเนื้อฝากตัวด้วยนะครับ  :)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on March 11, 2010, 03:44:42 PM
สวัดดีครับพี่สมิธ กลับมาสานงานต่อครับผม  หลังจากติดสอบไปสองสัปดาห์ 
คือเห็นรูปคลื่นที่คุณmuiim โพสไว้ ผมอยากจะลองวัดดูบ้างครับ เป็นรูปคลื่นไซน์ที่มีสัญญาณข้อมูลขี่อยู่ใช้ไหมครับ
แล้วสามารถวัดได้ตรงที่จุดต่อ เอซี ใช้ไหมครับ ช่วยแนะนำหน่อยนะครับพี่ สมิธ ขอบคุณครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: muiim on March 11, 2010, 08:32:11 PM
ผมขอตอบคุณ plom นะครับ
วัดตรงจุดต่อ AC ก็ได้ครับ รึว่าจะวัดจากจุดที่ปลั๊กเสียบก็ได้แต่จะใช้สโครปวัดโดยตรงไม่ได้เพราะ Range ของสโครปมันไม่ถึงต้องใช้ วงจรแปลงเพื่อวัดสัญญาณ
ดูเพิ่มเติมได้ที่
http://idobartana.com/hakb/oscope.htm
หรือว่าจะใช้ หม้อแปลง แปลงไฟลงมาเพื่อให้สโครปสามารถวัดได้โดยตรงก็ได้นะครับ
หรือใช้ differential probeต่อกับสโครป เพื่อวัดสัญญาณได้โดยตรง(ถ้ามี)


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on March 12, 2010, 04:37:51 PM
สวัสดีครับพี่สมิธ คือ ผมอยากทราบว่า ความเร็วการส่งข้อมูล มี่ความถี่อยู่ในช่วงเท่าไหร่ถึงเท่าไหร่ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on March 16, 2010, 12:43:03 PM
สวัดดีครับพี่สมิธ ตอนนี้บอร์ดของผมยังติดต่อผ่านRs232ยังไม่ได้เลยครับ เปิดเครื่องแล้วยังไม่มีเสียง ติ๊ดๆๆ เลยครับ ผมรองวัดแรงดันที่ขา9 และขา10 ของMAX232 ได้แรงดัน 5Vครับ ทั้งสองขาครับ แต่ตอนที่วัดนี้ยังไม่ได้ใส่ PIC นะครับ ไม่ทราบว่าตรงจุดนี้เป็นการทำงานที่ถูกต้องของบอร์ดรึป่าวครับ ช่วยแนะนำด้วนนะครับ ขอบคุณครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on March 17, 2010, 09:37:31 PM
สวัดดีครับพี่สมิธ ตอนนี้ผมแก้บอร์ดได้แล้วครับ ติดต่อกับRS232ได้แล้วครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 18, 2010, 08:04:09 PM
ไม่ได้เข้าซะนาน ไม่ค่อยสบายนะครับ
ทำได้แล้วหรือครับ แล้วมันติดอะไรหรือครับถึงได้ติดอยู่ตั้งนาน


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on March 20, 2010, 12:42:45 PM
สวัดดีครับ พี่สมิธ ด้วยความไม่รอบครอบของผมเองครับ พอร์ตRS232 ที่PC มันเสียครับ ไม่ได้เช็คตั้งแต่แรก ต้องขอโทษพี่สมิธด้วยครับ
 
ตอนนี้กำลังศึกษาโปโตคอลอยู่ครับ   พี่สมิธครับ ถ้าผมต้องการจะเอาเซนเซอร์วัดอุณหภูมิ มาแปลงเป็นสัญญาณข้อมูลแล้วส่งเข้าไปในสายเอซี  จะต้องทำเป็นสัญญาณข้อมูลลักษณะไหนครับ ถึงจะส่ง และรับ  ผ่านสายเอซี ของภาคAC Line ในX10 Labนี้ได้ครับ ขอคำแนะนำด้วยครับ  ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on March 21, 2010, 01:22:14 PM
สวัดดีครับพี่สมิธ  ขอถามเกี่ยวกับทฤษฎีหน่อยนะครับ โดยค่าของข้อมูล binary 1 จะส่งสัญญาณ burst มีความถี่ 120KHz จำนวน 3 ลูก หลังจากจุดตัดศูนย์ โดย ไม่จำเป็นว่าจะเป็นขอบขาขึ้นหรือขอบขาลง ของสัญญาณนาฬิกา และค่าของข้อมูล binary 0 จะเป็นการเว้นว่างของสัญญาณ burst ดังนั้นใน 1 ไซเคิล สามารถจะส่งข้อมูลได้ 2 บิท

ตามความเข้าใจผมคือ เมื่อเราส่งสัญญาณ binary 1 จำนวน 1 ลูก ก็จะมีความถี่120Khz ขนาด 1ms ออกไปที่AC line ที่ไซเคิล  บวกของ50Hzจำนวน 3 ลูกโดยมีเวลาห่างกันลูกละ 2ms ส่วนไซเคิลลบไม่มีสัญญาณ 120Khz

เมื่อภาครับ รับสัญญาณเข้ามาก็จะได้สัญญาณ binary 1 0  ใช้ไหมครับพี่สมิธ ผมเข้าใจอย่างนี้ถูกต้องป่าวครับ

ผมไม่เข้าใจตรงการmodulate สัญญาณ 120Khz 3 ลูกครับว่า mod เข้าไปอย่างไร Q1 และ Q2 ทำงานอย่างไรในขณะนี้ครับ

และถ้าความถี่ของภาครับไม่ตรงกับภาคส่ง(ที่มีความถี่120Khz) จะมีผลอย่างไรครับ

ขอคำแนะนำด้วยครับ ขอบคุณครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 22, 2010, 05:40:48 PM
จาก ทฤษฎี (http://www.thaimicrotron.com/X10/X10-MainPage.htm)
การส่งข้อมูลจะอาศัยการสร้างสัญญาณนาฬิกาที่ได้จากจุดตัดศูนย์ (zero crossing point)
โดยค่าของข้อมูล binary 1 จะส่งสัญญาณ burst มีความถี่ 120KHz จำนวน 3 ลูก หลังจากจุดตัดศูนย์
โดย ไม่จำเป็นว่าจะเป็นขอบขาขึ้นหรือขอบขาลง ของสัญญาณนาฬิกา
และค่าของข้อมูล binary 0 จะเป็นการเว้นว่างของสัญญาณ burst
ดังนั้นใน 1 ไซเคิล สามารถจะส่งข้อมูลได้ 2 บิท

- เมื่อเราส่งสัญญาณ  burst มีความถี่ 120KHz 1 ลูกเราจะได้ สัญญาณ binary 1
ตามวังหวะ ของ zero crossing ไม่ว่าจะเป็นขอบขาขึ้น (บวก) หรือว่าจะเป็นขอบขาลง (ลบ)
ส่วนข้อมูล  binary 0 ก็คือการเว้นว่างที่ ครึ่งไซเคิ้ลนั้น ครับ
- เหตุที่เราส่งพัลส์ 3 ลูก สำหรับระบบ 3 เฟส ครับ(ตามกฏของ X10)
ส่วนในภาครับ เราจะสนใจพัลส์ลูก แรกเท่านั้นครับ
- การ mod สํญญาณ ก็คือการ on/off ขา RB3 ตามจังหวะของ zero crossing ครับ

- ส่วนของภาครับก็เช่นกัน เราจะใช้จังหวะของ zero crossing ในการอ่านค่าครับ โดยอ่านค่ามาจาก RA1
- ถ้าความถี่ของภาครับไม่ตรงกับภาคส่ง ก็จะทำให้ส่งได้ไม่ไกล หรือถ้าต่างกันมากๆ ก็จะทำให้รับไม่ได้

-จริงๆ แล้วรายระเอียดจะอยู่ในโค๊คครับ นั้นหมายถึงคุณต้องมีพื้นฐานมาพอสมควร
ไม่เช่นนั้นคุณจะไปต่อไม่ได้
- การศึกษารายระเอียด ก็ต้องเริ่มจากตัวอย่างไฟกระพริบ, การใช้งาน UART ฯลฯ ศีกษาอย่างเป็นขั้นตอน
จะกระโดดมาใช้ X10Demo2.C เลย ไม่ได้หรอกครับ



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: plom on March 22, 2010, 07:34:18 PM
ขอบคุณพี่สมิธมากครับ ขอบคุณครับ ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: mmmccc on October 06, 2010, 02:22:21 AM
จากวงจรเรามอดูเลตแบบAM หรือ FM คับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 06, 2010, 06:25:49 AM
เป็น AM ครับ เราถึงใช้ IF ตัวสีดำของ วิทยุ AM ไงครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: mmmccc on October 07, 2010, 05:22:37 PM
สวัดดีครับพี่สมิธ
ทำไมเราถึงส่งความถี่แบบ AM คับ
แบบ FM จะมีแอมปลิจูดคงที่มันจะไม่ดีกว่าเหรอคับ
แล้วส่งที่ความถี่อื่นที่ไม่ใช่ 120 KHz ได้มั้ยคับ
รบกวนพี่หน่อยนะคับ
 ;D


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on October 07, 2010, 09:10:17 PM
เพราะ Sears Home Control System และ the Radio Shack เป็นผู้คิดในปี 1978 ครับ
http://www.thaimicrotron.com/X10/X10-MainPage.htm

- X10 อยู่มาได้ 30 กว่าปีแล้วครับ แต่คนไทยยังรู้จักน้อย
- เราต้องการออกแบบ PC interface ให้ควบคุมอุปกรณ์ X10 ได้ครับ จะได้ร่วมวงกับคนอื่นเค้าได้
- เป็นพื้นฐานของวิชา Power Line Carrier (P.L.C.) transmission
- หากเข้าใจแล้วก็สามารถ ต่อยอดนำไปประยุกต์ ออกแบบการใช้งานแบบอื่น
- เหตุที่ X10 เป็น AM แต่สามารถส่งไปได้ไกลๆ ก็เพราะอาศัยการสร้างสัญญาณนาฬิกาที่ได้จากจุดตัดศูนย์ (zero crossing point)
- การ mod แบบ FM ก็ดีครับ แต่ภาคส่งและภาครับจะต้องใช้ IC พวก PLL ซึ่งจะมีราคาสูง 
- ความถี่ที่ใช้เป็นพาหะบน AC Line  ได้ดีที่สุด(เค้าทดลองเอาไว้)จะอยู่ในช่วง 100KHz - 300KHz  ส่วน X10 จะใช้ 120 KHz


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: mmmccc on October 11, 2010, 01:11:08 AM
สวัดดีครับพี่สมิธ
รบกวนพี่ช่วยอธิบาย "L2,C3 เป็นวงจรจูน"
ตรงส่วนนี้มันใช่การ Coupling สัญญาณไปใน AC line หรือปล่าวคับ
แล้ว C4 มีหน้าที่อะไรคับ
รบกวนพี่หน่อยคับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: admin on November 19, 2010, 12:05:04 AM
ขอโทษทีครับเข้ามาอ่านทีแล้วลืม รูป (http://www.thaimicrotron.com/webboard2/Themes/default/images/english/new.gif) มันหายไป
เลยทำให้จำไม่ได้ครับว่าตอบไปแล้วหรือยัง

L2,C3 เป็นวงจรจูน ทำงานร่วมกันในสองส่วนครับ
- ส่วนแรกเป็นวงจรจูนในภาคส่งร่วมกับ Q2 (ภาคไดร์ให้สัญญาณให้แรงขึ้น)
- ส่วนที่สองเป็นวงจรจูน ของภาครับ สัญญาณที่รับได้จะผ่าน C9,R5 ไป U1 ครับ
- C4 Coupling ที่ออกจาก/และเข้ามาทาง ขา 5,4 ของ L2 ครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on February 25, 2011, 12:08:19 AM
พี่ครับภาครับใช้โปรแกรมเดียวกับภาคส่งใช่ไหมครับ แปลี่ยนแอดแดรสเอา ผมเข้าใจถูกใช่ไหมครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on February 25, 2011, 09:54:04 AM
ถูกต้องแล้วครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 05, 2011, 02:53:06 PM
พี่ครับบอร์ดที่ผมทำมีอาการแบบนี้ครับ ตอนที่ปรับภาคส่ง ต่อ J1 ให้ OSC ทำงานวัดค่าความถี่ได้ต่ำสุดได้ประมาณ 147 KHz แรงดัน 20Vp-p วัดแรงดันที่ ขั้ว 4 และ 5 ของ L2 ได้ประมาณ 4 Vp-p ส่วนโปรแกรมผ่าน Hyperterminal ก็ปกติ แต่พอผมถอด J1 ออกเท่านั้นแหละครับ แรงดัน สัญญาณ หายเกลี้ยงงง แล้วผมสงสัยว่ามันจะสงสัญญาน ไปทาง AC-line ได้ยังไง ขอบพระคุณพี่มากครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 05, 2011, 04:33:13 PM
พี่ครับบอร์ดที่ผมทำมีอาการแบบนี้ครับ ตอนที่ปรับภาคส่ง ต่อ J1 ให้ OSC ทำงานวัดค่าความถี่ได้ต่ำสุดได้ประมาณ 147 KHz แรงดัน 20Vp-p วัดแรงดันที่ ขั้ว 4 และ 5 ของ L2 ได้ประมาณ 4 Vp-p ส่วนโปรแกรมผ่าน Hyperterminal ก็ปกติ แต่พอผมถอด J1 ออกเท่านั้นแหละครับ แรงดัน สัญญาณ หายเกลี้ยงงง แล้วผมสงสัยว่ามันจะสงสัญญาน ไปทาง AC-line ได้ยังไง ขอบพระคุณพี่มากครับ
ผมแก้ได้แล้วครับ คือว่าผมยังไม่ได้ต่อสายเพิ่ม X10 tx แต่ผมยังสงสัยว่า ถ้าเกิดผมมีเครื่องรับ เปิดทิ้งก่อนไว้ โดยโปรแกรมแอสแดรสไว้ที่ 01 แล้ว แล้วเครื่องแม่เป็นแอสแดรส 02 เครื่องแม่จะรู้ได้ไงว่ามีเครื่อง 01 อยู่เพราะผมวัดสัญญาณที่ L2 ของเครื่อง 01 จะส่งสัญญานออกตอนเปิดเครื่องอย่างเดียว(01 เป็นเครื่องลูกอะครับ ใช้โปรแกรมเดียวกับเครื่อง 02 แต่คนละแอสเดรส ตอนนี้ผมทดลองใช้โปรแกรม EX_X10o.C)  หรือว่าพอเปิดเครื่อง 02 ปุ๊บ 02 จะส่งสัญญาณไปตรวจสอว่ามีตัวไหน ON อยู่ ขอบพระคุณมากครับๆๆ ผมได้ความรู้จากที่นี้มากจริงๆ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 05, 2011, 06:11:10 PM
พี่ครับบอร์ดที่ผมทำมีอาการแบบนี้ครับ ตอนที่ปรับภาคส่ง ต่อ J1 ให้ OSC ทำงานวัดค่าความถี่ได้ต่ำสุดได้ประมาณ 147 KHz แรงดัน 20Vp-p วัดแรงดันที่ ขั้ว 4 และ 5 ของ L2 ได้ประมาณ 4 Vp-p ส่วนโปรแกรมผ่าน Hyperterminal ก็ปกติ แต่พอผมถอด J1 ออกเท่านั้นแหละครับ แรงดัน สัญญาณ หายเกลี้ยงงง แล้วผมสงสัยว่ามันจะสงสัญญาน ไปทาง AC-line ได้ยังไง ขอบพระคุณพี่มากครับ
ผมแก้ได้แล้วครับ คือว่าผมยังไม่ได้ต่อสายเพิ่ม X10 tx แต่ผมยังสงสัยว่า ถ้าเกิดผมมีเครื่องรับ เปิดทิ้งก่อนไว้ โดยโปรแกรมแอสแดรสไว้ที่ 01 แล้ว แล้วเครื่องแม่เป็นแอสแดรส 02 เครื่องแม่จะรู้ได้ไงว่ามีเครื่อง 01 อยู่เพราะผมวัดสัญญาณที่ L2 ของเครื่อง 01 จะส่งสัญญานออกตอนเปิดเครื่องอย่างเดียว(01 เป็นเครื่องลูกอะครับ ใช้โปรแกรมเดียวกับเครื่อง 02 แต่คนละแอสเดรส ตอนนี้ผมทดลองใช้โปรแกรม EX_X10o.C)  หรือว่าพอเปิดเครื่อง 02 ปุ๊บ 02 จะส่งสัญญาณไปตรวจสอว่ามีตัวไหน ON อยู่ ขอบพระคุณมากครับๆๆ ผมได้ความรู้จากที่นี้มากจริงๆ

ตอนนี้ส่งข้อมูลโดยไม่ผ่าน AC line ได้แล้วแบบว่าเอาสายจั้มที่ L2 ด้วยกันโดยตรงกัน


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 15, 2011, 11:00:47 PM
เวปบอร์ดมันพังนะครับ roolback กลับมาที่ตอบไปแล้วหายหมดเลย ตอบใหม่แล้วกัน

ที่จริงแล้ว X10LAB ถูกออกแบบมาเพื่อใช้ติดต่อกับ X10 ตัวลูกตัวอื่นๆ โดยผ่านทาง RS232 ของ PC
- เพื่อที่จะได้เข้าใจการทำงานของ X10 เพราะข้อมูล ในการสื่อสารหาได้ยาก
- เพื่อที่จะได้พัฒนา application บน PC เพื่อที่จะได้ควบคุบอุปกรณ์ไฟฟ้าหลายๆจุดผ่าน PC เช่น Lobby โรงแรม,อพาร์ตเมนต์ ,ห้องเช่า
- หากเข้าใจและทำได้แล้ว ค่อยดัดแปลงทำอย่างอื่นต่อไป

หากคุณหาคอยล์แบบอื่นแล้วความถี่สูงไปคุณก็อาจเพิ่มค่า C2,C3 เพื่อให้ความถี่ต่ำลง
หรือถ้าคุณไม่ได้ต่อร่วมกับ X10 มาตรฐานคุณก็อาจใช้ควมถี่ใดก็ได้ในช่วง 100KHz-300KHz

-ปกติแล้ว OSC จะยังไม่ทำงาน จะทำงานก็ต่อเมื่อขา RB0 ของ PIC เป็น "1"
ส่วนการต่อ J1 เพื่อไว้ทดสอบในการปรับแต่งเท่านั้นไม่ควรต่อไว้เป็นเวลานาน เพราะจะทำให้ Q2 ร้อนจัดและไหม้ได้

โค๊ดโปรแกรมอาจดูได้จาก EX_X10o.C(เก่า) และ X10Demo2.c
ตัวแม่จะไม่สามารถรู้ได้ว่ามีตัวลูกแอดเดรสใดอยู่ในระบบ (ผู้ติดตั้งจะต้องรู้เอง)
อาจจะใช้วิธี register ตัวลูกที่ทำการติดตั้งใหม่ให้ตัวแม่ทราบ (แบบที่ใช้ทำกับ application PC) ก็จะทำให้ ตัวแม่รู้ว่ามี
ตัวใดต่ออยู่ในระบบบ้าง  X10 มีฟังก์ชั่น 15 ( Status Request) เป็นการถามถึงอุปกรณ์ตัวนั้นว่ามีสถานะเป็นอย่างไร




Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 16, 2011, 06:30:52 PM
โมดูล RF TLP434A ,RLP434A ถ้าหากผมเพิ่มเข้าไปก็ต้องปรับแต่งอะไรที่โมดูลไหมครับ หรือว่าใส่ไปแล้วใช้ได้เลย ขอบคุณครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 16, 2011, 08:39:32 PM
โมดูล RF TLP434A ,RLP434A ไม่ต้องปรับแต่งอะไรเพิ่มครับ แต่ที่ PIC อาจต้องเซ็ท I/O


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 16, 2011, 10:15:41 PM
ถ้าเราจะต้องการให้สัญญาณ X-10 ผ่านทั้ง AC-line กับ ความถี่วิทยุ พร้อมกันทั้งสองทางต้องเซ็ตยังไงครับ ในโปรแกรม

#define X10UHFTX        PIN_A3
#define X10UHFRX        PIN_A4

แบบนี้ใช่ไหมครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 17, 2011, 01:45:51 AM

ใน PCB ขา TX ต่อไว้กับ   PIN_A3 ,ขา RX ต่อไว้กับ   PIN_A4

ผมลองไปดูในโปรแกรม set ไว้แล้วครับ

   ในฟังก์ชั่น InitialChip(void)

   set_tris_a(0B11110011);

set ให้เป็น 0 หมายถึงให้เป็นเอาต์พุต
set ให้เป็น 1 หมายถึงให้เป็นอินพุตครับ



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 18, 2011, 02:35:10 AM
เออคือว่าผมดูใน PCB อ่ะครับอาจารย์ มันมีขา 2 ของ PIC ที่ต่ออยู่กับขา 2 ของ TLP434A และขา 3 ของ PIC ต่ออยู่กับขา 2 ของ RLP434A แต่ในโค๊ด X10Demo.c มันเป็นขา 3 กับ 4 อะครับ ผมไม่แน่ใจว่าโค๊ดมันผิดหรือเปล่า หรือ ผมเข้าใจผิดอ่ะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 18, 2011, 03:42:48 AM
แก้ไขครับ เออคือว่าผมดูใน PCB อ่ะครับอาจารย์ มันมีขา 2 ของ PIC ที่ต่ออยู่กับขา 2 ของ TLP434A และขา 2 ของ RLP434A ไม่ได้ต่อกับอะไรเลยแต่ในโค๊ด X10Demo.c มันเป็นขา 3 กับ 4 อะครับ ผมไม่แน่ใจว่าโค๊ดมันผิดหรือเปล่า หรือ ผมเข้าใจผิดอ่ะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: smitdh on March 18, 2011, 08:28:06 AM
(http://www.thaimicrotron.com/PROPIC/PROPIC/MCUPIN.GIF)

ขา 2 ของ PIC คือขา RA3 ใน CCS ใช้  PIN_A3
ขา 3 ของ PIC คือขา RA4 ใน CCS ใช้  PIN_A4

#define X10UHFTX        PIN_A3    //RA3 = ขา2
#define X10UHFRX        PIN_A4    //RA4 = ขา3


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 18, 2011, 02:17:39 PM
อาจารย์ครับผมบอร์ดของผมสามารถส่งงานผ่าน AC-line ได้แล้วแต่ว่าจะให้ส่งสัญญาณผ่าน คลื่นวิทยุ อะครับผมใส่โมดูลเข้าไปแล้วมันเงียบไม่มีอะไรเกิดขึ้นเลย เอาสโคปวัดสัญญาณที่ออกจากขา 2 ขอPIC ก็ไม่มีสัญญาณอะไร วัดสัญญาณที่ ANT ก็ไม่มีอะไรเช่นกัน วัดแรงดันไว้ VCC ที่เลี้ยง Tlp434A ก็มีนะครับ


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: gundam on March 18, 2011, 03:31:44 PM
คุณ Bs_nongfilm คงเข้าใจผิดแล้วครับ X10LAB เป็นชุดพัฒนาของ X10
ซึ่ง PIC มีพอร์ตเหลือ อ.smitdh เลยออกแบบเพื่อไว้สำหรับ RF และ IR

ซึ่งในหน้า
http://www.thaimicrotron.com/X10/X10LAB/X10Lab2.htm
ก็ได้เขียนไว้ว่า

 ให้ประกอบอุปกรณ์ดังรูปโดยยังไม่ต้องประกอบโมดูล RF TLP434A, RLP434A

(http://www.thaimicrotron.com/X10/X10LAB/X10-RS232UIin.jpg)

ซึ่งถ้าเข้าใจในหลักการแล้วท่านก็สามารถพัฒนา
RF to X10
หรือ IR to X10
โดยใช้ PCB เดียวกันนี้ทดลองได้ แต่ต้องเขียนโค๊ดขึ้นมาเอง

เท่าที่อ่านมาคุณ Bs_nongfilm ภาษา C ของ CCS ยังไม่ค่อยแข็งแรงเท่าไร
คงจะต้องฝึกการใช้งานพอร์ตพื้นฐานควบคู่กับโปรเจคนี้ไปด้วยครับ
ไม่เช่นนั้นแล้วติดปัญหาอะไร จะสังเกตุและแก้ไขได้ยาก

เอาใจช่วยครับ



Title: Re: เกี่ยวกับ Ac power line x-10
Post by: Bs_nongfilm on March 18, 2011, 03:58:30 PM
ขอบคุณครับ ผมจะพยายามครับ เพิ่งหัดทำอะครับเลยไม่ค่อยรู้เรื่องอะไรเลย


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: zMz on April 30, 2011, 05:43:51 PM
คืออยากจะสอบถามอ่ะครับ ผมใช้ภาคส่งและภาครับของชุด X 10 นะครับแต่เปลี่ยน MCU เป็น AVR
ตอนนี้ผมปรับความถี่ ได้ประมาณ 140 ต่ำสุดอ่ะครับ แล้วมีปัญหาอีกอย่างคือ ตอนที่ต่อ J2 ค้างไว้จะมีสัญญาณ
แปลกๆ เข้ามาทำให้สงคำสั่งออกไปไม่ได้รับก็ไม่ได้

และเวลาต่อ RS232 จะมีสัญญาณรบกวนเข้ามา แก้ไม่หาย ไม่รู้จะแก้ยังไง เลยเข้ามาขอคำปรึกษาครับ ผมทำโปรเจค จบ นะครับ ช่วย ด้วย :'(


Title: Re: เกี่ยวกับ Ac power line x-10
Post by: gundam on May 03, 2011, 09:05:34 AM
ขอตอบแทน อ.smitdh นะครับเพราะช่วงนี่ อ.ไปต่างจังหวัด
โปรเจคนี้ผมเองก็ทำไว้เหมือนกันหากตรวจสอบ PCB และประกอบให้ดีๆ รอบเดียวก็ work เลยครับ

ใช้ AVR หรือครับ ขนาดใช้ PIC ตรงๆ ยังหนาวเลย เพราะโปรเจคใดๆ หากไม่ชำนาญ แล้วยังไม่ควรดัดแปลงแก้ไขครับ
หากจำเป็นใช้ 140 KHz ก็ได้ครับ แต่ต้องจูนใให้ตรงกันทั้ง 2 ตัว

J2 มีไว้ตรวจสอบกระแส เวลาปรับแต่ง (ปกติต้องต่อไว้ถึงจะทำงาน)
ลองใช้สโคบวัดขา C ของ Q2 แล้วให้โลจิก 1 ที่ขา X10-TX ,OSC ถึงจะทำงานครับ

RS232 มีสัญญาณรบกวน จากไหนครับ
จาก PC เข้ามา MCU หรือจาก MCU ส่งไปยัง PC
ปกติสัญญาณ RS232 จะต้องนิ่งครับ อาจเป็นที่ HW ต่อไม่ถูก
- หากสัญญาณรบกวนจาก PC เข้ามา MCU อันนี้เป็นที่ HW แน่นอน เพราะทาง PC หากไม่กดคีย์ จะไม่มีข้อมูลอะไร
- หากสัญญาณรบกวนจาก MCU ส่งไปยัง PC อันนี้อาจเซ็ท I/O ไม่ถูก





Title: Re: เกี่ยวกับ Ac power line x-10
Post by: zMz on May 03, 2011, 10:39:17 AM
ขอตอบแทน อ.smitdh นะครับเพราะช่วงนี่ อ.ไปต่างจังหวัด
โปรเจคนี้ผมเองก็ทำไว้เหมือนกันหากตรวจสอบ PCB และประกอบให้ดีๆ รอบเดียวก็ work เลยครับ

ใช้ AVR หรือครับ ขนาดใช้ PIC ตรงๆ ยังหนาวเลย เพราะโปรเจคใดๆ หากไม่ชำนาญ แล้วยังไม่ควรดัดแปลงแก้ไขครับ
หากจำเป็นใช้ 140 KHz ก็ได้ครับ แต่ต้องจูนใให้ตรงกันทั้ง 2 ตัว

J2 มีไว้ตรวจสอบกระแส เวลาปรับแต่ง (ปกติต้องต่อไว้ถึงจะทำงาน)
ลองใช้สโคบวัดขา C ของ Q2 แล้วให้โลจิก 1 ที่ขา X10-TX ,OSC ถึงจะทำงานครับ

RS232 มีสัญญาณรบกวน จากไหนครับ
จาก PC เข้ามา MCU หรือจาก MCU ส่งไปยัง PC
ปกติสัญญาณ RS232 จะต้องนิ่งครับ อาจเป็นที่ HW ต่อไม่ถูก
- หากสัญญาณรบกวนจาก PC เข้ามา MCU อันนี้เป็นที่ HW แน่นอน เพราะทาง PC หากไม่กดคีย์ จะไม่มีข้อมูลอะไร
- หากสัญญาณรบกวนจาก MCU ส่งไปยัง PC อันนี้อาจเซ็ท I/O ไม่ถูก




ขอบคุณมากเลยครับเดี่ยวลองเช็คอีกที่  :D