Modifications

1 730 octets ajoutés ,  29 mars 2021 à 15:53
aucun résumé de modification
Ligne 2 : Ligne 2 :  
Dans le cadre de notre projet de fin d'étude, nous avons choisi de travailler sur l'amélioration des robots de Polybot, le club de robotique de Polytech Grenoble, dans l'objectif de participer à la Coupe de France de Robotique 2021.
 
Dans le cadre de notre projet de fin d'étude, nous avons choisi de travailler sur l'amélioration des robots de Polybot, le club de robotique de Polytech Grenoble, dans l'objectif de participer à la Coupe de France de Robotique 2021.
 
Après réflexion et discussion avec les autres groupes et notre tuteur, nous avons décidé d'apporter des améliorations aux robots via deux sous-projets que vous découvrirez plus en détail dans la suite de ce rapport : la création d'une nouvelle carte de puissance et l'affichage des données en temps-réel concernant le robot.
 
Après réflexion et discussion avec les autres groupes et notre tuteur, nous avons décidé d'apporter des améliorations aux robots via deux sous-projets que vous découvrirez plus en détail dans la suite de ce rapport : la création d'une nouvelle carte de puissance et l'affichage des données en temps-réel concernant le robot.
 +
 +
Si vous souhaitez reprendre une partie du projet, nous avons rédigé un document tuto expliquant en détail comment nous avons réalisé le projet et comment reproduire ou modifier certaines étapes : [[Projet_5A_2020_2021/Tuto utilisation et modification|Tutoriel d’utilisation]].
 
<br>
 
<br>
 
<br>
 
<br>
Ligne 188 : Ligne 190 :  
<br>
 
<br>
 
'''Liste des composants'''<br>
 
'''Liste des composants'''<br>
 
+
{| class="wikitable"
 +
|-
 +
! Description !! Réferences !! Lien
 +
|-
 +
| Relais || HF118F || https://fr.rs-online.com/web/p/relais-sans-accrochage/1762821/
 +
|-
 +
| Transistors NMOS || IRLML2402TRPBF || https://fr.farnell.com/infineon/irlml2402pbf/transistor-mosfet-canal-n-logique/dp/9102710
 +
|-
 +
| Convertisseur 5V - 3A || Buck Converter || https://www.dfrobot.com/product-1552.html
 +
|-
 +
| Convertisseur 5V - 4A || JCK2012S05 || https://fr.farnell.com/xp-power/jck2012s05/converter-dc-dc-20w-5v/dp/1738247
 +
|-
 +
| Convertisseur 12V - 4A || JCK5012S12 || https://www.mouser.fr/ProductDetail/XP-Power/JCK5012S12?qs=w%2Fv1CP2dgqouNLoOdGyFaQ%3D%3D
 +
|-
 +
| Connecteurs XT60 pcb femelle || RS PRO || https://fr.rs-online.com/web/p/connecteurs-de-puissance-compacts/1805374/
 +
|-
 +
| Connecteurs XT60 Mâle || RS PRO || https://fr.rs-online.com/web/p/connecteurs-de-puissance-compacts/1805365/
 +
|-
 +
| Fusible 4A|| RS PRO || https://fr.rs-online.com/web/p/fusibles-cartouches/0563542/
 +
|-
 +
| Porte fusible || RS PRO || https://fr.rs-online.com/web/p/porte-fusible-pour-ci/6119302/
 +
|-
 +
| STM32 || Nucleo-F303K8 || https://fr.farnell.com/stmicroelectronics/nucleo-f303k8/carte-de-dev-nucleo-32-mcu/dp/2500224
 +
|-
 +
| Régulateur 5V || LM2937IMP-5.0 || https://fr.farnell.com/stmicroelectronics/nucleo-f303k8/carte-de-dev-nucleo-32-mcu/dp/2500224
 +
|-
 +
| CAN transceiver || SN65HVD ||
 +
|}
 
<br>
 
<br>
 
<br>
 
<br>
Ligne 197 : Ligne 226 :  
Dans un premier temps le  but de notre partie software est de récupérer la valeur précise de la batterie sur l’ADC pour pouvoir piloter les signaux d’alertes (led, buzzer) et ouvrir les circuits en fonction du niveau de décharge de la batterie.
 
Dans un premier temps le  but de notre partie software est de récupérer la valeur précise de la batterie sur l’ADC pour pouvoir piloter les signaux d’alertes (led, buzzer) et ouvrir les circuits en fonction du niveau de décharge de la batterie.
 
Ensuite nous souhaitons mettre en place un bus CAN pour communiquer avec la carte STM principale pour lui permettre de commander les relais via l'application développée par l'autre binôme de notre projet.
 
Ensuite nous souhaitons mettre en place un bus CAN pour communiquer avec la carte STM principale pour lui permettre de commander les relais via l'application développée par l'autre binôme de notre projet.
  −
   
<br>
 
<br>
'''Configuration de l’ADC '''<br>
+
<br>
 
+
'''Configuration de l’ADC'''
 +
<br>
 +
<br>
 
Dans un premier temps nous avons mit en place un pont diviseur directement relié a la patte de l’ADC (PA0) qui supporte une tension de 0V à 3,3V. La résolution de 12 bit nous donne donc une valeur de 0 à 4096 exploitable pour cette plage de tension. La décharge de la batterie compris entre 17V et 13V correspond à une variation de 2,87V à 2,19V soit de 3400 à 2685. L’ADC fonctionne en «polling mode» : Il démarre, charge un condensateur pendant 10 ms , lit puis stock cette valeur dans une variable puis s’arrête jusqu’à la prochaine boucle.                                     
 
Dans un premier temps nous avons mit en place un pont diviseur directement relié a la patte de l’ADC (PA0) qui supporte une tension de 0V à 3,3V. La résolution de 12 bit nous donne donc une valeur de 0 à 4096 exploitable pour cette plage de tension. La décharge de la batterie compris entre 17V et 13V correspond à une variation de 2,87V à 2,19V soit de 3400 à 2685. L’ADC fonctionne en «polling mode» : Il démarre, charge un condensateur pendant 10 ms , lit puis stock cette valeur dans une variable puis s’arrête jusqu’à la prochaine boucle.                                     
 
<br>
 
<br>
'''Configuration des timers '''<br>
+
<br>
 
+
'''Configuration des timers'''
 +
<br>
 +
<br> 
 
Pour piloter le buzzer et la led en fonction du niveau de la batterie, nous devons mettre en place des signaux PWM générés par des timers. Pour cela nous configurons l’horloge des timers à 16Mhz. CubeMX nous permet de régler ensuite le préscaler qui divise la fréquence. Ensuite il nous reste à régler le counter_périod qui est un registre de 16 bits qui compte de 0 à 65536, cela nous permet d’avoir la fréquence souhaitée. <br>
 
Pour piloter le buzzer et la led en fonction du niveau de la batterie, nous devons mettre en place des signaux PWM générés par des timers. Pour cela nous configurons l’horloge des timers à 16Mhz. CubeMX nous permet de régler ensuite le préscaler qui divise la fréquence. Ensuite il nous reste à régler le counter_périod qui est un registre de 16 bits qui compte de 0 à 65536, cela nous permet d’avoir la fréquence souhaitée. <br>
 
Pour le buzzer le préscaler est à 16 (1Mhz) et le  counter_périod est à 2272 pour donner un avertissement sonore en La (440hz) .
 
Pour le buzzer le préscaler est à 16 (1Mhz) et le  counter_périod est à 2272 pour donner un avertissement sonore en La (440hz) .
 
Pour la led nous avons un préscaler de 1000 (16khz) et un  counter_period de 8000 pour un clignotement de (2hz).  
 
Pour la led nous avons un préscaler de 1000 (16khz) et un  counter_period de 8000 pour un clignotement de (2hz).  
 
+
<br>
'''Signaux d’alerte et coupure des circuits en fonction de la décharge de la batterie '''<br>
+
<br>
 +
'''Signaux d’alerte et coupure des circuits en fonction de la décharge de la batterie'''
 +
<br>
 +
<br>
 +
[[Fichier:Configuration CubeMX|vignette|droite|Configuration CubeMX STM32F303K8]]
    
{| class="wikitable"
 
{| class="wikitable"
Ligne 280 : Ligne 315 :  
Cette carte ayant beaucoup de composants CMS, nous pouvons directement choisir l'option de JLC PCB: ils peuvent souder tous les composants CMS de la carte. C'est très pratique car pour souder la STM à la carte, ça risque d'être très complexe. Ainsi dans cette optique on configure les fichiers .BOM (Bill of Materials) avec la colonne LCSC remplie avec les noms de composants de la librairie de composants de JLC PCB. On Génère aussi un fichier de placement des composants, pour qu'ils puissent les placer au bon endroit et dans le bon sens. Ces fichiers sont dans le GIT, dans le répertoire "assembly" du projet KiCad de notre branche "Power Module".
 
Cette carte ayant beaucoup de composants CMS, nous pouvons directement choisir l'option de JLC PCB: ils peuvent souder tous les composants CMS de la carte. C'est très pratique car pour souder la STM à la carte, ça risque d'être très complexe. Ainsi dans cette optique on configure les fichiers .BOM (Bill of Materials) avec la colonne LCSC remplie avec les noms de composants de la librairie de composants de JLC PCB. On Génère aussi un fichier de placement des composants, pour qu'ils puissent les placer au bon endroit et dans le bon sens. Ces fichiers sont dans le GIT, dans le répertoire "assembly" du projet KiCad de notre branche "Power Module".
 
Ci-dessous, on peut voir la vue 3D de la nouvelle carte:
 
Ci-dessous, on peut voir la vue 3D de la nouvelle carte:
[[Fichier:2e carte 3D|vignette|centré|Vue 3D de la carte compacte]]
+
[[Fichier:Carte 3D - Copie.png|vignette|centré|Vue 3D de la carte intégrée]]
    
==Projet 2 : Écran de contrôle==
 
==Projet 2 : Écran de contrôle==
Ligne 375 : Ligne 410 :  
<br>
 
<br>
 
Quand on initialise la liaison (il faut le faire du côté émetteur et aussi du côté récepteur), il faut initialiser de façon cohérente des deux côtés de la liaison. En particulier, il faut régler la vitesse de transmission sur l’une des vitesses standard (le Baudrate).
 
Quand on initialise la liaison (il faut le faire du côté émetteur et aussi du côté récepteur), il faut initialiser de façon cohérente des deux côtés de la liaison. En particulier, il faut régler la vitesse de transmission sur l’une des vitesses standard (le Baudrate).
Pou ce projet, nous allons utiliser un baudrate de 9600 qui correspond à 9600 bits par seconde. C’est suffisamment rapide pour que la transmission de quelques chaînes de caractères assez courtes semble instantanée, et suffisamment lent pour permettre au code STM de tourner. Durant les derniers jours du projet, nous avons tenté de passer à un baudrate plus élevé afin d’accélérer l'envoie et l'affichage des données. En effet, nous avons remarqué que parfois les données s'accumulaient dans le module nous avons donc essayer de résoudre le problème avec ce changement de Baudrate. Malheureusement, le robot était défectueux durant les derniers jours du projet, nous n'avons donc pas eu le temps de tester cette modification. Nous tenterons quand même de la tester la semaine suivant la soutenance si le robot est réparé.
+
Pou ce projet, nous allons utiliser un baudrate de 9600 qui correspond à 9600 bits par seconde. C’est suffisamment rapide pour que la transmission de quelques chaînes de caractères assez courtes semble instantanée, et suffisamment lent pour permettre au code STM de tourner.  
    
<br>
 
<br>
Ligne 527 : Ligne 562 :  
=Résultats et bilan du projet=
 
=Résultats et bilan du projet=
 
==Résultat et performances==
 
==Résultat et performances==
*Pour le projet 1, nous avons pu tester le fonctionnement de la carte et tout marche parfaitement. Par exemple, lorsque l'on a branché sur notre carte une batterie à moins de 40% de sa puissance alors les LED et les buzzers l'ont bien signalé.
+
*Pour le projet 1, nous avons pu tester le fonctionnement de la carte et tout marche parfaitement. Par exemple, lorsque l'on a branché sur notre carte une batterie à moins de 30% de sa puissance alors les LED et les buzzers l'ont bien signalé. Après vérification de la tension de la batterie, on était bien dans la bonne fourchette de tension.
    
*Pour le  projet 2, nous avons réalisé un système fonctionnel qui récupère correctement les informations souhaitées et les affiche sur l'application Polybot. Cependant, nous nous sommes retrouvés limités concernant la fréquence d'affichage et d'envoi des données. Cela est peut être dû à l'application qui a été réalisé en Scratch (pas un code très précis) ou a un baudrate trop faible mais comme nous l’avons dit plus haut, nous n’avons pas eu le temps de tester nos solutions car le robot ne fonctionnait pas les derniers jours de projet. Pour le moment, une même donnée sera actualisée toutes les 0,8 secondes.  
 
*Pour le  projet 2, nous avons réalisé un système fonctionnel qui récupère correctement les informations souhaitées et les affiche sur l'application Polybot. Cependant, nous nous sommes retrouvés limités concernant la fréquence d'affichage et d'envoi des données. Cela est peut être dû à l'application qui a été réalisé en Scratch (pas un code très précis) ou a un baudrate trop faible mais comme nous l’avons dit plus haut, nous n’avons pas eu le temps de tester nos solutions car le robot ne fonctionnait pas les derniers jours de projet. Pour le moment, une même donnée sera actualisée toutes les 0,8 secondes.  
Ligne 535 : Ligne 570 :  
Voici les principales difficultés que nous avons rencontrées durant ce projet :  
 
Voici les principales difficultés que nous avons rencontrées durant ce projet :  
 
*Réalisation du diagramme de Gantt et avancement du projet : Par manque d'expérience nous ne connaissions pas toujours le temps nécessaire à la réalisation de chaque étape. Nous avons donc eu un peu de mal à respecter le diagramme de Gantt prévu. Nous avons également constaté que de nouvelles étapes arrivaient au fur et à mesure du projet, des étapes que nous n'avions pas prévu à la base. Globalement nous avons avancé très vite au début et beaucoup lentement sur la fin mais nous avons terminé à temps.<br>
 
*Réalisation du diagramme de Gantt et avancement du projet : Par manque d'expérience nous ne connaissions pas toujours le temps nécessaire à la réalisation de chaque étape. Nous avons donc eu un peu de mal à respecter le diagramme de Gantt prévu. Nous avons également constaté que de nouvelles étapes arrivaient au fur et à mesure du projet, des étapes que nous n'avions pas prévu à la base. Globalement nous avons avancé très vite au début et beaucoup lentement sur la fin mais nous avons terminé à temps.<br>
*Pour le projet 1, nous avons rencontré des difficultés lors de la première commande de composants car ils sont arrivés trop petits. Nous ne pouvions donc pas les souder sur la carte. Nous avons également eu des composants qui chauffaient énormément, mais nous avons résolu ce problème en ajoutant des dissipateurs thermiques. Enfin, nous avons été limités par les délai de commande des PCB. En effet, nous n'aurons pas le temps de réaliser nous-même la 2ème carte car celle ci n'est pas arrivée à temps.
+
*Pour le projet 1, lors de la première commande, nous avions commandé des transistors beaucoup trop petits (moins d'un millimètre de long), ce qui les rendait insoudables. Nous avions également commandé des convertisseurs de tension qui étaient tout simplement insoudables, car leur pad de soudure étaient en dessous du composant. Nous avons donc recomandés d'autres composants plus adéquats et de la bonne taille. Nous avons eu aussi pendant nos test, des composants qui chauffaient trop. On a pu pour certains changer le schéma à temps pour baisser la tension par exemple pour les relais, et on a mis un radiateur sur le convertisseur, ce qui le refroidit bien. Et enfin, les délais de commande de PCB nous retardaient pour pouvoir réaliser la carte, et surtout pour la deuxième.
 
*Pour le projet 2, nous n'avions pas réalisé que la gestion de petit bugs nous prendrait autant de temps. Par exemple, nous avons mis 3 ou 4 jours pour réaliser une certaine version du code pour la STM32, et cela nous a pris tout autant de temps pour réussir à intégrer ce code au code actuel du robot. Nous avons retrouvé ce problème à plusieurs étapes de ce projet. Nous pensions donc pouvoir finir en avance mais nous avons fini tout juste à temps.
 
*Pour le projet 2, nous n'avions pas réalisé que la gestion de petit bugs nous prendrait autant de temps. Par exemple, nous avons mis 3 ou 4 jours pour réaliser une certaine version du code pour la STM32, et cela nous a pris tout autant de temps pour réussir à intégrer ce code au code actuel du robot. Nous avons retrouvé ce problème à plusieurs étapes de ce projet. Nous pensions donc pouvoir finir en avance mais nous avons fini tout juste à temps.
    
==Améliorations possibles==
 
==Améliorations possibles==
Concernant le projet 1 , il faudrait réaliser le code pour la communication via le bus CAN afin de pouvoir envoyer à la STM principale la tension de la batterie. <br>
+
Concernant le projet 1 , il faudrait réaliser le code pour la communication via le bus CAN afin de pouvoir envoyer à la STM principale la tension de la batterie, et de pouvoir recevoir des instructions d'arrêt d'urgence de l'application. En effet, ça peut être intéressant de déclencher l'arrêt d'urgence depuis l'appli.
 +
<br>
     
243

modifications