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:14]
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 Wikipedia:''​ +
- +
-''​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 113: 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.1716898440.txt.gz · Last modified: 2024/05/28 15:14 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