Например TDA7294

Форум РадиоКот • Просмотр темы - Вывести значение с АЦП
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс июл 27, 2025 21:31:43

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 14 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Вывести значение с АЦП
СообщениеДобавлено: Вт фев 03, 2009 22:58:49 
Встал на лапы

Карма: -1
Рейтинг сообщений: 0
Зарегистрирован: Вт июл 15, 2008 19:29:21
Сообщений: 101
Рейтинг сообщения: 0
Вот есть код:
Код:
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.
Прошу вашей помощи.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 04, 2009 09:30:02 
Мучитель микросхем
Аватар пользователя

Карма: 7
Рейтинг сообщений: 428
Зарегистрирован: Вт фев 03, 2009 05:16:25
Сообщений: 425
Откуда: Kiev
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Код:
unsigned char adc_value[4];

sprintf(adc_value,"%04X",ADCW);
for (int i=0;i<4;i++) lcd_putchar(adc_value[i]);


Наподобие этого. выводит 4 цифры в hex.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 04, 2009 10:10:16 
Сверлит текстолит когтями
Аватар пользователя

Карма: 13
Рейтинг сообщений: 41
Зарегистрирован: Пн окт 13, 2008 11:45:54
Сообщений: 1287
Откуда: РФ, Крым, г.Бахчисарай
Рейтинг сообщения: 0
версия для 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);


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 06, 2009 03:19:44 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Помогите разобраться с расчётом АЦП.
Как мне посчитать чему будет равен АЦП при 1 и 2 вольтах?
Если я правильно понял то это делается так(Для 10 битного АЦП):
210 - это не 210, а два в 10-той степени!!!
Для одного вольта - 1*(210-1)/5=1023/5=204.6=1V
Для двух вольт - 2*(210-1)/5=2046/5=409.2=2V
Правильный это подсчёт или нет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 06, 2009 23:56:40 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Ср дек 05, 2007 18:55:07
Сообщений: 163
Откуда: Санкт-Петербуг
Рейтинг сообщения: 0
самое простое есть разрядность ацп к примеру 10, или 1024 состояния,и есть опорное напр. например 5.12в,то на одну единицу приходится 0,005в или 5мв, если опорное 2.56 то на шаг получится 0,0025в или 2,5мв,дальше умножаем и усе :shock:


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 00:57:22 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Спасибо за ответ!
А можно это в виде формулы изложить?


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 07, 2009 01:13:15 
Встал на лапы

Карма: 2
Рейтинг сообщений: -1
Зарегистрирован: Вт дек 05, 2006 23:17:02
Сообщений: 101
Откуда: Краснодарский край
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Гы, пажалста! :))
Формула: Vref/2^N * ADCW :)))

Например Vref 5,12; ADCW=512; Разрядность 10
5,12/2^10*512=2,56V

Только надо учесть "шум" ADC для корректировки значения. Его обычно отнимают от полученного значения.
Тогда получится так : Vref/2^N * (ADCW-Noise), где Noise и есть значение "шума".


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 08, 2009 18:28:37 
Опытный кот
Аватар пользователя

Зарегистрирован: Сб янв 05, 2008 11:05:15
Сообщений: 849
Откуда: Україна м.Луцьк
Рейтинг сообщения: 0
Разъясните ещё мне как вывести значение напряжения на АЦП на ЖКИ 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

ничего не работает(

_________________
Я не Сашок!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 08, 2009 19:18:26 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Проще простого...
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;
}
}


Смотрите по ссылке , движок форума правит код по своему...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 08, 2009 19:53:09 
Опытный кот
Аватар пользователя

Зарегистрирован: Сб янв 05, 2008 11:05:15
Сообщений: 849
Откуда: Україна м.Луцьк
Рейтинг сообщения: 0
Что то у меня ничего не получилось(

_________________
Я не Сашок!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 08, 2009 22:08:23 
Опытный кот
Аватар пользователя

Зарегистрирован: Сб янв 05, 2008 11:05:15
Сообщений: 849
Откуда: Україна м.Луцьк
Рейтинг сообщения: 0
Нашол кусок исходника для настройки АЦП 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кГц

_________________
Я не Сашок!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 01:30:06 
Мудрый кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 5
Зарегистрирован: Ср янв 23, 2008 22:11:54
Сообщений: 1867
Откуда: Калининград
Рейтинг сообщения: 0
Код:
/* Настройка АЦП*/

ACSR= _BV(ACD);//отключаем аналоговый компаратор
ADMUX=0x03;// Аналоговый канал- вывод ADC3

/* Несихронизированный режим АЦП с делением частоты на 64*/
ADCSRA= _BV(ADEN) | _BV(ADSC)| _BV(ADFR) |
 _BV(ADIE) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0);

Я вот так АЦП настраивал, всё просто вроде.

8-я мега.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 10, 2009 08:30:36 
Мявтор!
Аватар пользователя

Карма: 16
Рейтинг сообщений: 43
Зарегистрирован: Чт ноя 30, 2006 12:27:46
Сообщений: 2057
Откуда: Челябинск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
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

ничего не работает(


странно а у меня все работает
код взят из цикла статей Рюмика - правильно


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 10, 2009 13:43:00 
Опытный кот
Аватар пользователя

Зарегистрирован: Сб янв 05, 2008 11:05:15
Сообщений: 849
Откуда: Україна м.Луцьк
Рейтинг сообщения: 0
Та я уже сам всё настроил:)

_________________
Я не Сашок!!!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y