Приветствую Вас, Гость! Регистрация RSS

Вторник, 22.08.2017
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Форум mega-avr.ucoz.ru » Микроконтроллеры AVR и все что с ними связано » unsigned long*8=?
unsigned long*8=?
us4ilqДата: Воскресенье, 24.10.2010, 23:10 | Сообщение # 1
Опытный
Сообщений: 173
Репутация: 2
Город: Донецк
Статус: Отсутствует
Здравствуйте!
В моей программе "Барометр" переменная для результата давления имеет тип : unsigned long,
(unsigned long adc_Dav=0; ).
У меня появилась мысль , а если применить усреднение показаний? Ну, путем накапливания нескольких
измерений (8 или 16), с последующим делением на количество измерений (гдето прочитал о таком способе).

Собствунно вопрос :
какой тип должна иметь переменная чтобы поместились все 8 или 16 складываемых
значений ? Ведь они могут невместится в unsigned long .
Надеюсь доходчиво изложил smile

Спасибо Сергей.

 
АвторДата: Понедельник, 25.10.2010, 08:40 | Сообщение # 2
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
День добрый! Сергей, вот честно, я такой бодягой по усреднению показаний не занимался. Лично у меня встречный вопрос: нужно ли оно, это усреднение показаний?

Quote
какой тип должна иметь переменная чтобы поместились все 8 или 16 складываемых значений ?


А какой размер, в битах или байтах, имеет значение, которое нужно поместить в другую переменную по 8 или 16 раз?
Есть тип данных, как unsigned long int, который принимает 32 бита или 4 байта беззнакового числа. Такого типа данных наврятли хватит!



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
us4ilqДата: Понедельник, 25.10.2010, 13:32 | Сообщение # 3
Опытный
Сообщений: 173
Репутация: 2
Город: Донецк
Статус: Отсутствует
"А какой размер, в битах или байтах, имеет значение, которое нужно поместить в другую переменную по 8 или 16 раз? "

Так ведь еслибы я умел все это посчитать, то и спрашивать небыло бы нужды smile .

Некоторые утверждают что это бывает очень полезно для избавления от шумов и помех.
А мне хотелось бы иметь некую универсальную функцию, для большинства случаев.
Да и часто пишут что первое измерение несоответствуед истине , в результате того что неуспевают инициализироваться
аналоговые узлы микроконтроллера, правда я не понял имеется в виду дифференциальный вход или вообще?

 
АвторДата: Среда, 27.10.2010, 09:42 | Сообщение # 4
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Честно, Сергей, я чего-то уж и сам маленька запутался. Жаль что у меня нет таких датчиков, а то я и сам бы попробовал сделать подобный прибор. Кстати, ты пробовал тот код по чтению с канала АЦП. Попробуй "прикрутить" к этому коду код по выводу на семисегментный индикатор. Если будет барометр показывать оба параметра, то там можно и про усреднение подумать. Вот как-то так... dry


_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
us4ilqДата: Среда, 27.10.2010, 13:29 | Сообщение # 5
Опытный
Сообщений: 173
Репутация: 2
Город: Донецк
Статус: Отсутствует
Немного занимался , неполучалось, потом некогда было , потом отвлекся на плату что для графического индикатора.
Но тема не закрыта!
Еще вернемся ОБЯЗАТЕЛЬНО!

А что до усреднения так это в общем случае, а не в конкретном.

 
ilvzДата: Четверг, 02.12.2010, 03:07 | Сообщение # 6
Любопытный
Сообщений: 143
Репутация: 2
Город: Almaty
Статус: Отсутствует
"Собственно вопрос :
какой тип должна иметь переменная чтобы поместились все 8 или 16 складываемых
значений ? Ведь они могут невместится в unsigned long .
Надеюсь доходчиво изложил smile"
С АЦП вы получаете всего 10 бит. Причём значащих 9-8.(помехи там всякие). Да пусть будет даже 10 smile
Храните в unsigned long т.е. 32 бита. Представляете сколько раз можно складывать результат, что бы переполнить эту переменную.
Скажу. Более 4млн. замеров. Кстати, для усреднения замеров есть специальные алгоритмы. Что-то типа скользящего среднего.

P.S. АДМИНУ. Если чего нарушаю, ПАРДОН.B) Я не завсегдатай форумов. Больше читатель(зритель).

Добавлено (02.12.2010, 03:07)
---------------------------------------------
И ещё. Для повышения разрядности, в сигнал подмешивают белый или регулярный шум ( можно пилу) и потом усредняют с наращиванием разрядности.
А можно попробовать и на естественных шумах (помехах). Т.е. складываете напр. 50 замеров, а результат делите на 10. Вот и получаете уже не 1024 градации, а 5120. Потому что 1024 для барометра оч. мало, как и 5120 тоже smile Т.к. реально давление в зависимости от погоды будет изменяться не очень сильно. 100м - это уже много. И если вы не используете никакой обвязки то датчик изменит напряжение наполовину при 6км высоты. Для встроенного АЦП примерно 1 на 12м.

 
us4ilqДата: Четверг, 02.12.2010, 15:11 | Сообщение # 7
Опытный
Сообщений: 173
Репутация: 2
Город: Донецк
Статус: Отсутствует
О!
Большое спасибо!
Первая часть ответа - как раз то о чем я и хотел узнать!

unsigned long - я применил лиш потому что такая разрядность была в оригинале - тоесть там
откуда я кусок кода с подсчетом мм.рт.ст. стырил

А вот то что во второй части пока как то сложновато , да и (как мне кажется ) пока мне не к чему.
Дело в том что мой барометр (ну то что есть на данный момент ) исправно работает,
и пока никаких серьезных недочетов я необнаружил. Незнаю может плохо смотрел ? smile

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

Сообщение отредактировал us4ilq - Четверг, 02.12.2010, 15:13
 
ilvzДата: Четверг, 02.12.2010, 20:43 | Сообщение # 8
Любопытный
Сообщений: 143
Репутация: 2
Город: Almaty
Статус: Отсутствует
Про вторую часть.
АЦП имеет 1024 градации. Это в идеале.
ММ рт. ст. 760. Линейка получается грубоватой. smile
Хотя для дом. барометра может и сойдёт.
Мне же нужно было мерить высоту с разрешением 10-20см. Вот и заморачивался.
 
us4ilqДата: Четверг, 02.12.2010, 22:47 | Сообщение # 9
Опытный
Сообщений: 173
Репутация: 2
Город: Донецк
Статус: Отсутствует
A!
Понял. smile
 
Форум » Форум mega-avr.ucoz.ru » Микроконтроллеры AVR и все что с ними связано » unsigned long*8=?
Страница 1 из 11
Поиск: