IniSat Modèle 1 Version 2 TP 4 : Etude d'un capteur Exo 1 : Lecture température Exo 2 : GPS, décodage données GGA

Committer:
Giamarchi
Date:
Wed Jun 30 22:59:26 2021 +0000
Revision:
1:ec64d7748431
Parent:
0:8b4bad2aad3f
Publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Giamarchi 0:8b4bad2aad3f 1 /*******************************************************************************
Giamarchi 0:8b4bad2aad3f 2 user.h -> fichier de fonctions
Giamarchi 0:8b4bad2aad3f 3
Giamarchi 0:8b4bad2aad3f 4 Gestion des 2 DELs de la carte CPU
Giamarchi 0:8b4bad2aad3f 5 Mesure tension batterie
Giamarchi 0:8b4bad2aad3f 6 Mesure courant panneaux solaires
Giamarchi 0:8b4bad2aad3f 7 Mesure température
Giamarchi 0:8b4bad2aad3f 8 *******************************************************************************/
Giamarchi 0:8b4bad2aad3f 9 // Initialistion du µC, Tests divers
Giamarchi 0:8b4bad2aad3f 10 /**
Giamarchi 0:8b4bad2aad3f 11 * @param null
Giamarchi 0:8b4bad2aad3f 12 */
Giamarchi 0:8b4bad2aad3f 13 void Init_System(void) {
Giamarchi 0:8b4bad2aad3f 14 // Hello World
Giamarchi 0:8b4bad2aad3f 15 pc.printf("\r\nIniSat V2 : TP4\r\n\n");
Giamarchi 0:8b4bad2aad3f 16
Giamarchi 0:8b4bad2aad3f 17 // Test de l'horloge Systeme
Giamarchi 0:8b4bad2aad3f 18 // pc.printf("Horloge CPU a %d Hz\r\n", SystemCoreClock);
Giamarchi 0:8b4bad2aad3f 19 }
Giamarchi 0:8b4bad2aad3f 20 /******************************************************************************/
Giamarchi 0:8b4bad2aad3f 21 // Gestion des 2 Dels de la carte CPU
Giamarchi 0:8b4bad2aad3f 22 Ticker Compteur_Led;
Giamarchi 0:8b4bad2aad3f 23 uint16_t cmpt_led;
Giamarchi 0:8b4bad2aad3f 24 uint8_t etat_led;
Giamarchi 0:8b4bad2aad3f 25 enum {Off, Ro, Ve, Ro_Ve} couleur;
Giamarchi 0:8b4bad2aad3f 26
Giamarchi 0:8b4bad2aad3f 27 void Tache_Cmpt_Led(void) {
Giamarchi 0:8b4bad2aad3f 28 cmpt_led++;
Giamarchi 0:8b4bad2aad3f 29 if(cmpt_led >= 100) { // Période : 1 sec
Giamarchi 0:8b4bad2aad3f 30 cmpt_led = 0;
Giamarchi 0:8b4bad2aad3f 31 DEL_R = etat_led & 1;
Giamarchi 0:8b4bad2aad3f 32 }
Giamarchi 0:8b4bad2aad3f 33 else if(cmpt_led == 5) {
Giamarchi 0:8b4bad2aad3f 34 DEL_R = 0;
Giamarchi 0:8b4bad2aad3f 35 }
Giamarchi 0:8b4bad2aad3f 36 else if(cmpt_led == 50) {
Giamarchi 0:8b4bad2aad3f 37 DEL_V = etat_led & 2;
Giamarchi 0:8b4bad2aad3f 38 }
Giamarchi 0:8b4bad2aad3f 39 else if(cmpt_led == 60) {
Giamarchi 0:8b4bad2aad3f 40 DEL_V = 0;
Giamarchi 0:8b4bad2aad3f 41 }
Giamarchi 0:8b4bad2aad3f 42 }
Giamarchi 0:8b4bad2aad3f 43
Giamarchi 0:8b4bad2aad3f 44 void Init_Led(void) {
Giamarchi 0:8b4bad2aad3f 45 cmpt_led = 0;
Giamarchi 0:8b4bad2aad3f 46 etat_led = 0;
Giamarchi 0:8b4bad2aad3f 47 Compteur_Led.attach(&Tache_Cmpt_Led,0.01); // 10ms
Giamarchi 0:8b4bad2aad3f 48 }
Giamarchi 0:8b4bad2aad3f 49
Giamarchi 0:8b4bad2aad3f 50 void Start_Led(void) {
Giamarchi 0:8b4bad2aad3f 51 Compteur_Led.attach(&Tache_Cmpt_Led,0.01); // 10ms
Giamarchi 0:8b4bad2aad3f 52 }
Giamarchi 0:8b4bad2aad3f 53
Giamarchi 0:8b4bad2aad3f 54 void Stop_Led(void) {
Giamarchi 0:8b4bad2aad3f 55 Compteur_Led.detach();
Giamarchi 0:8b4bad2aad3f 56 }
Giamarchi 0:8b4bad2aad3f 57
Giamarchi 0:8b4bad2aad3f 58 void Set_Led(uint8_t couleur) {
Giamarchi 0:8b4bad2aad3f 59 etat_led = couleur;
Giamarchi 0:8b4bad2aad3f 60 }
Giamarchi 0:8b4bad2aad3f 61 /******************************************************************************/
Giamarchi 0:8b4bad2aad3f 62 // Mesure de la tension de la batterie
Giamarchi 0:8b4bad2aad3f 63 float mes_bat;
Giamarchi 0:8b4bad2aad3f 64
Giamarchi 0:8b4bad2aad3f 65 float Mes_Bat(void) {
Giamarchi 0:8b4bad2aad3f 66
Giamarchi 0:8b4bad2aad3f 67 mes_bat = batin.read()*4.59f + 0.31f; // 3.3 x 13.9/10 + 310mV(D2 carte EPS)
Giamarchi 0:8b4bad2aad3f 68 return mes_bat;
Giamarchi 0:8b4bad2aad3f 69 }
Giamarchi 0:8b4bad2aad3f 70
Giamarchi 0:8b4bad2aad3f 71 void Envoi_Mes_Bat(void) {
Giamarchi 0:8b4bad2aad3f 72
Giamarchi 0:8b4bad2aad3f 73 pc.printf("BAT: %.2f V\n",mes_bat); // Format pour Terminal (Putty)
Giamarchi 0:8b4bad2aad3f 74 // pc.printf("B%.2f\n",mes_bat); // Format pour Serial Data Plotter
Giamarchi 0:8b4bad2aad3f 75 }
Giamarchi 0:8b4bad2aad3f 76 /******************************************************************************/
Giamarchi 0:8b4bad2aad3f 77 // Mesure des courants des 2 panneaux solaires
Giamarchi 0:8b4bad2aad3f 78 float mes_sp1, mes_sp2;
Giamarchi 0:8b4bad2aad3f 79
Giamarchi 0:8b4bad2aad3f 80 void Mes_SP(void) {
Giamarchi 0:8b4bad2aad3f 81
Giamarchi 0:8b4bad2aad3f 82 mes_sp1 = sp_1in.read()*165.0; // 3.3 x 50
Giamarchi 0:8b4bad2aad3f 83 mes_sp2 = sp_2in.read()*165.0; // 3.3 x 50
Giamarchi 0:8b4bad2aad3f 84 }
Giamarchi 0:8b4bad2aad3f 85
Giamarchi 0:8b4bad2aad3f 86 void Envoi_Mes_SP(void) {
Giamarchi 0:8b4bad2aad3f 87
Giamarchi 0:8b4bad2aad3f 88 pc.printf("SP1: %.1f mA\tSP2: %.1f mA\n",mes_sp1,mes_sp2);
Giamarchi 0:8b4bad2aad3f 89 }
Giamarchi 0:8b4bad2aad3f 90 /******************************************************************************/
Giamarchi 0:8b4bad2aad3f 91 // Fonction pour initialiser les fonctions précédentes
Giamarchi 0:8b4bad2aad3f 92
Giamarchi 0:8b4bad2aad3f 93 void Init_User_Fonctions(void) {
Giamarchi 0:8b4bad2aad3f 94
Giamarchi 0:8b4bad2aad3f 95 ctrl_reg = 1; // Pour mettre sous tension le moniteur de courant des Solar Panels
Giamarchi 0:8b4bad2aad3f 96 Init_Led();
Giamarchi 0:8b4bad2aad3f 97 }
Giamarchi 0:8b4bad2aad3f 98 // Fonction pour stopper les fonctions précédentes
Giamarchi 0:8b4bad2aad3f 99
Giamarchi 0:8b4bad2aad3f 100 void Stop_User_Fonctions(void) {
Giamarchi 0:8b4bad2aad3f 101
Giamarchi 0:8b4bad2aad3f 102 ctrl_reg = 0;
Giamarchi 0:8b4bad2aad3f 103 Stop_Led();
Giamarchi 0:8b4bad2aad3f 104 }
Giamarchi 0:8b4bad2aad3f 105 /******************************************************************************/
Giamarchi 0:8b4bad2aad3f 106 // Mesure de la température
Giamarchi 0:8b4bad2aad3f 107 float mes_temp;
Giamarchi 0:8b4bad2aad3f 108
Giamarchi 0:8b4bad2aad3f 109 void Mes_Temp(void) {
Giamarchi 0:8b4bad2aad3f 110
Giamarchi 0:8b4bad2aad3f 111 mes_temp = (tempin.read()*3.3f-0.5f)/0.01f; // 3.3 x -500mV
Giamarchi 0:8b4bad2aad3f 112 }
Giamarchi 0:8b4bad2aad3f 113
Giamarchi 0:8b4bad2aad3f 114 void Envoi_Mes_Temp(void) {
Giamarchi 0:8b4bad2aad3f 115
Giamarchi 0:8b4bad2aad3f 116 pc.printf("Temp: %.1f degC\r\n",mes_temp); // Mesure directe
Giamarchi 0:8b4bad2aad3f 117 // pc.printf("%.1f\n",mes_temp); // Supervision -> Format pour Serial Data Plotter
Giamarchi 0:8b4bad2aad3f 118 }
Giamarchi 0:8b4bad2aad3f 119 /******************************************************************************/
Giamarchi 0:8b4bad2aad3f 120