Menu Général                                    (URL)  http://perso.wanadoo.fr/yves.heilig/index.htm

Electronique:     le PIC 16 F 84


 

Sommaire


 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

Le microcontrôleur PIC16F84

C'est un microcontrôleur de la société Microchip (URL) qui offre un très bon rapport qualité/prix.

Ses principales caractéristiques:

  • seulement 35 mots d'instruction  (URL)  à apprendre
  • vitesse jusqu'à 10Mhz
  • 4 sources d'interruption
  • 1000 cycles effacement/écriture possible de la mémoire programme flash
  • 1K mots mémoire programme Flash
  • 68 octets de données RAM
  • 64 octets de données EEPROM
  • 13 pins I/O avec contrôle individuel de direction
  • TMR0 8bit timer/compteur
Le tout sur un pavé de 18 pins.

Vous pouvez télécharger le datasheet (URL) complet (environ 120 pages) ainsi que des notes d'applications chez Microchip.(URL)

Début de page
 
 

Pour débuter

MPLAB - Plate forme de développement

Pour écrire un programme PIC il vous faut :
  • un éditeur de texte
  • un assembleur
  • un compilateur
  • un simulateur pour tester le programme sur le micro
Tout cela est mis gracieusement à votre disposition par Microchip. Cela s'appelle MPLAB, téléchargez-le et installez-le sur votre micro.

Début de page
 
 

MPASM - L'assembleur

MPASM fait partie de MPLAB, c'est l'assembleur qui permet d'écrire le programme PIC.

Le meilleur moyen d'apprendre est d'analyser un programme simple, tel que clignotement d'une LED. Je vous conseille de télécharger le guide de MPASM  (URL)  de chez Microchip  (URL)  et de l'imprimer.

Pour vous donner un aperçu voici un petit bout de programme qui allume une LED lorsqu'on appui sur le bouton poussoir. La LED est connectée à la voie 0 et le B.P. à la voie 1 du port B.
 
 

toto btfss PORTB,1

b toto

bsf PORTB,0
 
 

toto est une étiquette

btfss est une instruction de test de bit (bit test file skip if set), elle test le bit 1 du registre PORTB, si ce bit est à 1 (Bouton poussoir appuyé) elle saute l'instruction suivante, c'est à dire qu'elle arrive à l'instruction bsf, si le bit est à 0 elle exécute l'instruction suivante

b toto branchement à l'étiquette toto, le programme boucle

bsf PORTB,0  bit set file, c'est à dire qu'elle positionne à 1 la voie 0 du PORTB (ce qui allume la LED)
 
 

Télécharger le programme complet (la LED change d'état à chaque appui sur le BP) : bp_led.zip

Début de page
 
 

Le programmateur

Une fois le programme compilé, il faut le transférer dans la mémoire du microcontrôleur. Pour cela il vous faut :

Une petite interface matérielle

C'est le programmateur de PIC. Il en existe 2 versions, une version pour port série, une pour le port parallèle (c'est celle que j'utilise).

Vous en trouverez dans le commerce à petit prix. Vous pouvez également en monter une vous-même ,c'est ce que j'ai fait (AN589 de Microchip ).

 

Un logiciel

Un logiciel qui assure le transfert des données entre le PC et le microcontrôleur (il est fourni avec le programmateur) ou bien il se trouve sur le Web. (j'utilise PIP02, mais je ne vous le conseille pas, fonctionne mal sous Windows 95 et n'est plus mis à jour).

Voici une sélection de liens qui proposent des schémas de programmateurs :

  • PROPIC  (URL)  avec un logiciel tournant sous Win95/98 (très bon shareware, prévu pour toutes une série de PIC, schéma simple, facile à réaliser)
  • Smart card programmer  (URL)  , pour port série , minuscule (5,5 * 6,5 cm)
  • AN589  (URL)  de Microchip avec PIP02  (URL)  (à utiliser plutôt sous DOS)
  • Yapp programmer (URL)
  • TOPIC (URL)
  • 7-8/98 d'Elektor. , il s'agit du programmateur pour port // de David Tait avec PIP02 (URL)
  • n°238 (Juillet/Aout 1999) d' Electronique Pratique, programmateur très simple pour PIC16F84 par le port série du PC
Début de page
 
 
 
 

Votre premier programme

Clignotement d'une LED

Eh oui, il faut commencer petit pour terminer grand.

2 approches différentes :

  • un programme qui utilise le timer : led_tim.zip (URL)
    • Le timer génère une interruption toutes les 256µs. Dans la routine d'interruption, l'on décrémente la variable TIME.

    •  

       
       
       

      Dans le programme principal, on change l'état du PORTB (sur lequel est connectée une LED) lorsque TIME=0, et on recommence le cycle.

  • un autre qui utilise le chien de garde : led_wdt.zip (URL)
Début de page
 
 

Carte d'expérimentation

Pour tester de nouveaux montages à base de PIC, il peut s'avérer utile de disposer d'une platine de développement. Pour ma part j'utilise le circuit "Système de développement à faible coût pour PIC" décris dans le n° 7-8/98 d'Elektor. Ce système permet de tester un PIC que vous avez réussi à programmer.

La platine dispose de sa propre tension d'alimentation 5V, d'un oscillateur quartz ou RC réglable (sélectionnable par inter DIP) et d'une zone pastillée permettant d'implanter des composants d'E/S tel que BP, LED ...

 


 

Vous trouverez l'équivalent sur le Web ,par exemple PicTec ou TOPIC (très bien documenté, typon fourni) qui combinent carte d'expérimentation et programmeur. (à tester)

Début de page

Programmer en d'autres langages

Cette rubrique s'adresse à ceux qui ont du mal à se mettre à l'assembleur .

Il est tout à fait possible de programmer les PIC en d'autres langages, tel que le Basic, le C, le Pascal.

Mais il faut savoir que si vous voulez tirer le maximum de votre PIC le seul vrai langage à utiliser est l'assembleur.

Ci-dessous une sélection de liens vers des sites proposant des compilateurs gratuit .

  • Pic Basic, le site de LET propose un compilateur Basic très intérressant fonctionnant sous Win95/98.
  • C2C Compiler , un compilateur C fonctionnant sous Win95/98/NT, Linux.
Début de page
 
 
 
 

Des exemples de réalisation

Horloge DCF77

Il s'agit d'une horloge à mise à l'heure automatique par les signaux horaires DCF77 émis par l'émetteur de Francfort (Allemagne).

Ci-dessous la roue du temps.

On constate que dans l'espace de 60 sec sont transmis les informations des minutes, heures, jour, jour de la semaine, mois et année. Le programme de l'horloge DCF77 n'exploite que les informations des minutes et heures.

Image extraite du site DCF77

Un module de réception DCF77 de chez Conrad capte et démodule les signaux horaires. En sortie du module, un 0 logique correspond à une impulsion de 100ms, alors qu'un 1 logique correspond à une impulsion de 200ms. Le microcontrôleur mesure la durée des impulsions et décode le signal horaire. L'affichage de l'heure se fait sur un module série 4 x 7 segments de chez Sélectronic. Le traitement du signal horaire a lieu dans une routine d'interruption. Il reste 70% de mémoire disponible pour écrire le programme principal.

Télécharger le schéma,le programme, les organigrammes et la doc de l'horloge DCF77. (dcf77.zip)

Début de page
 
 

Programmateur de chauffage DCF77

Il s'agit d'un programmateur de chauffage électrique qui pilote les radiateurs de 5 zones en fonction de l'heure et de la présence des personnes. Pour alléger votre facture EDF, c'est le système idéal.

Il se compose de 2 modules

  • Le module Horloge DCF77
  • Le module interface à relais

Caractéristiques:

  • équipé d'un microcontrôleur PIC16F84
  • affichage de l'heure sur un module 4 x 7 segments
  • mise à l'heure automatique par signaux DCF77 ( voir Horloge DCF77)
  • détection de présence par Infra Rouge
  • 5 zones de 2 cycles arrêt/marche, dont 3 zones avec détection de présence
  • programmation des plages horaires dans l'EEPROM
  • 2 modes de fonctionnement :
    • manuel : c'est le propriétaire qui pilote
    • automatique : c'est le PIC qui pilote
Le chauffage par détection de présence fonctionne selon le principe suivant : tant qu'il y a une personne dans la pièce et que l'on est dans la plage horaire de fonctionnement, le chauffage fonctionne. Si la personne quitte la pièce, après une tempo de 30' le chauffage se met en veille. Quand une personne revient, le chauffage se rallume instantanément. En dehors des plages horaires le chauffage est en veille.
 
 

Téléchargez chauff.zip

Début de page
 
 

Horloge très originale

The propeller clock, d'après une idée ingénieuse de Bob Blick.

Un PIC16C84 tournoie à 1800 tr/mn en bout d'arbre moteur !!!

Sept LEDs en rotation donnent l'illusion de l'heure affichée dans l'espace.

Principe

Un moteur entraine une hélice (le circuit imprimé avec les LED), et le microcontrôleur (PIC16C84 ou F84) génère l'heure et change l'état d'une rangée de 7 LEDs afin de simuler l'affichage sur une matrice de 7x30 points. L'alimentation électrique est prise sur le bobinnage du moteur.

C'est une illusion mais l'effet obtenu est remarquable.

Vous trouverez toutes les informations (plan, schéma, logiciel, circuit imprimé, photos) relatives à sa construction sur la page Propeller Clock de Bob Blick.

Pour ma part, j'ai utilisé un moteur plat d'un lecteur de cartouche avec le circuit imprimé décris dans la page de Bob Blick. Le résultat est concluant.
 
 

Début de page
 
 
 
 

Télécommande par téléphone

Il s'agit d'une télécommande du système d'alarme (dans mon cas personnel) via le téléphone avec accusé de réception sous la forme d'un message vocal. L'accès est sécurisé par un mot de passe de 4 chiffres.

Après s'être identifié, le menu suivant est diffusé :

Pour modifier (l'état du système d'alarme) tapez le 1

Pour interroger (l'état du système d'alarme) tapez le 2

Après avoir effectué un choix, un message "Actif" ou "Arrêt" est diffusé en terme de réponse.

Le processus est dirigé par un PIC16F84, les messages vocaux sont mémorisés dans le circuit ISD1016A (ou 1416).

ISD1016A est un circuit de 28pins qui permet d'enregistrer et de rejouer un message vocal d'une durée de 16s, il peut être fractionné en plusieurs messages.

Télécharger le datasheet série 1000 d'ISD

Pour mémoriser les messages vocaux, il est nécessaire de réaliser un petit montage avec un micro de bonne qualité, un HP et des switchs pour sélectionner les adresses (cela est expliqué dans le datasheet).

Téléchargez com_tel.zip

Début de page
 
 

Boîtier d'alarme RS232

Ce système a été conçu pour une application professionnelle, mais peut être utilisé pour un usage personnel.

Il s'agit d'un boîtier capable de générer une alarme visuelle (affichage 7 segments du n° de l'alarme), sonore et matérielle (contact d'un relais). Le déclenchement de l'alarme se fait par le port série RS232 (à partir d'un modem, micro) par réception d'un mot de commande.

Le boîtier reconnaît 8 types d'alarme et gère également les fins d'alarme.

Ex: le boîtier est relié à un micro

pour déclencher l'alarme 1, il faut lui envoyer la chaîne " med1 " sur le port série

pour arrêter l'alarme, envoyez " $fin "
 
 

Télécharger boitier.zip

Début de page
 
 
 
 

Routine RS232

RS232 est le protocole de transmission de données en série. Il est notamment utilisé sur le port série des micros.

Il s'agit de la note d'application AN555 de Microchip que j'ai adaptée au PIC16F84. Des schémas d'interfaces avec le MAX232 sont proposés dans la note AN555.

Peut-être un peu compliquée, mais fiable.

Ses caractéristiques

  • transmission simplifiée en half-duplex
  • vitesse paramètrable de 600 à 4800 bds avec une horloge 4Mhz et de 600 à 19200 Bds avec une horloge 10Mhz
  • nombre de bit ( 1 à 8)
  • parité (sans, paire, impaire)
Télécharger rs232.zip

Début de page
 
 

Afficheur LCD

Il peut s'avérer interessant de raccorder un module d'affichage LCD au microcontrôleur pour plusieurs raisons. Pour faciliter le débogage, pour donner un aspect plus professionnel à votre montage, pour afficher des informations utiles ...

Voici quelques liens interressants sur le principe de pilotage des modules LCD

Il existe plusieurs solutions de cablage pour piloter un module d'affichage LCD.
 
 

Solution 1 (Cablage complet en mode 8bits, 11fils )

Routine d'affichage (contrôle par 8bits) de caractères sur un module LCD de 2 lignes à partir d'un PIC16F84.

Téléchargez le schéma et la routine lcd.zip
 
 

Solution 2 (Cablage complet en mode 4 bits , 7fils)

Une autre routine LCD (contrôle par 4 bits) adaptée de la note d'application de Microchip par Norm Cramer : cramer.zip
 
 

Solution 3 (Cablage série en mode 4bits, 2fils)

Encore mieux, pilotage d'un module LCD à l'aide de 2 fils en utilisant un 74LS174 (Sextuple bascule de type D) cablé en registre à décalage. Les données sont transmises en série vers le registre à décalage et les sorties de celui-ci adressent le module d'affichage.

Voir la page LCD (fin de page) de Mike Pretko
 
 

Solution 4 (Utilisation d'un 2ème microcontrôleur piloté par liaison RS232)
 
 
 
 

Début de page
 
 

Télécommande infrarouge

Ce projet permet de visualiser les codes RC5 des télécommandes infrarouge Philips sur un afficheur LDC 2 x 20 caractères.

Je vous invite à aller visiter une autre page qui traite des télécommandes IR.

Télécharger ReadRC5.zip
 
 

Début de page
 
 

Système d'exploitation multitâches

Auteur :Pavel Baranov

Ce logiciel, nommé Posit1, est un système d'exploitation multitâches simplifié pour microcontrôleur PIC. Il permet d'écrire un programme complexe d'une manière très structurée.

Il se compose d'un programme principal os.asm qui exécute les différents sous-programmes ou tâches (t0.asm, t1.asm ...) à tour de role.

Chaque fichier tâche est découpé en 3 parties:

- la partie initialisation

- la partie programme principal

- le partie interruption

Il suffit de compiler os.asm, les autres fichiers y sont inclus.

En exemple d'application de Posit1, je vous invite à regarder le logiciel du robot de Pavel.
 
 

Télécharger Posit1 sur le site de Pavel Baranov
 
 

Début de page
 
 

Sonde logique multifonction

Il s'agit de la note d'application AN689 (Engineer's Assistant Using a PIC16F84A) de Microchip.

C'est un projet remarquable qui utilise toutes les ressources du PIC16F84.

C'est une sonde logique multifonction qui se compose : 

  • d'une sonde de niveau logique 
  • d'un analyseur d'état logique à 1 canal 
  • d'un récepteur code série RS232 
  • d'un fréquencemètre compteur 
Le tout dans un instrument (une pointe de touche) mono circuit.

Toutes les fonctions sont supportées par le logiciel.

Affichage sur un module LCD (Hitachi) avec 2 lignes de 20 colonnes.

 

Télécharger la note d'application AN689 de Microchip.

Visiter la page d' Erik qui donne des informations interressantes pour la réalisation.

J'ai réussi à me procurer le logiciel en assembleur MPASM (non inclu dans la note), et le circuit imprimé double face aux formats .pcb (Protel), .bmp et .pdf.

Télécharger probe.zip
 
 

Début de page
 
 

Serrure à carte à puce

Auteur :Jean Louis JONDOT

Une application simple, pratique et surtout très pédagogique.

Ce dispositif permet de commander une serrure électrique par l'intermédiaire d'une ou de plusieurs cartes à puce de type PROM F256 ( carte téléphonique France Télécom usagée ou non ).

Seule la partie commande est étudiée, en effet la partie 'actionneur' peut être réalisée très simplement par l'intermédiaire d'un photo-triac ou d'un relais.

La commande de la serrure est composée d'un connecteur de carte à puce (pour la lecture d'une carte), d'une sélection d'un retard de 0 à 15 secondes (durée supplémentaire d'ouverture de la porte après le retrait d'une carte valide), d'un haut-parleur (générant une tonalité en cas de carte non reconnue ou invalide) et de deux voyants (signalant l'un l'ouverture de la porte et l'autre une alarme en cas de carte non reconnue ou invalide). Une alimentation de 3 à 5Volts est suffisante.

La sécurité du dispositif est assurée par l'utilisation de carte à puce possédant un numéro infalsifiable propre à chaque carte et indiqué en clair au dos de celle-ci.
 
 

Télécharger la documentation (Word97), les typons (Eagle 2.6), le programme : serrure.zip

Début de page
 
 

Circuit de reconnaisance vocale

Reconnaissance vocale avec VoiceDirect, kit d'expérimentation pour applications intégrées.

Le kit de reconnaissance vocale (VoiceDirect 364 Speech Recognition Kit) en provenance de chez Sensory (USA) permet d'intégrer facilement une fonction de reconnaissance vocale dans n'importe quelle application.

Caractéristiques:

  • reconnaissance vocale pour monolocuteur
  • nombre minimum de composants externes
  • reconnaît jusqu'à 15 à 60 mots ou phrases
  • justesse de la reconnaissance dépassant 99%
  • durée d'une phrase jusqu'à 3.2s
  • processus de saisie convivial
  • mise au point rapide
  • très bon rapport qualité/prix (345Frs)
Télécharger les datasheet de Voice Direct à partir du site de Sensory.

Début de page
 



Yves.Heilig@wanadoo.fr
Date de dernière mise à jour : 02/04/2000