реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Шумит АЦП
OlegALL
сообщение Aug 23 2015, 07:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 30-11-10
Пользователь №: 61 275



Привет
Процессор: 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;
}


Сообщение отредактировал OlegALL - Aug 23 2015, 07:34
Прикрепленные файлы
Прикрепленный файл  MSP430_________.pdf ( 2.46 мегабайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
Obam
сообщение Aug 23 2015, 10:04
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



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

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

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

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

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

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

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

Найдите книжицу: Бэйкер Б. "Что нужно знать цифровому инженеру об аналоговой электронике" М.Додэка-XXI, 2010.
Просветление гарантировано: и как "земли-питание" разводить и как работу АЦП оценивать.
Вообще, пока на www.ti.com есть доступ поищите там её (да! это не мужик sm.gif ) статьи.


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
sasa_c
сообщение Aug 27 2015, 07:06
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 14-11-09
Пользователь №: 53 615



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

Сообщение отредактировал sasa_c - Aug 27 2015, 07:07
Go to the top of the page
 
+Quote Post
Myron
сообщение Aug 27 2015, 12:26
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 849
Регистрация: 6-02-05
Пользователь №: 2 451



Цитата(sasa_c @ Aug 27 2015, 01:06) *
Вам на САХАРЕ ответили правильно, смотрите топологию; проверьте осциллографом шум по питанию; проверьте шум вывода REF; посмотрите, что Вы подаёте на вход АЦП с аналоговой схемы, то же осциллографом. Выходное сопротивление Вашей схемы полностью успевает зарядить конденсатор схемы выборки внутри контроллера? Попробуйте увеличить время выборки.
Первый простой эксперимент - отключить сигнал от АЦП входа и подключить батарейку на 1.6 (NiKa) обязательно зашунтировав батарейку емкостью керамикой 1-10 мкФ.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 16:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016