اطلاعیه

Collapse
No announcement yet.

مشکل در راه اندازی لودسل با ad7730

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در راه اندازی لودسل با ad7730

    سلام بچها
    من مدار زیر رو که یکی از دوستان در یکی از پستها پیشنهاد داده بودن با mega8 بستم .
    چون فریت نداشتم سلف 10 uh گذاشتم

    شماتیکشم گذاشتم :
    http://uplod.ir/va3av1kqd4wy/loadcell.pdf.htm


    مدل لودسل : L6D
    capacity : 50k
    full scale = 2.039 mv
    Excition 10vdc nom 15vdc max



    اینم کدی هس که استفاده کردم ، با کمی تغییرات به جای lcd با سریال میفرستم به کامپیوتر
    کد:
    #include <mega8.h>
    #include <spi.h>
    #define xtal 8000000
    #include <delay.h> 
    #include <stdlib.h> 
    #include <Serial_Init.c>
    
    #define SYS_ZERO_MODE  0b11001000//zero dakheli vurudi sefr mishavad
    #define SELF_CALB_MODE 0b10100000//calibre dakheli khod be khod
    #define CONT_CNV_MODE  0b00100000//mode peyvaste ersal 
    //inha be adc_mode_bh dade mishavad 
    unsigned char ADC_MODE_BH;
                
    #define UPDATE_RATE   150
    #define ADC_Vin    0 //0=10mv,1=20mv,2=40mv,3=80mv
    #define MODE_LOW    0b10000000|(16*ADC_Vin)
    
    flash int xxx=0;//32768;
    
                
    #define ADC_RDY     PINC.0             
    #define DDR_RDY()    DDRC.0=0;
    #define ADC_CS     PORTC.1             
    #define DDR_CS()    DDRC.1=1;
    bit CHP;
    char str[9];
    unsigned int ADC_GAIN0;
    unsigned int ADC_GAIN1;
    unsigned int ADC_GAIN2;
    
    //********************************************************
    void RESET_AD7730(void)
      { 
    putchar('.'); 
      ADC_CS=0;
    putchar('.'); 
      spi(255);
    putchar('.'); 
      spi(255); 
    putchar('.'); 
      spi(255);
    putchar('.'); 
      spi(255); 
    putchar('.'); 
      ADC_CS=1;
    putchar('.'); 
      }    
    //********************************************************
    void ADC_FILTER_SET(void)
      {
      unsigned int filter;
      unsigned char filterL,filterH,byte3;
      putchar('.');
      if(CHP)
        {
    putschar("CHP");
        filter=102400/UPDATE_RATE;
        byte3=0b00010000;
        }
      else
        {
    putschar("!CHP");
        filter=307200/UPDATE_RATE;
        byte3=0;
        }
      if(filter>2048) filter=2048; 
      filterL=filter % 16;
      filterL=filterL*16;
      filterH=filter / 16; 
       
      ADC_CS=0; 
      spi(0b00000011); //be comunication reg mige halate badi neveshtane tu filter reg
    putschar("0b00000011");
      spi(filterH); 
      spi(filterL); 
      spi(byte3); 
      ADC_CS=1;
      }    
    //********************************************************
    void ADC_MODE_SET(void)
      {   
      ADC_CS=0;
      spi(0b00000010);//be comunication reg mige halate badi neveshtane tu mode reg
      spi(ADC_MODE_BH);
      spi(MODE_LOW);
      ADC_CS=1;
      } 
    //********************************************************
    void ADC_GAIN_SET(void)
      {
      ADC_CS=0;    
      spi(0b00000110);
      spi(ADC_GAIN2);
      spi(ADC_GAIN1);
      spi(ADC_GAIN0); 
      ADC_CS=1; 
      } 
    //********************************************************
    void ADC_GAIN_READ(void)
      { 
    // default value of gain= 593CEA Hex   
      ADC_CS=0;   
      spi(0b00010110);
      ADC_GAIN2=spi(255);
      ADC_GAIN1=spi(255);
      ADC_GAIN0=spi(255); 
      ADC_CS=1; 
      }
    //********************************************************
    unsigned int ADC_READ_DATA(void)
      {
      unsigned int adc_val;
      ADC_CS=0;
      spi(0b00010001); //be comunication reg mige halate badi khundane az data reg va 1 bar
      adc_val=(unsigned int) spi(255)*256 + spi(255);
      ADC_CS=1;
      return(adc_val);
      } 
    //********************************************************
    void main(void)
    {
    unsigned int ADC,temp,temp2; 
    bit ADC_SEL,ZERO_ADC;
    unsigned char sum_cntr;
    unsigned long int sum;
    // SPI initialization
    // SPI Type: Master
    // SPI Clock Rate: 250.000 kHz
    // SPI Clock Phase: Cycle Half
    // SPI Clock Polarity: High
    // SPI Data Order: MSB First
    SPCR=0x58;
    SPSR=0x00; 
    CHP=0;
    DDRB=0x28;
    SerialInit();
    DDR_RDY()
    DDR_CS()
    putschar("hello !!");
    delay_ms(1000);
    RESET_AD7730();
    putschar("RESET_AD7730");
    ADC_FILTER_SET(); 
    putschar("ADC_FILTER_SET");
    ZERO_ADC=0;
    ADC_SEL=1;
    sum_cntr=0;
    sum=0;                   
    while (1) 
      {      
        putchar('*');    
        if(ADC_RDY==0)
        { 
          putschar("ADC_RDY");
          if(ZERO_ADC)
          {
            putschar("ZERO_ADC");  
            ADC_MODE_BH=SYS_ZERO_MODE;
            ADC_MODE_SET();
            putschar("ADC_MODE_SET");
            ZERO_ADC=0;
            ADC_SEL=1;
          }
          else
          {
            if(ADC_SEL)
            {
              putschar("ADC_SEL"); 
               ADC_SEL=0;   
               ADC_MODE_BH=CONT_CNV_MODE;
               ADC_MODE_SET(); 
              putschar("ADC_MODE_SET");       
            }
          else
          {
                 temp=ADC_READ_DATA();
                 putschar("ADC_READ_DATA"); 
                 sum=sum+temp;
                 if(++sum_cntr==50)
                  {          
                    sum_cntr=0;
                    ADC=sum/50;
                    sum=0;
                    ftoa(2,(ADC-xxx)/100,str);
                    putschar(str);
                    strcpy(str,"    ");         
                  } 
          }
       }
        //******************************************************************** 
      };
    }
     }
    این putchar هایی که میبینید واسه اینکه برنامم رو توی کامپیوترم دنبال کنم
    حالا گاهی وسط تابع RESET_AD7730 گیر میکنه یا اگه هم گیر هم نکنه تو main توی حلقه while گیر میکنه و rdy کلا صفر نمیشه...
    یکبار rdy رو خودم دستی زمین کردم ولی تو زیر روال تابع بعدی بعد از ارسال داده گیر کرد...
    مشکل کجاس ؟چرا ارتباطش با spi درس انجام نمیشه...
    پایه های +exc -exc به ref+ ref- وصل میکنم و +signal -signal به in+ in- ....
    به لودسل تقریبا 11 ولت دادم با ملتی متر خروجی رو چک کردم وقتی فشار میارم یه 2 میلی ولتی بشون میده...

    #2
    پاسخ : مشکل در راه اندازی لودسل با ad7730

    امکانش هس یکی بیاد حوصله کنه جواب بده :question:

    مداری که من بستم ولتاژ ref ها تقریبا 2 ولته ... یکی از دوستان گفتم مقاومت های 10 اهم رو وردار ولی فرقی نکرد...

    یکی از بچها اگه بیاد با توجه به اطلاعاتی که از لودسل گذاشتم قشنگ توضیح بده که با چه دقتی میتونیم اندازی گیری کنیم و این ad7730 رو راه بندازیم خیلی خوب میشه...

    والا با خوندنش چیزی سر در نیاوردم جز این مدارو کدی که گذاشتم و یه اطلاعات پراکنده...فایلهای پیوست هم حذف شده...

    :read:

    دیدگاه


      #3
      پاسخ : مشکل در راه اندازی لودسل با ad7730

      منظورت از rdy همون ADC_RDY هستش؟
      تعریفش کردی ولی این پین تعریف نشده هستش؟ داخلی یا خارجیه؟ حداقل توی این کد اینچیزا برداشت میشه!

      دیدگاه


        #4
        پاسخ : مشکل در راه اندازی لودسل با ad7730

        نوشته اصلی توسط Rohalamin
        منظورت از rdy همون ADC_RDY هستش؟
        تعریفش کردی ولی این پین تعریف نشده هستش؟ داخلی یا خارجیه؟ حداقل توی این کد اینچیزا برداشت میشه!
        سلام بله تعریفش کردم دیگه....
        کد:
        #define ADC_RDY     PINC.0             
        #define DDR_RDY()    DDRC.0=0;
        مشکل ارتباط با این ic هس...چون وسطاش گیر میکنه....

        دیدگاه


          #5
          پاسخ : مشکل در راه اندازی لودسل با ad7730

          نوشته اصلی توسط کیوان قاسمی
          سلام بله تعریفش کردم دیگه....
          کد:
          #define ADC_RDY     PINC.0             
          #define DDR_RDY()    DDRC.0=0;
          مشکل ارتباط با این ic هس...چون وسطاش گیر میکنه....
          آخه اولین تابع که توی main اجرا میشه تابع RESET_AD7730 هستش که توش ADC_CS پورت C هستش ولی هنوز تعیین نکردی داخلی هستش یا خارجی! قبل از اینکه توی main اجرا بشه DDRC رو بذار.
          اوکی؟

          دیدگاه


            #6
            پاسخ : مشکل در راه اندازی لودسل با ad7730

            نوشته اصلی توسط Rohalamin
            آخه اولین تابع که توی main اجرا میشه تابع RESET_AD7730 هستش که توش ADC_CS پورت C هستش ولی هنوز تعیین نکردی داخلی هستش یا خارجی! قبل از اینکه توی main اجرا بشه DDRC رو بذار.
            اوکی؟
            عزیزم اونم گذاشتم ! دقت کن ... اینارو خودم چک کردم...
            طبق شماتیک پول پ خارجی هم هستن...

            کد:
                        
            #define ADC_RDY     PINC.0             
            #define DDR_RDY()    DDRC.0=0;
            #define ADC_CS     PORTC.1             
            #define DDR_CS()    DDRC.1=1;
            .
            .
            .
            .
            .
            .
            SPCR=0x58;
            SPSR=0x00; 
            CHP=0;
            DDRB=0x28;
            SerialInit();
            DDR_RDY()
            DDR_CS()
            putschar("hello !!");
            delay_ms(1000);
            RESET_AD7730();

            دیدگاه


              #7
              پاسخ : مشکل در راه اندازی لودسل با ad7730

              نوشته اصلی توسط کیوان قاسمی
              عزیزم اونم گذاشتم ! دقت کن ... اینارو خودم چک کردم...
              طبق شماتیک پول پ خارجی هم هستن...
              حضرت عباسی این چه طرز کدنویسیه! :biggrin:

              دیدگاه


                #8
                پاسخ : مشکل در راه اندازی لودسل با ad7730

                مهندسینی که با 7730 کار کردن کجان....؟
                مشکلم با ولتاژ لودسل حل شد pcb یجاش قط بود... ولی الان مشکلم صفر نشدن پایه Rdy هس...
                هیچکی لودسل کار نکرده بیاد به داد ما برسه ؟ oo:

                دیدگاه


                  #9
                  پاسخ : مشکل در راه اندازی لودسل با ad7730

                  من هر وقت به مشکل خوردم آخر خودم یکاریش کردم...ولی انگار این 7730 مشکل داره...والا زورم میاد عوضش کنم 60ت خریدمش :cry2:
                  7780 10تومنه....ایکاش این رو میخریدم... :angry:ساده تر هم بود
                  کانفیگ spi رو هم 58 گذاشتم هم 5c ...
                  بعد از filter set دگ پایه rdy صفر نمیشه...از کجا بفهمم 7730 سالمه !؟؟

                  دیدگاه


                    #10
                    پاسخ : مشکل در راه اندازی لودسل با ad7730

                    نوشته اصلی توسط کیوان قاسمی
                    من هر وقت به مشکل خوردم آخر خودم یکاریش کردم...ولی انگار این 7730 مشکل داره...والا زورم میاد عوضش کنم 60ت خریدمش :cry2:
                    7780 10تومنه....ایکاش این رو میخریدم... :angry:ساده تر هم بود
                    کانفیگ spi رو هم 58 گذاشتم هم 5c ...
                    بعد از filter set دگ پایه rdy صفر نمیشه...از کجا بفهمم 7730 سالمه !؟؟
                    برنامه رو از کجا گرفتی؟ خودت نوشتی؟
                    با توجه به صفحه 35 دیتاشیت؟ اگه نه، یه نگاهی بهش بنداز.
                    تایمینگ رو رعایت کردی؟
                    لاجیک آنالیزر داری پایه ها رو بررسی کنی؟

                    دیدگاه


                      #11
                      پاسخ : مشکل در راه اندازی لودسل با ad7730

                      نوشته اصلی توسط Rohalamin
                      برنامه رو از کجا گرفتی؟ خودت نوشتی؟
                      با توجه به صفحه 35 دیتاشیت؟ اگه نه، یه نگاهی بهش بنداز.
                      تایمینگ رو رعایت کردی؟
                      لاجیک آنالیزر داری پایه ها رو بررسی کنی؟
                      از این پست کتابخانهآ‌ای برای چیپ AD7780-AD7730 گرفتم...دارم شک میکنم ad7730 مشکل داره... از کجا بفهمم سالمه یا نه ؟ اون دوستانی هم که با لودسل کار میکردن و اون تاپیک رو میچرخوندن خیلی وقته دیگه نیستن...

                      من فقط قسمت سریال رو بهش اضافه کردم...

                      دیدگاه

                      لطفا صبر کنید...
                      X