Обсуждаем контроллеры компании Atmel.
Пт сен 14, 2018 08:17:53
Здравствуйте,такой вопрос: использую mega168 для измерения напряжения. Диапазон 0-4.5 вольта. Опорное напряжение взял со стабилизатора 2.5 вольта, расчитал делитель напряжения. Данные снимаю с регистра ADCH левое выравнивание. 8бит Формулу расчитал так: при Umax = 4.5v ADC = 255. Дальше 4500 мв/255 = 17.6 мв на одну единицу ацп.(ADC*176)/10. В результате получается более менее точные вычисления, но мне это не нравится. Есть ли другие формулы расчета,более точные? Float использовать не буду, он отнимает много ресурсов. За ранее спасибо.
Пт сен 14, 2018 08:34:52
используйте все 10 бит АЦП: 4500/1024=4,4 мв
P.S. для вашего МК float не такая уж и большая проблема
Пт сен 14, 2018 09:09:01
Ну как сказать, код занимал 10 процентов, после деления на дробное число,код стал занимать 30% почему то
Пт сен 14, 2018 09:10:39
даже если и так - что вы там собираетесь пихать в остальные 70%? это ведь 11 килобайт!
Пт сен 14, 2018 09:15:54
Ну да впринципе места много. А вам приходилось забивать память до отказа?
Пт сен 14, 2018 09:17:49
да. в одном проекте atmega8 у меня заполнена на 99,8%
Пт сен 14, 2018 10:12:27
Наверное коммерческий проект
Пт сен 14, 2018 10:13:37
нет, не коммерческий
Пт сен 14, 2018 10:31:38
vovik15 писал(а):ADC*176)/10. В результате получается более менее точные вычисления, но мне это не нравится. Есть ли другие формулы расчета,более точные?
А зачем делить на 10? Считай в десятых долях мВ, и все. Потом, в процессе выдачи, поставишь точку перед последней цифрой, будет в милливольтах.
Пт сен 14, 2018 12:47:52
А зачем флоат? Используй лонги.
Для повышения точности, сделай сразу 10-20-30 да хоть 100 измерений, просуммируй все показания, а потом раздели на собственно сколько раз измерял. В итоге получишь куда более точное значение.
А если нужны десятые доли, то значение АЦП суммируй, умножай на 10, а потом дели. Умножай на значение напряжения на единицу АЦП и выводи поставив точку в нужном месте.
Пт сен 14, 2018 15:07:39
А зачем флоат? Используй лонги.
... сделай сразу 10-20-30 да хоть 100 измерений, просуммируй все показания, а потом раздели на собственно сколько раз измерял.
Плохому учите?
2 в степени n измерений, потом n раз сдвинуть вправо.
Пт сен 14, 2018 15:25:14
Вполне нейтральному. Задротствовать с ассемблером времена прошли вместе с z80.
А про сдвиг нынешние студенты если слышали, то сразу забыли и пользоваться не умеют. Да и показывает практика нафиг надо. Хватает и процессорного времени и ресурсов чтобы просто делить. И в коде потом разобраться проще и самому писателю и всем всем всем.
Пт сен 14, 2018 15:28:05
Вполне нейтральному
Отнюдь. Даже вредному. Это
бессмысленная трата ресурсов и времени. И причем тут ассемблер?
Пт сен 14, 2018 15:37:06
А тебе что, солить эти ресурсы и время? Пусть тратится, зато просто и доступно любому школьнику. МК в массы! Уж лучше так, чем ардуино!
Ассемблер тут при том, что подход этот уже давно отжил своё. Не нужно экономить ресурсы и время процессора, куда важней экономить время разработчика. Лучше погулять и пивка попить чем выдрачивать байтики и наносекундочки.
Пт сен 14, 2018 15:53:40
сначала вопрос, для чего измеряете (управление процессом или индикация)?
Пт сен 14, 2018 15:56:21
AndTer писал(а):А тебе что, солить... подход этот уже давно отжил своё. Не нужно экономить ресурсы и время процессора...
Воинствующее невежество.
И я вам не тыкал и на брудершафт не пил. Так что потрудитесь держать себя в рамках.
Пт сен 14, 2018 15:58:07
если индикация - то шаг ацп очень желательно сделать кратным 10^n чтобы на экран хорошо вписывался. для этого нужно изменить границы измерения ( у нас 1024 отсчета, если делать шаг 5мВ, и от 0, то диапазон будет до 5,12В, думаю это не страшно).
Пт сен 14, 2018 16:02:57
А поподробнее насчет сдвига можно? Не совсем понял как это делать
Пт сен 14, 2018 16:17:18
вам предлагают найти среднее арифметическое от нескольких замеров (мне кажется идея в голом виде не очень, желатешьно бы доработать).
а на счет сдвига - вам нравилось в школе умножать/делить на 10, 100 и.т.д... контроллеру тоже нравится, только система счисления у него двоичная и его любимые цифры 2, 4, 8, 16, и т.д. принцип тотже.
Добавлено after 3 minutes 50 seconds:
идея будет работать если уровень шумов достаточен (не меньше одного отсчета) и если замеров делать достаточно много.
Пт сен 14, 2018 16:35:02
Один сдвиг вправо кратен делению на 8?
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.