Projet Drone Partie électronique

download Projet Drone Partie électronique

of 15

Transcript of Projet Drone Partie électronique

  • 8/19/2019 Projet Drone Partie électronique

    1/34

     

    MIQ52011-2012

    STRUB Guillaume

    Mécatronique 5e année

    Projet Drone Semestre 9 – Partie électronique 

    Carte mère 

  • 8/19/2019 Projet Drone Partie électronique

    2/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 2 sur 34 

    IntroductionLe présent rapport se consacre à la description de la carte mère du projet Drone et au travail effectué

    sur celle-ci au cours du semestre. Il est composé de deux parties relativement indépendantes.

    La première partie est écrite de façon à servir de manuel de référence pour les générations futuresd’étudiants qui seront amenés à travailler sur la carte mère. L’architecture matérielle et logicielle y

    sera détaillée, ainsi que les différents brochages et réglages nécessaires.

    La seconde partie présente le travail effectué au cours du semestre sur la carte mère. Elle présente

    plus en détail la conception de la nouvelle carte mère et les différents problèmes qui ont pu être

    rencontrés avant, pendant et après cette conception.

    Sommaire

    Introduction ............................................................................................................................................. 2Sommaire ................................................................................................................................................ 2

    Partie I : Notice d’utilisation de la carte mère version 2011-2012 ......................................................... 4

    Architecture matérielle ....................................................................................................................... 5

    Implantation des composants principaux ........................................................................................... 6

    Attribution des broches et brochage des connecteurs ....................................................................... 8

    Connecteurs PPM (servos et variateurs) : J1, J2, J3 ........................................................................ 8

    Connecteur IMU (Centrale inertielle MicroStrain 3DM-GX2) : J4 ................................................... 9

    Connecteur GPS (EM-406) : J5 ....................................................................................................... 10

    Connecteur ICSP (Programmation in-situ) : J6 .............................................................................. 11

    Connecteur BATT. CM (Alimentation par batterie) : J7 ................................................................. 11

    Connecteur CAPTEURS (Carte capteurs) : J8 ................................................................................. 12

    Connecteur XBee : J9, U4 .............................................................................................................. 13

    Connecteur DEBUG : J10 ............................................................................................................... 14

    Bus SPI maître : U2, J11 ................................................................................................................ 15

    Connecteur I2C : J12 ...................................................................................................................... 16

    Connecteur de mesure de tension batterie : J14 .......................................................................... 16

    Configuration de l’alimentation ........................................................................................................ 17

    Architecture logicielle ........................................................................................................................ 18

    Fichier trames.h ............................................................................................................................. 19

    Fonctions de réception .................................................................................................................. 19

    Fonctions « générales » ................................................................................................................. 22

    Fonctions spécifiques à chaque modèle de drone ........................................................................ 22

    Mise en route .................................................................................................................................... 23

  • 8/19/2019 Projet Drone Partie électronique

    3/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 3 sur 34 

    Partie II : reconception de la carte mère ............................................................................................... 24

    Cahier des charges............................................................................................................................. 24

    Choix des composants ....................................................................................................................... 24

    Microcontrôleur ............................................................................................................................ 24

    Alimentation .................................................................................................................................. 25

    Connecteurs .................................................................................................................................. 26

    Conception de la carte ...................................................................................................................... 26

    Schéma .......................................................................................................................................... 26

    Routage ......................................................................................................................................... 26

    Premiers tests et problèmes rencontrés ........................................................................................... 27

    Mise à niveau du programme ........................................................................................................... 28Problèmes logiciels ............................................................................................................................ 29

    Conclusion ......................................................................................................................................... 29

    Table des figures .................................................................................................................................... 30

    Table des tableaux ................................................................................................................................. 30

    Annexe 1 : schéma électrique de la carte mère .................................................................................... 32

    Annexe 2 : routage de la carte mère ..................................................................................................... 34

    Face supérieure ................................................................................................................................. 34

    Face inférieure ................................................................................................................................... 34

  • 8/19/2019 Projet Drone Partie électronique

    4/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 4 sur 34 

    Partie I : Notice d’ut ilisation de la carte mère version 2011-2012La carte mère est l’élément principal de l’électronique embarquée du projet drone. Elle reçoit les

    ordres de la télécommande, traite les informations des capteurs, effectue les calculs

    d’asservissement et pilote les moteurs et gouvernes. Elle assure également la liaison avec la stationau sol. Ces informations sont résumées sur le schéma synoptique suivant :

    Electronique embarquée

    Carte mère

    Capteurs

     Actionneurs

    Télécommande

    Station au sol

     

    Figure 1 : Schéma synoptique de l'électronique embarquée et de la communication

    Figure 2: carte mère version 2011-2012 vue de dessus

  • 8/19/2019 Projet Drone Partie électronique

    5/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 5 sur 34 

     Architecture matérielle

    La présente carte mère est construite autour d’un dsPIC33EP256MU806 de Microchip. Il s’agit d’un

    microcontrôleur 16 bits possédant des fonctions additionnelles de traitement des signaux (DSP). Il a

    été choisi pour sa puissance de calcul, son espace mémoire important et le nombre de sorties PWM

    disponibles (16 dont 12 utilisées), ce qui permet de contrôler de multiples actionneurs.

    Ce dsPIC est alimenté en 3,3V et est cadencé à 117,9648 MHz, grâce à un quartz de 7,3728MHz et un

    coefficient multiplicateur x16 obtenu par PLL. De ce fait, on obtient une puissance de calcul proche

    de 60 MIPS (Millions d’Instructions Par Seconde), soit une instruction tous les deux coups d’horloge. 

    On rappelle les caractéristiques principales de ce microcontrôleur dans le tableau suivant :

    Tableau 1: caractéristiques principales du dsPIC33EP256MU806

    Mémoire programme 280Ko soit 48K instructions

    Mémoire SRAM 28KoTimers 9 timers de 16 bits

    Sorties PWM 16

    Ports série asynchrone (UART) 4

    Ports série synchrone (SPI) 4

    Ports série synchrone (I2C) 2

    Convertisseurs analogique/numérique 2 convertisseurs (10 et 12bits), 24 canaux

    Boîtier boîtier CMS TQFP64

    La figure suivante présente l’architecture matérielle générale de la carte mère du drone. Les blocs

    colorés en rose correspondent à des périphériques alimentés sous 5V tandis que les blocs en bleucorrespondent à des éléments alimentés en 3,3V. Les ports de communication utilisés sont précisés

    sur la flèche représentant la liaison.

    dsPIC33EP256M

    U806

    Module XBee vers

    station sol et

    télécommande

    Centrale inertielle

    MicroStrain

    3DM-GX2

    GPS EM-406Port UART

    supplémentaire

    Carte capteurs

    Carte MicroSD

    Port SPI

    supplémentaire

    Port I²C

    supplémentaire

    Servomoteurs et

    variateurs

    (12 lignes)

     Alimentation

    5V et 3.3V

    Connecteur de

    programmation

    Batterie principale

    Batterie carte

    mère

    UART1 UART2 UART3 UART4

    SPI1

    SPI2

    I²COC1 à OC12PGEC3, PGED3

     AN27

     AN25

     

    Figure 3 : architecture matérielle de la carte mère

  • 8/19/2019 Projet Drone Partie électronique

    6/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 6 sur 34 

    Implantation des composants principaux

    Les deux figures et le tableau ci-après décrivent l’implantation et la fonction des composants

    principaux de la carte mère.

    Figure 4 : implantation des composants sur la face supérieure de la carte mère

    Figure 5 : implantation des composants sur la face inférieure de la carte mère

  • 8/19/2019 Projet Drone Partie électronique

    7/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 7 sur 34 

    Tableau 2 : repérage et référence des principaux composants de la carte mère

    Repère Référence Désignation

    J1 Connecteur servos / ligne « signaux »

    J2 Connecteur servos / ligne 5V

    J3 Connecteur servos / ligne 0VJ4 IMU Connecteur centrale inertielle MicroStrain 3DM-GX2

    J5 GPS Connecteur GPS EM-406

    J6 ICSP Connecteur de programmation in-situ

    J7 BATT. CM Alimentation de la carte mère par batterie dédiée

    J8 CAPTEURS Connecteur carte capteurs via câble d’adaptation 

    J9 XBEE Connecteur UART XBEE (dérivation)

    J10 DEBUG Connecteur UART supplémentaire

    J11 SPI Connecteur SPI supplémentaire (partagé avec le support SD)

    J12 I2C Connecteur I²C supplémentaire

    J13 Cavalier de choix de la source d’alimentation J14 BATT. Connecteur de mesure de la tension de la batterie principale

    U1 dsPIC33EP256MU806 Microcontrôleur

    U2 MicroSD Connecteur pour carte mémoire MicroSD

    U3 MAX3232 Convertisseur de niveaux RS232 TTL 3.3V

    U4 XBee Connecteur XBee

    U5 MC33269-3.3 Régulateur LDO 3,3V

    U7 L4941BDT-TR Régulateur LDO 5V

    SW1 RESET Redémarrage de la carte (broche MCLR)

    D6 LED_ROUGE Indicateur LED rouge (broche RB6)

    D5 LED_ROUGE Indicateur LED rouge (broche RB7)D4 LED_VERT Indicateur LED vert (broche RB8)

    D3 LED_VERT Indicateur LED vert (broche RB9)

  • 8/19/2019 Projet Drone Partie électronique

    8/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 8 sur 34 

     Attribution des broches et brochage des connecteurs

    Connecteurs PPM (servos et variateurs) : J1, J2, J3

    Le signal de commande est présent sur la ligne repérée par J1 ; la première broche étant située à

    gauche sur le schéma ci-dessous (en haut à gauche sur la carte mère lorsque celle-ci est vue de face).Les broches de la ligne J2 sont toutes reliées à la ligne 5V_SERVO, tandis que le broches de J3 sont

    reliées à la masse.

    Figure 6 : repérage de la broche 1 des connecteurs PPM

    Les signaux de commande sont générés au moyen du module Output Compare, qui permet la

    génération de signaux PWM. Par défaut, la fréquence de rafraîchissement est fixée à 50Hz.

    Attention : le brochage des connecteurs doit être STRICTEMENT respecté, sous peine

    d’endommager définitivement la broche incriminée voire le dsPIC !

    Les 12 lignes de commande présentes sur J1 sont attribuées de la façon suivante :

    Tableau 3 : attribution des broches de J1 

    N° Nom Broche dsPIC Sens Commentaire

    1 OC1 RE4/RP84 (OC1) →  Rapport cyclique défini par OC1R

    2 OC2 RE2/RP83 (OC2) →  Rapport cyclique défini par OC2R

    3 OC3 RE0/RP80 (OC3) →  Rapport cyclique défini par OC3R

    4 OC4 RF1/RP97 (OC4) →  Rapport cyclique défini par OC4R

    5 OC5 RF0/RP96 (OC5) →  Rapport cyclique défini par OC5R

    6 OC6 RD7/RP71 (OC6) →  Rapport cyclique défini par OC6R

    7 OC7 RD6/RP70 (OC7) →  Rapport cyclique défini par OC7R

    8 OC8 RD5/RP69 (OC8) →  Rapport cyclique défini par OC8R

    9 OC9 RD4/RP68 (OC9) →  Rapport cyclique défini par OC9R10 OC10 RD3/RP67 (OC10) →  Rapport cyclique défini par OC10R

    11 OC11 RD2/RP66 (OC11) →  Rapport cyclique défini par OC11R

    12 OC12 RD1/RP65 (OC12) →  Rapport cyclique défini par OC12R

    Remarques : 

      Le premier nom de broche correspond à la patte physique du dsPIC.

      Le second nom correspond au numéro de broche pour la fonction Peripheral Pin Select

     

    Le troisième nom correspond à la broche de périphérique définie dans le programme.

  • 8/19/2019 Projet Drone Partie électronique

    9/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 9 sur 34 

      Toutes les broches RPxx peuvent être attribuées à des entrées ou des sorties de

    périphériques via la fonction PPS. De plus, elles peuvent également fonctionner en

    entrée/sortie standard (GPIO).

    Connecteur IMU (Centrale inertielle MicroStrain 3DM-GX2) : J4

    La communication avec l’IMU s’effectue au travers de l’UART2 ; la communication avec la centrale

    s’effectue avec les niveaux de tension RS232 (+12V/-12V) à un baudrate de 115200baud/s. Par

    conséquent, un convertisseur de niveaux MAX3232 permet d’adapter les niveaux RS232 utilisés par

    la centrale aux niveaux TTL3.3V (0/3.3V) compatibles avec le dsPIC.

    4 3 2 1

    Figure 7 : brochage du connecteur IMU (vue de dessus)

    Tableau 4 : attribution des broches de J4 

    N° Nom Broche dsPIC Sens Commentaire

    1 5V - - Alimentation 5V

    2 IMU_MRST RG7/RPI119 (U2RX) ←  Réception des données de l’IMU 

    3 IMU_MTSR RG6/RP118 (U2TX) →  Envoi de données vers l’IMU 

    4 GND - - Masse

    Remarques : 

      Le premier nom de broche correspond à la patte physique du dsPIC.

      Le second nom correspond au numéro de broche pour la fonction Peripheral Pin Select

      Le troisième nom correspond à la broche de périphérique définie dans le programme.

      Les broches RP118 et RPI119 pourraient être réattribuées à d’autres fonctions via la fonction

    Peripheral Pin Select ; cependant le convertisseur MAX3232 fixe les niveaux et les directions.

  • 8/19/2019 Projet Drone Partie électronique

    10/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 10 sur 34 

    Connecteur GPS (EM-406) : J5

    Le GPS EM-406 est alimenté sous 5V, et la communication s’effectue aux niveaux TTL3.3V au moyen

    de l’UART3. Aucune conversion de niveaux n’est donc nécessaire, et les baudrates sont de

    4800baud/s par défaut ou 9600baud/s via une commande PSRF.

    6 5 4 3 2 1

    Figure 8 : brochage du connecteur GPS (vue de dessus)

    Tableau 5 : attribution des broches de J5 

    N° Nom Broche dsPIC Sens Commentaire

    1 GND - - Masse

    2 5V - - Alimentation 5V

    3 GPS_MRST RB10/RPI42 (U3RX) ←  Réception des données du GPS4 GPS_MTSR RE7/RP87 (U3TX) →  Envoi de données vers le GPS

    5 GND - - Masse

    6 Sortie 1Hz du GPS ; non reliée sur la carte

    Remarques : 

      Le premier nom de broche correspond à la patte physique du dsPIC.

      Le second nom correspond au numéro de broche pour la fonction Peripheral Pin Select

     

    Le troisième nom correspond à la broche de périphérique définie dans le programme.  Les broches RPxx et RPIxx peut être réattribuées comme E/S de périphérique avec la fonction

    PPS (les broches RPIxx ne peuvent être attribuées qu’en entrées). De plus, elles peuvent

    également fonctionner en entrée/sortie standard (GPIO).

  • 8/19/2019 Projet Drone Partie électronique

    11/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 11 sur 34 

    Connecteur ICSP (Programmation in-situ) : J6

    Ce connecteur permet la programmation de la carte mère au moyen d’un

    programmateur/débogueur PicKIT3 ou ICD3. Les périphériques plus anciens (PicKIT2, ICD2) ne sont

    pour l’instant pas adaptés au dsPIC33EP256MU806. Attention, si la carte est alimentée via le

    programmateur, les périphériques fonctionnant sous 5V ne fonctionneront pas ou mal.

    5 4 3 2 1

    Figure 9 : brochage du connecteur ICSP (vue de dessus)

    Tableau 6 : attribution des broches de J6 

    N° Nom Broche dsPIC Sens Commentaire

    1 MCLR MCLR - Remise à zéro du dsPIC (actif à l’état bas) 

    2 VDD - - Alimentation 3.3V

    3 GND - - Masse

    4 PGD RB1   Données de programmation

    5 PGC RB0 ←  Horloge de programmation

    Remarques : 

      Les broches utilisées (RB0 et RB1) correspondent au canal de programmation 3, tel que défini

    par la macro _FICD(ICS_PGD3 & JTAGEN_OFF);. Ce réglage ne doit être modifié sous

    aucun prétexte sous peine de ne pas pouvoir reprogrammer le dsPIC (par précaution).

    Connecteur BATT. CM (Alimentation par batterie) : J7

    Ce connecteur permet d’alimenter la carte mère au moyen d’une batterie dédiée. La tension de

    celle-ci sera régulée par un régulateur LDO 5V de type L4941. Il est donc prévu pour des batteries de

    type LiPo 2S (7,2V) ou 3S (11,8V), munies d’un connecteur de modélisme 2 ou 3 broches (au pas de

    2,54mm).

    Attention : la polarité du connecteur et de la batterie doit être STRICTEMENT respectée, sous peine

    d’endommager définitivement le régulateur, la carte mère et/ou la batterie !

    Figure 10: brochage du connecteur de batterie

    Tableau 7 : attribution des broches de BATT. CM

    N° Nom Commentaire

    1 NC Broche non reliée (fil jaune)

    2 VB Alimentation (fil rouge)

    3 GND Masse (fil noir)

  • 8/19/2019 Projet Drone Partie électronique

    12/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 12 sur 34 

    La mesure de la tension de cette batterie est possible via la broche RE1/AN25 du dsPIC ; la tension

    présente sur cette broche étant égale à 1/10e de la tension de la batterie.

    Connecteur CAPTEURS (Carte capteurs) : J8

    Ce connecteur est prévu pour communiquer avec la carte capteurs actuelle. Comme celle-ci était

    montée en « mezzanine » sur l’ancienne carte mère, il est nécessaire de réaliser une carte ou un

    câble permettant l’adaptation avec un connecteur JST 6 broches. 

    La communication s’effectue par un port SPI esclave (la carte capteurs contrôle le bus). Etant donné

    que la carte capteurs a été conçue pour un système 5V, une adaptation de niveau est nécessaire.

    6 5 4 3 2 1

    Figure 11 : brochage du connecteur SPI (vue de dessus)

    Tableau 8 : attribution des broches de J8 

    N° Nom Broche dsPIC Sens Commentaire

    1 5V - - Alimentation 5V

    2 CAPTEURS_MOSI RB14/RPI46 ←  Réception de données

    3 CAPTEURS_MISO RF4/RP100 →  Envoi de données

    4 CAPTEURS_CLK RB13/RPI45 ←  Horloge SPI

    5 CAPTEURS_CS RB11/RPI43 ←  Ligne de sélection (active à l’état bas ?)

    6 GND - Masse

    Remarques : 

      Le schéma/routage actuel présente une erreur au niveau de l’adaptation de tension du bus

    SPI. Il peut être nécessaire de retirer D7 et R10 et d’effectuer l’adaptation de tension au

    niveau de l’adaptateur. 

      Le premier nom de broche correspond à la patte physique du dsPIC.

      Le second nom correspond au numéro de broche pour la fonction Peripheral Pin Select

     

    Le troisième nom correspond à la broche de périphérique définie dans le programme.  Les broches RPxx et RPIxx peut être réattribuées comme E/S de périphérique avec la fonction

    PPS (les broches RPIxx ne peuvent être attribuées qu’en entrées). De plus, elles peuvent

    également fonctionner en entrée/sortie standard (GPIO).

  • 8/19/2019 Projet Drone Partie électronique

    13/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 13 sur 34 

    Connecteur XBee : J9, U4

    La communication vers le sol (télécommande et interface PC) s’effectue au moyen de modules radio

    sans fil XBee. Ceux-ci permettent d’établir une liaison série « transparente » entre plusieurs modules.

    Les connecteurs désignés par U4 permettent d’enficher un module XBee, la silhouette est dessinée

    sur la carte afin de pallier à toute erreur de branchement éventuelle.

    Le connecteur J9 réplique les lignes du module XBee pour permettre un accès direct au données sans

    passer par les modules XBee. Afin d’éviter toute erreur dans la communication, il est déconseillé

    d’utiliser ce connecteur lorsque le module XBee est présent (risque de collision de données). La

    communication s’effectue à 115200baud/s aux niveaux TTL3.3V 

    4 3 2 1

    Figure 12 : brochage du connecteur XBEE J9 (vue de dessus)

    Tableau 9 : attribution des broches de J9 

    N° Nom Broche dsPIC Sens Commentaire

    1 VDD - - Alimentation 3.3V

    2 XBEE_MRST RD8/RPI72 (U1RX) ←  Réception des données du PC/XBee

    3 XBEE_MTSR RF5/RP101 (U1TX) →  Envoi de données vers le PC/XBee

    4 GND - - Masse

    Remarques : 

      Le premier nom de broche correspond à la patte physique du dsPIC.

      Le second nom correspond au numéro de broche pour la fonction Peripheral Pin Select

      Le troisième nom correspond à la broche de périphérique définie dans le programme.

      Les broches RPxx et RPIxx peut être réattribuées comme E/S de périphérique avec la fonction

    PPS (les broches RPIxx ne peuvent être attribuées qu’en entrées). De plus, elles peuvent

    également fonctionner en entrée/sortie standard (GPIO).

  • 8/19/2019 Projet Drone Partie électronique

    14/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 14 sur 34 

    Connecteur DEBUG : J10

    Ce connecteur permet d’accéder à l’UART4. Celui-ci peut être utilisé à des fins de débogage ou pour

    relier d’autres périphériques à la carte mère. 

    4 3 2 1

    Figure 13 : brochage du connecteur DEBUG J10 (vue de dessus)

    Tableau 10 : attribution des broches de J10 

    N° Nom Broche dsPIC Sens Commentaire

    1 VDD - - Alimentation 3.3V

    2 DEBUG_MRST RE6/RPI86 (U4RX) ←  Réception des données du périphérique

    3 DEBUG_MTSR RE5/RP85 (U4TX) →  Envoi de données vers le périphérique

    4 GND - - Masse

    Remarques : 

      Le premier nom de broche correspond à la patte physique du dsPIC.

      Le second nom correspond au numéro de broche pour la fonction Peripheral Pin Select

      Le troisième nom correspond à la broche de périphérique définie dans le programme.

     

    Les broches RPxx et RPIxx peut être réattribuées comme E/S de périphérique avec la fonction

    PPS (les broches RPIxx ne peuvent être attribuées qu’en entrées). De plus, elles peuvent

    également fonctionner en entrée/sortie standard (GPIO).

  • 8/19/2019 Projet Drone Partie électronique

    15/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 15 sur 34 

    Bus SPI maître : U2, J11

    Le connecteur J11 permet d’accéder à un port SPI maître afin de relier un périphérique SPI à la carte

    mère. Il est partagé avec le port SPI dédié à la carte MicroSD.

    6 5 4 3 2 1

    Figure 14 : brochage du connecteur SPI (vue de dessus)

    Tableau 11 : attribution des broches de J11 

    N° Nom Broche dsPIC Sens Commentaire

    1 VDD - - Alimentation 3.3V

    2 SD_MISO RB15/RPI47 ←  Réception de données (partagée)

    3 SD_MOSI RD0/RP64 →  Envoi de données (partagée)

    4 SD_CLK RF3/RP99 →  Horloge SPI (partagée)5 SPARE_CS RB3 →  Ligne de sélection (active à l’état bas) 

    6 GND - Masse

    Remarques : 

      Le premier nom de broche correspond à la patte physique du dsPIC.

      Le second nom correspond au numéro de broche pour la fonction Peripheral Pin Select

      Le troisième nom correspond à la broche de périphérique définie dans le programme.

     

    Les broches RPxx et RPIxx peut être réattribuées comme E/S de périphérique avec la fonctionPPS (les broches RPIxx ne peuvent être attribuées qu’en entrées). De plus, elles peuvent

    également fonctionner en entrée/sortie standard (GPIO).

      La ligne de sélection pour la carte SD (SD_CS) est présente sur la broche RC13.

  • 8/19/2019 Projet Drone Partie électronique

    16/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 16 sur 34 

    Connecteur I2C : J12

    Le connecteur J12 permet d’accéder à un bus I²C afin de relier des périphériques utilisant cette

    norme.

    4 3 2 1

    Figure 15 : brochage du connecteur I2C (vue de dessus)

    Tableau 12 : attribution des broches de J13 

    N° Nom Broche dsPIC Sens Commentaire

    1 VDD - - Alimentation 3.3V

    2 SCL_I2C RD10 →  Horloge

    3 SDA_I2C RD9   Bus de données

    4 GND - - Masse

    Connecteur de mesure de tension batterie : J14

    Ce connecteur permet de mesurer la tension de la batterie principale au moyen d’un pont diviseur de

    tension de rapport 1/10e et d’une entrée analogique du PIC.

    Attention : la polarité du connecteur et de la batterie doit être STRICTEMENT respectée, sous peine

    d’endommager définitivement le régulateur, la carte mère et/ou la batterie !

    2 1

    Figure 16 : brochage du connecteur BATT (vue de dessus)

    Tableau 13 : attribution des broches de J14 

    N° Nom Broche dsPIC Sens Commentaire

    1 VBATT_AUX RE3/AN27 - Mesure de tension batterie par pont 1/10e 

    2 GND - - Masse

  • 8/19/2019 Projet Drone Partie électronique

    17/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 17 sur 34 

    Configuration de l’alimentation

    La ligne 5V d’alimentation peut être fournie par deux sources :

      Un régulateur 5V alimenté par une batterie externe connectée sur BATT. CM (J7)

     

    Une source 5V reliée au connecteur PPM (par exemple circuit BEC de variateur brushless).

    Le cavalier J13 permet de choisir laquelle de ces deux source est utilisée pour l’alimentation de la

    carte mère. Les configurations possibles sont les suivantes :

    Figure 17: brochage du connecteur de batterie

    Tableau 14 : attribution des broches de BATT. CM

    Position Nom Commentaire

    1-2 5V_REG5V fourni par lerégulateur interne.

    2-3 5V_SERVO5V fourni par leconnecteur PPM.

    Dans les deux cas, la tension choisie est filtrée au moyen d’une inductance et d’un condensateur au

    tantale afin de limiter l’introduction de parasites liés aux actionneurs. 

  • 8/19/2019 Projet Drone Partie électronique

    18/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 18 sur 34 

     Architecture logicielle

    Le programme de la carte mère a été réécrit durant l’année 2010 -2011 afin d’adopter une

    conception modulaire. Ainsi, le même code source est utilisé pour l’ensemble des drones utilisés

    (planeur, mulet, quadri et orange), seuls les fichiers spécifiques à chaque drone (asservissements,

    attribution des voies) sont à réécrire. Cette approche permet de rendre le code plus lisible et decentraliser les fichiers communs, afin d’éviter la prolifération de versions différentes. 

    Les fonctions communes sont réparties de la façon suivante :

    -  Communication avec les périphériques :

    gps.h, gps.c : communication avec le GPS.

    o  xbee_comm.h, xbee_comm.c  : communication avec la télécommande et la station

    au sol par liaison sans fil XBee.

    o  imu.h, imu.c : communication avec la centrale inertielle.

    capteurs.h, capteurs.c : communication avec la carte capteurs.o  trames.h : définition des trames de communication utilisées au sein du projet

    -  Configuration et initialisation du programme :

    o  config.h : configuration du logiciel (modules activés, type de drone).

    o  init.h, init.c : initialisation du dsPIC et des périphériques.

    Fonctions générales :

    o  ppm.h, ppm.c : calcul de largeur d’impulsion PPM. 

    o  generic.h, generic.c : fonctions génériques (conversions d’endian, saturations). 

    o  global_time.h, global_time.c : base de temps globale.

    -  Gestion des fonctions spéciales du dsPIC :

    can.h, can.c : conversion analogique-numérique.o  eeprom.h, eeprom.c : lecture/écriture de données en mémoire EEPROM.

    o  Remarque : ces fonctions n’ont à ce jour (20/01/2012) pas encore été adaptées à la

    nouvelle carte mère !

    -  Gestion des modes de vol :

    o  mode_vol.h, mode_vol.c : automate à états de gestion des modes de vol.

    -  Point d’entrée du programme :

    o  main.c : macros de réglage des bits de configuration, appel de l’initialisation et

    boucle principale (gestion des modes de vol OU test des périphériques)

    Les sections suivantes détaillent la structure du fichier trames.h, la structure générale des fonctions

    de réception, les fonctions générales et les fonctions spécifiques à chaque modèle de drone. Elles ont

    été reprises du rapport de projet S7 MIQ4 2010-2011.

  • 8/19/2019 Projet Drone Partie électronique

    19/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 19 sur 34 

    Fichier trames.h

    Ce fichier regroupe l’ensemble des trames utilisées actuellement dans le projet drone. Une trame se

    compose des éléments suivants :

    1 Octet de début 1 Octet de type N octets de données 1 octet de checksumD’où une taille totale de N+3 octets. 

    L’octet de début (DEBUT_TRAME) et les octets de type sont définis dans ce fichier par un #define,

    afin de pouvoir les changer plus facilement que s’ils étaient en dur dans le code. 

    L’octet de checksum est calculé en faisant la somme de tous les octets précédents, il permet de

    vérifier que la trame a bien été transmise.

    On retrouve pour chaque trame les deux constantes :

    TYPE_TRAME_XXX l’octet de type de trame -  LG_TRAME_XXX la longueur totale de la trame

    Le fichier trames.h définit également les constantes d’erreurs pouvant survenir lors de la réception

    (pas d’erreur, mauvais octet de départ, type de trame inconnu et checksum incorrect) :

    TRAME_ERR_NOERR, TRAME_ERR_DEBUT, TRAME_ERR_TYPE, TRAME_ERR_CHECK.

    Le fait de définir l’ensemble des constantes dans ce fichier plutôt que de les coder « en dur » comme

    précédemment améliore grandement la lisibilité du code et le rend plus compréhensible.

    Fonctions de réception

    Ces fonctions sont réalisées dans la fonction d’interruption de l’interface correspondante(_SPI1Interrupt pour la carte capteurs, _U1RXInterrupt pour le XBee, _U2RXInterrupt pour la centrale

    inertielle). L’algorithme utilisé est le suivant :

    Lors de la réception d’un octet :Erreur = ERR_TRAME_NOERRSi compteur = 0 :

    Si octet ≠ DEBUT_TRAME : Erreur += ERR_TRAME_DEBUTSi compteur = 1 :

    Si le type de trame n’est pas connu : Erreur += ERR_TRAME_TYPESi compteur = longueur_trame – 1

    Si le checksum est incorrect : Erreur += ERR_TRAME_CHECKSinon :

    Traiter trameMettre le flag TrameMAJ à 1Mettre le flag ResetTrame à 1

    Fin siSi ResetTrame = 1 ou Erreur ≠ ERR_TRAME_NOERR 

    Remettre le compteur à zéroSinon

    Enregistrer l’octet dans le buffer de trame Incrémenter le compteurAjouter l’octet au checksum 

    Fin si

    Il est plus simple que l’algorithme utilisé précédemment et utilise moins de variables. Il a également

    été utilisé avec succès dans la communication inter-cartes au Club Robot lors de l’édition 2010. 

  • 8/19/2019 Projet Drone Partie électronique

    20/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 20 sur 34 

    Certaines variables (compteur, checksum, buffer de trame) doivent garder leurs valeurs entre deux

    appels de l’interruption. Il existe plusieurs façons de réaliser cela :

    -  En utilisant une variable globale à l’ensemble du code : déconseillé, surtout qu’elle n’a pas à

    être réécrite ailleurs.-  En utilisant une variable locale au module (déclarée dans le .c uniquement).

    En utilisant une variable locale statique : c’est la solution qui a été retenue ici. 

    Le traitement des trames est maintenant intégré aux fonctions de réception, les données des trames

    sont enregistrées dans des structures qui permettent d’accéder directement à la valeur voulue. Ainsi,

    on a par exemple pour les capteurs la structure suivante :

    //! Structure contenant les données des capteurstypedef struct { 

    //! Latitude GPSsigned long gps_x; 

    //! Longitude GPSsigned long gps_y; //! Vitesse GPS en m/s

    signed int gps_vitesse; //! Altitude barométrique en msigned int gps_cap; //! Altitude barométrique en munsigned int altitude_baro; //! Altitude ultrasons en cmunsigned int altitude_us; //! Vitesse Pitot en m/sunsigned int vitesse; //! Jauge de batterie

    unsigned int jauge; //! Flags d'état envoyés à la carte mère et à la station au solunsigned int status;

    } CAPTEURSDATA; 

    Il n’est plus nécessaire de reconstruire l’information lorsque l’on en a besoin. Le remplissage de la

    structure est très simple comme elle reprend l’ordre des informations dans la trame   : la fonction

    memcpy de permet de recopier les octets de données directement dans l’espace mémoire

    alloué à la structure, ce qui permet un code très compact et efficace. En effet, le processeur se

    contente de recopier le contenu d’une adresse mémoire dans une autre, alors que le code précédent

    nécessitait plus de calculs : conversion en long, rotation de Nx8bits vers la gauche et addition.

    Considérations particulières sur l’endianness 

    Cela fonctionne à la seule condition de conserver l’endianness entre l’émetteur et le récepteur, c’est-

    à-dire la façon dont sont stockées les variables de plus d’un octet dans la mémoire. Les compilateurs

    Microchip C18 et C30 travaillent en « Little-Endian », c’est-à-dire que pour une variable de plus d’un

    octet, l’octet de poids faible est stocké à l’adresse la plus faible. Le code de la carte capteurs faisait

    l’opération inverse, c’est-à-dire qu’il envoyait d’abord l’octet de poids fort. Il a donc fallu inverser

    l’ordre d’envoi des données de la carte capteurs pour respecter la convention. 

    La modification entreprise sur la carte capteurs n’a pas pu être répliquée sur la centrale inertielle :celle-ci envoie les données en format « Big Endian », il est donc nécessaire de réaliser la conversion

  • 8/19/2019 Projet Drone Partie électronique

    21/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 21 sur 34 

    sur le PIC. Comme on doit convertir des données en octet (char) en données à virgule flottante

    (float), il n’est pas possible d’utiliser la méthode de rotation à gauche et d’addition. Deux fonctions

    ont été écrites pour réaliser la conversion de données de 4 octets et de 2 octets respectivement :

    byteSwap4 et byteSwap2.

    void byteSwap4 (void* dest, const void* source) {((char*)(dest))[3] = ((char*)(source))[0];((char*)(dest))[2] = ((char*)(source))[1];((char*)(dest))[1] = ((char*)(source))[2];((char*)(dest))[0] = ((char*)(source))[3];

    Elles fonctionnent en convertissant le pointeur d’entrée en pointeur sur un tableau de char, ce qui

    permet d’adresser directement les octets de la variable dans la mémoire, indépendamment du type

    de la variable. On peut donc les utiliser pour travailler sur des entiers sur 4 octets (long) ou des

    nombres à virgule flottante (float).

  • 8/19/2019 Projet Drone Partie électronique

    22/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 22 sur 34 

    Fonctions « générales »

    Il s’agit des autres fonctions, utilisées quel que soit le type de drone et qui ne font pas partie des

    fonctions de communication. On y retrouve les fonctions liées à la commande PPM : conversion des

    données de la télécommande vers un pourcentage, conversion d’un pourcentage vers la valeur à

    écrire dans les registres de PWM du PIC et fonction de bornage de la largeur d’impulsion. 

    L’autre module (mode_vol) contient la boucle principale du programme (boucleGestionVol) : il s’agit

    d’un automate à états permettant la gestion des différents modes de vol (FAILSAFE, MANUEL,

    SEMI_AUTO et AUTO), définis dans mode_vol.h

    La boucle principale est composée d’une structure switch(modeVol) permettant de gérer les

    différents états :

    -  En Failsafe, la fonction modeFailsafe() est appelée et la condition de sortie du mode est

    testée (si on reçoit une trame télécommande, on passe en mode manuel)

    En Manuel, la fonction modeManuel() est appelée dès qu’une nouvelle trame télécommande

    est arrivée, et la condition de passage en mode semi-automatique est évaluée

    -  En Semi-auto, la fonction modeSemiAuto() est appelée dès qu’une nouvelle trame de la

    centrale est arrivée, et la condition de retour en mode manuel est évaluée.

    -  Le mode automatique (fonction modeAuto()) n’est pas encore implémenté  : il n’y a pas de

    transitions vers cet état.

    Les fonctions modeFailsafe(), modeManuel(), modeSemiAuto() et modeAuto() sont définies dans le

    module spécifique à chaque drone. Elles peuvent également comporter des transitions

    supplémentaires non précisées dans la boucle générale car dépendantes du modèle de drone.

    Fonctions spécifiques à chaque modèle de drone

    Elles sont définies dans un ensemble de fichiers (.h et .c) portant le nom du modèle. Ainsi, les

    fonctions correspondant au quadrirotor sont rassemblées dans quadrirotor.c et quadrirotor.h

    On y retrouve les fonctions de mode de vol, ainsi que les fonctions d’asservissement (donc certaines

    seront déplacées dans un module dédié car communes à tous les drones), les attributions de broches

    moteur et de canaux de télécommande, ainsi que les coefficients d’asservissement. 

  • 8/19/2019 Projet Drone Partie électronique

    23/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 23 sur 34 

    Mise en route

    Les éléments suivants sont nécessaires pour commencer à développer et tester des programmes sur

    la carte mère :

    Un programmateur de PIC avec connecteur ICSP : un PicKIT3 ou un ICD3 sont indispensables(présents en laboratoire mécatronique).

    -  Le logiciel MPLAB, téléchargeable sur le site de Microchip (www.microchip.com) 

    Le compilateur MPLAB C30, téléchargeable également sur le site de Microchip. Il existe en

    version gratuite mais il faut créer un compte sur le site.

    -  Il est également recommandé de se munir d’un client SVN : par exemple TortoiseSVN, voir le

    rapport « Gestionnaire de versionnement de projet subversion », présent dans la partie

    « Téléchargements » du Google Code du projet drone (http://code.google.com/p/insa-

    projet-drone).

    Après avoir installé les différents logiciels, il est nécessaire de récupérer le code source sur le SVN.Pour cela, on utilise la commande « SVN Checkout » de TortoiseSVN avec l’adresse suivante :

    http ://insa-projet-drone.googlecode.com/svn/ insa-projet-drone-read-only

    Pour enregistrer des modifications sur le SVN, vous devez avoir un compte Google et demander au

    responsable du SVN de vous ajouter à la liste des « commiters ». L’adresse de checkout devient

    alors :

    svn checkout https://insa-projet-drone.googlecode.com/svn/ insa-projet-

    drone --username

    Le programme de la carte mère se trouve ensuite dans le dossier

    « Programme_carte_mere_2011_2012 ». Le fichier carte_mere.mcp s’ouvre avec MPLAB et contient

    l’ensemble des informations nécessaires à la compilation. Vous pouvez alors lancer la compilation

    pour vérifier le bon fonctionnement de l’installation. En cas d’erreur, vérifiez que le code source n’est

    pas mis en cause (en récupérant une version antérieure connue pour fonctionner) et assurez-vous

    que les outils de développement sont bien reconnus par MPLAB : dans la fenêtre accessible par le

    menu « Project->Set Language Tool Locations » puis « Microchip C30 Toolsuite », les chemins d’accès

    doivent être renseignés avec les chemins utilisés pour l’installation. 

    Pour fonctionner correctement, la carte mère doit de préférence être alimentée par une source

    autre que le programmateur. Celui-ci est relié à la carte mère au moyen d’un câble adaptateur

    normalement fourni avec la carte ; le fil blanc correspond à la broche n°1 du connecteur ICSP.

    Le programmateur doit être de préférence relié à la carte mè re avant de lancer MPLAB, afin d’éviter

    les messages d’erreurs liés à une non-détection du PIC. En cas de problème de détection, il convient

    de vérifier le bon branchement du câble (absence de faux-contacts et polarité correcte).

    L’environnement MPLAB permet ensuite de programmer et déboguer le programme de la carte mère

    au moyen des fonctions idoines : il n’est pas nécessaire de flasher la carte par un logiciel annexe. 

    En cas d’erreur de programmation, il convient de vérifier les branchements et la sourced’alimentation ; en général il suffit de relancer la procédure de programmation.

    http://www.microchip.com/http://www.microchip.com/http://www.microchip.com/http://code.google.com/p/insa-projet-dronehttp://code.google.com/p/insa-projet-dronehttp://code.google.com/p/insa-projet-dronehttp://code.google.com/p/insa-projet-dronehttp://code.google.com/p/insa-projet-dronehttp://code.google.com/p/insa-projet-dronehttp://www.microchip.com/

  • 8/19/2019 Projet Drone Partie électronique

    24/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 24 sur 34 

    Partie II : reconception de la carte mèreCette partie se concentre sur le travail effectué au cours du semestre 9 sur la reconception de la

    carte mère du projet Drone (version 2010-2011). Celle-ci est basée sur un microcontrôleur

    dsPIC30F6014A de Microchip pour l’exécution des tâches logicielles et un module XBee pour les

    communications sans fil.

    La partie logicielle a été réécrite en 2010-2011 pour suivre une approche modulaire et augmenter la

    réutilisabilité du code source. Celui-ci a été divisé en différents modules affectés à une tâche ou un

    périphérique particulier. Cette approche permet une programmation plus aisée et simplifie la

    communication entre les différents membres du projet.

    Au cours des stages ST2 de 2011, plusieurs problèmes matériels ont été identifiés :

    -  L’absence de circuit de protection sur les broches PPM, ce qui peut provoquer la destruction

    du driver de broche et/ou du microcontrôleur en cas d’erreur de branchement.

    -  Le dsPIC30F6014A consomme plus de 250mA sous 5V et chauffe excessivement.

    Les régulateurs embarqués chauffent exagérément et plusieurs sont déjà tombés en panne.

    -  L’intégration est difficile, notamment dans le mulet, en raison de l’espace occupé par les

    connecteurs (pas de 2,54mm)

    Tous les UARTs sont utilisés et les autres ports disponibles (SPI et I²C) ne sont pas accessibles,

    ce qui limite l’évolutivité de la carte mère et empêche l’intégration de fonctionnalités telles

    que la lecture/écriture de cartes SD.

    Cahier des charges

    La nouvelle carte mère devra implémenter toutes les fonctionnalités des modèles précédent tout enrésolvant les problèmes rencontrés sur ceux-ci. Elle devra également être plus évolutive et

    implémenter les fonctionnalités absentes des anciens modèles, notamment :

    -  Une interface microSD, qui pourra servir pour l’enregistrement du journal de bord ou la

    lecture des coordonnées GPS à suivre (plan de vol).

    Des ports de communications supplémentaires (UART, SPI et I²C) pour interfacer la carte

    mère avec d’autres périphériques (par exemple les centrales inertielles des MIQ4 2011-2012)

    Choix des composants

    Microcontrôleur

    Le microcontrôleur étant le composant principal de la carte mère, c’est à lui d’implémenter la quasi-

    totalité des fonctionnalités décrites précédemment. Plusieurs critères de choix ont été considérés :

    -  Puissance de calcul en MIPS (Millions d’Instructions Par Seconde) 

    -  Consommation de courant

    Nombre de ports : UART, SPI, I²C, PWM et E/S génériques (GPIO)

    Taille de la mémoire (RAM et ROM)

    -  Prix

    -  Boîtier (la carte étant soudée à l’INSA) 

  • 8/19/2019 Projet Drone Partie électronique

    25/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 25 sur 34 

    De plus, l’impact sur le programme existant doit être le plus faible possible, d’où le choix d’un

    microcontrôleur de la famille dsPIC de Microchip. D’autres familles de microcontrôleur ont été 

    considérées, comme la famille AVR32 d’Atmel, cependant l’INSA ne dispose pas de tous les outils

    permettant de travailler avec ces circuits (programmateur, débogueur, etc.)

    À partir de ces critères et du sélecteur de produits Microchip en ligne

    (http://www.microchip.com/productselector/MCUProductSelector.html), le dsPIC33EP256MU806 a

    été retenu. Le tableau suivant permet de comparer certaines fonctionnalités de l’ancien et du

    nouveau microcontrôleur :

    Critère dsPIC30F6014A dsPIC33EP256MU806

    Performance Jusqu’à 30 MIPS Jusqu’à 60 MIPS

    Mémoire 144KB ROM, 8KB RAM 280KB ROM, 28KB RAM

    Ports de communication 2xUART, 2xSPI, 1xI²C 4xUART, 4xSPI, 2xI²C

    Sorties PWM 8 16

    USB Non Oui

    Prix 10.85€  9.58€ 

    Boîtier TQFP80 TQFP64

    Alimentation 5V 3.3V

    Remarque :  Comme la famille dsPIC33EP est relativement récente (été 2011), seuls les

    programmateurs/débogueurs PicKIT3 et ICD3 sont compatibles avec le dsPIC choisi.

     Alimentation

    Deux tensions doivent être présentes sur la carte mère :

    -  Un rail 5V pour l’alimentation du GPS, de l’IMU et de la carte capteurs.

    Un rail 3.3V pour le dsPIC, le XBee, la carte SD et le MAX3232.

    Un rail de 1,8V est également présent en interne sur le dsPIC33.

    Deux sources d’alimentation 5V sont prévues : 

    -  Un régulateur 5V alimenté par une batterie externe (LiPo 2S ou 3S) .

    Une source 5V externe présente sur le connecteur PPM (par exemple le circuit BEC descontrôleurs de moteurs brushless).

    Au départ, il était également prévu d’alimenter les servomoteurs par la carte mère. Un prototype

    d’alimentation à découpage 5V 4A a été développé, mais la tension de sortie était assez bruitée. De

    plus, l’encombrement du circuit est tel qu’il n’est pas pertinent de l’intégrer à la carte mère.

    La tension de 5V est donc obtenue avec un régulateur linéaire ; les servomoteurs ne seront pas

    alimentés par celui-ci. Cette solution est aussi plus élégante d’un point de vue électrique puisque les

    alimentations de logique et de puissance sont séparées.

    http://www.microchip.com/productselector/MCUProductSelector.htmlhttp://www.microchip.com/productselector/MCUProductSelector.htmlhttp://www.microchip.com/productselector/MCUProductSelector.htmlhttp://www.microchip.com/productselector/MCUProductSelector.html

  • 8/19/2019 Projet Drone Partie électronique

    26/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 26 sur 34 

    Comme la consommation sur le rail 3,3V est relativement faible, celui-ci est obtenu à partir du rail 5V

    et d’un régulateur linéaire. 

    Connecteurs

    Les anciens connecteurs au pas de 2,54mm étaient encombrant et peu pratiques à intégrer. De plus,la largeur des câbles posait de fréquents problèmes de fiabilité (arrachement sur les broches situées

    aux extrémités).

    Le choix s’est porté sur des connecteurs JST de la série SH pour les interconnexions entre les

    différents périphériques. L’encombrement est bien plus faible, ce qui permet d’intégrer la carte mère

    plus facilement dans les différents drones.

    Sur l’ancienne carte mère, les actionneurs (variateurs et servomoteurs) étaient branchés sur un

    connecteur à 3 rangées situé sur une petite carte annexe montée à angle droit sur la carte principale.

    Mécaniquement, cette solution n’est pas satisfaisante car l’intégralité des contraintes est supportée

    par les soudures de la face supérieure : en cas de choc, les pistes allant à ce connecteurs peuvent se

    détacher de la carte mère.

    Figure 18 : l’ancienne carte mère munie de la carte capteurs. Noter la vulnérabilité du connecteur PPM 

    Pour résoudre ce problème, j’ai choisi un connecteur 3 rangées à angle droit disponible chez Samtec.

    Comme il est soudé à travers la carte, les contraintes sont mieux réparties sur la carte.

    Conception de la carte

    Le schéma et le routage sont présentés en annexe.

    Schéma

    Le dsPIC33EP256MU806 intègre la fonction Peripheral Pin Select. Celle-ci permet de remapper les

    connexion internes aux périphériques (UART, SPI, etc.) à (presque) n’importe quelle broche physique

    du dsPIC. Par conséquent, l’attribution définitive des broches s’est faite en fonction du routage, afin

    de minimiser la longueur des pistes et le nombre de croisements (et donc de vias).

    Routage

    Initialement, il était prévu de réaliser la carte au Laboratoire Mécatronique avec la fraiseuse à PCB.

    Cette machine permet de graver des cartes double-face avec une précision suffisante pour réaliserdes pistes de 1/100e de pouce de largeur. Cependant, les trous et vias ne peuvent être métallisés

  • 8/19/2019 Projet Drone Partie électronique

    27/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 27 sur 34 

    comme sur des cartes industrielles, ce qui rajoute des contraintes : les connecteurs traversants ne

    peuvent être soudés que par le dessous de la carte et un via ne peut déboucher sous un composant

    CMS.

    La machine étant tombée en panne avant de pouvoir réaliser la carte mère, la fabrication de cettedernière a été confiée à Eurocircuits.

    Premiers tests et problèmes rencontrés

    Les tests de bases ont consisté en :

    des tests électriques menés durant la soudure : vérification des courts-circuits et circuits

    ouverts, polarité des LEDs et régulation des tensions

    -  détection et programmation du dsPIC au moyen d’un PicKIT3 

    Ces tests ont permis de constater une erreur de routage au niveau du régulateur 5V (AP1117,

    référence U7 sur la carte) : les broches Vout et GND sont inversées. Par conséquent, la source externeconnectée sur BATT. CM est court-circuitée et la carte est inutilisable dans cette configuration.

    Une solution temporaire consiste à n’utiliser que le connecteur PPM comme source 5V, le jumper J13

    doit donc se trouver en position 5V_SERVO. Si aucun variateur brushless n’est utilisé, l’alimentation

    peut être fournie par un régulateur externe.

    Le brochage a été corrigée sur la version de la carte fournie avec ce rapport ; le régulateur a été

    remplacé par un L4941 dont le brochage est différent. Celui-ci peut être monté sur les cartes

    actuelles en le soudant « à l’envers », c’est-à-dire avec le côté plastique du boîtier posé sur la carte et

    la partie métallique en l’air. 

    Figure 19 : brochage de l’AP1117  Figure 20 : brochage du L4941Figure 21 : montage du L4941 sur la

    carte actuelle

    Un autre problème a été rencontré lors de la confection de câbles équipés de connecteurs JST. En

    effet, le Laboratoire Mécatronique ne dispose pas de la pince à sertir spécifique à ces câbles et il est

    donc nécessaire de les réaliser manuellement. La procédure suivante permet de réaliser les broches

    de ces connecteurs en minimisant les sources de frustration :

    -  Laisser les broches sur la bande métallique avec laquelle elles sont livrées. Cela permet de les

    maintenir lors de la soudure et du sertissage

    Ecarter les lèvres du connecteur avec un scalpel ou un cutter pour éviter que la soudure ne

    remonte par capillarité et les colle ensemble-  Appliquer une goutte de soudure sur la partie médiane de la broche

  • 8/19/2019 Projet Drone Partie électronique

    28/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 28 sur 34 

    Insérer et souder le câble sur la broche

    -  Replier les pattes métalliques au moyen d’un pince à bout plat 

    -  Séparer la broche de la bande métallique (quelques aller-retours suffisent à casser la liaison).

    Figure 22 : installation de tests

    Mise à niveau du programme

    Le code source a été adapté au nouveau dsPIC en suivant les instructions de migration de Microchip,qui sont disponibles dans les documents suivants :

    -  dsPIC30F to dsPIC33F Conversion Guidelines

    (http://ww1.microchip.com/downloads/en/DeviceDoc/70172A.pdf ) 

    dsPIC33F/PIC24H to dsPIC33E/PIC24E Migration and Performance Enhancement Guide

    (http://ww1.microchip.com/downloads/en/DeviceDoc/70637D.pdf ) 

    Dans chaque fichier du programme, l’inclusion a été remplacée par pour

    refléter le changement d’architecture. Les bibliothèques de périphériques sont identiques, il n’est

    donc pas nécessaire d’apporter de changements supplémentaires pour leur utilisation. 

    Il a cependant été nécessaire de réécrire la routine d’initialisation :

    -  L’initialisation de la PLL se fait de façon différente sur le dsPIC33EP. La fréquence d’entrée

    (fournier par le quartz) est d’abord prédivisée, puis multipliée et postdivisée. Le rapport

    d’entrée/sortie est donné par (DSP_PLLFBD + 2)/((DSP_PLLPRE + 2) * 2 * (DSP_PLLPOST + 1)).

    En entrée, l’horloge est de 7,3728MHz et on choisit les coefficients de la PLL de telle façon à

    obtenir une vitesse d’horloge de 117,9648MHz, la vitesse maximale de fonctionnement. 

    La vitesse d’exécution des instructions a été doublée (de DSP_FOSC/4 à DSP_FOSC/2, avec

    DSP_FOSC la vitesse d’horloge principale) ; par conséquent les réglages des ports de

    communication et des timers ont été modifiés.

    IMU

    GPS

    Servomoteur

    PicKIT3

    Régulateurexterne

    Batterieexterne(LiPo 2S)

    Carte mèreXBee

    http://ww1.microchip.com/downloads/en/DeviceDoc/70172A.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/70172A.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/70172A.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/70637D.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/70637D.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/70637D.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/70637D.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/70172A.pdf

  • 8/19/2019 Projet Drone Partie électronique

    29/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 29 sur 34 

    -  L’initialisation de la fonction PPS a été rajoutée, elle consiste à attribuer les lignes internes

    des périphériques aux broches physiques correspondant au routage. Les broches attribuées à

    des périphériques non utilisées sont disponibles comme E/S génériques.

    La configuration du module PWM a été changée pour ajouter les 4 sorties supplémentaires,

    ce qui porte le nombre de lignes disponibles pour la commande des servos/variateurs à 12.Comme les registres utilisés diffèrent entre la famille dsPIC30F et la famille dsPIC33EP, les

    références à OCxRS ont été remplacées par OCxR (avec ‘x’ le numéro du module PWM). 

    Problèmes logiciels

    Certaines broches du dsPIC33EP256MU806 partagent plusieurs fonctionnalités, ce qui nécessite

    certaines opérations pour obtenir un fonctionnement correct :

    -  Le convertisseur analogique/numérique initialise chaque broche en mode entrée analogique.

    Par conséquent, il doit être reconfiguré pour n’échantillonner que les broches de mesure des

    tensions des batteries.-  La broche de réception GPS (GPS_MRST, RB10) est également utilisé par le port de test JTAG.

    Cette fonctionnalité doit être désactivée au moyen de la commande _FICD(ICS_PGD3 &

    JTAGEN_OFF); afin de ne pas interférer avec le module UART.

    -  La broche de réception IMU ne fonctionne que si l’interruption sur réception est activée

    avant le module UART.

    -  Les lignes RB6 et RB7 utilisées pour les LEDs rouges servent également comme lignes de

    programmation/débogage (PGEC1, PGED1). Bien que les lignes par défaut soient configurées

    sur PGEC3 et PGED3 au moyen de la macro _FICD  précédente, je n’ai pas réussi à faire

    fonctionner ces deux LEDs

    Conclusion

    À ce jour (15/01/2012), le code est suffisamment à jour pour effectuer des essais en vol avec les

    programmes existants. Ceux-ci devront être modifiés pour utiliser l’inclusion et les

    registres OCxR en lieu et place de et OCxRS.

    Il reste à présent à intégrer les fonctionnalités suivantes :

    Lecture des tensions de batterie sur AN25 et AN27

    -  La communication avec la carte capteurs

    La lecture et l’écriture de la carte SD. Un programme a été écrit pour cette fonctionnalité en2009-2010, il doit encore être mis à jour pour fonctionner avec la nouvelle carte.

  • 8/19/2019 Projet Drone Partie électronique

    30/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 30 sur 34 

    Table des figuresFigure 1 : Schéma synoptique de l'électronique embarquée et de la communication .......................... 4

    Figure 2: carte mère version 2011-2012 vue de dessus .......................................................................... 4

    Figure 3 : architecture matérielle de la carte mère ................................................................................ 5

    Figure 4 : implantation des composants sur la face supérieure de la carte mère .................................. 6

    Figure 5 : implantation des composants sur la face inférieure de la carte mère .................................... 6

    Figure 6 : répérage de la broche 1 des connecteurs PPM ....................................................................... 8

    Figure 7 : brochage du connecteur IMU (vue de dessus) ........................................................................ 9

    Figure 8 : brochage du connecteur GPS (vue de dessus) ...................................................................... 10

    Figure 9 : brochage du connecteur ICSP (vue de dessus) ...................................................................... 11

    Figure 10: brochage du connecteur de batterie ................................................................................... 11

    Figure 11 : brochage du connecteur SPI (vue de dessus) ...................................................................... 12

    Figure 12 : brochage du connecteur XBEE J9 (vue de dessus) .............................................................. 13

    Figure 13 : brochage du connecteur DEBUG J10 (vue de dessus) ......................................................... 14Figure 14 : brochage du connecteur SPI (vue de dessus) ...................................................................... 15

    Figure 15 : brochage du connecteur I2C (vue de dessus) ..................................................................... 16

    Figure 16 : brochage du connecteur BATT (vue de dessus) .................................................................. 16

    Figure 17: brochage du connecteur de batterie ................................................................................... 17

    Figure 18 : l’ancienne carte mère munie de la carte capteurs. Noter la vulnérabilité du connecteur

    PPM ....................................................................................................................................................... 26

    Figure 19 : brochage de l’AP1117 .......................................................................................................... 27

    Figure 20 : brochage du L4941 .............................................................................................................. 27

    Figure 21 : montage du L4941 sur la carte actuelle .............................................................................. 27

    Figure 22 : installation de tests ............................................................................................................. 28

    Table des tableauxTableau 1: caractéristiques principales du dsPIC33EP256MU806 .......................................................... 5

    Tableau 2 : repérage et référence des principaux composants de la carte mère................................... 7

    Tableau 3 : attribution des broches de J1 ............................................................................................... 8

    Tableau 4 : attribution des broches de J4 ............................................................................................... 9

    Tableau 5 : attribution des broches de J5 ............................................................................................. 10

    Tableau 6 : attribution des broches de J6 ............................................................................................. 11

    Tableau 7 : attribution des broches de BATT. CM ................................................................................. 11

    Tableau 8 : attribution des broches de J8 ............................................................................................. 12

    Tableau 9 : attribution des broches de J9 ............................................................................................. 13

    Tableau 10 : attribution des broches de J10 ......................................................................................... 14

    Tableau 11 : attribution des broches de J11 ......................................................................................... 15

    Tableau 12 : attribution des broches de J13 ......................................................................................... 16

    Tableau 13 : attribution des broches de J14 ......................................................................................... 16

    Tableau 14 : attribution des broches de BATT. CM ............................................................................... 17

  • 8/19/2019 Projet Drone Partie électronique

    31/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 31 sur 34 

  • 8/19/2019 Projet Drone Partie électronique

    32/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 32 sur 34 

     Annexe 1 : schéma électrique de la carte mère

  • 8/19/2019 Projet Drone Partie électronique

    33/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

    Page 33 sur 34 

  • 8/19/2019 Projet Drone Partie électronique

    34/34

     

    Projet Drone – partie électronique : Carte mèreSTRUB Guillaume

    MIQ52011 – 2012

     Annexe 2 : routage de la carte mère

    Face supérieure

    Face inférieure