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

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

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

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

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

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

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

 
Опции темы

Помогите настроить АЦП в Atmega32

Непрочитано 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.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
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.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
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, время: 05:05.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.