Thông báo

Collapse
No announcement yet.

giúp em chống nhiểu thu tín hiệu remote tivi

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

  • giúp em chống nhiểu thu tín hiệu remote tivi

    cho mình hỏi bạn nào có làm về thu tín hiệu remote tivi sony bằng SM0038 sau đó đem vào VDK 89v51rb2 để diều khiển các thiết bị khác chưa ? mình có làm trên testboard nhưng ko hiểu sao tín hiệu thu từ chân vout của sm0038 nhiểu rất nặng , làm sao để mình chống nhiểu tốt hả các pác .mình ráp theo bài của một nhóm DH BK HN thì phải , chắc có nhiều bạn biết bài này. Có IC nào chuyên dụng để nắn xung ko hả các pác ..e cảm ơn nhiều nha !
    |

  • #2
    Nguyên văn bởi nguyentu.hcm Xem bài viết
    cho mình hỏi bạn nào có làm về thu tín hiệu remote tivi sony bằng SM0038 sau đó đem vào VDK 89v51rb2 để diều khiển các thiết bị khác chưa ? mình có làm trên testboard nhưng ko hiểu sao tín hiệu thu từ chân vout của sm0038 nhiểu rất nặng , làm sao để mình chống nhiểu tốt hả các pác .mình ráp theo bài của một nhóm DH BK HN thì phải , chắc có nhiều bạn biết bài này. Có IC nào chuyên dụng để nắn xung ko hả các pác ..e cảm ơn nhiều nha !
    món này cũng hay đó .. thông thường trên thị trường có bán sẵn cặp thu phát pt..nhưng dùng vdk thì hay hơn hình như bữa trước..có anh nào trên diễn đàn có nói sơ về bài dạy cho vdk cũng về vấn đề này anh tìm hiểu coi...

    Theo em được bít thì trong xung điều khiển của remote để nó nhận lệnh từ một phím bấm nào đó sẽ có một số bít tín hiệu nhất định 7 hoặc 8 gì đó .. mà chỉ mấy bít sau là có tác dụng về lệnh cụ thể... bởi vậy vấn em nghĩ có lẽ sẽ dùng ngắt và lấy mẫu chuẩn của từng phím lưu lại ! anh tham khảo các anh tiền bối trên diễn đàn..!

    Comment


    • #3
      Nguyên văn bởi nguyentu.hcm Xem bài viết
      mình có làm trên testboard nhưng ko hiểu sao tín hiệu thu từ chân vout của sm0038 nhiểu rất nặng !
      nhiễu nặng là sao u ?
      Đừng đưa chân OUT của SM0038 vào ngắt ( làm như thế thì ngắt liên tục xảy ra - do nhiễu) . Nên đưa vào 1 chân bất kỳ , sau đó dùng vòng lặp kiểm tra .
      - Nếu chân OUT =0 , chờ 1s , kiểm tra vẫn tiếp tục =0 thì mới gọi hàm thu IR
      - còn sau 1s , OUT lên =1 thì break ngay , thực hiện lại vòng lặp

      Comment


      • #4
        Nguyên văn bởi Zz_Bi_zZ Xem bài viết
        nhiễu nặng là sao u ?
        Đừng đưa chân OUT của SM0038 vào ngắt ( làm như thế thì ngắt liên tục xảy ra - do nhiễu) . Nên đưa vào 1 chân bất kỳ , sau đó dùng vòng lặp kiểm tra .
        - Nếu chân OUT =0 , chờ 1s , kiểm tra vẫn tiếp tục =0 thì mới gọi hàm thu IR
        - còn sau 1s , OUT lên =1 thì break ngay , thực hiện lại vòng lặp
        nhưng mình đâu có khởi động chế độ ngắt đâu ? mình nghi ngờ dạng sóng mà con SM0038 thu được không được đẹp , tức là xung vuông ko tốt , lại ko phải lúc 5v, lúc 0 v. nên VDK đọc sai be bét. nhấn phím nào của remote nó cũng đọc hết, trong khi mình gải mã có 8 phím à. mà đọc tùm lum hết.bạn biết cách đo dạng sóng của SM0038 dùng máy tính ko? để mình thử coi phải như thế ko? cái remote tivi Sony của mình là hàng TÀU mua ở NT. ko biết như thế tín hiệu có bị ảnh hưởng gì ko ta?có phương pháp nào chống nhiểu cho sm0038 ko? bạn nào biết chỉ jùm mình với nha. thanks Zz_Bi_zZ nha!
        |

        Comment


        • #5
          cách tốt nhất là u làm thế này

          đầu ra IR đưa vào 1 chân bất kỳ của VDK
          & thử đổi con mắt thu xem . Tui dùng remote
          thu vẫn tốt
          Last edited by Zz_Bi_zZ; 10-04-2009, 10:24.

          Comment


          • #6
            cảm ơn bạn nhiều lắm , dể mình thử xem ! đầu tiên mình cũng định dùng con tranistor để nắn xung nhưng sợ nó đáp ứng ko kịp nên mình hỏi IC , giờ thấy bạn dùng ok nghĩ cũng mừng .để mình thữ đã.thanks lần nữa nha !
            |

            Comment


            • #7
              van ko duoc bạn ơi, mạch mình vẽ thế này :

              đoạn code mình thế này :
              Code:
              ORG 00
              MOV P1,#0
              MOV P2,#00000111B
              LCALL LONG_DELAY		; Cho tÝn hiÖu ®Çu tiªn nhËn ®­îc kh«ng bÞ sai
              MAIN:
              SETB P3.3				; P3.3 lµm ®Çu vµo nhËn tÝn hiÖu
              ; B­íc 1
              MOV A,#01000000B			; Sau 7 lÇn quay (RRC A) th× C = 1 ®Ó kiÓm tra.
              ; B­íc 2
              RP1:     JB  P3.3, RP1			; Chê cho tÝn hiÖu ®i xuèng
              ; B­íc 3
              RP2:     JNB P3.3, RP2		; Chê cho tÝn hiÖu ®i lªn
              ; B­íc 4
              RP3:     JB  P3.3, RP3			; Chê cho tÝn hiÖu ®i xuèng
              LCALL DELAY			; T¹o trÔ 900 us 
              MOV C,P3.3				; Ghi tÝn hiÖu thu ®­îc vµo C ®Ó ®o
              JC BIT0				; NÕu tÝn hiÖu møc cao th× bit nhËn ®­îc lµ bit 0
              SETB C				; TÝn hiÖu møc thÊp , bit nhËn ®­îc lµ bit 1
              RRC A					; Ghi  tõng bit m• lÖnh vµo A
              JC END_SIGNAL			; NÕu C = 1 th× ®• nhËn ®ñ 7 bit m• lÖnh, kÕt thóc
              ; nhËn 
              				; kÕt thóc qu¸ tr×nh nhËn tÝn hiÖu
              SJMP RP2				; NÕu C = 0 th× quay l¹i b­íc 3 chê tÝn hiÖu tiÕp theo
              BIT0:
              CLR C					; TÝn hiÖu møc cao, bit nhËn ®­îc lµ bit 0
              RRC A
              JC END_SIGNAL			; NÕu C = 1 th× ®• nhËn ®ñ 7 bit m• lÖnh, kÕt thóc
              ; nhËn 
              				; kÕt thóc qu¸ tr×nh nhËn tÝn hiÖu
              SJMP RP3				; NÕu C = 0 th× quay l¹i b­íc 4 chê tÝn hiÖu tiÕp theo	
              END_SIGNAL:			; KÕt thóc qu¸ tr×nh nhËn tÝn hiÖu
              LCALL LONG_DELAY		; T¹o trÔ ®Ó chèng nhiÔu
              					; 7 bit tr¸i cña A ®ang chøa m• lÖnh, bit LSB = 0
              RR A					; 7 bit bªn ph¶i cña A chøa m• lÖnh, bit MSB = 0
              MOV P1, A				; HiÓn thÞ m• lÖnh ra cæng P1
              ;------------------------------------------------------------------------------
              ; Mçi mét nót bÊm ®­a tÝn hiÖu ra mét ch©n cña VXL
              ; ë ®©y chØ ®­a tÝn hiÖu ®iÒu khiÓn ra 8 ch©n cña cæng P2
              ; BÊm phÝm 1 th× ®¶o møc ch©n P2.0
              ; ...
              ; BÊm phÝm 8 th× ®¶o møc ch©n P2.7
              ; Sö dông cÊu tróc If ...  Then ®Ó kiÓm tra phÝm bÊm
              ; KiÓm tra xem phÝm bÊm cã ph¶i phÝm 1 kh«ng ? NÕu ®óng th× thùc hiÖn ®¶o bit P2.0 råi   ; quay  l¹i tõ ®Çu
              ; NÕu kh«ng ph¶i phÝm 1 th× kiÓm tra xem ph¶i phÝm 2 kh«ng ? ...
              ;------------------------------------------------------------------------------
              KEY_1:			
              CJNE A,#00000000B,KEY_2		; BÊm phÝm 1 ?
              ;---KEY = 1---
              CPL P2.0				; §¶o bit sau ®ã
              SJMP MAIN				; quay l¹i tõ ®Çu
              ;-------------
              KEY_2:
              CJNE A,#1,KEY_3			; BÊm phÝm 2 ?
              ;-------------
              ;---KEY = 2---
              CPL P2.1
              SJMP MAIN
              ;-------------
              KEY_3:
              CJNE A,#2,KEY_4			; BÊm phÝm 3 ?
              ;-------------
              ;---KEY = 3---
              CPL P2.2
              SJMP MAIN
              ;-------------
              KEY_4:
              CJNE A,#3,KEY_5			; BÊm phÝm 4 ?
              ;-------------
              ;---KEY = 4---
              CPL P2.3
              SJMP MAIN
              ;-------------
              KEY_5:
              CJNE A,#4,KEY_6			; BÊm phÝm 5 ?
              ;-------------
              ;---KEY = 2---
              CPL P2.4
              LJMP MAIN
              ;-------------
              KEY_6:
              CJNE A,#5,KEY_7			; BÊm phÝm 6 ?
              ;-------------
              ;---KEY = 6---
              CPL P2.5
              LJMP MAIN
              ;-------------
              KEY_7:
              CJNE A,#6,KEY_8			; BÊm phÝm 7 ?
              ;-------------
              ;---KEY = 7---
              CPL P2.6
              LJMP MAIN
              ;-------------
              KEY_8:
              CJNE A,#7,OTHER_KEY		; BÊm phÝm 8 ?
              ;-------------
              ;---KEY = 8---
              CPL P2.7
              LJMP MAIN
              ;-----------------------------------
              OTHER_KEY:			; BÊm c¸c phÝm kh¸c 1--8 th× kh«ng lµm g× 
              LJMP MAIN				; quay l¹i thùc hiÖn tõ ®Çu
              ;-----------------------------------
              ; C¸c ch­¬ng tr×nh con
              ;-----------------------------------
              DELAY:				; T¹o trÔ 900 s
              MOV R5,#165			; Thêi gian trÔ b»ng 165 x 5 x 1.085 s  = 900 s
              AGAIN:     	NOP
                     		NOP
                     		NOP
                     		DJNZ R5,AGAIN
              RET
              ;-----------------------------------
              LONG_DELAY:			; T¹o trÔ dµi ®Ó chèng nhiÔu
              MOV R5,#50
              REPEAT: 
              MOV R6,#255
              HERE:	
              DJNZ R6,HERE
                     	DJNZ R5,REPEAT
                     	RET
              ;------------------------------------------------------------------------------------------
              ; 		       M• lÖnh ®iÒu khiÓn TV SONY 
              ;------------------------------------------------------------------------------------------
              ;                      TÝn hiÖu tíi P3.3         PhÝm          	M• lÖnh (HEXA)
              ;                             -----------            ----------    	     --------------
              ;		    00000000B    	; 1			; 0
              ;	   	    00000001B		; 2			; 1
              ;		    00000010B		; 3			; 2
              ;		    00000011B		; 4			; 3
              ;		    00000100B		; 5			; 4
              ;		    00000101B		; 6			; 5
              ;		    00000110B		; 7			; 6
              ;		    00000111B		; 8			; 7
              ;		    00001000B		; 9			; 8
              ;		    00001001B		; 10			; 9
              ;		    00010000B		; PROGRAM +	; 10
              ;		    00010001B		; PROGRAM -	; 11
              ;		    00010010B		; VOLUME  +		; 12
              ;		    00010011B		; VOLUME  -		; 13
              ;		    00010100B		; MUTING		; 14
              ;		    00010101B		; POWER		; 15
              ;		    00111010B		; DISPLAY		; 3A      
              ;------------------------------------------------------------------------------------------
              END
              no giai ma sai tùm lum, bấm phím khác mấy phím trên nó cũng sai . Bạn xem và cho mình ý kiến nha. thanks bạn nhiều lắm .
              |

              Comment


              • #8
                sr , tui chỉ viết C , đọc ASM tui nhác lám .

                Đây là mạch DKTX , tui làm để gắn thêm vào cái Cát sét Panasonic . (LCD gắn vào chỉ để biết là ta thu và hiện đúng số trên remote hay ko thui , dùng 74164 gửi dữ liệu ra LCD) . ngày xưa còn non tay nên viết kiểu tường minh , u có thể đổi thuật toán dịch bit để ct đc gọn & pro hơn
                Code:
                #include<AT89S53.h>
                
                sbit IR  = 0x90; // IR  = P1_0
                sbit RS = 0x91; // RS = P1_1
                sbit E  = 0x92; // E  = P1_2
                
                unsigned char a=0xFF;
                unsigned char b=0xFF;
                unsigned char c=0;
                
                void delay_ms( unsigned int ms )
                { unsigned int i,j;
                  for (i=0;i<ms;i++)
                  for (j=0;j<120;j++){};
                }
                
                void delay_900us(void)
                { TMOD= 0x01;
                  TL0 = 0xB7; //830
                  TH0 = 0xFC;
                  TR0 = 1;
                  while(!TF0) continue;
                  TR0 = TF0 = 0 ;
                }
                void delay_20us(void)
                { TMOD= 0x01;
                  TH0 = 0xFF;
                  TL0 = 0xEB;
                  TR0 = 1;
                  while(!TF0) continue;
                  TR0 = TF0 = 0 ;
                }
                
                void LCD_PulseEnable ( void )
                {E=1;delay_ms(1);
                 E=0;delay_ms(3);
                }
                
                void LCD_PutCmd(unsigned char k)
                { RS =0;
                  transdata(k);LCD_PulseEnable();
                  for(c=0;c<=3;c=c+1){RX=1;delay_20us();RX=0;};
                  LCD_PulseEnable();
                }
                void LCD_PutChar(unsigned char k)
                { RS =1;   
                  transdata(k);LCD_PulseEnable();
                  for(c=0;c<=3;c=c+1){RX=1;delay_20us();RX=0;};
                  LCD_PulseEnable();
                }
                void LCD_Init ( void )
                {  delay_ms(50);
                   LCD_PutCmd(0x03);delay_ms(5);
                   LCD_PutCmd(0x03);delay_ms(1);
                   LCD_PutCmd(0x03);delay_ms(1);
                   LCD_PutCmd(0x06); // dich con tro sang phai
                   LCD_PutCmd(0x0C); // bat hien thi ,tat con tro
                   LCD_PutCmd(0x28); // 4 bit , 5x8
                   LCD_PutCmd(0x01); // xoa man hinh
                   LCD_PutCmd(0x02); // ve dau dong
                }
                
                void scanIR()
                { delay_900us();       //0
                  if(IR) {a= a&0xFE;};
                  
                  delay_900us();     //1
                  if(IR) {a= a&0xFD;};
                  
                  delay_900us();    //2
                  if(IR) {a= a&0xFB;};
                
                  delay_900us();    //3
                  if(IR) {a= a&0xF7;};
                
                  delay_900us();    //4
                  if(IR) {a= a&0xEF;};
                 
                  delay_900us();    //5
                  if(IR) {a= a&0xDF;};
                
                  delay_900us();    //6
                  if(IR) {a= a&0xBF;};
                
                  delay_900us();    //7 bit 0 ma dia chi
                  if(IR) {a= a&0x7F;};
                  
                  delay_900us();    // bit 1 ma dia chi
                  if(IR) {b= b&0xFE;};
                
                  delay_900us();    // bit 2 ma dia chi
                  if(IR) {b= b&0xFD;};
                
                  delay_900us();    // bit 3 ma dia chi
                  if(IR) {b= b&0xFB;};
                
                  delay_900us();    // bit 4 ma dia chi
                  if(IR) {b= b&0xF7;};
                
                  delay_900us();    //4
                  if(IR) {b= b&0xEF;};
                 
                  delay_900us();    //5
                  if(IR) {b= b&0xDF;};
                
                  delay_900us();    //6
                  if(IR) {b= b&0xBF;};
                
                  delay_900us();    //7 bit 0 ma dia chi
                  if(IR) {b= b&0x7F;};
                }
                void giaima(unsigned char i,unsigned char j )
                { if((i==0x56&&j==0xBD)||(i==0x56&&j==0xB9)){ LCD_PutChar('O');LCD_PutChar('N');};
                  if(j==0xB6) 								{ LCD_PutChar('1');};
                  if(j==0x49) 								{ LCD_PutChar('2');};
                  if(i==0x4E&&j==0x4A) 						{ LCD_PutChar('3');};
                  if(i==0xBD&&j==0xB5) 						{ LCD_PutChar('4');};
                  if(i==0x4E&&j==0x4E)						{ LCD_PutChar('5');};
                  if((i==0xBD&&j==0xB9)||(i==0xB9&&j==0xB9)){ LCD_PutChar('6');};
                  if((i==0xB9&&j==0xBA)||(i==0xBD&&j==0xBA)){ LCD_PutChar('7');};
                  if(i==0x56&&j==0x55) 						{ LCD_PutChar('8');};
                  if(i==0x4E&&j==0x56) 						{ LCD_PutChar('9');};
                  if(i==0xBD&&j==0xA9) 						{ LCD_PutChar('0');};
                  
                  if((i==0xBD&&j==0x56)||(i==0xB9&&j==0x56)){ LCD_PutChar('S');LCD_PutChar('M');};
                  if((i==0xBD&&j==0xCE)||(i==0xBD&&j==0xCA)){ LCD_PutChar('V');LCD_PutChar('+');};
                  if(i==0x4E&&j==0x76)						{ LCD_PutChar('P');LCD_PutChar('+');};
                  if(i==0x56&&j==0xB5)						{ LCD_PutChar('V');LCD_PutChar('-');};
                  if((i==0xB9&&j==0xC9)||(i==0xBD&&j==0xC9)){ LCD_PutChar('P');LCD_PutChar('-');};
                
                }
                main()
                { 
                  LCD_Init();
                 
                  
                  while(1)
                  {																		 
                  
                  HERE : while(IR) continue ; 
                  delay_ms(1);
                  if(IR) goto HERE;
                  while(!IR) continue;
                  while(IR) continue ;
                  
                  scanIR();
                  
                  
                  P2=a; 
                  P3=b; 
                  
                  LCD_PutCmd(0x01);
                  LCD_PutCmd(0x84);
                  giaima(b,a);
                  delay_ms(1000);
                  a=b=0xFF;
                  P2=P3=0x00;
                  };
                }

                Comment


                • #9
                  nhờ có bác mà em thấy đúng là "Núi lùn lại còn có núi lùn hơn" nhờ bác mà có lẽ em sáng cái mắt mà khỏi cần nhỏ vroto tiết kiệm được 35k! thanks bác nhiều nhiều lắm! để em làm thử cái mạch này sử dụng thằng sorny nếu được sẽ quay lại thanks phát nữa!

                  Comment


                  • #10
                    tôi cũng có 1 chương trình giải mã nhưng câu lệnh C ngắn gọn và dễ hiểu hơn của bạn nhiều
                    mail: dongsongbang_dld@yahoo.com
                    Nhận làm mạch vi điều khiển, ghép nối máy tính, mạch xung số
                    mail:
                    dd: 0973423905

                    Thương trường là chiến trường. tiến lên để kiếm tiền

                    Comment


                    • #11
                      Nếu có thì up lên đây cho mọi người tham khảo, mail chi cho mất công kiểm tra mail hả pác
                      Cuộc đời như bánh omi, không biết rồi sẽ về đâu?

                      Comment


                      • #12
                        luc khac tôi gửi
                        Nhận làm mạch vi điều khiển, ghép nối máy tính, mạch xung số
                        mail:
                        dd: 0973423905

                        Thương trường là chiến trường. tiến lên để kiếm tiền

                        Comment


                        • #13
                          mình up đoạn code của bạn cdt0031 lên nè


                          #include <REGX52.H>
                          sbit thietbi1 =P2^0;
                          sbit thietbi2 =P2^1;
                          sbit thietbi3 =P2^2;
                          sbit thietbi4 =P2^3;
                          #define IR P3_2
                          /**************Cac chuong trinh con*******************/
                          /***********Ham tre**************/
                          delay(unsigned int time)
                          {
                          unsigned int i;
                          for(i=0;i<=time;i++);
                          }
                          /***********Giai ma**************/
                          giai_ma(unsigned char command)
                          {
                          switch (command)
                          {
                          case 0: thietbi1=~thietbi1; break;
                          case 1: thietbi2=~thietbi2; break;
                          case 2: thietbi3=~thietbi3; break;
                          case 3: thietbi4=~thietbi4; break;
                          }

                          }
                          /**********Doc du lieu**********/
                          void read_data()
                          {
                          unsigned char command;
                          unsigned int time;
                          unsigned char i;
                          while(IR==0);
                          TR0=1;
                          while(IR==1);
                          TR0=0;
                          time=TH0*256+TL0;
                          TH0=TL0=0;
                          if(time>2400) //Bit start
                          {
                          command=0;
                          for(i=0;i<7;i++) //Doc 7 bit command
                          {
                          while(IR==0);
                          TR0=1;
                          while(IR==1);
                          TR0=0;
                          time=TH0*256+TL0;
                          TH0=TL0=0;
                          if(time>900)
                          command=command+(1<<i);
                          }
                          //Doc 5 bit address
                          giai_ma(command);

                          }
                          }
                          //Chuong trinh chinh
                          void main()
                          {
                          unsigned int time;
                          unsigned char command=0;
                          TMOD=0x01;
                          while(1)
                          {
                          read_data();
                          delay(30000);
                          }


                          }

                          Comment


                          • #14
                            CÁC BÁC XEM CHƯƠNG TRÌNH NÀY CÓ NHƯỢC ĐIỂM GÌ KHÔNG NHỈ?
                            em sưu tầm được nhưng thấy họ làm ngắt ngoài mà kỳ quá.
                            http://suachuadientu.net/Thread-mach...n-at89s52--112

                            Comment


                            • #15
                              bạn nào muốn tham khảo thi liên hệ mình làm rồi nè .chương trình viết bằng C sử dung 89c51 .dung ngắt ngoài và timer0 để giải mã.

                              giai ma remote TV.wmv - YouTube

                              duongvanthuyqt@yahoo.com

                              Đại học Đà Lạt

                              Comment

                              Về tác giả

                              Collapse

                              nguyentu.hcm Tìm hiểu thêm về nguyentu.hcm

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

                              Collapse

                              Đang tải...
                              X