INT 21h

Домашняя страница самого страшного прерывания

АЦП (ADC) в AVR mega88 (mega8, mega48, mega168, mega328)

№ 5146 В разделах: Программирование Электроника от May 6th, 2013,

По работе мне понадобилось сделать датчик поворота руля. Самый простой и точный способ это выдернуть шифратор из обычной компьютерной мыши, пришаманить его к рулевой колонке, а потом тупо считать подаваемые импульсы. А что если руководитель проекта подумал, что сделать это с помощью переменного резистора гораздо круче? Ну раз он захотел, то почему бы и нет? Ну подумаешь точность немного упадет :) Все равно компьютер будет подруливать.

Чтобы ADC заработал нужно подключить AGND, AREF и AVCC к питанию. Резистор нужно подключить к ADC0 согласно схеме на рисунке ниже.
sNRkfEiZeFSjInT7nvBGsBg

Теперь необходимо инициализировать АЦП. Включаем нужный пин на вход (я это сделал довольно грубо и одним махом сделал входом весь порт C), устанавливаем делитель в ADCSRA на 256, в DIDR0 отключаем ненужные входы АЦП 1, а нужные 0 и настраиваем мультиплексор.

void initADC(void) {
   DDRC = 0;
   PORTC = 0xFF; 
   PRR |= (1<<PRADC);
   ADCSRA = (1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);
   DIDR0=0b00111110;
   ADMUX = (1<<MUX0);
}

Чтобы снизить шумы можно применить LC фильтр, описаный в даташите

adc_noise_reduce

Теперь можно начать читать из АЦП значения. Они будут изменяться от 0 до 1023.

  int adc_value=0;
  while (1) {
      sumsung_clr();
      sumsung_goto(0,0);
      fprintf_P(&display,PSTR("%02d\n"), adc_value);
      _delay_ms(300);
      ADCSRA |= (1<<ADSC)|(1<<ADEN);
      while((ADCSRA & (1<<ADSC))!=0) ;
      adc_value=ADC; 
  }

Должно получиться что-то типа такого
2013-05-07 00.34.21

Демонстрационный стенд с подключеным экраном

2 комментариев »

2 комментариев »

Comment by Руслан | July 21, 2014 @ 15:16:32

Здравствуйте, Владимир.
Подскажите, как можно прошить ATtiny45 с помощью Arduino Nano? Возможно ли такое?
Ограничения такие:
1. Из программатора только Arduino Nano с разъемом ICSP
2. Прошивка в виде *.hex, т.е. прога Arduino IDE отпадает – она не знает hex.

Подключение ATtiny45 к Nano я нашел (http://blog.roguecode.co.za/make-dirt-cheap-electronics-with-attiny45-arduino-nano/), но не знаю чем прошивать.

Comment by 21h | July 21, 2014 @ 16:14:25

большинство программаторов AVR работает на частоте 12 мгц и выше, т.к. сделаны они на той же AVRке. если ваша нано может работать на 12 мгц и выше, то проблем быть не должно. программируете сначало свою ардуину прошивкой для программатора, а потом ардуиной закачиваете прошивку в тиньку. для ардуино куча всяких сайтов сделано. достаточно немного погуглить и сразу все нужные программы найдете.

Если вы совсем не знаете что и как, то можно купить готовый программатор всего за 150 руб http://www.dx.com/ru/p/usbasp-usbisp-downloader-programmer-for-51-avr-157167?r=47602088

Форма отправки комментария

CAPTCHA
*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • Игорь: Все настроил, еще раз просмотрел видео и методом научного тыка все настроил и сохранил, все работает и обе...
  • 21h: Здравствуйте, Игорь! Я не знаю :) Думаю аналогично согласно инструкции к вашей радиостанции.
  • Игорь: Добрый день, просмотрел Ваше видео все доступно и ясно для 8 ми канальных радеек, но мне нада настроить 69...
  • Гоги: Есть инструкция к Моторолкам – она подходит к серии Motorola TLKR T4… Т8. В конце сетка частот и...
  • 21h: торчок давно уже не обновлял, как только закрыл сайт где он работал. да, это морда для opentracker. без...
  • Buter: Какова дальнейшая жизнь торчка? Он кстати веб-интерфейсом для OpenTracker выступает? Без OpenTracker работать...
  • 21h: понятия не имею. гуглите инструкцию к вашей радейке и сверяйтесь с ней.
  • Денис: хочу их подружить с uv5r
  • Денис: t-388 walkie talkie на эти шпаргалочек нет,или как приминить ваши к их настройке?
  • John: Стекла для электроник – техночас.ру