Помогите с АЦП ATTiny 45. Как вольты записать то???

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение 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???(Вольты, милливольты) С чем сравнивать?
Последний раз редактировалось mr_smit Вт май 12, 2009 19:05:12, всего редактировалось 1 раз.
Нельзя всё знать, достаточно понимать.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

ИМХО разумно прикладыват mr вопросу архив с проектами CVAVR PROTEUS.
mr_smit писал(а):В каких величинах volt???(Вольты, миливольты) С чем сравнивать?
Это зависит наверно от того какой тип вы ей дали.

А read_adc(0); возвращает результат в 1024 долях опрного напряжения АЦП.
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

ikarab писал(а):Это зависит наверно от того какой тип вы ей дали.
Я имел ввиду возвращаемое значение.
ikarab писал(а):А read_adc(0); возвращает результат в 1024 долях опрного напряжения АЦП.
Т.е. реальное напряжение = volt*(5/1024) ?

P.S. Вот исходники.
Вложения
Desktop.rar
(38.63 КБ) 326 скачиваний
Нельзя всё знать, достаточно понимать.
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Не работает

Код: Выделить всё

while (1)
      {
      float volt;
      volt=read_adc(0)*(5/1024);
      if (volt>2) {PORTB.0=0;}
      else {PORTB.0=1;}
      };
Нельзя всё знать, достаточно понимать.
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

А вы посмотрите пример АЦП в папке CVAVR.
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

А фьюз RSTDISBL в протеусе в свойствах тиньки запрограммирован (установлен в 0)?
А то ресет будет работать как ресет - вот и не работает.
Чтоб не мучаться старайтесь не использовать Reset как порт без крайней необходимости.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Вообще-то возвращаемое значение при 10-битном преобразовании -INT.
Максимальное значение при этом получите 1023.А привязать его можете хоть к чему.Может у вас весы,значит в килограммах,а если поток света в канделах и т.д.
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

ikarab писал(а):А вы посмотрите пример АЦП в папке CVAVR.
Там, почему то, они используют:

Код: Выделить всё

interrupt [ADC_INT] void adc_isr(void)
А мне CVAVR другой код выдает.

Код: Выделить всё

unsigned int read_adc(unsigned char adc_input)

Главное при 0 В светодиод не горит, 0.5 В загорается, между 0.5 и 1 В моргнет один раз и потом до 5 В горит постоянно.
Нельзя всё знать, достаточно понимать.
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Ну что сделать то??? Всем лень что либо конкретное писать. :( :cry:
Нельзя всё знать, достаточно понимать.
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

Код: Выделить всё

volt=read_adc(0); //+5
volt=ADCW;
volt=5120/1024*volt;
Так результат вроде в мили вольтах должен бить. 2,5В=2500мВ
Я не Сашок!!!
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

Доделал:) У меня работало.
Вложения
Desktop.rar
(51.77 КБ) 429 скачиваний
Я не Сашок!!!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Вот настоящий человек. Спасибо sachok!!!!!!!!

Только я не понял эту строчку:

Код: Выделить всё

volt=5120/1024*volt;
Можно поподробней.
Нельзя всё знать, достаточно понимать.
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

5120(Vref) - это опорное напряжение в мили вольтах. Почему 5,12В - потому что так точнее у меня меряет, делится нацело.:)
1024 - 2^10 - 10-ти битный режим АЦП.
потом это всё умножаем на результат преобразавания АЦП можна в ДШ посмотреть формулу там есть.
Я не Сашок!!!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Спасибо
Нельзя всё знать, достаточно понимать.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»