Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 04.11.2010, 02:21  
sergx1300
Прописка
 
Аватар для sergx1300
 
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
sergx1300 на пути к лучшему
Стрелка Помогите настроить АЦП в Atmega32

Проблема: данные с АЦП как то криво снимаютса. Не знаю в чем проблема.
МК Atmega32. Компилятор Code Vision 2.04.
Реклама:
sergx1300 вне форума  
Непрочитано 04.11.2010, 02:23  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

Что Значит Криво? Объясните хоть .(Нормальный АЦП)(Может Сам Сигнал кривой?)
OlegNZH вне форума  
Непрочитано 04.11.2010, 02:32  
sergx1300
Прописка
 
Аватар для sergx1300
 
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
sergx1300 на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

Вот настройка АЦП

ADMUX=0x00; //chanel ADC 0
ADCSRA=0b10000110; //x64

использую внешний ИОН на 2,56 В.
Напряжение на выводе AREF 2,51 В.
Вывод AVCC подключил к питанию +4,89 В.

В беспрерывном цикле опрашиваю 6 каналов ацп

while(1)
{
//printf("777\r\n");
ADMUX=0b00000000; //chanel ADC 0
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_0=adc_0+(ADCW››2);

ADMUX=0b00000001; //chanel ADC 1
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_1=adc_1+(ADCW››2);

ADMUX=0b00000010; //chanel ADC 2
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_2=adc_2+(ADCW››2);

ADMUX=0b00000011; //chanel ADC 3
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_3=adc_3+(ADCW››2);

ADMUX=0b00000100; //chanel ADC 4
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_4=adc_4+(ADCW››2);

ADMUX=0b00000101; //chanel ADC 5
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_5=adc_5+(ADCW››2);
n_adc++;
}

Последний раз редактировалось sergx1300; 04.11.2010 в 02:46.
sergx1300 вне форума  
Непрочитано 04.11.2010, 02:36  
sergx1300
Прописка
 
Аватар для sergx1300
 
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
sergx1300 на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

вот что вышло
а должна быть более менее прямая линия
Миниатюры:
Нажмите на изображение для увеличения
Название: Src02.gif
Просмотров: 152
Размер:	15.3 Кб
ID:	14308  
sergx1300 вне форума  
Непрочитано 04.11.2010, 02:41  
sergx1300
Прописка
 
Аватар для sergx1300
 
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
sergx1300 на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

считывание данных осуществляется в int

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void) //-------------------------------------------------
{
//printf("int\r\n");
if (m==1)
{
//printf("W\r\n");
write_mmc(adc_0/n_adc); //запис середнього значення з АЦП0 в буфер
write_mmc(adc_1/n_adc); //запис середнього значення з АЦП1 в буфер
write_mmc(adc_2/n_adc); //запис середнього значення з АЦП2 в буфер
write_mmc(adc_3/n_adc); //запис середнього значення з АЦП3 в буфер
write_mmc(adc_4/n_adc); //запис середнього значення з АЦП4 в буфер
write_mmc(adc_5/n_adc); //запис середнього значення з АЦП5 в буфер
}

if (m›1)
{
m--; //обнуленя зміної для пропуску одного інт після запису буфера в ммс
}

adc_0=0;
adc_1=0;
adc_2=0;
adc_3=0;
adc_4=0;
adc_5=0;
n_adc=0;
}
sergx1300 вне форума  
Непрочитано 04.11.2010, 02:42  
sergx1300
Прописка
 
Аватар для sergx1300
 
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
sergx1300 на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

сигнал не кривой на осцилографе смотрел
sergx1300 вне форума  
Непрочитано 04.11.2010, 02:46  
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

Для начала , Вы берёте четвертинку- и складываете с предыдущим ....так и будет скакать (кстати- среднее не отметили.) ()
Интерполяция (аппроксимировать функцию , сгладить)
upd. Если так , берёте предыдущее , складываете с текущим - затем пополам .

Последний раз редактировалось OlegNZH; 04.11.2010 в 03:00.
OlegNZH вне форума  
Непрочитано 04.11.2010, 02:58  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

конденсатор на АРЕФе надо поставить. И не забываем читать даташит за 1-2 микросекунды до старта преобразования надо застопорить таймера, периферию, и на все время преобразования тормознуть камушек в sleep.

Если скорость преобразования не существенна то лучше перед преобразованием сделать delay_ms(20)

Я для старта использую вот такой шаблончик:
#define ADC_START ADC_ready=0; delay_ms(20); ADCSRA=0b11001011;
где ADC_ready это просто char флаг выставляемый в прерывании как 1.

Но можно и без прерывания и без флага так как в ADCSRA есть бит выполняющий ту же функцию (ставит 1 по окончанию прерывания)


Кроме того, входные цепи ADC должны быть как минимум снабжены делителем 1 к 1 (источник -2r2 - ножка adc- 47Kohm - земля) и стабилитроном 3v1 чтобы гасить паразитные токи на землю матушку.

так сказать альтернатива тому что написал OlegNZH воплощенная в железках))))
__________________
Найди путь или проложи сам!

Последний раз редактировалось MasterMushi; 04.11.2010 в 03:01.
MasterMushi вне форума  
Непрочитано 04.11.2010, 02:59  
sergx1300
Прописка
 
Аватар для sergx1300
 
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
sergx1300 на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

сигнал поступает на диодной мост. После диодного моста стоят 6 подстроечных резисторов, с помощью которых можно отдельно регулировать каждый канал.
sergx1300 вне форума  
Непрочитано 04.11.2010, 03:07  
sergx1300
Прописка
 
Аватар для sergx1300
 
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
sergx1300 на пути к лучшему
По умолчанию Re: Помогите настроить АЦП в Atmega32

Сообщение от MasterMushi Посмотреть сообщение
за 1-2 микросекунды до старта преобразования надо застопорить таймера, периферию, и на все время преобразования тормознуть камушек в sleep.
думаю ето уж так сильно не сказывается на результатах ацп
А вот кондеры обязательно поставлю
sergx1300 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите чайнику симулировать АЦП прерывание на Proteus - e shatakhian Микроконтроллеры, АЦП, память и т.д 10 14.10.2011 03:26
АЦП помогите разобраться Uragan90 Информация по радиокомпонентам 5 21.09.2010 00:40
АЦП 12-bit + ATMega32 моделирование в Proteus Flash_vrn Proteus 4 22.05.2010 05:20
Помогите найти микросхему АЦП следящего типа vitamin12 Микроконтроллеры, АЦП, память и т.д 2 18.05.2010 22:01
[Решено] Помогите опознать АЦП ? sh2cer Информация по радиокомпонентам 2 08.12.2009 17:12


Часовой пояс GMT +4, время: 12:43.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot