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

Committer:
Giamarchi
Date:
Tue Jul 06 12:47:20 2021 +0000
Revision:
0:5cee4b7380b2
Revision

Who changed what in which revision?

UserRevisionLine numberNew 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 /******************************************************************************/