Thai microtron community

Electronic Knowledge Base => Microcontoller & Electronics => Topic started by: chakatphon on March 27, 2013, 03:24:04 PM



Title: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: chakatphon on March 27, 2013, 03:24:04 PM
คือเซนเซอร์ของผมoutputเป็นสัญญาณสแควพัลเปลี่ยนเปลงสัญญาณสั้นยาว คือผมจะจับเวลาขอบขาขึ้นและขอบขาลงของสัญญาณพัลแล้วให้picแบ่งสัญญาณออกเป็น3ช่วง
1 ต้องใช้ขาใดเพิ่อรับสัญญาณพัลจากเซนเซอร์เข้าpic
2 วิธีเขียนเขียนอย่างไร

ขอขอบคุณล่วงหน้านะคับ


Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: gundam on March 27, 2013, 03:59:07 PM
การวัดคาบเวลาคุณต้องมีรายละเอียดด้วยว่าขนาดของสัญญาณอยู่ในช่วงไหน
เช่น 10us-100us คุณถึงจะออกแบบการวัดได้

หากการวัดต้องการเปรียบเทียบว่ากว้างกว่านี้เป็น 1 น้อยกว่าเป็น 0
ก็ใช้วินี้ก็วนลูบนับเอาก็ได้ครับ


หากต้องการวัดเป็นค่าเวลาก็ใช้ Timer จับเวลา ตัวอย่างการวัดด้วย timer
http://www.thaimicrotron.com/CCS-628/Timer/Timer0_EX1.htm

แล้วแบ่งสัญญาณออกเป็น3ช่วง นั้นไปทำอะไร อย่างนั้นก็เอาผลของการวัดหาร 3 ได้ไหม


Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: chakatphon on March 27, 2013, 04:45:24 PM
ขอเมลได้ป่าวคับผมจะส่งรูปสัญญาณไปให้ บนนี้อัพไม่ได้อะคับ


Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: gundam on March 27, 2013, 05:20:49 PM
วิธีฝากรูปครับ
http://www.thaimicrotron.com/webboard2/index.php/topic,867.0.html


Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: Hanajiji on March 27, 2013, 05:36:54 PM
count = 0;
if(input == 1)
{
     while(input == 1)
     {
           count++;
     }
}
return(count);

แค่นี้ได้ป่าวคับ


Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: chakatphon on March 27, 2013, 05:51:07 PM
สัญญาณขณะปกติ
(http://upic.me/i/9q/zubt5.gif)


Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: chakatphon on March 27, 2013, 05:53:34 PM
สัญญาณที่เซนเซอร์แล้ว
(http://upic.me/i/wk/6cqm6.gif)


Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: chakatphon on March 27, 2013, 06:09:45 PM
ของผมคือเครื่องตรวจจับสนามไฟฟ้าอะคับผมจะทำให้มันเตือนด้วยLEDและบัสเซอร์โดยใช้pic 16f88
โดยเตือน3ระดับ ระดับแรก ดับปิบๆ ห่างๆ ระดับที่2 ถี่ๆ ระดับที่3ดังยาวคับ


Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: gundam on March 27, 2013, 06:18:14 PM
count = 0;
if(input == 1)
{
     while(input == 1)
     {
           count++;
     }
}
return(count);

แค่นี้ได้ป่าวคับ

- ตัวแปรที่ใช้ในการนับจะต้องมีขนาดพอที่จะเก็บข้อมูลนับได้ เช่น unsigned int16,unsigned int32
- การนับต้องกำหนดขอบเขตด้วยว่าไม่เกินเท่าไร


#define DATAIN                PIN_A1
#define BIT_ONE_MAX     428

unsigned int16 count;

signed int RxBit(void)
{
    while(input(DATAIN)==1)
    {
     Cnx++;
     if(Cnx>BIT_CN_MAX)   //ขนาดเกินกว่ากำหนด
      return -1;
    }
  return Cnx;
}








Title: Re: สอบถามเรื่องการใช้ขาpicรับสัญญาณพัลคับ
Post by: Hanajiji on March 27, 2013, 06:40:59 PM
count = 0;
if(input == 1)
{
     while(input == 1)
     {
           count++;
     }
}
return(count);

แค่นี้ได้ป่าวคับ

- ตัวแปรที่ใช้ในการนับจะต้องมีขนาดพอที่จะเก็บข้อมูลนับได้ เช่น unsigned int16,unsigned int32
- การนับต้องกำหนดขอบเขตด้วยว่าไม่เกินเท่าไร


#define DATAIN                PIN_A1
#define BIT_ONE_MAX     428

unsigned int16 count;

signed int RxBit(void)
{
    while(input(DATAIN)==1)
    {
     Cnx++;
     if(Cnx>BIT_CN_MAX)   //ขนาดเกินกว่ากำหนด
      return -1;
    }
  return Cnx;
}

ผมว่า แก้ปัญหาค่าสูงสุด โดย ใช้วิธี ใส่ delay_us() ไว้ในลูปดีกว่าครับ แถมแยกแค่สามระดับ น่าจะได้อยู่ ส่วน -1 return ออกมาไม่ได้ใช้