prof. Jacques Lepot
INTERFACER UN MICROCONTROLEUR: LES ENTREES
Un switch



Lorsque le bouton est enfoncé, l'entrée est à la masse, on lit 0.

Si le bouton n'est pas enfoncée l'entrée est à Vcc grâce à la résistance de pull-up, et on lit 1

L'atmega dispose de résistance interne pour chaque entrée.
Il n'est donc pas nécessaire d'en placer sur le circuit, à condition d'activer les résistances internes par software.
Cela se fait en écrivant 1 sur l'entrée correspondante.

Le soft (bascom):

Config PortX=&BYYYYYYYY

PortX=&BZZZZZZZZ


IF PinX.N=0 then
  action à réaliser si le bouton est enfoncé
END IF


ARDUINO

i=DigitalRead(inputpin);


Dans l'instruction CONFIG, les bits ou sont connectées les switches seront à 0 pour indiquer une entrée.
Pour configurer les bits ou l'on désire activer une pull-up on écrit avec l'instruction PORTX=valeur
Si un bit est 1 dans valeur, alors la résistance correspondante est activée

PinX, le nom du port ou est le switch, N est le numéro du bit. exemple PINB.0

On ECRIT sur PORT et on LIT sur PIN



ATTENTION AUX REBONDS qui durent de 5 à 10 ms



Un optocoupleur
L'optocoupleur est utilisé pour isoler une entrée du micro d'un signal extérieur.
Le signal extérieur commande une led qui éclaire un phototransistor.Il n'y à pas de connexion électrique entre l'un et l'autre, seulement de la lumière. L'ensemble est enfermé dans un petit boîtier.

 

C'est aussi la technique utilisée pour envoyer vers le micro des signaux avec un voltage différent de son alimentation.
Dans les automates et les équipement industriels, les signaux sont généralement de 24V.
On choisira R pour avoir environ 20ma dans la led.

Ici aussi, on économise une résistance avec les pull-up internes, donc à activer dans ce cas.

Le soft :

identique à celui pour un switch, notez que si du courant est appliqué à l'entrée de l'optocoupleur, le transistor devient passant et l'entrée passe à 0. Si au contraire il n'y à rien à l'entrée de l'opto, l'entrée du micro passe à 1.

Un capteur résistif
Il existe un grand nombre de capteurs basés sur la variation d'une résistance en fonction d'une grandeur physique.
Lumière,température,humidité,force,position ...
Si l'on dispose d'un convertisseur A/D, ces capteurs sont très facile à interfacer.


Rfix et Rvar réalisent un diviseur de tension. La tension Vref, qui doit être stable et précise peut provenir de l'alimentation, d'un composant spécial ou du processeur lui-même par la patte VREF.

La meilleure valeur de Rfix sera déterminé par calcul ou expérimentalement, en général elle sera du même ordre
que Rvar "au repos".

Pour calculer Q, on notera que comme Vad =Vref correspond à une mesure de 1023.c'est à dire le maximum possible .Q sera égal à la valeur lue divisée par 1023.

Attention, utilisez des "single" et non des entiers pour ce calcul, Q est toujours compris entre 0 et 1.

Une fois connue la valeur de Rvar, on trouve la grandeur physique à partir de la loi qui relie la résistance à cette grandeur.


Remarque, pour "soigner", on ajoute un petit condensateur de déparasitage entre ADin et la masse, plus la variation est lente, plus la valeur du condensateur peut être grande ( de 100nf à 10uf).

Le soft (bascom):

Config ADC=single,Prescaler=auto,reference=internal
Dim V as WORD

START ADC
V=GETADC(n)
STOP ADC

ARDUINO

i=AnalogRead(inputpin);

 


Attention, ici il ne faut pas activer de résistance de pull-up sur les entrées de mesure

La référence (càd le maximum) est fixé à 2,6V (vérifier dans la doc)

n est le numéro du canal (0,1,2..), chaque canal correspond à une patte

La valeur de V est comprise entre 0 et 1023. (=2.6V=Vref)

Une photodiode ou un phototransistor
Une photodiode se branche exactement comme ci dessus,La résistance est choisie pour obtenir quelques mA dans la diode.
La tension de seuil (+/-0.7V) varie en fonction de la lumière reçue par la doiode.
La variation est plus faible qu'avec une résistance variable à la lumière mais le temps de réaction est très rapide, on utilise cette technique pour communiquer des données (fibres optiques,liaison Infrarouge ...)
Une autre application est la barrière lumineuse pour le comptage,la détection de passage, le positionnement.


Un optoswitch est comme un optocoupleur coupé en 2, le photo-transistor est d'un coté et une led de l'autre.
La led est raccordée entre le + et la masse avec une petite résistance.
Le transistor à son émetteur à la masse et le collecteur vers l'entrée du mico.

On en trouve dans les vieille souris, les vieux lecteurs de floppy et CD.

 


Le soft :

Pour la mesure de lumière, c'est comme pour un élément résistif.
Pour l'optoswitch, c'est comme un switch.


Un capteur infrarouge pour télécommande
On peut facilement utiliser une télécommande de télévision plutôt que de réaliser un clavier qui nécessite de nombreuses connexions au microcontrôleur.
Il suffit pour cela d'utiliser un capteur IR prévu à cet effet. Ce circuit n'est pas un simple photo transistor, en effet, les signaux des télécommandes de ce type sont modulés, un 1 étant transmit comme une rafale d'impulsions lumineuse à une fréquence bien précise. Les capteurs IR assurent le filtrage et la démodulation, la sortie nous donne la suite de 1 et de 0 qui ont été transmis.

Une seule entrée du micro est nécessaire, les 2 autre pattes sont 5V et GND.

Différents codes sont utilisés mais le plus répandu en Europe(les télécommandes Philips) est le code RC5.

Chaque message est composé de 14 bits, un bit 1 est une transition de haut en bas et un bit 0 est une transition de bas en haut.Le message se décompose en 2 parties, l'adresse (TV,magnéto,sat...) et la commande.

Le bascom à une fonction intégrée (un "driver" ) pour le mode RC5
Faite une recherche sur getrc5 dans le help, vous trouverez même le brochage du circuit.

Le soft (bascom):

CONFIG RC5 = PIND.5

......
GET RC5(adr,comnd)
.....

 

 



La patte ou est connecté le récepteur IR (pas de pull-up)


retourne l'adresse et la commande reçue (si il y en à une)

Attention, cette fonction monopolise un TIMER.
...