Rapport TER DEHAIES OUAZAR

Texte de la première page
UNIVERSITE DU HAVRE
MEMOIRE
Master 1ère année
ÉLECTRONIQUE, ÉNERGIE ÉLECTRIQUE, AUTOMATIQUE
(EEEA)
Spécialité :
Systèmes Énergétiques Électriques
(SEE)
par
Nicolas DEHAIES
Oulhadj OUAZAR
Commande d’un Moteur DC via un pont H à transistors et
une carte Arduino Uno
du 15 mars au 30 juin 2017 au GREAH
Sous la direction de : Mr. CHABOUR
Groupe de Recherche en Électrotechnique et Automatique du Havre
1
Table des matières
INTRODUCTION ............................................................................................. 4
PARTIE I : LES DIFFERENTES CARTES ARDUINO ............................................. 5
1) LA CARTE ARDUINO UNO............................................................................... 7
2) LA CARTE ARDUINO LEONARDO....................................................................... 9
3) LA CARTE ARDUINO MEGA........................................................................... 11
4) LA CARTE ARDUINO MEGA ADK ................................................................... 12
5) LA CARTE ARDUINO DUE ............................................................................. 14
6) LA CARTE ARDUINO NANO ........................................................................... 16
7) LA CARTE ARDUINO MINI PRO ...................................................................... 17
8) LA CARTE ARDUINO YUN ............................................................................. 18
PARTIE II : EXEMPLES SIMPLES SUR LE LOGICIEL ARDUINO ........................ 21
1) INTRODUCTION ......................................................................................... 22
2) EXEMPLE 1............................................................................................... 23
3) EXEMPLE 2............................................................................................... 24
PARTIE III : GENERATION D’UN SIGNAL PWM ............................................. 25
1) PRINCIPE ................................................................................................. 26
Groupe de Recherche en Électrotechnique et Automatique du Havre
2
2) FONCTIONNEMENT .................................................................................... 27
3) CAS PRATIQUE .......................................................................................... 32
PARTIE IV : SIMULATION SOUS PROTEUS – ISIS ......................................... 35
1) PONT EN H .............................................................................................. 36
2) INTERRUPTEUR .......................................................................................... 38
3) MONTAGE GLOBAL .................................................................................... 39
PARTIE V : REGULATION & TRANSMISSION SERIELLE / SANS FIL ................ 40
1) REGULATION DE LA VITESSE.......................................................................... 41
2) TRNASMISSION SERIELLE.............................................................................. 42
3) TRANSMISSION SANS FIL (BLUETOOTH)........................................................... 44
PARTIE VI : PROGRAMME FINAL ET IMPLANTATION PRATIQUE ................. 47
1) IMAGES ................................................................................................... 48
2) PROGRAMME ........................................................................................... 54
CONCLUSION ............................................................................................... 56
Groupe de Recherche en Électrotechnique et Automatique du Havre
3
Introduction
Le projet commande d’un Moteur DC par le biais d’un pont H à
transistors s’est déroulé à l’Université du Havre dans le cadre de la
1ère année du Master Électronique, Énergie Électrique,
Automatique spécialité Systèmes Énergétiques Électriques.
L’intérêt de notre sujet et qu’il met en œuvre deux domaines, qui
sont l’Électronique et l’Informatique.
Le projet a pour but de commander un moteur à courant continu à
l’aide d’un pont H à transistors avec contrôle de la vitesse par un
signal PWM.
Tout d’abord, nous allons voir quelles sont les différentes cartes
Arduino existantes, ensuite, comprendre le logiciel et l’interface
IDE Arduino avec des exemples simples.
Puis, nous allons comprendre comment le signal PWM fonctionne.
Le but après, et de construire notre circuit sous Proteus – ISIS afin
de simuler.
Une fois fini, ce qui serait intéressant est de pouvoir réguler cette
vitesse et ensuite de transmettre une consigne (sans fil) vitesse
et/ou en transmission sérielle.
Ce rapport a pour objectif de vous présenter de manière efficace le
compte rendu de notre projet.
Groupe de Recherche en Électrotechnique et Automatique du Havre
4
PARTIE I : LES DIFFERENTES
CARTES ARDUINO
Groupe de Recherche en Électrotechnique et Automatique du Havre
5
On peut classer les cartes Arduino en deux grandes familles :
Les cartes officielles (ou « classique »), compatible hardware
et software avec le « forme factor » et l’IDE Arduino .
Les cartes dérivées, compatible avec les shields classique
(mais pas avec l’IDE de base).
Pour tout ce qui est des cartes Arduino dites « classiques » elles
sont basées généralement sur le même microcontrôleur AVR à
savoir un ATmega328p du fabricant ATMEL.
Par conséquent toutes les cartes utilisant ce microcontrôleur ont
les mêmes caractéristiques avec, selon la carte, quelques bonus en
plus.
Les spécifications pour toutes les cartes Arduino classiques à base
de ATmega328p :
En général :
CPU 8 bits à 16MHz (ou 8MHz pour les cartes 3v3).
Niveau logique 0v / 5v (ou 0v / 3v3 pour les cartes 3v3).
32Ko de mémoire pour le programme, mais « seulement »
30Ko réellement utilisables.
2Ko de mémoire SRAM.
1Ko de EEPROM (mémoire de stockage non volatile).
Au niveau des entrées / sorties :
14 entrées / sorties numériques (« 0 » ou « 1 » logique) dont
6 sorties PWM.
6 entrées analogiques (pouvant cependant être utilisé en
entrées / sorties logiques si besoin).
40mA maximum sur une même broche.
200mA au total sur toute les broches numérique et
analogique.
Certaines broches ont des fonctionnalités spéciales :
D0 et D1 : port série TTL.
D10, D11, D12, et D13 : bus / port SPI.
A4 et A5 : bus I2C.
Petites précisions concernant le convertisseur analogique /
numérique :
6 canaux (A0, A1, A2, A3, A4, A5).
Conversion sur 10 bits.
Vitesse max de 15Ksps (Kilo samples par second, vous pouvez
aller jusqu’à 15KHz (mais en réalité c’est plutôt 10KHz grand
max)).
1 comparateur analogique.
1) La carte Arduino UNO
C’est la carte idéale pour découvrir l’environnement ARDUINO.
Elle permet à tout débutant de se lancer dans tous ses premiers
petits projets. Comme c’est la carte la plus utilisée, il est très facile
de se référer aux tutoriels très nombreux sur le net et ainsi de ne
pas rester seul dans son exploration.
Sa simplicité devient par contre un handicap lorsqu’il s’agit de
multiplier les périphériques, de manipuler des algorithmes lourds
Groupe de Recherche en Électrotechnique et Automatique du Havre
7
ou d’interagie avec les OS Androïd pour lesquels d’autres cartes
Arduino sont plus adaptées.
La carte Arduino Uno est basée sur un ATMega328 cadencé à
16 MHz. C'est la plus récente et la plus économique carte à
microcontrôleur d'Arduino. Des connecteurs situés sur les bords
extérieurs du circuit imprimé permettent d'enficher une série de
modules complémentaires.
Elle peut se programmer avec le logiciel Arduino. Le contrôleur
ATMega328 contient un bootloader qui permet de modifier le
programme sans passer par un programmateur. Le logiciel est
téléchargeable gratuitement. Cette carte est livrée sans cordon
USB (voir articles conseillés).
Caractéristiques principales :
Version : Rev. 3
Alimentation :
- via port USB ou
- 7 à 12 V sur connecteur alim
Microprocesseur : ATMega328
Mémoire flash : 32 kB
Groupe de Recherche en Électrotechnique et Automatique du Havre
8
Mémoire SRAM : 2 kB
Mémoire EEPROM : 1 kB
14 broches d'E/S dont 6 PWM
6 entrées analogiques 10 bits
Intensité par E/S : 40 mA
Cadencement : 16 MHz
Bus série, I2C et SPI
Gestion des interruptions
Fiche USB B
Dimensions : 74 x 53 x 15 mm
2) La carte Arduino Lenardo
C’est la carte qui est prévue pour succéder à la carte Arduino
Uno en présentant des caractéristiques équivalentes mais une
ergonomie revue et une stabilité plus éprouvée. Sa diffusion moins
importante limite le support utilisateur disponible sur le net.
Groupe de Recherche en Électrotechnique et Automatique du Havre
9
La carte Arduino LEONARDO est basée sur un ATMega32u4
cadencé à 16 MHz permettant la gestion du port USB par un seul
processeur. Des connecteurs situés sur les bords extérieurs du
circuit imprimé permettent d'enficher une série de modules
complémentaires.
Elle peut se programmer avec le logiciel Arduino. Le contrôleur
ATMega32u4 permet la gestion du port, ce qui permet
d'augmenter la flexibilité dans la communication avec l'ordinateur.
Caractéristiques principales :
Alimentation :
- via port USB ou
- 7 à 12 V sur connecteur alim
Microprocesseur : ATMega32u4
Mémoire flash : 32 kB
Mémoire SRAM : 2,5 kB
Mémoire EEPROM : 1 kB
20 broches d'E/S dont 6 PWM
6 entrées analogiques 10 bits
Intensité par E/S: 40 mA
Cadencement : 16 MHz
Bus série, I2C et SPI
Gestion des interruptions
Fiche micro USB
Dimensions : 70 x 54 x 15 mm
Groupe de Recherche en Électrotechnique et Automatique du Havre
10
3) La carte Arduino Mega
La carte Arduino Mega est la carte la plus diffusée après la carte
Arduino Uno. Elle offre un nombre d’entrées/sorties beaucoup plus
important (54 contre 14), un processeur plus puissant doté d’une
mémoire plus vaste qui permet d’exploiter des algorithmes plus
complexes.
La carte Arduino Mega 2560 est basée sur un ATMega2560
cadencé à 16 MHz. Elle dispose de 54 E/S dont 14 PWM, 16
analogiques et 4 UARTs. Elle est idéale pour des applications
exigeant des caractéristiques plus complètes que la Uno. Des
connecteurs situés sur les bords extérieurs du circuit imprimé
permettent d'enficher une série de modules complémentaires.
Elle peut se programmer avec le logiciel Arduino. Le contrôleur
ATMega2560 contient un bootloader qui permet de modifier le
programme sans passer par un programmateur. Le logiciel est
téléchargeable gratuitement.
Caractéristiques principales :
Version : Rev. 3
Alimentation :
- via port USB ou
- 7 à 12 V sur connecteur alim
Microprocesseur : ATMega2560
Mémoire flash : 256 kB
Mémoire SRAM : 8 kB
Mémoire EEPROM : 4 kB
54 broches d'E/S dont 14 PWM
16 entrées analogiques 10 bits
Groupe de Recherche en Électrotechnique et Automatique du Havre
11
Intensité par E/S : 40 mA
Cadencement : 16 MHz
3 ports série
Bus I2C et SPI
Gestion des interruptions
Fiche USB B
Dimensions : 107 x 53 x 15 mm
Version d'origine fabriquée en Italie.
4) La carte Arduino Mega ADK
La carte Arduino mega ADK offre les mêmes caractéristiques
techniques que la carte Arduino mega mais sont port USB permet
de la connecter avec un environnement Androïd ouvrant de
nouvelles perspectives d’interaction avec le monde des
smartphones et des capteurs dont ils sont dotés. Sa mise en oeuvre
nécessite par contre de solides connaissances en Java et la capacité
à développer ses propres applications
Groupe de Recherche en Électrotechnique et Automatique du Havre
12
L'Arduino ADK est une carte basée sur le microcontrôleur
ATmega2560 et dispose d'une interface USB pour la connexion
avec des téléphones utilisant Androïd.
Ce module dispose de 54 entrées/sorties logiques (dont 14
peuvent être utilisées en sorties PWM), 16 entrées analogiques, 4
UARTs, une connexion USB et un bouton reset.
Caractéristiques principales :
Microcontrôleur : ATmega2560
Alimentation à prévoir :
- soit 5 Vcc via port USB
- soit 7 à 12 Vcc via connecteur alim
Tension d’entrée : 6 à 20 Vcc
Entrées/sorties logiques : 54 (dont 15 PWM)
Entrées analogiques 10 bits : 16
Intensité par broche E/S : 40 mA
Intensité pour la broche 3,3 V: 50 ma
Mémoire flash : 256 kB (dont 8 kB pour le bootloader)
Mémoire SRAM : 8 kB
Mémoire EEPROM : 4 kB
Vitesse d’horloge : 16 Mhz
Dimensions : 102 x 54 mm
Version d'origine fabriquée en Italie.
Groupe de Recherche en Électrotechnique et Automatique du Havre
13
5) La carte Arduino Due
La carte Arduino Due est une évolution de la carte Arduino
Mega et offre des performances réputées 3 fois supérieures. Elle
permet de manipuler rapidement des algorithmes lourds
particulièrement utiles dans le monde de la robotique par exemple
La carte Arduino DUE est basée sur un Atmel ARM Cortex
SAM3X8E cadencé à 84 MHz sous 32 bits. Elle dispose de 54 E/S
dont 12 PWM, 12 analogiques et 4 UARTs. Elle est idéale pour des
applications exigeant des caractéristiques plus complètes que la
Uno.
Contrairement aux autres cartes Arduino, Les entrées/sorties
fonctionnent sous 3,3 Vcc, l'utilisation de 5 Vcc en entrée ou en
sortie n'est pas possible. Une tension supérieure endommagera la
carte.
Des connecteurs situés sur les bords extérieurs du circuit imprimé
permettent d'enficher une série de modules complémentaires. Elle
peut se programmer avec le logiciel Arduino.
Groupe de Recherche en Électrotechnique et Automatique du Havre
14
Un ATMega 16U2 permet la programmation du SAM3X8E via le
logiciel Arduino (via le port Micro USB de programmation). Un
deuxième port USB est relié directement sur le SAM3X8E
permettant l'utilisation de clavier, souris etc.
Caractéristiques principales :
Version : Rev 3
Alimentation :
- via port USB ou
- 7 à 12 V sur connecteur alim
Microprocesseur : SAM3X8E
Tension d’utilisation : 3,3 Vcc
Mémoire flash : 512 kB
Mémoire SRAM : 96 kB
54 broches d'E/S dont 12 PWM
12 entrées analogiques 10 bits
2 sorties analogiques
Intensité par E/S : 3 ou 15 mA (selon la broche)
Intensité totale pour les sorties : 130 mA
Cadencement : 84 MHz
3 ports série
Bus I2C et SPI
Gestion des interruptions
Groupe de Recherche en Électrotechnique et Automatique du Havre
15
Fiche micro-USB A (SAM3X8E) et micro-USB B
(programmation)
Dimensions : 104 x 53 x 13 mm
Version d'origine fabriquée en Italie.
6) La carte Arduino Nano
La carte Arduino nano n’est ni plus ni moins qu’une carte
Arduino uno miniaturisée. Sa taille et son poids réduits la destinent
à une utilisation dans des espaces réduits (en textile par exemple)
ou dans des applications de robotique ou de modélisme pour
lesquels le poids et la taille sont des facteurs déterminant
(hélicoptères, drônes…).
La carte Arduino Nano est basée sur un ATMega328 cadencé
à 16 MHz. Sa mémoire de 32 kB et son grand nombre d'E/S font de
ce circuit compatible DIL30 un élément idéal pour les systèmes
embarqués ou pour des applications robotiques nécessitant du
multitâches.
La Nano 3.0 peut se programmer avec le logiciel Arduino. Le
contrôleur ATMega328 contient un bootloader qui permet de
modifier le programme sans passer par un programmateur. Le
logiciel est téléchargeable gratuitement.
Groupe de Recherche en Électrotechnique et Automatique du Havre
16
Caractéristiques principales :
Alimentation :
- via port USB ou
- 5 Vcc régulée sur broche 27 ou
- 6 à 20 V non régulée sur broche 30
Microprocesseur : ATMega328
Mémoire flash : 32 kB
Mémoire SRAM : 2 kB
Mémoire EEPROM : 1 kB
14 broches d'E/S dont 6 PWM
8 entrées analogiques 10 bits
Intensité par E/S : 40 mA
Cadencement : 16 MHz
Bus série, I2C et SPI
Gestion des interruptions
Fiche USB : mini-USB B
Boîtier DIL30
Dimensions : 45 x 18 x 18 mm
Version d'origine fabriquée en Italie.
7) La carte Arduino Mini Pro
La carte arduino Mini Pro est une carte Arduino Uno simplifiée à
l’extrême permettant néanmoins de piloter de petits projets ou
certains éléments d’un projet. Attention, cette carte n’intègre pas
de port USB ce qui rends sa connectivité délicate.
Groupe de Recherche en Électrotechnique et Automatique du Havre
17
8) La carte Arduino Yun
La carte AArduino Yun, récemment proposée par Arduino, est
conçue pour contrer les avantages de la carte Raspberry. Elle est
un dérivé de la carte Leonardo et a pour objectif de combiner la
puissance de Linux avec la facilité d’utilisation d’une carte Arduino.
Elle est également la première carte Arduino à être dotée
nativement d’un wifi intégré.
La carte Arduino Yun est basée sur un ATmega32u4 (comme la
Leonardo) et sur un Atheros AR9331. Le processeur Atheros
supporte une distribution Linino (Linux basé sur Open WRT). La
carte est équipée d'un port ethernet, d'un module Wifi et d'un
support pour carte SD. Cette carte permet d'exécuter des
commandes Linux depuis Arduino.
Groupe de Recherche en Électrotechnique et Automatique du Havre
18
La bibliothèque logicielle Bridge Library facilite la communication
entre les deux processeurs, ce qui donne la possibilité à Arduino de
communiquer avec les interfaces réseaux et de recevoir des
informations du processeur AR9331. La première mise sous tension
de la carte Yun donne un accès direct au réseau WiFi et peut être
configurée sans fil.
Des connecteurs situés sur les bords extérieurs du circuit imprimé
permettent d'enficher une série de modules complémentaires. Elle
peut se programmer avec le logiciel Arduino. Le contrôleur
ATMega32u4 permet la gestion du port, ce qui permet
d'augmenter la flexibilité dans la communication avec l'ordinateur.
Remarque : aucune des entrées/sorties du circuit Atheros n'est
disponible directement, toutes les entrées/sorties sont issues de
l'ATmega32u4.
Remarque : la carte n'est pas équipée d'un régulateur 5 V
(contrairement à une carte Arduino classique), l'alimentation sur
la broche Vin doit être de 5 V régulée.
Caractéristiques ATmega32u4 :
Mémoire flash : 32 kB (dont 4kB utilisés pour le Bootloader
Arduino)
Mémoire SRAM : 2,5 kB
Mémoire EEPROM : 1 kB
20 broches d'E/S dont 6 PWM
6 entrées analogiques 10 bits
Intensité par E/S : 40 mA
Cadencement : 16 MHz
Bus série, I2C et SPI
Groupe de Recherche en Électrotechnique et Automatique du Havre
19
Gestion des interruptions
Fiche micro USB
Caractéristiques Atheros AR9331 :
Architecture : MIPS 400 MHz
Ethernet : IEEE 802.3 10/100 Mbits/s
WIFI: IEEE 802.11b/g/n
Lecteur de carte : micro SD (non incluse)
Mémoire RAM : 64 Mb DDR2
Mémoire flash : 16 Mb
Dimensions : 72 x 53 x 17 mm
Connectique :
- 1 port ethernet
- 1 port USB
- 1 port micro-USB
- 1 port micro-SD
Groupe de Recherche en Électrotechnique et Automatique du Havre
20
PARTIE II : EXEMPLES
SIMPLES SUR LE LOGICIEL
ARDUINO
Groupe de Recherche en Électrotechnique et Automatique du Havre
21
1) Introduction
Il faut savoir que dans l’IDE d’Arduino, il y a deux fonctions
principales qui sont :
o setup( ) qui est exécuté une seule fois, elle c’est ici qu’il
faut configurer ses broches en utilisant la fonction
pinMode( ).
o loop( ) est une boucle qui se répète continuellement après
que le setup( ) soit exécuté.
Nous avons ensuite des fonctions à utiliser dans ces fonctions
principales :
o digitalRead( ) vérifie la tension sur la broche désignée.
o digitalWrite( ) permet d’envoyer 5 𝑉 ou 0 𝑉 sur une sortie
numérique.
o analogRead( ) prend un argument : la broche où se trouve
la tension à lire. La valeur, comprise entre 0 et 1023, est
une image de la tension sur la broche.
o analogWrite( ) : écrit une valeur analogique sur une
broche. Peut être utilisé pour allumer une LED à
différentes intensités ou conduire un moteur à
différentes vitesses.
Groupe de Recherche en Électrotechnique et Automatique du Havre
22
2) Exemple 1
Dans ce premier exemple, nous allons faire clignoter des LEDs :
Ici, nous faisons clignoter différentes LEDs à l’aide d’un simple
appui sur un bouton poussoir. L’algorithme est le suivant :
Si nous n’appuyons pas sur le bouton
Allumer le LED 3
Groupe de Recherche en Électrotechnique et Automatique du Havre
23
Eteindre les deux autres
Si on appui
Eteindre la LED 3
Faire clignoter les deux autres à tour de rôle
3) Exemple 2
Un second programme qui permet de voir comment afficher
quelque chose dans le moniteur série de l’IDE :
Ici nous affichons juste un nombre, il va s’incrémenter à chaque
tour de boucle.
Groupe de Recherche en Électrotechnique et Automatique du Havre
24
PARTIE III : GENERATION
D’UN SIGNAL PWM
Groupe de Recherche en Électrotechnique et Automatique du Havre
25
1) Principe
La modulation de largeur d’impulsion (en
anglais, Pulse With Modulation, PWM) est une
technique couramment utilisée en électronique
pour générer des signaux continus à l’aide de
circuit ne délivrant que des signaux discrets
binaires (donc qui ne peuvent prendre que deux
valeurs, le « tout » ou le « rien »). Le signal
continu résultant est obtenu en faisant la
moyenne des signaux sur une période donnée.
Ainsi, le signal résultant peut prendre n’importe
quelle valeur intermédiaire comprise entre le «
tout » et le « rien » et par conséquent simuler
n’importe quelle tension comprise dans cet
intervalle. Dans notre cas à nous, avec la carte
Arduino, cet intervalle va de 0V à 5V (la tension
de sortie en PWM ne peut pas être en dehors
de cet intervalle).
C’est sur ce principe, que fonctionne certains
ports de la carte Arduino. En effet,
l’électronique embarquée à l’intérieur ne
permettant pas d’envoyer une tension
analogique continue, la carte compense en
délivrant des impulsions électroniques discrètes
et ne pouvant prendre que deux valeurs. Les
ports de la carte pouvant fonctionner en PWM
sont reconnaissables par leur petite « vague »
inscrite à côté de la broche (voir photo cicontre). On s’aperçoit ainsi que les ports 3, 5, 6,
9, 10, 11 sont compatibles en mode PWM, ce
Groupe de Recherche en Électrotechnique et Automatique du Havre
26
qui n’est pas le cas des ports 0, 1, 2, 4, 7, 8, 12, 13. Leur fréquence
de fonctionnement est d’environ 490 Hz.
L’instruction de programme permettant à la carte Arduino de
délivrer une tension de sortie spécifique en PWM se fait par
analogWrite( ) où les arguments dans la parenthèse sont la
numéros de la broche concerné ainsi que le niveau de la tension à
délivrer par cette même broche. L’instruction digitalWrite( )
(mêmes arguments) permet à la carte de ne délivrer que deux
tensions : la tension haute (HIGH) et la tension basse (LOW). Pour
fonctionner en PWM, nous n’utiliserons donc que analogWrite( ).
2) Fonctionnement
Afin de « fabriquer » un signal PWM, nous allons utiliser le
Timer et plus particulièrement le Timer 2. Le module Arduino Uno
est capable de générer de la PWM sur 6 broches de sorties grâce à
la fonction analogWrite( ). D’une manière transparente pour
l’utilisateur, cette fonction utilise les timers du microcontrôleur
pour générer sur les sorties, un signal carré de fréquence fixe mais
de largeur variable pour l’impulsion à l’état haut. Le tableau suivant
indique quel timer est utilisé pour générer la PWM et sur quelles
sorties du module Uno elle est générée.
Groupe de Recherche en Électrotechnique et Automatique du Havre
27
Un Timer gère donc deux broches de sortie, la figure suivante
permet de comprendre l’architecture d’un bloc Timer. Sur cette
figure, la lettre « 𝑛 » est utilisée pour désigner le numéro du Timer
(𝑛 = 0,1,2).
Le signal d’horloge 𝑐𝑙𝑘𝑇𝑛 (en jaune) arrive à la logique de
contrôle, en provenance de l’extérieur (𝑇𝑛 ) ou bien de l’horloge
interne et du prescaler. La logique de contrôle incrémente ou
décrémente le timer 𝑻𝑪𝑵𝑻𝒏 (en vert) et celui-ci est comparé aux
valeurs des registres 𝑶𝑪𝑹𝒏 𝑨 et 𝑶𝑪𝑹𝒏 𝑩 (en bleu). Lorsqu’il y a
égalité, un signal est envoyé à un bloc appelé « Waveform
Groupe de Recherche en Électrotechnique et Automatique du Havre
28
Generation » (Génération de la forme d’onde) (en rouge) et c’est
ce bloc qui met en forme la PWM en positionnant à 0 ou à 1 le
registre des broches 𝑂𝐶𝑛 𝐴 ou 𝑂𝐶𝑛 𝐵 (en violet).
Il existe deux modes PWM, le « fast » et le « phase correct ».
Dans notre projet, nous utilisons le mode « fast ». Afin d’avoir ce
mode, nous devons configurer 3 registres. Tout d’abord le registre
TCCR2A :
Bits 7:6 :
Nous allons utiliser OCR2B donc OCR2A sera déconnecté, alors ces
bits seront à 0.
Bits 5:4 :
Groupe de Recherche en Électrotechnique et Automatique du Havre
29
Nous utilisons OC2B en mode normal, ainsi la disposition sera 1 : 0.
Bits 3:2 : Ces bits sont réservés, ils seront mis à 0.
Bits 1:0 :
Puisque nous utilisons le mode « Fast PWM », nous allons mettre la
configuration 1:1.
Ensuite, le registre TCCR2B :
Dans ce registre, nous utiliserons que les bits 2:0, les autres seront
mis à 0.
Groupe de Recherche en Électrotechnique et Automatique du Havre
30
Bits 2:0 :
Afin d’avoir une bonne fréquence, nous allons utiliser une division
par 8.
Donc bits 2:0 = 010.
Il reste à configurer OCR2B, pour ce faire, le schéma suivant
permet de comprendre son fonctionnement :
Groupe de Recherche en Électrotechnique et Automatique du Havre
31
La valeur de OCR2B permet de configurer le rapport cyclique, les
valeurs vont de 0 à 255, 0 pour 𝛼 = 0 % et 255 pour 𝛼 = 100 %.
3) Cas pratique
Cas 𝛼 = 20 % (𝑂𝐶𝑅2𝐵 = 51) :
Groupe de Recherche en Électrotechnique et Automatique du Havre
32
Cas 𝛼 = 50 % (𝑂𝐶𝑅2𝐵 = 128) :
Groupe de Recherche en Électrotechnique et Automatique du Havre
33
Cas 𝛼 = 90 % (𝑂𝐶𝑅2𝐵 = 230) :
On remarque donc que le calcul d’OCR2N est simple, c’est une
règle de trois.
Groupe de Recherche en Électrotechnique et Automatique du Havre
34
PARTIE IV : SIMULATION
SOUS PROTEUS – ISIS
(ARDUINO + PONT H +
MOTEUR)
Groupe de Recherche en Électrotechnique et Automatique du Havre
35
1) Le pont H
Pour pouvoir faire tourner le moteur dans les deux sens, nous
allons avoir besoin d’un circuit électronique appelé : « pont en H ».
Le pont en H est la partie qui fait office d’interface entre la carte
Arduino et le moteur.
Le pont en H possède 4 entrées qui fonctionnent deux à deux
entres elles.
Groupe de Recherche en Électrotechnique et Automatique du Havre
36
Le schéma de notre partie Moteur + Pont H est le suivant :
Les interrupteurs sont des Transistors dit MOSFET.
En 1er lieu, nous avons mis deux « driver » IR2101 qui
permettent de piloter les MOSFET car la carte n’est pas assez
puissante pour les piloter directement.
La porte « NOT » du début permet d’avoir le signal et sont inverse,
pour pouvoir changer de sens de rotation du moteur au niveau des
MOSFET.
Groupe de Recherche en Électrotechnique et Automatique du Havre
37
2) L’interrupteur
Ici, nous utilisons une résistance de « pull-up » afin d’imposer l’état
logique haut au circuit, l’appui sur le bouton imposera l’état
logique bas.
Le condensateur permet d’éviter le phénomène de rebond lorsque
l’on utilise des interrupteurs mécaniques. Le problème est d’autant
plus important lorsque l’on utilise des contacteurs en métal qui
admettent une certaine élasticité. Au moment de la connexion ou
de la connexion, les contacteurs peuvent rebondir et fausser le
résultat de l’interruption. Le nombre et la durée des changements
Groupe de Recherche en Électrotechnique et Automatique du Havre
38
dépendent du type d’interruption, ils se réalisent le plus souvent
en quelques millisecondes.
Le plus important est dans l’implantation pratique, en simulation,
cela n’a aucune conséquence.
3) Montage global
Notre montage global est le suivant :
Groupe de Recherche en Électrotechnique et Automatique du Havre
39
PARTIE V : REGULATION DE
LA VITESSE
& TRANSMISSION SERIELLE /
SANS FIL
Groupe de Recherche en Électrotechnique et Automatique du Havre
40
1) Régulation de la vitesse
Un régulateur de vitesse est un système destiné à stabiliser
automatiquement la vitesse, c’est le même principe que dans une
voiture, sauf qu’ici, la vitesse ne se stabilise jamais, il y aura une
erreur. C’est-à-dire que la vitesse va détecter un « palier » haut et
bas à ne pas dépasser, comme le montre la figure suivante :
Notre consigne est notre vitesse que l’on communique, que l’on
veut obtenir, ici nous avons pris une vitesse de 850 𝑡𝑟⁄𝑚𝑖𝑛.
Le moteur va être du type de la courbe bleue, les « paliers » endessous et au-dessus de la vitesse sont les vitesses à ne pas
franchir, comme nous l’avons choisi dans notre code :
Groupe de Recherche en Électrotechnique et Automatique du Havre
41
Nous avons donc l’algorithme suivant :
Si la vitesse est supérieure à la consigne + marge
Décrémenter le rapport cyclique de 5 %
Sinon Si la vitesse est inférieure à la consigne + marge
Incrémenter le rapport cyclique de 5 %
Où la marge est la marge d’erreur que l’on a choisie de 1 𝑡𝑟⁄𝑚𝑖𝑛.
2) Transmission sérielle
L’IDE Arduino dispose d’un moniteur série, c’est avec lui qu’on va
pouvoir communiquer en « direct » avec la carte.
Le moniteur ressemble à ceci :
C’est à travers cette interface que l’on va pouvoir envoyer ou
recevoir des informations provenant de la carte.
Groupe de Recherche en Électrotechnique et Automatique du Havre
42
Plusieurs fonctions sont nécessaires :
o Serial.begin( ) : Permet de configurer la vitesse de
transmission du port série (en bauds).
o Serial.print( ) : Permet d’envoyer une donnée vers le
moniteur série.
o Serial.println( ) : Permet d’envoyer une donnée vers le
moniteur série et fait un saut à la ligne « ln ».
o Serial.write( ) : Permet d’exploiter le format binaire, renvoie
une chaîne de caractères en nombre de bits.
o Serial.read( ) : Permet de lire les données contenues dans le
buffer.
o Serial.flush( ) : Permet de vider la mémoire tampon, la file
d’attente, ou dit le « buffer » de la liaison série.
o Serial.available( ) : Permet de connaître si il y a des
caractères disponibles pour lecture dans la mémoire tampon
(buffer) du port série.
Groupe de Recherche en Électrotechnique et Automatique du Havre
43
3) Transmission sans fil (Bluetooth)
Le module HC-06 peut communiquer avec la carte Arduino via
la liaison série (broches numériques N°0 et N°1) mais le moniteur
série ne peut plus être utilisé. C'est pour cette raison qu'il est
préférable d'utiliser la bibliothèque SoftwareSerial intégrée d'office
dans l'IDE Arduino, nous allons le montrer un peu plus bas avec
notre programme final et l’implantation pratique.
Nous avons pu via l’application sur Android « Bluetooth terminal
HC-05 », commander la vitesse du moteur.
Groupe de Recherche en Électrotechnique et Automatique du Havre
44
Par cette application, après l’avoir apparié au module, il suffit
d’écrire la vitesse que l’on souhaite et le moteur se calibre dessus.
Alors, la vitesse s’affiche sur notre moniteur série en même temps
que notre moteur réceptionne l’information.
Groupe de Recherche en Électrotechnique et Automatique du Havre
45
Ici, nous avons testé le module avec une vitesse de 850 𝑡𝑟⁄𝑚𝑖𝑛, le
moteur va, le temps de la régulation, avoir tantôt des vitesses en
dessous de 850 𝑡𝑟⁄𝑚𝑖𝑛 et tantôt au-dessus de 850 𝑡𝑟⁄𝑚𝑖𝑛, c’est
pour cela que dans nos images finales, la vitesse du moteur
affichée est de 931 𝑡𝑟⁄𝑚𝑖𝑛.
Groupe de Recherche en Électrotechnique et Automatique du Havre
46
PARTIE VI : PROGRAMME
FINAL ET IMPLANTATION
PRATIQUE
Groupe de Recherche en Électrotechnique et Automatique du Havre
47
1) Images
Notre carte, l’afficheur LCD ainsi que le module HC-06 (en dessous
à gauche du LCD) :
Groupe de Recherche en Électrotechnique et Automatique du Havre
48
Le moteur avec l’affichage de vitesse (en 𝑡𝑟⁄𝑚𝑖𝑛) :
Groupe de Recherche en Électrotechnique et Automatique du Havre
49
Le pont en H :
Groupe de Recherche en Électrotechnique et Automatique du Havre
50
MEMOIRE
Master 1ère année
ÉLECTRONIQUE, ÉNERGIE ÉLECTRIQUE, AUTOMATIQUE
(EEEA)
Spécialité :
Systèmes Énergétiques Électriques
(SEE)
par
Nicolas DEHAIES
Oulhadj OUAZAR
Commande d’un Moteur DC via un pont H à transistors et
une carte Arduino Uno
du 15 mars au 30 juin 2017 au GREAH
Sous la direction de : Mr. CHABOUR
Groupe de Recherche en Électrotechnique et Automatique du Havre
1
Table des matières
INTRODUCTION ............................................................................................. 4
PARTIE I : LES DIFFERENTES CARTES ARDUINO ............................................. 5
1) LA CARTE ARDUINO UNO............................................................................... 7
2) LA CARTE ARDUINO LEONARDO....................................................................... 9
3) LA CARTE ARDUINO MEGA........................................................................... 11
4) LA CARTE ARDUINO MEGA ADK ................................................................... 12
5) LA CARTE ARDUINO DUE ............................................................................. 14
6) LA CARTE ARDUINO NANO ........................................................................... 16
7) LA CARTE ARDUINO MINI PRO ...................................................................... 17
8) LA CARTE ARDUINO YUN ............................................................................. 18
PARTIE II : EXEMPLES SIMPLES SUR LE LOGICIEL ARDUINO ........................ 21
1) INTRODUCTION ......................................................................................... 22
2) EXEMPLE 1............................................................................................... 23
3) EXEMPLE 2............................................................................................... 24
PARTIE III : GENERATION D’UN SIGNAL PWM ............................................. 25
1) PRINCIPE ................................................................................................. 26
Groupe de Recherche en Électrotechnique et Automatique du Havre
2
2) FONCTIONNEMENT .................................................................................... 27
3) CAS PRATIQUE .......................................................................................... 32
PARTIE IV : SIMULATION SOUS PROTEUS – ISIS ......................................... 35
1) PONT EN H .............................................................................................. 36
2) INTERRUPTEUR .......................................................................................... 38
3) MONTAGE GLOBAL .................................................................................... 39
PARTIE V : REGULATION & TRANSMISSION SERIELLE / SANS FIL ................ 40
1) REGULATION DE LA VITESSE.......................................................................... 41
2) TRNASMISSION SERIELLE.............................................................................. 42
3) TRANSMISSION SANS FIL (BLUETOOTH)........................................................... 44
PARTIE VI : PROGRAMME FINAL ET IMPLANTATION PRATIQUE ................. 47
1) IMAGES ................................................................................................... 48
2) PROGRAMME ........................................................................................... 54
CONCLUSION ............................................................................................... 56
Groupe de Recherche en Électrotechnique et Automatique du Havre
3
Introduction
Le projet commande d’un Moteur DC par le biais d’un pont H à
transistors s’est déroulé à l’Université du Havre dans le cadre de la
1ère année du Master Électronique, Énergie Électrique,
Automatique spécialité Systèmes Énergétiques Électriques.
L’intérêt de notre sujet et qu’il met en œuvre deux domaines, qui
sont l’Électronique et l’Informatique.
Le projet a pour but de commander un moteur à courant continu à
l’aide d’un pont H à transistors avec contrôle de la vitesse par un
signal PWM.
Tout d’abord, nous allons voir quelles sont les différentes cartes
Arduino existantes, ensuite, comprendre le logiciel et l’interface
IDE Arduino avec des exemples simples.
Puis, nous allons comprendre comment le signal PWM fonctionne.
Le but après, et de construire notre circuit sous Proteus – ISIS afin
de simuler.
Une fois fini, ce qui serait intéressant est de pouvoir réguler cette
vitesse et ensuite de transmettre une consigne (sans fil) vitesse
et/ou en transmission sérielle.
Ce rapport a pour objectif de vous présenter de manière efficace le
compte rendu de notre projet.
Groupe de Recherche en Électrotechnique et Automatique du Havre
4
PARTIE I : LES DIFFERENTES
CARTES ARDUINO
Groupe de Recherche en Électrotechnique et Automatique du Havre
5
On peut classer les cartes Arduino en deux grandes familles :
Les cartes officielles (ou « classique »), compatible hardware
et software avec le « forme factor » et l’IDE Arduino .
Les cartes dérivées, compatible avec les shields classique
(mais pas avec l’IDE de base).
Pour tout ce qui est des cartes Arduino dites « classiques » elles
sont basées généralement sur le même microcontrôleur AVR à
savoir un ATmega328p du fabricant ATMEL.
Par conséquent toutes les cartes utilisant ce microcontrôleur ont
les mêmes caractéristiques avec, selon la carte, quelques bonus en
plus.
Les spécifications pour toutes les cartes Arduino classiques à base
de ATmega328p :
En général :
CPU 8 bits à 16MHz (ou 8MHz pour les cartes 3v3).
Niveau logique 0v / 5v (ou 0v / 3v3 pour les cartes 3v3).
32Ko de mémoire pour le programme, mais « seulement »
30Ko réellement utilisables.
2Ko de mémoire SRAM.
1Ko de EEPROM (mémoire de stockage non volatile).
Au niveau des entrées / sorties :
14 entrées / sorties numériques (« 0 » ou « 1 » logique) dont
6 sorties PWM.
6 entrées analogiques (pouvant cependant être utilisé en
entrées / sorties logiques si besoin).
40mA maximum sur une même broche.
200mA au total sur toute les broches numérique et
analogique.
Certaines broches ont des fonctionnalités spéciales :
D0 et D1 : port série TTL.
D10, D11, D12, et D13 : bus / port SPI.
A4 et A5 : bus I2C.
Petites précisions concernant le convertisseur analogique /
numérique :
6 canaux (A0, A1, A2, A3, A4, A5).
Conversion sur 10 bits.
Vitesse max de 15Ksps (Kilo samples par second, vous pouvez
aller jusqu’à 15KHz (mais en réalité c’est plutôt 10KHz grand
max)).
1 comparateur analogique.
1) La carte Arduino UNO
C’est la carte idéale pour découvrir l’environnement ARDUINO.
Elle permet à tout débutant de se lancer dans tous ses premiers
petits projets. Comme c’est la carte la plus utilisée, il est très facile
de se référer aux tutoriels très nombreux sur le net et ainsi de ne
pas rester seul dans son exploration.
Sa simplicité devient par contre un handicap lorsqu’il s’agit de
multiplier les périphériques, de manipuler des algorithmes lourds
Groupe de Recherche en Électrotechnique et Automatique du Havre
7
ou d’interagie avec les OS Androïd pour lesquels d’autres cartes
Arduino sont plus adaptées.
La carte Arduino Uno est basée sur un ATMega328 cadencé à
16 MHz. C'est la plus récente et la plus économique carte à
microcontrôleur d'Arduino. Des connecteurs situés sur les bords
extérieurs du circuit imprimé permettent d'enficher une série de
modules complémentaires.
Elle peut se programmer avec le logiciel Arduino. Le contrôleur
ATMega328 contient un bootloader qui permet de modifier le
programme sans passer par un programmateur. Le logiciel est
téléchargeable gratuitement. Cette carte est livrée sans cordon
USB (voir articles conseillés).
Caractéristiques principales :
Version : Rev. 3
Alimentation :
- via port USB ou
- 7 à 12 V sur connecteur alim
Microprocesseur : ATMega328
Mémoire flash : 32 kB
Groupe de Recherche en Électrotechnique et Automatique du Havre
8
Mémoire SRAM : 2 kB
Mémoire EEPROM : 1 kB
14 broches d'E/S dont 6 PWM
6 entrées analogiques 10 bits
Intensité par E/S : 40 mA
Cadencement : 16 MHz
Bus série, I2C et SPI
Gestion des interruptions
Fiche USB B
Dimensions : 74 x 53 x 15 mm
2) La carte Arduino Lenardo
C’est la carte qui est prévue pour succéder à la carte Arduino
Uno en présentant des caractéristiques équivalentes mais une
ergonomie revue et une stabilité plus éprouvée. Sa diffusion moins
importante limite le support utilisateur disponible sur le net.
Groupe de Recherche en Électrotechnique et Automatique du Havre
9
La carte Arduino LEONARDO est basée sur un ATMega32u4
cadencé à 16 MHz permettant la gestion du port USB par un seul
processeur. Des connecteurs situés sur les bords extérieurs du
circuit imprimé permettent d'enficher une série de modules
complémentaires.
Elle peut se programmer avec le logiciel Arduino. Le contrôleur
ATMega32u4 permet la gestion du port, ce qui permet
d'augmenter la flexibilité dans la communication avec l'ordinateur.
Caractéristiques principales :
Alimentation :
- via port USB ou
- 7 à 12 V sur connecteur alim
Microprocesseur : ATMega32u4
Mémoire flash : 32 kB
Mémoire SRAM : 2,5 kB
Mémoire EEPROM : 1 kB
20 broches d'E/S dont 6 PWM
6 entrées analogiques 10 bits
Intensité par E/S: 40 mA
Cadencement : 16 MHz
Bus série, I2C et SPI
Gestion des interruptions
Fiche micro USB
Dimensions : 70 x 54 x 15 mm
Groupe de Recherche en Électrotechnique et Automatique du Havre
10
3) La carte Arduino Mega
La carte Arduino Mega est la carte la plus diffusée après la carte
Arduino Uno. Elle offre un nombre d’entrées/sorties beaucoup plus
important (54 contre 14), un processeur plus puissant doté d’une
mémoire plus vaste qui permet d’exploiter des algorithmes plus
complexes.
La carte Arduino Mega 2560 est basée sur un ATMega2560
cadencé à 16 MHz. Elle dispose de 54 E/S dont 14 PWM, 16
analogiques et 4 UARTs. Elle est idéale pour des applications
exigeant des caractéristiques plus complètes que la Uno. Des
connecteurs situés sur les bords extérieurs du circuit imprimé
permettent d'enficher une série de modules complémentaires.
Elle peut se programmer avec le logiciel Arduino. Le contrôleur
ATMega2560 contient un bootloader qui permet de modifier le
programme sans passer par un programmateur. Le logiciel est
téléchargeable gratuitement.
Caractéristiques principales :
Version : Rev. 3
Alimentation :
- via port USB ou
- 7 à 12 V sur connecteur alim
Microprocesseur : ATMega2560
Mémoire flash : 256 kB
Mémoire SRAM : 8 kB
Mémoire EEPROM : 4 kB
54 broches d'E/S dont 14 PWM
16 entrées analogiques 10 bits
Groupe de Recherche en Électrotechnique et Automatique du Havre
11
Intensité par E/S : 40 mA
Cadencement : 16 MHz
3 ports série
Bus I2C et SPI
Gestion des interruptions
Fiche USB B
Dimensions : 107 x 53 x 15 mm
Version d'origine fabriquée en Italie.
4) La carte Arduino Mega ADK
La carte Arduino mega ADK offre les mêmes caractéristiques
techniques que la carte Arduino mega mais sont port USB permet
de la connecter avec un environnement Androïd ouvrant de
nouvelles perspectives d’interaction avec le monde des
smartphones et des capteurs dont ils sont dotés. Sa mise en oeuvre
nécessite par contre de solides connaissances en Java et la capacité
à développer ses propres applications
Groupe de Recherche en Électrotechnique et Automatique du Havre
12
L'Arduino ADK est une carte basée sur le microcontrôleur
ATmega2560 et dispose d'une interface USB pour la connexion
avec des téléphones utilisant Androïd.
Ce module dispose de 54 entrées/sorties logiques (dont 14
peuvent être utilisées en sorties PWM), 16 entrées analogiques, 4
UARTs, une connexion USB et un bouton reset.
Caractéristiques principales :
Microcontrôleur : ATmega2560
Alimentation à prévoir :
- soit 5 Vcc via port USB
- soit 7 à 12 Vcc via connecteur alim
Tension d’entrée : 6 à 20 Vcc
Entrées/sorties logiques : 54 (dont 15 PWM)
Entrées analogiques 10 bits : 16
Intensité par broche E/S : 40 mA
Intensité pour la broche 3,3 V: 50 ma
Mémoire flash : 256 kB (dont 8 kB pour le bootloader)
Mémoire SRAM : 8 kB
Mémoire EEPROM : 4 kB
Vitesse d’horloge : 16 Mhz
Dimensions : 102 x 54 mm
Version d'origine fabriquée en Italie.
Groupe de Recherche en Électrotechnique et Automatique du Havre
13
5) La carte Arduino Due
La carte Arduino Due est une évolution de la carte Arduino
Mega et offre des performances réputées 3 fois supérieures. Elle
permet de manipuler rapidement des algorithmes lourds
particulièrement utiles dans le monde de la robotique par exemple
La carte Arduino DUE est basée sur un Atmel ARM Cortex
SAM3X8E cadencé à 84 MHz sous 32 bits. Elle dispose de 54 E/S
dont 12 PWM, 12 analogiques et 4 UARTs. Elle est idéale pour des
applications exigeant des caractéristiques plus complètes que la
Uno.
Contrairement aux autres cartes Arduino, Les entrées/sorties
fonctionnent sous 3,3 Vcc, l'utilisation de 5 Vcc en entrée ou en
sortie n'est pas possible. Une tension supérieure endommagera la
carte.
Des connecteurs situés sur les bords extérieurs du circuit imprimé
permettent d'enficher une série de modules complémentaires. Elle
peut se programmer avec le logiciel Arduino.
Groupe de Recherche en Électrotechnique et Automatique du Havre
14
Un ATMega 16U2 permet la programmation du SAM3X8E via le
logiciel Arduino (via le port Micro USB de programmation). Un
deuxième port USB est relié directement sur le SAM3X8E
permettant l'utilisation de clavier, souris etc.
Caractéristiques principales :
Version : Rev 3
Alimentation :
- via port USB ou
- 7 à 12 V sur connecteur alim
Microprocesseur : SAM3X8E
Tension d’utilisation : 3,3 Vcc
Mémoire flash : 512 kB
Mémoire SRAM : 96 kB
54 broches d'E/S dont 12 PWM
12 entrées analogiques 10 bits
2 sorties analogiques
Intensité par E/S : 3 ou 15 mA (selon la broche)
Intensité totale pour les sorties : 130 mA
Cadencement : 84 MHz
3 ports série
Bus I2C et SPI
Gestion des interruptions
Groupe de Recherche en Électrotechnique et Automatique du Havre
15
Fiche micro-USB A (SAM3X8E) et micro-USB B
(programmation)
Dimensions : 104 x 53 x 13 mm
Version d'origine fabriquée en Italie.
6) La carte Arduino Nano
La carte Arduino nano n’est ni plus ni moins qu’une carte
Arduino uno miniaturisée. Sa taille et son poids réduits la destinent
à une utilisation dans des espaces réduits (en textile par exemple)
ou dans des applications de robotique ou de modélisme pour
lesquels le poids et la taille sont des facteurs déterminant
(hélicoptères, drônes…).
La carte Arduino Nano est basée sur un ATMega328 cadencé
à 16 MHz. Sa mémoire de 32 kB et son grand nombre d'E/S font de
ce circuit compatible DIL30 un élément idéal pour les systèmes
embarqués ou pour des applications robotiques nécessitant du
multitâches.
La Nano 3.0 peut se programmer avec le logiciel Arduino. Le
contrôleur ATMega328 contient un bootloader qui permet de
modifier le programme sans passer par un programmateur. Le
logiciel est téléchargeable gratuitement.
Groupe de Recherche en Électrotechnique et Automatique du Havre
16
Caractéristiques principales :
Alimentation :
- via port USB ou
- 5 Vcc régulée sur broche 27 ou
- 6 à 20 V non régulée sur broche 30
Microprocesseur : ATMega328
Mémoire flash : 32 kB
Mémoire SRAM : 2 kB
Mémoire EEPROM : 1 kB
14 broches d'E/S dont 6 PWM
8 entrées analogiques 10 bits
Intensité par E/S : 40 mA
Cadencement : 16 MHz
Bus série, I2C et SPI
Gestion des interruptions
Fiche USB : mini-USB B
Boîtier DIL30
Dimensions : 45 x 18 x 18 mm
Version d'origine fabriquée en Italie.
7) La carte Arduino Mini Pro
La carte arduino Mini Pro est une carte Arduino Uno simplifiée à
l’extrême permettant néanmoins de piloter de petits projets ou
certains éléments d’un projet. Attention, cette carte n’intègre pas
de port USB ce qui rends sa connectivité délicate.
Groupe de Recherche en Électrotechnique et Automatique du Havre
17
8) La carte Arduino Yun
La carte AArduino Yun, récemment proposée par Arduino, est
conçue pour contrer les avantages de la carte Raspberry. Elle est
un dérivé de la carte Leonardo et a pour objectif de combiner la
puissance de Linux avec la facilité d’utilisation d’une carte Arduino.
Elle est également la première carte Arduino à être dotée
nativement d’un wifi intégré.
La carte Arduino Yun est basée sur un ATmega32u4 (comme la
Leonardo) et sur un Atheros AR9331. Le processeur Atheros
supporte une distribution Linino (Linux basé sur Open WRT). La
carte est équipée d'un port ethernet, d'un module Wifi et d'un
support pour carte SD. Cette carte permet d'exécuter des
commandes Linux depuis Arduino.
Groupe de Recherche en Électrotechnique et Automatique du Havre
18
La bibliothèque logicielle Bridge Library facilite la communication
entre les deux processeurs, ce qui donne la possibilité à Arduino de
communiquer avec les interfaces réseaux et de recevoir des
informations du processeur AR9331. La première mise sous tension
de la carte Yun donne un accès direct au réseau WiFi et peut être
configurée sans fil.
Des connecteurs situés sur les bords extérieurs du circuit imprimé
permettent d'enficher une série de modules complémentaires. Elle
peut se programmer avec le logiciel Arduino. Le contrôleur
ATMega32u4 permet la gestion du port, ce qui permet
d'augmenter la flexibilité dans la communication avec l'ordinateur.
Remarque : aucune des entrées/sorties du circuit Atheros n'est
disponible directement, toutes les entrées/sorties sont issues de
l'ATmega32u4.
Remarque : la carte n'est pas équipée d'un régulateur 5 V
(contrairement à une carte Arduino classique), l'alimentation sur
la broche Vin doit être de 5 V régulée.
Caractéristiques ATmega32u4 :
Mémoire flash : 32 kB (dont 4kB utilisés pour le Bootloader
Arduino)
Mémoire SRAM : 2,5 kB
Mémoire EEPROM : 1 kB
20 broches d'E/S dont 6 PWM
6 entrées analogiques 10 bits
Intensité par E/S : 40 mA
Cadencement : 16 MHz
Bus série, I2C et SPI
Groupe de Recherche en Électrotechnique et Automatique du Havre
19
Gestion des interruptions
Fiche micro USB
Caractéristiques Atheros AR9331 :
Architecture : MIPS 400 MHz
Ethernet : IEEE 802.3 10/100 Mbits/s
WIFI: IEEE 802.11b/g/n
Lecteur de carte : micro SD (non incluse)
Mémoire RAM : 64 Mb DDR2
Mémoire flash : 16 Mb
Dimensions : 72 x 53 x 17 mm
Connectique :
- 1 port ethernet
- 1 port USB
- 1 port micro-USB
- 1 port micro-SD
Groupe de Recherche en Électrotechnique et Automatique du Havre
20
PARTIE II : EXEMPLES
SIMPLES SUR LE LOGICIEL
ARDUINO
Groupe de Recherche en Électrotechnique et Automatique du Havre
21
1) Introduction
Il faut savoir que dans l’IDE d’Arduino, il y a deux fonctions
principales qui sont :
o setup( ) qui est exécuté une seule fois, elle c’est ici qu’il
faut configurer ses broches en utilisant la fonction
pinMode( ).
o loop( ) est une boucle qui se répète continuellement après
que le setup( ) soit exécuté.
Nous avons ensuite des fonctions à utiliser dans ces fonctions
principales :
o digitalRead( ) vérifie la tension sur la broche désignée.
o digitalWrite( ) permet d’envoyer 5 𝑉 ou 0 𝑉 sur une sortie
numérique.
o analogRead( ) prend un argument : la broche où se trouve
la tension à lire. La valeur, comprise entre 0 et 1023, est
une image de la tension sur la broche.
o analogWrite( ) : écrit une valeur analogique sur une
broche. Peut être utilisé pour allumer une LED à
différentes intensités ou conduire un moteur à
différentes vitesses.
Groupe de Recherche en Électrotechnique et Automatique du Havre
22
2) Exemple 1
Dans ce premier exemple, nous allons faire clignoter des LEDs :
Ici, nous faisons clignoter différentes LEDs à l’aide d’un simple
appui sur un bouton poussoir. L’algorithme est le suivant :
Si nous n’appuyons pas sur le bouton
Allumer le LED 3
Groupe de Recherche en Électrotechnique et Automatique du Havre
23
Eteindre les deux autres
Si on appui
Eteindre la LED 3
Faire clignoter les deux autres à tour de rôle
3) Exemple 2
Un second programme qui permet de voir comment afficher
quelque chose dans le moniteur série de l’IDE :
Ici nous affichons juste un nombre, il va s’incrémenter à chaque
tour de boucle.
Groupe de Recherche en Électrotechnique et Automatique du Havre
24
PARTIE III : GENERATION
D’UN SIGNAL PWM
Groupe de Recherche en Électrotechnique et Automatique du Havre
25
1) Principe
La modulation de largeur d’impulsion (en
anglais, Pulse With Modulation, PWM) est une
technique couramment utilisée en électronique
pour générer des signaux continus à l’aide de
circuit ne délivrant que des signaux discrets
binaires (donc qui ne peuvent prendre que deux
valeurs, le « tout » ou le « rien »). Le signal
continu résultant est obtenu en faisant la
moyenne des signaux sur une période donnée.
Ainsi, le signal résultant peut prendre n’importe
quelle valeur intermédiaire comprise entre le «
tout » et le « rien » et par conséquent simuler
n’importe quelle tension comprise dans cet
intervalle. Dans notre cas à nous, avec la carte
Arduino, cet intervalle va de 0V à 5V (la tension
de sortie en PWM ne peut pas être en dehors
de cet intervalle).
C’est sur ce principe, que fonctionne certains
ports de la carte Arduino. En effet,
l’électronique embarquée à l’intérieur ne
permettant pas d’envoyer une tension
analogique continue, la carte compense en
délivrant des impulsions électroniques discrètes
et ne pouvant prendre que deux valeurs. Les
ports de la carte pouvant fonctionner en PWM
sont reconnaissables par leur petite « vague »
inscrite à côté de la broche (voir photo cicontre). On s’aperçoit ainsi que les ports 3, 5, 6,
9, 10, 11 sont compatibles en mode PWM, ce
Groupe de Recherche en Électrotechnique et Automatique du Havre
26
qui n’est pas le cas des ports 0, 1, 2, 4, 7, 8, 12, 13. Leur fréquence
de fonctionnement est d’environ 490 Hz.
L’instruction de programme permettant à la carte Arduino de
délivrer une tension de sortie spécifique en PWM se fait par
analogWrite( ) où les arguments dans la parenthèse sont la
numéros de la broche concerné ainsi que le niveau de la tension à
délivrer par cette même broche. L’instruction digitalWrite( )
(mêmes arguments) permet à la carte de ne délivrer que deux
tensions : la tension haute (HIGH) et la tension basse (LOW). Pour
fonctionner en PWM, nous n’utiliserons donc que analogWrite( ).
2) Fonctionnement
Afin de « fabriquer » un signal PWM, nous allons utiliser le
Timer et plus particulièrement le Timer 2. Le module Arduino Uno
est capable de générer de la PWM sur 6 broches de sorties grâce à
la fonction analogWrite( ). D’une manière transparente pour
l’utilisateur, cette fonction utilise les timers du microcontrôleur
pour générer sur les sorties, un signal carré de fréquence fixe mais
de largeur variable pour l’impulsion à l’état haut. Le tableau suivant
indique quel timer est utilisé pour générer la PWM et sur quelles
sorties du module Uno elle est générée.
Groupe de Recherche en Électrotechnique et Automatique du Havre
27
Un Timer gère donc deux broches de sortie, la figure suivante
permet de comprendre l’architecture d’un bloc Timer. Sur cette
figure, la lettre « 𝑛 » est utilisée pour désigner le numéro du Timer
(𝑛 = 0,1,2).
Le signal d’horloge 𝑐𝑙𝑘𝑇𝑛 (en jaune) arrive à la logique de
contrôle, en provenance de l’extérieur (𝑇𝑛 ) ou bien de l’horloge
interne et du prescaler. La logique de contrôle incrémente ou
décrémente le timer 𝑻𝑪𝑵𝑻𝒏 (en vert) et celui-ci est comparé aux
valeurs des registres 𝑶𝑪𝑹𝒏 𝑨 et 𝑶𝑪𝑹𝒏 𝑩 (en bleu). Lorsqu’il y a
égalité, un signal est envoyé à un bloc appelé « Waveform
Groupe de Recherche en Électrotechnique et Automatique du Havre
28
Generation » (Génération de la forme d’onde) (en rouge) et c’est
ce bloc qui met en forme la PWM en positionnant à 0 ou à 1 le
registre des broches 𝑂𝐶𝑛 𝐴 ou 𝑂𝐶𝑛 𝐵 (en violet).
Il existe deux modes PWM, le « fast » et le « phase correct ».
Dans notre projet, nous utilisons le mode « fast ». Afin d’avoir ce
mode, nous devons configurer 3 registres. Tout d’abord le registre
TCCR2A :
Bits 7:6 :
Nous allons utiliser OCR2B donc OCR2A sera déconnecté, alors ces
bits seront à 0.
Bits 5:4 :
Groupe de Recherche en Électrotechnique et Automatique du Havre
29
Nous utilisons OC2B en mode normal, ainsi la disposition sera 1 : 0.
Bits 3:2 : Ces bits sont réservés, ils seront mis à 0.
Bits 1:0 :
Puisque nous utilisons le mode « Fast PWM », nous allons mettre la
configuration 1:1.
Ensuite, le registre TCCR2B :
Dans ce registre, nous utiliserons que les bits 2:0, les autres seront
mis à 0.
Groupe de Recherche en Électrotechnique et Automatique du Havre
30
Bits 2:0 :
Afin d’avoir une bonne fréquence, nous allons utiliser une division
par 8.
Donc bits 2:0 = 010.
Il reste à configurer OCR2B, pour ce faire, le schéma suivant
permet de comprendre son fonctionnement :
Groupe de Recherche en Électrotechnique et Automatique du Havre
31
La valeur de OCR2B permet de configurer le rapport cyclique, les
valeurs vont de 0 à 255, 0 pour 𝛼 = 0 % et 255 pour 𝛼 = 100 %.
3) Cas pratique
Cas 𝛼 = 20 % (𝑂𝐶𝑅2𝐵 = 51) :
Groupe de Recherche en Électrotechnique et Automatique du Havre
32
Cas 𝛼 = 50 % (𝑂𝐶𝑅2𝐵 = 128) :
Groupe de Recherche en Électrotechnique et Automatique du Havre
33
Cas 𝛼 = 90 % (𝑂𝐶𝑅2𝐵 = 230) :
On remarque donc que le calcul d’OCR2N est simple, c’est une
règle de trois.
Groupe de Recherche en Électrotechnique et Automatique du Havre
34
PARTIE IV : SIMULATION
SOUS PROTEUS – ISIS
(ARDUINO + PONT H +
MOTEUR)
Groupe de Recherche en Électrotechnique et Automatique du Havre
35
1) Le pont H
Pour pouvoir faire tourner le moteur dans les deux sens, nous
allons avoir besoin d’un circuit électronique appelé : « pont en H ».
Le pont en H est la partie qui fait office d’interface entre la carte
Arduino et le moteur.
Le pont en H possède 4 entrées qui fonctionnent deux à deux
entres elles.
Groupe de Recherche en Électrotechnique et Automatique du Havre
36
Le schéma de notre partie Moteur + Pont H est le suivant :
Les interrupteurs sont des Transistors dit MOSFET.
En 1er lieu, nous avons mis deux « driver » IR2101 qui
permettent de piloter les MOSFET car la carte n’est pas assez
puissante pour les piloter directement.
La porte « NOT » du début permet d’avoir le signal et sont inverse,
pour pouvoir changer de sens de rotation du moteur au niveau des
MOSFET.
Groupe de Recherche en Électrotechnique et Automatique du Havre
37
2) L’interrupteur
Ici, nous utilisons une résistance de « pull-up » afin d’imposer l’état
logique haut au circuit, l’appui sur le bouton imposera l’état
logique bas.
Le condensateur permet d’éviter le phénomène de rebond lorsque
l’on utilise des interrupteurs mécaniques. Le problème est d’autant
plus important lorsque l’on utilise des contacteurs en métal qui
admettent une certaine élasticité. Au moment de la connexion ou
de la connexion, les contacteurs peuvent rebondir et fausser le
résultat de l’interruption. Le nombre et la durée des changements
Groupe de Recherche en Électrotechnique et Automatique du Havre
38
dépendent du type d’interruption, ils se réalisent le plus souvent
en quelques millisecondes.
Le plus important est dans l’implantation pratique, en simulation,
cela n’a aucune conséquence.
3) Montage global
Notre montage global est le suivant :
Groupe de Recherche en Électrotechnique et Automatique du Havre
39
PARTIE V : REGULATION DE
LA VITESSE
& TRANSMISSION SERIELLE /
SANS FIL
Groupe de Recherche en Électrotechnique et Automatique du Havre
40
1) Régulation de la vitesse
Un régulateur de vitesse est un système destiné à stabiliser
automatiquement la vitesse, c’est le même principe que dans une
voiture, sauf qu’ici, la vitesse ne se stabilise jamais, il y aura une
erreur. C’est-à-dire que la vitesse va détecter un « palier » haut et
bas à ne pas dépasser, comme le montre la figure suivante :
Notre consigne est notre vitesse que l’on communique, que l’on
veut obtenir, ici nous avons pris une vitesse de 850 𝑡𝑟⁄𝑚𝑖𝑛.
Le moteur va être du type de la courbe bleue, les « paliers » endessous et au-dessus de la vitesse sont les vitesses à ne pas
franchir, comme nous l’avons choisi dans notre code :
Groupe de Recherche en Électrotechnique et Automatique du Havre
41
Nous avons donc l’algorithme suivant :
Si la vitesse est supérieure à la consigne + marge
Décrémenter le rapport cyclique de 5 %
Sinon Si la vitesse est inférieure à la consigne + marge
Incrémenter le rapport cyclique de 5 %
Où la marge est la marge d’erreur que l’on a choisie de 1 𝑡𝑟⁄𝑚𝑖𝑛.
2) Transmission sérielle
L’IDE Arduino dispose d’un moniteur série, c’est avec lui qu’on va
pouvoir communiquer en « direct » avec la carte.
Le moniteur ressemble à ceci :
C’est à travers cette interface que l’on va pouvoir envoyer ou
recevoir des informations provenant de la carte.
Groupe de Recherche en Électrotechnique et Automatique du Havre
42
Plusieurs fonctions sont nécessaires :
o Serial.begin( ) : Permet de configurer la vitesse de
transmission du port série (en bauds).
o Serial.print( ) : Permet d’envoyer une donnée vers le
moniteur série.
o Serial.println( ) : Permet d’envoyer une donnée vers le
moniteur série et fait un saut à la ligne « ln ».
o Serial.write( ) : Permet d’exploiter le format binaire, renvoie
une chaîne de caractères en nombre de bits.
o Serial.read( ) : Permet de lire les données contenues dans le
buffer.
o Serial.flush( ) : Permet de vider la mémoire tampon, la file
d’attente, ou dit le « buffer » de la liaison série.
o Serial.available( ) : Permet de connaître si il y a des
caractères disponibles pour lecture dans la mémoire tampon
(buffer) du port série.
Groupe de Recherche en Électrotechnique et Automatique du Havre
43
3) Transmission sans fil (Bluetooth)
Le module HC-06 peut communiquer avec la carte Arduino via
la liaison série (broches numériques N°0 et N°1) mais le moniteur
série ne peut plus être utilisé. C'est pour cette raison qu'il est
préférable d'utiliser la bibliothèque SoftwareSerial intégrée d'office
dans l'IDE Arduino, nous allons le montrer un peu plus bas avec
notre programme final et l’implantation pratique.
Nous avons pu via l’application sur Android « Bluetooth terminal
HC-05 », commander la vitesse du moteur.
Groupe de Recherche en Électrotechnique et Automatique du Havre
44
Par cette application, après l’avoir apparié au module, il suffit
d’écrire la vitesse que l’on souhaite et le moteur se calibre dessus.
Alors, la vitesse s’affiche sur notre moniteur série en même temps
que notre moteur réceptionne l’information.
Groupe de Recherche en Électrotechnique et Automatique du Havre
45
Ici, nous avons testé le module avec une vitesse de 850 𝑡𝑟⁄𝑚𝑖𝑛, le
moteur va, le temps de la régulation, avoir tantôt des vitesses en
dessous de 850 𝑡𝑟⁄𝑚𝑖𝑛 et tantôt au-dessus de 850 𝑡𝑟⁄𝑚𝑖𝑛, c’est
pour cela que dans nos images finales, la vitesse du moteur
affichée est de 931 𝑡𝑟⁄𝑚𝑖𝑛.
Groupe de Recherche en Électrotechnique et Automatique du Havre
46
PARTIE VI : PROGRAMME
FINAL ET IMPLANTATION
PRATIQUE
Groupe de Recherche en Électrotechnique et Automatique du Havre
47
1) Images
Notre carte, l’afficheur LCD ainsi que le module HC-06 (en dessous
à gauche du LCD) :
Groupe de Recherche en Électrotechnique et Automatique du Havre
48
Le moteur avec l’affichage de vitesse (en 𝑡𝑟⁄𝑚𝑖𝑛) :
Groupe de Recherche en Électrotechnique et Automatique du Havre
49
Le pont en H :
Groupe de Recherche en Électrotechnique et Automatique du Havre
50





