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

Получить от АЦП полные 10 бит. Как?

Так получилось, что для получения необходимого разрешения по измеряемому напряжению мне нужно 10+ бит. Использовать планирую ATmega48 с внутренним генератором на 4-8 МГц. Атмега будет мерить 2 входа АЦП (6 и 7, т.к. на них больше ничего нету), выполнять элементарный расчёт и выдавать на семисегментный индикатор в динамическом режиме.

На входе имеем 7 вольт и померить их надо с разрешением (и точностью) 0,006946891517745 вольт.

10 бит на таком диапазоне, это 0,0068359375, то есть как раз.

И того, надо получить 1024 чистые точки. Без дрожания.

Хотелось бы услышать мнения, как это сделать.

 

Например, хватит ли внутреннего ИОНа для такой точности?

В ДШ шум документирован как 0,5 LSB. Правда, нигде не нашёл, это при измерении в шутдауне, или при работающем ядре тоже?

 

Допустим, на время измерения я буду отправлять МК в шутдаун (хотя не хотелось бы, т.к. на нём ещё и динамическая индикация). Делать усреднение (оверсемплинг) по 8-16 выборкам подряд... Что ещё можно сделать?..

Поделиться сообщением


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

Так получилось, что для получения необходимого разрешения по измеряемому напряжению мне нужно 10+ бит.

....

Делать усреднение (оверсемплинг) по 8-16 выборкам подряд... Что ещё можно сделать?..

Либо читайте форум - это многократно обсуждалось, либо берите МК с лучшим АЦП. Либо внешний. Их еще делают пока. Не все засунули в АВРки.

Поделиться сообщением


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

Я еще понимаю когда речь идет о 14-16 разрядном АЦП, но как можно добиться дрожания хотя бы одного бита у 10-разрядного?

Поделиться сообщением


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

Я еще понимаю когда речь идет о 14-16 разрядном АЦП, но как можно добиться дрожания хотя бы одного бита у 10-разрядного?

А я вот не могу понять, как может быть без дрожания? Оно всегда должно быть. Даже в одноразрядном АЦП.

Но ТС интересует точность, а не дрожание. Хоть он об этом и не говорит. А говорит о дрожании.

Поделиться сообщением


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

А я вот не могу понять, как может быть без дрожания? Оно всегда должно быть. Даже в одноразрядном АЦП.

Но ТС интересует точность, а не дрожание. Хоть он об этом и не говорит. А говорит о дрожании.

Если дрожит меньше 1LSB - то дрожание можно и не увидеть. Точности - хватит. А начальной точности опорника - не хватит однозначно, необходимо калибровать. Да и ошибка смещения у них очень даже изрядная.

Поделиться сообщением


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

Если дрожит меньше 1LSB - то дрожание можно и не увидеть.

А если близко к краю подойти, то дрожь невозможно ни удержать, ни не увидеть .

Поделиться сообщением


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

Я делал так значительно лучше результат, сравнение до 999 убери.

 

 

read_adc:              // Чтение АЦП 64 раза , и вычисление среднеарифметического значения 
clr     yl             // 
clr     yh             // 
ldi     loop,64        // Загружаем количество выборок 
read_cycle:            // Цикл чтения АЦП
sbi     adcsra,6       // Запускаем АЦП 
w_adc:                 //  
sbic    adcsra,6       // Ждем готовности АЦП к чтению данных 
rjmp    w_adc          // 
in      xl,ADCL        // считываем 8 младших битов АЦП
in      xh,ADCH        // считываем 2 старших бита  АЦП 
add     yl,xl          // 
adc     yh,xh          // 
dec     loop           // Счетчик циклов - 1 
brne    read_cycle     // 
// Деление полученого результата на 64 , >> 6 , сдвигаем на 6 разрядов в право 
ldi     loop,6         // 
devide_adc:            // 
lsr     yh             // 
ror     yl             // 
dec     loop           // 
brne    devide_adc     // 
ldi     xl,low (999)   // 
ldi     xh,high(999)   // 
cp      yl,xl          // 
cpc     yh,xh          // 
brsh    set_adc_data   // 
ret                    // На выход , результат хранится в Y 
set_adc_data:          // 
ldi     yl,low (999)   // 
ldi     yh,high(999)   // 
ret                    // 

Поделиться сообщением


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

не забудьте считывать результат из 2х регистров

А я всегда считываю из одного:

 

int v = ADC; // :)

 

Я делал так значительно лучше результат

Это разгильдяйство.

Поделиться сообщением


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

"0,006946891517745 вольт. " И зачем такая точность ? Ни один датчик или другое устройство не сможет поддерживать на выходе такую точность. Абсолютной линейности вых. сигналов в аналоговых датчиках не бывает.

Поделиться сообщением


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

"0,006946891517745 вольт. " И зачем такая точность ? Ни один датчик или другое устройство не сможет поддерживать на выходе такую точность. Абсолютной линейности вых. сигналов в аналоговых датчиках не бывает.

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

Поделиться сообщением


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

Кокос, кокос, не издевайтесь...

Стремление измерить 7000 mV с точностью +/- 7 mV мне непонятно.

Ну и вообще как такой потенциал попадет в конечном итоге на мегу без делителя дело лично топикстартера.

Время было 4:30 утра, человек перед сном задал вопрос :)

 

Если по сути вопроса.

Вы сами в курсе общих требованией:

1. правильная топология печатной платы;

2. фильтрация питающих цепей;

3. фильтрация измеряемых сигналов;

4. выбор ион (начальная точность, временная/температурная стабильность)ж

5. оверсемплинг в разумных пределах.

 

Просто когда вы натыкаетесь на какую-то сложную задачу в простых приложениях, значит вы что-то делаете не так. Измените ее, измените решение etc.

Поделиться сообщением


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

А если близко к краю подойти, то дрожь невозможно ни удержать, ни не увидеть .

Это как бы самоочевидно. А реализовав дизеринг, эту "дрожь" можно и с пользой применить, уж два-три бита совсем просто добавляются...

Поделиться сообщением


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

Это как бы самоочевидно.

Для Вас. А ТС хотел от этого избавиться. И не только он. Вот и пишу банальности.

Поделиться сообщением


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

А реализовав дизеринг, эту "дрожь" можно и с пользой применить...

А как его "реализовать" по-простому?

Поделиться сообщением


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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...