Приветствую Участников Форума!
Суть вопроса:
Хочу подключить ко встроенному 10-ти разрядному АЦП микроконтроллера AVR датчик MPX4250 (даташит прикреплен ниже)но до этого вообще не работал ни с АЦП ни с датчиками
Прошу вас разъяснить, как лучше подключить этот датчик схемно (нужны ли фильтры и тд и тп), и как потом считывать и преобразовывать значения c АЦП, учитывая что выходное напряжение у него от 0.2 В до 4.7 В? т.е нулевому значению давления соответсвует 0.2 В напряжения на выходе датчика?
Как подключить аналоговый датчик MPX4250 к мк AVR?
Как подключить аналоговый датчик MPX4250 к мк AVR?
- Вложения
-
- MPX4250.pdf
- ДАТАШИТ
- (146.54 КБ) 551 скачивание
- Реклама
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Как подключить аналоговый датчик MPX4250 к мк AVR?
Учитывая выходной диапазон датчика, его в принципе можно подключать прямо ко входу АЦП. Необходимость фильтров зависит от условий работы схемы и необходимой точности. У меня работало без фильтров (MPX550, MPX6300 и 6400), но мне и точность была не сильно важна. Ну как считывать это понятно, просто определяем нужную частоту, выставляем прескалер, выравнивание, канал АЦП, читаем напряжение, переводим в давление вот и все.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Как подключить аналоговый датчик MPX4250 к мк AVR?
Подключается он очень просто - выход датчика ко входу АЦП. Ну можно, если хотите, поставить фильтрующую RC-цепочку, скажем, 10 кОм и 10 нФ. Датчик ратиометрический, поэтому питать его нужно от того же источника, что питает контроллер (AVCC), а для АЦП выбрать в качестве опорного AVCC.
Вот мой код для похожего датчика:
Вот мой код для похожего датчика:
Код: Выделить всё
//----------------------------------------------------------------------------
//Модуль обслуживания датчика давления MPXH6400A
//----------------------------------------------------------------------------
#include "Main.h"
#include "MPXH6400A.h"
//------------------------------- Константы: ---------------------------------
#define ADC_RES 1023L //количество квантов ADC
#define N_FIR 100 //количество точек цифрового фильтра
#define K_MUL 4130L //получаем из формулы в datasheet
#define S_ADD 35 //получаем из формулы в datasheet
//------------------------------- Переменные: --------------------------------
static long AdcCode; //суммарный код ADC
static int FirPnt; //счетчик точек цифрового фильтра
static int Code; //код давления
//----------------------- Инициализация модуля АЦП: --------------------------
void MPX_Init(void)
{
ACSR = (1 << ACD); //запрещение аналогового компаратора
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1);//разрешение ADC, CK/64:
ADMUX = (1 << REFS0) | MUX_MPX; //REF = AVCC, выбор входа
AdcCode = 0; //обнуление суммарного кода ADC
Code = 0; //обнуление измеренного значения
FirPnt = N_FIR; //загрузка счетчика точек цифрового фильтра
ADCSRA |= (1<<ADSC); //запуск ADC
}
//------------------------- Обработка данных ADC: ----------------------------
void MPX_Exe(bool t)
{
if(t)
{
if(FirPnt)
{
int Code = ADC; //чтение ADC
AdcCode += Code; //суммирование отсчетов
FirPnt--; //следующая точка
}
else
{
Code = AdcCode * K_MUL / (ADC_RES * N_FIR) + S_ADD; //вычисление давления (x0.1 кПа)
AdcCode = 0; //обнуление суммарного кода ADC
FirPnt = N_FIR; //загрузка счетчика точек цифрового фильтра
}
ADCSRA |= (1<<ADSC); //запуск ADC
}
}
//------------------------ Чтение давления (x0.1 кПа): ----------------------------
int MPX_GetP(void)
{
return(Code);
}
//----------------------------------------------------------------------------
Re: Как подключить аналоговый датчик MPX4250 к мк AVR?
Спасибо вам за информациюEngineer_Keen писал(а):Ну как считывать это понятно, просто определяем нужную частоту, выставляем прескалер, выравнивание, канал АЦП, читаем напряжение, переводим в давление вот и все.
К сожалению не до конца понятно) с частотой и настройками АЦП это разберусь, а вот как перевести полученный результат в давление, по каким формулам? И еще
вот допустим у меня датчик меряет давление 0- 250 кПа, АЦП микроконтроллера 10-битный, то получается с какой точностью я могу измерить давление?
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Как подключить аналоговый датчик MPX4250 к мк AVR?
Формула в datasheet, стр. 5, в самом верху. Выражаете из нее P и масштабируете всё для целочисленных вычислений. А если процессорного времени не жалко, можно посчитать и с плавающей запятой, как есть.mig192 писал(а):как перевести полученный результат в давление, по каким формулам?
Точность - вопрос скользкий. Нужно смотреть datasheet. А вот разрешение будет примерно 0.25 кПа.mig192 писал(а):у меня датчик меряет давление 0- 250 кПа, АЦП микроконтроллера 10-битный, то получается с какой точностью я могу измерить давление?
- Реклама
Re: Как подключить аналоговый датчик MPX4250 к мк AVR?
Леонид Иванович,
Выражаю вам свою благодарность! Разъяснили!)) Теперь все ясно
, будем работать)
Выражаю вам свою благодарность! Разъяснили!)) Теперь все ясно


