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
user.h@0:8b4bad2aad3f, 2021-06-30 (annotated)
- Committer:
- Giamarchi
- Date:
- Wed Jun 30 22:33:54 2021 +0000
- Revision:
- 0:8b4bad2aad3f
TP4 Trame
Who changed what in which revision?
User | Revision | Line number | New 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 |