Thông báo

Collapse
No announcement yet.

Cần giúp đở mạch SRF05

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cần giúp đở mạch SRF05

    Em đang làm đồ án môn học, mạch chống trộm bằng cảm biến siêu âm. Em tự thiết kế mạch và code thế này không biết nó có chạy không? Phiền mọi người cho ý kiến ^^



    Code:
     
    #include <16F887.h>
    #include <def_877a.h>
    #device *=16 adc=10
    #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
    #use delay(clock=20000000)
    #include <string.h>
    #define mod  RD2
    #define TRIGGER pin_d0  //chan phat song sieu am
     
    //chan ECHO nhan tin hieu ve noi vao RC2
     
    float dist,getvar;
    int1 has_echo=0;
     
    ////////////////////////////////////////////////
    #INT_CCP1
     
    void ccp1_isr()
    {
       IF (input (pin_c2))
       {
          //Nếu là xung cạnh lên
          set_timer1 (0);  //Reset timer1 về 0
          setup_ccp1 (CCP_CAPTURE_FE);  //Chuyển Capture 1 đo cạnh xuống
       }
     
       ELSE
       {
          //Nếu là xung cạnh xuống
          getvar=CCP_1;  //Đọc giá trị timer 1
          dist= (getvar*0.8)/58;
          //Mổi 1 nhịp của timer 1 tương ứng vs 0.8 us, lấy us chia cho 58 ra cm
          setup_ccp1 (CCP_CAPTURE_RE);  //Chuyển Capture 1 đo xung lên    
          has_echo=1; 
          //disable_interrupts (INT_TIMER1);
       }
    }
     
    //----Ngat timer 1----
    #INT_TIMER1
     
    void TIMER1_isr(VOID)
    {
       IF (has_echo==0)
       {
          has_echo=1;
          //Tràn timer mà ko có echo thì cho wa (tối đa của SRF05 là 30ms, tràn timer là 52ms)
       }
    }
     
    //----10us cho trigger----
    void trig()
    {
       output_high (TRIGGER);
       delay_us (10);
       output_low (TRIGGER);
    }
     
    //------------
    //-----------------------------------------------------------------
    void main()
    {
       TRISC=0xff;
       TRISB=0;
       TRISD=0;
      
       //Khoi tao cho ngat ngoai
       setup_timer_1 (T1_INTERNAL|T1_DIV_BY_4);
      //20 MHz thì tràn trong 52ms (tối đa xung của SRF05 là 30ms)
       setup_ccp1 (CCP_CAPTURE_RE);  //Thiet lap Capture 1 đo canh lên
       enable_interrupts (INT_TIMER1);  //Ngat timer 1, đe phong trưong hop ko có echo
       enable_interrupts (INT_CCP1);  //Ngat Capture 1
       enable_interrupts (GLOBAL);
      
       WHILE (TRUE)
       {
          has_echo=0;  //Xác lap lai echo
          trig ();//Trigger
          WHILE (has_echo==0) {}  //cho đến khi nhận het echo
          IF (dist>40&&dist<210)
          {
             RB0=0;
             delay_ms (1);
             RB0=1;
          }
       }
    }
    RB0 em đấu dây ra loa, tín hiệu mức 0 thì loa kêu. Loa em cấp 12V.

  • #2
    Loa cấp 12V thì chết mất vi điều khiển rồi, Còn chạy hay không thì làm mạch mới biết chứ nói thế này thánh cũng không dám phán.
    caoson.vnatr@gmail.com
    Thiết kế mạch điện tử
    0914024690

    Comment


    • #3
      Em cấp nguồn 5V cho vi điều khiển (qua 7805). Loa 12V là lấy nguồn trước khi qua 7805.

      Comment


      • #4
        Code này bạn viết hả?
        Giờ có ai rảnh ngồi bug code cho bạn được đâu.
        Hãy làm mạch và test code. Có thể dùng simulator (Proteus) để mô phỏng cũng được để xem và hiểu hơn.



        Thân ái chào quyết thắng
        .: Lê Tiến Mạnh :.
        Phone number : 0989 735 804
        YM,Skype,mail : [leemanhj916]@gmail.com

        Comment


        • #5
          Chưa nói vấn đề code, riêng phần cứng loa 12v mà cấp thẳng vào vdk thế là chết chân đó, với loa lúc nào cũng kêu. Còn code với mạch chạy hay không thì làm thực tế mới biết. Không ai rảnh đi bug code cho bạn đâu
          caoson.vnatr@gmail.com
          Thiết kế mạch điện tử
          0914024690

          Comment

          Về tác giả

          Collapse

          khoa8523 Tìm hiểu thêm về khoa8523

          Bài viết mới nhất

          Collapse

          Đang tải...
          X