Retour

PICOReseau 485 El ComboX.Fenard

PICOReseau 485 El Combo

La prolifération, en tout genre, nuit. C’est pour l’éviter que fut crée le circuit Combo.

Le module réseau PIC485 décrit dans l’IPC12 était adaptable avec les sources du programme, mais il ne disposait que des fonctions E/S tout ou rien. Pour l’el Combo, c’est le contraire, il contient un ensemble de fonctions intégrées, prêt à l’emploi.

L’esclave

La programmation en assembleur, et sa mise au point peut devenir rapidement long et laborieux. Même en basic sur un circuit distant, la recherche d’un bug peut devenir difficile. Pour simplifier, et arriver rapidement au résultat, le système s’articule autour du PC et du QBasic (Microsoft). Ultérieurement, le programme pourra être transporté vers un système " embarqué ". Les circuits El Combo sont des esclaves du programme Basic.

Les fonctionnalites

Compatibilité oblige, les circuits dialoguent en utilisant le protocole FXRS485AS (9600 bits/s) sur un bus RS485. Les fonctions disponibles peuvent être classées en plusieurs groupes. Les fonctions entrées tout ou rien, les fonctions horloges, les fonctions afficheur LCD, les fonctions télécommande, les fonctions détection boutons. Nous ne reviendront pas sur la fonction entrées tout ou rien, déjà décrite dans IPC12, et qui s’utilise en écrivant dans les mémoires du PIC aux adresses des ports A et B. Dorénavant il y aura des restrictions en fonctions des autres fonctions.

Utilisation des ports.

Le circuit El combo ou FX485ASComboHorloge est constitué d’un PIC type 16F84A/04Mhz programmé. Il doit fonctionner avec un quartz de 3,6864Mhz. Le tableau 1 donne l’affectation des ports. Le port A est utilisé comme un bus de 4 bits, il sert pour l’afficheur LCD et le retour des bouton poussoirs. Cette fonction enregistrant la fermeture peut servir dans un système d’alarme. Si la fonctions LCD et la fonction bouton ne sont pas utilisé, alors le PORTA peut être utilise en entrés sorties tout ou rien.

Il en est de même pour le PORTB, à l’exception de PB0 et PB1 réservé au réseau RS485.

Les ports PB2 et PB6 servent pour l’afficheur LCD. Si l’option récepteur horaire est sélectionnée, le port PB4 reçoit le signal DCF inversé. Le signal est normalement à 1, les impulsions de 100 ou 200ms doivent être au niveau zéro. La fourchette acceptée va de 70 a 140ms pour le zéro et de 140ms a 210ms pour le un. Hors de ces valeurs, le circuit considère qu’il s’agit d’une erreur. La sortie Télécommande s’effectue sur le port PB5. Le signal émis, suivant la configuration, sera compatible avec le signal des circuit MM53200 (ou UM3750), ou bien UM3758 ou bien Star chip. Enfin la ligne port PB3 sert au timer.

Rappelons que l’état des ports se défini dans l’EEPROM, sauf pour PB0 et PB1 qui est de toute façon géré par le programme RS485.

Affectation des ports tableau 1

PA0

Afficheur LCD D4 /retour Boutons Poussoir

PA1

Afficheur LCD D5 /retour Boutons Poussoir

PA2

Afficheur LCD D6 /retour Boutons Poussoir

PA3

Afficheur LCD D7 /retour Boutons Poussoir

PA4/RTCC

Non utilisable

   

PB0

RS485 sur TX/RX du transceiver RS485

PB1

RS485 sur TXE/RXE du transceiver RS485

PB2

Afficheur LCD RS

PB3

Libre /sortie TimerX

PB4

Libre/entrée DCF (inversée)

PB5

Libre/sortie émetteur HF

PB6

Afficheur LCD E

PB7

Libre/ Retour Boutons Poussoir

 

La réalisation.

La figure 1 présente le schéma électrique. Il reprend le tableau. On reconnaît rapidement les parties classiques, interface RS485, PIC 16F84. Rien au demeurant n’est très nouveau. Un petit haut parleur piezo sert de beeper, il utilise la ligne de commande HF. Le transistor T1 est prévu pour inverser la polarité d’un signal. Soit pour celui d’un récepteur horaire, soit pour amplifier le signal du beeper pour attaquer un petit haut parleur relié a une alimentation positive. Au niveau du circuit imprimé, le cuivre a exactement la taille du boîtier.

Aucune fixation n’est a prévoir. Il suffit de faire les trous pour passer les boutons sur une face, et la découpe pour passer la prise DB9. La face avant est faite a partir d’une feuille translucide autocollante. Le dessin est imprimé a l’envers, de cette manière la face est collée à l’intérieure du boîtier. Des pastilles cuivrées sont réservées pour la personnalisation. Sur le coté une bande permet de mettre son module HF, par défaut les lignes de masse le destine au module mitpot. Si l’on utilise pas l’afficheur, on peut aussi utiliser le cuivre décrit dans l’IPC numéro 12.

Les Fonctions horloges

Entrons maintenant dans la description des fonctions. L’accès a celles ci se font par des commandes réseaux. Pour ne pas être trop long, et fastidieux, signalons qu’un programme écrit en Qbasic est disponible et permet de comprendre le dialogue. Rien en vaut l’exemple. Au niveau des commandes, celle ci sont soit directes, soit on passe par des commandes de lecture/écriture en mémoire. C’est souvent le cas et cela permet de tester facilement la fonction en utilisant le programme moniteur RS485. Le tableau 2 donne la carte mémoire de la RAM. Pour l’heure, la notation des chiffres est en BCD, le nombre 24 s’écrit 24 en hexadécimal. Pour lire l’heure, il suffit de lire le contenu des adresses Seconde, Minute et Heure.

Pour la mise a l’heure, il suffit d’écrire. Rappelons que les circuits ont une adresse station " générale ", en écrivant à cette adresse on peut remettre à jours toutes les horloges d’un coup.

Comme les dizaines, dans une horloge, ne dépassent pas 5, il reste sur chaque chiffre BCD un bit de libre qui est utilisé pour des options. Avec les minutes et les heures on arrête ou bien on compte ou décompte le temps. Le dernier bit permet de passer en mode chronomètre autonome, dans cette configuration on peut utilise les boutons pour un départ a zéro, un arrêt.

La configuration à la mise sous tension est indiqué dans l’EEPROM voir le tableau 3.

 

Tableau 2 : carte mémoire RAM

Adresse RAM

Nom

Description

     

0x14

ConfA

Configuration de l’application

     

0x17

Seconde

Code en BCD B7=1 Chrono Autonome

0x18

Minute

Code en BCD,B7=1 Arrêt

0x19

Heure

Code en BCD, B7=0 Compte, B7=1 Décompte

     

0x1A

HFBtL

Temps 0/1 pas 277uS max 15/15

0x1B

HFCmd

Commande Télécommande HF

     

0x22

Bout1

Détection entrée 1

0x23

Bout2

Détection entrée 2

0x24

Bout3

Détection entrée 3

0x25

Bout4

Détection entrée 4

     

0x32

Date

Code en BCD date 1...31

0x33

Jour

Code en BCD jour lundi...samedi (B3..B0 uniquement)

0x34

Mois

Code en BCD mois 1..12

0x35

Année

Code en BCD année 0..99

     

Tableau 3 : carte mémoire EEPROM

Adresse EEPROM

Nom

Description

     

0x00

StationAdresse

Adresse de la station

0x01

StationType

Type de module (non modifiable)

0x02

NumeroSerieL

Numéro de série/lot (bas) (non modifiable)

0x03

NumeroSerieH

Numéro de série/lot (haut) (non modifiable)

0x04

VersionLogicielL

Version logiciel (bas) (non modifiable)

0x05

VersionLogicielH

Version logiciel (haut) (non modifiable)

0x06

Courant

Courant en mA que peut fournir le module au réseau

0x07

Configuration

Configuration de l’application

0x08…0x09

Réservé

 

0x0A

EportA

Valeur du portA par défaut

0x0B

EportB

Valeur du portB par défaut

0x0C

Réservé

 

0x0D

EDDRA

Valeur du DDRA par défaut

0x0E

EDDRB

Valeur du DDRB par défaut

0x0F

Réservé

 
     

0x10

SecondeDp

Code en BCD, Départ B7=1 Chrono Autonome

0x11

MinuteDp

Code en BCD,B7=1 Arrêt

0x12

HeureDp

Code en BCD, B7=0 Compte, B7=1 Décompte

     

0x13

EEHFBtL

Temps 0/1 pas 277uS max 15/15 (def :0x21)

0x14,0x15

Rtel01

Télécommande Start ON

0x16,0x17

Rtel02

Télécommande Start OFF

0x18,0x19

RtelMM53

Télécommande MM53200/UM3750

0x1A,0x1B

RtelMM53

Télécommande MM53200/UM3750

0x1C,0x1D, 0x1E

RtelMM58

Télécommande UM3758

     

0x1F

Libre

 
     

0x20..0x2F

Message1

Premier message de présentation (16 max)

0x30..0x38F

Message2

Second message de présentation (8 max)

0x39..0x3F

Message3

Troisième message de présentation (8 max)

Fonction TIMER

En mode décompte de temps, en arrivant a zéro, le port TIMER est inversé. Ce dispositif permet l’arrêt ou la mise en marche après un temps défini. On peut, par exemple programmer le PC pour sa remise en marche apes un temps défini, avant de s’éteindre.

Horloge DCF

Dans cette configuration, le circuit est capable de décoder l’heure DCF77. Des lors que le chrono télégramme est correcte, l’ heure et date sont affichées.

L’afficheur LCD

Plusieurs types d’afficheurs peuvent être utilisés, par défaut, il utilise un afficheur d’une ligne de 16 caractères. Il affiche HH :MM.SS, puis la date :JJ/MM/Js. Le Js indique le jour de la semaine, Lu pour lundi. A chaque réception correcte du chrono télégramme la seconde lettre (le u ici) passe de minuscule a majuscule et inversement. L’affichage peut être inhiber, par exemple pour envoyer un message par le réseau. Pour envoyer du texte il faut utiliser des commandes réseaux. L’afficheur gère les codes retour a la ligne, saut de ligne, le code SYN effectue une RAZ du circuit. Pour pouvoir utiliser les fonctions spécifiques de l’afficheur, il est possible d’écrire une donnée ou une commande. Enfin, on peut envoyer deux caractères par paquets réseau. Le module passe les commandes, la seconde directement sans attendre, attention certaines commandes nécessites l’attente, dans ce cas il vaut faut passer deux paquets a un octet.

La fonction Telecommande

A courte distance, sur une pièce, la télécommande HF (ou IR) permet d’éviter de tirer des fils, c’est une solution souple. On trouve dans le commerce des télécommandes utilisant des prises gigognes secteur ( Start). Avec cette solution on ne peut pas avoir de retour pour savoir si l’action a été enregistrée. Dans ces conditions, il est préférable de renouveler l’opération. Par configuration on peut émettre des codes pour MM53200 (UM3750), MM3758 et Start.

D’origine le modèle Start a un code ON et un code OFF. Avec les autres circuit, il suffit d’adjoindre une bascule qui modifie le code de réception pour obtenir le même résultat.

Les codes sont mis dans l’EEPROM, puis il suffit d’écrire à HFCmd pour émettre la commande pour le module d’indice N dans l’EEPROM. Hormis pour l’UM3758, les codes sont sur deux octets, trois pour l’UM3758 parce que le code est sur 18 bits.

Là encore, en supposant que l’indice N correspond à ON (ou OFF) pour un éclairage dans chaque pièce, un message général allumera (ou éteindra) toutes les lampes…

Le beeper

Avec un petit HP piezo on peut utiliser le signal de la télécommande pour faire un beep, utilisable pour attirer l’attention lors d’un message par exemple.

Les boutons

Le principe est simple, un appuie sur un bouton est enregistré. Cette information est lisible par le réseau, le réseau réarme le bouton. Ce dispositif est utilisable pour un système d’alarme a boucle normalement ouvert, chaque circuit peut contrôler 4 boucles. En raison de la vitesse de scrutation, sur une ligne longue un petit interface peut être nécessaire.

Message de présentation

A la mise sous tension l’afficheur présente toujours deux messages Message1 et Message2. Ces messages sont dans l’EEPROM, ils sont personnalisable. Le dernier caractère du message doit avoir le bit 7 a 1. Le message 1 peut avoir jusqu'à 16 caractères, le second huit, enfin le troisième n’est émis que si l’option affichage de la date est activée.

Configuration Application

L’octet EEConfA permet de configurer le module, sa valeur est mise en RAM dans ConfA à la mise sous tension (Tableau 4).

Tableau 4 : configuration

Bit

Nom

Action

0

CLcd

=1 Afficheur LCD type LM40

1

CLcd2

=1 LCD 2 lignes

2

CHorI

=1 Inhibe l’affichage de l’heure et date

3

CDate

=1 réception heure

4

CBou

=1 scrutation des boutons poussoir

5

TimerX

=1 Inversion sur passage 0 du chronomètre

6

AdFFI

=1 Adresse station 0xFFH (note1)

7

ChkSum

=0 contrôle Somme paquet, pas bon : pas traité

Résumé des codes de commande

Le tableau 5 résume le code des commandes. Les commandes MASK et LCD sont nouvelles, elles permettent de modifier la configuration sans détruire le contenu de la mémoire pour mask.

Tableau 5 : Codes de commandes

R FFF FF DD

Nom

Descriptif

0 000 00 00

AdressReponse

Mémorise l’adresse de réponse (Mm)

------------------

---------------

-----------Fonctions RAM/EPROM--------------

0 000 10 00 0x08

Lecture RAM

Réponse: station MmAdresse

1 000 00 00 0x80

Lecture RAM

Réponse: station adresse dans Data2

0 000 01 00 0x04

Ecriture RAM

P4 :Adresse,P3:Data , Pas de réponse

1 000 01 00 0x84

Ecriture RAM

P4 :Adresse,P3:Data , Réponse a MmAdresse

1 000 10 00 0x88

Lecture EEPROM

Réponse: station adresse dans Data2

0 000 11 00 0x0C

Ecriture EEPROM

P4 :Adresse,P3:Data , Pas de réponse

1 000 11 00 0x8C

Ecriture EEPROM

P4 :Adresse,P3:Data , Réponse a MmAdresse

------------------

---------------

---------- Fonctions bit mask sur la RAM

X 001 00 xx

OperMaskAnd

Fait un mask AND Datas :adresse et mask

X 001 01 xx

OperMaskOr

Fait un mask OR Datas :adresse et mask

------------------

---------------

---------- Fonctions LCD

X 001 10 xx

EcritureData

Ecriture dans le registre de Data de l’afficheur

X 001 11 xx

EcritureCmd

Ecriture dans le registre de Commande

 

Charge du processeur.

Nous n’entrerons pas dans le détails de la programmation, il ne faut pas oublier que le PIC16F84 ne possède pas d’uart, la gestion du dialogue est fait uniquement par logiciel.

La gestion du réseau est prioritaire. La conception a été prévu pour qu’il ne rate pas une trame.

Il en est de même pour l’heure, la précision reste celle du quartz. L’émission de la trame de télécommande est longue (1/2 seconde), il faut attendre la fin avant d’en émettre une autre, par contre les autres commandes sont utilisable pendant la transmission.

Mise en route.

Avant la mise ne place du composant, on vérifie l’alimentation. Des la mise sous tension, les messages de présentations doivent apparaître, puis l’horloge et la date. On peut ensuite faire un ping, l’adresse par défaut est 1, on peut aussi passer par l’adresse 255, si le circuit est seul.

Le ping consiste a envoyer un paquet, pour qu’il réponde. Si tout est correcte, avec le menu du programme Basic on pourra essayer les commandes. En appliquant un signal DCF77, avec une bonne réception le circuit donne l’heure et la date après environ deux minutes.

Conclusion

Voilà un circuit qui permet de réalise un ensemble domotique, sans programmation autre que sur le PC en Basic, il évite la prolifération des programmes.

 

Page Web X.Fenard
(c) Xavier Fenard 2003

Retour