اطلاعیه

Collapse
No announcement yet.

مبدل آنالوگ به دیجیتال AD7190

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

    #91
    پاسخ : مبدل آنالوگ به دیجیتال AD7190

    نوشته اصلی توسط مرتضی م.
    مبارکه
    برد خوبی زدی :applause:
    انشاءالله بردهای بعدی رو حرفه ای تر بکشی و قسمت ماسفت محافظ FT232RL رو بذاری. خیلی تو امنیت مدار و خصوصا حفاظت از رایانه تاثیر داره.
    مرسی مرسی
    ایشالا
    آقا من دارم رو کد کار میکنم و بعد میذارم شما نظرتو بگو
    میخوام از کانال 1 بخونه و نسبت به Aincom مقایسه کنه
    50 نمونه هم در ثانیه در هروجی بم بده ، من مثل شما کلا 24 بیت میخونم و میفرستم روی uart و همه کارارو با کامپیوتر میکنم
    پس قسمت میکرو تقریبا نمیخوام کاری انجام بده
    اگر میشه بگید این chop رو برای این تعداد نمونه فعال کنم یا غیر فعال باشه
    و اینکه sinc3 استفاده کنم یا sinc4 و اینکه بافر فعال باشه یا نه؟!!؟!
    درایور شبکه و nRF24L01
    کاتالوگ محصولات
    کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
    شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
    فروش اسیلوسکوپ GWinstek GOS-630FC

    دیدگاه


      #92
      پاسخ : مبدل آنالوگ به دیجیتال AD7190

      سلام
      اینطوری که من خوندم :


      A Σ-Δ ADC consists of a modulator followed by a digital filter.
      The AD7190 has two filter options: a sinc3 filter and a sinc4
      filter. The filter is selected using the SINC3 bit in the mode
      register. When SINC3 is set to 0 (default value), the sinc4 filter is
      selected. The sinc3 filter is selected when SINC3 is set to 1.
      At low output data rates (<1 kHz), the noise-free resolution is
      comparable for the two filter types. However, at the higher
      output data rates, the sinc4 filter gives better noise free
      resolution.
      The sinc4 filter also leads to better 50 Hz and 60 Hz rejection.
      While the notch positions are not affected by the order of the
      filter, the higher order filter has wider notches, which leads to
      better rejection in the band (±1 Hz) around the notches. It also
      gives better stop-band attenuation. The benefit of the sinc3 filter
      is its lower settling time for the same output data rate.
      اولش که گفته چطور فعال میشه هیچی
      در ادامه گفته برای فرکانس های بالا ( بیش از 1کیلو هرتز ) Sinc4 نویز کمتری تولید میکنه
      و گفته Sinc3 زمان تثبیت کمتری داره
      من فک میکنم برای کار من 50 نمونه در ثانیه Sinc4 بهتر باشه

      و برای Chop هم گفته :



      With chop enabled, the ADC offset and offset drift are
      minimized. When chop is enabled, the analog input pins are
      continuously swapped. Therefore, with the analog input pins
      connected in one direction, the settling time of the sinc filter is
      allowed to elapse until a valid conversion is available. The analog
      input pins are then inverted and another valid conversion is
      obtained. Subsequent conversions are then averaged so that the
      offset is minimized. This continuous swapping of the analog
      input pins and the averaging of subsequent conversions means
      that the offset drift is also minimized.
      Chopping affects the output data rate and settling time of the
      ADC.

      که من فهمیدم آفست رو کاهش میشده ولی زمان تثبیت بالاتر میره
      و دامنه تغییرات هم کمتر از حالت غیر فعال میشه
      و برای کار من زیاد نیازی به این Chop نیست

      پس من تنظیمات رو روی Sinc4 و Chop Disable میذارم که برای 50 نمونه در ثانیه باید مقدار 96 به FS داده بشه
      درست میگم؟!!!
      درایور شبکه و nRF24L01
      کاتالوگ محصولات
      کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
      شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
      فروش اسیلوسکوپ GWinstek GOS-630FC

      دیدگاه


        #93
        پاسخ : مبدل آنالوگ به دیجیتال AD7190

        کد:
        /***************************************************************************//**
         *  @file  AD7190.c
         *  @brief Implementation of AD7190 Driver.
         *  @author DNechita (Dan.Nechita@analog.com)
        ********************************************************************************
         * Copyright 2012(c) Analog Devices, Inc.
         *
         * All rights reserved.
         *
         * Redistribution and use in source and binary forms, with or without
         * modification, are permitted provided that the following conditions are met:
         * - Redistributions of source code must retain the above copyright
         *  notice, this list of conditions and the following disclaimer.
         * - Redistributions in binary form must reproduce the above copyright
         *  notice, this list of conditions and the following disclaimer in
         *  the documentation and/or other materials provided with the
         *  distribution.
         * - Neither the name of Analog Devices, Inc. nor the names of its
         *  contributors may be used to endorse or promote products derived
         *  from this software without specific prior written permission.
         * - The use of this software may or may not infringe the patent rights
         *  of one or more patent holders. This license does not release you
         *  from the requirement that you obtain separate licenses from these
         *  patent holders to use this software.
         * - Use of the software either in source or binary form, must be run
         *  on or directly connected to an Analog Devices Inc. component.
         *
         * THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
         * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
         * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
         * IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
         * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
         * LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
         * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
         * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
         * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         *
        ********************************************************************************
         *  SVN Revision: 903
        *******************************************************************************/
        
        /******************************************************************************/
        /***************************** Include Files **********************************/
        /******************************************************************************/
        #include "AD7190.h"   // AD7190 definitions.
        #include "TIME.h"    // TIME definitions.
        
        /***************************************************************************//**
         * @brief Writes data into a register.
         *
         * @param registerAddress - Address of the register.
         * @param registerValue - Data value to write.
         * @param bytesNumber - Number of bytes to be written.
         * @param modifyCS - Allows Chip Select to be modified.
         *
         * @return none.
        *******************************************************************************/
        void AD7190_SetRegisterValue(unsigned char registerAddress,
                       unsigned long registerValue,
                       unsigned char bytesNumber,
                       unsigned char modifyCS)
        {
          unsigned char writeCommand[5] = {0, 0, 0, 0, 0};
          unsigned char* dataPointer  = (unsigned char*)&registerValue;
          unsigned char bytesNr     = bytesNumber;
          
          writeCommand[0] = AD7190_COMM_WRITE |
                   AD7190_COMM_ADDR(registerAddress);
          while(bytesNr > 0)
          {
            writeCommand[bytesNr] = *dataPointer;
            dataPointer ++;
            bytesNr --;
          }
          SPI_Write(AD7190_SLAVE_ID * modifyCS, writeCommand, bytesNumber + 1);
        }
        
        /***************************************************************************//**
         * @brief Reads the value of a register.
         *
         * @param registerAddress - Address of the register.
         * @param bytesNumber - Number of bytes that will be read.
         * @param modifyCS  - Allows Chip Select to be modified.
         *
         * @return buffer - Value of the register.
        *******************************************************************************/
        unsigned long AD7190_GetRegisterValue(unsigned char registerAddress,
                           unsigned char bytesNumber,
                           unsigned char modifyCS)
        {
          unsigned char registerWord[5] = {0, 0, 0, 0, 0}; 
          unsigned long buffer     = 0x0;
          unsigned char i        = 0;
          
          registerWord[0] = AD7190_COMM_READ |
                   AD7190_COMM_ADDR(registerAddress);
          SPI_Read(AD7190_SLAVE_ID * modifyCS, registerWord, bytesNumber + 1);
          for(i = 1; i < bytesNumber + 1; i++) 
          {
            buffer = (buffer << 8) + registerWord[i];
          }
          
          return buffer;
        }
        
        /***************************************************************************//**
         * @brief Checks if the AD7190 part is present.
         *
         * @return status - Indicates if the part is present or not.
        *******************************************************************************/
        unsigned char AD7190_Init(void)
        {
          unsigned char status = 1;
          unsigned char regVal = 0;
          
          SPI_Init(0, 1000000, 1, 0);
          AD7190_Reset();
          /* Allow at least 500 us before accessing any of the on-chip registers. */
          TIME_DelayMs(1);
          regVal = AD7190_GetRegisterValue(AD7190_REG_ID, 1, 1);
          if( (regVal & AD7190_ID_MASK) != ID_AD7190)
          {
            status = 0;
          }
          return status ;
        }
        
        /***************************************************************************//**
         * @brief Resets the device.
         *
         * @return none.
        *******************************************************************************/
        void AD7190_Reset(void)
        {
          unsigned char registerWord[7];
          
          registerWord[0] = 0x01;
          registerWord[1] = 0xFF;
          registerWord[2] = 0xFF;
          registerWord[3] = 0xFF;
          registerWord[4] = 0xFF;
          registerWord[5] = 0xFF;
          registerWord[6] = 0xFF;
          SPI_Write(AD7190_SLAVE_ID, registerWord, 7);
        }
        
        /***************************************************************************//**
         * @brief Set device to idle or power-down.
         *
         * @param pwrMode - Selects idle mode or power-down mode.
         *         Example: 0 - power-down
         *              1 - idle
         *
         * @return none.
        *******************************************************************************/
        void AD7190_SetPower(unsigned char pwrMode)
        {
           unsigned long oldPwrMode = 0x0;
           unsigned long newPwrMode = 0x0; 
         
           oldPwrMode = AD7190_GetRegisterValue(AD7190_REG_MODE, 3, 1);
           oldPwrMode &= ~(AD7190_MODE_SEL(0x7));
           newPwrMode = oldPwrMode | 
                 AD7190_MODE_SEL((pwrMode * (AD7190_MODE_IDLE)) |
                         (!pwrMode * (AD7190_MODE_PWRDN)));
           AD7190_SetRegisterValue(AD7190_REG_MODE, newPwrMode, 3, 1);
        }
        
        /***************************************************************************//**
         * @brief Waits for RDY pin to go low.
         *
         * @return none.
        *******************************************************************************/
        void AD7190_WaitRdyGoLow(void)
        {
          unsigned long timeOutCnt = 0xFFFFF;
          
          while(AD7190_RDY_STATE && timeOutCnt--)
          {
            ;
          }
        }
        
        /***************************************************************************//**
         * @brief Selects the channel to be enabled.
         *
         * @param channel - Selects a channel.
         * 
         * @return none.
        *******************************************************************************/
        void AD7190_ChannelSelect(unsigned short channel)
        {
          unsigned long oldRegValue = 0x0;
          unsigned long newRegValue = 0x0;  
           
          oldRegValue = AD7190_GetRegisterValue(AD7190_REG_CONF, 3, 1);
          oldRegValue &= ~(AD7190_CONF_CHAN(0xFF));
          newRegValue = oldRegValue | AD7190_CONF_CHAN(1 << channel);  
          AD7190_SetRegisterValue(AD7190_REG_CONF, newRegValue, 3, 1);
        }
        
        /***************************************************************************//**
         * @brief Performs the given calibration to the specified channel.
         *
         * @param mode - Calibration type.
         * @param channel - Channel to be calibrated.
         *
         * @return none.
        *******************************************************************************/
        void AD7190_Calibrate(unsigned char mode, unsigned char channel)
        {
          unsigned long oldRegValue = 0x0;
          unsigned long newRegValue = 0x0;
          
          AD7190_ChannelSelect(channel);
          oldRegValue = AD7190_GetRegisterValue(AD7190_REG_MODE, 3, 1);
          oldRegValue &= ~AD7190_MODE_SEL(0x7);
          newRegValue = oldRegValue | AD7190_MODE_SEL(mode);
          ADI_PART_CS_LOW; 
          AD7190_SetRegisterValue(AD7190_REG_MODE, newRegValue, 3, 0); // CS is not modified.
          AD7190_WaitRdyGoLow();
          ADI_PART_CS_HIGH;
        }
        
        /***************************************************************************//**
         * @brief Selects the polarity of the conversion and the ADC input range.
         *
         * @param polarity - Polarity select bit. 
                   Example: 0 - bipolar operation is selected.
                       1 - unipolar operation is selected.
        * @param range - Gain select bits. These bits are written by the user to select 
                 the ADC input range.   
         *
         * @return none.
        *******************************************************************************/
        void AD7190_RangeSetup(unsigned char polarity, unsigned char range)
        {
          unsigned long oldRegValue = 0x0;
          unsigned long newRegValue = 0x0;
          
          oldRegValue = AD7190_GetRegisterValue(AD7190_REG_CONF,3, 1);
          oldRegValue &= ~(AD7190_CONF_UNIPOLAR |
                   AD7190_CONF_GAIN(0x7));
          newRegValue = oldRegValue | 
                 (polarity * AD7190_CONF_UNIPOLAR) |
                 AD7190_CONF_GAIN(range); 
          AD7190_SetRegisterValue(AD7190_REG_CONF, newRegValue, 3, 1);
        }
        
        /***************************************************************************//**
         * @brief Returns the result of a single conversion.
         *
         * @return regData - Result of a single analog-to-digital conversion.
        *******************************************************************************/
        unsigned long AD7190_SingleConversion(void)
        {
          unsigned long command = 0x0;
          unsigned long regData = 0x0;
         
          command = AD7190_MODE_SEL(AD7190_MODE_SINGLE) | 
               AD7190_MODE_CLKSRC(AD7190_CLK_INT) |
               AD7190_MODE_RATE(0x060);  
          ADI_PART_CS_LOW;
          AD7190_SetRegisterValue(AD7190_REG_MODE, command, 3, 0); // CS is not modified.
          AD7190_WaitRdyGoLow();
          regData = AD7190_GetRegisterValue(AD7190_REG_DATA, 3, 0);
          ADI_PART_CS_HIGH;
          
          return regData;
        }
        
        /***************************************************************************//**
         * @brief Returns the average of several conversion results.
         *
         * @return samplesAverage - The average of the conversion results.
        *******************************************************************************/
        unsigned long AD7190_ContinuousReadAvg(unsigned char sampleNumber)
        {
          unsigned long samplesAverage = 0x0;
          unsigned char count = 0x0;
          unsigned long command = 0x0;
          
          command = AD7190_MODE_SEL(AD7190_MODE_CONT) | 
               AD7190_MODE_CLKSRC(AD7190_CLK_INT) |
               AD7190_MODE_RATE(0x060);
          ADI_PART_CS_LOW;
          AD7190_SetRegisterValue(AD7190_REG_MODE, command, 3, 0); // CS is not modified.
          for(count = 0;count < sampleNumber;count ++)
          {
            AD7190_WaitRdyGoLow();
            samplesAverage += AD7190_GetRegisterValue(AD7190_REG_DATA, 3, 0); // CS is not modified.
          }
          ADI_PART_CS_HIGH;
          samplesAverage = samplesAverage / sampleNumber;
          
          return samplesAverage ;
        }
        
        /***************************************************************************//**
         * @brief Read data from temperature sensor and converts it to Celsius degrees.
         *
         * @return temperature - Celsius degrees.
        *******************************************************************************/
        unsigned long AD7190_TemperatureRead(void)
        {
          unsigned char temperature = 0x0;
          unsigned long dataReg = 0x0;
          
          AD7190_RangeSetup(0, AD7190_CONF_GAIN_1);
          AD7190_ChannelSelect(AD7190_CH_TEMP_SENSOR);
          dataReg = AD7190_SingleConversion();
          dataReg -= 0x800000;
          dataReg /= 2815;  // Kelvin Temperature
          dataReg -= 273;  //Celsius Temperature
          temperature = (unsigned long) dataReg;
          
          return temperature;
        }
        از جمله ی رفتگان این راه دراز
        باز آمده ای کو که به ما گوید راز
        هان بر سر این دو راهه از روی نیاز
        چیزی نگذاری که نمی آیی باز

        دیدگاه


          #94
          پاسخ : مبدل آنالوگ به دیجیتال AD7190

          هدر فایل

          کد:
          /***************************************************************************//**
           *  @file  AD7190.h
           *  @brief Header file of AD7190 Driver.
           *  @author DNechita (Dan.Nechita@analog.com)
          ********************************************************************************
           * Copyright 2012(c) Analog Devices, Inc.
           *
           * All rights reserved.
           *
           * Redistribution and use in source and binary forms, with or without
           * modification, are permitted provided that the following conditions are met:
           * - Redistributions of source code must retain the above copyright
           *  notice, this list of conditions and the following disclaimer.
           * - Redistributions in binary form must reproduce the above copyright
           *  notice, this list of conditions and the following disclaimer in
           *  the documentation and/or other materials provided with the
           *  distribution.
           * - Neither the name of Analog Devices, Inc. nor the names of its
           *  contributors may be used to endorse or promote products derived
           *  from this software without specific prior written permission.
           * - The use of this software may or may not infringe the patent rights
           *  of one or more patent holders. This license does not release you
           *  from the requirement that you obtain separate licenses from these
           *  patent holders to use this software.
           * - Use of the software either in source or binary form, must be run
           *  on or directly connected to an Analog Devices Inc. component.
           *
           * THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
           * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
           * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
           * IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
           * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
           * LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
           * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
           * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
           * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
           * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
           *
          ********************************************************************************
           *  SVN Revision: 903
          *******************************************************************************/
          
          #ifndef __AD7190_H__
          #define __AD7190_H__
          
          /******************************************************************************/
          /***************************** Include Files **********************************/
          /******************************************************************************/
          #include "Communication.h"
          
          /******************************************************************************/
          /******************************** AD7190 **************************************/
          /******************************************************************************/
          
          /* SPI slave device ID */
          #define AD7190_SLAVE_ID     1
          
          /* AD7190 GPIO */
          #define AD7190_RDY_STATE    GPIO1_STATE
          
          /* AD7190 Register Map */
          #define AD7190_REG_COMM     0 // Communications Register (WO, 8-bit) 
          #define AD7190_REG_STAT     0 // Status Register     (RO, 8-bit) 
          #define AD7190_REG_MODE     1 // Mode Register      (RW, 24-bit 
          #define AD7190_REG_CONF     2 // Configuration Register (RW, 24-bit)
          #define AD7190_REG_DATA     3 // Data Register      (RO, 24/32-bit) 
          #define AD7190_REG_ID      4 // ID Register       (RO, 8-bit) 
          #define AD7190_REG_GPOCON    5 // GPOCON Register     (RW, 8-bit) 
          #define AD7190_REG_OFFSET    6 // Offset Register     (RW, 24-bit 
          #define AD7190_REG_FULLSCALE  7 // Full-Scale Register   (RW, 24-bit)
          
          /* Communications Register Bit Designations (AD7190_REG_COMM) */
          #define AD7190_COMM_WEN     (1 << 7)      // Write Enable. 
          #define AD7190_COMM_WRITE    (0 << 6)      // Write Operation.
          #define AD7190_COMM_READ    (1 << 6)      // Read Operation. 
          #define AD7190_COMM_ADDR(x)   (((x) & 0x7) << 3) // Register Address. 
          #define AD7190_COMM_CREAD    (1 << 2)      // Continuous Read of Data Register.
          
          /* Status Register Bit Designations (AD7190_REG_STAT) */
          #define AD7190_STAT_RDY     (1 << 7) // Ready.
          #define AD7190_STAT_ERR     (1 << 6) // ADC error bit.
          #define AD7190_STAT_NOREF    (1 << 5) // Error no external reference. 
          #define AD7190_STAT_PARITY   (1 << 4) // Parity check of the data register. 
          #define AD7190_STAT_CH2     (1 << 2) // Channel 2. 
          #define AD7190_STAT_CH1     (1 << 1) // Channel 1. 
          #define AD7190_STAT_CH0     (1 << 0) // Channel 0. 
          
          /* Mode Register Bit Designations (AD7190_REG_MODE) */
          #define AD7190_MODE_SEL(x)   (((x) & 0x7) << 21) // Operation Mode Select.
          #define AD7190_MODE_DAT_STA   (1 << 20)      // Status Register transmission.
          #define AD7190_MODE_CLKSRC(x)  ((x) & 0x3) << 18) // Clock Source Select.
          #define AD7190_MODE_SINC3    (1 << 15)      // SINC3 Filter Select.
          #define AD7190_MODE_ENPAR    (1 << 13)      // Parity Enable.
          #define AD7190_MODE_SCYCLE   (1 << 11)      // Single cycle conversion.
          #define AD7190_MODE_REJ60    (1 << 10)      // 50/60Hz notch filter.
          #define AD7190_MODE_RATE(x)   ((x) & 0x3FF)    // Filter Update Rate Select.
          
          /* Mode Register: AD7190_MODE_SEL(x) options */
          #define AD7190_MODE_CONT        0 // Continuous Conversion Mode.
          #define AD7190_MODE_SINGLE       1 // Single Conversion Mode.
          #define AD7190_MODE_IDLE        2 // Idle Mode.
          #define AD7190_MODE_PWRDN        3 // Power-Down Mode.
          #define AD7190_MODE_CAL_INT_ZERO    4 // Internal Zero-Scale Calibration.
          #define AD7190_MODE_CAL_INT_FULL    5 // Internal Full-Scale Calibration.
          #define AD7190_MODE_CAL_SYS_ZERO    6 // System Zero-Scale Calibration.
          #define AD7190_MODE_CAL_SYS_FULL    7 // System Full-Scale Calibration.
          
          /* Mode Register: AD7190_MODE_CLKSRC(x) options */
          #define AD7190_CLK_EXT_MCLK1_2     0 // External crystal. The external crystal
                               // is connected from MCLK1 to MCLK2.
          #define AD7190_CLK_EXT_MCLK2      1 // External Clock applied to MCLK2 
          #define AD7190_CLK_INT         2 // Internal 4.92 MHz clock. 
                               // Pin MCLK2 is tristated.
          #define AD7190_CLK_INT_CO        3 // Internal 4.92 MHz clock. The internal
                               // clock is available on MCLK2.
          
          /* Configuration Register Bit Designations (AD7190_REG_CONF) */
          #define AD7190_CONF_CHOP    (1 << 23)      // CHOP enable.
          #define AD7190_CONF_REFSEL   (1 << 20)      // REFIN1/REFIN2 Reference Select.
          #define AD7190_CONF_CHAN(x)   (((x) & 0xFF) << 8) // Channel select.
          #define AD7190_CONF_BURN    (1 << 7)       // Burnout current enable.
          #define AD7190_CONF_REFDET   (1 << 6)       // Reference detect enable.
          #define AD7190_CONF_BUF     (1 << 4)       // Buffered Mode Enable.
          #define AD7190_CONF_UNIPOLAR  (1 << 3)       // Unipolar/Bipolar Enable.
          #define AD7190_CONF_GAIN(x)   ((x) & 0x7)     // Gain Select.
          
          /* Configuration Register: AD7190_CONF_CHAN(x) options */
          #define AD7190_CH_AIN1P_AIN2M   0 // AIN1(+) - AIN2(-)    
          #define AD7190_CH_AIN3P_AIN4M   1 // AIN3(+) - AIN4(-)    
          #define AD7190_CH_TEMP_SENSOR   2 // Temperature sensor    
          #define AD7190_CH_AIN2P_AIN2M   3 // AIN2(+) - AIN2(-)    
          #define AD7190_CH_AIN1P_AINCOM   4 // AIN1(+) - AINCOM    
          #define AD7190_CH_AIN2P_AINCOM   5 // AIN2(+) - AINCOM    
          #define AD7190_CH_AIN3P_AINCOM   6 // AIN3(+) - AINCOM    
          #define AD7190_CH_AIN4P_AINCOM   7 // AIN4(+) - AINCOM
          
          /* Configuration Register: AD7190_CONF_GAIN(x) options */
          //                       ADC Input Range (5 V Reference)
          #define AD7190_CONF_GAIN_1		0 // Gain 1  +-5 V
          #define AD7190_CONF_GAIN_8		3 // Gain 8  +-625 mV
          #define AD7190_CONF_GAIN_16		4 // Gain 16  +-312.5 mV
          #define AD7190_CONF_GAIN_32		5 // Gain 32  +-156.2 mV
          #define AD7190_CONF_GAIN_64		6 // Gain 64  +-78.125 mV
          #define AD7190_CONF_GAIN_128	7 // Gain 128 +-39.06 mV
          
          /* ID Register Bit Designations (AD7190_REG_ID) */
          #define ID_AD7190        0x4
          #define AD7190_ID_MASK     0x0F
          
          /* GPOCON Register Bit Designations (AD7190_REG_GPOCON) */
          #define AD7190_GPOCON_BPDSW   (1 << 6) // Bridge power-down switch enable
          #define AD7190_GPOCON_GP32EN  (1 << 5) // Digital Output P3 and P2 enable
          #define AD7190_GPOCON_GP10EN  (1 << 4) // Digital Output P1 and P0 enable
          #define AD7190_GPOCON_P3DAT   (1 << 3) // P3 state
          #define AD7190_GPOCON_P2DAT   (1 << 2) // P2 state
          #define AD7190_GPOCON_P1DAT   (1 << 1) // P1 state
          #define AD7190_GPOCON_P0DAT   (1 << 0) // P0 state
          
          
          /******************************************************************************/
          /*********************** Functions Declarations *******************************/
          /******************************************************************************/
          
          /*! Writes data into a register. */
          void AD7190_SetRegisterValue(unsigned char registerAddress,
                         unsigned long registerValue,
                         unsigned char bytesNumber,
                         unsigned char modifyCS);
          
          /*! Reads the value of a register. */
          unsigned long AD7190_GetRegisterValue(unsigned char registerAddress,
                             unsigned char bytesNumber,
                             unsigned char modifyCS);
          
          /*! Checks if the AD7139 part is present. */
          unsigned char AD7190_Init(void);
          
          /*! Resets the device. */
          void AD7190_Reset(void);
          
          /*! Set device to idle or power-down. */
          void AD7190_SetPower(unsigned char pwrMode);
          
          /*! Waits for RDY pin to go low. */
          void AD7190_WaitRdyGoLow(void);
          
          /*! Selects the channel to be enabled. */
          void AD7190_ChannelSelect(unsigned short channel);
          
          /*! Performs the given calibration to the specified channel. */
          void AD7190_Calibrate(unsigned char mode, unsigned char channel);
          
          /*! Selects the polarity of the conversion and the ADC input range. */
          void AD7190_RangeSetup(unsigned char polarity, unsigned char range);
          
          /*! Returns the result of a single conversion. */
          unsigned long AD7190_SingleConversion(void);
          
          /*! Returns the average of several conversion results. */
          unsigned long AD7190_ContinuousReadAvg(unsigned char sampleNumber);
          
          /*! Read data from temperature sensor and converts it to Celsius degrees. */
          unsigned long AD7190_TemperatureRead(void);
          
          #endif /* __AD7190_H__ */
          از جمله ی رفتگان این راه دراز
          باز آمده ای کو که به ما گوید راز
          هان بر سر این دو راهه از روی نیاز
          چیزی نگذاری که نمی آیی باز

          دیدگاه


            #95
            پاسخ : مبدل آنالوگ به دیجیتال AD7190

            آره دیدم تو سایت آنالوگ گذاشته بود این کد رو
            درسته که خیلی کامله ولی بیش از حد پیچیدست ( تقریبا نمیشه ازش سر در آورد )
            از همین کد آقای میرزایی ( نوشته استاد کوهستانی ) استفاده کنید همه نیازا برطرف میشه
            من الان افتادم توی کد و تقریبا همه چیزشو در آوردم :wow:
            فردا حتما میکرو رو پروگرام میکنم ببینم چی میشه
            درایور شبکه و nRF24L01
            کاتالوگ محصولات
            کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
            شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
            فروش اسیلوسکوپ GWinstek GOS-630FC

            دیدگاه


              #96
              پاسخ : مبدل آنالوگ به دیجیتال AD7190

              نوشته اصلی توسط بسطام بیرامی
              آره دیدم تو سایت آنالوگ گذاشته بود این کد رو
              درسته که خیلی کامله ولی بیش از حد پیچیدست ( تقریبا نمیشه ازش سر در آورد )
              از همین کد آقای میرزایی ( نوشته استاد کوهستانی ) استفاده کنید همه نیازا برطرف میشه
              من الان افتادم توی کد و تقریبا همه چیزشو در آوردم :wow:
              فردا حتما میکرو رو پروگرام میکنم ببینم چی میشه
              قطعا همین طور هست که شما میفرمایید.فقط یک مطلبی که هست اگر بخواهید بصورت run time تغییرات اعمال کنید
              (نه بصورت کامل در یک رجیستر ) به مشکل بر میخورید

              من یک نرم افزار به این شکل درست کردم که تمامی امکانات را (بصورت مجزا) در اختیارم قرار میده و برای من بسیار مفید بود :


              از جمله ی رفتگان این راه دراز
              باز آمده ای کو که به ما گوید راز
              هان بر سر این دو راهه از روی نیاز
              چیزی نگذاری که نمی آیی باز

              دیدگاه


                #97
                پاسخ : مبدل آنالوگ به دیجیتال AD7190

                نوشته اصلی توسط meerkat
                قطعا همین طور هست که شما میفرمایید.فقط یک مطلبی که هست اگر بخواهید بصورت run time تغییرات اعمال کنید
                (نه بصورت کامل در یک رجیستر ) به مشکل بر میخورید

                من یک نرم افزار به این شکل درست کردم که تمامی امکانات را (بصورت مجزا) در اختیارم قرار میده و برای من بسیار مفید بود :
                ایول با لبویو درست کردی؟!! :wow: :applause: :applause: :job:
                عالی شده مثل برنامه خود آنالوگ دیوایسز
                خب وقتی میخوای با این کار کنی کلا همون کدی رو که گذاشتید پروگرام میکنید؟!!!
                من قصدم هس به این سمت برم و یه برنامه کامل براش درست کنم ولی فعلا تو قدم اول برام زیاده :biggrin:
                برنامه میکرو رو با چه کامپایلری نوشتید و میکروتون چییه؟!!!
                درایور شبکه و nRF24L01
                کاتالوگ محصولات
                کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                فروش اسیلوسکوپ GWinstek GOS-630FC

                دیدگاه


                  #98
                  پاسخ : مبدل آنالوگ به دیجیتال AD7190

                  ادم بخواد پیشرفت کنه باید مثال تانک جلو بره و تمام سختی هارو له کنه اینم از کار ما البته کامل نیست ولی چیز های زیادی به من یاد داده

                  دیدگاه


                    #99
                    پاسخ : مبدل آنالوگ به دیجیتال AD7190

                    نوشته اصلی توسط بسطام بیرامی
                    ایول با لبویو درست کردی؟!! :wow: :applause: :applause: :job:
                    بله با لب ویو هست .

                    خب وقتی میخوای با این کار کنی کلا همون کدی رو که گذاشتید پروگرام میکنید؟!!!
                    این کد که برای 7190 هست و من 7799 کار کردم ولی برای 7799 هم از کد آنالوگ دیواس استفاده نکردم چون full access نیست
                    (به عبارتی همه چیز تو مشتت نیست)
                    برنامه میکرو رو با چه کامپایلری نوشتید و میکروتون چییه؟!!!
                    میکرو mega88pa (که البته پشیمون شدم )و کامپایلر IAR
                    از جمله ی رفتگان این راه دراز
                    باز آمده ای کو که به ما گوید راز
                    هان بر سر این دو راهه از روی نیاز
                    چیزی نگذاری که نمی آیی باز

                    دیدگاه


                      پاسخ : مبدل آنالوگ به دیجیتال AD7190

                      نوشته اصلی توسط meerkat
                      قطعا همین طور هست که شما میفرمایید.فقط یک مطلبی که هست اگر بخواهید بصورت run time تغییرات اعمال کنید
                      (نه بصورت کامل در یک رجیستر ) به مشکل بر میخورید
                      من یک نرم افزار به این شکل درست کردم که تمامی امکانات را (بصورت مجزا) در اختیارم قرار میده و برای من بسیار مفید بود :
                      نوشته اصلی توسط بنیامین خلیلی
                      ادم بخواد پیشرفت کنه باید مثال تانک جلو بره و تمام سختی هارو له کنه اینم از کار ما البته کامل نیست ولی چیز های زیادی به من یاد داده
                      ی سوال دارم:
                      من قدیما ی مدت #C کار میکردم.
                      ب نظرم میاد پیاده سازی همه ی کنترل های مورد نظر از طریق ارتباط دیتای سریال و ی رابط ساده قابل پیاده سازی هستن.
                      ویژوال سی شارپ هم ک انصافن از نظر سورس و قابلیت ها فوق العاده س. مثلن شما میخواین دیتا رو بفرستین رو اکانت FTP یا...
                      در حالی ک لب ویو برای ارتباط سریال نیاز ب افزودن ی سری بخش داره و خیلی سنگین تر و پیچیده تره...

                      این مدل کارها چرا با مجموعه ی ویژوال استودیو انجام نمیشه؟

                      دیدگاه


                        پاسخ : مبدل آنالوگ به دیجیتال AD7190

                        اینجا جای بحث نیست اما اگه OCXلب ویو رو در C#استفاده کنی چرا نمیشه نوشت با C#

                        ای کاش C#رو ادامه می دادم :sad:

                        دیدگاه


                          پاسخ : مبدل آنالوگ به دیجیتال AD7190

                          نوشته اصلی توسط بنیامین خلیلی
                          ادم بخواد پیشرفت کنه باید مثال تانک جلو بره و تمام سختی هارو له کنه اینم از کار ما البته کامل نیست ولی چیز های زیادی به من یاد داده

                          64 تا سنسور دما ؟! با چی ؟! برای چی ؟!
                          از جمله ی رفتگان این راه دراز
                          باز آمده ای کو که به ما گوید راز
                          هان بر سر این دو راهه از روی نیاز
                          چیزی نگذاری که نمی آیی باز

                          دیدگاه


                            پاسخ : مبدل آنالوگ به دیجیتال AD7190

                            نوشته اصلی توسط meerkat
                            بله با لب ویو هست .
                            این کد که برای 7190 هست و من 7799 کار کردم ولی برای 7799 هم از کد آنالوگ دیواس استفاده نکردم چون full access نیست
                            (به عبارتی همه چیز تو مشتت نیست)میکرو mega88pa (که البته پشیمون شدم )و کامپایلر IAR
                            عالیه کارتون
                            حتما از تجربتون استفاده خواهم کرد تو نوشتن برنامه ای که بشه اینطور کنترلری براش نوشت
                            فقط اینطوریه که کد رو با UART برای میکرو میفرستید ( که مقدار ریجیسترا رو چی قرار بده ) بعد میکرو دستورو با SPI میفرسته به ADC
                            بش فک کردم ولی عملیش نکردم ( البته این کار برای برد آموزشی خیلی بدرد میخوره نه برای بردهای تک کاره )
                            درایور شبکه و nRF24L01
                            کاتالوگ محصولات
                            کنترلر CNC شش محوره برای پرینتر 3D و Pick n Place
                            شبیه ساز تک تیرانداز و سیبل دیجیتال با پردازش تصویر
                            فروش اسیلوسکوپ GWinstek GOS-630FC

                            دیدگاه


                              پاسخ : مبدل آنالوگ به دیجیتال AD7190

                              نوشته اصلی توسط meerkat
                              64 تا سنسور دما ؟! با چی ؟! برای چی ؟!
                              بله با ترموکوپل برای کسی خواست من هم انجام دادم

                              دیدگاه


                                پاسخ : مبدل آنالوگ به دیجیتال AD7190

                                نوشته اصلی توسط بنیامین خلیلی
                                بله با ترموکوپل برای کسی خواست من هم انجام دادم
                                هر چی فکر کردم اپلیکیشن ِش و نمیتونم تصور کنم .
                                با چی این تعداد ترموکوپل رو خوندی ؟
                                سوئیچ آنالوگ گذاشتی ؟

                                از جمله ی رفتگان این راه دراز
                                باز آمده ای کو که به ما گوید راز
                                هان بر سر این دو راهه از روی نیاز
                                چیزی نگذاری که نمی آیی باز

                                دیدگاه

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