Pages: 1 ... 8 9 [10] 11 12 ... 19   Go Down
Print
Author Topic: เกี่ยวกับ Ac power line x-10  (Read 260770 times)
0 Members and 16 Guests are viewing this topic.
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #135 on: November 02, 2009, 08:10:29 AM »

อาจารย์สมิทร์ครับ คือผมมีปัญหาว่าตอนนี้ผมลองต่อ วงจรแล้วใช้ไมโครเป็น 16F877 กับ 18F458 แล้วมันไม่ทำงานครับ คือ เปิดแล้วมีเสียงปิ๊บ อยู่ แต่ไม่สามารถ สั่งให้รีเลย์ทำงานได้ ใช้ code เดียวกันกับที่ให้มาครับ คอมไพล์ผ่านแล้วนะครับผมแนบวงจรมาด้วย (แต่มีเฉพาะการต่อไมโครนะครับ) ขอบคุณล่วงหน้าครับ


* 18f458.JPG (40.02 KB, 551x617 - viewed 2111 times.)
Logged
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #136 on: November 02, 2009, 05:09:29 PM »

อีกอย่างลอง sim ใน proteus ก็ไม่ ทำงานครับ
Logged
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #137 on: November 03, 2009, 09:54:27 AM »

จาก code ที่แนบมาด้วยนะครับ

* X10Marchtest2.c (26.5 KB - downloaded 1180 times.)

* 002.TIF (86.96 KB, 1018x609 - viewed 2238 times.)
Logged
zodazaa
มาใหม่
*
Offline Offline

Posts: 2


« Reply #138 on: November 03, 2009, 04:53:06 PM »

update ความคืบหน้าครับ

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

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

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

Logged
smitdh
Administrator
Hero Member
*****
Offline Offline

Gender: Male
Posts: 381


อาจารย์ที่ปรึกษา


« Reply #139 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.
Logged
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #140 on: November 05, 2009, 08:23:43 AM »

อาจารย์ไปจีนเหรอครับ ไงก็จะรอคำตอบนะครับ
Logged
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #141 on: November 07, 2009, 09:32:31 AM »

คือว่าผมอ่าน datasheet ของ 18f458 แล้ว
define portA ที่ 0xF80
define portB ที่ 0xF81
แต่ ส่วน#ROM อ่านแล้วไม่รู้ว่ามันเริ่มที่ตรงไหน
18Fเริ่มที่ 2100 มั้ยครับ(มันเป็นส่วนที่ทำให้picไม่ทำงานรึป่าวครับ)
Logged
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #142 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;
ขอบคุณครับ
Logged
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #143 on: November 08, 2009, 02:48:38 PM »

ตอนนี้เริ่มเข้าที่แล้วครับ เหลือแต่เพิ่ม sw นะครับ คือผมจะให้ PORTD ทั้งพอร์ต เ็ป็น สวิตช์ แต่มันไม่เวิคครับช่วยชี้แนะด้วยครับ
Logged
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #144 on: November 08, 2009, 03:44:55 PM »

ตอนนี้ทำงานทุกอย่าง(simนะครับ)เหลือลองของจิงไม่รู้จะเวิคมั้ยไงจะส่งข่าวครับ ยังมีข้อสงสัยอยู่ของ 18F #rom ตำแหน่งเดียวกันมั้ย
Logged
muiim
Jr. Member
**
Offline Offline

Posts: 67


Email
« Reply #145 on: November 09, 2009, 09:04:19 AM »

ใช่เิ่ริ่มที่ 8100มั้ยครับ
Logged
smitdh
Administrator
Hero Member
*****
Offline Offline

Gender: Male
Posts: 381


อาจารย์ที่ปรึกษา


« Reply #146 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 ครับ
Logged
smitdh
Administrator
Hero Member
*****
Offline Offline

Gender: Male
Posts: 381


อาจารย์ที่ปรึกษา


« Reply #147 on: November 09, 2009, 01:43:57 PM »

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

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

Posts: 67


Email
« Reply #148 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ใช่มั้ยครับ
Logged
smitdh
Administrator
Hero Member
*****
Offline Offline

Gender: Male
Posts: 381


อาจารย์ที่ปรึกษา


« Reply #149 on: November 10, 2009, 09:51:49 AM »

พวก code ก็ดูจาก datasheet ครับ
ส่วนวิธีการเขียนภาษา assembly ก็ดูจากหนังสือ แต่ก่อนเคยใช้งานอยู่ครับ แต่พัฒนาค่อนข้างช้า พอ CCS ออกภาษาซีมา เลยลองเล่นดู บางส่วนมีปัญญาหา ก็ลองแทรกโค๊ด assembly ปรากฏว่าใช้ได้ ก็ตัดปะ เรื่อยมาครับ ปัจจุปันก็เลยไม่ได้ไปหาฟังก์ชั่น ของ CCS ครับ
Logged
Pages: 1 ... 8 9 [10] 11 12 ... 19   Go Up
Print
 
Jump to: