Преобразуйте мусорные ведра ADC в [закрытое] напряжение

    File pathOS = Environment.getRootDirectory();//Os Storage
    StatFs statOS = new StatFs(pathOS.getPath());

    File pathInternal = Environment.getDataDirectory();// Internal Storage
  StatFs statInternal = new StatFs(pathInternal.getPath());

    File pathSdcard = Environment.getExternalStorageDirectory();//External(SD CARD) Storage
    StatFs statSdcard = new StatFs(pathSdcard.getPath());

    if((android.os.Build.VERSION.SDK_INT < 18)) {
        // Get Android OS (system partition) free space API 18 & Below
        int totalBlocksOS = statOS.getBlockCount();
        int blockSizeOS = statOS.getBlockSize();
        int availBlocksOS = statOS.getAvailableBlocks();
        long total_OS_memory = (long) totalBlocksOS * (long) blockSizeOS;
        long free_OS_memory = (long) availBlocksOS * (long) blockSizeOS;
        long Used_OS_memory = total_OS_memory - free_OS_memory;
        TotalOsMemory       =   total_OS_memory ;
        FreeOsMemory        =   free_OS_memory;
        UsedOsMemory        =   Used_OS_memory;

        // Get internal (data partition) free space API 18 & Below
        int totalBlocksInternal = statInternal.getBlockCount();
        int blockSizeInternal = statOS.getBlockSize();
        int availBlocksInternal = statInternal.getAvailableBlocks();
        long total_Internal_memory = (long) totalBlocksInternal * (long) blockSizeInternal;
        long free_Internal_memory = (long) availBlocksInternal * (long) blockSizeInternal;
        long Used_Intenal_memory = total_Internal_memory - free_Internal_memory;
        TotalInternalMemory =   total_Internal_memory;
        FreeInternalMemory  =   free_Internal_memory ;
        UsedInternalMemory  =   Used_Intenal_memory ;

        // Get external (SDCARD) free space for API 18 & Below
        int totalBlocksSdcard = statSdcard.getBlockCount();
        int blockSizeSdcard = statOS.getBlockSize();
        int availBlocksSdcard = statSdcard.getAvailableBlocks();
        long total_Sdcard_memory = (long) totalBlocksSdcard * (long) blockSizeSdcard;
        long free_Sdcard_memory = (long) availBlocksSdcard * (long) blockSizeSdcard;
        long Used_Sdcard_memory = total_Sdcard_memory - free_Sdcard_memory;
        TotalSdcardMemory   =   total_Sdcard_memory;
        FreeSdcardMemory    =   free_Sdcard_memory;
        UsedSdcardMemory    =   Used_Sdcard_memory;
    }
    else {
        // Get Android OS (system partition) free space for API 18 & Above
        long   total_OS_memory          = (statOS.       getBlockCountLong()      * statOS.getBlockSizeLong());
        long   free_OS_memory           = (statOS.       getAvailableBlocksLong() * statOS.getBlockSizeLong());
        long Used_OS_memory = total_OS_memory - free_OS_memory;
        TotalOsMemory       =   total_OS_memory ;
        FreeOsMemory        =   free_OS_memory;
        UsedOsMemory        =   Used_OS_memory;

        // Get internal (data partition) free space for API 18 & Above
        long   total_Internal_memory    = (statInternal. getBlockCountLong()      * statInternal.getBlockSizeLong());
        long   free_Internal_memory     = (statInternal. getAvailableBlocksLong() * statInternal.getBlockSizeLong());
        long Used_Intenal_memory = total_Internal_memory - free_Internal_memory;
        TotalInternalMemory =   total_Internal_memory;
        FreeInternalMemory  =   free_Internal_memory ;
        UsedInternalMemory  =   Used_Intenal_memory ;

        // Get external (SDCARD) free space for API 18 & Above
        long   total_Sdcard_memory      = (statSdcard.   getBlockCountLong()      * statSdcard.getBlockSizeLong());
        long   free_Sdcard_memory       = (statSdcard.   getAvailableBlocksLong() * statSdcard.getBlockSizeLong());
        long Used_Sdcard_memory = tota*emphasized text*l_Sdcard_memory - free_Sdcard_memory;
        TotalSdcardMemory   =   total_Sdcard_memory;
        FreeSdcardMemory    =   free_Sdcard_memory;
        UsedSdcardMemory    =   Used_Sdcard_memory;
    }
}
9
задан Isaac Waller 31 July 2009 в 21:19
поделиться

4 ответа

Спецификация АЦП должна определять, как 5V представляется в терминах ваших 12 бит.

Я подозреваю, что 4095 соответствует 5 В, и поэтому ваше второе решение верное. В противном случае вы никогда не сможете правильно определить сигнал 5 В.

2
ответ дан 4 December 2019 в 21:11
поделиться

Предложение Брайана о проверке таблицы данных АЦП идеально. НО! Предполагая, что ваше максимальное напряжение (5 В) соответствует максимальному входу АЦП (12 бит = 4095), следующее преобразование должно работать для вас:

const float maxAdcBits = 4095.0f; // Using Float for clarity
const float maxVolts = 5.0f;      // Using Float for clarity
const float voltsPerBit = (maxVolts / maxAdcBits);

float yourVoltage = ADCReading * voltsPerBit;

Быстрый просмотр математических расчетов с помощью Excel заставляет меня поверить, что это правильно.

4
ответ дан 4 December 2019 в 21:11
поделиться

Для 12-битового значения максимальное представимое значение - 4095, но, конечно, всего 4096 значений (включая ноль). Если предположить, что ваш АЦП линейный, тогда да, 4095 эквивалентно полной шкале . Это не обязательно 5V, но то, что ваше опорное напряжение эквивалентно или значение, превышающее это напряжение (конечно).

1
ответ дан 4 December 2019 в 21:11
поделиться

Насколько разборчивы вы хотите стать? Если вы действительно хотите быть разборчивым, то вам также следует учесть, что каждая «ячейка» представляет собой небольшой диапазон значений (около 1,2 мВ в вашем случае). Итак, когда вы конвертируете в значение напряжения, хотите ли вы вернуть значение напряжения середины ячейки или нижнего края ячейки? То есть, хотите ли вы эффективно «усечь» или «округлить» значение, которое вы сообщаете?

Кроме того, шаги АЦП, вероятно, равны (линейны), но позаботьтесь о том, что АЦП делает с ячейками в две крайности диапазона. Эти ячейки могут быть в два раза меньше ширины других. Это зависит от АЦП, поэтому проверьте спецификацию.

Имеет ли это значение вообще, зависит от вашего приложения.

тогда вы также должны учитывать, что каждая «ячейка» представляет собой небольшой диапазон значений (около 1,2 мВ в вашем случае). Итак, когда вы конвертируете в значение напряжения, хотите ли вы вернуть значение напряжения середины ячейки или нижнего края ячейки? То есть, хотите ли вы эффективно «усечь» или «округлить» значение, которое вы сообщаете?

Кроме того, шаги АЦП, вероятно, равны (линейны), но позаботьтесь о том, что АЦП делает с ячейками в две крайности диапазона. Эти ячейки могут быть в два раза меньше ширины других. Это зависит от АЦП, поэтому проверьте спецификацию.

Имеет ли это значение вообще, зависит от вашего приложения.

тогда вы также должны учитывать, что каждая «ячейка» представляет собой небольшой диапазон значений (около 1,2 мВ в вашем случае). Итак, когда вы конвертируете в значение напряжения, хотите ли вы вернуть значение напряжения середины ячейки или нижнего края ячейки? То есть, хотите ли вы эффективно «усечь» или «округлить» значение, которое вы сообщаете?

Кроме того, шаги АЦП, вероятно, равны (линейны), но позаботьтесь о том, что АЦП делает с ячейками в две крайности диапазона. Эти ячейки могут быть в два раза меньше ширины других. Это зависит от АЦП, поэтому проверьте спецификацию.

Имеет ли это значение вообще, зависит от вашего приложения.

вы хотите вернуть значение напряжения середины бункера или нижнего края бункера? То есть, хотите ли вы эффективно «усечь» или «округлить» значение, которое вы сообщаете?

Кроме того, шаги АЦП, вероятно, равны (линейны), но позаботьтесь о том, что АЦП делает с ячейками в две крайности диапазона. Эти ячейки могут быть в два раза меньше ширины других. Это зависит от АЦП, поэтому проверьте спецификацию.

Имеет ли это значение вообще, зависит от вашего приложения.

вы хотите вернуть значение напряжения середины бункера или нижнего края бункера? То есть, хотите ли вы эффективно «усечь» или «округлить» значение, которое вы сообщаете?

Кроме того, шаги АЦП, вероятно, равны (линейны), но позаботьтесь о том, что АЦП делает с ячейками в две крайности диапазона. Эти ячейки могут быть в два раза меньше ширины других. Это зависит от АЦП, поэтому проверьте спецификацию.

Имеет ли это значение вообще, зависит от вашего приложения.

Эти ячейки могут быть в два раза меньше ширины других. Это зависит от АЦП, поэтому проверьте спецификацию.

Имеет ли это значение вообще, зависит от вашего приложения.

Эти ячейки могут быть в два раза меньше ширины других. Это зависит от АЦП, поэтому проверьте спецификацию.

Имеет ли это значение вообще, зависит от вашего приложения.

1
ответ дан 4 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: