настройка макроса АЦП

PIC версия программы(разные темы)

настройка макроса АЦП

Сообщение Sergey (Sergey) » 21 дек 2015, 11:28

Добрый день, mim!
При включении устройства сильно изменяются показания. Например, измеряю напряжение 100В, а при работе устройство показывает в диапазоне 90-110В. Тоже самое и с аналоговым датчиком температуры.
Подскажи пожалуйста где можно посмотреть как настроить макрос АЦП. Ты об этом писал в теме Повышающий преобразователь(бустер).
Но я не нашел.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Sergey
Имя: Sergey
Специалист
Специалист
Информация о пользователе

Re: настройка макроса АЦП

Сообщение mim (mim) » 21 дек 2015, 11:51

Что не нашел?
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: настройка макроса АЦП

Сообщение Sergey (Sergey) » 21 дек 2015, 11:58

Не нашел как настроить свойства компонента АЦП, в частности acquisition time.
Да и вообще как исправить проблему с сильным изменением значений на дисплеи, хотя проверяя мультиметром измеряемое напряжение стабильно, т.е. дело не в измеряемом сигнале.
Ник: Sergey
Имя: Sergey
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: настройка макроса АЦП

Сообщение mim (mim) » 21 дек 2015, 12:08

Ты предлагаешь мне повторить все по новой????
Вряд ли я смогу добавить больше чем есть...
Повышающий преобразователь(бустер)
Например, здесь все прекрасно описано... И даже Запиздон-дон-дон не испортил тему, а только ее улучшил.
А у тебя в программе, даже те настройки которые и так понятны, и те не установлены...
Схемы я не вижу...
Sergey писал(а):т.е. дело не в измеряемом сигнале.
Это как вариант имеет место быть. Нужно сделать тупо один канал (отключив все в программе) , настроить и проверить...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: настройка макроса АЦП

Сообщение Sergey (Sergey) » 23 дек 2015, 11:11

Добрый день, МИМ!
Вообщем пересмотрел все темы на которые Ты отсылал.
Пробывал сделать по примерам, но результат в железе остался темже (измеряемое напряжение гуляет).
Посмотрел осциллографом сигналы - вроде нормальные, без особых помех.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Sergey
Имя: Sergey
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: настройка макроса АЦП

Сообщение mim (mim) » 23 дек 2015, 13:08

Ты лазил в макросах АЦП?
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: настройка макроса АЦП

Сообщение Sergey (Sergey) » 23 дек 2015, 15:56

да.
Кстати проверили с оспользованием внутреннего эталонного напряжения ( CHS<3:0>: Analog Channel Select bits - 1111 = Fixed Ref (0.6 volt fixed reference)).
Работает лучше, но все равно плавает на 500мВ.
Думаю добавить источник опорного напряжения и рповерить с ним.
Ник: Sergey
Имя: Sergey
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: настройка макроса АЦП

Сообщение mim (mim) » 23 дек 2015, 16:01

Sergey писал(а):да.
Что ты изменил и с какой целью?
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: настройка макроса АЦП

Сообщение Sergey (Sergey) » 23 дек 2015, 16:11

#define MX_ADC_CHANNEL %a
#define MX_ADC_SAMP_TIME %b
#define MX_ADC_CONV_SP %c
#define MX_ADC_VREF_OPT %d

//set up ADC conversion
char old_tris, cnt;
adcon1 = 0x00;

//find appropriate bit
#if (MX_ADC_CHANNEL == 0)
#define MX_ADC_TRIS_REG trisa
#define MX_ADC_TRIS_MSK 0x01
ansel = 0x01;
#endif
#if (MX_ADC_CHANNEL == 1)
#define MX_ADC_TRIS_REG trisa
#define MX_ADC_TRIS_MSK 0x02
ansel = 0x02;
#endif
#if (MX_ADC_CHANNEL == 2)
#define MX_ADC_TRIS_REG trisa
#define MX_ADC_TRIS_MSK 0x04
ansel = 0x04;
#endif
#if (MX_ADC_CHANNEL == 3)
#define MX_ADC_TRIS_REG trisa
#define MX_ADC_TRIS_MSK 0x08
ansel = 0x08;
#if (MX_ADC_VREF_OPT != 0)
#error "Target device is currently using AN3 for VREF+"
#endif
#endif
#if (MX_ADC_CHANNEL == 4)
#define MX_ADC_TRIS_REG trisa
#define MX_ADC_TRIS_MSK 0x20
ansel = 0x10;
#endif
#if (MX_ADC_CHANNEL == 5)
#define MX_ADC_TRIS_REG trise
#define MX_ADC_TRIS_MSK 0x01
ansel = 0x20;
#endif
#if (MX_ADC_CHANNEL == 6)
#define MX_ADC_TRIS_REG trise
#define MX_ADC_TRIS_MSK 0x02
ansel = 0x40;
#endif
#if (MX_ADC_CHANNEL == 7)
#define MX_ADC_TRIS_REG trise
#define MX_ADC_TRIS_MSK 0x04
ansel = 0x80;
#endif
#if (MX_ADC_CHANNEL == 8)
#define MX_ADC_TRIS_REG trisb
#define MX_ADC_TRIS_MSK 0x04
anselh = 0x01;
#endif
#if (MX_ADC_CHANNEL == 9)
#define MX_ADC_TRIS_REG trisb
#define MX_ADC_TRIS_MSK 0x08
anselh = 0x02;
#endif
#if (MX_ADC_CHANNEL == 10)
#define MX_ADC_TRIS_REG trisb
#define MX_ADC_TRIS_MSK 0x02
anselh = 0x04;
#endif
#if (MX_ADC_CHANNEL == 11)
#define MX_ADC_TRIS_REG trisb
#define MX_ADC_TRIS_MSK 0x10
anselh = 0x08;
#endif
#if (MX_ADC_CHANNEL == 12)
#define MX_ADC_TRIS_REG trisb
#define MX_ADC_TRIS_MSK 0x01
anselh = 0x10;
#endif
#if (MX_ADC_CHANNEL == 13)
#define MX_ADC_TRIS_REG trisb
#define MX_ADC_TRIS_MSK 0x20
anselh = 0x20;
#endif
#if (MX_ADC_CHANNEL == 15)
#define MX_ADC_TRIS_REG trisb
#define MX_ADC_TRIS_MSK 0x20
anselh = 0x20;
// Fixed Ref (0.6 volt fixed reference) для проверки стабильности опорного напряжения
#endif
//sanity check
#ifndef MX_ADC_TRIS_REG
#error "ADC Type 7 conversion code error - please contact technical support"
#endif

//assign VREF functionality
#if (MX_ADC_VREF_OPT != 0)
st_bit(adcon1, VCFG0);
#endif

//store old tris value, and set the i/o pin as an input
old_tris = MX_ADC_TRIS_REG;
MX_ADC_TRIS_REG = MX_ADC_TRIS_REG | MX_ADC_TRIS_MSK;

//turn ADC on
adcon0 = (0x01 | (MX_ADC_CONV_SP << 6)) | (MX_ADC_CHANNEL << 2);

//wait the acquisition time
//cnt = 0;
//while (cnt < MX_ADC_SAMP_TIME) cnt++;
delay_us(1); // задержка перед началом преобразования

//begin conversion and wait until it has finished
adcon0 = adcon0 | 0x02;
while (adcon0 & 0x02);
delay_us(1); // После окончания преобразования необходимо выдержать паузу не менее 2Tad перед началом нового преобразования

//restore old tris value, and reset adc registers
MX_ADC_TRIS_REG = old_tris;
ansel = 0;
anselh = 0;
adcon0 = 0x00;

#undef MX_ADC_TRIS_REG
#undef MX_ADC_TRIS_MSK
#undef MX_ADC_SAMP_TIME
#undef MX_ADC_CHANNEL
#undef MX_ADC_CONV_SP
#undef MX_ADC_VREF_OPT
Ник: Sergey
Имя: Sergey
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: настройка макроса АЦП

Сообщение mim (mim) » 23 дек 2015, 16:17

На каком основании сделана эта правка?
Код: выделить все
//wait the acquisition time
//cnt = 0;
//while (cnt < MX_ADC_SAMP_TIME) cnt++;
delay_us(1); // задержка перед началом преобразования
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

След.

Вернуться в Flowcode PIC

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron