Как повысить точность вычисления напряжения

Обсуждаем контроллеры компании Atmel.
Ответить
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36

Сообщение vovik15 »

Здравствуйте,такой вопрос: использую mega168 для измерения напряжения. Диапазон 0-4.5 вольта. Опорное напряжение взял со стабилизатора 2.5 вольта, расчитал делитель напряжения. Данные снимаю с регистра ADCH левое выравнивание. 8бит Формулу расчитал так: при Umax = 4.5v ADC = 255. Дальше 4500 мв/255 = 17.6 мв на одну единицу ацп.(ADC*176)/10. В результате получается более менее точные вычисления, но мне это не нравится. Есть ли другие формулы расчета,более точные? Float использовать не буду, он отнимает много ресурсов. За ранее спасибо.
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

используйте все 10 бит АЦП: 4500/1024=4,4 мв
P.S. для вашего МК float не такая уж и большая проблема
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36

Сообщение vovik15 »

Ну как сказать, код занимал 10 процентов, после деления на дробное число,код стал занимать 30% почему то
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

даже если и так - что вы там собираетесь пихать в остальные 70%? это ведь 11 килобайт!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36

Сообщение vovik15 »

Ну да впринципе места много. А вам приходилось забивать память до отказа?
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

да. в одном проекте atmega8 у меня заполнена на 99,8%
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36

Сообщение vovik15 »

Наверное коммерческий проект
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

vovik15 писал(а):ADC*176)/10. В результате получается более менее точные вычисления, но мне это не нравится. Есть ли другие формулы расчета,более точные?
А зачем делить на 10? Считай в десятых долях мВ, и все. Потом, в процессе выдачи, поставишь точку перед последней цифрой, будет в милливольтах.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2406
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

А зачем флоат? Используй лонги.
Для повышения точности, сделай сразу 10-20-30 да хоть 100 измерений, просуммируй все показания, а потом раздели на собственно сколько раз измерял. В итоге получишь куда более точное значение.
А если нужны десятые доли, то значение АЦП суммируй, умножай на 10, а потом дели. Умножай на значение напряжения на единицу АЦП и выводи поставив точку в нужном месте.
Глупый не задает вопросы. Глупый и так все знает.
Грызет канифоль
Сообщения: 264
Зарегистрирован: Сб мар 05, 2011 09:19:01

Сообщение _abk_ »

[uquote="AndTer",url="/forum/viewtopic.php?p=3456810#p3456810"]А зачем флоат? Используй лонги.
... сделай сразу 10-20-30 да хоть 100 измерений, просуммируй все показания, а потом раздели на собственно сколько раз измерял.[/uquote]Плохому учите? :)))
2 в степени n измерений, потом n раз сдвинуть вправо.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2406
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

Вполне нейтральному. Задротствовать с ассемблером времена прошли вместе с z80.
А про сдвиг нынешние студенты если слышали, то сразу забыли и пользоваться не умеют. Да и показывает практика нафиг надо. Хватает и процессорного времени и ресурсов чтобы просто делить. И в коде потом разобраться проще и самому писателю и всем всем всем.
Глупый не задает вопросы. Глупый и так все знает.
Грызет канифоль
Сообщения: 264
Зарегистрирован: Сб мар 05, 2011 09:19:01

Сообщение _abk_ »

[uquote="AndTer",url="/forum/viewtopic.php?p=3456896#p3456896"]Вполне нейтральному[/uquote] Отнюдь. Даже вредному. Это бессмысленная трата ресурсов и времени. И причем тут ассемблер?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2406
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

А тебе что, солить эти ресурсы и время? Пусть тратится, зато просто и доступно любому школьнику. МК в массы! Уж лучше так, чем ардуино!
Ассемблер тут при том, что подход этот уже давно отжил своё. Не нужно экономить ресурсы и время процессора, куда важней экономить время разработчика. Лучше погулять и пивка попить чем выдрачивать байтики и наносекундочки.
Глупый не задает вопросы. Глупый и так все знает.
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

сначала вопрос, для чего измеряете (управление процессом или индикация)?
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Грызет канифоль
Сообщения: 264
Зарегистрирован: Сб мар 05, 2011 09:19:01

Сообщение _abk_ »

AndTer писал(а):А тебе что, солить... подход этот уже давно отжил своё. Не нужно экономить ресурсы и время процессора...
Воинствующее невежество.
И я вам не тыкал и на брудершафт не пил. Так что потрудитесь держать себя в рамках.
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

если индикация - то шаг ацп очень желательно сделать кратным 10^n чтобы на экран хорошо вписывался. для этого нужно изменить границы измерения ( у нас 1024 отсчета, если делать шаг 5мВ, и от 0, то диапазон будет до 5,12В, думаю это не страшно).
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36

Сообщение vovik15 »

А поподробнее насчет сдвига можно? Не совсем понял как это делать
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

вам предлагают найти среднее арифметическое от нескольких замеров (мне кажется идея в голом виде не очень, желатешьно бы доработать).
а на счет сдвига - вам нравилось в школе умножать/делить на 10, 100 и.т.д... контроллеру тоже нравится, только система счисления у него двоичная и его любимые цифры 2, 4, 8, 16, и т.д. принцип тотже.

Добавлено after 3 minutes 50 seconds:
идея будет работать если уровень шумов достаточен (не меньше одного отсчета) и если замеров делать достаточно много.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36

Сообщение vovik15 »

Один сдвиг вправо кратен делению на 8?
Контактная информация:
Ответить

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