Единственно могу сказать, да работает, но разница, да же при сравнении 12 реальных бит с 12-13 виртуальными (при 10 битном АЦП) ощутима, чувствуется. Это еще не хватает хорошей нагрузки с кучей пульсаций.
Но, как говорят, за неимением лучшего, сойдет и так. Но, лучше иметь 12 реальных бит, чем 12 виртуальных.
Куда тебе этот шаг нужен? Для морального самоудовлетворения? Да и шаг в 0.001В, пиши формулу, максимум у меня 33В, подстраивайся, выдам я тебе этот шаг.
при делении на 8 он отбрасывает 3 младших бита, которые несут информацию.
да, сумма 64 выборок дает 6 дополнительных бит. но согласно теории оверсемплинга только 3 бита из 6 несут полезную (правильную) информацию. с другой стороны, и ты прав - 3 младших бита тоже несут информацию, информацию о среднем значении. и если поделить на 64, особенно с плавающей точкой, то получим достаточно правильное среднее значение. веше я говорил, то делаю сумму 1000 выборок. 1000 мало отличается от 1024, и можно по этой теории считать, что я имею +5 бит. но несмотря на мою тутошнюю защиту оверсемплинга, теория остается теорией. и не факт, что у меня на выходе импульсного блока питания имеется именно такой шум, который требует эта теория. потому я и взял внешний АЦП, который аппаратно дает 15 бит. но в своей теме я оставил устаревшую версию с внутренним АЦП для желающих собрать более простое устройство.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
и не факт, что у меня на выходе импульсного блока питания имеется именно такой шум, который требует эта теория.
Я что-то не дошел еще до этого, надо отписаться в вашей теме, я то же использую импульсный источник питания, на той плате я испарил ключевые транзисторы, и переделал другую плату, плата Linkworld на АТ2005, только последняя заменена на ТЛ, именно по вашей схеме. Там много шума не надо, у меня при АЦП 12 бит шумят 3 младших разряда, а это примерно 20мВ шума. Причина шума вот в этомСпойлер это на ножке АЦПэто возникает при переключении каналов мультиплексора АЦП, к примеру, на одном канале у вас 2 вольта, а на другом - 0 вольт. Если сканировать один канал, такого не будет.
Я все тесты проводил при напряжении всего 5 вольт и без нагрузки. Если добавить хорошую нагрузку, думаю в шумах утонем.
можешь не париться, просто поставь на выход цапа делитель 1:10 и меряй хотя... замечено - на малых значениях входного сигнала, соизмеримых с шумом, оверсемплинг подламывается
Эх slav0n, берем 64-битную переменную, складываем туды 256 выборок, сдвигаем на 3 бита, и получаем 15 бит, а далее где-то вот так 33000*15бит/32768. Или так, берем 64-битную переменную, складываем туды 512 выборок, сдвигаем на 4 бита, и получаем 15 бит, а далее где-то вот так 33000*15бит/32768.
Последний раз редактировалось Dimon456 Вс авг 15, 2021 22:07:50, всего редактировалось 1 раз.
Я делал в соответствии с этой статьей, и картинки от туда, свои картинки я не делал, но они соответствуют, поставил после делителя напряжения буферный ОУ (на усилителе тока у вас и так ОУ стоит) и 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, берем 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
Dimon456, почитал статью, спасибо за ссылку. я паузу перед запуском измерения не делаю. я даже не знал, что ее нужно делать. я думаю, что искажения, вызванные конденсатором на входе АЦП по напряжению, у меня не имеют значения, так как в проекте с внутренним АЦП по напряжению я оставляю всего 300 единиц (30,0В), а это всего 9 бит. выше я писал, что оставляю 16 бит среднего значения измеренного сигнала. и при обрезании до 9 бит искажения тоже отрежутся.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
slav0n, мы наверное на разных волнах с тобой находимся. Еще раз, при АЦП 10бит: берем 64-битную переменную, складываем туды 256 выборок, 1023*256=261888 , о да же в 32 бита влазит сдвигаем на 3 бита, 261888>>3=32736 и получаем 15 бит, а далее где-то вот так 33000*15бит/32768. 33.000*32736/32738 = 32.997 с точностью до тысячной вольта. Где неправильно?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения