Operácie

MEMS cvičenie 2: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Balogh (diskusia | príspevky)
Bez shrnutí editace
Riadok 1: Riadok 1:
Poznamky 2020:  https://www.qsl.net/om3cph/sw/pot.html  https://electronics.stackexchange.com/questions/231522/improving-the-linearity-of-a-potentiometer-after-loading
http://www.geofex.com/article_folders/potsecrets/potscret.htm


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

Verzia z 09:07, 17. február 2020

Poznamky 2020: https://www.qsl.net/om3cph/sw/pot.html https://electronics.stackexchange.com/questions/231522/improving-the-linearity-of-a-potentiometer-after-loading http://www.geofex.com/article_folders/potsecrets/potscret.htm


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.
  4. 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

Hodnotenie: 3 body

Deadline: 27. 2. 2018


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