Перейти к содержанию

АЦП - биполярный режим


parovoZZ

Рекомендуемые сообщения

AREF  - внутренний ИОН 1.1в

Вот такой код снятия результатов:

		temp = ADC;

		if (ADCH & (1<<ADCH1))						// Если значение отрицательное
		{
			temp |= 0xFC00;
			temp = (~temp) + 1;					
		}


		Value_current_lsb = (uint8_t)(temp >> 2);	

Никак не пойму - на выбранные дифф. входы надо подать 85 мВ, чтобы АЦП выдал 0. Но это могу списать на внутренний ОУ в виде УГ. Если подаю  -1,1 в - то получаю 127.  Здесь все верно. Но при подаче положительного смещения те же 127 получаю уже при 0,72в. Что за ерунда? Неужели ОУ на столько УГ? Либо же где-то теряется разряд?

Ссылка на комментарий
Поделиться на другие сайты

ерунда какая-то у вас написана, если ИОН =1.1в(код 11 1111 1111) , то средняя точка(ноль) = 0,55в (код 10 0000 0000)

положительный сигнал  +0,55в (код 11 1111 1111) , отрицательный -0,55в(код 00 0000 0000) или нет?

Ссылка на комментарий
Поделиться на другие сайты

Десять единиц никак не могут дать напряжение иона, т.к. это минус один в дополнительном коде и один по модулю. Напряжение иона выдаёт код 1FF для положительного и 200 для отрицательного (в 16 ой системе).

Далее. По формуле из даташита вычисляем, что при синфазном входном сигнале АЦП выдаст 0. Откуда пол-иона?

 

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 час назад, parovoZZ сказал:

Откуда пол-иона?

а вы диф.входы при GAIN=1 рассматривайте как два отдельных 10разядных АЦП (Vin=0..Vref)результат разности которых делится на 2 .

потому как:

12 часа назад, parovoZZ сказал:

Если подаю  -1,1 в - то получаю 127.  Здесь все верно.

это не верно. код должен быть -512d 

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

2 минуты назад, IMXO сказал:

это не верно. код должен быть -512d

Я его и получаю. Затем беру модуль и сдвигаю на два разряда вправо. Получаю свои 127.

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Только что, IMXO сказал:

а смысл этих танцев с бубном? сразу нельзя пользовать левое выравнивание?

Я так понял из даташита, что бит adlar в биполярном режиме игнорируется.

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, IMXO сказал:

это где в ДШ сказано?

смутила вот эта фраза

Цитата

Note that if the user wants to perform a quick polarity check of the result, it is sufficient to read the MSB of the result (ADC9 in ADCH). If the bit is one, the result is negative, and if this bit is zero, the result is positive.

Проверил в симуляторе - выравнивает. Проверил в железе - работает. Код упростился до нельзя, но проблема осталась. Это была пара PA3(+) / PA1(-). Проверил пару PA3(+) / PA2(-). Еще хуже - максимум уже при смещении 0.73в. Ну что ж  - меня предупреждали, а я не верил.  Интересно, что в униполярном режиме не все так плохо.

Буду расчехлять двухполупериодный выпрямитель. К черту дифф режимы.

Всем спасибо за ответы))

Ссылка на комментарий
Поделиться на другие сайты

В 17.02.2019 в 03:43, parovoZZ сказал:

if (ADCH & (1<<ADCH1)) // Если значение отрицательное

вот эта проверка очень сомнительная!!! это повторное чтение регистра?

замените ее на:

if((temp >> 9))&1)

например.

или, лучше:

if(temp > 0x1ff)

В 17.02.2019 в 03:43, parovoZZ сказал:

Если подаю  -1,1 в - то получаю 127

потом вы значение какой переменной смотрите здесь??? :

Value_current_lsb или temp???

Если temp то, действительно, странно. 

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, ruhi сказал:

вот эта проверка очень сомнительная!!!

согласен!

4 минуты назад, ruhi сказал:

это повторное чтение регистра?

Да!

как только по прерыванию от АЦП выхожу из IDLE состояния, сразу же ADCSRA = 0; т.к. дальше по коду у меня снова IDLE, но АЦП запускать мне уже не надо. Наверное, лучше на какой-то триггер подписаться, чтобы пин ADEN не обнулять и, как следствие, не попадать на 25 тактов на первом измерении, но вот пока так...

Изменено пользователем parovoZZ
Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, parovoZZ сказал:

Да!

как только по прерыванию от АЦП выхожу

это все не важно - повторное чтение регистра, который к тому же является частью 16-битного регистра, это очень не хорошо!

И еще вместо ИФ-а там можно сдвиг использовать. Хотя не факт что быстрее получится (по ассемблеру), так как сдвигать надо два регистра, на С-ях можно так написать (как работает я не проверял-зависит от компилятора и от оптимизации, но идея должна быть понятна):

register long int tmp1 = temp << 8;//сохранить в четырех-байтный инт в средние байты

temp = tmp1 >> 2;//лучше сдвинуть вправо на 2, чем влево на 6-шесть!!!

дальше надо учитывать что значение сдвинуто на шесть влево!

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, ruhi сказал:

повторное чтение регистра, который к тому же является частью 16-битного регистра, это очень не хорошо!

Хм.  Я вечером попробую.

У меня сейчас ADLAR = 1, соответственно, читаю только ADCH. 2-x байтных переменных нет.

7 минут назад, ruhi сказал:

register long int tmp1 = temp << 8;//сохранить в четырех-байтный инт в средние байты

а 4 байта для чего?

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, parovoZZ сказал:

а 4 байта для чего?

что бы было куда вправо сдвигать :) ! - нужен байт пустой справа: 2байта + 1 байт  = 3 байта, но 3-хбайтных типов в С нет! приходится использовать 4-х байтный!

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

11 минуту назад, ruhi сказал:

что бы было куда вправо сдвигать

ну потеряю я два младших бита, да и черт с ними. Сложная арифметика какая-то.

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, parovoZZ сказал:

ну потеряю я два младших бита, да и черт с ними.

я думал что все нужны, а если достаточно точности, то не надо огород городить, конечно!

Только всегда внимательно надо со сдвигами, и когда из short в char преобразуется, например.

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, ruhi сказал:

я думал что все нужны, а если достаточно точности, то не надо огород городить, конечно!

да даже если надо сдвинуть до 10-ого бита (знакового) - всё равно не прояснилась идея с 4-мя байтами...

Ссылка на комментарий
Поделиться на другие сайты

12 минуты назад, parovoZZ сказал:

всё равно не прояснилась идея с 4-мя байтами

но я не знаю как проще пояснить :(

Это трюк конечно, исключительно для 8-ми битных платформ, то есть, по определению, аппаратно ЗАвисимый, хотя, вроде бы, если написано на С должен компилироваться везде, теоретически.

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

Моя нашла косяк. Так как у меня в коде несколько IDLE состояний, то после преобразования делал так:
ADCSRA = 0;
Где-то в дашике в секции смены источника референсного напряжения сказано, что при такой смене ичточника необходимо выдержать паузу 1.5 мс до первого измерения. Но я и подумать не могла, что эта сноска относится и к включению АЦП тоже (ADEN = 1)/. Ну т.к. у меня АЦП делает 70 000 преобразований, то пауза эта не выдерживалась никак. Вместо бита ADEN = 0 написал ADIE = 0/ АЦП, разумеется, стартует, но я хотя бы из IDLE не выхожу, когда мне это не требуется. Терь работает как надо - от -1.0 и до +1.0 в вольтах =)
Всем спасибо за участие!

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...