|
АЦП-10 MSP430G2231, Где земля? |
|
|
|
Feb 6 2012, 17:28
|
Участник

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

|
Необходимо измерить сигнал с помощью АЦП МК MSP430G2231. Использую канал 1.3. Опор - внутренний источник 1,5 В. Источник сигнала - генератор, который даёт синус амплитудой 0,6 В, частотой в десятые Герца. АЦП подключается через резистор 10к к плюсу генератора, а плюс и минус генератора соединены через резистор 16к (резисторы на всякий пожарный, чтобы не сжечь). А вот где земля АЦП, мне найти не удалось. В руководстве сказано - её роль играет некая внутренняя аналоговая земля МК AVss, но вот что это за земля, и как её вывести на какой-то канал - осталось загадкой... Поэтому без земли результаты получились такими: измеренное значение варьируется в пределах 500-800, когда на АЦП подаётся синус. А вот если соединить вход АЦП с землёй генератора, то он будет показывать 444±3. А если не подключать АЦП ни к чему, то покажет 1023. Как с этим быть?
|
|
|
|
|
Feb 6 2012, 18:43
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
В этом МК нет отдельных выводов AVCC и AVSS. АЦП запитан от DVCC и DVSS. Измерение проводится относительно VR- и VR+, см. блок-схему Figure 22-1. ADC10 Block Diagram в User's Guide (стр.549). К VR- могут быть подключены AVSS=DVSS, вывод внутренней опоры VREF- или вывод внешней опоры VeREF-. AVSS подключается внутренне, а VREF- и VeREF- совмещены на одном пине (P1.3). К VR+ могут подключаться AVCC=DVCC, VREF+ или VeREF+. VREF+ и VeREF+также совмещены на одном пине (P1.4). Отличия в том, что VREF- и VREF+ это выводы встроенного ИОН и они являются его выходами, а VeREF- и VeREF+ это входы для подключения внешнего ИОН. Следует учитывать этот нюанс при настройке функций пинов (см. Table 19 и Table 20 в datasheet). Ну и также не стоит выходить за допустимые диапазоны входных напряжений для этих пинов, которые приведены в datasheet на стр.29, таблица 10-Bit ADC, External Reference.
|
|
|
|
|
Feb 7 2012, 16:58
|
Участник

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

|
Спасибо! Но получается вот что. Установлено 1,5 В VREF+, а VREF- - AVss. Но я соединил цифровую землю МК со входом АЦП через 10к - так АЦП выдал 432. А почему не 0?
|
|
|
|
|
Feb 7 2012, 17:55
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Потому, что знакопеременный сигнал нельзя измерить подав напрямую на унипорлярный вход. При таком подключении вы выходите за диапазон допустиммых синфазных напряжений. Амплитуда сигнала 0,6В означает, что в одну половину периода пиковое значение достигает +0,6В, а во вторую половину -0,6В. АЦП же может измерять напряжение только от диапазоне от VREF- до VREF+. т.е. от 0В до 1,5В. Чтобы подать на вход АЦП знакопеременный сигнал вы должны сделать схему смещения уровня, сместив входной сигнал на VREF/2. Тогда входной сигнал АЦП будет не -0,6В...+0,6В, а от 1,5В/2-0,6В= 0,15В и до 1,5В/2+0,6В= 1,35В. Нулем будет значение VREF/2=0,75В. Ну либо следует использовать МК с другим АЦП у которого дифференциальный вход (модуль SD16, напрмиер). Схемы смещения уровней обсуждались неоднократно на форуме в разделе В помощь начинающему.
|
|
|
|
|
Feb 7 2012, 19:23
|
Участник

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

|
Всё же непонятно. Если подавать на АЦП сигнал с цифровой земли микроконтроллера, то по формуле N = 1023 * (Vin - VR-) / (VR+ - VR-) должно получиться 0, т.к. Vin = VR- = AVss. Но получается 432. Померил напряжение между землёй и входом АЦП P1.3 - а там вдруг 3,5 В - уровень "1" МК. Это не нормально?
Хотя кое-что понятно. Когда вход с землёй соединены резистором 10 кОм, то напряжение между ними 0,64 В. А это напряжение как раз и равно 436, почти 432. Попробовал вместо внутреннего 1,5 В использовать основной источник 3,5 В для АЦП - в этом случае показывает 182, что тоже близко к рассчётному 184. Остаётся непонятным - откуда потенциал на входе АЦП?
Код инициализации такой: WDTCTL = WDTPW + WDTHOLD; P1DIR = BIT0+BIT4+BIT5+BIT6+BIT7; P1OUT = 0; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; BCSCTL2 &= ~(DIVS_3);
TACTL = TASSEL_2 + MC_2 + ID_3; CCTL0 = OUT;
P1SEL |= TXD + RXD; P1DIR &= ~ (RXD+BIT3); P1DIR |= TXD; ADC10CTL1 = INCH_3 + ADC10DIV_2; ADC10CTL0 = SREF_1 + ADC10SHT_0 + REFON + ADC10ON + ADC10IE; // 1,5 В // ADC10CTL0 = SREF_0 + ADC10SHT_0 + ADC10ON + ADC10IE; // 3,5 В А TXD и RXD - BIT1 и BIT2.
|
|
|
|
|
Feb 7 2012, 19:50
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
BratInt, извините за нескромный вопрос, который в последнев время хочется задавать все чаще, но я уж опасаюсь это делать: каков ваш уровень образования в теме электричества: школьный курс физики, радиолюбитель, студент-теоретик, инженер без практики или вообще программист? Я не хочу вас обидеть или унизить, мне просто нужно понять, на каком урвоне вам следует объяснять? Пока мне не это очень понятно. Вы основные документы по теме: User's Guide и datasheet, ссылки на которые я давал ранее, тщательно изучили? См. на картинки. Первая это то, что вы делаете и получаете. Вторая это то, как должно быть, чтобы сигнал оцифровывался правильно.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 7 2012, 20:15
|
Участник

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

|
Цитата(rezident @ Feb 7 2012, 23:50)  BratInt, извините за нескромный вопрос, который в последнев время хочется задавать все чаще, но я уж опасаюсь это делать: каков ваш уровень образования в теме электричества: школьный курс физики, радиолюбитель, студент-теоретик, инженер без практики или вообще программист? Я не хочу вас обидеть или унизить, мне просто нужно понять, на каком урвоне вам следует объяснять? Пока мне не это очень понятно. Вы основные документы по теме: User's Guide и datasheet, ссылки на которые я давал ранее, тщательно изучили? Программист. Документы изучил, тем более что это руководство у меня есть в переводе А.В.Евстифеева. Цитата(rezident @ Feb 7 2012, 23:50)  См. на картинки. Первая это то, что вы делаете и получаете. Вторая это то, как должно быть, чтобы сигнал оцифровывался правильно. Не совсем это. В последнем опыте, где было получено 432 и 182, подаю не синус, а константу - ADss. Вопрос в том, что напряжение между входом АЦП и землёй микроконтроллера (а не генератора) - 3,5 В, хотя такого должно быть?
|
|
|
|
|
Feb 7 2012, 20:25
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(BratInt @ Feb 8 2012, 01:15)  Программист. Документы изучил, тем более что это руководство у меня есть в переводе А.В.Евстифеева. Не читайте перед обедом советсикх газет переводы, пользуйтесь оригинальной документацией! Цитата(BratInt @ Feb 8 2012, 01:15)  Вопрос в том, что напряжение между входом АЦП и землёй микроконтроллера (а не генератора) - 3,5 В, хотя такого должно быть? Сомневаюсь, что читали внимательно  Для того, что пин стал аналоговым входом АЦП, его функцию нужно правильно запрограммировать. См. таблицы в конце datasheet, там, где нарисованы блок-схемы всех пинов.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 8 2012, 10:01
|
Участник

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

|
Цитата(rezident @ Feb 8 2012, 00:25)  Сомневаюсь, что читали внимательно  Для того, что пин стал аналоговым входом АЦП, его функцию нужно правильно запрограммировать. См. таблицы в конце datasheet, там, где нарисованы блок-схемы всех пинов. Добавил ещё строчку ADC10AE0 = BIT3; ничего не изменилось. Попробовал в качестве входа АЦП использовать P1.6 - а на нём всё работает безукоризненно, значения те, что и должны быть... При этом на P1.3 всё-равно остаётся уровень "1", хотя не должен быть. Посмотрел регистры - ничего подозрительного, единственное - 2 отличия: P1IN - "1" для 3 и "0" для 6. P1IFG - "0" для 3 и "1" для 6. При этом второй регистр - флаги прерываний, не должен влиять. А вот первый попробовал принудительно загнать P1IN=0, но значения всё равно восстановились сами...
|
|
|
|
|
Feb 15 2012, 07:54
|
Участник

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

|
Из каких соображений выбирать сопротивление между входом АЦП и генератором?
|
|
|
|
|
Feb 20 2012, 10:30
|
Участник

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

|
Неужели никто не в курсе?
|
|
|
|
|
Feb 28 2012, 13:46
|
Участник

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

|
Схема смещения не понадобилась, поскольку сигнал и так смещён относительно земли. Так что всё, вопрос пока закрыт! Ещё раз спасибо.
|
|
|
|
|
Jun 29 2012, 18:23
|
Участник

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

|
Возникла новая проблема. Вот уже несколько раз сталкивался с тем, что показания АЦП не соответствуют входному напряжению. Вот в частности, на вход подаётся 1,14 В - смотрел мультиметром. А АЦП говорит - 778, хотя опорное 2,5 В! А оказывается, что этот результат соответствует 1,5 В. Но потом, через несколько минут, АЦП начинает говорить уже 467, что как раз соответствует, и после этого работает правильно. Хотя входное напряжение не изменяется (те же 1,14 В). Микроконтроллер запрограммирован именно на опорное напряжение АЦП 2,5 В, оно устанавливается только в самом начале инициализации и больше не меняется. И вобще схема правильно работала несколько месяцев, но только сейчас ни с того ни с сего начала барахлить. С чем это может быть связано?
|
|
|
|
|
Jul 2 2012, 08:15
|
Участник

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

|
Мог ли "сломаться" микроконтроллер / встроенный ИОН, или причина в чём-то другом?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|