Дребезг АЦП ATmega16

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
player259
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн май 02, 2011 05:16:16

Дребезг АЦП ATmega16

Сообщение player259 »

Делаю прием нескольких каналов АЦП и отправку на UART.
Аналоговый сигнал на АЦП идет с усилителя, на который можно подать:
- целевой сигнал
- калибровочный сигнал
Калибровочный сигнал, меандр, идет с МК.
То есть схема такая: МК(выход счетчика) -> Усилитель -> МК(АЦП)
Таким образом уже просматривая график на компьютере можно откалибровать Усилитель.

Проблема такая: при частотах от 10 Гц и выше на АЦП что-то невразумительное, ставлю порядка секунды, выводит такую штуку:

Изображение

Явно какой-то переходной процесс. У меня конденсаторов много стоит для фильтрации, могут они так исказить сигнал?
А может АЦП не так настроено? Работает в режиме Noise Canceller.
Вложения
3D-2012-01-28-16-18-34.png
(16.89 КБ) 1207 скачиваний
Реклама
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: Дребезг АЦП ATmega16

Сообщение Alkul »

Как генерируются калибровочные импульсы и как инициируется цикл преобразования АЦП?

Вообще, какую форму имеет целевой сигнал?
player259 писал(а):Проблема такая: при частотах от 10 Гц и выше на АЦП что-то невразумительное, ставлю порядка секунды
Не совсем Вас понял. В герцах измеряется частота, а в секундах период. Частота сигнала с периодом 1 секунда равна 1 Гц.
Частота 1 гц - это меньше 10 Гц.

Сформулируйте более понятно и ответьте на вопросы выше.
Реклама
Аватара пользователя
player259
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн май 02, 2011 05:16:16

Re: Дребезг АЦП ATmega16

Сообщение player259 »

Калибровочный сигнал - прямоугольный импульс, скважностью 2, меандр, от 0 до 5В
Сначала подавал со счетчика Timer2, используя FastPWM
Потом чтобы уменьшить частоту завел переменную, но переключаю уже вручную:

Код: Выделить всё

// Timer2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
  cnt++;
  if(cnt == 50)
  {
    PORTD.4 = PORTD.4 ^ 1;
    PORTD.7 = PORTD.7 ^ 1;
  cnt=0;
  }
}
Частота получается около 1 Гц

Цикл АЦП такой:

Код: Выделить всё

interrupt [ADC_INT] void adc_isr(void)
{
    adc_data=ADCH;
    putchar(adc_data);
}

void read_adc()
{
delay_us(1000);
#asm
    in   r30,mcucr
    cbr  r30,__sm_mask
    sbr  r30,__se_bit | __sm_adc_noise_red
    out  mcucr,r30
    sleep
    cbr  r30,__se_bit
    out  mcucr,r30
#endasm
}
Это обычный код генерируемый CodeVision. Слегка переделал только.

Целевой сигнал - Электроэнцефалограмма, уровни порядка 100 мкВ. Усилитель преобразует его до 5В.
Пока за него не берусь, хочу удостовериться, что МК нормально снимает сигналы.

Вообщем с 10 Гц уменьшил до 1 Гц, лампочку просто поставил, мигает раз в секунду, перепутал.
Аватара пользователя
player259
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн май 02, 2011 05:16:16

Re: Дребезг АЦП ATmega16

Сообщение player259 »

Кстати сегодня посидел с осциллографом, импульсы с МК без искажений, слегка фронты завалены и все.
Дома посмотреть нечем, но я все же склоняюсь к мысли, что дело в АЦП
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Дребезг АЦП ATmega16

Сообщение ploop »

График верно выводится? Проверяли?
Например если вывести содержимое счетчика, должна быть пила/треугольник на графике.
АЦП не может шуметь одними 0x00 и 0xFF
Реклама
Аватара пользователя
player259
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн май 02, 2011 05:16:16

Re: Дребезг АЦП ATmega16

Сообщение player259 »

Хм.. Опять что-то отвалилось в программе.
Сейчас починю UART и еще раз калибровочный попробую.

Вот, вроде получилось.
Хотя не совсем то, что ожидалось..

Изображение

Проблема была в коде терминала. Хотя буквально вчера он работал :)
МК соединяется с ПК на 57600, АЦП максимум 1000 Гц выборка.
Продолжу делать, надеюсь приборчик заведется через недельку-другую.
Всем спасибо :)
Реклама
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: Дребезг АЦП ATmega16

Сообщение Alkul »

player259 писал(а):Калибровочный сигнал - прямоугольный импульс, скважностью 2, меандр, от 0 до 5В
Сначала подавал со счетчика Timer2, используя FastPWM
Потом чтобы уменьшить частоту завел переменную, но переключаю уже вручную:
Я не совсем понимаю, какой именно параметр усилителя Вы собираетесь "калибровать"?
Далее, если Вы хотите проверить именно АЦП, то самое простое - подать на вход АЦП постоянное напряжение от источника питания. Изменяя напряжение от 0 до 5 В, Вы сможете проверить корректность работы АЦП.
Начинайте от простого к сложному.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Дребезг АЦП ATmega16

Сообщение ploop »

Я не совсем понимаю, какой именно параметр усилителя Вы собираетесь "калибровать"?
Автор, видимо, имел ввиду "проверочный сигнал" :)
Аватара пользователя
player259
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн май 02, 2011 05:16:16

Re: Дребезг АЦП ATmega16

Сообщение player259 »

Alkul писал(а):
player259 писал(а):Калибровочный сигнал - прямоугольный импульс, скважностью 2, меандр, от 0 до 5В
Сначала подавал со счетчика Timer2, используя FastPWM
Потом чтобы уменьшить частоту завел переменную, но переключаю уже вручную:
Я не совсем понимаю, какой именно параметр усилителя Вы собираетесь "калибровать"?
Далее, если Вы хотите проверить именно АЦП, то самое простое - подать на вход АЦП постоянное напряжение от источника питания. Изменяя напряжение от 0 до 5 В, Вы сможете проверить корректность работы АЦП.
Начинайте от простого к сложному.
Калибровка Усилителя. Калибровочный сигнал 2,5 В +/- 1,25 мкВ. На плате два подстроечных резистора, которыми настраиваются два усилительных каскада (инструментальный каскад и обычный операционник). Дело в том, что на макетке это собрать сложно. Чтобы запустить все это, нужно собрать, спаять, подключить и прошить контроллер и написать программку на ПК для отображения графика. И заставить все работать всесте и правильно не сразу получается.
Все правильно, от простого к сложному, но хочется же поскорее :)
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Дребезг АЦП ATmega16

Сообщение Jack_A »

player259 писал(а): Калибровка Усилителя. Калибровочный сигнал 2,5 В +/- 1,25 мкВ.
Ни френа себе ! Точность 1 / 2'000'000 ! Госстандарт в панике.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Дребезг АЦП ATmega16

Сообщение ploop »

Кстати да. Может всё-таки милливольт?
Аватара пользователя
player259
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн май 02, 2011 05:16:16

Re: Дребезг АЦП ATmega16

Сообщение player259 »

Делитель напряжения 2 МОм / 100 Ом :)
Резисторы конечно грешат до 5%, но смысл не в точности до последних знаков, а самих значениях 100-200 мкВ.
Инструментальный усилитель вывезет и не такое
На ЭЭГ регистрируются регулярные ритмы, соответствующие определенному частотному диапазону. Выделяют:
дельта-ритм, частота 1—3,5 Гц;
тета-ритм, частота 4—7 Гц;
альфа-ритм, частота 8—13 Гц
бета-ритм, частота 14 Гц и более.

Существует градиент амплитуды альфа-ритма по областям полушарий, ее снижение от задних отделов к передним. Наибольшую амплитуду имеет альфа-ритм в затылочных областях (до 100 мкВ).

Бета-ритм имеет амплитуду 10—15 мкВ, обычно не более 30 мкВ, лучше выражен в лобно-центральных областях. В зависимости от представленности альфа-ритма варьирует и выраженность бета-активности. При слабо выраженном альфа-ритме становится преобладающей формой биопотенциалов.

Дельта- и тета-ритмы относят к патологическим компонентам ЭЭГ. Однако наличие одиночных медленных волн или групп нерегулярных колебаний небольшой амплитуды (15—20 мкВ), особенно в передних отделах, допустимо и в норме.
Сверхточных результатов не добьюсь, но уверенно снять альфа-ритм думаю сумею.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»