Thông báo

Collapse
No announcement yet.

Đã có ai soi xung tại chân thạch anh bao giờ chưa?

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

  • Đã có ai soi xung tại chân thạch anh bao giờ chưa?

    VVM có lấy máy hiện sóng soi trên chân của con mega8 thach anh 8M, nhưng chăng thấy gì cả.
    * Bo mạch MX(Máy hàn, mạ, điện hóa, anot, động cơ DC, điều khiển thyristor, IGBT, Triac.
    * Tự động hóa trong công nghiệp.

    Mail: Phone: 0982006716-0984163716

  • #2
    Nguyên văn bởi vuongvanminh Xem bài viết
    VVM có lấy máy hiện sóng soi trên chân của con mega8 thach anh 8M, nhưng chăng thấy gì cả.
    Hoặc không biết chỉnh , hoặc osc cùi quá, bandwidth, độ nhạy không cao nên không soi được
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

    Comment


    • #3
      Xung ở đó mạnh và chuẩn nhất! Hầu như thằng nào nghịch MCU mà chả ngó ngoáy đo chỗ đó. Ngày xưa dùng máy cùi bắp 20M đo chỗ đó vẫn ngon mà!
      Tập đoàn MIN, MOD là đao phủ của tự do ngôn luận!

      Comment


      • #4
        thật đấy! máy của VVM là máy số 40M. có soi nhưng chẳng thấy gì cả.
        * Bo mạch MX(Máy hàn, mạ, điện hóa, anot, động cơ DC, điều khiển thyristor, IGBT, Triac.
        * Tự động hóa trong công nghiệp.

        Mail: Phone: 0982006716-0984163716

        Comment


        • #5
          Nguyên văn bởi vuongvanminh Xem bài viết
          thật đấy! máy của VVM là máy số 40M. có soi nhưng chẳng thấy gì cả.

          Hoặc là bác để "nhầm" thang hay chế độ đo gì đó, chứ với Máy Oscilloscope 40MHz mà đo xung của XTal 8MHz thì phải lên ngon lành. Tôi vẫn thường kiểm tra xem 1 con MCU có chạy hay không bằng phép thử đầu tiên này (sau khi đo kiểm tra nguồn Vcc v.v...). Tất nhiên là khi các chức năng của MCU im lìm hết thì mới cần làm vậy. Và dạng sóng thu được thì thường là 1 đường gần giống hình SIN, tần số 8MHz (có sai lệch chút ít mà thôi).

          Comment


          • #6
            Xung nó chuẩn lắm pác .. hình sin, e dùng ốc si lô 200M đo, báo tần số cũng chính xác, biên độ hơi nhỏ tí.

            Comment


            • #7
              Đây là dạng xung trên chân 7 (OSC1) của ATMEGA8 có thể nhận thấy hình sin khá đẹp , biên độ thấp và không nhìn thấy hài xuất hiện.


              --- Còn đây là tín hiệu trên chân số 8 ( OSC2 ) , có thể nhìn thấy ngay trên màn hình xung sin và tín hiệu không được tốt lắm ngoài tần số chính 8 Mhz còn có các hài bậc 2 ,3,4 ,5 ở các tần số 16Mhz , 24 Mhz , 32 Mhz , 40 Mhz




              ---- Thí nghiệm sử dụng ATMEGA8 , điện áp 3,3V ( LM1117-3.3 ) , thạch anh 8Mhz ngoài , tụ 27p nối tại các chân 7 , 8 của ATMEGA8 .
              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

              Comment


              • #8
                Thế mới lạ, khi nạp file có set thạch anh ngoài. vdk có chạy nhưng độ tin cậy không cao chạy lung tung như bị nhiễu. ví dụ con motor dc dừng khi cảm biến on sau 1s. có lúc thì khoảng 1s nó dừng, cũng có lúc chỉ khoảng 0.2 s thôi. thế mới lạ chứ. suy đoán: chỉ có xung thạch anh cấp cho VDK không ổn định(mặc dù điều đó khó sẩy ra). Khi VVM đo xung trên con mega8 thì không thấy xung gì cả. thế mới lạ chứ.
                Mong anh em giúp đỡ VVM xem code có chỗ nào bất thường không?
                code đây!
                //Cac truong hop khac chua tinh den

                /*
                Bat nguon:
                - M1,M2 chay luon.
                - contacto, Cb ON, Cb Off, phim start san sang.
                Neu:
                - Cb1 ON thi Ctt ON , sang LED trong 1 khoang thoi gian roi tat,
                - Cb2 ON thi Ctt OFF --> Cb2 ko ON thi chua dc OFF Ctt
                - Cb1 ON va bi giu muc 1 den 0,2s thi ngat M3
                - Cb1 ON duoc nha ra trong < 0,5s thi M3 tu chay lai.
                - Cb1 ON va bi giu muc 1 den 0.5s thi OFF M1,M2, ctt,
                - Cb1 OFF thi chay nhu luc moi bat nguon.

                Neu bam start:
                - M3 chay tu tu len voi toc do dat
                */

                #include <mega8.h>
                #include <delay.h>

                #define Start PIND.3 //chan 5
                #define Pause PIND.2 //chan4
                #define Cb1 PIND.0 //chan 2
                #define Cb2 PIND.1 //chan 3
                #define Var4 adc_data[2]
                #define Var3 adc_data[0]
                #define Var2 adc_data[1]
                #define Var1 adc_data[3]
                #define Motor1 OCR1AL
                #define Motor2 OCR1BL
                #define Motor3 OCR2
                #define Ctt PORTB.4
                #define On 1
                #define Off 0
                // muc 0 la muc tich cuc
                unsigned char flag,run, st;
                unsigned long dem,dem1, dst; // bien dem de tinh thoi gian tu luc co tin hieu Cb1
                //unsigned long t_Led=2000; // thoi gian de Led tu tat
                unsigned long t_M3; // thoi gian de M3 tat
                unsigned long t_M4;
                //////////////////////////////////////////////////////////
                #include <delay.h>
                #define FIRST_ADC_INPUT 0
                #define LAST_ADC_INPUT 3
                unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
                #define ADC_VREF_TYPE 0x20

                // ADC interrupt service routine
                // with auto input scanning
                interrupt [ADC_INT] void adc_isr(void)
                {
                static unsigned char input_index=0;
                // Read the 8 most significant bits
                // of the AD conversion result
                adc_data[input_index]=ADCH;
                // Select next ADC input
                if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
                input_index=0;
                ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
                // Delay needed for the stabilization of the ADC input voltage
                delay_us(10);
                // Start the AD conversion
                ADCSRA|=0x40;
                }
                /////////////////////////////////////////////
                interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                {
                TCNT0=0xFA;
                t_M3 = Var4; // thoi gian t_M3 toi da la 255*2= 510

                t_M4 =4*t_M3;
                if(Start==0) dst++;
                if(dst==80) st=1;
                if((Cb1==0 && Pause==1)) //neu cam bien 1 ON
                {

                Ctt=On; // ON contactor
                flag=1; //De tinh thoi gian cho Led
                dem++; //dem thoi gian tu luc co cam bien ON
                //if(dem>t_Led) { Led=Off; flag=0; } // Cb1 ON den t_Led thi tat Led
                if(dem>(t_M4+200)) {Motor3 =255; } // Cb1 ON den t_M3 thi tat M3
                if(dem>(t_M4+300)) {Motor2 =255; }
                if(dem>(t_M4+500))
                {Motor1 =255;Ctt=Off;Motor2 =255;Motor3 =255;}


                if(dem>(t_M4+1000))
                {run=0; TIMSK=0x00;}
                }
                if(run==0)
                {Motor2=255;
                Motor3=255;
                }

                if(flag)//cho tinh thoi gian cho Led
                {

                dem1++; //dem thoi gian ON Led
                }
                if(dem1>(t_M4+1600)) {dem1=0;Ctt=Off;} //Sau thoi gian t_Led thi off Led, tien the off luon ca Ctt
                if((dem==0)&& run) {Motor3 =Var3; Motor2 =Var2;} //M3 tu dong chay lai
                }
                //////////////////////////////////////////////////

                void setup_io(void)
                {
                DDRB=0xFF; //Output
                PORTB=0x00; // muc1

                DDRC=0x00; //input
                PORTC=0x00; //muc 0

                DDRD=0x00; //input
                PORTD=0xFF; //muc 1
                }
                ///////////////////////////////////////////////////

                void setup_timer(void)
                {
                // Timer0
                // Clock source: System Clock
                // Clock value:125.000 kHz
                TCCR0=0x03;
                TCNT0=0xFA; //0xFA=250
                // tan so TIMER1: 1000.000 kHz
                // che do: Ph. correct PWM top=00FFh
                // OC1A la dau ra dao PWM
                // OC1B la dau ra dao PWM
                TCCR1A=0xF1;
                TCCR1B=0x02;
                // tan so TIMER2: 1000.000 kHz
                // che do: Phase correct PWM top=FFh
                // OC2 la dau ra dao PWM
                TCCR2=0x72;

                MCUCR=0x02; //cho phep ngat toan cuc
                TIMSK=0x00; //ko cho phep ngat Timer0
                }
                ////////////////////////////////////////////
                void setup_adc(void)
                {
                // ADC Clock: 250.000 kHz
                // ADC Voltage Reference: AREF pin
                // Only the 8 most significant bits of
                // the AD conversion result are used
                ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
                ADCSRA=0xCD;
                SFIOR&=0x1F;
                }
                void main(void)
                {
                setup_io();
                setup_timer();
                setup_adc();
                delay_ms(1);
                #asm("sei")
                while (1)
                { while(Pause==1)
                {
                if(Cb1) //Khi khong co Cb1 thi chay nhu sau
                {
                Motor1= Var1;
                dem=0;
                flag=0;

                TIMSK=0x01; //cho phep chay Timer0
                }

                if(Cb2==0) dem1=0;

                if((Cb2==0)&&Cb1) //Khi co Cb2 nhung khong co Cb1 thi moi tat Ctt, neu khong Ctt van chay binh thuong
                {
                Ctt=Off;

                }
                if(Start) {dst=0; st=0;}
                if(st==1) //bam Start khoi dong cho M3
                {
                while(Start == 0);
                delay_ms(2);
                run=1;
                }
                }

                Motor1= 255;
                Motor2=255;
                Motor3=255;
                Ctt=Off;

                };
                }
                * Bo mạch MX(Máy hàn, mạ, điện hóa, anot, động cơ DC, điều khiển thyristor, IGBT, Triac.
                * Tự động hóa trong công nghiệp.

                Mail: Phone: 0982006716-0984163716

                Comment


                • #9
                  Nguyên văn bởi vuongvanminh Xem bài viết
                  Thế mới lạ, khi nạp file có set thạch anh ngoài. vdk có chạy nhưng độ tin cậy không cao chạy lung tung như bị nhiễu. ví dụ con motor dc dừng khi cảm biến on sau 1s. có lúc thì khoảng 1s nó dừng, cũng có lúc chỉ khoảng 0.2 s thôi. thế mới lạ chứ. suy đoán: chỉ có xung thạch anh cấp cho VDK không ổn định(mặc dù điều đó khó sẩy ra). Khi VVM đo xung trên con mega8 thì không thấy xung gì cả. thế mới lạ chứ.
                  Mong anh em giúp đỡ VVM xem code có chỗ nào bất thường không?
                  code đây!
                  //Cac truong hop khac chua tinh den

                  /*
                  Bat nguon:
                  - M1,M2 chay luon.
                  - contacto, Cb ON, Cb Off, phim start san sang.
                  Neu:
                  - Cb1 ON thi Ctt ON , sang LED trong 1 khoang thoi gian roi tat,
                  - Cb2 ON thi Ctt OFF --> Cb2 ko ON thi chua dc OFF Ctt
                  - Cb1 ON va bi giu muc 1 den 0,2s thi ngat M3
                  - Cb1 ON duoc nha ra trong < 0,5s thi M3 tu chay lai.
                  - Cb1 ON va bi giu muc 1 den 0.5s thi OFF M1,M2, ctt,
                  - Cb1 OFF thi chay nhu luc moi bat nguon.

                  Neu bam start:
                  - M3 chay tu tu len voi toc do dat
                  */

                  #include <mega8.h>
                  #include <delay.h>

                  #define Start PIND.3 //chan 5
                  #define Pause PIND.2 //chan4
                  #define Cb1 PIND.0 //chan 2
                  #define Cb2 PIND.1 //chan 3
                  #define Var4 adc_data[2]
                  #define Var3 adc_data[0]
                  #define Var2 adc_data[1]
                  #define Var1 adc_data[3]
                  #define Motor1 OCR1AL
                  #define Motor2 OCR1BL
                  #define Motor3 OCR2
                  #define Ctt PORTB.4
                  #define On 1
                  #define Off 0
                  // muc 0 la muc tich cuc
                  unsigned char flag,run, st;
                  unsigned long dem,dem1, dst; // bien dem de tinh thoi gian tu luc co tin hieu Cb1
                  //unsigned long t_Led=2000; // thoi gian de Led tu tat
                  unsigned long t_M3; // thoi gian de M3 tat
                  unsigned long t_M4;
                  //////////////////////////////////////////////////////////
                  #include <delay.h>
                  #define FIRST_ADC_INPUT 0
                  #define LAST_ADC_INPUT 3
                  unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
                  #define ADC_VREF_TYPE 0x20

                  // ADC interrupt service routine
                  // with auto input scanning
                  interrupt [ADC_INT] void adc_isr(void)
                  {
                  static unsigned char input_index=0;
                  // Read the 8 most significant bits
                  // of the AD conversion result
                  adc_data[input_index]=ADCH;
                  // Select next ADC input
                  if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
                  input_index=0;
                  ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
                  // Delay needed for the stabilization of the ADC input voltage
                  delay_us(10);
                  // Start the AD conversion
                  ADCSRA|=0x40;
                  }
                  /////////////////////////////////////////////
                  interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                  {
                  TCNT0=0xFA;
                  t_M3 = Var4; // thoi gian t_M3 toi da la 255*2= 510

                  t_M4 =4*t_M3;
                  if(Start==0) dst++;
                  if(dst==80) st=1;
                  if((Cb1==0 && Pause==1)) //neu cam bien 1 ON
                  {

                  Ctt=On; // ON contactor
                  flag=1; //De tinh thoi gian cho Led
                  dem++; //dem thoi gian tu luc co cam bien ON
                  //if(dem>t_Led) { Led=Off; flag=0; } // Cb1 ON den t_Led thi tat Led
                  if(dem>(t_M4+200)) {Motor3 =255; } // Cb1 ON den t_M3 thi tat M3
                  if(dem>(t_M4+300)) {Motor2 =255; }
                  if(dem>(t_M4+500))
                  {Motor1 =255;Ctt=Off;Motor2 =255;Motor3 =255;}


                  if(dem>(t_M4+1000))
                  {run=0; TIMSK=0x00;}
                  }
                  if(run==0)
                  {Motor2=255;
                  Motor3=255;
                  }

                  if(flag)//cho tinh thoi gian cho Led
                  {

                  dem1++; //dem thoi gian ON Led
                  }
                  if(dem1>(t_M4+1600)) {dem1=0;Ctt=Off;} //Sau thoi gian t_Led thi off Led, tien the off luon ca Ctt
                  if((dem==0)&& run) {Motor3 =Var3; Motor2 =Var2;} //M3 tu dong chay lai
                  }
                  //////////////////////////////////////////////////

                  void setup_io(void)
                  {
                  DDRB=0xFF; //Output
                  PORTB=0x00; // muc1

                  DDRC=0x00; //input
                  PORTC=0x00; //muc 0

                  DDRD=0x00; //input
                  PORTD=0xFF; //muc 1
                  }
                  ///////////////////////////////////////////////////

                  void setup_timer(void)
                  {
                  // Timer0
                  // Clock source: System Clock
                  // Clock value:125.000 kHz
                  TCCR0=0x03;
                  TCNT0=0xFA; //0xFA=250
                  // tan so TIMER1: 1000.000 kHz
                  // che do: Ph. correct PWM top=00FFh
                  // OC1A la dau ra dao PWM
                  // OC1B la dau ra dao PWM
                  TCCR1A=0xF1;
                  TCCR1B=0x02;
                  // tan so TIMER2: 1000.000 kHz
                  // che do: Phase correct PWM top=FFh
                  // OC2 la dau ra dao PWM
                  TCCR2=0x72;

                  MCUCR=0x02; //cho phep ngat toan cuc
                  TIMSK=0x00; //ko cho phep ngat Timer0
                  }
                  ////////////////////////////////////////////
                  void setup_adc(void)
                  {
                  // ADC Clock: 250.000 kHz
                  // ADC Voltage Reference: AREF pin
                  // Only the 8 most significant bits of
                  // the AD conversion result are used
                  ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
                  ADCSRA=0xCD;
                  SFIOR&=0x1F;
                  }
                  void main(void)
                  {
                  setup_io();
                  setup_timer();
                  setup_adc();
                  delay_ms(1);
                  #asm("sei")
                  while (1)
                  { while(Pause==1)
                  {
                  if(Cb1) //Khi khong co Cb1 thi chay nhu sau
                  {
                  Motor1= Var1;
                  dem=0;
                  flag=0;

                  TIMSK=0x01; //cho phep chay Timer0
                  }

                  if(Cb2==0) dem1=0;

                  if((Cb2==0)&&Cb1) //Khi co Cb2 nhung khong co Cb1 thi moi tat Ctt, neu khong Ctt van chay binh thuong
                  {
                  Ctt=Off;

                  }
                  if(Start) {dst=0; st=0;}
                  if(st==1) //bam Start khoi dong cho M3
                  {
                  while(Start == 0);
                  delay_ms(2);
                  run=1;
                  }
                  }

                  Motor1= 255;
                  Motor2=255;
                  Motor3=255;
                  Ctt=Off;

                  };
                  }
                  Khỏi phải xem code , chẳng cần code mà set thạch anh ngoài nó cũng ra xung khá đẹp như trên. Mà hôm nọ anh cho mấy đứa trẻ đi chơi , chú alo có việc gì vậy ???
                  Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                  Comment


                  • #10
                    Nguyên văn bởi queduong Xem bài viết
                    Khỏi phải xem code , chẳng cần code mà set thạch anh ngoài nó cũng ra xung khá đẹp như trên. Mà hôm nọ anh cho mấy đứa trẻ đi chơi , chú alo có việc gì vậy ???
                    Mạch em làm có điều khiển một con motor DC tuy nhỏ nhưng gây nhiễu rất lớn, chíp bị treo luôn tục. em chưa có cách khắc phục vấn đề này. Nghe nói trong con mega8 có một phần gọi là "lập trình chống treo" . Anh làm bên cao tần chắc có nhiều kinh nghiệm về vấn đề này, vì vậy em muốn anh giúp đỡ em.
                    * Bo mạch MX(Máy hàn, mạ, điện hóa, anot, động cơ DC, điều khiển thyristor, IGBT, Triac.
                    * Tự động hóa trong công nghiệp.

                    Mail: Phone: 0982006716-0984163716

                    Comment


                    • #11
                      Nguyên văn bởi vuongvanminh Xem bài viết
                      Mạch em làm có điều khiển một con motor DC tuy nhỏ nhưng gây nhiễu rất lớn, chíp bị treo luôn tục. em chưa có cách khắc phục vấn đề này. Nghe nói trong con mega8 có một phần gọi là "lập trình chống treo" . Anh làm bên cao tần chắc có nhiều kinh nghiệm về vấn đề này, vì vậy em muốn anh giúp đỡ em.
                      watchdog thì chống treo nhưng reset chip về lại từ đầu ... còn treo nhiều hay ít thì do kinh nghiệm , thủ thuật lập trình ( quan trọng phải biết nó hay treo ở vị trí nào ) , nhiều khi chỉ thêm 1 lệnh delay , NOP để đánh lừa hay loại trừ lúc bị treo cũng là 1 thủ thuật . Nếu treo bị mất hay dồn clock thì phải dùng clock ngoài , treo nhiễu từ trường thì phải bọc kim ... treo quá thì phải dùng các chip mạnh hơn , có khả năng chịu nhiễu tốt hơn như dòng otp , eprom chứ không dùng chip flash ... Nói chung đã bị treo thì nhiều nguyên nhân lắm nên không nói hết được !
                      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                      Comment


                      • #12
                        đo không thấy bác coi trở kháng đầu vào osc có đạt ko, hoặc osc có giật tê tê không, hoặc có khi nào vừa chạm vào nó ngắt ngoại, chuyển vô nội không.
                        TamPhieuLuuKy@yahoo.com
                        092 2838 712 --->>

                        Comment

                        Về tác giả

                        Collapse

                        vuongvanminh Sinh ra và lớn lên tại thôn Phù Thụy, xã Thi Sơn, huyện Kim Bảng tỉnh Hà Nam. Từ thời phổ thông rất yêu thích toán học và vật lý. Năm 1996 học xong phổ thông, thi đại học Bách Khoa Hà Nội không được. Sang năm sau thi đỗ đại học Lâm Nghiệp Việt Nam, theo học tại khoa công nghiệp- bảo vệ đồ án tốt nghiệp về lĩnh vực cơ khí và thủy lực. Ra trường làm việc tại nhà máy chế tạo phụ tùng ô tô xe máy DETECH(Dị Sử, Mỹ Hào, Hưng Yên) được 2 năm sau đó ra ngoài bươn trải với cuộc sống(tự lực) ngành nghề chủ yếu là sửa chữa điện máy công nghiệp, nhận thiết kế chế tạo điện máy và máy công nghiệp, các sản phẩm tự động hóa. Năm 2009 đến nay thêm một ngành nghề nữa là điện tử công suất... Đang dần dần chuyển nghề sang lĩnh vực khác.! Tìm hiểu thêm về vuongvanminh

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

                        Collapse

                        Đang tải...
                        X