Operácie

MEMS cvičenie 2: Rozdiel medzi revíziami

Z SensorWiki

(Vytvorená stránka „1. Look-up table #include <avr/pgmspace.h> const PROGMEM int table[] = {11,12,15,...}; Viac info tu: https://www.arduino.cc/en/Reference/PROGMEM 2. Po častiach li...“)
 
(2. Po častiach lineárna náhrada)
(15 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
1. Look-up table
 
  
 +
== Potenciometrické snímače ==
 +
 +
# Poskladajte si odporový senzor polohy so stupnicou.
 +
# Zmerajte prevodovú charakteristiku odporového senzora polohy pomocou ohmmetra.
 +
# Senzor pripojte k A/D prevodníku mikropočítača a pomocou programu nižšie zmerajte
 +
prevodovú charakteristiku celého meracieho člena.
 +
# Prevodovú charakteristiku zlinearizujte a doložte úspešnosť porovnaním metrologických parametrov.
 +
 +
 +
 +
[[Súbor:MEMS02-SchemaZapojenia.png|300px|thumb|center|Schéma zapojenia]]
 +
 +
 +
* Príklad na pripojenie analógového senzora: http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob007
 +
* Riadiaca doska Acrob http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob
 +
* Arduino homepage https://www.arduino.cc/
 +
 +
<source lang="cpp">
 +
 +
#define positionSensor 5      // define your pin here
 +
 +
int adcValue;
 +
float outputValue;
 +
 +
void setup()
 +
{
 +
Serial.begin(9600);          // typical values are 9600 or 115200
 +
}
 +
 +
void loop()
 +
{
 +
adcValue = analogRead(positionSensor); // read ADC value
 +
 +
/*  =======  replace this section with your code ===== */
 +
 +
outputValue = adcValue;     
 +
 +
/*  ================================================== */
 +
 +
Serial.println( outputValue );  // prints value over serial
 +
 +
delay(100);                    // delay in milliseconds
 +
 +
}
 +
</source>
 +
 +
== Linearizácia prevodovej charakteristiky ==
 +
 +
 +
 +
=== 1. Look-up table ===
 +
 +
 +
<source lang="cpp">
 
  #include <avr/pgmspace.h>
 
  #include <avr/pgmspace.h>
  
 
  const PROGMEM int table[] = {11,12,15,...};
 
  const PROGMEM int table[] = {11,12,15,...};
 +
 +
return( table[adcValue] );
 +
</source>
  
 
Viac info tu: https://www.arduino.cc/en/Reference/PROGMEM
 
Viac info tu: https://www.arduino.cc/en/Reference/PROGMEM
  
2. Po častiach lineárna náhrada
+
=== 2. Po častiach lineárna náhrada ===
 +
 
 +
<source lang="cpp">
 +
  /* segment 1 */
 +
if (adcValue > x0) && (adcValue <= x1)
 +
  y = k1 * adcValue + q1;
  
if (adcValue > x1) && (adcValue <= x2)
+
  /* segment 2 */
   y = k2 & adcValue + q2;
+
if (adcValue > x1) && (adcValue <= x2)
 +
   y = k2 * adcValue + q2;
  
 
  return(y)
 
  return(y)
 +
</source>
 +
 +
Dá sa použiť aj funkcia map v Arduine -  https://www.arduino.cc/reference/en/language/functions/math/map/
 +
 +
=== 3. Aproximácia funkcie ===
 +
 +
<source lang="cpp">
 +
  y = a2 * adcValue^2 + a1 * adcValue + a0;
 +
  return(y);
 +
</source>
  
3. Aproximácia funkcie
 
  
 
* http://terpconnect.umd.edu/~toh/spectrum/CurveFitting.html
 
* http://terpconnect.umd.edu/~toh/spectrum/CurveFitting.html
Riadok 24: Riadok 95:
 
* https://www.gnu.org/software/octave/doc/interpreter/One_002ddimensional-Interpolation.html#One_002ddimensional-Interpolation
 
* https://www.gnu.org/software/octave/doc/interpreter/One_002ddimensional-Interpolation.html#One_002ddimensional-Interpolation
  
 +
== Úlohy ==
  
 +
'''Úlohy, ktoré treba odovzdať:'''
  
'''Odovzdať:'''
+
* Graf 1: prevodové charakteristiky
 
 
 
* Chyby podľa EN 60 770
 
* Chyby podľa EN 60 770
 
** Nepresnosť
 
** Nepresnosť
Riadok 34: Riadok 106:
 
** Hysteréza
 
** Hysteréza
 
** Neopakovateľnosť
 
** Neopakovateľnosť
* Graf 1: prevodová charakteristika
 
 
* Graf 2: chybové krivky (viď obr.)
 
* Graf 2: chybové krivky (viď obr.)
* Program pre mikroprocesor
+
* Program pre mikroprocesor na linearizáciu
  
 
[[Súbor:Example2-1.png|500px]]
 
[[Súbor:Example2-1.png|500px]]
 +
 +
Hodnotenie: 3 body
 +
 +
Deadline: <FONT COlor="red">'''27. 2. 2018 '''</font>
  
  
 +
* Tools: https://inkscape.org/sk/~sincoon/%E2%98%85knob-scale-generator
  
 
[[MEMS inteligentné senzory a aktuátory#Cvi.C4.8Denia|Návrat na zoznam cvičení...]]
 
[[MEMS inteligentné senzory a aktuátory#Cvi.C4.8Denia|Návrat na zoznam cvičení...]]
  
 
[[Category:MEMS]]
 
[[Category:MEMS]]

Verzia zo dňa a času 20:44, 27. február 2018

Potenciometrické snímače

  1. Poskladajte si odporový senzor polohy so stupnicou.
  2. Zmerajte prevodovú charakteristiku odporového senzora polohy pomocou ohmmetra.
  3. Senzor pripojte k A/D prevodníku mikropočítača a pomocou programu nižšie zmerajte

prevodovú charakteristiku celého meracieho člena.

  1. Prevodovú charakteristiku zlinearizujte a doložte úspešnosť porovnaním metrologických parametrov.


Schéma zapojenia


#define positionSensor 5       // define your pin here

int adcValue;
float outputValue;

void setup()
{
 Serial.begin(9600);           // typical values are 9600 or 115200
}
 
void loop()
{
 adcValue = analogRead(positionSensor); // read ADC value

 /*  =======  replace this section with your code ===== */

 outputValue = adcValue;       

 /*  ================================================== */

 Serial.println( outputValue );  // prints value over serial

 delay(100);                     // delay in milliseconds

}

Linearizácia prevodovej charakteristiky

1. Look-up table

 #include <avr/pgmspace.h>

 const PROGMEM int table[] = {11,12,15,...};
 
 return( table[adcValue] );

Viac info tu: https://www.arduino.cc/en/Reference/PROGMEM

2. Po častiach lineárna náhrada

  /* segment 1 */
 if (adcValue > x0) && (adcValue <= x1)
   y = k1 * adcValue + q1;

  /* segment 2 */
if (adcValue > x1) && (adcValue <= x2)
   y = k2 * adcValue + q2;

 return(y)

Dá sa použiť aj funkcia map v Arduine - https://www.arduino.cc/reference/en/language/functions/math/map/

3. Aproximácia funkcie

   y = a2 * adcValue^2 + a1 * adcValue + a0;
   return(y);


Úlohy

Úlohy, ktoré treba odovzdať:

  • Graf 1: prevodové charakteristiky
  • Chyby podľa EN 60 770
    • Nepresnosť
    • Meraná chyba
    • Nelinearita
    • Hysteréza
    • Neopakovateľnosť
  • Graf 2: chybové krivky (viď obr.)
  • Program pre mikroprocesor na linearizáciu

Example2-1.png

Hodnotenie: 3 body

Deadline: 27. 2. 2018


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