ATmega + 12bit ADC

Обсуждаем контроллеры компании Atmel.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

slav0n писал(а):это фигня.
фигней, ты будешь заниматься.

Единственно могу сказать, да работает, но разница, да же при сравнении 12 реальных бит с 12-13 виртуальными (при 10 битном АЦП) ощутима, чувствуется. Это еще не хватает хорошей нагрузки с кучей пульсаций.

Но, как говорят, за неимением лучшего, сойдет и так. Но, лучше иметь 12 реальных бит, чем 12 виртуальных.

Да, и не хватает отсчетов, 64 отсчета - это мало.
Аватара пользователя
slav0n
Опытный кот
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков
Контактная информация:

Re: ATmega + 12bit ADC

Сообщение slav0n »

Dimon456 писал(а):фигней, ты будешь заниматься.
шаг 10 мВ не даст представления о предполагаемом разрешении 0.8 мВ
ohmycode!
primuss3.com
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

slav0n писал(а):сделай шаг 0.001В
Куда тебе этот шаг нужен? Для морального самоудовлетворения?
Да и шаг в 0.001В, пиши формулу, максимум у меня 33В, подстраивайся, выдам я тебе этот шаг.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: ATmega + 12bit ADC

Сообщение Starichok51 »

Dimon456 писал(а):при делении на 8 он отбрасывает 3 младших бита, которые несут информацию.
да, сумма 64 выборок дает 6 дополнительных бит.
но согласно теории оверсемплинга только 3 бита из 6 несут полезную (правильную) информацию.
с другой стороны, и ты прав - 3 младших бита тоже несут информацию, информацию о среднем значении.
и если поделить на 64, особенно с плавающей точкой, то получим достаточно правильное среднее значение.
веше я говорил, то делаю сумму 1000 выборок.
1000 мало отличается от 1024, и можно по этой теории считать, что я имею +5 бит.
но несмотря на мою тутошнюю защиту оверсемплинга, теория остается теорией. и не факт, что у меня на выходе импульсного блока питания имеется именно такой шум, который требует эта теория.
потому я и взял внешний АЦП, который аппаратно дает 15 бит.
но в своей теме я оставил устаревшую версию с внутренним АЦП для желающих собрать более простое устройство.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

Starichok51 писал(а):и не факт, что у меня на выходе импульсного блока питания имеется именно такой шум, который требует эта теория.
Я что-то не дошел еще до этого, надо отписаться в вашей теме, я то же использую импульсный источник питания, на той плате я испарил ключевые транзисторы, и переделал другую плату, плата Linkworld на АТ2005, только последняя заменена на ТЛ, именно по вашей схеме.
Там много шума не надо, у меня при АЦП 12 бит шумят 3 младших разряда, а это примерно 20мВ шума.
Причина шума вот в этом
СпойлерИзображение
это на ножке АЦП
это возникает при переключении каналов мультиплексора АЦП, к примеру, на одном канале у вас 2 вольта, а на другом - 0 вольт. Если сканировать один канал, такого не будет.

Я все тесты проводил при напряжении всего 5 вольт и без нагрузки. Если добавить хорошую нагрузку, думаю в шумах утонем.
Аватара пользователя
slav0n
Опытный кот
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков
Контактная информация:

Re: ATmega + 12bit ADC

Сообщение slav0n »

Dimon456 писал(а):выдам я тебе этот шаг
можешь не париться, просто поставь на выход цапа делитель 1:10 и меряй
хотя... замечено - на малых значениях входного сигнала, соизмеримых с шумом, оверсемплинг подламывается
ohmycode!
primuss3.com
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

slav0n писал(а):просто поставь на выход цапа делитель 1:10
а я на экране хочу увидеть реальные изменения, то есть измерить с точностью до 0,001В.
Формулу давай, сколько тебе выборок надо, 1024 хватит?
Аватара пользователя
slav0n
Опытный кот
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков
Контактная информация:

Re: ATmega + 12bit ADC

Сообщение slav0n »

какую формулу? не понял
1 мВ это разрешение 12 бит для опоры 4.096
0.8 для 3.3
ohmycode!
primuss3.com
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

Код: Выделить всё

33000*АЦП/32768
я же тебе сказал, 33 вольта максимум, а не 3,3 вольта.
Аватара пользователя
slav0n
Опытный кот
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков
Контактная информация:

Re: ATmega + 12bit ADC

Сообщение slav0n »

не тупи, 3.3 это твоя опора АЦП
ohmycode!
primuss3.com
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

slav0n, мне 51 год, мне лень уже думать, для отображения на индикаторе с точностью 0,001В, требуется сколько разрядов?
Аватара пользователя
slav0n
Опытный кот
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков
Контактная информация:

Re: ATmega + 12bit ADC

Сообщение slav0n »

а мне 54, так мне еще ленивее...
ведь это же ты тут бил себя пяткой в грудь, что оверсемплинг не работает
ohmycode!
primuss3.com
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

ну и оставайся тогда при своих интересах.

Эх slav0n, берем 64-битную переменную, складываем туды 256 выборок, сдвигаем на 3 бита, и получаем 15 бит, а далее где-то вот так 33000*15бит/32768.
Или так, берем 64-битную переменную, складываем туды 512 выборок, сдвигаем на 4 бита, и получаем 15 бит, а далее где-то вот так 33000*15бит/32768.
Последний раз редактировалось Dimon456 Вс авг 15, 2021 22:07:50, всего редактировалось 1 раз.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: ATmega + 12bit ADC

Сообщение Starichok51 »

Dimon456 писал(а):Причина шума вот в этом
это в каком месте снята картинка?
и какие шкалы по горизонтали и по вертикали?
Dimon456 писал(а):это возникает при переключении каналов мультиплексора АЦП, к примеру, на одном канале у вас 2 вольта, а на другом - 0 вольт.
ну, у меня тоже 2 канала - по напряжению и по току.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

Starichok51 писал(а):это в каком месте снята картинка?
Я делал в соответствии с этой статьей, и картинки от туда, свои картинки я не делал, но они соответствуют, поставил после делителя напряжения буферный ОУ (на усилителе тока у вас и так ОУ стоит) и rc-цепь 220 Ом и 10нФ.

Вот, к примеру, с генератора начального кода CVAVR
Спойлер

Код: Выделить всё

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=(1<<ADSC);
// Wait for the AD conversion to complete
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
}
они предлагают делать задержку после переключения входов мультиплексора в 10мкс, возможно на успокоение этого процесса.
Задержка в 10мкс работает на 8/16/32 может еще каких мегах, на 8L этого мало.
На 48/168/328 этого то же мало.

На stm32 АЦП работает в DMA кольцевом режиме, последовательно сканируется 2 канала, так как сигнал постоянный (это не переменная или какая-то гармоническая), по этому я не отслеживаю в каком моменте у меня DMA находится, половинка и полный, я просто в любой момент беру из буфера DMA и считываю данные АЦП.
Аватара пользователя
slav0n
Опытный кот
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков
Контактная информация:

Re: ATmega + 12bit ADC

Сообщение slav0n »

Dimon456 писал(а):Эх slav0n, берем 64-битную переменную, складываем туды 256 выборок, сдвигаем на 3 бита, и получаем 15 бит, а далее где-то вот так 33000*15бит/32768.
Или так, берем 64-битную переменную, складываем туды 512 выборок, сдвигаем на 4 бита, и получаем 15 бит, а далее где-то вот так 33000*15бит/32768

эх, Dimon456, неправильно.
256 это +4 бита,
а для разгона 12 бит до 15 надо делать так:

Код: Выделить всё

n = 64 * x;//+3 bits
   ---
return (sum >> 3) / x;

разгон 10 бит до 15 будет интересней
1024 семпла - без усреднения

Код: Выделить всё

n = 1024 * x;//+5 bits
   ---
return (sum >> 5) / x;


Добавлено after 3 hours 20 minutes 25 seconds:
а что касается твоей "ФОРМУЛЫ" - 33000/32768
так это банальный коэффициент пропорциональности
для float вообще до лампочки что в числителе 0.33 или 330000
все равно на вход ацп не подашь больше 3.3
ohmycode!
primuss3.com
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

slav0n писал(а):все равно на вход ацп не подашь больше 3.3
Я знаю что не подашь больше 3,3, но на входе у меня стоит делитель на 10. 33/10=3,3. В чем опять проблема?
slav0n писал(а):n = 1024 * x;//+5 bits
---
return (sum >> 5) / x;
поподробнее, а то до меня долго доходит. Что такое х? И за чем делить на x? Сдвига мало?

Да и float у меня нету, поэтому без float.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: ATmega + 12bit ADC

Сообщение Starichok51 »

Dimon456, почитал статью, спасибо за ссылку.
я паузу перед запуском измерения не делаю. я даже не знал, что ее нужно делать.
я думаю, что искажения, вызванные конденсатором на входе АЦП по напряжению, у меня не имеют значения, так как в проекте с внутренним АЦП по напряжению я оставляю всего 300 единиц (30,0В), а это всего 9 бит.
выше я писал, что оставляю 16 бит среднего значения измеренного сигнала. и при обрезании до 9 бит искажения тоже отрежутся.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
slav0n
Опытный кот
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков
Контактная информация:

Re: ATmega + 12bit ADC

Сообщение slav0n »

Dimon456 писал(а):Что такое х? И за чем делить на x? Сдвига мало?
это усреднение, я уже писал:[uquote="slav0n",url="/forum/viewtopic.php?p=4075175#p4075175"]кстати, множитель 4^N выборок удобно брать из весов разрядов (2, 4, 8, 16...)
тогда децимацию и усреднение можно делать одновременно одним сдвигом[/uquote]также его можно брать и произвольным,
а еще на этот х можно умножить знаменатель твоей "формулы", убрав из return
ohmycode!
primuss3.com
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: ATmega + 12bit ADC

Сообщение Dimon456 »

slav0n, мы наверное на разных волнах с тобой находимся.
Еще раз, при АЦП 10бит: берем 64-битную переменную, складываем туды 256 выборок, 1023*256=261888 , о да же в 32 бита влазит
сдвигаем на 3 бита, 261888>>3=32736
и получаем 15 бит,
а далее где-то вот так 33000*15бит/32768. 33.000*32736/32738 = 32.997 с точностью до тысячной вольта.
Где неправильно?
Ответить

Вернуться в «AVR»