Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Шумит АЦП
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
OlegALL
Привет
Процессор: MSP430F4152
АЦП: 10 разрядный

Делаю измерение температур по двум каналам АЦП.
АЦП работает в непрерывном режиме.
Проблема: АЦП сильно шумит, т.е. значение регистра ADC10MEM "гуляет" примерно от 260 до 270 единиц.
Т.е. "гуляют" 4 младших разряда. Это нормально или плохо?
Соответсвенно измеренная температура гуляет на +- 1 градус
Что делать, где ошибка?

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

CODE
#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;
}
Obam
"…Проблема: АЦП сильно шумит…"

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

"…"гуляют" 4 младших разряда. Это нормально или плохо?…
Соответсвенно измеренная температура гуляет на +- 1 градус"

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

"Что делать, где ошибка?"
Плакать sm.gif (шутка)

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

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

Найдите книжицу: Бэйкер Б. "Что нужно знать цифровому инженеру об аналоговой электронике" М.Додэка-XXI, 2010.
Просветление гарантировано: и как "земли-питание" разводить и как работу АЦП оценивать.
Вообще, пока на www.ti.com есть доступ поищите там её (да! это не мужик sm.gif ) статьи.
sasa_c
Вам на САХАРЕ ответили правильно, смотрите топологию; проверьте осциллографом шум по питанию; проверьте шум вывода REF; посмотрите, что Вы подаёте на вход АЦП с аналоговой схемы, то же осциллографом. Выходное сопротивление Вашей схемы полностью успевает зарядить конденсатор схемы выборки внутри контроллера? Попробуйте увеличить время выборки.
Myron
Цитата(sasa_c @ Aug 27 2015, 01:06) *
Вам на САХАРЕ ответили правильно, смотрите топологию; проверьте осциллографом шум по питанию; проверьте шум вывода REF; посмотрите, что Вы подаёте на вход АЦП с аналоговой схемы, то же осциллографом. Выходное сопротивление Вашей схемы полностью успевает зарядить конденсатор схемы выборки внутри контроллера? Попробуйте увеличить время выборки.
Первый простой эксперимент - отключить сигнал от АЦП входа и подключить батарейку на 1.6 (NiKa) обязательно зашунтировав батарейку емкостью керамикой 1-10 мкФ.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.