Thông báo

Collapse
No announcement yet.

[Help] mạch em chạy không ổn định, bác nào chẩn bệnh giúp em với

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

  • [Help] mạch em chạy không ổn định, bác nào chẩn bệnh giúp em với

    Em chào các bác, em đang làm mạch điều khiển thiết bị điện ( đóng ngắt) qua tin nhắn sms. Em dùng pic16F877A và sim900. Thạch anh 20Mhz. Chức năng của mạch cơ bản là:
    Cảnh báo: em dùng sensor LM35 đo nhiệt độ, nếu vượt ngưỡng thì module báo cho mình bằng sms. Em dùng ngắt timer0 để gọi chương trình đo nhiệt độ. Khoảng 15s một lần.
    Điều khiển: khi mình nhắn tin có cú pháp đã quy định trước bằng số điện thoại hợp lệ, module sẽ thực hiện lệnh trong nội dung tin nhắn. Em viết điều khiển được 8 thiết bị.
    Vấn đề của em gặp phải là: khi mới nạp xong, bật lên mạch chạy ok, thực hiện đúng. Nhưng sau một thời gian, nhắn tin đến mạch không điều khiển nữa, mà chỉ còn đo nhiệt độ thôi. Bấm reset mạch vẫn thế, không điều khiển được mà chỉ có đo nhiệt độ.(Nhiệt độ em hiện ra LCD), các bác vào góp ý giúp em với.

  • #2
    Bạn thử làm lại mạch theo tiêu chuẩn: Nguồn tốt, mát tốt, chống nhiễu tốt. Xem sao đã. !? Mạch đi hợp lý là rất quan trọng với thể loại này. Dùng loại phíp chất lượng tốt....

    Comment


    • #3
      Nguyên văn bởi thuanhvktqs Xem bài viết
      Em chào các bác, em đang làm mạch điều khiển thiết bị điện ( đóng ngắt) qua tin nhắn sms. Em dùng pic16F877A và sim900. Thạch anh 20Mhz. Chức năng của mạch cơ bản là:
      Cảnh báo: em dùng sensor LM35 đo nhiệt độ, nếu vượt ngưỡng thì module báo cho mình bằng sms. Em dùng ngắt timer0 để gọi chương trình đo nhiệt độ. Khoảng 15s một lần.
      Điều khiển: khi mình nhắn tin có cú pháp đã quy định trước bằng số điện thoại hợp lệ, module sẽ thực hiện lệnh trong nội dung tin nhắn. Em viết điều khiển được 8 thiết bị.
      Vấn đề của em gặp phải là: khi mới nạp xong, bật lên mạch chạy ok, thực hiện đúng. Nhưng sau một thời gian, nhắn tin đến mạch không điều khiển nữa, mà chỉ còn đo nhiệt độ thôi. Bấm reset mạch vẫn thế, không điều khiển được mà chỉ có đo nhiệt độ.(Nhiệt độ em hiện ra LCD), các bác vào góp ý giúp em với.
      góp làm sao khi code/schematic không ai thấy.
      Mãi đi tìm vàng.

      Comment


      • #4
        code của em đây:
        //---------------ngat nhan----------------
        #int_RDA
        receive(){
        enable_interrupts(int_timer1);
        setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
        c=getc(); //nhan tung ky tu
        if(c=='+')c1=c;
        if(c=='C')c2=c;
        if(c=='M')c3=c;
        if(c=='T')c4=c;
        if(c=='I')c5=c;
        if(idx>=buffer_size){ //neu tran bo dem thi
        idx=0; //quay ve dau
        }
        else{
        buffer[idx]=c; //chua tran thi luu tin nhan vao buffer
        idx++;
        }
        if(c1=='+'&&c2=='C'&&c3=='M'&&c4=='T'&&c5=='I'){
        new_sms=true; // neu co +CMTI thi bat co tin nhan moi
        disable_interrupts(int_timer1);
        m=0;
        c1=0x00;c2=0x00;c3=0x00;
        c4=0x00;c5=0x00; //reset noi dung cac bien ci
        }
        if (c=='#') {
        disable_interrupts(int_timer1);
        m=0;
        sms_mode = true; //co ky tu '#' thi goi read_sms()
        }
        return 0;
        }
        //-----------------ngat timer 1------------------
        #int_timer1
        void ngat_timer1(){
        set_timer1(3035); //T=100ms
        m++;
        if(m==14){
        m=0;
        back = true;
        }
        }
        //----------------ngat timer 0---------------
        #int_timer0
        void timer0(){
        set_timer0(6); //T=50us
        k++;
        if(k==40000){
        sensor=true;
        k=0;
        }
        }

        //-------------hàm đọc tin nhắn---------
        void read_sms(){
        char *ptr, *ptr11,*ptr12; //con tro so dien thoai, noi dung tin nhan
        char my_num[] = "979866961"; //mang so dien thoai
        char on_1[] = "on1";
        char off_1[] = "off1";
        ptr=strstr(buffer,my_num);
        ptr11=strstr(buffer,on_1);
        ptr12=strstr(buffer,off_1);
        if(strncmp(ptr,my_num,9)==0){
        if(strncmp(ptr11,on_1,3)==0){
        CLEAR_1_line();
        printf(lcd_putc,"ch1 turned on");
        output_high(pin_B0);
        delay_ms(100);
        }
        if(strncmp(ptr12,off_1,4)==0){
        CLEAR_1_line();
        printf(lcd_putc,"ch1 turned off");
        output_low(pin_B0);
        delay_ms(100);
        }
        }
        else delete_sms();
        }
        //--------------phản hồi sau khi điều khiển xong----------
        void feedback(void){
        printf("ATD0979866961;"); //goi dien den so vua dieu khien
        putc(13);
        delay_ms(10000);
        printf("ATH"); //2 hoi chuong thi gac may
        putc(13);
        delay_ms(1000);
        printf("AT+CMGD=1"); //xoa tin nhan vua nhan duoc
        putc(13);
        delay_ms(500);
        return;
        }
        //----------------do nhiet do-------------------
        void do_nhiet_do(void){
        set_adc_channel(0); //set ADC la chan AN0
        delay_us(100);
        sample=read_adc(); //doc du lieu vao tu ADC
        delay_ms(1);
        value10=sample*0.488758553; //tin toan nhiet do ra so nguyen
        lcd_gotoxy(1,2);
        printf(lcd_putc,"Nhiet do: %Lu oC",value10);
        if(value10>=50){
        send_sms(value10); //neu vuot nguong thi gui tn canh bao
        }
        return;
        }
        //------------------main-----
        void main(){
        set_tris_b(0x00);
        output_b(0x00);
        output_low(pin_c0);
        enable_interrupts(int_timer0);
        enable_interrupts(int_RDA);
        enable_interrupts(global);
        setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
        setup_adc_ports(AN0_AN1_AN3);
        setup_adc(adc_clock_internal);
        lcd_init();
        delay_ms(1000);
        printf(lcd_putc,"Khoi tao LCD...");
        delay_ms(1000);
        clear_LCD();
        printf(lcd_putc,"LCD k/tao xong");
        LCD_GOTOXY(1,2);
        printf(lcd_putc,"KHOI TAO SIM900");
        init_sim900();
        delay_ms(1000);
        erase_buffer();
        CLEAR_LCD();
        while(1){
        lcd_gotoxy(1,1);
        printf(lcd_putc,"....SAN SANG....");
        delay_ms(3000);
        if(new_sms==true){
        printf("AT+CMGR=1");
        putc(13);
        delay_ms(1000);
        if (sms_mode==true){
        delay_ms(100);
        read_sms();
        feedback();
        new_sms=false;
        sms_mode=false;
        //CLEAR_1_line();
        }
        else{
        new_sms=false;
        delete_sms();
        }
        }
        if(back==true){
        back=false;
        disable_interrupts(int_timer1);
        delete_sms();
        }
        if(sensor==true){
        sensor=false;
        do_nhiet_do();
        }
        }
        }

        timer1 ở đây em dùng để tự động xóa bộ đệm do những sự cố trên đường truyền hoặc bất cứ byte ko hợp lệ nào PIC nhận được
        Last edited by thuanhvktqs; 05-04-2013, 11:21.

        Comment


        • #5
          Nguyên văn bởi Lam-dt Xem bài viết
          Bạn thử làm lại mạch theo tiêu chuẩn: Nguồn tốt, mát tốt, chống nhiễu tốt. Xem sao đã. !? Mạch đi hợp lý là rất quan trọng với thể loại này. Dùng loại phíp chất lượng tốt....
          chuẩn rồi bác ạ, mạch em làm bằng tay từ A-Z, bị nhiễu có lẽ do đi dây không chuẩn và chất lượng mạch kém. làm em không kiểm soát được lỗi. em mượn module của đứa bạn (hình như của Hoàng Phát thì phải) chạy thử thì trơn tru, không vấn đề gì. làm em mất mấy ngày đâm đầu vào sửa code, hóa ra do phần cứng . cũng may là chẩn được bệnh

          Comment


          • #6
            Theo như tên nic của bạn thì bạn (đang) học HVKTQS phải không !? Tớ cũng học trường đó ra nhưng từ thời xa lắc khóa 13 cơ, khi đó trường còn đang đóng trên thị xã Vĩnh Yên. Mà tớ học khoa Vật Lý Hạt Nhân cơ, thời chiến tranh lạnh....ANPX là chuyên ngành của tớ, khi VN có nhà máy điện HN thì chắc khóa bọn tớ có lẽ chầu trời hết rồi...Hiện có mấy ông bạn cùng lớp là giáo viên HV...
            Các lãnh đạo nhà nước ta có tầm nhìn...2050 mà, khi sang Nga mới đây còn thấy HV có luu HS đưa đi học ngành Địa Chất Vũ Trụ, Trắc Địa Vũ Trụ.... Lại nhớ ngành học của mình mà cười buồn.
            Last edited by Lam-dt; 05-04-2013, 16:06.

            Comment


            • #7
              Nguyên văn bởi Lam-dt Xem bài viết
              Theo như tên nic của bạn thì bạn (đang) học HVKTQS phải không !? Tớ cũng học trường đó ra nhưng từ thời xa lắc khóa 13 cơ, khi đó trường còn đang đóng trên thị xã Vĩnh Yên. Mà tớ học khoa Vật Lý Hạt Nhân cơ, thời chiến tranh lạnh....ANPX là chuyên ngành của tớ, khi VN có nhà máy điện HN thì chắc khóa bọn tớ có lẽ chầu trời hết rồi...Hiện có mấy ông bạn cùng lớp là giáo viên HV...
              Các lãnh đạo nhà nước ta có tầm nhìn...2050 mà, khi sang Nga mới đây còn thấy HV có luu HS đưa đi học ngành Địa Chất Vũ Trụ, Trắc Địa Vũ Trụ.... Lại nhớ ngành học của mình mà cười buồn.
              vầng ạ. em đang đang học HVKTQS ạ. Thầy tận khóa 13 lận, hơn em 3 chục năm có lẻ rồi . bọn em có học thầy Hoàng RF, thầy Thuyên anten, thầy Trinh thông tin hình như cũng cùng khóa thầy.

              Comment


              • #8
                Haha, được gọi là thầy lại nhớ tớ được phân công công tác về làm giáo viên Trường Sỹ Quan Phòng Hóa, ở Sơn Tây..... Chán bộ đội xin chuyển nghành về làm phó thường dân cho khỏe người. Chán sỹ với quan, chán kỹ sư với đảng viên, bỏ hết cho cuộc đời nó nhẹ nhàng.
                Nếu mấy ông thầy của bạn mà khóa 13, 14, thì mới biết lớp bọn tớ học hồi đó: Lớp Vật Lý Hạt Nhân khóa 13, lớp này ở cùng đại đội với bọn học bên khoa Vô, Hữu tuyến, Radar, tên lửa, đài ĐK...
                Last edited by Lam-dt; 05-04-2013, 16:28.

                Comment


                • #9
                  Nguyên văn bởi Lam-dt Xem bài viết
                  Haha, được gọi là thầy lại nhớ tớ được phân công công tác về làm giáo viên Trường Sỹ Quan Phòng Hóa, ở Sơn Tây..... Chán bộ đội xin chuyển nghành về làm phó thường dân cho khỏe người. Chán sỹ với quan, chán kỹ sư với đảng viên, bỏ hết cho cuộc đời nó nhẹ nhàng.
                  Nếu mấy ông thầy của bạn mà khóa 13, 14, thì mới biết lớp bọn tớ học hồi đó: Lớp Vật Lý Hạt Nhân khóa 13, lớp này ở cùng đại đội với bọn học bên khoa Vô, Hữu tuyến, Radar, tên lửa, đài ĐK...
                  em cũng sắp ra trường rồi, chưa biết phân công công tác thế nào. . ngành của thầy giờ không còn dạy nữa, em cũng học cùng đại đội với radar, tác chiến...
                  khóa các thầy gần về hưu hết rồi thầy ạ, còn vài thầy cũng chuẩn bị về. thầy giờ làm ở đâu ạ?

                  Comment


                  • #10
                    Hahaha, " thầy" tự về hưu sau khi phục vụ QDNDVN đến đại úy thôi. Dân vạn đại. Thích thì làm, không thích thì đi chơi. Vừa đi du lich, hết tiền quay về VN.

                    Comment


                    • #11
                      mấy thầy trò học hệ chính quy, còn tui thì học hệ VB2 đại học Ha Vớt của Thung, thầy Đặng sỹ Vạc. nghĩ lại toi công đi học 2.5 năm ở đó. giờ chả đả động gì đến tấm bằng. ôi đại học Ha Vớt hvktqs.
                      ối post lên. cứ nghĩ là tâm tình kỹ thuật. nhầm mất địa chỉ rồi .
                      nhưng tiện đây em hỏi có con pic 8 chân nào thông dụng và rẻ tiền, cùng với mạch nạp của chúng như thế nào không các pác nhỉ?
                      chỉ có tâm hồn là nơi duy nhất: có thể biến thiên đường thành địa ngục và ngược lại có thể biến địa ngục hóa thiên đường
                      Everything should be made as simple as possible, but not simpler

                      Comment


                      • #12
                        Pic12f 8pins
                        Web:
                        ->Nhận thiết kế, hoàn thiện dự án, sản phẩm điện tử<-
                        -->Giải pháp GSM/GPRS/GPS - Công nghệ RFID<--

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X