Dikoy 3 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба Так получилось, что для получения необходимого разрешения по измеряемому напряжению мне нужно 10+ бит. Использовать планирую ATmega48 с внутренним генератором на 4-8 МГц. Атмега будет мерить 2 входа АЦП (6 и 7, т.к. на них больше ничего нету), выполнять элементарный расчёт и выдавать на семисегментный индикатор в динамическом режиме. На входе имеем 7 вольт и померить их надо с разрешением (и точностью) 0,006946891517745 вольт. 10 бит на таком диапазоне, это 0,0068359375, то есть как раз. И того, надо получить 1024 чистые точки. Без дрожания. Хотелось бы услышать мнения, как это сделать. Например, хватит ли внутреннего ИОНа для такой точности? В ДШ шум документирован как 0,5 LSB. Правда, нигде не нашёл, это при измерении в шутдауне, или при работающем ядре тоже? Допустим, на время измерения я буду отправлять МК в шутдаун (хотя не хотелось бы, т.к. на нём ещё и динамическая индикация). Делать усреднение (оверсемплинг) по 8-16 выборкам подряд... Что ещё можно сделать?.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба Так получилось, что для получения необходимого разрешения по измеряемому напряжению мне нужно 10+ бит. .... Делать усреднение (оверсемплинг) по 8-16 выборкам подряд... Что ещё можно сделать?.. Либо читайте форум - это многократно обсуждалось, либо берите МК с лучшим АЦП. Либо внешний. Их еще делают пока. Не все засунули в АВРки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
777777 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба Я еще понимаю когда речь идет о 14-16 разрядном АЦП, но как можно добиться дрожания хотя бы одного бита у 10-разрядного? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба Я еще понимаю когда речь идет о 14-16 разрядном АЦП, но как можно добиться дрожания хотя бы одного бита у 10-разрядного? А я вот не могу понять, как может быть без дрожания? Оно всегда должно быть. Даже в одноразрядном АЦП. Но ТС интересует точность, а не дрожание. Хоть он об этом и не говорит. А говорит о дрожании. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба А я вот не могу понять, как может быть без дрожания? Оно всегда должно быть. Даже в одноразрядном АЦП. Но ТС интересует точность, а не дрожание. Хоть он об этом и не говорит. А говорит о дрожании. Если дрожит меньше 1LSB - то дрожание можно и не увидеть. Точности - хватит. А начальной точности опорника - не хватит однозначно, необходимо калибровать. Да и ошибка смещения у них очень даже изрядная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arttab 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба не забудьте считывать результат из 2х регистров Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба Если дрожит меньше 1LSB - то дрожание можно и не увидеть. А если близко к краю подойти, то дрожь невозможно ни удержать, ни не увидеть . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба Я делал так значительно лучше результат, сравнение до 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 // Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
777777 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба не забудьте считывать результат из 2х регистров А я всегда считываю из одного: int v = ADC; // :) Я делал так значительно лучше результат Это разгильдяйство. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба "0,006946891517745 вольт. " И зачем такая точность ? Ни один датчик или другое устройство не сможет поддерживать на выходе такую точность. Абсолютной линейности вых. сигналов в аналоговых датчиках не бывает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба "0,006946891517745 вольт. " И зачем такая точность ? Ни один датчик или другое устройство не сможет поддерживать на выходе такую точность. Абсолютной линейности вых. сигналов в аналоговых датчиках не бывает. В Колумбии именно с такой точностью взвешивают кокс. Заморачиваться с правилами округления там не принято. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
delamoure 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба Кокос, кокос, не издевайтесь... Стремление измерить 7000 mV с точностью +/- 7 mV мне непонятно. Ну и вообще как такой потенциал попадет в конечном итоге на мегу без делителя дело лично топикстартера. Время было 4:30 утра, человек перед сном задал вопрос :) Если по сути вопроса. Вы сами в курсе общих требованией: 1. правильная топология печатной платы; 2. фильтрация питающих цепей; 3. фильтрация измеряемых сигналов; 4. выбор ион (начальная точность, временная/температурная стабильность)ж 5. оверсемплинг в разумных пределах. Просто когда вы натыкаетесь на какую-то сложную задачу в простых приложениях, значит вы что-то делаете не так. Измените ее, измените решение etc. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба А если близко к краю подойти, то дрожь невозможно ни удержать, ни не увидеть . Это как бы самоочевидно. А реализовав дизеринг, эту "дрожь" можно и с пользой применить, уж два-три бита совсем просто добавляются... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба Это как бы самоочевидно. Для Вас. А ТС хотел от этого избавиться. И не только он. Вот и пишу банальности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 5 декабря, 2011 Опубликовано 5 декабря, 2011 · Жалоба А реализовав дизеринг, эту "дрожь" можно и с пользой применить... А как его "реализовать" по-простому? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться