Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/32: Рейтинг темы: голосов - 32, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 138

Как рассчитать LC-фильтр для ADC?

13.12.2015, 04:34. Показов 6375. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возможно элементарный вопрос, но быстрый поиск ответа вроде не дал.
В статье сказано, что для использования напряжения питания в качестве опорного, нужно применить LC фильтр. А какие номиналы L и C нужны?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.12.2015, 04:34
Ответы с готовыми решениями:

Как рассчитать фильтр жидкости?
Необходимо рассчитать фильтр для очистки дренажей раствора амина, а именно расчет процесса фильтрации и габаритов фильтра. Может есть ли у...

Как рассчитать маску для 50, 1000 узлов для настройки DHCP?
Всем привет. Нужно настроить DHCP сервер роутере Cisco. Необходимо создать 2 пула, на одном- 50 узлов, на другом 1000 узлов. ...

Как рассчитать среднее арифметическое для для двух столбцов которые на определенной строке
Вот допустим я выбрал первую строку в dgv, мне теперь нужно найти средние арифметическое между этими двумя столбцами.

10
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
13.12.2015, 05:40
берем DS на свой проц - раздел ADC - ADC Noise Canceler
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
13.12.2015, 12:15
Не возьмусь написать про все AVR, но в таких как атмега8, атмега328 в даташитах указываются номиналы 10мкгн и 0.1мкф

Важно понимать, что фильтр лишь уменьшает ошибку АЦП за счет уменьшения помех по питанию
Но ошибку из за нестабильного напряжения источника питания никуда не девает
Если напряжение источника будет плавать, будет плавать и точность измерений
В некоторых случаях можно делать калибровку напряжения VCC путем замера фактического напряжения выбрав в качестве канала в admux Vbg

Так же важно понимать, что питание АЦП совмещено с питанием всего порта C (если мы про такие как атмега8, атмега338 и многих других). Стало быть не нужно другие выводы этого порта нагружать чем то, что может дать помехи по питанию и повлияет на точность измерений

И еще, в даташитах рекомендуется для точности 10бит ставить частоту АЦП не выше 250кгц

Все это для точности
Если нужно делать замер грубо (например для аналогового подключения нескольких кнопок) то и без LC фильтра можно обойтись
0
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 138
13.12.2015, 15:28
Благодарю.
Тогда еще один вопросик, я подключаю к ацп терморезистор, засовываю его в лед или в кипящую воду, по идее, показания ацп должны быть более-менее стабильны, гоню их в уарт и вижу дикий разброс показаний, буквально от 0х00 до 0х80 (или от 0х80 до 0хFF, в зависимости от измеряемой температуры). Мега8 запитана от юсб ноута через программатор, в нее подключен только терморезистор и, собственно, сам уарт, опорным напряжением выбрано напряжение питания. Должны ли показания так скакать или это именно по причине фигового опорного питания? С переменным резистором вместо термо тоже скачут, но в пределах 1-3 единиц. Показания забираю из регистра ADCH, как в примере Дихалта в вышеуказанной статье
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
13.12.2015, 15:45
Ну а теперь код
0
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 138
13.12.2015, 16:11
Пардон
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.include "m8def.yms"
.include "macro.asm"
.def temp   =   r16
.def temp1   =   r17
 
.equ    XTAL = 4000000
.equ    baudrate = 9600
.equ    bauddivider = XTAL/(16*baudrate)-1
 
.cseg
.org 0
rjmp   risit
.ORG 0x000c
RJMP   UD_OK
 
.org 0x000e
rjmp ADCC
 
risit:
ldi   r16,low(ROMEND)
out   SPL,temp
ldi r16,high(ROMEND)
out   SPH,temp
 
outi ddrb,0xff
outi ddrd,0xff
 
OUTI   ADCSRA,(1<<ADIM)|(1<<ADSC)|(3<<ADPS0)|(1<<ADPS1)|(1<<ADPS2)|(1<<ADFR)|(1<<ADIE)
OUTi   ADMUX,(1<<REFS0)|(0<<MUX1)|(1<<ADLAR)
 
uart_init:
outi    UBRRL,low(bauddivider)
outi    UBRRH,high(bauddivider)
outi    UCSRA, 0x00
OUTI   UCSRB, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(0<<UDRIE)
sei
 
main:
rjmp main
 
ADCC:
IN temp, ADCH
out OCR2,temp
out UDR,temp
outi UCSRB, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)
reti
 
UD_OK:
outi UCSRB, (0<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)
reti
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
13.12.2015, 16:59
Конденсатор на вывод AREF и землю подключили?

Питание от компьютера может быть весьма грязным
Во вторых для термистора рекомендую делать усреднение от серии измерений
Я обычно использую 32-64 замера, как раз хватает 16ти битного аккумулятора для суммирования 64х 10ти битных значений

Кстати в строке
Code
1
OUTI   ADCSRA,(1<<ADIM)|(1<<ADSC)|(3<<ADPS0)|(1<<ADPS1)|(1<<ADPS2)|(1<<ADFR)|(1<<ADIE)
У вас масло маслянное, когда вы 3 сдвигаете на ADPS0 то уже выставляете ADPS1 в единицу

Для точности надо использовать и ADCH и ADCL
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
13.12.2015, 17:06
Axill, ты же вроде не знал ASM. Скрывал?
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
13.12.2015, 17:27
Code
1
2
3
4
UD_OK:
out UDR,temp
outi UCSRB, (0<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)
reti
Code
1
2
3
4
5
uart_init:
outi    UBRRL,low(bauddivider)
outi    UBRRH,high(bauddivider)
outi    UCSRA, 0x00
sei
Code
1
2
3
4
5
ADCC:
IN temp, ADCH
out OCR2,temp
outi UCSRB, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)
reti
Ну и добавить сохранение регистра макроса и SREG в прерывания!!!
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
13.12.2015, 19:17
Цитата Сообщение от YTYOUT
Axill, ты же вроде не знал ASM. Скрывал?
AVR не знаю, но читается не сложно)
Когда то писал на асме i8080 и x86
0
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 138
13.12.2015, 20:55
Конденсатор на вывод AREF и землю подключили?
Да, подключен

Кстати в строке
Да, скопировал из статьи, не поправил, а потом добавлял вручную остальное. И думал, а что это ничё не меняется? :)

Ну и добавить сохранение регистра макроса и SREG в прерывания!!!
Ок, спасибо. Сейчас буду проверять
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2015, 20:55
Помогаю со студенческими работами здесь

Режим OPM таймера для запуска ADC
Нужно запустить ADC 10 раз и положить полученные данные в буфер. Появилась идея использовать режим OPM таймера, для выработки 10 триггеров...

Как рассчитать тепловыделение для сервера
Как рассчитать тепловыделение для сервера? Допустим возьмем сервер SuperServer 6018R-WTR, максимальное рассеивающая возможность...

Как рассчитать константу для задержки?
Здравствуйте! Задание состоит в том, что бы на интерфейсе &quot;УМК ВЭФ&quot; на индикатор H1 выводить сколько секунд(максимум 15сек) зажата кнопка...

Как задать фильтр для SaveFileDialog?
Такоую ерунду нашел - в некоторых программах когда задают фильтр типа файлов есть допустим все изображения, в Alcohol - все поддерживаемые...

Как сделать фильтр для stringgrid
Добрый день. Пишу курсовую работы, а именно базу данных. Нужна помощь в создании фильтров при помощи элемента ComboBox. В самой таблице...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru