Форум РадиоКот https://radiokot.ru/forum/ |
|
Вывести значение с АЦП https://radiokot.ru/forum/viewtopic.php?f=20&t=13465 |
Страница 1 из 1 |
Автор: | Lockdog [ Вт фев 03, 2009 22:58:49 ] |
Заголовок сообщения: | Вывести значение с АЦП |
Вот есть код: Код: unsigned int read_adc(unsigned char adc_input)
{ ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); delay_us(10); ADCSRA|=0x40; while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } Получается, что результат записывается в ADCW, мне надо это значение вывести на дисплей (HD44780). Как это можно сделать? Через функции lcd_putsf или lcd_puts не получается, так как ADCW имеет тип unsigned char. Прошу вашей помощи. |
Автор: | xDevs [ Ср фев 04, 2009 09:30:02 ] |
Заголовок сообщения: | |
Код: unsigned char adc_value[4];
sprintf(adc_value,"%04X",ADCW); for (int i=0;i<4;i++) lcd_putchar(adc_value[i]); Наподобие этого. выводит 4 цифры в hex. |
Автор: | Danko [ Ср фев 04, 2009 10:10:16 ] |
Заголовок сообщения: | |
версия для 8 бит ADC Код: unsigned char fd;
fd=read_adc(1); // считать АЦП со входа 1 i=0; while (fd>=100) { fd-=100; i++; } lcd_putchar('0' + i); i=0; while (fd>=10) { fd-=10; i++; } lcd_putchar('0' + i); lcd_putchar('0' + fd); |
Автор: | Sounds [ Пт фев 06, 2009 03:19:44 ] |
Заголовок сообщения: | |
Помогите разобраться с расчётом АЦП. Как мне посчитать чему будет равен АЦП при 1 и 2 вольтах? Если я правильно понял то это делается так(Для 10 битного АЦП): 210 - это не 210, а два в 10-той степени!!! Для одного вольта - 1*(210-1)/5=1023/5=204.6=1V Для двух вольт - 2*(210-1)/5=2046/5=409.2=2V Правильный это подсчёт или нет? |
Автор: | Иван23 [ Пт фев 06, 2009 23:56:40 ] |
Заголовок сообщения: | |
самое простое есть разрядность ацп к примеру 10, или 1024 состояния,и есть опорное напр. например 5.12в,то на одну единицу приходится 0,005в или 5мв, если опорное 2.56 то на шаг получится 0,0025в или 2,5мв,дальше умножаем и усе ![]() |
Автор: | Sounds [ Сб фев 07, 2009 00:57:22 ] |
Заголовок сообщения: | |
Спасибо за ответ! А можно это в виде формулы изложить? |
Автор: | diehard [ Сб фев 07, 2009 01:13:15 ] |
Заголовок сообщения: | |
Гы, пажалста! ![]() Формула: Vref/2^N * ADCW ![]() Например Vref 5,12; ADCW=512; Разрядность 10 5,12/2^10*512=2,56V Только надо учесть "шум" ADC для корректировки значения. Его обычно отнимают от полученного значения. Тогда получится так : Vref/2^N * (ADCW-Noise), где Noise и есть значение "шума". |
Автор: | sachok [ Вс фев 08, 2009 18:28:37 ] |
Заголовок сообщения: | |
Разъясните ещё мне как вывести значение напряжения на АЦП на ЖКИ 16*2. Делал так: Код: // Place your code here
volt=read_adc(0); volt=5/1024*volt; lcd_gotoxy(0,0); //почати вивід тексту з 0,0 lcd_putsf("U="); //вивести на LCD lcd_putchar (volt/1000+0x30); //показати значення одиниць lcd_putsf (","); //вивести на LCD lcd_putchar ((volt/100)%10+0x30); //показати значення десятих lcd_putchar ((volt/10)%10+0x30); //показати значення сотих lcd_putsf ("V"); //вивести на LCD ничего не работает( |
Автор: | dosikus [ Вс фев 08, 2009 19:18:26 ] |
Заголовок сообщения: | |
Проще простого... http://www.remexpert.com/ipb/index.php?showtopic=1285 Код: unsigned char asc[5];
void itoa2(unsigned int binval) { int step[]={10000,1000,100,10,1}; unsigned int temp,val; unsigned char i,atemp; val=binval; for (i=0 ; i<5>= temp) { atemp++; val-=temp; } asc[i]=atemp; } } Смотрите по ссылке , движок форума правит код по своему... |
Автор: | sachok [ Вс фев 08, 2009 19:53:09 ] |
Заголовок сообщения: | |
Что то у меня ничего не получилось( |
Автор: | sachok [ Вс фев 08, 2009 22:08:23 ] |
Заголовок сообщения: | |
Нашол кусок исходника для настройки АЦП ATmega8 4MHz но нечего не понимаю в нем. Может можна както переделать для ATmega16 11.0592MHz??? Код: // инициализация АЦП на PC0(ADC0)
ADMUX &= 0xdf & 0x7e & 0xf0; ADMUX |= 0x40 ; //10бит;Vref=AVCC;канал-1 PC0 ADCSRA &=0xfb; ADCSRA |= 0x80 | 0x40 | 0x02 | 0x03; //Fацп=125кГц |
Автор: | GRAF [ Пн фев 09, 2009 01:30:06 ] |
Заголовок сообщения: | |
Код: /* Настройка АЦП*/
ACSR= _BV(ACD);//отключаем аналоговый компаратор ADMUX=0x03;// Аналоговый канал- вывод ADC3 /* Несихронизированный режим АЦП с делением частоты на 64*/ ADCSRA= _BV(ADEN) | _BV(ADSC)| _BV(ADFR) | _BV(ADIE) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); Я вот так АЦП настраивал, всё просто вроде. 8-я мега. |
Автор: | dt_andrew [ Вт фев 10, 2009 08:30:36 ] |
Заголовок сообщения: | |
sachok писал(а): Разъясните ещё мне как вывести значение напряжения на АЦП на ЖКИ 16*2.
Делал так: Код: // Place your code here volt=read_adc(0); volt=5/1024*volt; lcd_gotoxy(0,0); //почати вивід тексту з 0,0 lcd_putsf("U="); //вивести на LCD lcd_putchar (volt/1000+0x30); //показати значення одиниць lcd_putsf (","); //вивести на LCD lcd_putchar ((volt/100)%10+0x30); //показати значення десятих lcd_putchar ((volt/10)%10+0x30); //показати значення сотих lcd_putsf ("V"); //вивести на LCD ничего не работает( странно а у меня все работает код взят из цикла статей Рюмика - правильно |
Автор: | sachok [ Вт фев 10, 2009 13:43:00 ] |
Заголовок сообщения: | |
Та я уже сам всё настроил:) |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |