Страница 1 из 1
Помогите с АЦП ATTiny 45. Как вольты записать то???
Добавлено: Вт май 12, 2009 18:39:54
mr_smit
Итак: CodeVisionAVR. ATTiny 45. Proteus.
Код: Выделить всё
while (1)
{
float volt;
volt=read_adc(0);
if (volt>200) {PORTB.0=0;}
else {PORTB.0=1;}
};
В каких величинах
volt???(Вольты, милливольты) С чем сравнивать?
Re: Помогите с АЦП ATTiny 45. Как вольты записать то???
Добавлено: Вт май 12, 2009 19:00:27
ikarab
ИМХО разумно прикладыват mr вопросу архив с проектами CVAVR PROTEUS.
mr_smit писал(а):В каких величинах volt???(Вольты, миливольты) С чем сравнивать?
Это зависит наверно от того какой тип вы ей дали.
А read_adc(0); возвращает результат в 1024 долях опрного напряжения АЦП.
Добавлено: Вт май 12, 2009 19:10:37
mr_smit
ikarab писал(а):Это зависит наверно от того какой тип вы ей дали.
Я имел ввиду возвращаемое значение.
ikarab писал(а):А read_adc(0); возвращает результат в 1024 долях опрного напряжения АЦП.
Т.е. реальное напряжение = volt*(5/1024) ?
P.S. Вот исходники.
Добавлено: Вт май 12, 2009 19:54:16
mr_smit
Не работает
Код: Выделить всё
while (1)
{
float volt;
volt=read_adc(0)*(5/1024);
if (volt>2) {PORTB.0=0;}
else {PORTB.0=1;}
};
Добавлено: Вт май 12, 2009 20:30:25
ikarab
А вы посмотрите пример АЦП в папке CVAVR.
Добавлено: Вт май 12, 2009 21:31:32
DrWatson
А фьюз RSTDISBL в протеусе в свойствах тиньки запрограммирован (установлен в 0)?
А то ресет будет работать как ресет - вот и не работает.
Чтоб не мучаться старайтесь не использовать Reset как порт без крайней необходимости.
Добавлено: Ср май 13, 2009 03:45:57
Vov123
Вообще-то возвращаемое значение при 10-битном преобразовании -INT.
Максимальное значение при этом получите 1023.А привязать его можете хоть к чему.Может у вас весы,значит в килограммах,а если поток света в канделах и т.д.
Добавлено: Ср май 13, 2009 14:43:52
mr_smit
ikarab писал(а):А вы посмотрите пример АЦП в папке CVAVR.
Там, почему то, они используют:
А мне CVAVR другой код выдает.
Код: Выделить всё
unsigned int read_adc(unsigned char adc_input)
Главное при 0 В светодиод не горит, 0.5 В загорается, между 0.5 и 1 В моргнет один раз и потом до 5 В горит постоянно.
Добавлено: Ср май 13, 2009 17:11:40
mr_smit
Ну что сделать то??? Всем лень что либо конкретное писать.

Добавлено: Ср май 13, 2009 17:46:02
sachok
Код: Выделить всё
volt=read_adc(0); //+5
volt=ADCW;
volt=5120/1024*volt;
Так результат вроде в мили вольтах должен бить. 2,5В=2500мВ
Добавлено: Ср май 13, 2009 17:50:18
sachok
Доделал:) У меня работало.
Добавлено: Ср май 13, 2009 18:10:31
mr_smit
Вот настоящий человек. Спасибо
sachok!!!!!!!!
Только я не понял эту строчку:
Можно поподробней.
Добавлено: Ср май 13, 2009 19:30:59
sachok
5120(V
ref) - это опорное напряжение в мили вольтах. Почему 5,12В - потому что так точнее у меня меряет, делится нацело.

1024 - 2^10 - 10-ти битный режим АЦП.
потом это всё умножаем на результат преобразавания АЦП можна в ДШ посмотреть формулу там есть.
Добавлено: Ср май 13, 2009 20:28:46
mr_smit
Спасибо