MEMS cvičenie 2: Rozdiel medzi revíziami
Zo stránky SensorWiki
| Riadok 89: | Riadok 89: | ||
</html>  | </html>  | ||
Ak sa vám príklad nezobrazí správne priamo tu, použite [https://www.tinkercad.com/things/  | Ak sa vám príklad nezobrazí správne priamo tu, použite [https://www.tinkercad.com/things/gjGgeC1wSPg-misa-lcddemo/editel?sharecode=In_RCwIxVqMhXSORfP1HGFq724LNdf4-8hn1Yr6oN0g tento odkaz].  | ||
== Programovateľný LCD displej ==  | == Programovateľný LCD displej ==  | ||
Verzia z 13:53, 23. február 2021
Na tomto cvičení je cieľom pripojiť odporový senzor k Arduinu a zobraziť jeho zlinearizovanú hodnotu na nejakom miestnom displeji (LED, LCD a pod.) prípadne ju
odoslať po sériovej linke do PC (v simulátore TinkerCAD).
Potenciometrické snímače
- Poskladajte si odporový senzor polohy so stupnicou (ak nemáte, použite senzor v TinkerCADe).
 - Zmerajte prevodovú charakteristiku odporového senzora polohy pomocou ohmmetra (cvičenie 1).
 - 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.
 

- Príklad na pripojenie analógového senzora: http://senzor.robotika.sk/sensorwiki/index.php/Acrob007
 - Arduino homepage https://www.arduino.cc/
 
Na pridanie do TinkerCAD triedy (classroom) použite tento link. Ak od vás program pýta vstupný kód, je to 1R5VXPBESZZT
Ak sa vám nezobrazuje vložený simulátor správne, použite prosím, tento link.
#define positionSensor 0       // define your pin here 0
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
}
Pripojenie LCD a LED displeja a lokálne zobrazenie meranej veličiny
V tejto časti cvičenia zobrazíme meranú veličinu na miestnom LED alebo LCD displeji mikropočítača. Z tejto časti vám nevyplýva žiadna úloha, len si pozrite príklady aby ste ich vedeli prípadne implementovať na svojom vlastnom reálnom Arduine s nejakým displejom.
Sedemsegmentový zobrazovač
Ak sa vám príklad nezobrazí správne priamo tu, použite tento odkaz.
Ak sa vám príklad nezobrazí správne priamo tu, použite tento odkaz.
Programovateľný LCD displej
- LCD zobrazovač. Klávesnica. 
Obšírnejšie informácie o displejoch (prednáška z predmetu MMP) 
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);
- 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ť:
- 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: 5 bodOV
Deadline: 1. 3. 2021