IniSat Modèle 1 Version 2 TP 3 : Gestion des données Exo 1 : Lecture tension batterie Exo 2 : Lecture courants faces solaires Exo 3 : Modes de fonctionnement
user.h@0:5cee4b7380b2, 2021-07-06 (annotated)
- Committer:
- Giamarchi
- Date:
- Tue Jul 06 12:47:20 2021 +0000
- Revision:
- 0:5cee4b7380b2
Revision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Giamarchi | 0:5cee4b7380b2 | 1 | /******************************************************************************* |
Giamarchi | 0:5cee4b7380b2 | 2 | user.h -> fichier de fonctions |
Giamarchi | 0:5cee4b7380b2 | 3 | |
Giamarchi | 0:5cee4b7380b2 | 4 | Gestion des 2 DELs de la carte CPU |
Giamarchi | 0:5cee4b7380b2 | 5 | Mesure tension batterie |
Giamarchi | 0:5cee4b7380b2 | 6 | Mesure courant panneaux solaires |
Giamarchi | 0:5cee4b7380b2 | 7 | *******************************************************************************/ |
Giamarchi | 0:5cee4b7380b2 | 8 | // Initialistion du µC, Tests divers |
Giamarchi | 0:5cee4b7380b2 | 9 | /** |
Giamarchi | 0:5cee4b7380b2 | 10 | * @param null |
Giamarchi | 0:5cee4b7380b2 | 11 | */ |
Giamarchi | 0:5cee4b7380b2 | 12 | void Init_System(void) { |
Giamarchi | 0:5cee4b7380b2 | 13 | // Hello World |
Giamarchi | 0:5cee4b7380b2 | 14 | pc.printf("\r\nIniSat V2 : TP3\r\n\n"); |
Giamarchi | 0:5cee4b7380b2 | 15 | |
Giamarchi | 0:5cee4b7380b2 | 16 | // Test de l'horloge Systeme |
Giamarchi | 0:5cee4b7380b2 | 17 | // pc.printf("Horloge CPU a %d Hz\r\n", SystemCoreClock); |
Giamarchi | 0:5cee4b7380b2 | 18 | } |
Giamarchi | 0:5cee4b7380b2 | 19 | /******************************************************************************/ |
Giamarchi | 0:5cee4b7380b2 | 20 | // Gestion des 2 Dels de la carte CPU |
Giamarchi | 0:5cee4b7380b2 | 21 | Ticker Compteur_Led; |
Giamarchi | 0:5cee4b7380b2 | 22 | uint16_t cmpt_led; |
Giamarchi | 0:5cee4b7380b2 | 23 | uint8_t etat_led; |
Giamarchi | 0:5cee4b7380b2 | 24 | enum {Off, Ro, Ve, Ro_Ve} couleur; |
Giamarchi | 0:5cee4b7380b2 | 25 | |
Giamarchi | 0:5cee4b7380b2 | 26 | void Tache_Cmpt_Led(void) { |
Giamarchi | 0:5cee4b7380b2 | 27 | cmpt_led++; |
Giamarchi | 0:5cee4b7380b2 | 28 | if(cmpt_led >= 100) { // Période : 1 sec |
Giamarchi | 0:5cee4b7380b2 | 29 | cmpt_led = 0; |
Giamarchi | 0:5cee4b7380b2 | 30 | DEL_R = etat_led & 1; |
Giamarchi | 0:5cee4b7380b2 | 31 | } |
Giamarchi | 0:5cee4b7380b2 | 32 | else if(cmpt_led == 5) { |
Giamarchi | 0:5cee4b7380b2 | 33 | DEL_R = 0; |
Giamarchi | 0:5cee4b7380b2 | 34 | } |
Giamarchi | 0:5cee4b7380b2 | 35 | else if(cmpt_led == 50) { |
Giamarchi | 0:5cee4b7380b2 | 36 | DEL_V = etat_led & 2; |
Giamarchi | 0:5cee4b7380b2 | 37 | } |
Giamarchi | 0:5cee4b7380b2 | 38 | else if(cmpt_led == 60) { |
Giamarchi | 0:5cee4b7380b2 | 39 | DEL_V = 0; |
Giamarchi | 0:5cee4b7380b2 | 40 | } |
Giamarchi | 0:5cee4b7380b2 | 41 | } |
Giamarchi | 0:5cee4b7380b2 | 42 | |
Giamarchi | 0:5cee4b7380b2 | 43 | void Init_Led(void) { |
Giamarchi | 0:5cee4b7380b2 | 44 | cmpt_led = 0; |
Giamarchi | 0:5cee4b7380b2 | 45 | etat_led = 0; |
Giamarchi | 0:5cee4b7380b2 | 46 | Compteur_Led.attach(&Tache_Cmpt_Led,0.01); // 10ms |
Giamarchi | 0:5cee4b7380b2 | 47 | } |
Giamarchi | 0:5cee4b7380b2 | 48 | |
Giamarchi | 0:5cee4b7380b2 | 49 | void Stop_Led(void) { |
Giamarchi | 0:5cee4b7380b2 | 50 | DEL_R = 0; |
Giamarchi | 0:5cee4b7380b2 | 51 | DEL_V = 0; |
Giamarchi | 0:5cee4b7380b2 | 52 | Compteur_Led.detach(); |
Giamarchi | 0:5cee4b7380b2 | 53 | } |
Giamarchi | 0:5cee4b7380b2 | 54 | |
Giamarchi | 0:5cee4b7380b2 | 55 | void Set_Led(uint8_t couleur) { |
Giamarchi | 0:5cee4b7380b2 | 56 | etat_led = couleur; |
Giamarchi | 0:5cee4b7380b2 | 57 | } |
Giamarchi | 0:5cee4b7380b2 | 58 | /******************************************************************************/ |
Giamarchi | 0:5cee4b7380b2 | 59 | // Mesure de la tension de la batterie |
Giamarchi | 0:5cee4b7380b2 | 60 | float mes_bat; |
Giamarchi | 0:5cee4b7380b2 | 61 | |
Giamarchi | 0:5cee4b7380b2 | 62 | float Mes_Bat(void) { |
Giamarchi | 0:5cee4b7380b2 | 63 | |
Giamarchi | 0:5cee4b7380b2 | 64 | mes_bat = batin.read()*4.59f + 0.31f; // 3.3 x 13.9/10 + 310mV(D2 carte EPS) |
Giamarchi | 0:5cee4b7380b2 | 65 | return mes_bat; |
Giamarchi | 0:5cee4b7380b2 | 66 | } |
Giamarchi | 0:5cee4b7380b2 | 67 | |
Giamarchi | 0:5cee4b7380b2 | 68 | void Envoi_Mes_Bat(void) { |
Giamarchi | 0:5cee4b7380b2 | 69 | |
Giamarchi | 0:5cee4b7380b2 | 70 | pc.printf("BAT: %.2f V\n",mes_bat); // Format pour Terminal (Putty) |
Giamarchi | 0:5cee4b7380b2 | 71 | // pc.printf("B%.2f\n",mes_bat); // Format pour Serial Data Plotter |
Giamarchi | 0:5cee4b7380b2 | 72 | } |
Giamarchi | 0:5cee4b7380b2 | 73 | /******************************************************************************/ |
Giamarchi | 0:5cee4b7380b2 | 74 | // Mesure des courants des 2 panneaux solaires |
Giamarchi | 0:5cee4b7380b2 | 75 | float mes_sp1, mes_sp2; |
Giamarchi | 0:5cee4b7380b2 | 76 | |
Giamarchi | 0:5cee4b7380b2 | 77 | void Mes_SP(void) { |
Giamarchi | 0:5cee4b7380b2 | 78 | |
Giamarchi | 0:5cee4b7380b2 | 79 | mes_sp1 = sp_1in.read()*165.0; // 3.3 x 50 |
Giamarchi | 0:5cee4b7380b2 | 80 | mes_sp2 = sp_2in.read()*165.0; // 3.3 x 50 |
Giamarchi | 0:5cee4b7380b2 | 81 | } |
Giamarchi | 0:5cee4b7380b2 | 82 | |
Giamarchi | 0:5cee4b7380b2 | 83 | void Envoi_Mes_SP(void) { |
Giamarchi | 0:5cee4b7380b2 | 84 | |
Giamarchi | 0:5cee4b7380b2 | 85 | pc.printf("SP1: %.1f mA\tSP2: %.1f mA\n",mes_sp1,mes_sp2); |
Giamarchi | 0:5cee4b7380b2 | 86 | } |
Giamarchi | 0:5cee4b7380b2 | 87 | /******************************************************************************/ |
Giamarchi | 0:5cee4b7380b2 | 88 | // Fonction pour initialiser les fonctions précédentes |
Giamarchi | 0:5cee4b7380b2 | 89 | |
Giamarchi | 0:5cee4b7380b2 | 90 | void Init_User_Fonctions(void) { |
Giamarchi | 0:5cee4b7380b2 | 91 | |
Giamarchi | 0:5cee4b7380b2 | 92 | ctrl_reg = 1; // Pour mettre sous tension le moniteur de courant des Solar Panels |
Giamarchi | 0:5cee4b7380b2 | 93 | Init_Led(); |
Giamarchi | 0:5cee4b7380b2 | 94 | } |
Giamarchi | 0:5cee4b7380b2 | 95 | // Fonction pour stopper les fonctions précédentes |
Giamarchi | 0:5cee4b7380b2 | 96 | |
Giamarchi | 0:5cee4b7380b2 | 97 | void Stop_User_Fonctions(void) { |
Giamarchi | 0:5cee4b7380b2 | 98 | |
Giamarchi | 0:5cee4b7380b2 | 99 | ctrl_reg = 0; |
Giamarchi | 0:5cee4b7380b2 | 100 | Stop_Led(); |
Giamarchi | 0:5cee4b7380b2 | 101 | } |
Giamarchi | 0:5cee4b7380b2 | 102 | /******************************************************************************/ |