Transcript

Académie de RennesThème 2009 Bac S.T.I. Génie électronique

Panneau Solaire Automatisé

Séquence 4B Durée: 10HAnalyse et simulation de la solution constructeur

Pré-requis:Analyse fonctionnelle de 1er degré de l'objet technique.Connaissances sur le microcontrôleur PIC 18F452 (séquence 4A) et le langage Flowcode.

Savoirs:A: Traitement des signaux logiques

A1: Amplification.C: Traitement des signaux logiques et/ou numériques

C3: Transformation de code.C7: Traitement programmé de l'information– organisation matérielle: architecture fonctionnelle d'un dispositif utilisant la logique programmée,– séquencement,– mémorisation,– échanges des informations entre les entités fonctionnelles.– organisation logicielle.

D: Conversion de grandeurs physiques en grandeurs électriquesD1: Captage.

E: Conversion de grandeurs électriques en grandeurs physiquesE1: Transduction électrique/acoustique.E2: Transduction électrique/optique.E3: Conversion de données.

Savoir-faire:D : Identifier à une fonction la ou les structures participant à sa réalisation.E : Analyser l’organisation structurelle d’une fonction.

E1 : Établir les relations entre grandeurs d’entrée et grandeurs de sortie.E2 : Justifier le dimensionnement d’un composant.E4 : Évaluer que la fonction requise est assurée.

F: Rechercher, pour les fonctions mixtes (matérielles et logicielles), l'adéquation entre les solutions technologiques structurelles et les segments de programme associés afin:

F1. d'identifier les variables se rapportant à cette fonction ;F2.de distinguer, en relation avec les variables, la (ou les) parties se rapportant à la fonction mixte étudiée ;F3. d'établir les liens de cause à effet entre un élément de la partie concernée du logiciel et les relations entre les grandeurs d'entrée et de sortie de la structure matérielle qui caractérise cette fonction mixte.

G: Proposer la réorganisation structurelle (et/ou logicielle) partielle ou totale d'une fonction.

Conditions matérielles:poste informatique équipé:

du dossier HTMLdu logiciel PROTEUS Version 6.9 ou supérieuredu logiciel FLOWCODE Version 3

Évaluation prévue: Évaluation écrite

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 1/15

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 2/15

TRAITEMENT

PROGRAMME

DES

INFORMATIONS

&

CONVERSION

ANALOGIQUE

NUMERIQUE

FS1-1

Élaboration numérique d'une horloge

temps réel

FS1-2

Informationdate & heure

Acquisitiondu réglage

du mode defonctionnement

FS1-3

Informationtouche actionnée

Réglage dumode de fonctionnementpar l'utilisateur

Position moteur élévation

Position moteur rotation

SCHEMA FONCTIONNEL DE DEGRE 2 DE FP1SCHEMA FONCTIONNEL DE DEGRE 2 DE FP1

Alerte démarrage véhicule

Courant panneau solaire ∩

Amplification de courant

&Transduction

électriqueoptique

FS1-4

Sélectionafficheur

Informationà afficher

Informationsvisuelles

Amplification de courant

&Transduction

électriqueacoustique

FS1-6

InformationsonoreCommande buzzer

Commande Autorisation_moteurs

Commande Sens_arrêt_élévation

Commande Sens_arrêt_rotation

[2]

[16]

[2]

[2]

[2]

[8]

FONCTION SECONDAIRE

DESCRIPTION ENTREE(S) SORTIE(S)

FS1-1

Traitement programmé

de l'information

&

conversionanalogiquenumérique

Cette fonction permet l'orientation optimale du panneau solaire par:- la prise en compte des réglages de l'utilisateur,- la date et de l'heure fournies par une horloge en temps réel, - la position du panneau,- le courant fourni par les cellules photovoltaïques après conversion A/N,- la commande des moteurs d'élévation et de rotation du panneau.Au démarrage du véhicule, elle prévient le conducteur par la commande d'un signal sonore.Elle gère l'affichage des informations pour l'utilisateur.Cette fonction réalise aussi la conversion A/N de la tension image du courant panneau.

- Information date & heure - Information touche actionnée

- Position moteur élévation - Position moteur rotation

- Alerte démarrage véhicule - Courant panneau solaire (∩)

- Sélection afficheur - Information à afficher - Commande buzzer - Sens_arrêt_élévation - Sens_arrêt_rotation - Autorisation_moteurs

FS1-2Élaborationnumérique

d'une horloge en temps réel

Cette fonction fournit les secondes, minutes, heures, jour, mois et année sous forme BCD via une liaison série I2C.En cas de défaut d'alimentation, une sauvegarde est prévue par une pile Lithium.

- Information date & heure

FS1-3Acquisition du réglage du mode de

fonctionnement

Cette fonction permet l'acquisition des réglages de l'utilisateur à partir d'un clavier matricé 16 touches.

- Réglage du mode de fonctionnement par l'utilisateur

- Information touche actionnée

FS1-4Amplification

de courant &

transduction électrique optique

Cette fonction permet l'affichage des informations sur deux afficheurs 7 segments sélectionnés l'un après l'autre (affichage multiplexé).

- Sélection afficheur

- Informations à afficher

- Informations visuelles

FS1-5Amplification

de courant &

transduction électrique acoustique

Cette fonction permet l'amplification en courant du signal de commande et l'émission d'un signal sonore à l'aide d'un buzzer.

- Commande buzzer - Information sonore

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 3/15

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 4/15

CARTE CONSTRUCTEUR DU BOITIER DE COMMANDE

Pile Lithium +3VCR2032

Horloge temps réel& quartz 32768Hz

PIC18F452& quartz 20MHz

Double afficheur HDSP-5523

Buzzer

R17 & R180,1 Ω

Commandepont en H

L298

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 5/15

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 6/15

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 7/15

SCHEMA DE CABLAGE CONSTRUCTEUR

I. Identification des structures de FP1 : 1. Identifiez, en les entourant sur le schéma structurel de la carte constructeur, les structures correspondant aux fonctions secondaires de FP1.

II. Etude de la fonction FS1-5 Amplification de courant & Transduction électrique acoustique :

La traduction électrique-acoustique est réalisée par un buzzer 6V HCM1206X et l'amplification de courant par un transistor BC847 en boitier SOT23 (CMS).

1. Relevez les principales caractéristiques électriques du buzzer HCM1206X.

2. Vérifiez l'état de saturation du transistor Q1.Simulation de la commande du buzzer sous Proteus avec le schéma Simulation carte constructeur_buzzerDans cette simulation, le buzzer est remplacé par une led.

programme principaldébut

faire jusqu'à l'infini:activer le buzzer;attendre 250 ms;éteindre le buzzer;attendre 250 ms;

refaire;fin.

3. Sous Flowcode V3 et à l'aide de l'algorithme précédent, vous complétez le programme simul_buzzer_eleve.fcf pour PIC18F452 (20MHz) qui produit une commande alternée du buzzer à basse fréquence. Vous créez le fichier objet (.hex) de votre solution par la commande Puce_Compilez vers C... suivie de Puce_Compilez vers ASM...

4. Sous Proteus, vous éditez les propriétés du PIC18F452 pour sélectionner votre programme objet (.hex) par Program File: . Vous lancez ensuite la simulation interactive pour vérifier votre solution.

III.Etude de la fonction FS1-4 Amplification de courant & Transduction électrique optique :

La traduction électrique-optique est réalisée par un double afficheur sept segments HDSP-5523 (U8).L'amplification de courant est réalisée par deux transistors BC817 en boitier SOT23 (CMS). Ils assurent l'alimentation des segments de l'afficheur correspondant soit Q3 pour l'afficheur situé à droite et Q4 pour l'afficheur situé à gauche (voir fiche HDSP-5523).L'affichage multiplexé est géré par logiciel; les deux afficheurs sont commandés l'un après l'autre à un rythme suffisant pour obtenir un confort visuel.

1. Relevez les principales caractéristiques électriques du double afficheur HDSP-5523.

On mesure un courant de pointe par segment de 30 mA pour une tension de sortie de 2,16V sur le port D du PIC 18F452 (U1).

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 8/15

2. A l'aide des fiches du HDSP-5523 et du PIC 18F452, justifiez la solution retenue par le constructeur (pas de résistances de limitation du courant entre les sorties du port D et les deux afficheurs sept segments).

3. Vérifiez la saturation du transistor Q3 dans le cas où tous les segments et le point décimal sont allumés sur l'afficheur correspondant. Vous prendrez une tension de sortie VOH égale à 4,9V pour la sortie RC7 du PIC 18F452.

Simulation de l'affichage multiplexé sous Proteus avec le schéma Simulation carte constructeur_affmuxVous allez simuler un affichage multiplexé à partir de l'algorithme suivant:

programme principaldébut

faire jusqu'à l'infini:commander l'afficheur de gauche;afficher « 1 »;attendre 200 ms;commander l'afficheur de droite;afficher « 0 »;attendre 200 ms;

refaire;fin.

4. A l'aide de l'algorithme précédent, vous complétez le programme simul_affmux_eleve.fcf. Ensuite, vous créez le fichier objet (.hex) de votre solution par la commande Puce_Compilez vers C... suivie de Puce_Compilez vers ASM...

5. Sous Proteus, vous éditez les propriétés du PIC18F452 pour sélectionner votre programme objet (.hex) par Program File: . Vous lancez ensuite la simulation interactive pour vérifier que votre programme met bien en évidence le principe de l'affichage multiplexé. Que constatez-vous sur les deux afficheurs ?

IV.Etude de la fonction FS1-3 Acquisition du réglage du mode de fonctionnement du panneau

L'acquisition du réglage du mode de fonctionnement du panneau est réalisée par un clavier matricé de 16 touches soit 4 lignes et 4 colonnes. Les touches sont équivalentes à des boutons-poussoirs placés aux intersections des lignes et des colonnes. Au moment d'un appui sur une touche du clavier, on établit un contact entre une ligne et une colonne. Sur la face avant du boitier de commande du constructeur, le clavier se compose d'un groupe de 12 touches (10 touches numériques et deux touches de couleur rouge et verte) et d'un autre groupe de 4 touches (flèches).Exemple d'utilisation du clavier du boitier de commande:

Pour la mise en marche du panneau, l'utilisateur place l'interrupteur du boitier de commande en position On. A l'aide du clavier, il saisit la valeur 01 (zone Europe centrale) pour ensuite la valider à l'aide de la touche Verte. Après la validation, le panneau se lève et l'écran affiche la zone de villégiature...

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 9/15

La lecture du clavier matricé est gérée par un programme via le port B du PIC 18F452. Le port B a la particularité de pouvoir être configuré en mode « Weak Pull-up » par la mise à 0 du bit RBPU dans le registre INTCON2 du PIC 18F452 comme sur l'extrait suivant de la Figure 9-4 :

Cette configuration du port B permet d'avoir en interne une résistance de tirage à VDD pour les lignes de port configurées en entrée. Pour cette raison, le constructeur n'a pas prévu de résistances de tirage pour « alimenter » le clavier matricé.

La lecture du clavier matricé se déroule en deux temps:

1- On configure les colonnes du clavier en sorties (RB4 à RB7) et les lignes du clavier en entrées (RB0 à RB3). Les sorties du port B (RB4 à RB7) sont positionnées au niveau bas et on effectue une première lecture du port B; on obtient alors le code LIGNES.

2- On configure les lignes du clavier en sorties (RB0 à RB3) et les colonnes du clavier en entrées (RB4 à RB7). Les sorties du port B (RB0 à RB3) sont positionnées au niveau bas et on effectue une deuxième lecture du port B; on obtient alors le code COLONNES.

Pour obtenir le code la touche sur 8 bits, il suffit de fusionner le code LIGNES et le code COLONNES par un OU logique.

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 10/15

« résistance de tirage » interne pour une entrée

si le bit RBPU = 0

1. A l'aide des schémas équivalents précédents, déterminez le code LIGNES et le code COLONNES pour un appui sur une des 16 touches. Donnez ensuite le code TOUCHE par concaténation des deux résultats précédents.

Touche actionnée

Code COLONNES Code LIGNES Code TOUCHE CodehexaRB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

aucune 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 FF123

DROITE456

HAUT789

BASVERTE

0ROUGE

GAUCHE Simulation du fonctionnement du clavier matricé sous Proteus à partir d'un programme écrit sous Flowcode.

Vous allez simuler votre programme à l'aide d'un schéma issu de la carte constructeur.Sous Proteus : ouvrir le fichier Simulation carte constructeur_clavier.dsnSous Flowcode V3: ouvrir le fichier simul_clavier_eleve.fcfDans ce programme, on réalise un affichage simple en utilisant le port C pour l'afficheur de droite et le port D pour l'afficheur de gauche. Le code hexadécimal doit être affiché après un appui sur une touche.

procédure CLAVIERdébut

faire jusqu'à 20 fois:mettre les colonnes en sortie au niveau bas;mettre les lignes en entrée;lire le code ligne;mettre les lignes en sortie au niveau bas;mettre les colonnes en entrée;lire le code colonne;

refaire;concaténer le code ligne et le code colonne pour obtenir le code touche;

fin de la procédure;

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 11/15

2. A l'aide de l'étude précédente, vous complétez la macro CLAVIER dans le programme simul_clavier_eleve.fcf en utilisant les variables CODE_LIGNES et CODE_COLONNES pour obtenir le code de la touche dans la variable CODE_TOUCHE. Vous créez le fichier objet (.hex) de votre solution par la commande Puce_Compilez vers C... suivie de Puce_Compilez vers ASM...

3. Sous Proteus, vous éditez les propriétés du PIC18F452 pour sélectionner votre programme objet (.hex) par Program File: . Vous lancez ensuite la simulation interactive pour vérifier qu'un appui sur une touche du clavier produit bien l'affichage du code hexadécimal déterminé dans le tableau précédent.

Maintenant, vous allez simuler un programme d'acquisition du code de la touche par interruption (reportez-vous à la séquence n°4A).

Les broches RB4 à RB7 du port B peuvent déclenchées une interruption par changement d'état. Lors d'un appui sur une touche quelconque, on produit obligatoirement un changement d'état sur une des ces 4 lignes du port B. Si cette interruption est autorisée, il faut prévoir une macro (CLAVIER) qui sera exécutée au moment d'un appui sur une touche. A noter que pendant l'exécution de cette macro, une autre interruption ne peut pas être prise en compte sauf dans le cas d'une hiérarchisation des priorités; mais, par défaut, toutes les interruptions sont au même niveau de priorité (haute).

Sous Proteus : ouvrir le fichier Simulation carte constructeur_clavier.dsn

Sous Flowcode V3: ouvrir le fichier simul_clavier_IT_eleve.fcf

4. Vous complétez d'abord la macro CLAVIER dans le programme simul_clavier_IT_eleve.fcf avec votre solution validée précédemment (question IV-2), et ensuite vous définissez le type d'interruption ainsi que la macro d'interruption dans le programme principal à l'aide des explications précédentes. Vous créez le fichier objet (.hex) de votre solution par la commande Puce_Compilez vers C... suivie de Puce_Compilez vers ASM...

5. Sous Proteus, vous éditez les propriétés du PIC18F452 pour sélectionner votre programme objet (.hex) par Program File: . Vous lancez ensuite la simulation interactive pour vérifier qu'un appui sur une touche du clavier produit bien l'affichage du code hexadécimal déterminé dans le tableau précédent.

6. Quel est l'intérêt pour le programmateur d'utiliser l'acquisition du code de la touche actionnée par interruption ?

V. Etude de la conversion analogique numérique de la tension image du

courant panneau (fonction FS1-1)L'acquisition de la valeur numérique du courant délivré par le panneau solaire est réalisée par le convertisseur analogique-numérique du PIC18F452 (Voir Séquence 4 A). La tension image de ce courant est obtenue par les deux résistances R17 et R18 (0,1Ώ) montées en parallèle. Elle est amplifiée par U15:A et filtrée avant d'être appliquée sur l'entrée AN0 du PIC18F452 (Voir schéma constructeur pages 5 et 6). Le convertisseur A/N utilise la tension d'alimentation (VDD) du PIC18F452 comme tension de référence. On suppose que le programmateur du PIC18F452 de la carte constructeur a choisi le mode « justification à gauche » pour obtenir un résultat sur 8 bits dans le registre ADRESH.

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 12/15

1. A partir de la fiche du PIC18F452, du schéma constructeur et des explications précédentes, déterminez la (les) combinaison(s) possible(s) des bits PCFG<3:0> (A/D Port Configuration Control bit) du registre ADCON1.

2. A partir de la fiche du PIC18F452 et des explications précédentes, déterminez la valeur du bit ADFM (A/D Format Select bit) du registre ADCON1 pour obtenir un résultat de conversion sur 8 bits.

3. A partir de la fiche du PIC18F452 et des explications précédentes, déterminez la combinaison des bits CHS<2:0> (Analog Channel Select bit) du registre ADCON0 pour sélectionner l'entrée analogique utile pour la mesure du courant.

Maintenant sous Proteus, vous allez simuler un programme d'acquisition de la valeur numérique du courant panneau à l'aide d'un schéma adapté pour cette simulation.

Sous Proteus : ouvrir le fichier Simulation carte constructeur_conversion.dsn

Une source de tension (I_PAN) reproduit une variation du courant du panneau et la valeur décimale est affichée sur trois digits après conversion analogique-numérique.

Sous Flowcode V3: ouvrir le fichier simul_conversion_eleve.fcf

La macro CAN_INIT écrite en langage C permet l'initialisation du convertisseur par l'écriture dans les registres ADCON0 et ADCON1:

● configuration des lignes de port concernées (PCFG3:PCFG0)● sélection de la voie analogique pour la conversion (CHS2:CHS0)● choix de la justification (ADFM)● choix de l'horloge de conversion (ADCS2:ADCS0)● validation du convertisseur (ADON)

le bit GO/DONE ne doit pas être manipulé pendant l'initialisation en même temps que le bit ADON !

4. Dans la macro CAN_INIT, modifiez les valeurs hexadécimales chargées dans les registres ADCON0 et ADCON1 pour initialiser le convertisseur comme souhaité (voir questions précédentes).

La macro CONV_COURANT permet de lancer une conversion et de lire le résultat dans le registre ADRESH pour le sauvegarder dans la variable COURANT:

//Conversion AN de la valeur du courant{char cnt;

cnt=0;while (cnt<220) cnt++; // on charge la capa pdt TCmin =16,5µs

adcon0=(adcon0 | 0x04); // ?

while (adcon0 & 0x04); // ?

FCV_COURANT=adresh; // ?}

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 13/15

5. Expliquez les trois dernières instructions de cette macro.

Vous créez le fichier objet (.hex) de votre solution par la commande Puce_Compilez vers C... suivie de Puce_Compilez vers ASM...

Sous Proteus, vous éditez les propriétés du PIC18F452 pour sélectionner votre programme objet (.hex) par Program File:

6. Vous lancez ensuite la simulation interactive pour vérifier que l'évolution de la tension appliquée sur AN0 produit bien l'affichage de la valeur décimale obtenue par conversion analogique numérique. Quelle est la valeur maximale affichée ? Comment justifiez-vous cette valeur ?

VI.Etude de l'acquisition de la position du panneau solaire (fonction FS1-1)

L'acquisition de la position du panneau solaire est réalisée à partir des deux codeurs incrémentaux couplés aux moteurs élévation et rotation (Voir le schéma de câblage constructeur). Ces codeurs délivrent des impulsions pendant la rotation des moteurs qui fonctionnent l'un après l'autre.

Intervenant en premier, le moteur élévation permet l'inclinaison optimale du panneau par rapport à la date et l'heure fournies par l'horloge temps réel (FS1-2) et à la situation géographique du véhicule (choix de la zone décidée par l'utilisateur à partir du clavier). Ensuite, le moteur de rotation permet la recherche de l'orientation optimale du panneau par-rapport à l'ensoleillement en liaison avec la mesure du courant délivré par les cellules photovoltaïques. C'est le Timer0 du PIC18F452 qui intervient dans l'acquisition de la position du panneau en rotation pendant cette phase de recherche. Comme les impulsions délivrées par le codeur incrémental du moteur de rotation sont appliquées sur l'entrée RA4/TOCKI du PIC18F452, le Timer0 doit fonctionner en mode compteur (Counter mode). Dès le démarrage du moteur de rotation, le compteur interne s'incrémente définissant ainsi la position du panneau en rotation.

Dans cette étude, on utilise le Timer0 en mode 8 bits, sans pré division et front descendant actif sur l'entrée RA4/TOCKI.

1. A partir de la fiche du PIC18F452 et de la séquence 4A, déterminez la valeur des bits du registre T0CON pour configurer et activer le Timer0.

Vous allez simuler un programme d'acquisition de la position du panneau en rotation à l'aide d'un schéma adapté pour cette simulation.

Sous Proteus : ouvrir le fichier Simulation carte constructeur_position.dsn

Un générateur numérique (CAP2) reproduit sur l'entrée RA4/TOCKI le signal d'horloge délivré par le codeur incrémental du moteur de rotation du panneau. Le compteur du Timer0 s'incrémente directement sur les fronts descendants de ce signal et la valeur décimale obtenue est affichée sur trois digits.

Sous Flowcode V3: ouvrir le fichier simul_position_eleve.fcf

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 14/15

La macro TIMER0_INIT écrite en langage C permet l'initialisation du Timer0 par l'écriture dans les registres T0CON et TMR0L:

● validation du timer0: bit TMR0ON● choix du mode 8 bits: bit T08BIT● sélection du signal d'horloge externe (Counter mode): bit T0CS● sélection d'un front descendant sur l'entrée TOCKI: bit T0SE ● pas de pré division de fréquence: bit PSA● chargement du registre TMR0L avec une valeur initiale nulle.

2. Dans la macro TIMER0_INIT, écrivez les valeurs hexadécimales à charger dans les registres T0CON et TMR0L pour initialiser le Timer0 comme souhaité.

La macro LECTURE_TIMER0 permet de lire le résultat du comptage dans le registre TMR0L pour le sauvegarder dans la variable COMPTEUR suivant l'algorithme suivant:

Procédure LECTURE_TIMER0

début mettre la valeur du compteur dans la variable COMPTEUR ;

fin de la procédure;

3. Traduisez cet algorithme en langage C pour compléter la macro LECTURE_TIMER0.

Vous créez le fichier objet (.hex) de votre solution par la commande Puce_Compilez vers C... suivie de Puce_Compilez vers ASM...

Sous Proteus, vous éditez les propriétés du PIC18F452 pour sélectionner votre programme objet (.hex) par Program File:

4. Vous lancez ensuite la simulation interactive pour vérifier que l'application du signal d'horloge sur

l'entrée TOCKI produit bien l'affichage de la valeur décimale obtenue par le compteur du Timer0. Quelle est la valeur maximale affichée ? Comment justifiez-vous cette valeur ?

5. Reprenez la macro TIMER0_INIT pour valider le pré diviseur avec un rapport de 1:16. Éditez les propriétés du PIC18F452 pour sélectionner votre nouveau programme objet. Que constatez-vous maintenant pendant la simulation ? Comment l'expliquez-vous ?

Panneau Solaire Automatisé – ELECTRONIQUE – Séquence 4B Page 15/15


Recommended