MEMS cvičenie 2: Rozdiel medzi revíziami
Z SensorWiki
Riadok 1: | Riadok 1: | ||
== Potenciometrické snímače == | == Potenciometrické snímače == | ||
+ | |||
+ | |||
+ | 1. Zmerajte prevodovú charakteristiku odporového senzora polohy pomocou ohmmetra. | ||
+ | |||
+ | 2. Senzor pripojte k A/D prevodníku mikropočítača a pomocou programu nižšie zmerajte | ||
+ | prevodovú charakteristiku celého meracieho člena. | ||
+ | |||
+ | 3. Prevodovú charakteristiku zlinearizujte a doložte úspešnosť porovnaním metrologických parametrov. | ||
+ | |||
Riadok 11: | Riadok 20: | ||
<source lang="cpp"> | <source lang="cpp"> | ||
− | + | ||
− | + | #define positionSensor 5 // define your pin here | |
− | #define positionSensor 5 | + | |
− | |||
− | |||
int adcValue; | int adcValue; | ||
float outputValue; | float outputValue; | ||
Riadok 21: | Riadok 28: | ||
void setup() | void setup() | ||
{ | { | ||
− | Serial.begin( | + | Serial.begin(9600); // typical values are 9600 or 115200 |
− | mDelay = 1000/SampFrequency; //calculate delay for proper sampling rate | + | mDelay = 1000/SampFrequency; // calculate delay for proper sampling rate |
} | } | ||
void loop() | void loop() | ||
{ | { | ||
− | adcValue = analogRead(positionSensor); | + | adcValue = analogRead(positionSensor); // read ADC value |
− | /* ======= | + | |
− | outputValue = adcValue; | + | /* ======= replace this section with your code ===== */ |
− | /* =============================================== */ | + | |
− | Serial. | + | outputValue = adcValue; |
− | + | ||
− | delay( | + | /* ================================================== */ |
+ | |||
+ | Serial.println( outputValue ); // prints value over serial | ||
+ | |||
+ | delay(100); // delay in milliseconds | ||
} | } | ||
Riadok 40: | Riadok 51: | ||
+ | |||
+ | == Linearizácia prevodovej charakteristiky == | ||
− | == 1. Look-up table == | + | === 1. Look-up table === |
Riadok 55: | Riadok 68: | ||
− | == 2. Po častiach lineárna náhrada == | + | === 2. Po častiach lineárna náhrada === |
<source lang="cpp"> | <source lang="cpp"> | ||
Riadok 66: | Riadok 79: | ||
− | == 3. Aproximácia funkcie == | + | === 3. Aproximácia funkcie === |
Riadok 79: | Riadok 92: | ||
− | ''' | + | == Úlohy == |
+ | |||
+ | '''Úlohy, ktoré treba odovzdať:''' | ||
* Chyby podľa EN 60 770 | * Chyby podľa EN 60 770 | ||
Riadok 91: | Riadok 106: | ||
* Program pre mikroprocesor | * Program pre mikroprocesor | ||
− | [[Súbor: | + | [[Súbor:Example1-1.png|500px]] |
+ | |||
+ | Hodnotenie: 3 body | ||
+ | |||
+ | Deadline: <FONT COlor="red">'''27. 2. 2018 '''</font> | ||
Verzia zo dňa a času 16:26, 15. február 2018
Obsah
Potenciometrické snímače
1. Zmerajte prevodovú charakteristiku odporového senzora polohy pomocou ohmmetra.
2. Senzor pripojte k A/D prevodníku mikropočítača a pomocou programu nižšie zmerajte prevodovú charakteristiku celého meracieho člena.
3. Prevodovú charakteristiku zlinearizujte a doložte úspešnosť porovnaním metrologických parametrov.
- 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/
#define positionSensor 5 // define your pin here
int adcValue;
float outputValue;
void setup()
{
Serial.begin(9600); // typical values are 9600 or 115200
mDelay = 1000/SampFrequency; // calculate delay for proper sampling rate
}
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,...};
Viac info tu: https://www.arduino.cc/en/Reference/PROGMEM
2. Po častiach lineárna náhrada
if (adcValue > x1) && (adcValue <= x2)
y = k2 & adcValue + q2;
return(y)
3. Aproximácia funkcie
- https://www.gnu.org/software/octave/doc/interpreter/Polynomial-Interpolation.html
- http://octave.sourceforge.net/optim/function/leasqr.html
- http://octave.sourceforge.net/optim/function/expfit.html
- https://www.gnu.org/software/gsl/manual/html_node/Example-programs-for-Nonlinear-Least_002dSquares-Fitting.html
- https://www.gnu.org/software/octave/doc/interpreter/One_002ddimensional-Interpolation.html#One_002ddimensional-Interpolation
Úlohy
Úlohy, ktoré treba odovzdať:
- Chyby podľa EN 60 770
- Nepresnosť
- Meraná chyba
- Nelinearita
- Hysteréza
- Neopakovateľnosť
- Graf 1: prevodová charakteristika
- Graf 2: chybové krivky (viď obr.)
- Program pre mikroprocesor
Hodnotenie: 3 body
Deadline: 27. 2. 2018