Jump to content
    

Шумит АЦП

Привет

Процессор: MSP430F4152

АЦП: 10 разрядный

 

Делаю измерение температур по двум каналам АЦП.

АЦП работает в непрерывном режиме.

Проблема: АЦП сильно шумит, т.е. значение регистра ADC10MEM "гуляет" примерно от 260 до 270 единиц.

Т.е. "гуляют" 4 младших разряда. Это нормально или плохо?

Соответсвенно измеренная температура гуляет на +- 1 градус

Что делать, где ошибка?

 

Схему не могу выложить, мне запрещено. Но схема измерения как тут: http://avr-start.ru/?p=590

Даташит: https://yadi.sk/i/nGysJKVFibvYc

Код:

 

#include "adc.h"


float32_t dataArray[32] = {0};

uint16_t ADC10CTL1_mask;


void initADC(void)
{
    ADC10AE0 |= 0x03;                         // P7.4, P7.5 ADC option select
    //ADC10CTL0 = ADC10ON + ADC10SHT_0 + MSC + REF2_5V + REFON;          // Turn on ADC10, set sampling time
    ADC10CTL0 = ADC10ON + MSC;          // Turn on ADC10, set sampling time

    ADC10CTL1 |= CONSEQ1;
    ADC10CTL0 |= ENC;                        // Enable conversions
    ADC10CTL0 |= ADC10SC;                    // Start convn - software trigger  
}

void stopADC(void)
{
    ADC10CTL0 = 0;                    // Start convn - software trigger  
}


float32_t getTemperatureFromChannel(uint8_t channelNum)
{
   initADC();  


   P2DIR = 0x03;                             // "1" на выход для датчиков
   P2OUT = 0x03;
   __delay_cycles(1000);

   ADC10CTL1 &= 0xFFF;                     // очистим биты 12..15
   ADC10CTL1 |= channelNum << 12;          // установим биты 12..15


   float32_t data = ADC10MEM*0.1318-10.6422;

   dataArray[channelNum] = data;

   P2OUT = 0;

   stopADC();

   return data;
}

MSP430_________.pdf

Edited by OlegALL

Share this post


Link to post
Share on other sites

"…Проблема: АЦП сильно шумит…"

 

Действительно ли шумит АЦП (и как шумит) можно проверить по каналам 10 и 11 (встроенные делитель питания и термодатчик).

 

"…"гуляют" 4 младших разряда. Это нормально или плохо?…

Соответсвенно измеренная температура гуляет на +- 1 градус"

 

Это разве плохо? Вы сами то на что рассчитывали?

 

"Что делать, где ошибка?"

Плакать :) (шутка)

 

"АЦП работает в непрерывном режиме."

 

Это называется непрерывным режимом: в getTemperatureFromChannel инитится-запускается-останавливается АЦП? Готовность данных

как определяется?

 

Найдите книжицу: Бэйкер Б. "Что нужно знать цифровому инженеру об аналоговой электронике" М.Додэка-XXI, 2010.

Просветление гарантировано: и как "земли-питание" разводить и как работу АЦП оценивать.

Вообще, пока на www.ti.com есть доступ поищите там её (да! это не мужик :) ) статьи.

Share this post


Link to post
Share on other sites

Вам на САХАРЕ ответили правильно, смотрите топологию; проверьте осциллографом шум по питанию; проверьте шум вывода REF; посмотрите, что Вы подаёте на вход АЦП с аналоговой схемы, то же осциллографом. Выходное сопротивление Вашей схемы полностью успевает зарядить конденсатор схемы выборки внутри контроллера? Попробуйте увеличить время выборки.

Edited by sasa_c

Share this post


Link to post
Share on other sites

Вам на САХАРЕ ответили правильно, смотрите топологию; проверьте осциллографом шум по питанию; проверьте шум вывода REF; посмотрите, что Вы подаёте на вход АЦП с аналоговой схемы, то же осциллографом. Выходное сопротивление Вашей схемы полностью успевает зарядить конденсатор схемы выборки внутри контроллера? Попробуйте увеличить время выборки.
Первый простой эксперимент - отключить сигнал от АЦП входа и подключить батарейку на 1.6 (NiKa) обязательно зашунтировав батарейку емкостью керамикой 1-10 мкФ.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...