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
Diff: user.h
- Revision:
- 0:798c7207505d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user.h Tue May 31 13:40:28 2022 +0000 @@ -0,0 +1,123 @@ +/******************************************************************************* + user.h -> fichier de fonctions + + Gestion des 2 DELs de la carte CPU + Mesure tension batterie + Mesure courant panneaux solaires + Mesure température +*******************************************************************************/ +// Initialistion du µC, Tests divers +/** +* @param null +*/ +void Init_System(void) { +// Hello World + pc.printf("\r\nIniSat V2 : TP5\r\n\n"); + +// Test de l'horloge Systeme +// pc.printf("Horloge CPU a %d Hz\r\n", SystemCoreClock); + + xbee.baud(38400); +} +/******************************************************************************/ +// Gestion des 2 Dels de la carte CPU +Ticker Compteur_Led; +uint16_t cmpt_led; +uint8_t etat_led; +enum {Off, Ro, Ve, Ro_Ve} couleur; + +void Tache_Cmpt_Led(void) { + cmpt_led++; + if(cmpt_led >= 100) { // Période : 1 sec + cmpt_led = 0; + DEL_R = etat_led & 1; + } + else if(cmpt_led == 5) { + DEL_R = 0; + } + else if(cmpt_led == 50) { + DEL_V = etat_led & 2; + } + else if(cmpt_led == 60) { + DEL_V = 0; + } +} + +void Init_Led(void) { + cmpt_led = 0; + etat_led = 0; + Compteur_Led.attach(&Tache_Cmpt_Led,0.01); // 10ms +} + +void Start_Led(void) { + Compteur_Led.attach(&Tache_Cmpt_Led,0.01); // 10ms +} + +void Stop_Led(void) { + Compteur_Led.detach(); +} + +void Set_Led(uint8_t couleur) { + etat_led = couleur; +} +/******************************************************************************/ +// Mesure de la tension de la batterie +float mes_bat; + +float Mes_Bat(void) { + + mes_bat = batin.read()*4.59f + 0.31f; // 3.3 x 13.9/10 + 310mV(D2 carte EPS) + return mes_bat; +} + +void Envoi_Mes_Bat(void) { + + pc.printf("BAT: %.2f V\n",mes_bat); // Format pour Terminal (Putty) +// pc.printf("B%.2f\n",mes_bat); // Format pour Serial Data Plotter +} +/******************************************************************************/ +// Mesure des courants des 2 panneaux solaires +float mes_sp1, mes_sp2; + +void Mes_SP(void) { + + mes_sp1 = sp_1in.read()*165.0f; // 3.3 x 50 + mes_sp2 = sp_2in.read()*165.0f; // 3.3 x 50 +} + +void Envoi_Mes_SP(void) { + + pc.printf("SP1: %.1f mA\tSP2: %.1f mA\n",mes_sp1,mes_sp2); +} +/******************************************************************************/ +// Fonction pour initialiser les fonctions précédentes + +void Init_User_Fonctions(void) { + + ctrl_reg = 1; // Pour mettre sous tension le moniteur de courant des Solar Panels + Init_Led(); +} +// Fonction pour stopper les fonctions précédentes + +void Stop_User_Fonctions(void) { + + ctrl_reg = 0; + Stop_Led(); +} +/******************************************************************************/ +// Mesure de la température +float mes_temp; + +void Mes_Temp(void) { + + mes_temp = (tempin.read()*3.3f-0.5f)/0.01f; // 3.3 x -500mV +} + +void Envoi_Mes_Temp(void) { + + pc.printf("Temp: %.1f degC\r\n",mes_temp); // Mesure directe +// pc.printf("%.1f\n",mes_temp); // Supervision -> Format pour Serial Data Plotter +} +/******************************************************************************/ + + \ No newline at end of file