Diapositive 1 - PowerPoint PPT Presentation

1 / 41
About This Presentation
Title:

Diapositive 1

Description:

5 convertisseurs analogiques/num riques 10 bits. 1 port s rie connectable un ordinateur ... une course de 180 et est asservi par un potentiom tre reli l'axe ... – PowerPoint PPT presentation

Number of Views:69
Avg rating:3.0/5.0
Slides: 42
Provided by: Gho864
Category:

less

Transcript and Presenter's Notes

Title: Diapositive 1


1
Microcontrôleurs PIC
2
  • 1ère séance
  • Présentation du PIC16F876
  • Outils de programmation du PIC
  • Le langage C
  • Exemples dapplications simples
  • 2ème séance
  • Présentation des motorisations
  • Interfaçage avec le PIC
  • Capteurs IR
  • Interfaçage avec le PIC

3
1ère séance
4
PIC 16F876 (I)
  • Larchitecture interne
  • Mémoire programme (FLASH) 8K mots de 14 bits
  • Mémoire RAM 368 octets
  • Mémoire utilisateur (EEPROM) 256 octets
  • Unité de calcul (ALU)
  • Circuit dhorloge (ex 16 Mhz gt 4 MIPS)
  • Périphériques internes
  • Ports dentrées/sorties

5
PIC 16F876 (II)
  • Les périphériques internes
  • 3 compteurs indépendants
  • 5 convertisseurs analogiques/numériques 10 bits
  • 1 port série connectable à un ordinateur
  • 1 port I²C
  • 1 port SPI (pour connecter des PICs entre eux)

6
PIC 16F876 (III)
  • Les ports dentrées/sorties
  • 5 ports distincts (A6 B8 C8) 22 e/s
  • Courant max en sortie 20mA/pin 200mA/port
  • Registre de sortie (effet mémoire)
  • Entrées analogiques 0 5V
  • Entrées numériques 0 ou 5 V

7
PIC 16F876 (IV)
Pour que le PIC démarre
Circuit de RESET
Circuit dalim
Circuit dhorloge
8
La programmation
PC
Programmateur
PIC
PIC
Langage C / BASIC
Hexadécimal
Assemblage
Compilation
Langage Assembleur
Haut niveau
Bas niveau
9
La programmation in-situ
Elle évite de déconnecter le PIC du circuit à
chaque programmation
Connecteur de programmation
Attention Toujours couper lalimentation de
votre circuit durant la prog.
10
Le langage C
Structure du programme en C include lt16F876a.hgt
//Définit le type de PIC utilisé fuses
HS,NOPROTECT,NOWDT //Fusibles de
configuration use delay(clock16000000)
//Vitesse du PIC 16Mhz //emplacements pour
les fonctions Void main() //Programme
principal
11
Le langage C
Les Variables Son nom peut comporter plusieurs
lettes/chiffres Les types de variables Int
entier de 0 à 255 Bit 0 ou 1 Char Caractère
dans la norme ASCII Float réels 32 bits à
virgule flottante Il faut définir toutes les
variables au début du programme et de préférence
leur attribuer une valeur par défaut
include lt16F876a.hgt fuses HS,NOPROTECT,NOWDT
use delay(clock16000000) Void main() Int
a0,b1,test0 .... ...
12
Le langage C
Les opérateurs Opérations de calcul
addition - soustraction multiplication /
division puissance modulo
  • Opérations de test
  • égalité entre 2 éléments
  • ! inégalité
  • gt supérieur
  • gt supérieur ou égal
  • lt inférieur
  • lt inférieur ou égal
  • Opérations logiques
  • ET logique
  • OU logique
  • ! NON logique

Raccourcis i ? i i 1 incrémentation i-- ?
i i 1 décrémentation xy ? x xy
13
Le langage C
Les boucles Boucle if Void main() If
((i0)(i!12)) //actionA else //actionB
Boucle while Void main() While
(i!0) //Action A //ActionB
Boucle for Void main() For(j0jlt3j) //A
ction A
14
Le langage C
Les Ports dentrées/Sorties Ex on a une led
connectée sur la patte RA0, un bouton poussoir
sur la patte RB0 Dans notre programme on va
vouloir allumer la led et lire létat du bouton
poussoir Void main() If (input(PIN_RB0)) // Si
du 5V est présent sur la patte 0 du port B alors
on rentre dans la boucle Output_bit(PIN_RA0,1)
//On applique du 5V sur la patte 0 du port A
15
Le langage C
Les fonctions Elles peuvent être appelées à
partir de main. Exemple on fait une fonction
lire_capteur() qui attends un signal dun capteur
branché sur la patte RA0 ou dun autre sur la
patte RA1 et renvoie 1 si le capteur RA0 est
excité, 2 si le capteur RA1 lest. Int
lire_capteur () While((!input(PIN_A0))(!input(P
IN_A1))) //Tant que tout est à 0 on fait
rien If(input(PIN_A0)) Return 1 Else Return
2 Main() Int x x lire_capteur() // x vaut
1 ou 2 selon létat du capteur lors de lappel de
la fonction
16
Le langage C
Les commandes spéciales Rand() x rand()
//x prend une valeur aléatoire entre 0 et
255 Delay_ms() pause dans un programme en
ms Main() Output_bit(PIN_RA0,0) //Mets du
0V sur la patte RA0 Delay_ms(5000) //Attends
5 secondes Output_bit(PIN_RA0,1) //Mets du 5V
sur la patte RA0 Reset_cpu() fait un reset du
PIC
17
Exemples
1er exemple Faire clignoter une LED (500 ms
allumée, 1s éteinte)
include lt16F876a.hgt fuses HS,NOPROTECT,NOWDT
use delay(clock16000000) define
LED PIN_RB7 Void main() While( 1
) Output_bit(LED,1) Delay_ms(500) Output_bit(LE
D,0) Delay_ms(1000)
18
Exemples
2ème exemple Faire clignoter une LED (500 ms
allumée, 1s éteinte), sarrêtant lors de lappui
sur un bouton poussoir.
include lt16F876a.hgt fuses HS,NOPROTECT,NOWDT
use delay(clock16000000) define
LED PIN_RB7 define bouton PIN_RC4 Void
main() While(input(bouton)) Output_bit(LED,1) D
elay_ms(500) Output_bit(LED,0) Delay_ms(1000)

19
Exemples
3ème exemple Faire une PWM (pulse width
modulation) de fréquence 1kHz et de rapport
cyclique variable sur la patte RA0
include lt16F876a.hgt fuses HS,NOPROTECT,NOWDT
use delay(clock16000000) Void PWM( int i) Int
j While (1) Output_bit(PIN_RA0,1) For(j0jltij
) Delay_us(10) Output_bit(PIN_RA0,0) For(j
0jlt100-ij) Delay_us(10) Void
main() PWM(33) //Applique une PWM de fréquence
1 kHz et de rapport cyclique 33 sur la patte
RA0
20
Quelques applications du PIC
21
2ème séance
22
Les interruptions
Il est possible dinterrompre le déroulement du
programme lorsquun changement détat intervient
sur une ou plusieurs patte du port B ou C
include lt16F876a.hgt fuses HS,NOPROTECT,NOWDT
use delay(clock16000000) INT_RB //changement
détat sur les pattes B4-B7 Void
fonction_interruption() ... //Fonction
dinterruption ... Void main() Enable_interrupt
s(INT_RB) //Activation des interruptions sur le
port B ... ...
23
3 types de motorisation différents
Le Servomoteur modifié
http//www.robot-mobile-irbot.com/4-modif-servomot
eur-du-robot-mobile.htm
Le moteur pas à pas
Le moteur à courant continu
24
Servomoteur
Présentation du Servomoteur
Le servomoteur est constitué dun moteur à
courant continu relié à un réducteur, et asservit
par un potentiomètre et un circuit de contrôle
25
Servomoteur
Pour le commander, on lui applique des impulsions
selon la norme suivante
26
Servomoteur
Typiquement, un Servo est destiné à avoir une
course de 180 et est asservi par un
potentiomètre relié à laxe du moteur. Modifier
un servo consiste à lui permettre mécaniquement
de faire un tour complet (on coupe la
butée) Ensuite on déconnecte le potentiomètre et
on le remplace par deux resistances de valeurs
égales, ainsi, le circuit dasservissement à
limpression dêtre au point milieu.
27
Servomoteur modifié
  • Une impulsion de 1,5 ms va lenvoyer à la
    position 0 (où il est toujours) donc il ne bouge
    pas
  • Une impulsion de 1 ms va lenvoyer à -90 mais il
    ny arrivera jamais donc il va tourner
    indéfiniment dans le sens anti-horaire
  • Une impulsion de 2 ms va lenvoyer à 90 mais il
    ny arrivera jamais donc il va tourner
    indéfiniment dans le sens horaire
  • Plus la durée de limpulsion est proche du neutre
    (1,5 ms) plus il tournera doucement, inversement,
    plus cette durée est proche des extrêmes (1 ou 2
    ms), plus il va tourner vite

28
Servomoteur modifié
Vcc 7,5V
29
Servomoteur modifié
La fonction avance() permet de faire tourner le
servo dans un sens à sa vitesse maxi
include lt16F876a.hgt fuses HS,NOPROTECT,NOWDT
use delay(clock16000000) define SERVO
PIN_RC4 Void avance() While(1) Output_bit(SERVO,
1)//On met à 1 pendant 2ms Delay_ms(2) Output_bi
t(SERVO,0) Delay_ms(18)//On met à 0 pendant 20
2 18ms Void main() Avance()
30
Servomoteur
  • Avantages
  • Boîtier pratique
  • 1 seul fil de commande par Servo
  • Directement pilotable par le PIC
  • Couple élevé
  • Inconvénients
  • Les impulsions doivent êtres précises et
    régulières
  • Vitesse assez faible
  • Prix 7-8
  • Il faut le modifier

31
Moteur CC
La consommation dun tel moteur est denviron
100mA, il est donc impossible de le connecter
directement sur une patte du PIC
Transistor MOS BUZ11
32
Pont en H
Attention, toujours alimenter un pont en H en
diagonale, sinon sur , pas bien
33
Moteur CC
  • Avantages
  • Rapide
  • Facile à commander
  • Répandu
  • Inconvénients
  • Assez compliqué pour un fonctionnement dans les 2
    sens
  • -Rond, donc plus difficile à fixer

34
Moteur Pas à Pas
Moteur pas à pas bipolaire plus facile à
piloter que lunipolaire
En alimentant successivement les bobines A, B, C,
D 2 à 2 on réalise 4 pas
35
Moteur pas à pas
36
Moteur pas à pas
37
Moteur pas à pas
La fonction avance() permet de faire tourner le
moteur pas à pas de n4 pas
include lt16F876a.hgt fuses HS,NOPROTECT,NOWDT
use delay(clock16000000) Void avance(int
i) Int j For(j0jltij) Output_b(6) //1ère
position Delay_ms(5) //pause entre 2
pas Output_b(5) //2ème position Delay_ms(5)
//pause entre 2 pas Output_b(9) //3ème
position Delay_ms(5) //pause entre 2
pas Output_b(10) //4ème position Delay_ms(5)
//pause entre 2 pas Return Void
main() Avance(4) //Fait tourner le moteur de 16
pas
38
Moteur Pas à pas
  • Avantages
  • Rapide
  • Très précis
  • Peu coûteux
  • Inconvénients
  • Compliqué à mettre en uvre
  • Pics de courants lors dun pas

39
Le CNY70
40
Le CNY70
41
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com