Operácie

MEMS meranie s A/D prevodníkom: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
dBez shrnutí editace
Balogh (diskusia | príspevky)
dBez shrnutí editace
Riadok 1: Riadok 1:
Note: v 2025
Note: v.2025


== Potenciometrické snímače ==
== Potenciometrické snímače ==


# Poskladajte si odporový senzor polohy so stupnicou (ak nemáte, použite senzor v TinkerCADe).
# Senzor z predošlého cvičenia pripojte k A/D prevodníku mikropočítača a pomocou programu nižšie zmerajte prevodovú charakteristiku celého meracieho člena.  
# Zmerajte prevodovú charakteristiku odporového senzora polohy pomocou ohmmetra (cvičenie 1).
# Namerané hodnoty pri oboch polohách prepínača (B aj A) vyhodnoťte podľa STN EN 60 770.
# Senzor pripojte k A/D prevodníku mikropočítača a pomocou programu nižšie zmerajte prevodovú charakteristiku celého meracieho člena.  
# Aktuálnu zmeranú hodnotu zobrazte na miestnom LED displeji.
# Prevodovú charakteristiku zlinearizujte a doložte úspešnosť porovnaním metrologických parametrov.  




[[Súbor:MEMS02-SchemaZapojenia21.png|300px|thumb|center|Schéma zapojenia]]
<!-- [[Súbor:MEMS02-SchemaZapojenia21.png|300px|thumb|center|Schéma zapojenia]] -->


[[Súbor:MEMS02-SchemaZapojenia.png|300px|thumb|center|Schéma zapojenia]]
[[Súbor:MEMS02-SchemaZapojenia.png|300px|thumb|center|Schéma zapojenia]]
Riadok 15: Riadok 14:
[[Súbor:MEMS02-BlokyPrevodu.png|800px|thumb|center|Postupnosť prevodov]]
[[Súbor:MEMS02-BlokyPrevodu.png|800px|thumb|center|Postupnosť prevodov]]


* Príklad na pripojenie analógového senzora: http://senzor.robotika.sk/sensorwiki/index.php/Acrob007
 
* Arduino homepage https://www.arduino.cc/




Riadok 120: Riadok 118:
'''Úlohy, ktoré treba odovzdať:'''  
'''Úlohy, ktoré treba odovzdať:'''  


* Graf 1: prevodové charakteristiky
* Graf 1: prevodové charakteristiky B aj A
* Chyby podľa EN 60 770
* Chyby podľa EN 60 770
** Nepresnosť
** Nepresnosť
Riadok 127: Riadok 125:
** Hysteréza
** Hysteréza
** Neopakovateľnosť
** Neopakovateľnosť
* Graf 2: chybové krivky (viď obr.)
* Graf 2: chybové krivky  
* Program pre mikroprocesor na linearizáciu
* Porovnať namerané výsledky s predošlými


[[Súbor:Example2-1.png|500px]]
[[Súbor:Example2-1.png|500px]]


Hodnotenie: 5 bodov


Deadline: <FONT COlor="red">'''8. 3. 2022 '''</font>





Verzia z 10:57, 23. február 2025

Note: v.2025

Potenciometrické snímače

  1. Senzor z predošlého cvičenia pripojte k A/D prevodníku mikropočítača a pomocou programu nižšie zmerajte prevodovú charakteristiku celého meracieho člena.
  2. Namerané hodnoty pri oboch polohách prepínača (B aj A) vyhodnoťte podľa STN EN 60 770.
  3. Aktuálnu zmeranú hodnotu zobrazte na miestnom LED displeji.


Schéma zapojenia
Postupnosť prevodov



Meranie charakteristiky senzora mikroprocesorom s A/D prevodníkom

Azda najjednoduchší program na meranie je tento

#define mySensor 4                  // 4: potenciometer

  int adcValue;
float outputValue;

void setup()
{                              
 Serial.begin(57600);               // typicke rychlosti su  9600 alebo 57600
}
 
void loop()
{
  adcValue = analogRead(mySensor);  // read ADC value
  
  outputValue = adcValue;           // information processing (if necessary)
  
  Serial.println(outputValue);      // prints result over serial

 delay(500);                        // delay in milliseconds
}

Funkcia analogRead() zavolá A/D prevodník integrovaný na čipe, ktorý prevedie vstupné napätie v rozsahu 0 - 5 V na celé číslo v rozsahu 0 - 1023 (zodpovedajúce 10-bitovému prevodníku). Ak chceme zobraziť hodnotu napätia a nie číslo z prevodníka, zmeníme kód na riadku 15 napr. nasledovne:

 outputValue = adcValue * 5 / 1023;

Funkcia Serial.println() potom vyšle výsledné číslo po sériovej linke do PC, kde si ich odchytíme v terminálovom okne. Pozor, prenosová rýchlosť v termináli musí byť zhodná s tou, ktorú sme nastavili funkciou Serial.begin, t.j. 57 600 Baud.

Uvedený kód môžeme ďalej vylepšovať - napríklad odstránime časť šumu na vstupe tak, že meranie spravíme viackrát a spriemerujeme. Napríklad takto:


  /* odmeraj N hodnot a vypocitaj priemer */
  sensorValue = 0;
    for ( int i=1; i<=64; i++) 
      sensorValue += analogRead(A4);
  sensorValue = sensorValue / 64;

Hint: viete, prečo je lepšie počítať priemer zo 16, 32 alebo 64 hodnôt a nie z 10 alebo 100?

Ďalšie zlepšenie by mohlo byť pridanie indikácie pripravenosti na meranie LED diódou a spustenie samotného merania tlačidlom (je pripojené na A5, resp. D19)

/* Zadefinovanie tlacitka */
#define PUSHBUTTON 19


/* Do casti setup() treba pridat konfiguraciu a uvodny vypis */
  
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(PUSHBUTTON, INPUT);

  Serial.println("*** MISA measurement (press Red PB to start): ***\n\n");


/* Do casti loop(), ktora sa opakuje pridame indikaciu LED a cakanie na tlacitko */

  digitalWrite(LED_BUILTIN,HIGH);            // Led ON = Ready

  while ( digitalRead(PUSHBUTTON)== 1)       // Wait for press
        {    /* just wait here */    }
  
  digitalWrite(LED_BUITLIN,LOW);             // Led OFF = Measuring...

  /* a tu uz nasleduje meranie a odoslanie hodnoty */


Zobrazenie hodnoty na LED displeji

Postupujte podľa návodu MEMS displej LED

Nepovinne: Grafické priebehy na PC --Serial Plotter =

Serial Plotter je trocha sofistikovanejší program ako Terminal, jeho úlohou je zakresliť graficky všetky prijaté informácie. Najjednoduchšie je posielať mu čísla, pričom ich môže byť aj viac, oddelených čiarkami. Každá jedna n-tica hodnôt musí končíť znakom pre nový riadok. V knižnici Serial použite bloky Serial Write Number pre čísla, Serial Write String pre čiarky a Serial Write Line pre ukončenie riadka. Neposielajte hodnoty príliš často, aby sa nepreplnil vstupný buffer.







Úlohy

Úlohy, ktoré treba odovzdať:

  • Graf 1: prevodové charakteristiky B aj A
  • Chyby podľa EN 60 770
    • Nepresnosť
    • Meraná chyba
    • Nelinearita
    • Hysteréza
    • Neopakovateľnosť
  • Graf 2: chybové krivky



Návrat na zoznam cvičení...