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