|
АЦП Tiny13V на входе ноль, а результат преобразования не 0, Как такое может быть? |
|
|
|
Oct 24 2010, 13:14
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Схема влючения простая. Вход АЦП (PB4) зашунтирован на обший резистором 68 Ом и конденсатором 1000 мкф. Осциллограф и тестер утверждают, что там 0 В. Да и по уму ничему другому там взяться неоткуда. Плата мытая. Результатом преобразования имеем значение 15 или около того. Вход АЦП (PB3) зашунтирован на общий резистором 4,7 кОм. Картина примерно таже самая. Суть проблемы в целом такова, что на нижнем пределе нет устойчивой однозначности результата преобразования. Плавно изменяющееся напряжение, снятое с RC-цепочки (время изменения от 1,03 В до 0 В примерно 1,5 с) демонстрирует даже какое-то подмигивание перед выключением светодиода, но не всегда а только примерно в 20% случаев. Из 10 значащих бит АЦП использую только старшие 8. Монтаж СМД, перекосов общего провода вродебы нет. Контроллер управляет MOSFETами, а они светодиодами. Яркость светодиодов управляется аппаратным ШИМом от таймера. Ну вобщем суть вопроса в том, как избавиться от миганий светодиода при нижних значениях яркости, в т.ч. и при нулевой яркости? Спасибо. Код volatile unsigned int c1,c2,adc_data; volatile unsigned char t1,t2,flag1,flag2;
unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | 0b01100000; ADCSRA |= (1<<ADSC); //начать преобразование while (!(ADCSRA & (1<<ADIF))) {asm("nop");}; //ждем появления флага завершения преобр. ADCSRA |= (1<<ADIF);//сбросить флаг //return ADCW; return ADCH; }
ISR(TIM0_OVF_vect) { if(flag1==1) { OCR0A=t1; flag1=0; } if(flag2==1) { OCR0B=t2; flag2=0; } }
int main(void) { PORTB = 0b00000000; DDRB = 0b00000111; OCR0A = 0; OCR0B = 0; TCNT0 = 0x01; //set count TCCR0A = 0b10100001; TCCR0B = 0b00000100; //start timer TIMSK0 = 0b00000010; DIDR0=0b00011000; ACSR = 0x80;//компаратор выключить
ADCSRA = 0b10000110;
asm("sei");
while(1) { if(flag1==0) { adc_data=read_adc(2); c1=0; for(unsigned char i=0; i<250; i++) { adc_data=read_adc(2); if(adc_data>c1) c1=adc_data; } t1=(unsigned char)c1; if(c1>=250) t1=255; if(c1<4) t1=0; flag1=1; } if(flag2==0) { adc_data=read_adc(3); c2=0; for(unsigned char i=0; i<250; i++) { adc_data=read_adc(3); if(adc_data>c2) c2=adc_data; } t2=(unsigned char)c2; if(c2>=250) t2=255; if(c2<10) t2=0; flag2=1; } // OCR0A=pgm_read_byte(&brightness[t1]); // OCR0B=pgm_read_byte(&brightness[t2]); asm("nop"); } return 0; }
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
|
 |
Ответов
|
Nov 22 2010, 19:52
|
Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 30-07-08
Из: Moscow
Пользователь №: 39 302

|
Цитата(domowoj @ Oct 26 2010, 19:30)  У Тини 13 нет внешнего опорного Опорное=питанию.
|
|
|
|
Сообщений в этой теме
smk АЦП Tiny13V на входе ноль, а результат преобразования не 0 Oct 24 2010, 13:14 sigmaN так вам от подмигивания избавиться или со странным... Oct 24 2010, 13:28 smk и то и то. Я так понимаю они взаимосвязаны. Опора ... Oct 24 2010, 13:35 314 Скажите, а последовательно со светодиодами включил... Oct 24 2010, 14:54 smk 660 Ом (2х330) при питании в 9 В. Питание ровное. ... Oct 24 2010, 15:29 rx3apf Цитата(smk @ Oct 24 2010, 19:29) 660 Ом (... Oct 24 2010, 15:41 314 А в затворах МОСФЕТов какие резисторы? Выглядит та... Oct 24 2010, 16:28 ARV сколько встречал, в том числе и в даташитах, всюду... Oct 24 2010, 17:29 rx3apf Цитата(ARV @ Oct 24 2010, 21:29) сколько ... Oct 24 2010, 17:44 ILYAUL Цитатана обший резистором 68 Ом и конденсатором 10... Oct 24 2010, 18:52 domowoj Я не силен в СИ, но не вижу "засыпания" ... Oct 25 2010, 00:53 =GM= Цитата(smk @ Oct 24 2010, 12:14) Суть про... Oct 25 2010, 16:24 smk Резисторы в цепи затворов 68 Ом. MOSFET IRL520. За... Oct 26 2010, 06:03 aesok В первом посте Вы написали что у Вас еть осцилогра... Oct 26 2010, 09:56 ArtemKAD Цитата660 Ом (2х330) при питании в 9 В.
Подробнее,... Oct 26 2010, 10:54 sKWO Цитата(smk @ Oct 24 2010, 16:14) Схема вл... Oct 26 2010, 21:03 GDI Почитайте про калибровку АЦП в апноутах Атмела, та... Oct 27 2010, 06:39 skyled Переделал все на Мегу8 с выводом АЦП в порт компа.... Nov 2 2010, 09:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|