Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:iotelea:dragos.filipescu [2024/05/28 15:11]
dragos.filipescu [Software Design]
pm:prj2024:iotelea:dragos.filipescu [2024/05/28 21:07] (current)
dragos.filipescu [Software Design]
Line 55: Line 55:
 Pentru o precizie mai buna, am folosit algoritmul [[https://​en.wikipedia.org/​wiki/​Kahan_summation_algorithm#​The_algorithm|Kahan Summation]] pentru a face media primelor ''​SAMPLE_SIZE''​ valori masurate de accelerometru,​ astfel incat masuratorile ulterioare sa aiba un punct de referinta cat mai precis. Pentru o precizie mai buna, am folosit algoritmul [[https://​en.wikipedia.org/​wiki/​Kahan_summation_algorithm#​The_algorithm|Kahan Summation]] pentru a face media primelor ''​SAMPLE_SIZE''​ valori masurate de accelerometru,​ astfel incat masuratorile ulterioare sa aiba un punct de referinta cat mai precis.
  
-''​ +{{ :​pm:​prj2024:​iotelea:​seismograf_-_kahan_summation.png?​direct&​600 |}}
-float sum_x = 0.0;+
  
 +Pe langa procesul de calibrare, in setup se initializeaza si timer-ul 1, care va emite o intrerupere software la fiecare secunda, iar la ''​FILE_SAVE_INTERVAL''​ secunde, se vor scrie date in cardul SD.
  
-float sum_y = 0.0; +{{ :pm:prj2024:​iotelea:​seismograf_-_timer.png?​direct&​600 |}}
- +
- +
-float sum_z = 0.0; +
- +
- +
-float c_x = 0, c_y = 0, c_z = 0; +
- +
- +
-float y_x = 0, y_y = 0, y_z = 0; +
- +
- +
-float t_x = 0, t_y = 0, t_z = 0; +
- +
- +
-//  Kahan summation, courtesy of Wikipediahttps://en.wikipedia.org/​wiki/​Kahan_summation_algorithm#​The_algorithm +
-for (int i = 0; i < SAMPLE_SIZE;​ i++) { +
- +
- +
-  read_data();​ +
- +
- +
-  y_x = x_out + c_x; +
-   +
-   +
-  t_x = sum_x + y_x; +
-   +
-   +
-  c_x = (t_x - sum_x) - y_x; +
-   +
-   +
-  sum_x = t_x; +
- +
- +
-  y_y = y_out + c_y; +
-   +
-  t_y = sum_y + y_y; +
-   +
-  c_y = (t_y - sum_y) - y_y; +
-   +
-  sum_y = t_y; +
- +
-  y_z = z_out + c_z; +
-   +
-  t_z = sum_z + y_z; +
-   +
-  c_z = (t_z - sum_z) - y_z; +
-   +
-  sum_z = t_z; +
-} +
- +
-x_initial = sum_x / SAMPLE_SIZE;​ +
- +
-y_initial = sum_y / SAMPLE_SIZE;​ +
- +
-z_initial = sum_z / SAMPLE_SIZE;​ +
-''​ +
- +
-Pe langa procesul de calibrare, in setup se initializeaza si timer-ul 1, care va emite o intrerupere software la fiecare secunda, iar la ''​FILE_SAVE_INTERVAL''​ secunde, se vor scrie date in cardul SD.+
  
 LED-ul se va aprinde pentru a semnala scrierea datelor pe card, pentru ca acesta sa nu fie scos din slot, ceea ce ar risca coruperea cardului. LED-ul se va stinge cand datele au fost scrise si fisierul inchis. LED-ul se va aprinde pentru a semnala scrierea datelor pe card, pentru ca acesta sa nu fie scos din slot, ceea ce ar risca coruperea cardului. LED-ul se va stinge cand datele au fost scrise si fisierul inchis.
Line 123: Line 65:
 In vederea scrierii datelor in cardul SD, masuratorile sunt pastrate in 4 buffere de 20 de valori fiecare, care vor stoca valorile acceleratiilor pe cele 3 axe, precum si magnitudinea vectorului V = X + Y + Z, unde X, Y si Z sunt vectorii ce reprezinta acceleratiile pe cele 3 axe. In vederea scrierii datelor in cardul SD, masuratorile sunt pastrate in 4 buffere de 20 de valori fiecare, care vor stoca valorile acceleratiilor pe cele 3 axe, precum si magnitudinea vectorului V = X + Y + Z, unde X, Y si Z sunt vectorii ce reprezinta acceleratiile pe cele 3 axe.
  
 +{{ :​pm:​prj2024:​iotelea:​seismograf_-_buffere.png?​direct&​600 |}}
  
 ===== Concluzii ===== ===== Concluzii =====
pm/prj2024/iotelea/dragos.filipescu.1716898281.txt.gz · Last modified: 2024/05/28 15:11 by dragos.filipescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0