Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:sensor:potentiometer [2014/10/09 08:55] raivo.sellet:examples:sensor:potentiometer [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~+<pagebreak>
 ====== Potentsiomeeter ====== ====== Potentsiomeeter ======
  
-//Vajalikud teadmised: [HW] [[et:hardware:homelab:digi]], [HW] [[et:hardware:homelab:sensor]], [ELC] [[et:electronics:voltage_divider]], [AVR] [[et:avr:adc]], [LIB] [[et:software:homelab:library:adc]], [LIB] [[et:software:homelab:library:module:segment_display]]//+//Vajalikud teadmised:  
 +[HW] [[et:hardware:homelab:digi]], 
 +[ELC] [[et:electronics:voltage_divider]], 
 +[AVR] [[et:avr:adc]],  
 +[LIB] [[et:software:homelab:library:adc]], [LIB] [[et:software:homelab:library:module:segment_display]]//
  
 ===== Teooria ===== ===== Teooria =====
Line 13: Line 17:
  
 ===== Praktika ===== ===== Praktika =====
-[{{  :examples:sensor:pote.png?120|Pööratav potentsiomeeter}}]+[{{  :examples:sensor:pote.png?250|Pööratav potentsiomeeter}}]
 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: 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:
  
Line 22: Line 26:
  
 Funktsioon //adc_init// tuleb välja kutsuda programmi alguses, millega seatakse AVR-i ADC töövalmis. Valida tuleb võrdluspinge kas AREF või AVCC viigult või hoopis sisemine  pinge. Lisaks tuleb määrata muunduri töötakt, täpsemalt sagedusjaguri tegur, millega jagatakse läbi mikrokontrolleri töötakt. Kõrgema taktiga käib muundamine kiiremini, kuid võib kannatada mõõtmistäpsus. Mõõtmiseks on //adc_get_value// funktsioon, millega saab valida kanali ja mis tagastab 16-bitise täisarvuna 10-bitise (Kodulabor III puhul 11-bitise) mõõtmistulemuse. Mõõtmisfunktsioon on blokeeruv ehk see jääb ootama muundamise lõppu ja tagastab väärtuse alles siis, kui mõõtmine on tehtud.  Funktsioon //adc_init// tuleb välja kutsuda programmi alguses, millega seatakse AVR-i ADC töövalmis. Valida tuleb võrdluspinge kas AREF või AVCC viigult või hoopis sisemine  pinge. Lisaks tuleb määrata muunduri töötakt, täpsemalt sagedusjaguri tegur, millega jagatakse läbi mikrokontrolleri töötakt. Kõrgema taktiga käib muundamine kiiremini, kuid võib kannatada mõõtmistäpsus. Mõõtmiseks on //adc_get_value// funktsioon, millega saab valida kanali ja mis tagastab 16-bitise täisarvuna 10-bitise (Kodulabor III puhul 11-bitise) mõõtmistulemuse. Mõõtmisfunktsioon on blokeeruv ehk see jääb ootama muundamise lõppu ja tagastab väärtuse alles siis, kui mõõtmine on tehtud. 
-~~PB~~ + 
-Järgnevad teegifunktsioonide näited on toodu ATmega2561 ADC muunduri kohta.+Järgnevad teegifunktsioonide näited on toodud ATmega2561 ADC muunduri kohta.
  
 <code c> <code c>
Line 49: Line 53:
  {  {
  asm volatile ("nop");  asm volatile ("nop");
-  }+ }
    
  // Tulemuse tagastamine  // Tulemuse tagastamine
Line 67: Line 71:
  
 // Robootika Kodulabor II // Robootika Kodulabor II
-// #define ADC_CHANNEL 3+//#define ADC_CHANNEL 3
  
 // Robootika Kodulabor III // Robootika Kodulabor III
Line 77: Line 81:
  int value;  int value;
  
- // 7-segmendilise indikaatori seadistamine+ // 7-segmendilise numberindikaatori seadistamine
  segment_display_init();  segment_display_init();
  
  // ADC muunduri seadistamine  // ADC muunduri seadistamine
- adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);+ adc_init(ADC_REF_AVCC, ADC_PRESCALE_16);
  
  // 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 90: Line 94:
  
  // Näidu sajandike näitamine  // Näidu sajandike näitamine
- //Kodulabor II+ // Kodulabor II
  //segment_display_write(value * 10 / 1024);  //segment_display_write(value * 10 / 1024);
- //Kodulabor III+ // Kodulabor III
  segment_display_write(value * 10 / 2048);  segment_display_write(value * 10 / 2048);
  }  }
 } }
 </code> </code>
et/examples/sensor/potentiometer.1412844913.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