Modifications

81 octets supprimés ,  22 mars 2021 à 18:53
Ligne 320 : Ligne 320 :  
En ce qui concerne la valeur de la tension de la batterie, il faut récupérer cette valeur sur le bus CAN1 car cette valeur est gérée par une autre STM32 qui communique avec notre STM32 par bus CAN. La communication n'étant pas encore en place, nous ne pouvons pas encore récupérer la valeur de tension. Mais nous avons mis tout en place pour implémenter cette fonctionnalité. <br>
 
En ce qui concerne la valeur de la tension de la batterie, il faut récupérer cette valeur sur le bus CAN1 car cette valeur est gérée par une autre STM32 qui communique avec notre STM32 par bus CAN. La communication n'étant pas encore en place, nous ne pouvons pas encore récupérer la valeur de tension. Mais nous avons mis tout en place pour implémenter cette fonctionnalité. <br>
 
*Afin d'obtenir les différentes données à envoyer, à savoir la vitesse, la distance parcourue, ainsi que la position (x,y) du robot, nous devons mettre en place des calculs spécifiques. On notera que l'on ne peut pas reset les encodeurs car ceux ci servent aussi à asservir les moteurs du robot en position. On va donc d'abord mettre en place quelques lignes permettant de faire nos calculs comme si nous avions un reset des encodeurs : <br>
 
*Afin d'obtenir les différentes données à envoyer, à savoir la vitesse, la distance parcourue, ainsi que la position (x,y) du robot, nous devons mettre en place des calculs spécifiques. On notera que l'on ne peut pas reset les encodeurs car ceux ci servent aussi à asservir les moteurs du robot en position. On va donc d'abord mettre en place quelques lignes permettant de faire nos calculs comme si nous avions un reset des encodeurs : <br>
(lignes de code) <br>
+
(lignes de code RESET) <br>
 
On en vient maintenant aux calculs en eux même. Pour la distance totale parcourue, on met en place des variables qui calculent le cumul des incréments des encodeurs depuis le démarrage du robot, on calcule ensuite la moyenne des valeurs (des 2 encodeurs) afin d'obtenir la distance parcourue par le centre du robot. Finalement, on vient multiplier cette résultante par 2xpixR/incr (incr étant le nombre incréments de l'encodeurs lorsqu'il effectue un tour et R le rayon des encodeurs) : <br>
 
On en vient maintenant aux calculs en eux même. Pour la distance totale parcourue, on met en place des variables qui calculent le cumul des incréments des encodeurs depuis le démarrage du robot, on calcule ensuite la moyenne des valeurs (des 2 encodeurs) afin d'obtenir la distance parcourue par le centre du robot. Finalement, on vient multiplier cette résultante par 2xpixR/incr (incr étant le nombre incréments de l'encodeurs lorsqu'il effectue un tour et R le rayon des encodeurs) : <br>
 
  distRd = distRd + encRd;   
 
  distRd = distRd + encRd;   
Ligne 333 : Ligne 333 :  
  posx = (cos(angle)*dist)+posx;  //posx en mm   
 
  posx = (cos(angle)*dist)+posx;  //posx en mm   
 
  posy = (sin(angle)*dist)+posy;  //posy en mm   
 
  posy = (sin(angle)*dist)+posy;  //posy en mm   
*(parler des différentes lignes de code : sprintf, hal_uart_transmit, osDelay(200)...) On en vient maintenant à l'envoie des données. On commence par concaténer nos valeurs à envoyer dans des buffer char grâce à la fonction sprintf :  <br>
+
*On en vient maintenant à l'envoie des données. On commence par concaténer nos valeurs à envoyer dans des buffer char grâce à la fonction sprintf :  <br>
 
  sprintf(buff_enco,"%5d",(int)distTot);    // distance parcourue en mm   
 
  sprintf(buff_enco,"%5d",(int)distTot);    // distance parcourue en mm   
 
  sprintf(buff_tens,"%5d",(int)Voltage);    // pas encore opérationnel   
 
  sprintf(buff_tens,"%5d",(int)Voltage);    // pas encore opérationnel   
143

modifications