Archives pour la catégorie Robotique

Modèle géométrique pour robots mobiles à roues différentielles

Dans cet article, le modèle géomètrique est une transformation mathèmatique dont les entrées sont les vitesses angulaires des roues (généralement mesurées avec des codeurs) et la sortie est la pose (position et orientation) du robot mobile dans son espace de travail.

Définition du problème

nous nous intéresserons ici aux robots à roues différentielles. Ce type de robot est constitué de deux roues alignées sur le même axe. Ci-dessous, se trouve une illustration de Rat-Courci, un petit robot à roues différentielles conçu pour le concours Micromouse:

Rat-Courci

Le diamètre des roues est donné par D=2.rr est le rayon. La distance entre le centre du robot et les roues est donné par l, la distance entre les roues est alors donnée par 2.l conformément à l’illustration suivante:

Dimensions

Nous supposerons les paramètres suivants connus:


  • r est le rayon des roues

  • l la distance entre le centre du robot et les roues

  • \omega_l et \omega_r sont respectivement les vitesses angulaires instantanées des roues gauche et droite

Geometric_Model

Notre but est de calculer la pose du robot définie selon la figure ci-dessus:


  • x et y sont les coordonnées cartésiennes du robot

  • \psi est l’orientation (position angulaire) du robot

Calcul des déplacements élémentaires

Pour commencer, calculons la vitesse linéaire de chaque roue:

\begin{array}{r c l} v_l &=& r.\omega_l \\ v_r &=& r.\omega_r\end{array}

La vitesse moyenne du robot est alors donnée par:

 v_{robot}=\frac {v_l + v_r} {2}

La vitesse du robot peut être projetée le long des axes x et y:

\begin{array}{r c l} \Delta_x &=& v_{robot}.cos(\psi)&=&\frac {r}{2} ( \omega_l.cos(\psi) + \omega_r.cos(\psi))\\ \Delta_y &=& v_{robot}.sin(\psi)&=&\frac {r}{2} ( \omega_l.sin(\psi) + \omega_r.sin(\psi))\end{array}

La vitesse angulaire du robot est calculée par la différence des vitesses linéaires des roues:

 2.l.\Delta_{\Psi}=r.\omega_r - r.\omega_l

L’équation précédente peut être reformulée:

 \Delta_{\Psi}=\frac {r.\omega_r - r.\omega_l} {2.l}

Le déplacement élémentaire du robot est donnée par la relation suivante:

\left[ \begin{matrix} \Delta_x \\ \Delta_y \\ \Delta_{\Psi} \end{matrix} \right]=\frac{r}{2}.\left[ \begin{matrix} cos(\psi) & cos(\psi) \\sin(\psi) & sin(\psi) \\\frac{1}{l} & \frac{-1}{l}\end{matrix} \right].\left[ \begin{matrix} \omega_r \\ \omega_l\end{matrix} \right]

Position absolue

La position absolue peut être calculée grâce aux équations suivantes:

\begin{array}{r c l}
x_{i}&=&x_{i-1}+\Delta_x \\
y_{i}&=&y_{i-1}+\Delta_y \\
\Psi_{i}&=&Psi_{i-1}+\Delta_{\Psi}
\end{array}

où:


  • x_{i} et y_{i} sont les coordonnées cartésiennes du robot à l’instant i

  • \Psi_{i} est l’orientation du robot à l’instant i

Bien sûr, ce modèle a quelques limitations. Le résultat est fortement dépendant de la précision de la mécanique du robot (ajustements, diamètre des roues, mesures …). Nous supposons ici qu’il n’y a pas de glissement, ce qui n’est pas vrai en pratique. Nous supposons également que la fréquence d’échantillonnage est suffisamment rapide pour garantir que \Delta_x, \Delta_y et \Delta_\Psi pourront être considérés comme des déplacements élémentaires.

Asservissement PI pour un système du premier ordre

Introduction

Le but de ce post est d’expliquer et de démontrer comment calculer un correcteur PI (proportionel-intégral) pour un système du premier ordre. Considérons le système à asservir avec pour fonction de transfert G, le système en boucle fermé est donné par le schéma suivant:

ClosedLoopControl

Fonction de transfert en boucle fermée

La fonction de transfert du stystème est donnée par:

 \frac{y}{y_c} = \frac {CG}{1+CG}

comme G est modélisé par un système du premier ordre, sa fonction de transfert est donnée par:

 G=\frac{b}{z-a} = \frac{b} { z-e^{-\Delta/\tau} }

\Delta est la période d’échantillonage et \tau la constante de temps du système en boucle ouverte.

C est le correcteur PI, sont équation est donnée par:

 C=K . \frac{z-a}{z-1}

La fonction de tranfert du système en boucle fermée devient:

  \frac{y}{y_c} = \frac { K  \frac{z-a}{z-1} \frac{b}{z-a} }{1+ K  \frac{z-a}{z-1} \frac{b}{z-a}}

L’équation précédente peut être simplifiée:

  \frac{y}{y_c} = \frac { K  \frac{b}{z-1}  }{1+ K  \frac{b}{z-1} }

La nouvelle fonction de transfert est donnée par:

  \frac{y}{y_c} = \frac { Kb }{ z -1 + Kb }

Gain statique du système en boucle fermée

Considérons la réponse du système en boucle fermée à une entrée de type échelon unitaire (\frac{z}{z-1}):

 y(z) = \frac { zKb }{ (z -1 + Kb)(z-1) }

D’après le théorème de la valeur finale (transformée en z), le gain statique du système est donné par:

 \lim\limits_{z \to 1} (z-1).y(z) = \lim\limits_{z \to 1} \frac { zKb(z-1) }{ (z -1 + Kb)(z-1) } = \lim\limits_{z \to 1} \frac { zKb }{ (z -1 + Kb) } = 1

Comme le gain statique du système est équal à 1, l’erreur statique est nulle.

Constante de temps du système en boucle fermée

Le système en boucle fermée est aussi un premier ordre :

  \frac{y}{y_c} = \frac { Kb }{ z -1 + Kb } = \frac { Kb }{ z - e^{-\Delta/\tau_c} }

\Delta est la période d’échantillonage et \tau_c la constante de temps du système en boucle fermée. Il est à noter que \tau_c peut être inférieur à \tau (la constante de temps du système en boucle ouverte). Si \tau_c<\tau le système est plus vif, (mais consomme plus d’énergie). En pratique, \tau_c=\tau/2 est un bon compromis. D’après l’équation précédente :

 1-Kb = e^{-\Delta/\tau_c}

et :

 K= \frac {1-e^{-\Delta/\tau_c}} {b}

Pour obtenir le même temps de réponse en boucle ouverte et en boucle fermée, l’équation précédente devient:

 K= \frac {1-a} {b}

Stabilité

Le système est stable si tous ses pôles sont situés à l’intérieur du cercle unité. Ici, comme le système est du premier ordre, il n’y a qu’un seul pôle : 1-Kb. Le système est stable si:

 -1<1-Kb<1

Cette équation peut être reformulée :

 0<Kb<2

et :

 0<K<\frac{2}{b}

Il est à noter que si  K est calculé depuis  \tau_c (K= \frac {1-e^{-\Delta/\tau_c}} {b} ), le terme e^{-\Delta/\tau_c} est inclus dans l’interval [0,1[ et le système est nécessairement stable car il en découle que 0<Kb\le1.

Domaine échantillonné

La fonction de transfert du correcteur exprimée dans le domaine échantillonné est donnée par:

 \frac{u(z)}{\epsilon(z)} =  K . \frac{z-a}{z-1}

 (z-1)u(z) =  K(z-a)\epsilon(z)

 z.u(z) - u(z) =  K.z.\epsilon(z) -K.a.\epsilon(z)

 z.u(z) = K.z.\epsilon(z) - K.a.\epsilon(z) + u(z)

Exprimons maintenant l’équation précédente dans le domaine discret:

 u_{n+1}= K\epsilon_{n+1} - K.a.\epsilon_n + u_{n}

ou :

 u_{n}= K\epsilon_{n} - K.a.\epsilon_{n-1} + u_{n-1}

Vidéo

Téléchargement

Remerciements

Je tiens à remercier Laurent Hardouin de l’Université d’Angers pour son aide et ses explications.

Maxon EC45 – à l’intérieur d’un moteur sans balais

Cette série de photos montre comment sont faits les moteurs brushless Flat (BLCD) de chez Maxon. Il s’agit ici d’un moteur EC45 flat (référence 339285):
DSC_0244
DSC_0246

La cage peut être retirée:DSC_0243

Les aiments sont montés dans la cage (bague noire):DSC_0236

12 bobinages (4 series de 3 phases):DSC_0234

Trois capteurs à effet hall sont placés entre les bobinages:DSC_0237

La cage tournante est montée sur des roulements à billes:DSC_0238

Le dessus de la cage avec les références du moteur: DSC_0239

Boucle ouverte / boucle fermée

Boucle ouverte

Considérons le système suivant en boucle ouverte:

OpenLoop

La fonction de transfert du système est donnée par :

 \frac {y}{u} = G

Boucle fermée

Considérons maintenant le système en boucle fermée:

ClosedLoop

L’érreur  \epsilon est définie par la différence entre la consigne (valeur désirée) et la sortie du système (la valeur réelle) :

 \epsilon = y_c - y

La sortie du système est donnée par :

 y=G.u=G.\epsilon

En replaçant \epsilon dans l’équation précédente, nous obtenons:

 y=G.(y_c - y) = G.y_c - G.y

Cette équation peut être reformulée de façon à obtenir la fonction de transfert suivante :

 \frac{y}{y_c} = \frac {G}{1+G}

Boucle fermée avec correcteur

Considérons maintenant l’ajout d’un correcteur :

ClosedLoopControl

Nous pouvons en déduire la fonction de transfert suivante:

 \frac{y}{y_c} = \frac {CG}{1+CG}

Premiers pas avec EAGLE

Eagle_Logo

Tutoriel

Premiers pas avec EAGLE – Partie 1 – Le panneau de contrôle
Premiers pas avec EAGLE – Partie 2 – L’éditeur de schémas
Premiers pas avec EAGLE – Partie 3 – L’éditeur de cartes

Utilisation avancée

Premiers pas avec EAGLE – Ajouter des trous de montage sur un circuit imprimé
Premiers pas avec EAGLE – Le plan de masse
Premiers pas avec EAGLE – Comprendre les calques
Premiers pas avec EAGLE – Créer un modèle Solidworks 3D depuis Eagle

Download


Premiers pas avec EAGLE – Le plan de masse

Cet article fait partie d’un tutoriel sur le logiciel EAGLE. Le lecteur est invité à se référer aux autres sections de ce tutoriel en suivant ce lien : Premiers pas avec EAGLE

Créer un plan de masse

L’outil POLYGON permet de dessiner le contour du plan de masse.

Polygon

Selectionner cet outil. Si le plan de masse est attaché à une connexion, saisir le nom de la connexion au clavier directement après la sélection de l’outil POLYGON et valider par Entrée:

AttachNet

Il sera toujours possible de modifier la connexion en cliquant avec le bouton droit de la souris sur le contour du polygone, puis sélectionner NAME dans le menu contextuel. Dans la fenêtre qui apparaît, remplacer GND par le label de la nouvelle connexion. Cette astuce est aussi utile pour vérifier que la connexion a bien été prise en compte.
Cliquez pour dessiner les extrémités du contour et double-cliquer pour terminer le polygon. Une fois le contour achevé, ce dernier apparait en pointillés:

DottedLine

Cliquer sur l’icône RATSNETS pour calculer et afficher le plan de masse:

Ratsnets

Le routage doit être mis à jour. Quand le circuit est modifié, le plan de masse n’est pas systématiquement recalculé. L’outil RATSNETS permet de forcer la mise à jour du plan de masse.

CopperPour

Conflit avec le contour de la carte

Selon la configuration des règles de vérification, il se peut que le plan de masse soit isolé des contours de carte:

CopperPourOutline

Cela peut être résolu en paramètrant la distance entre le plan de masse et le calque 20 (Dimension). Sélectionner DRC, aller dans l’onglet Distance et paramètrer la distance à zéro:

DistanceCopperPour

Connecter le plan de masse

Avant de spécifier le potentiel du plan de masse, il est parfois utile d’enlever les pistes existantes. Cela peut être fait facilement avec le commande RIPUP, par exemple “RIPUP GND”, supprime toutes les pistes liées au potentiel GND déja routées.
Pour changer le potentiel d’un plan de masse, sélectionner la commande NAME et cliquer le contour du plan de masse. Une fenêtre apparait et l’utilisateur peut modifier le nom du plan de masse. Quand le nom est aussi celui d’une piste existante, (par exemple GND), une connexion électrique est automatiquement créée entre la piste et le plan de masse. Sur le routage illustré ci-dessous, le plan de masse est relié à la masse:

CopperPour

Supprimer le plan de masse

Pour supprimer définitivement un plan de masse, il suffit de supprimer son contour. Pour une suppression temporaire ou pour masquer le plan de masse, selectionner l’outil RIPUP et cliquer sur le contour. Cela efface le plan de masse tout en conservant son contour (en pointillés). L’outil RATSNETS permet de recalculer le plan de masse.

Cliquer ici pour revenir au sommaire

Premiers pas avec EAGLE – Ajouter des trous de montage sur un circuit imprimé

Cet article fait partie d’un tutoriel sur le logiciel EAGLE. Le lecteur est invité à se référer aux autres sections de ce tutoriel en suivant ce lien : Premiers pas avec EAGLE

VIA vs HOLE

Il y a deux façons d’ajouter un trou (perçage ou via) dans un circuit imprimé avec EAGLE et la différence mérite une explication.
via hole
Un via est composé d’un trou et d’une zone de cuivre (généralement de la forme d’une pastille) qui entoure ce trou. La différence principale entre un via (VIA) et un perçage (HOLE) est que le via crée une connexion électrique entre les couches. L’outil de perçage (HOLE) ne fait que placer un trou sans ajouter de cuivre ni de connexion électrique. Le choix dépendra donc du type de montage auquel est destiné le trou. L’image suivante montre la différence entre l’ajout de vias et de perçages. A gauche du circuit imprimé, des perçages ont été utilisés, à droite, ce sont des vias.

Board

Comme illustré sur la figure suivante, les vias sont isolés du plan de masse:

BoardCopperPour

Diamètres de perçage

Quelque soit l’outil choisi, le diamètre de perçage doit être défini. L’éditeur de circuit est généralement configuré en mils (ou inchs) et la visserie est côtée en millimètres.
Le tableau suivant vous permet de trouver la correspondance rapidement parmi les diamètres fréquemment utilisés.
[mil][mm]
19.68504 mils0.5 mm
23.62205 mils0.6 mm
27.55906 mils0.7 mm
31.49606 mils0.8 mm
35.43307 mils0.9 mm
39.37008 mils1.0 mm
43.30709 mils1.1 mm
47.24409 mils1.2 mm
51.1811 mils1.3 mm
55.11811 mils1.4 mm
59.05512 mils1.5 mm
62.99213 mils1.6 mm
78.74016 mils2.0 mm
86.61417 mils2.2 mm
110.23622 mils2.8 mm
125.98425 mils3.2 mm

Si la valeur n’est pas listée , consulter ce lien : Convertisseur de distance

Cliquer ici pour revenir au sommaire

Premiers pas avec EAGLE – Partie 3 – L’éditeur de cartes

Cet article fait partie d’un tutoriel sur le logiciel EAGLE. Le lecteur est invité à se référer aux autres sections de ce tutoriel en suivant ce lien : Premiers pas avec EAGLE
Le lecteur est supposé avoir lu et réalisé la partie 2 de ce tutoriel et disposeer du schéma finalisé. L’éditeur de circuit doit se présenter sous cette forme:

BoardEditor

Forward and backward annotation

Vérifier que l’éditeur de schéma et de circuit sont ouverts simultanément. Effectuer une sauvegarde dans les deux éditeurs et fermer l’éditeur de cartes. L’éditeur de schéma doit afficher l’avertissement suivant: : “Forward and backward annotation has been severed !”:

FB_Annotation

EAGLE repose sur le maintien permanant du lien entre le schéma et le routage. Lorsqu’une modification est réalisée dans le schéma, le routage est automatiquement mis à jour (forward annotation). De la même façon, lorsque le routage est modifié, le schéma est mis à jour (backward annotation). cela permet d’éviter la division du projet en deux parties incompatibles. La contrepartie est que l’utilisateur doit garder ce lien à l’esprit pendant la conception.

Espace de travail

L’environement de routage est très proche de l’éditeur de schéma (l’organisation de l’interface utilisateur est sensiblement identique). En procédant de façon similaire à l’éditeur de schéma, afficher une grille de 50 mils dans l’éditeur de circuit. Sélectionner l’outil WIRE pour dessiner le contour de la carte. Au dessus de la zone de travail, une barre de menu horizontale s’affiche automatiquement. Il s’agit des propriétés de l’outil WIRE. Sélectionner la couche 20 (Dimension) et choisir une épaisseur de trait de 10 mils. Une remarque importante est que l’unité utilisée dans l’éditeur est définie par l’unité utilisé pour la grille.

WireProperties

Cliquez sur l’origine de l’espace de travail (coordonnées 0,0), puis cliquez aux coordonnées 1600,1000 et finaliser le contour en cliquant à nouveau sur le point origine (un click droit pendant la définition du contour permet de modifier la forme de la liaison). Le contour de la carte devrait s’afficher en gris:

BoardOutline

Il est pratique de se souvenir que la molette de la souris permet de zoomer dans l’espace de travail et le bouton du milieu permet de se déplacer dans la vue courante (le bouton doit être maintenu pendant le déplacement de la souris).

Placement des composants

Comme pour l’éditeur de schéma, l’outil MOVE est utilisé pour déplacer les composants. L’éditeur de circuits affiche une vue de dessus de la carte. Les éléments affichés en rouge se trouvent sur le dessus de la carte (côté composants) et les élements déssinés en bleu sont sur le dessous (côté cuivre). L’outil MIRROR permet de changer un composant de face. Sélectionner l’outil, et cliquer sur l’origine (petite croix blanche) du composant à modifier. Placer C2 côté cuivre et C3 côté composants.

Mirror

Comme pour l’éditeur de schéma, lors du déplacement, un clic gauche place le composant, un clic droit permet de réaliser une rotation. Lors du placement des composants, il est possible d’actualiser le chevelu (i.e. calculer le lien direct le plus court pour chaque connexion) en utilisant l’outil RATSNETS:

Ratsnets

Placer les composants selon l’arrangement suivant et actualiser le chevelu:

ComponentArrangement

Routage

Le routage consiste maintenant à transformer le chevelu en pistes de cuivre. Cela se fait grâce à l’outil ROUTE:

Route

Pour créer une nouvelle piste, sélectionner l’outil de routage et cliquer sur une connexion non routée du chevelu. La piste apparait et s’adapte aux mouvements de la souris. Un clic droit permet de changer le chemin de la piste comme dans l’éditeur de schéma. Le double clic permet de terminer l’action. Changer la couche courante pendant le routage d’une piste (menu Layer situé en haut à gauche au dessus de l’espace de travail) permet de faire passer la piste d’une couche à l’autre et ajoute automatiquement un via si cela est nécessaire. Utiliser le bouton du milieu pour changer de face permet de gagner un temps considérable pendant le routage.
La transformation inverse (passer d’une piste routée vers le chevelu) n’est pas réalisée avec l’outil DELETE. Cet outil supprime la connexion. Lorsque le lien avec l’éditeur de schéma est actif (forward and backward annotation), supprimer une connexion n’est pas possible depuis l’éditeur de circuit; cela doit impérativement être fait dans l’éditeur de schéma. Pour supprimer le routage d’une piste, il faut utiliser l’outil RIPUP:

Ripup

Pour supprimer une connexion complète (et pas seulement un segment) il est possible de cliquer sur une connexion non routée (un fil du chevelu) et toutes les pistes et vias adjacents seront déroutées jusqu’à la prochaine broche ou composant. De cette façon, en cliquant deux fois sur une piste il est possible de supprimer rapidement l’ensemble des segments formant cette piste. Les pistes et les vias peuvent être déplacés avec l’outil MOVE. Sélectioner une piste proche d’une extrémité d’un segment va bouger cette extrémité. Sélectionner une piste au milieu d’un segment va déplacer le segment. Il est important de noter que pour déplacer un composant, sont origine doit être visible (calque 23 (tOrigins) et 24 (bOrigins) pour les composants situés respectivement côté composant et côté cuivre).
L’outil SPLIT permet de diviser un segment en deux (ajouter une courbure dans une piste). Cette commande est utilie pour déplacer ou modifier une piste existante:

Split

Router la carte selon l’illustration suivante (la largeur des pistes est de 50 mils):

Routed

Modifier le routage

L’outil CHANGE permet de modifier les propriétés des éléments du routage. Lors de la selection de cette commande, un menu contextuel apparaît avec la liste des propriétés:

Change

Selectionner WIDTH > 10 et cliquer sur une piste du routage. La largeur de la piste est alors modifiée. L’action peut être annulée avec la commande UNDO (Ctrl-Z). Les noms et valeurs des composants ne peuvent pas être modifiés avec cet outil, ils doivent impérativement être réalisés avec les commandes NAME et VALUE comme dans l’éditeur de schéma. Modifier la valeur de la résistance R3 de 680 à 470 et vérifier que le schéma est mis à jour:

BackAnnotate

Réaliser l’action inverse depuis l’éditeur de schéma et vérifier que le routage a été mis à jour. Lorsqu’une action est appliqué sur un objet trop proche d’un autre, le logiciel ne peut pas deviner lequel est concerné. Dans ce cas, un seul objet est mis en surbrillance et un clic droit permet de sélectionner un autre candidat. Un clic gauche permet finalement d’appliquer l’action à l’objet en surbrillance.

Vérification du respect des règles de routage

Avant de lancer la fabrication du circuit imprimé, il est prudent de vérifier le routage à l’aide de l’outil DRC (Design Rule Check). Sélectionner l’outil en cliquant sur l’icône.

DRC

La fenêtre de configuration s’ouvre. Le concepteur peut spécifier ses propres règles de vérification. Lorsque les règles sont configurées, cliquer sur le bouton CHECK pour lancer la vérification. S’il n’y a pas d’erreur, un message est simplement affiché en bas de l’éditeur. Si des erreurs sont détectées une fenêtre apparaît :

DRC_Errors

Ici deux erreurs sont détectées. Les perçages des vias sont trop petits au regard des règles de routages. En sélectionnant une des erreur, celle-ci est mis en évidence dans le routage:

Error_Hilighted

Avec l’outil CHANGE, augmenter le diamètre de perçage des vias de 23.62205 à 27.55906. Relancer la vérification, dans le coin inférieur gauche de la fenêtre, le message suivant devrait apparaitre : “DRC: No errors”. Le circuit est prêt pour la fabrication.

Cliquer ici pour revenir au sommaire

Premiers pas avec EAGLE – Partie 2 – L’éditeur de schémas

Cet article fait partie d’un tutoriel sur le logiciel EAGLE. Le lecteur est invité à se référer aux autres sections de ce tutoriel en suivant ce lien : Premiers pas avec EAGLE
Dans la suite de ce tutoriel, le lecteur sera guidé dans la création d’un circuit élémentaire afin de découvrir la réalisation intégrale d’un circuit imprimé. La première étape est la réalisation du schéma.

Espace de travail

Avant de commencer le schéma proprement dit, nous allons insérer un cartouche qui pourra contenir les éléments principaux de notre projet (titre, date, auteurs…). Dans la barre verticale située à gauche de la fenêtre, sélectionner l’outil d’ajout en cliquant sur l’icône ADD. Cet outils permet l’ajout de nouveaux éléments dans le schéma. Il est majoritairement utilisé pour l’ajout de composants.

Add_Icon

Une fenêtre s’ouvre et affiche la liste des bibliothèques disponibles. Dans le champ de recherche (Search) situé en bas à gauche de la fenêtre, entrez “frame” et confirmez par entrer :
Add_Frame
La liste des bibliothèques est maintenant limitée aux entrées contenant le mot “frame” dans leur titre ou leur description. Sélectionner le cartouche A4L-LOC qui est un cartouche standard DIN A4 disposé en paysage et valider en cliquant sur OK. Le cartouche est maintenant associé au curseur de la souris, placer le cartouche de façon à aligner le coin inférieur gauche avec l’origine du repère (0,0). Les coordonnées sont affichées en haut à gauche de l’espace de travail. L’origine est également représentée graphiquement par une petite croix dessinée en pointillés. Quand le cartouche est positionné, un clic gauche de la souris permet de le fixer et deux appuis consécutifs sur Echap permettent de quitter l’outil.

Frame_Grid

Sauvegarder votre schéma et ajuster la vue en cliquant sur “Zoom to fit”. Vous devriez maintenant avoir une vue générale du futur schéma.

ZoomToFit

Cliquez sur l’icône de configuration de la grille:

Grid

La fenêtre de configuration de la grille apparait, il est possible d’y régler les différents paramètres (taille, style, etc.). Rendre la grille visible en cochant “On” pour le champ “display”, valider sur “OK”. L’espace de travail est prêt pour recevoir le schéma et devrait resembler à ceci:

Workspace

Ajout des composants

Cliquer sur l’outil d’ajout qui a déjà été utilisé pour l’ajout du cartouche. EAGLE propose une large panoplie de bibliothèques de composants, et l’utilisateur peut utiliser des masques de recherche en utilisant les caractères spéciaux (wild cards) ‘?’ et ‘*’:

  • * est un masque de recherche qui peut être remplacé par un ou plusieurs caractères. Par exemple *555 va afficher toutes les entrées se terminant par 555. 555* va afficher toutes les entrées commençant par 555 et *555* va afficher toutes les entrées comportant 555.
  • ? est un masque de recherche similaire à l’étoile, mais il ne peut être remplacé que par un unique caractère.

Lors de l’ajout d’un composant, l’utilisation du clic droit est pratique pour tourner le composant avant de le placer (clic gauche). Lorsque le symbole est placé, des modifications sont toujours possibles :

Move Copy RotateDelete
Rechercher et ajouter les composants suivants :
DésignationBibliothèqueComposantBoitier
NE555st-microelectronicsNE555DIL-08
ResistancerclR-EU0204/7
Condensateur polarisérclCPOL-EU2,5-6EE2,5-6E
CondensateurrclC-EUC1206C1206
Borniercon-ptr500AK500/2AK500/2
LED 5mmledLED5MMLED5MM
Symbole VCC supply2VCC-
Symbole GNDsupply2GND-
Vous aurez remarqué que, bien que VCC et GND ne soit pas des composants physiques, nous les trouvons dans les bibliothèques. Ajouter, dupliquer et placer les composants selon l’arrangement suivant:

ComponentsPlacement

Ajout des connexions

Les connexions électriques doivent être ajoutées avec l’outil NET (ou l’outil Bus pour l’ajout de bus). Attention de ne pas confondre avec l’outil WIRE qui dessine aussi des lignes, mais n’est pas dédié aux connexions électriques. Il appartient aux outils de dessin (texte, cercle, arcs…).

net

lorsque l’outil de connexion NET est sélectionné, ajouter une connexion en cliquant sur la première broche à connecter. Placer le curseur sur la seconde broche (ou liaison); cliquer avec bouton droit de la souris permet de changer le chemin emprunté par la connexion. Cela peut aussi être réalisé en sélectionnant un des outils suivants:

WireBendStyle

Connecter les éléments de votre schéma selon la disposition suivante. Il s’agit d’un oscillateur élémentaire à base de NE555 qui permet de faire clignoter une LED:

SchematicWiring

Valeurs et noms des composants

L’icône suivant NAME permet à l’utilisateur de changer le nom d’un composant:

Name

De la même façon, l’icône suivant VALUE permet de modifier la valeur d’un composant (quand ce dernier s’y prête):

Value

Renommer et modifier les valeurs de chaque symbole conformément au schéma suivant:

Rename

Vérification du schéma

Lorsque le schéma est terminé, il est prudent d’utiliser l’outil ERC (Electric Rules Check). Cet outil permet de détecter d’éventuelles erreurs dans le schéma (composants mal connectés ou incompatibles …).

ERC.

Une nouvelle fenêtre apparait et affiche quatre avertissements:

ErrorList

Le premier dit que la broche 8 du NE555 s’appelle VCC+ alors qu’elle est connectée à VCC. Les trois autres stipulent que le cartouche, la LED et le bornier n’ont pas de valeur. Aucun de ces quatre avertissements n’est réellement une erreur et ils peuvent être amendés. La boite de dialogue ne doit maintenant afficher aucune erreur ni avertissement, et quatre approuvés:

ErrorApproved

Préparation du routage

Lorsque le schéma est terminé et vérifié, le circuit imprimé peut être créé. Cliquer sur l’icône suivant pour générer le circuit imprimé et lancer l’éditeur.

GenerateBoard

Il est possible qu’EAGLE vous demande de confirmer la création du nouveau circuit à partir de votre schéma, répondre Yes. Le circuit est automatiquement généré et préparé pour le routage:

BoardEditor

Cliquer ici pour passer à l’étape suivante
Cliquer ici pour revenir au sommaire

Premiers pas avec EAGLE – Partie 1 – Le panneau de contrôle

Cet article fait partie d’un tutoriel sur le logiciel EAGLE. Le lecteur est invité à se référer aux autres sections de ce tutoriel en suivant ce lien : Premiers pas avec EAGLE
Eagle signifie Easily Applicable Graphical Layout Editor. C’est un logiciel de CAO dédié à l’électronique développé par la société Allemande CadSoft Computer GmbH. EAGLE est founi avec, entre autre, un éditeur de schéma (schematic capture editor), un éditeur de circuit imprimés (PCB Printed Circuit Board layout editor), un routeur automatique et des outils d’aide à la mise en production (CAM Computer-Aided Manufacturing)… Ce logiciel est compatible avec Windows, Linux et Mac OS X. Ce tutoriel a été préparé avec le version 6.5.0 sous Ubuntu 12.04 LTS

Control panel

La fenêtre suivante apparait au démarrage d’EAGLE, il s’agit du panneau de contrôle:ControlPanelDans la partie gauche de la fenêtre, l’utilisateur peut avoir une vue d’ensemble des projets, des bibliothèques et des différents réglages:

  • Libraries: contient la liste des bibliothèques de composants disponibles. Chaque composant est constitué d’un symbole lié à son empreinte.
  • Design Rules: l’utilisateur peut régler ici les principaux paramètres de routages et de mise en production.
  • User Language Programs: ce sont des programmes (écrits dans un langage proche du C) qui peuvent être utilisés pour différentes fonctionalités. Ils peuvent servir, par exemple à modifier un projet ou automatiser certaines tâches.
  • Scripts: il est possible d’exécuter des fichiers de script contenant des séquences de commandes. Cela permet de personnaliser certaines actions selon des besoins propres (définir des touches de raccourci, charger des contours de cartes prédéfinis, changer les couleurs …)
  • CAM Jobs: CAM est l’accronyme de Computer-Aided Manufacturing (production assisté par ordinateur). Cela permet de générer les données pour la mise en production (par exemple la production des Gerbers, qui est le format le plus répandu dans l’industrie).
  • Projects: cet branche contient la liste des exemples et projets. Lors de la création d’un nouveau projet, celui-ci est automatiquement ajouté à la liste.

La carte Arduino MEGA2560 a été conçue avec EAGLE. Elle est fournie parmi les exemples:
Arduino

Répertoires

Par défaut, EAGLE sauvegarde tous les projets et les fichiers dans le même dossier principal et crée des sous-dossiers pour différencier les projets. Dans la barre de menu principal, sélectionner Option puis Directories:

Menu_Directory

L’interface illustré ci-dessous permet à l’utilisateur de configurer les répertoires de sauvegarde. $EAGLEDIR représente ici le répertoire principale (sur mon installation, celui-ci correspond à /home/username/eagle-6.5.0/). Lors de la création d’un nouveau projet, un nouveau sous-dossier est automatiquement créé dans $EAGLEDIR/projects/ . L’utilisateur peut paramétrer différents dossiers. Il est par exemple possible d’avoir les bibliothèques par défaut sur un disque réseau et les projets personnels dans un répertoire local privé.

Directory

Avant de poursuivre, vérifier que le répertoire pour les bibliothèques (Libraries) est correctement configuré: $EAGLEDIR\lbr.

Bibliothèques

Dans la partie gauche du panneau de contrôle, cliquer sur Libraries pour développer l’arborescnce et chercher la bibliothèque 74xx-eu.lbr. Cette bibliothèque contient les circuits TTL (série 74xx de Texas Instruments). Choisissez un circuit, dans la partie droite le symbole et l’empreinte apparaissent:

Library

Nouveau projet

Pour créer un nouveau projet, selectionner File > New > Project :
NewProject

Le nouveau projet est automatiquement ajouté dans la partie gauche de la fenêtre principale (sous Project/eagle). Entrer le nom de votre projet, par exemple FirstPCB :
ProjectName

Effectuer un clic droit sur le nouveau projet et choisisser New > Schematic.
NewSchematic

Une nouvelle fenêtre s’ouvre, c’est l’éditeur de schéma (Schematic Editor):
SchematicEditor

Cliquer ici pour passer à l’étape suivante
Cliquer ici pour revenir au sommaire

Dimensionnement de moteur en ligne

Cette page vous permet de dimensionner un moteur entraînant un système mobile. Il est fortement recommandé de consulter cette page avant toute utilisation, cela permettra une meilleure compréhension du calculateur.

Installation d’Eagle sur Ubuntu 12.04 LTS 64bits

Lors de l’installation d’Eagle 6.5.0 sur Ubuntu 12.04 LTS 64 bits l’erreur suivante apparait :

ligne 108: /tmp/eagle-setup.9094/eagle-6.5.0/bin/eagle: Aucun fichier ou dossier de ce type

Cette erreur est due à des packages manquants et peut être facilement résolue en exécutant les commandes suivantes avant installation:

sudo apt-get install libssl1.0.0
sudo apt-get install libcrypto++9
sudo apt-get install build-essential perl gcc-multilib
sudo apt-get install ia32-libs lib32z1 lib32z1-dev

Mesure de distance avec un Arduino et des capteurs Sharp

Le but de cet article est d’expliquer comment convertir la tension des capteurs de distance Sharp en une mesure de distance précise. Ces capteurs utilise la technique de triangulation pour estimer une distance. Il s’agit des références GP2Y0A02YK et GP2Y0A21YK avec des distances respetives de 20cm à 150cm et de 10 à 80cm.

Relevé des mesures

Un relevé des mesures a été réalisé avec un pas de 10 mm. Le graphique suivant montre la sortie du capteur GP2Y0A02YK en fonction de la distance. Comme cela est mentionné dans la documentation, le capteur ne peut pas effectuer de mesure en dessous de 20 cm. Cette plage de distance est difficilement utilisable car il est impossible de lever les ambiguïtés.

GP2Y0A02YK

La même méthodologie a été utilisée pour le capteur GP2Y0A21YK:

GP2Y0A21YK

Approximation par un polynome

Grâce à la fonction polyfit de Matlab, la courbe (pour le GP2Y0A02YK) a été approximée avec un polynôme d’ordre 4.  L’approximation couvrant la plage de 14cm à 150cm est illustré ci-dessous:

GP2Y0A02YK_Ap

Pour le capteur GP2Y0A21YK un polynôme d’ordre 5 a été nécessaire:

GP2Y0A21YK_Ap

Résultats

L’approximation pour le cpateur GP2Y0A02YK est donné par l’équation ci-dessous. ADC est la valeur brute retournée par la fonction analogRead() disponible dans les bibliothèques Arduino.

 Distance =  2583.711122992086 - 20.197897855471.ADC + 0.071746539329.ADC^2 -0.000115854182.ADC^3 +0.000000068590.ADC^4

La même approximation pour le capteur GP2Y0A21YK est donnée par l’équation suivante:

 Distance =  200.3775040589502 -2.2657665648980.ADC + 0.0116395328796 .ADC^2 -0.0000299194195.ADC^3 + 0.0000000374087 .ADC^4  -0.0000000000181.ADC^5

En s’appuyant sur ces résultats, une fonction C++ peut facilement être écrite afin de retourner la distance:

/*!
    \brief  make a distance measurement with a Sharp GP2Y0A02YK sensor
    \return the measured distance in mm

*/
float get_Sharp_GP2Y0A02YK_Distance(int PinID)
{
    // Read analog to digital converter value
    float ADCValue = (float)analogRead(PinID);

    // Convert in millimeters and return distance
    return  2583.711122992086
            - 20.197897855471*ADCValue
            + 0.071746539329 *ADCValue*ADCValue
            - 0.000115854182 *ADCValue*ADCValue*ADCValue
            + 0.000000068590 *ADCValue*ADCValue*ADCValue*ADCValue;
}

Pour le GP2Y0A21YK :

/*!
    \brief  make a distance measurement with a Sharp GP2Y0A21YK sensor
    \return the measured distance in mm

*/
float get_Sharp_GP2Y0A21YK_Distance(int PinID)
{
    // Read analog to digital converter value
    float ADCValue = (float)analogRead(PinID);

    // Convert in millimeters and return distance
    return  200.3775040589502
            - 2.2657665648980 *ADCValue
            + 0.0116395328796 *ADCValue*ADCValue
            - 0.0000299194195 *ADCValue*ADCValue*ADCValue
            + 0.0000000374087 *ADCValue*ADCValue*ADCValue*ADCValue
            - 0.0000000000181 *ADCValue*ADCValue*ADCValue*ADCValue*ADCValue;
}

Téléchargement

Acknowledgements

Cet article n’aurait jamais vu le jour sans l’aide d’Evan Guedon, Benjamin Buffard, Julien Thielleux, Rémi Gourdon et Nicolas Delanoue.