This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:sensor:potentiometer [2014/10/09 08:16] – raivo.sell | et:examples:sensor:potentiometer [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | + | < |
====== Potentsiomeeter ====== | ====== Potentsiomeeter ====== | ||
- | //Vajalikud teadmised: [HW] [[et: | + | //Vajalikud teadmised: |
+ | [HW] [[et: | ||
+ | [ELC] [[et: | ||
+ | [AVR] [[et: | ||
+ | [LIB] [[et: | ||
===== Teooria ===== | ===== Teooria ===== | ||
Line 13: | Line 17: | ||
===== Praktika ===== | ===== Praktika ===== | ||
- | [{{ : | + | [{{ : |
- | Kodulabori moodulil asub pööratav 10 kΩ potentsiomeeter. Potentsiomeeter on ühendatud maa ja mikrokontrolleri toite potentsiaalide vahele ning liugur ühendub mikrokontrolleri analoog-digitaalmuunduriga (inglise keeles //analog digital converter | + | Kodulabori moodulil asub pööratav 10 kΩ potentsiomeeter. Potentsiomeeter on ühendatud maa ja mikrokontrolleri toite potentsiaalide vahele ning liugur ühendub mikrokontrolleri analoog-digitaalmuunduriga (inglise keeles //analog digital converter//, lühend ADC). Selliselt ühendatuna saab potentsiomeetri väljundpinget reguleerida vahemikus 0 V kuni toitepinge. Kui ka AVR-i analoog-digitaalmuunduri võrdluspinge võtta AVCC viigult, saab potentsiomeetri väljundpinge digitaalse väärtuse kogu selle reguleerimispiirkonna ulatuses. Kodulabor III puhul on maksimaalseks pingeks AVCC viigul 2,7 V kuid sisenditesse võib lasta kuni 3,3 V pinget. AVR ADC kasutamiseks on Kodulabori teegis kirjutatud järgmised funktsioonid: |
* void adc_init(reference, | * void adc_init(reference, | ||
Line 22: | Line 26: | ||
Funktsioon // | Funktsioon // | ||
+ | |||
+ | Järgnevad teegifunktsioonide näited on toodud ATmega2561 ADC muunduri kohta. | ||
<code c> | <code c> | ||
- | // ATmega2561 teegifunktsioonid | ||
// ADC käivitamine | // ADC käivitamine | ||
void adc_init(adc_reference reference, adc_prescale prescale) | void adc_init(adc_reference reference, adc_prescale prescale) | ||
Line 48: | Line 53: | ||
{ | { | ||
asm volatile (" | asm volatile (" | ||
- | } | + | } |
// Tulemuse tagastamine | // Tulemuse tagastamine | ||
Line 66: | Line 71: | ||
// Robootika Kodulabor II | // Robootika Kodulabor II | ||
- | // #define ADC_CHANNEL 3 | + | //#define ADC_CHANNEL 3 |
// Robootika Kodulabor III | // Robootika Kodulabor III | ||
Line 76: | Line 81: | ||
int value; | int value; | ||
- | // 7-segmendilise | + | // 7-segmendilise |
segment_display_init(); | segment_display_init(); | ||
// ADC muunduri seadistamine | // ADC muunduri seadistamine | ||
- | adc_init(ADC_REF_AVCC, | + | adc_init(ADC_REF_AVCC, |
// Lõputu tsükkel | // Lõputu tsükkel | ||
- | while (true) | + | while (1) |
{ | { | ||
// Kanali 4-kordselt ümardatud väärtuse lugemine | // Kanali 4-kordselt ümardatud väärtuse lugemine | ||
Line 89: | Line 94: | ||
// Näidu sajandike näitamine | // Näidu sajandike näitamine | ||
- | // | + | // Kodulabor II |
// | // | ||
- | // | + | // Kodulabor III |
segment_display_write(value * 10 / 2048); | segment_display_write(value * 10 / 2048); | ||
} | } | ||
} | } | ||
</ | </ |