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

 
 
> Шумит АЦП
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



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 17:53
Рейтинг@Mail.ru


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