Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ru:avr:adc [2013/08/14 16:28] – создано eduardtlmkru:avr:adc [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Analoog-digitaalmuundur ======+====== Аналого-цифровой преобразователь ======
  
-Analoog-digitaalmuundur (inglise keeles //analog to digital converter//, lühend ADC) muundab analoogpinge väärtuse digitaalseks väärtuseks. AVR-i ADC analoogpinge sisend on lubatud 0-5,5 V piiresDigitaalne väärtus on 10-bitinekuid selle täpsus on ±2 ühikutViga võib veelgi kasvadakui kiibi toitepinget häirete eest ei kaitstaADC jaoks on AVR-il eraldi toite ja võrdluspinge viikEraldi toide on mürakindluse pärast ja see ei tohi kiibi toitepingest erineda rohkem kui 0,3 V. Võrdluspinge määrab maksimaalse digitaalse väärtuseEhk kui võrdluspinge on 3 V, siis sama pingega sisend annab väärtuseks 2<sup>10</sup> - 1 ehk 1023.+Аналого-цифровой преобразователь или АЦП (англ. //analog to digital converter//, сокращ. ADC) преобразовывает аналоговое значение напряжения в цифровое значениеРазрешённый диапазон напряжения АЦП AVR микроконтроллера находится в рамках 0-5,5 V. Цифровое значение 10-битноено его точность ±2 единицыОшибка может увеличитьсяесли не защитить напряжение питания чипа от помехУ AVR существует отдельное питание для АЦП и отдельный вывод напряжения сравненияОтдельное питание помогает снизить интерференцию и не должно отличаться от напряжения питания чипа больше, чем на 0,3 V. Питание сравнения определяет максимальное цифровое значениеДругими словами, если питание сравнения 3 V, то вход с таким же напряжением выдаёт значение в 2<sup>10</sup> - 1 т.е. 1023.
  
-AVR ADC töötab võrdlusmeetodil (inglise keeles //successive approximation//). Lühidalt öeldes toimub mõõdetava pinge võrdlemine kindlate nivoopingetega ja tulemuste esitamine tõeväärtuste-ehk bitijadanaSee meetod on suhteliselt aeganõudevsest iga biti leidmine lõppväärtuses toimub eraldi. AVR-il kulub töö ajal 13 takti ühe mõõtmise tegemiseks ja 25 takti kõige esimesel mõõtmisel (käivitusel). Need taktid pole aga kontrolleri töötaktidvaid spetsiaalselt ADC üksuse jaoks sagedusjaguriga saadud taktidMaksimaalse täpsuse saamiseks peaks ADC takt olema 50-200 kHz. Kõrgemal taktil kaob täpsusVahel on ka mõõtmiste suur arv olulisem kui täpsus ja siis on põhjendatud suurema sageduse kasutamineÜhele mõõtmisele kuluvaks ajaks on AVR dokumentatsioonis antud 13-260 µs.+АЦП AVR работает по методу последовательного приближения (англ. //successive approximation//). Вкратце, измеряемое напряжение сравнивается с конкретными уровнями напряженияа представление результатов происходит битовыми массивамиДанный метод требует много временитак как нахождение каждого бита из окончательного значения происходит отдельноКонтроллеру AVR требуется во время работы 13 тактов для одного измерения и 25 тактов для самого первого измерения (при запуске). Эти такты не являются рабочими тактами контроллераони получены частотным делителем специально для АЦПДля получения максимальной точности такт АЦП должен быть 50-200 kHz. На более высоком такте пропадает точностьИногда большое количество измерений важнее, чем точность и в таком случае оправдано использование большей частотыВремя, требующееся для одного измерения, в документации к AVR указано как 13-260 µs.
  
-Mõõtetulemust saab kasutaja lugeda 8- ja 10-bitisenaKuna AVR on 8-bitinesiis ADC mõõteväärtuste jaoks on sel kaks 8-bitist registritSeadistustes saab määratakas 10-bitisest väärtusest 2 esimest või 2 viimast bitti lähevad eraldi registrisseKui eraldatakse noorimat ehk tulemust vähem iseloomustavat bittisaab mõõtetulemuse 8-bitisena lugeda - sellist kombinatsiooni nimetatakse vasak-asetusega mõõtetulemuseks (//left align//). Teistpidist kombinatsioonikus kaht tulemusregistrit lugedes tekib 10-bitine arvnimetatakse parem-asetusega mõõtetulemuseks (//right align//).+Пользователь может считать результат измерения 8- и 10-битнымТак как AVR 8-битныйдля значений измерения у АЦП имеется два 8-битных регистраВ настройках можно указатькакие 2 бита (первые или последние) 10-битного значения пойдут в отдельный регистрЕсли отделяются битакоторые меньше всего характеризуют результат, можно результат измерения считать 8-битным – подобная комбинация называется  выравниванием по левому краю (англ. //left align//). Обратную комбинациюкогда оба регистра считываются и результат представлен в 10-битном форматеназывают выравниванием по правому краю (англ. //right align//).
  
-Mõõdetavaid analoogpinge sisendkanaleid on AVR-idel tavaliselt 8, ATtiny seerial üksikudmõnel ATmega seeria kiibil 16, kuid muundureid on siiski üksErinevate sisendite kasutamiseks on kiibis multiplekserMultiplekseri sisend on spetsiaalse registriga määratavADC üksusel on veel mõned omadusedmuundamine protsessori magamisrežiimis müra vähendamiseks ja sisemise fikseeritud võrdluspinge (2,56 V, mõnel ka 1 V) kasutamise võimalus.+Измеряемых каналов входного напряжения у AVR обычно 8, в серии ATtiny они одиночныеу некоторых чипов серии ATmegal 16, но преобразователь всё же одинДля использования разных входов в чипе существует встроенный мультиплексорВход мультиплексора определяется специальным регистромАЦП обладает некоторыми другими свойствамипреобразование в спящем режиме процессора для уменьшения помех и возможность использования внутреннего фиксированного напряжения сравнения (2,56 V, у некоторых и 1 V).
  
-~~PB~~+<pagebreak>
  
-<box 100% round #EEEEEE|Näide>+<box 100% round #EEEEEE|Пример>
  
-Vaja on mõõta ATmega128 ADC kanali pinget vahemikus 0-5 V 8-bitise täpsusega.+Требуется измерить напряжения канала АЦП ATmega128 в промежутке 0-5 V с 8-битной точностью.
  
 <code c> <code c>
Line 22: Line 22:
  unsigned char result;  unsigned char result;
  
- // Võrdluspingeks AREF viigu valimine + // Выбор вывода AREF сравнительным напряжением 
- //   (eeldatavasti on see ühendatud +5V toiteahelasse+ //   (предположительно он включен в +5V питание
- // Multiplekseriga kanali valimine + // Выбор канала мультиплексором 
- // Tulemus on vasak-asetusega+ // Результат с левым расположением
  ADMUX = (1 << REFS0) | (1 << ADLAR) | (3);  ADMUX = (1 << REFS0) | (1 << ADLAR) | (3);
  
- // ADC üksuse käivitamine+ // Запуск АЦПналаживание преобразовательного такта 
- // teisendustakti seadmine 16 korda aeglasemaks töötaktist+ // в 16 раз медленнее рабочего такта
  ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADSC);  ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADSC);
  
- // Mõõtmise lõpetamise ootamine+ // Ожидание завершения измерения
  while (ADCSRA & (1 << ADSC)) continue;  while (ADCSRA & (1 << ADSC)) continue;
  
- // 8-bitise tulemuse lugemine+ // Считывание 8-битного результата
  result = ADCH;  result = ADCH;
 } }
ru/avr/adc.1376497718.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0