PB Detecteur Metaux

Telechargé par Imran Idd
Ministère de l’Enseignement Supérieur
et de la Recherche Scientifique
Université de Carthage
Ecole Nationale d’Ingénieurs de Carthage
 


1
Robot détecteur de métaux
Nous proposons de commander un robot tecteur de taux et éviteur d’obstacles. Ce robot (Figure 1) aura la
fonctionnalité de tecter des pièces talliques, permettant de remplacer un soldat voulant détecter une mine, ou
permettant de chercher des bijoux. Le robot proposé permet d’assurer les fonctions suivantes :
Assurer la motorisation : il est équipé de deux chenilles (gauche et droite), reliées à un moteur à courant
continu, et alimenté par des batteries.
Détecter les métaux : il est muni d’un capteur de métaux, clenchant un buzzer pour chaque tection de
tal
Détecter les obstacles : il inclut un capteur de distance permettant d’éviter tout obstacle rencontré
Gérer la batterie : il est équipé d’un capteur de tension permettant l’acquisition du niveau de la batterie
Nous proposons de vous guider pour développer sur STM32F4, la pile logicielle par FreeRTOS, pour la commande
de ce robot en associant à chaque fonction citée uneche permettant sa gestion.
Nous supposons que la configuration des différents périphériques est effectuée dans la fonction Config_SYS(),
appelée dans la fonction main(). La figure 2 montre un schéma simplifié des différentes tâches proposées.
Figure 1: Robot détecteur
de métaux
Capt
IR
Tâche
tNiveau_
Batterie
Tâche
tMotorisation
Tâche
tDetection
Metaux
Qbatterie
Qobstacle
Figure 2 : Diagramme d’interdépendances des tâches
Batterie
PB0
Capt Metaux
PB2
Buzzer
PB3
PC0
PA0
Bouton
Marche
Chenille D
Chenille G
PA1
PA2
PB1
2
I. Tâche tDetection_Metaux
Un détecteur de taux est un capteur permettant de localiser des objets métalliques en exploitant le principe de
l’induction électromagnétique. Il est composé d’une bobine émettrice et d’une autre ceptrice. La bobine émettrice
qui est traversée par un courant sinusoïdal, génère autour d’elle un champ magnétique. Lorsqu’un objet tallique
est détecté, la bobine réceptrice capte un signal dont le déphasage dépend du champ magnétique émis par l’objet.
Le capteur délivre à sa sortie un signal numérique : 0 (pas de métal) ou 1 (détection de métal).
1) Coder la che tDetection_Metaux qui permet de lire la sortie du capteur (reliée à PB2) toutes les 2s.
Dans le cas de détection de métal, elle commande un buzzer relié à PB3 et elle commande l’arrêt du moteur
par l’envoie d’une variable Arret_Moteur(=1) dans la queue Qdetect_metal.
II. Tâche tDetection_Obstacle
Le capteur de distance utilisé est un capteur Sharp, sa
caractéristique est donnée par la figure 3. Il est appliqué à
l’entrée ADC1_IN10 (PC10) du STM32F4, configuré en
mode 8 bits, une seule conversion (single conversion). La
fonction void MX_ADC1_Init(void) est déjà définie.
VREF=3V.
Lorsque la distance d retournée par le capteur est
inférieur à 20cm (qui correspond à une tension V0=0.6V),
une alarme est envoe dans la queue Qobstacle.
On suppose que le BSP suivant est prédéfini :
uint8_t Alarme;
ADC_HandleTypeDef hadc1, hadc2;
/** @brief Enables ADC and starts conversion of the regular channels. */
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
/** @brief Disables ADC and stop conversion of regular channels. */
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc)
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t
Timeout)
/** @brief Gets the converted value from data register of regular channel.*/
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
1) Coder la tâche tDetection_Obstacle qui permet de lire la sortie de l’ADC1, la convertie en tension
délivrée par le capteur de distance V0, suivi de sa conversion en distance d, ensuite la comparer par rapport
à 20cm. Dans le cas où cette distance est inférieure à 20cm, envoyer une alarme (=1) sous la forme d'une
variable de type uint8_t dans une queue appelée Qobstacle. Enfin cette tâche sera bloquée pendant 1s.
III. Tâche tNiveau_Batterie
Le robot intègre un mécanisme permettant de contrôler le niveau de tension minimal pour le fonctionnement du
système. La tension délivrée par la batterie VBAT comprise entre [0..10V] passe à travers un conditionneur pour
l'adapter à [0..3.3V] (Vout) :
𝑉
𝐵𝐴𝑇 =𝑉
𝑂𝑢𝑡 × (𝑅1+ 𝑅2)
𝑅2
Où R1=3.3kΩ et R2=1kΩ. La sortie Vout du conditionneur est reliée à l’ADC2_IN8 (PB0) configuré en mode 10 bits
en mode conversion continue et VREF=3.3V.
2) Coder la tâche tNiveau_Batterie qui permet de lire la sortie de l’ADC2 toutes les 10s, la convertie en tension
𝑉𝑂𝑢𝑡 récupérée à partir du conditionneur, ensuite déduire la tension réelle des batteries, si elle est inférieure à 6V,
une LED connectée à PB1 est allumée et une alerte niveau bas sera envoyée sous la forme d'une variable Niv_Bas
de type uint8_t dans la queue appelée Qbatterie.
Figure 3. Caractéristique du capteur IR
3
Rq: La tension Vout est récupérée par l'appel des fonctions de gestion de l’ADC citées précédemment.
IV. Tâche tMotorisation
La tâche tMotorisation permet de commander la rotation des chenilles et par conséquent le déplacement du
robot. L’algorithme suivant décrit le fonctionnement de cette tâche.
Répéter toujours
Initialiser Niv_Bas=0, alarme=0, Arret_Moteur=0
Si (Bouton Marche=1)
Lire les queues Qbatterie, Qobstacle, et Qdetect_metal
Si (Niv_Bas=1 ou Arret_Moteur=1) Arret des chenilles D et G
Sinon si (Alarme=1)
Arrêt chenille D et Avance chenille G (Rotation à droite)
Sinon Avance des chenilles D et G
Sinon Suspension de 100 millisecondes
8) Coder la fonction main() de ce programme, en créant :
les entités FreeRTOS nécessaires pour le fonctionnement de ce système (Queues et autres)
les ches citées précédemment (sans oublier de leurs assigner les diverses priorités)
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !