اطلاعیه

Collapse
No announcement yet.

نحوه خواندان ولتاژ از ct

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

    پاسخ : نحوه خواندان ولتاژ از ct

    استاد کوهستانی کمکم می کنی این رو به میکرو مثل کنم ؟؟
    معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

    دیدگاه


      پاسخ : نحوه خواندان ولتاژ از ct

      تو استارت بزن دایی
      با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

      دیدگاه


        پاسخ : نحوه خواندان ولتاژ از ct

        منم مشکل دارم این یک عکس از شماتیک


        اینم برای auto boot mode


        من که نفهمیدم باید به کجای میکرو وصلش کنیم و چطوری باید باهاش کار کنیم
        میشه راه نمایی کنید
        کد:
        sbit CS5460ADin = P1^5; // CS4560A serial data in 
        sbit CS5460ADout = P1^6; // CS4560A serial data out 
        sbit CS5460AClk = P1^7; // CS4560A serial clock 
        
        
        //CS5460A register addresses 
        #define CS5460A_REG_CONFIG 0x00 
        #define CS5460A_REG_AIN1_OFFSET 0x02 
        #define CS5460A_REG_AIN1_GAIN 0x04 
        #define CS5460A_REG_AIN2_OFFSET 0x06 
        #define CS5460A_REG_AIN2_GAIN 0x08 
        #define CS5460A_REG_CYCLE 0x0A 
        #define CS5460A_REG_PULSE 0x0C 
        #define CS5460A_REG_CURRENT 0x0E 
        #define CS5460A_REG_VOLT 0x12 
        #define CS5460A_REG_POWER 0x14 
        #define CS5460A_REG_ENERGY 0x16 
        #define CS5460A_REG_IRMS 0x18 
        #define CS5460A_REG_VRMS 0x1A 
        #define CS5460A_REG_TBC 0x1C 
        #define CS5460A_REG_PWR_OFFSET 0x1E 
        #define CS5460A_REG_STATUS 0x20 
        #define CS5460A_REG_IACOFFSET 0x22 
        #define CS5460A_REG_VACOFFSET 0x24 
        #define CS5460A_REG_MASK 0x34 
        #define CS5460A_REG_CONTROL 0x38 
        
        //CS5460A commands 
        #define CONVERT_CONTINOUS 0xE8 
        #define CONVERT_ONCE 0xE0 
        #define CS5460A_SYNC0 0xFE 
        #define CS5460A_SYNC1 0xFF 
        #define POWER_UP_HALT 0xA0 
        #define CAL_AIN1_DC_GAIN 0xCA 
        #define CAL_AIN1_DC_OFFSET 0xC9 
        #define CAL_AIN2_DC_GAIN 0xD2 
        #define CAL_AIN2_DC_OFFSET 0xD1 
        #define CS5460A_WRITE 0x40 
        #define CS5460A_READ 0x3E 
        
        //config data 
        #define CLOCK_DIVIDER 0x00000004 
        #define AIN1_GAIN_10 0x00000000 
        #define AIN1_GAIN_50 0x00010000 
        #define SOFT_RESET 0x00000080 
        #define MASK_NO_INTERRUPTS 0x00000000 
        #define STATUS_CLR_CRDY 0x00100000 
        #define STATUS_CLR_DRDY 0x00800000 
        #define STATUS_CLR_ALL 0x00FFFFFF 
        #define CONTROL_DEFAULT 0x00000000 
        #define CURRENT_GAIN_DEFAULT 0x00100000 
        #define VOLT_GAIN_DEFAULT 0x00100000 
        #define COMPUTATION_CYCLE 0x00000FA0 
        #define TIME_BASE 0x00800000 
        
        
        //=========================================================================== 
        bit CS5460AReadDRDYBit(void) 
        { 
        bit ReadyBit; 
        Byte4 xdata StatusRegister; 
        StatusRegister=CS5460ARead24Bits(CS5460A_REG_STATUS); 
        if(StatusRegister & 0x00800000){ReadyBit=1;}else{ReadyBit=0;}//get DRDY bit 
        return(ReadyBit); 
        } 
        //=========================================================================== 
        bit CS5460AReadCRDYBit(void) 
        { 
        bit ReadyBit; 
        Byte4 xdata StatusRegister; 
        StatusRegister=CS5460ARead24Bits(CS5460A_REG_STATUS); 
        if(StatusRegister & 0x00100000){ReadyBit=1;}else{ReadyBit=0;}//get CRDY bit 
        return(ReadyBit); 
        } 
        //=========================================================================== 
        void CS5460AResetConfigure(void) 
        { 
        CS5460AReset(); 
        CS5460AWrite24Bits((CLOCK_DIVIDER |AIN1_GAIN_10),CS5460A_REG_CONFIG);//Ain1 
        CS5460AWrite24Bits(CONTROL_DEFAULT,CS5460A_REG_CONTROL);//write default 
        CS5460AWrite24Bits(STATUS_CLR_ALL,CS5460A_REG_STATUS);//clear all status 
        CS5460AWrite24Bits(MASK_NO_INTERRUPTS,CS5460A_REG_MASK);//no interrupts 
        //gain is 10, clock divider is 4 
        CS5460AWrite24Bits(CURRENT_GAIN_DEFAULT,CS5460A_REG_AIN1_GAIN);//Ain1 gain 
        CS5460AWrite24Bits(VOLT_GAIN_DEFAULT,CS5460A_REG_AIN2_GAIN);//Ain2 gain 
        CS5460AWrite24Bits(COMPUTATION_CYCLE,CS5460A_REG_CYCLE);//rms cycle 
        CS5460AWrite24Bits(TIME_BASE,CS5460A_REG_TBC);//default time base 
        CS5460AWriteCommand(CONVERT_CONTINOUS);//start conversions 
        return; 
        } 
        //=========================================================================== 
        void CS5460AReset(void) 
        { 
        Byte xdata BitCounter; 
        //Cirrus Logic data sheet page 43 
        for(BitCounter=0;BitCounter<3;BitCounter++)//send 3 SYNC1 bytes 
        { 
        CS5460AWriteCommand(CS5460A_SYNC1); 
        } 
        CS5460AWriteCommand(CS5460A_SYNC0);//send 1 SYNC0 byte 
        CS5460AWrite24Bits(SOFT_RESET,CS5460A_REG_CONFIG);//issue soft reset 
        return; 
        } 
        //=========================================================================== 
        void CS5460AWriteCommand(Byte Command) 
        { 
        Byte xdata WriteByte; 
        Byte xdata BitCounter; 
        WriteByte=Command; 
        for(BitCounter=0;BitCounter<8;BitCounter++) 
        { 
        if(WriteByte & 0x80){CS5460ADin=1;}else{CS5460ADin=0;} 
        CS5460APulseClock();WriteByte=WriteByte<<1; 
        } 
        return; 
        } 
        //=========================================================================== 
        void CS5460AWrite24Bits(Byte4 RegisterData, Byte AdcRegisterAddress) 
        { 
        Byte xdata BitCounter; 
        Byte xdata WriteByte; 
        Byte4 xdata WriteLong; 
        WriteLong=RegisterData; 
        WriteByte=(CS5460A_WRITE | AdcRegisterAddress);//write command with reg address 
        for(BitCounter=0;BitCounter<8;BitCounter++)//send command 
        { 
        if(WriteByte & 0x80){CS5460ADin=1;}else{CS5460ADin=0;} 
        CS5460APulseClock(); 
        WriteByte=WriteByte<<1; 
        } 
        for(BitCounter=0;BitCounter<24;BitCounter++)//write 24 bits 
        { 
        if(WriteLong & 0x00800000){CS5460ADin=1;}else{CS5460ADin=0;} 
        CS5460APulseClock(); 
        WriteLong=WriteLong<<1; 
        } 
        return; 
        } 
        //=========================================================================== 
        Byte4 CS5460ARead24Bits(Byte AdcRegisterAddress) 
        { 
        Byte xdata BitCounter=0; 
        //send read command with register address 
        Byte xdata WriteByte=CS5460A_READ & AdcRegisterAddress; 
        Byte4 xdata Data24Bits=0; 
        Byte4 xdata ThreeSync0=0x00FEFEFE; 
        CS5460ADout=1;//pull up port pin for a read 
        for(BitCounter=0;BitCounter<8;BitCounter++) 
        { 
        if(WriteByte & 0x80){CS5460ADin=1;}else{CS5460ADin=0;} 
        CS5460APulseClock(); 
        WriteByte=WriteByte<<1; 
        } 
        for(BitCounter=0;BitCounter<24;BitCounter++)//read 24 bits 
        { 
        if(ThreeSync0 & 0x00800000){CS5460ADin=1;}else{CS5460ADin=0;}//SYNC0 command on SDI 
        CS5460APulseClock(); 
        ThreeSync0=ThreeSync0<<1; 
        if(CS5460ADout){Data24Bits=((Data24Bits<<1)| 0x1);}//get msb and other bits 
        else{Data24Bits=Data24Bits<<1;} 
        } 
        return(Data24Bits>>1 & 0x00FFFFFF); 
        } 
        //=========================================================================== 
        void CS5460APulseClock(void){CS5460AClk=1;CS5460AClk=0;return;} 
        //=========================================================================== 
        // MAIN Routine 
        //=========================================================================== 
        void main (void) 
        { 
        CS5460AClk=0; 
        CS5460AResetConfigure(); 
        Delay10MilliSec(100); 
        if(CS5460AReadCRDYBit()){Va=1;} 
        Gain=CS5460ARead24Bits(CS5460A_REG_VOLT);//dummy read 
        //=========================================================================== 
        while(1) 
        { 
        if(CS5460AReadCRDYBit()) 
        { 
        //CS5460AWrite24Bits(STATUS_CLR_DRDY,CS5460A_REG_STATUS);//clear DRDY 
        //Test=CS5460ARead24Bits(CS5460A_REG_IRMS); 
        Test=CS5460ARead24Bits(CS5460A_REG_CURRENT); 
        Volt=CS5460ARead24Bits(CS5460A_REG_VOLT); 
        CS5460AWrite24Bits(STATUS_CLR_CRDY,CS5460A_REG_STATUS);//clear CRDY 
        } 
        }//end of while 
        }//end of main 
        //=========================================================================== 
        //end of main 
        //===========================================================================
        مرسی می تونید در مورد این سورس هم توضیح بدید یا با بسکام میشه نوشت
        http://services.nexodyne.com/email/i...3D/0/image.png

        دیدگاه


          پاسخ : نحوه خواندان ولتاژ از ct

          نوشته اصلی توسط ahmadmn
          تو استارت بزن دایی
          دائی من دقیقا اینه که نمیدونم کدوم ژایه های این رو به میکرو وصل کنم گیجم کرده به خدا :cry2:
          معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

          دیدگاه


            پاسخ : نحوه خواندان ولتاژ از ct

            وقتی از میکرو استفاده می کنیم دیگه نیاز به EEPROMآ‌نیست چون داخل میکرو EEPROMآ‌ داریم.

            میکرو یه پورت SPIآ‌ داره که 3 تا پایه داره بنام های SCK، MISOو MOSI

            پایه SCK میکرو به پایه SCK این آی سی وصل میشه
            پایه MISO میکرو به پایه SDO این ای سی وصل میشه
            پایه MOSI میکرو به پایه SDIآ‌ این آی سی وصل میشه
            یکی از پورتهای های میکرو هم باید به پایه CS آی سی وصل بشه.
            با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

            دیدگاه


              پاسخ : نحوه خواندان ولتاژ از ct


              از دائی عزیر همه بچه های انجمن (استاد کوهستانی) تشکر و قدر دانی میکنم ممنون از راهنمائی شما .
              یه مدت غائب بودم چون از چین این چیپ رو تهیه کردم (به همین خاطر این فصل از سریال هم عقب افتاد چون مجبور شدم از جزیره خارج شم ) به هر حال یه چند تا گیر ذهنی مثل همیشه دارم ممنون میشم کمک کنید !
              در سوالاتم به دیتا شیت استناد می کنم امید وارم از حوصله استاد کوهستانی خارج نشه
              1-در قسمت توضیحات این چیپ اشاره شده که هم از شنت میشه استفاده کرد و هم از ترانس های سی تی اما سازندگان این چیپ در دیتاشیت نحوه اتصال رو به انواع مختلف اتصال به برق شهری عنوان کرده اند به این شرح :
              Figure 6. Typical Connection Diagram (One-Phase 2-Wire, Direct Connect to Power Line) ........ 17
              Figure 7. Typical Connection Diagram (One-Phase 2-Wire, Isolated from Power Line) ............... 18
              Figure 8. Typical Connection Diagram (One-Phase 3-Wire) .................................................. ....... 19
              Figure 9. Typical Connection Diagram (One-Phase 3-Wire - No Neutral Available)..................... 20
              حالا استاد سوالم اینه که به خاطر اینکه من از سی تی استفاده میکنم آیا باید از Figure 7 استفاده کنم ؟
              امید وارم جواب شما هم مثبت باشه و در صورت مثبت بودن این سوالها برای من پیش اومده ......
              به این عکس توجه کنید ؟ همان Figure 7 هست


              سوال دوم ) چرا فاز و نول رو با L , N مشخص کده و چرا اختلاف ولتاژ رو بین اینها 120 ولت زده(قسمت زرد رنگ) در صورتی که در حالت های 3 سیم اختلاف رو 120 ولت زده ؟؟؟؟ یعنی چی و توی حالت های سیم که من منظورشو نفهمیدم زده 240 ولت زده ؟
              سوال سوم ) قسمت قرمز رنگ Voltage Transformer : آیا این قسمت رو برای تغذیه مدار در نظر گرفته ؟ مشخصات این ترانس چیه اصلا توضیحی نداده منظورش از اون 12 Vac چیه ؟


              سوال چهارم ) قسمت سبز رنگ Low Phase-Shift Potential Transformer : آیا این قسمت برای محاسبه ولتاژ هست ؟بازهم مقدار این ترانس رو ذکر نکرده ؟ منظورش از M:1 چیه ؟


              سوال پنجم ) قسمت آبی رنگ Current Transformer : همون سی تی خودمون که تا ایتجا منو کشوند بازهم مشخصاتش رو شو ذکر نکرده ؟ منظورش از N:1 چیه ؟








              معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

              دیدگاه


                پاسخ : نحوه خواندان ولتاژ از ct

                دایی جان گلم
                چه فرقی داره ولتاژ ورودی چی باشه؟ توی یه کشور 110 ولته و در کشوری دیگه 220 ... ما توی ایران 220 ولت داریم.

                ترانس تغذیه همین ترانسهای معمولی بازاره. برو جمهوری طبقه زیر همکف/ قسمت وسط یه ترانس فروشی داره بگو ترانس 2x12 ولت 300 میلی آمپر می خوام. آخه کوچیکتر از این ندارن!

                بله Low Phase-Shift Potential Transformer برای محاسبه ولتاژه. این ترانس باید با توجه به ولتاژ ورودی آی سی انتخاب بشه. در صفحه 5 دیتاشیت نوشته ماکزیمم ولتاژ ورودی باید 500 میلی ولت پیک- پیک است. بنابراین باید ترانسی انتخاب کنیم که در ماکزیمم ولتاژ ورودی، به ما خروجی 500 میلی ولت بدهد. فرض کنیم برق شهر ایران در بدترین شرایط به 250 ولت برسد. پس ترانس باید 250 ولت RMS را به 500 میلی ولت پیک تو پیک تبدیل کند. 250 ولت RMS میشه 250x√2 یعنی 353 ولت. 353 باید به 0.5 ولت تبدیل بشه پس M=707
                همچین ترانسی بصورت آماده وجود نداره. اما میشه سفارش داد بسازن.

                Current Transformer یا همون CT خودمون هم مثل ترانس بالا است. باید در بیشترین جریان ورودی خروجی 500 میلی ولت پیک- پیک بده.
                با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                دیدگاه


                  پاسخ : نحوه خواندان ولتاژ از ct

                  دائی جونم مرسی
                  حل شد تهیه کردم فقط دو تا مطلب من هیچ جای این ندیدم که کسینوس فی رو حساب کنه دومه من این خروجی ها رو کجا می تونم داشته بشاو و به چه نحو
                  مثلا بخوام ولتاژ رو بخونم و جای دیگه جریان یا مقدار مصرف شده یا چیز های که داره چه طوری باید بخنم و از چه دستوراتی می تونم این کار رو انجام بدم
                  معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                  دیدگاه


                    پاسخ : نحوه خواندان ولتاژ از ct

                    رد و بدل داده از طریق پورت SPI صورت می گیره. دستورش تو زبان C هست:( a=spi(b
                    یعنی همزمان با فرستادن b به پورت SPI ، مقدار خونده شده از اون رو داخل b بریز
                    اگه فصل 4 دیتا شیت رو بخونی می تونی بفهمی چی بفرستی و چی بخونی.
                    با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                    دیدگاه


                      پاسخ : نحوه خواندان ولتاژ از ct

                      نوشته اصلی توسط ahmadmn
                      رد و بدل داده از طریق پورت SPI صورت می گیره. دستورش تو زبان C هست:( a=spi(b
                      یعنی همزمان با فرستادن b به پورت SPI ، مقدار خونده شده از اون رو داخل b بریز
                      اگه فصل 4 دیتا شیت رو بخونی می تونی بفهمی چی بفرستی و چی بخونی.
                      توی spi اینجوری که معلومه باید یکی رو master تعریف کرد و یکی دیگه رو slave توی این مدل من کدوم رو باید مستر و کدوم رو باید slave تعریف کنم
                      یه سوال دیگه که شاید هم من اشتباه کنم توی spi همیشه مستر ارسال میکنه و Slave دریافت میکنه اگه این جوری باشه ما باید چی کار کنیم که نتایج رو بخونیم ؟؟؟

                      و با عرض شرمندگی یک سوال دیگه من با برنامه پروتئوس زیاد کار کردم آیا امکانی هست که این ic رو به این برنامه معرفی کرد که ایندقدر مشکل نداشته باشم چون این قطعه smd هست آیا محیطی برای شبیه سازی وجود داره ؟
                      معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                      دیدگاه


                        پاسخ : نحوه خواندان ولتاژ از ct

                        اگه با شیفت رجیسترها آشنا باشی کار با SPI هم برات ساده میشه.
                        یه شیفت رجیستر از چند فلیپ فلاپ پشت سر هم، یک ورودی، یک خروجی و یک کلاک مشترک تشکیل شده. هر بار که پایه کلاک صفر و یک بشه مقدار هر فلیپ فلاپ به فلیپ فلاپ بعدی منتقل میشه، فلیپ فلاپ آخری به خروجی میره و اطلاعات ورودی ما هم به فلیپ فلاپ اولی میره.
                        در میکرو یک شیفت رجیستر 8 بیتی وجود داره. در آی سی شما هم همینطور.
                        بهترین کار اینه که میکرو مستر باشه. یعنی کلاک رو تولید کنه نه اینکه ورودی یا خروجی باشه.
                        چون همزمان با فرستادن یک بیت، یه بیت هم می خونه!
                        بله SPI میکرو یک شیف رجیستر 8 بیتی است که وقتی کلاک می خوره یه بیت از MOSI خارج میشه و همزمان یه بیت وارد MISO میشه. ای سی شما هم همینطور. وقتی کلاک میکرو یه پالس به ای سی می ده یک بیت از پایه SDO ای سی خارج و یک بیت به SDI ای سی وارد میشه.

                        اگه ما می خواهیم که فقط از آی سی بخونیم و چیزی به ای سی نفرستیم باید رجیستر SPI میکرو را از عدد بی اثر پر کنیم. عدد بی اثر را باید از دیتاشیت ای سی پیدا کنی. اکثر مواقع عدد بی اثر 0 یا 255 ایت.
                        مثلا تو ای سی AD7730 عدد 255 بی اثره.
                        دستور در برنامه میشه :
                        a=spi(255)
                        با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                        دیدگاه


                          پاسخ : نحوه خواندان ولتاژ از ct

                          مرسی و ممنون از لطف شما مثل همیشه . من توی بس کام کار میکردم ولی چند روزهکه دیگه دارم با c کار میکنم خلی دستم کنده توی این Codvision خواهشی که از شما دارم اگه براتون مقدور باشه یه سمپل از ازتباط یک میکرو 32 و این آی سی می خوام که مثلا ولتاژ رو روی lcd نمایش بده (البته این درخواست خواهشی بود ) که بتونم این کد رو توسعه بدم ممنون میشم مثل همیشه
                          وچون دارم برد این رو درست می کنم که فقط دیگه گیر نرم افزار باشم (با فرض اینکه شما منو شرمنده کنید مثل همیشه ) توی قسمت ازولاسیون که برای ارتباط بین این آی سی و میکرو باید استفاده بشده این قطعاتی که دورش خط کشیدم نمی دونم چیه

                          http://www.wtgrco.com/upimg/wtgr126872961620100316daeeyy.JPG




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

                          دیدگاه


                            پاسخ : نحوه خواندان ولتاژ از ct

                            سلام .میشه در مورد ترانس ct و اینکه برای هر کاری چند امپر باید استفاده کرد و اینکه نحوه تشخیص پایه هاش چه جوریه توضیح بدید . من یک ct گرفتم اما نمی دونم چه جوری باید باهاش کار کنم .لطفا راهنمایی کنید .

                            دیدگاه


                              پاسخ : نحوه خواندان ولتاژ از ct

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

                              دیدگاه


                                پاسخ : نحوه خواندان ولتاژ از ct

                                سلام .ct که من دارم 4 تا پایه داره اما من نمی دونم با این پایه ها باید چه جوری کار کرد. روی 2 پایه اش مقاومت 1.4 مگا رو نشون می ده و روی اون دو تای دیگه بینهایت .میشه راهنمایی کنید چه جوری باید باهاش کار کرد .اسم اون کتاب ماشین رو هم اگه یادتون اومد بگید .

                                دیدگاه

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