36
EN41, Rapport de Projet Tracker Solaire Samuel Goutenoir GESC 01 Denis Touillon GESC 02 Responsable de l’UV Damien Paire TP Eric Chrétien Printemps 2011

Sui Ve Urs Olaire

Embed Size (px)

Citation preview

Page 1: Sui Ve Urs Olaire

EN41, Rapport de Projet

Tracker Solaire

Samuel Goutenoir GESC 01

Denis Touillon GESC 02

Responsable de l’UV Damien Paire

TP Eric Chrétien

Printemps 2011

Page 2: Sui Ve Urs Olaire

Préface

L’UV EN41 nous a permis de développer notre premier projet d’électronique nécessitant unpanel de compétences diverses. Nous avons bénéficié chaque jeudi pour une durée de 3 heures,d’une salle de travail équipée des logiciels et du matériel nécessaire afin de mener à l’aboutisse-ment de notre projet.

Nous nous sommes porté sur le sujet tracker solaire. Nous pensons que c’est un sujet toutà fait d’actualité dans le domaine de l’industrie puisque aujourd’hui beaucoup de panneaux so-laires sont dotés d’un tracker solaire.

Ce rapport a pour objectif de retracer l’évolution de la réalisation de notre projet, de ladéfinition du cahier des charges à la phase de tests nous permettant de valider ou non l’avancéedu projet.

Vous pouvez retrouver ce rapport au format Pdf sur le site : http ://samuel.goutenoir.com/

Accès direct

Page 3: Sui Ve Urs Olaire

TABLE DES MATIÈRES

Table des matières

1 Introduction 5

1.1 Définition du sujet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2 Qu’est-ce qu’un Tracker Solaire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3 Est-ce rentable ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4 Calendrier prévisionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Conception 8

2.1 Principe de fonctionnement du système . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2 Schéma bloc du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 Les modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3.1 Les panneaux solaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3.2 Les photorésistances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3.3 Le moteur pas à pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.4 Le driver du moteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3.5 La carte mère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4 Réalisation de la carte sous Altium . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.4.1 Le schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.4.2 Le Typon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.5 Maquette 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Réalisation Matériel 21

3.1 Construction de la maquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 Montage de la carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.3 Phase de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3

Page 4: Sui Ve Urs Olaire

TABLE DES MATIÈRES

3.3.1 Test du moteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.3.2 Test des photorésistances . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.3.3 Test des panneaux solaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4 Réalisation Logiciel 24

4.1 Fonctions du Moteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.2 getTravel() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.3 Main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5 Conclusion 28

5.1 Améliorations possibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.2 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

A Programme 29

A.1 TrackerSolaire.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

A.2 Config.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

A.3 Stepper.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

A.4 Stepper.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4

Page 5: Sui Ve Urs Olaire

1 Introduction

”Le soleil ne se lève que pour celui qui va à sa rencontre.” Henri le Saux

1.1 Définition du sujet

Objectif : Réaliser un tracker solaire commandé par un moteur pas à pas afin d’assurer uneproduction électrique optimale.

Le travail consiste à proposer et à réaliser une commande de moteur pas à pas (PaP) pourpermettre une rotaton d’environ 140, un mini panneau solaire donne une information tensionsur la production électrique.

L’affichage des grandeurs électrique et de position se fera sur l’afficheur LCD.

1.2 Qu’est-ce qu’un Tracker Solaire ?

Un tracker solaire 1 ou suiveur de Soleil est une installation de production d’énergie solaireutilisant le principe de l’héliostat. C’est une structure portante qui permet d’orienter des pan-neaux solaires tout au long de la journée afin d’en augmenter la productivité.

Son principe de fonctionnement est de suivre le Soleil tout au long de la journée, ce qui apour effet d’augmenter la production d’énergie de manière substantielle.

En effet, la position du soleil varie constamment, à la fois pendant la journée, mais aussipendant les différentes périodes de l’année.

Le tracker permet ainsi de placer au mieux le panneau par rapport au positionnement duSoleil (orthogonal au rayonnement si possible).

Suivre le soleil peut se faire sur deux axes : en azimut (d’est en ouest, à mesure de l’avancéede la journée) et en hauteur (selon la saison et, de nouveau, l’avancée de la journée). L’idéal estd’utiliser un tracker à deux axes, mais il en existe aussi avec un seul (typiquement avec un suiviseulement en azimut, l’angle par rapport au sol étant fixé selon l’optimum local, qui dépend dela latitude.

Dans notre cas, le suivi de soleil se fera sur un seul axe, en azimut.

1. Source : http ://fr.wikipedia.org/wiki/Tracker_solaire

5

Page 6: Sui Ve Urs Olaire

1.3. EST-CE RENTABLE?

1.3 Est-ce rentable ?

La question ne se pose évidement pas pour notre tracker solaire, tant le moteur est surdimen-sionné (et assez peu efficace vu la température qu’il peut atteindre). Néanmoins si nous aurionsvoulu faire un tracker plus économe :

Il aurait tout d’abord fallu tenir compte de divers paramètres extérieurs au tracker solaireen lui- même qui sont :

– L’ensoleillement qui dépend de notre position géographique (de 1200kWh.m-2 au nord dela France on passe à 1900kWh.m-2).

– L’influence des effets d’ombres et d’horizon de l’environnement : arbre, immeuble, valléeencaissée peuvent diminuer la quantité de lumière reçue par le panneau.

– L’usure du panneau (on évalue la perte d’efficacité d’environ 10% par rapport à la valeurd’origine tout les 10 ans).

Sur le tracker solaire nous pourrions améliorer et tenir compte :

– De l’efficacité du moteur (pourquoi pas un autre type)– De la sensibilité du tracker : (pour que le bénéfice changement de position sur puissance

reçue soit le maximum)– Du rendement réel du panneau (celui-ci se dégradant avec l’augmentation de la tempéra-

ture, il faudrait peut être envisager un radiateur, mais celui-ci augmenterai aussi le poidsdu panneau et donc la puissance à fournir au moteur. . .)

– Pourquoi pas gérer le mode sleep du pic si on veut pousser la recherche de l’économie aumaximum.

Si c’est une rentabilité orienté gain d’argent, il faut tenir compte du fait que EDF achèteplus cher l’électricité provenant des panneaux solaires monté en bâti (ce qui sensible un non-sensen raison de la dégradation du rendement avec l’augmentation de la température).

6

Page 7: Sui Ve Urs Olaire

1.4. CALENDRIER PRÉVISIONNEL

1.4 Calendrier prévisionnel

1re séance : Définition du cahier des charges du projet et réflexion sur le fonctionnementglobale. Recherche de documentation sur les différents composants. Etude succincte du PIC(tension délivrée en sortie et accepté par les entrées)

2me séance : Essai avec des transistors (pour la commande du moteur pas à pas), essai surle moteur pas à pas, choix et calibrage du conditionneur pour les photorésistances et test sur lecapteur solaire (tension et courant délivré, sensibilité)

3me séance : Formation à Altium (sur un exemple)

4me séance : Construction du typon et recherche sur les différents composants appropriés.

5me séance : Finalisation du typon et fabrication de la maquette

6me séance : Création du programme de commande du moteur

8me séance : Poursuite de la création du programme de commande du moteur et test decelui-ci

9me séance : Création des programmes d’acquisition de la tension et d’affichage sur le LCDet tests

10me séance : Création du programme principal et test de fonctionnement de l’ensemble dutrackeur solaire

11me séance : Derniers tests et réglages (sensibilité, vitesse)

12me séance : Séance supplémentaire si des problèmes imprévus sont rencontrés

7

Page 8: Sui Ve Urs Olaire

2 Conception

2.1 Principe de fonctionnement du système

Nous avions le choix entre deux principes de suivi de soleil :

– Utiliser la tension des panneaux solaires pour déterminer la meilleure orientation face ausoleil

– Utiliser deux photorésistances 1 (abréviation : LDR) écartées l’une de l’autre et déterminerl’orientation du soleil en calculant la différence d’éclairage.

Après quelques tests, nous avons choisis la solution avec les LDRs car c’est elle qui nouspermettait d’avoir la meilleur précision concernant l’orientation du soleil.

Le dessin suivant représente la maquette :

Figure 2.1 – Dessin - Maquette

1. Photorésistance : Composant électronique dont la résistivité varie en fonction de la quantité de lumièreincidente (Source : http ://fr.wikipedia.org/wiki/Photorésistance)

8

Page 9: Sui Ve Urs Olaire

2.1. PRINCIPE DE FONCTIONNEMENT DU SYSTÈME

On voit sur le dessin que la LDR EST reçoit plus de lumière que la LDR OUEST donc lemoteur PaP va tourner en direction de l’EST pour égaliser tout ça.

L’organigrame suivant résume le principe de fonctionnement :

Figure 2.2 – Organigramme - Principe de fonctionnement

Il faut savoir aussi que le Tracker solaire sera limité en rotation comme indiqué dans le cahierdes charges, il ne pourra se déplacer que de 140 d’EST en OUEST. Cet angle est facilementchangeable bien évidemment.

9

Page 10: Sui Ve Urs Olaire

2.2. SCHÉMA BLOC DU SYSTÈME

2.2 Schéma bloc du système

Le schéma bloc suivant représente l’ensemble de notre projet et comment les différents mo-dules vont être liés.

Figure 2.3 – Schéma bloc - Système

2.3 Les modules

2.3.1 Les panneaux solaires

Figure 2.4 – Photo - Panneaux solaires

Les panneaux solaires choisis pour notre projet, sont des panneaux solaires de jardin.Nous avons donc deux panneaux solaires en série, délivrant chacun de 0V à 2,5V soit 5V

maximum au total.

10

Page 11: Sui Ve Urs Olaire

2.3. LES MODULES

2.3.2 Les photorésistances

Figure 2.5 – Photo - Photorésistance

Pour récupérer une valeur utilisable par le PIC, nous devons lui envoyer une tension ana-logique. Pour ce faire, la LDR étant une résistance, il nous suffit de faire un pont diviseur detension avec la LDR et une résistance de 10KΩ. On obtient alors une tension entre 0 et 5V pourchaque LDR en fonction de leur éclairement.

Remarque : Après un rapide test, on s’est rendu compte que l’impédence de sortie du pontdiviseur n’était pas adaptée à l’entrée analogique du PIC, donc pour remédier à ce prôblème,nous avons rajouter un amplificateur (LM358) en montage suiveur en sortie du pont.

Ce qui nous donne le schéma suivant :

Figure 2.6 – Schéma - Câblage du LM358 avec les LDRs

11

Page 12: Sui Ve Urs Olaire

2.3. LES MODULES

2.3.3 Le moteur pas à pas

Figure 2.7 – Photo - Moteur pas à pas

Définition

Un moteur pas à pas 2 permet de transformer une impulsion électrique en un mouvementangulaire. Ce type de moteur est très courant dans tous les dispositifs où l’on souhaite fairedu contrôle de vitesse ou de position en boucle ouverte, typiquement dans les systèmes depositionnement. L’usage le plus connu du grand public est dans les imprimantes reliées à unordinateur (positionnement de la tête d’impression et rotation du rouleau porte-papier dansles imprimantes matricielles, à marguerite et à jet d’encre, et rotation du rouleau porte-papierseulement dans les imprimantes à xérographie à laser).

Commande

Dans notre projet nous utilisons un moteur à aimant permanent unipolaire à 5 fils (4 bobines+ 1 commun) dont la commande ce fait en alimentant les bobines du moteur dans un ordre précis.

Figure 2.8 – Dessin - Moteur pas à pas

2. Source : http ://fr.wikipedia.org/wiki/Moteur_pas_à_pas

12

Page 13: Sui Ve Urs Olaire

2.3. LES MODULES

Impulsion Bobine A Bobine B Bobine C Bobine D

T1 + - + -

T2 - + + -

T3 - + - +

T4 + - - +

Figure 2.9 – Tableau - Alimentation des bobines

L’alimentation des bobines sera géré par un driver de moteur, mais la commande est faiteslogistiquement.

2.3.4 Le driver du moteur

Plusieurs choix s’offrent à nous pour alimenter le moteur pas à pas sous sa tension et intensiténominale.

Les transistors BD203

Facile à mettre en oeuvre, notre premier choix s’est porté sur des transistors BD203 pouvantsupporter des courants jusqu’a 3A. Mais après quelques tests, on s’est rendu compte que lestransistors n’apportaient pas assez de protection pour le moteur.

Le L293D

Le L293D est un C.I. intégrant 4 transistors, des diodes et une bonne gestion pour commanderun moteur pas à pas. Il peut supporter des courants de sortie jusqu’à 300mA, ce qui est justepour notre moteur pas à pas qui consomme 160mA/Phase.

Le SN7544A

Le SN7544A est la version amélioré du L293D, il possède les mêmes fonctions mais peutsupporter des courants de sortie jusqu’à 1A.

13

Page 14: Sui Ve Urs Olaire

2.3. LES MODULES !"#$%%&'

()*+,)-./01*.2310+,45/, 6

SLRS007B − NOVEMBER 1986 − REVISED NOVEMBER 1995

6

Copyright ! 1995, Texas Instruments Incorporated

1POST OFFICE BOX 655303 • DALLAS, TEXAS 75265

POST OFFICE BOX 1443 • HOUSTON, TEXAS 77251−1443

• 1-A Output-Current Capability Per Driver• Applications Include Half-H and Full-H

Solenoid Drivers and Motor Drivers• Designed for Positive-Supply Applications• Wide Supply-Voltage Range of 4.5 V to 36 V• TTL- and CMOS-Compatible

High-Impedance Diode-Clamped Inputs• Separate Input-Logic Supply• Thermal Shutdown• Internal ESD Protection• Input Hysteresis Improves Noise Immunity• 3-State Outputs• Minimized Power Dissipation• Sink/Source Interlock Circuitry Prevents

Simultaneous Conduction• No Output Glitch During Power Up or

Power Down• Improved Functional Replacement for the

SGS L293

descriptionThe SN754410 is a quadruple high-current half-Hdriver designed to provide bidirectional drivecurrents up to 1 A at voltages from 4.5 V to 36 V.The device is designed to drive inductive loadssuch as relays, solenoids, dc and bipolar steppingmotors, as well as other high-current/high-voltageloads in positive-supply applications.All inputs are compatible with TTL-and low-level CMOS logic. Each output (Y) is a complete totem-pole driverwith a Darlington transistor sink and a pseudo-Darlington source. Drivers are enabled in pairs with drivers 1 and2 enabled by 1,2EN and drivers 3 and 4 enabled by 3,4EN. When an enable input is high, the associated driversare enabled and their outputs become active and in phase with their inputs. When the enable input is low, thosedrivers are disabled and their outputs are off and in a high-impedance state. With the proper data inputs, eachpair of drivers form a full-H (or bridge) reversible drive suitable for solenoid or motor applications.A separate supply voltage (VCC1) is provided for the logic input circuits to minimize device power dissipation.Supply voltage VCC2 is used for the output circuits.The SN754410 is designed for operation from −40°C to 85°C.

1234 5678

161514131211109

1,2EN1A1Y

2Y2A

VCC2

VCC14A4Y HEAT SINK AND GROUND3Y3A3,4EN

HEAT SINK ANDGROUND

AHLX

ENHHL

YHLZ

INPUTS† OUTPUT

FUNCTION TABLE(each driver)

H = high-level, L = low-levelX = irrelevantZ = high-impedance (off)† In the thermal shutdown

mode, the output is in a high-impedance state regardlessof the input levels.

NE PACKAGE(TOP VIEW)

-,7+)8947" +*9* :;<=>?@A:=; :B CD>>E;A @B =< FDGH:C@A:=; I@AEJ->=IDCAB C=;<=>? A= BFEC:<:C@A:=;B FE> AKE AE>?B =< 9EL@B 4;BA>D?E;ABBA@;I@>I M@>>@;ANJ ->=IDCA:=; F>=CEBB:;O I=EB ;=A ;ECEBB@>:HN :;CHDIEAEBA:;O =< @HH F@>@?EAE>BJ

Figure 2.10 – Schéma - SN7544A

Notre choix s’est porté sur le SN7544A qui permet un meilleur contrôle du moteur et estplus facilement interchangeable si un problème survient.

L’utilisation du SN7544 nous donne un schéma de câblage comme ceci :

Figure 2.11 – Schéma - Cablâge du SN7544A

14

Page 15: Sui Ve Urs Olaire

2.3. LES MODULES

2.3.5 La carte mère

Introduction

Cette carte a été réalisée pour les projets de réalisation technique de l’UV EN41. Elle estconstruite autour du microcontrôleur PIC18F4580. Ce dernier est interfacé à de nombreux pé-riphériques et composants afin d’assurer de nombreuses fonctionnalités.

– Liaison RS232– Afficheur LCD (Displaytech / 2 lignes)– Horloge temps réel (PCF8563)– Contrôleur bus CAN (MCP2551)– Boutons poussoirs (RA4, RA5, RB4 et RB5)– Potentiomètre (RA0)– Diodes électroluminescentes (RA1, RA2, RA3, RB6, RB7)– Buzzer (RC0)

Cette carte a été réalisée pour les projets de réalisation technique de l’UV EN41. Elle est construite autour du microcontrôleur PIC18F4580. Ce dernier est interfacé à de nombreux périphériques et composants afin d’assurer de nombreuses fonctionnalités. • Liaison RS232 • Afficheur LCD (Displaytech / 2 lignes) • Horloge temps réel (PCF8563) • Contrôleur bus CAN (MCP2551) • Boutons poussoirs (RA4, RA5, RB4 et RB5) • Potentiomètre (RA0) • Diodes électroluminescentes (RA1, RA2, RA3, RB6, RB7) • Buzzer (RC0)

Figure 2.12 – Photo - Carte mère

15

Page 16: Sui Ve Urs Olaire

2.3. LES MODULES

Les Entrées/Sorties

Nous avons utilisé les entrées analogiques A0, A1 et A2 pour récupérer les tensions des LDRset des panneaux solaires.

Enfin nous avons choisis les sorties B2, B3, B4 et B5 pour la commande du moteur.

Gestion du LCD

Le LCD étant intégré à la carte mère nous n’avions rien à mettre en oeuvre.Remarque : Le LCD utilisant les ports D du PIC, nous ne pouvions les utiliser pour

commander le moteur du coup nous avons utilisé les ports B pour le commander.

16

Page 17: Sui Ve Urs Olaire

2.4. RÉALISATION DE LA CARTE SOUS ALTIUM

2.4 Réalisation de la carte sous Altium

2.4.1 Le schéma

Figure 2.13 – Schéma - Carte fille

17

Page 18: Sui Ve Urs Olaire

2.4. RÉALISATION DE LA CARTE SOUS ALTIUM

2.4.2 Le Typon

Figure 2.14 – Typon - Carte fille

Le Typon a été crée en respectant quelques règles :– Largeur des pistes : 40 mil– Taille des pastilles : 80 mil pour les résistances et 120 mil pour les borniers– Bottom layer seulement, straps autorisés– Ajout d’un condensateur CMS aux bornes de l’alimentation

18

Page 19: Sui Ve Urs Olaire

2.5. MAQUETTE 3D

2.5 Maquette 3D

La maquette 3D a été modélisée avec Google SketchUp 8 3.Une modélisation 3D pour une utilisation en temps réel était envisageable sur une durée de

projet un peu plus longue.

Figure 2.15 – Dessin - Maquette 3D avec textes

3. Site web : http ://sketchup.google.com/intl/fr/

19

Page 20: Sui Ve Urs Olaire

2.5. MAQUETTE 3D

Figure 2.16 – Dessin - Maquette 3D avec cotations

20

Page 21: Sui Ve Urs Olaire

3 Réalisation Matériel

3.1 Construction de la maquette

La construction de la maquette s’est déroulée sur deux séances. Les deux principaux maté-riaux utilisés sont le bois et les chutes de plaque d’époxy.

Nous avons utilisé de la glue pour coller les plaques d’époxy entre elles, et des vis pour toutesles autres fixations.

Notre maquette est entièrement démontable et facilement transportable. Le seul léger pro-blème règne dans la fixation du tronc à l’axe du moteur qui est facilement résolvable en épais-sissant l’axe du moteur avec du scotch.

Figure 3.1 – Photo - Notre maquette

21

Page 22: Sui Ve Urs Olaire

3.2. MONTAGE DE LA CARTE

3.2 Montage de la carte

Après avoir percé des trous de 0.8mm pour les C.I. et les résistances, et des trous de 1mmpour les borniers, on se rend compte que les pastilles sont justes niveau grosseur. Heureusementle soudage s’est déroulé correctement, pas de bavures et pas de décollage de pistes.

On peut apercevoir sur les straps jaunes un peu de cuivre, ceci est dû au fait que lors dusoudage la température du fer à fait fondre les parties plastiques les plus proches.

Les supports de la carte sont juste de simple écrous avec des boulons pour surélever la cartepar rapport au plateau en bois.

Figure 3.2 – Photo - Notre carte

22

Page 23: Sui Ve Urs Olaire

3.3. PHASE DE TEST

3.3 Phase de test

La carte ayant plusieurs modules séparés (le moteur, les panneaux solaires et les LDRs) nousavons pu les tester séparément pour voir si tout fonctionnait après avoir branché les alimentationsaux borniers.

3.3.1 Test du moteur

Faire fonctionner le moteur fût notre plus gros problème. En effet, nous avions pris commesorties du PIC, les pins RB2 à RB5 pour contrôler le moteur, or apparemment le pin RB5 posaitproblème vis à vis du PIC. Il était déjà utilisé par le PIC par une autre fonction. Du coup lemoteur, n’ayant que trois signaux de commande sur quatre, ne tournait pas. Après quelquesrecherches du côté de la datasheet du PIC, nous avons fini par trouver comment désactiver lafonction nuisible.

3.3.2 Test des photorésistances

Un rapide test à l’oscilloscope nous a permit de voir que les LDRs fonctionnaient correcte-ment. Lorsque nous passions notre main au dessus d’une LDR, sa tension de sortie réduisait.

3.3.3 Test des panneaux solaires

Les panneaux solaires étant de moyenne qualité, c’était difficile d’obtenir 5V à part en pleinsoleil à midi. En moyenne nous récupérions 2,5-3V.

23

Page 24: Sui Ve Urs Olaire

4 Réalisation Logiciel

4.1 Fonctions du Moteur

Vous pourrez trouver en annexe la librairie utilisée pour commander le moteur pas à pas.C’est une librairie basique, avec une fonction init() pour initialiser le moteur, une fonction set-Vitesse() pour régler la vitesse du moteur pas à pas et une fonction avanceStepper() qui permetde faire tourner le moteur dans les deux sens.

La librairie commande le moteur en lui envoyant une séquence précise (voir 2.3.3) sur cesbobines.

En voici un extrait :

1 void pasMoteur ( int un_pas )

3 switch ( un_pas ) case 0 : // 1010

5 moteur_pin_1 = 1 ;moteur_pin_2 = 0 ;

7 moteur_pin_3 = 1 ;moteur_pin_4 = 0 ;

9 break ;case 1 : // 0110

11 moteur_pin_1 = 0 ;moteur_pin_2 = 1 ;

13 moteur_pin_3 = 1 ;moteur_pin_4 = 0 ;

15 break ;case 2 : // 0101

17 moteur_pin_1 = 0 ;moteur_pin_2 = 1 ;

19 moteur_pin_3 = 0 ;moteur_pin_4 = 1 ;

21 break ;case 3 : // 1001

23 moteur_pin_1 = 1 ;moteur_pin_2 = 0 ;

25 moteur_pin_3 = 0 ;moteur_pin_4 = 1 ;

27 break ;

29

24

Page 25: Sui Ve Urs Olaire

4.2. GETTRAVEL()

4.2 getTravel()

Cette fonction compare l’erreur moyenne (calculée dans le main) avec la deadband (variabledéfinissant la sensibilité) et renvoie une commande (0, 1 ou -1). Le calcul du nombre de pas sertà limiter le Tracker dans sa rotation, ici il est limité entre 0 et 40 pas soit 0 et 144.

2 /∗ FONCTION GETTRAVEL( ) ∗/// Fonction qui r envo i e l a commande du moteur en f onc t i on des LDRs

4 float getTravel ( )

6// Rotation Hora i re

8 if ( erreurMOY < ( deadband ∗ −1) )

10 if ( nbdepas > 0)

12 nbdepas−−;return −1.0;

14

16 else

18 // Rotation Anti−Hora i reif ( erreurMOY > deadband )

20 if ( nbdepas < 40)

22 nbdepas++;

24 return 1 . 0 ;

26 else

28 //On ne bouge pas dans l a deadband

30 return 0 . 0 ;

32

25

Page 26: Sui Ve Urs Olaire

4.3. MAIN()

4.3 Main()

1 /∗ FONCTION MAIN( ) ∗/void main ( void )

3

5 // De f i n i t i o n des E/S du moteurTRISBbits . TRISB5 = 0 ; /∗ So r t i e B5 ∗/

7 TRISBbits . TRISB4 = 0 ; /∗ So r t i e B4 ∗/TRISBbits . TRISB3 = 0 ; /∗ So r t i e B3 ∗/

9 TRISBbits . TRISB2 = 0 ; /∗ So r t i e B2 ∗/

11 // De f i n i t i o n des E/S des LDRTRISAbits . TRISA1 = 1 ; /∗ ent r é e A1 ∗/

13 TRISAbits . TRISA0 = 1 ; /∗ ent r é e A0 ∗/

15 // De f i n i t i o n des E/S des panneaux s o l a i r eTRISAbits . TRISA2 = 1 ; /∗ ent r é e A2 ∗/

17/∗ Reg i s t r e ADCON ∗/

19 ADCON1bits . PCFG3 = 0 ;ADCON1bits . PCFG2 = 0 ;

21 ADCON1bits . PCFG1 = 0 ;ADCON1bits . PCFG0 = 0 ;

23// On i n i t i a l i s e l e moteur pas à pas

25 initStepper ( ) ;

27 // On r e g l e sa v i t e s s e a 100 t r s /minsetVitesseStepper (100) ;

29// On i n i t i a l i s e l e c onv e r t i s s e u r ADC

31 OpenADC ( ADC_FOSC_64 & ADC_RIGHT_JUST& ADC_20_TAD , ADC_CH0 & ADC_INT_OFF&ADC_REF_VDD_VSS , 0 ) ;

Delay10TCYx (5 ) ;33

// On i n i t i a l i s e l e LCD35 XLCDInit ( ) ; // i n i t i a l i s a t i o n du module LCD

XLCDL1home ( ) ; // Posit ionnement à l a premiere l i g n e37 XLCDDisplayOnCursorOff ( ) ; // On n ’ a f f i c h e pas l e cur seur

39 while (1 )

41 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

43 /∗ Conversion ADC ∗//∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

45// On recupere l a va l eur de l a LDR de d r o i t e

47 SetChanADC ( ADC_CH0 ) ; // s e l e c t i o n RA0Delay10TCYx (5 ) ;

49 ConvertADC ( ) ; // Demarre l a conver s i onwhile ( BusyADC ( ) ) ; // Attente ADC conver s i on

51 valeurDroite = ReadADC ( ) ; // On l i t l e r e s u l t a t et l e metdans va l eu rDro i t e

53 // On recupere l a va l eur de l a LDR de gaucheSetChanADC ( ADC_CH1 ) ; // s e l e c t i o n RA1

55 Delay10TCYx (5 ) ;ConvertADC ( ) ; // Demarre l a conver s i on

26

Page 27: Sui Ve Urs Olaire

4.3. MAIN()

57 while ( BusyADC ( ) ) ; // Attente ADC conver s i onvaleurGauche = ReadADC ( ) ; // On l i t l e r e s u l t a t et l e met dans

valeurGauche59

// On recupere l a va l eur de l a t en s i on des panneaux s o l a i r e s61 SetChanADC ( ADC_CH2 ) ; // s e l e c t i o n RA2

Delay10TCYx (5 ) ;63 ConvertADC ( ) ; // Demarre l a conver s i on

while ( BusyADC ( ) ) ; // Attente ADC conver s i on65 tension = ReadADC ( ) ; // On l i t l e r e s u l t a t et l e met dans t en s i on

67 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗//∗ Commande Moteur ∗/

69 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

71 // Calcu l de l ’ e r r eu rerreur = valeurGauche − valeurDroite ;

73// Calcu l de l ’ e r r eu r moyenne

75 erreurMOY = ( erreurMOY + erreur ) / 2 ;

77 // On recupere l a commande du moteur (0 , 1 ou −1)travel = getTravel ( ) ;

79// On f a i t tourner l e moteur en f onc t i on

81 avanceStepper ( travel ) ;

83 // Calcu l de l ’ ang le a c tu e l du moteurangle = nbdepas ∗ 3 . 6 ;

85// Calcu l de l a t en s i on mapper des panneaux

87 tensionmapper = tension ∗5 . 0 /1024 . 0 ;

89 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗//∗ Af f i chage LCD ∗/

91 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

93 // On a f f i c h e l a t en s i onXLCDL1home ( ) ;

95 sprintf ( buf , "Tension " ) ;XLCDPutRamString ( buf ) ;

97 ftoa ( tensionmapper , buf , 2 , ’f’ ) ;XLCDPutRamString ( buf ) ;

99 sprintf ( buf , " V" ) ;XLCDPutRamString ( buf ) ;

101 XLCDL2home ( ) ;// On a f f i c h e l ’ ang le

103 sprintf ( buf , "Angle " ) ;XLCDPutRamString ( buf ) ;

105 ftoa ( angle , buf , 2 , ’f’ ) ;XLCDPutRamString ( buf ) ;

107 sprintf ( buf , " deg" ) ;XLCDPutRamString ( buf ) ;

109

111

27

Page 28: Sui Ve Urs Olaire

5 Conclusion

5.1 Améliorations possibles

Pour améliorer l’efficacité du système, il existe plusieurs solutions, toutes envisageables surun projet à plus long terme :

– Remplacer le moteur pas à pas par un servo-moteur :

* Plus besoin de +12V mais +5V pour alimenter le servo* Plus facile à mettre en oeuvre* Couple de maintient plus important* Pas besoin de l’alimenter constamment => gain d’énergie

– Ajouter un servo-moteur pour l’orientation en hauteur :

* Gain d’énergie

– Faire un système auto-alimenté par les panneaux :

* Aucune source d’énergie externe

– Rajouter une carte SD pour l’enregistrement des données

5.2 Bilan

Etant donné qu’il y a très peu de notation individuelle, l’objectif de cette UV réside dans unautre concept, le cahier des charges à respecter et de la création de A à Z d’un projet.

Chaque étapes de l’élaboration du projet nous ont appris beaucoup quant à la conception età la fabrication de cartes électroniques. Cela fût également une découverte des Microcontrôleurspour nous. Ce projet constitue donc pour nous une première expérience très enrichissante quenous saurons très probablement mettre à oeuvre dans le futur. L’aspect gestion de projet nousa également permis de mieux percevoir les difficultés inhérentes au management du temps dansles projets techniques.

En conclusion notre projet marche très bien, notre Tracker solaire suit sans souci une lumièreavec un peu de latence mais rien de gênant. En réalité le soleil se déplace tellement lentementque nous pourrions même faire une mise à jour du déplacement que tous les quarts d’heure.

28

Page 29: Sui Ve Urs Olaire

A Programme

A.1 TrackerSolaire.c

/∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/2 /∗ Tracke rSo l a i r e ∗/

/∗ ∗/4 /∗ Auteur : Goutenoir Samuel & Toui l l on Denis ∗/

/∗ Printemps 2011 ∗/6 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

8 // I n i t i a l i s a t i o n de l a f on c t i on getTrave l ( )float getTravel ( ) ;

10

12 /∗ INCLUDES ∗/

14 #include <usar t . h>#include <s td i o . h>

16 #include <p18f4580 . h>#include <con f i g . h>

18 #include <stepper . h>#include <de lays . h>

20 #include <adc . h>#include "xlcd.h"

22

24 /∗ DEFINE ∗/

26 #define XLCDDisplayOnCursorOff ( ) XLCDCommand(0x0C)

28/∗ VARIABLES ∗/

30float valeurGauche = 0 ; // Valeur LDR gauche

32 float valeurDroite = 0 ; // Valeur LDR dro i t efloat erreur =0; // La dev i a t i on ent re l e s deux LDRs

34 float erreurMOY = 0 ; // La moyenne de l a dev i a t i onfloat deadband = 20 ; // S e n s i b i l i t e : 10 = −10 to +10

36 float travel ; // Nombre de tour ‡ voyager (0 , 1 , −1)float nbdepas = 20 ; // Nombre de pas du moteur a c tu e l (20 pour l e mettre au

cent r e38 float angle = 0 ; // Angle du moteur ( nbdepas ∗3 . 6 )

float tension = 0 ; // Tension des panneaux en s o r t i e du c onv e r t i s s e u r (0 ‡1023)

40 float tensionmapper = 0 ; // Tension des panneaux s o l a i r e mapper (0 ‡ 5)

42 unsigned char buf [ 3 ] ; // Buf f e r pour l e LCD

29

Page 30: Sui Ve Urs Olaire

A.1. TRACKERSOLAIRE.C

44/∗ FONCTION GETTRAVEL( ) ∗/

46 // Fonction qui r envo i e l a commande du moteur en f onc t i on des LDRsfloat getTravel ( )

48

50 // Rotation Hora i reif ( erreurMOY < ( deadband ∗ −1) )

52 if ( nbdepas > 0)

54 nbdepas−−;

56 return −1.0;

58 else

60 // Rotation Anti−Hora i re

62 if ( erreurMOY > deadband )

64 if ( nbdepas < 40)

66 nbdepas++;return 1 . 0 ;

68

70 else

72 //On ne bouge pas dans l a deadbandreturn 0 . 0 ;

74

76

78 /∗ FONCTION MAIN( ) ∗/void main ( void )

80

82 // De f i n i t i o n des E/S du moteurTRISBbits . TRISB5 = 0 ; /∗ So r t i e B5 ∗/

84 TRISBbits . TRISB4 = 0 ; /∗ So r t i e B4 ∗/TRISBbits . TRISB3 = 0 ; /∗ So r t i e B3 ∗/

86 TRISBbits . TRISB2 = 0 ; /∗ So r t i e B2 ∗/

88 // De f i n i t i o n des E/S des LDRTRISAbits . TRISA1 = 1 ; /∗ entrÈe A1 ∗/

90 TRISAbits . TRISA0 = 1 ; /∗ entrÈe A0 ∗/

92 // De f i n i t i o n des E/S des panneaux s o l a i r eTRISAbits . TRISA2 = 1 ; /∗ entrÈe A2 ∗/

94/∗ Reg i s t r e ADCON ∗/

96 ADCON1bits . PCFG3 = 0 ;ADCON1bits . PCFG2 = 0 ;

98 ADCON1bits . PCFG1 = 0 ;ADCON1bits . PCFG0 = 0 ;

100// On i n i t i a l i s e l e moteur pas ‡ pas

102 initStepper ( ) ;

30

Page 31: Sui Ve Urs Olaire

A.1. TRACKERSOLAIRE.C

104 // On r e g l e sa v i t e s s e a 100 t r s /minsetVitesseStepper (100) ;

106// On i n i t i a l i s e l e c onv e r t i s s e u r ADC

108 OpenADC ( ADC_FOSC_64 & ADC_RIGHT_JUST& ADC_20_TAD , ADC_CH0 & ADC_INT_OFF&ADC_REF_VDD_VSS , 0 ) ;

Delay10TCYx (5 ) ;110

// On i n i t i a l i s e l e LCD112 XLCDInit ( ) ; // i n i t i a l i s a t i o n du module LCD

XLCDL1home ( ) ; // Posit ionnement ‡ l a premiere l i g n e114 XLCDDisplayOnCursorOff ( ) ; // On n ’ a f f i c h e pas l e cur seur

116 while (1 )

118 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

120 /∗ Conversion ADC ∗//∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

122// On recupere l a va l eur de l a LDR de d r o i t e

124 SetChanADC ( ADC_CH0 ) ; // s e l e c t i o n RA0Delay10TCYx (5 ) ;

126 ConvertADC ( ) ; // Demarre l a conver s i onwhile ( BusyADC ( ) ) ; // Attente ADC conver s i on

128 valeurDroite = ReadADC ( ) ; // On l i t l e r e s u l t a t et l e metdans va l eu rDro i t e

130 // On recupere l a va l eur de l a LDR de gaucheSetChanADC ( ADC_CH1 ) ; // s e l e c t i o n RA1

132 Delay10TCYx (5 ) ;ConvertADC ( ) ; // Demarre l a conver s i on

134 while ( BusyADC ( ) ) ; // Attente ADC conver s i onvaleurGauche = ReadADC ( ) ; // On l i t l e r e s u l t a t et l e met dans

valeurGauche136

// On recupere l a va l eur de l a t en s i on des panneaux s o l a i r e s138 SetChanADC ( ADC_CH2 ) ; // s e l e c t i o n RA2

Delay10TCYx (5 ) ;140 ConvertADC ( ) ; // Demarre l a conver s i on

while ( BusyADC ( ) ) ; // Attente ADC conver s i on142 tension = ReadADC ( ) ; // On l i t l e r e s u l t a t et l e met dans t en s i on

144 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗//∗ Commande Moteur ∗/

146 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

148 // Calcu l de l ’ e r r eu rerreur = valeurGauche − valeurDroite ;

150// Calcu l de l ’ e r r eu r moyenne

152 erreurMOY = ( erreurMOY + erreur ) / 2 ;

154 // On recupere l a commande du moteur (0 , 1 ou −1)travel = getTravel ( ) ;

156// On f a i t tourner l e moteur en f onc t i on

158 avanceStepper ( travel ) ;

160 // Calcu l de l ’ ang le a c tu e l du moteur

31

Page 32: Sui Ve Urs Olaire

A.2. CONFIG.H

angle = nbdepas ∗ 3 . 6 ;162

// Calcu l de l a t en s i on mapper des panneaux164 tensionmapper = tension ∗5 . 0 /1024 . 0 ;

166 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗//∗ Af f i chage LCD ∗/

168 /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/

170 // On a f f i c h e l a t en s i onXLCDL1home ( ) ;

172 sprintf ( buf , "Tension " ) ;XLCDPutRamString ( buf ) ;

174 ftoa ( tensionmapper , buf , 2 , ’f’ ) ;XLCDPutRamString ( buf ) ;

176 sprintf ( buf , " V" ) ;XLCDPutRamString ( buf ) ;

178 XLCDL2home ( ) ;// On a f f i c h e l ’ ang le

180 sprintf ( buf , "Angle " ) ;XLCDPutRamString ( buf ) ;

182 ftoa ( angle , buf , 2 , ’f’ ) ;XLCDPutRamString ( buf ) ;

184 sprintf ( buf , " deg" ) ;XLCDPutRamString ( buf ) ;

186

188

TrackerSolaire.c

A.2 Config.h

1 /∗ F i ch i e r de c on f i g ∗/

3 #ifndef CONFIG_H#define CONFIG_H

5#include <p18F4580 . h>

7/∗ De f i n i t i o n des p ins du moteur ∗/

9#define moteur_pin_1 LATBbits .LATB5 /∗ Ecr i tu r e sur PortB Bit B5 ∗/

11 #define moteur_pin_2 LATBbits .LATB4 /∗ Ecr i tu r e sur PortB Bit B4 ∗/#define moteur_pin_3 LATBbits .LATB3 /∗ Ecr i tu r e sur PortB Bit B3 ∗/

13 #define moteur_pin_4 LATBbits .LATB2 /∗ Ecr i tu r e sur PortB Bit B2 ∗/

15 /∗ De f i n i t i o n du nombre de pas du moteur ( pour un tour ) ∗/

17 #define NBDEPAS 100

19 #endif CONFIG_H

Config.h

32

Page 33: Sui Ve Urs Olaire

A.3. STEPPER.H

A.3 Stepper.h

1 /∗s t epper . c − − L i b r a i r i e pour moteur pas a pas

3Pour moteur PaP un i p o l a i r e ou b i p o l a i r e u t i l i s a n t 2 ou 4 f i l s de c on t r o l e s .

5La sequence de con t r o l e pour 4 f i l s e s t comme su i t :

7Pas C0 C1 C2 C3

9 1 1 0 1 02 0 1 1 0

11 3 0 1 0 14 1 0 0 1

13

15 ∗/

17 #ifndef STEPPER_H#define STEPPER_H

19

21 /∗ Fonct ions ∗/

23 // Creat ion des moteursvoid initStepper ( void ) ;

25// De f i n i e l a v i t e s s e

27 void setVitesseStepper ( long vitesse ) ;

29 // Fonction exte rne qui f a i t avancer l e moteur d ’un nombre de pasvoid avanceStepper ( float nb_de_pas ) ;

31// Fonction i n t e rn e

33 void pasMoteur ( int un_pas ) ;

35 #endif STEPPER_H

Stepper.h

A.4 Stepper.c

/∗2 s tepper . c L i b r a i r i e pour moteur pas a pas

4 Pour moteur PaP un i p o l a i r e ou b i p o l a i r e u t i l i s a n t 2 ou 4 f i l s de c on t r o l e s .

6 La sequence de c on t r o l e pour 4 f i l s e s t comme su i t :

8 Pas C0 C1 C2 C31 1 0 1 0

10 2 0 1 1 03 0 1 0 1

12 4 1 0 0 1

14∗/

33

Page 34: Sui Ve Urs Olaire

A.4. STEPPER.C

16#include <stepper . h>

18 #include <con f i g . h>#include <de lays . h>

20/∗ Var iab l e s Globa les pour l e Stepper ∗/

22int step_direction ; // D i r e c t i on de l a r o t a t i on

24 int step_vitesse ; // v i t e s s e en t r s /minint step_numero ; // Quel pas l e moteur e s t ac tue l l ement (1 , 2 , 3 ou 4)

26 int step_nb_de_pas ;int step_direction ;

28unsigned long step_delay ; // temps ent re chaque pas , en ms , en f c t de l a

v i t e s s e30

// numero des p ins du moteurs :32 int step_moteur_pin_1 ;

int step_moteur_pin_2 ;34 int step_moteur_pin_3 ;

int step_moteur_pin_4 ;36

long step_last_step_time ;38

void initStepper ( void )40

step_numero = 0 ;42 step_vitesse = 0 ;

step_direction = 0 ;44 step_last_step_time = 0 ;

step_nb_de_pas = NBDEPAS ;46

48 /∗De f i n i l a v i t e s s e du moteur en t r /min

50 ∗/void setVitesseStepper ( long vitesse )

52 step_delay = 60L ∗ 1000L / step_nb_de_pas / vitesse ;

54

56 /∗Bouge l e moteur du nombre de pas "nb_de_pas"

58 ∗/void avanceStepper ( float nb_de_pas )

60 int pas_restant ;

62 // Cb de pas i l r e s t eif ( nb_de_pas > 0) pas_restant = nb_de_pas ;

64 if ( nb_de_pas < 0) pas_restant = −nb_de_pas ;

66// Determine l a d i r e c t i o n en se basant sur l e + ou − de "nb_de_pas"

68 if ( nb_de_pas > 0) step_direction = 1;if ( nb_de_pas < 0) step_direction = 0;

70

72 // Decremente l e nombre de pas , on avance d ’un pas a chaque f o i s :while ( pas_restant > 0)

74 // On attend un moment

34

Page 35: Sui Ve Urs Olaire

A.4. STEPPER.C

Delay10KTCYx ( step_delay /4) ; // 10000∗TCY∗ step_delay (TCY = 0.4 us )76

// Incremente ou decremente l e numero du pas78 // en f onc t i on de l a d i r e c t i o n

if ( step_direction == 1) 80 step_numero++;

if ( step_numero == step_nb_de_pas ) 82 step_numero = 0 ;

84

else 86 if ( step_numero == 0)

step_numero = step_nb_de_pas ;88

step_numero−−;90

// On decremente92 pas_restant−−;

// On met l e numero c o r r e c t 0 , 1 , 2 , or 3 :94 pasMoteur ( step_numero % 4) ;

96

98 /∗∗ Fait tourner l e moteur avant ou a r r i e r e .

100 ∗/void pasMoteur ( int un_pas )

102 switch ( un_pas )

104 case 0 : // 1010moteur_pin_1 = 1 ;

106 moteur_pin_2 = 0 ;moteur_pin_3 = 1 ;

108 moteur_pin_4 = 0 ;break ;

110 case 1 : // 0110moteur_pin_1 = 0 ;

112 moteur_pin_2 = 1 ;moteur_pin_3 = 1 ;

114 moteur_pin_4 = 0 ;break ;

116 case 2 : // 0101moteur_pin_1 = 0 ;

118 moteur_pin_2 = 1 ;moteur_pin_3 = 0 ;

120 moteur_pin_4 = 1 ;break ;

122 case 3 : // 1001moteur_pin_1 = 1 ;

124 moteur_pin_2 = 0 ;moteur_pin_3 = 0 ;

126 moteur_pin_4 = 1 ;break ;

128

Stepper.c

35

Page 36: Sui Ve Urs Olaire

TABLE DES FIGURES

Table des figures

2.1 Dessin - Maquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Organigramme - Principe de fonctionnement . . . . . . . . . . . . . . . . . . . . . 92.3 Schéma bloc - Système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4 Photo - Panneaux solaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.5 Photo - Photorésistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.6 Schéma - Câblage du LM358 avec les LDRs . . . . . . . . . . . . . . . . . . . . . 112.7 Photo - Moteur pas à pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.8 Dessin - Moteur pas à pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.9 Tableau - Alimentation des bobines . . . . . . . . . . . . . . . . . . . . . . . . . . 132.10 Schéma - SN7544A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.11 Schéma - Cablâge du SN7544A . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.12 Photo - Carte mère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.13 Schéma - Carte fille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.14 Typon - Carte fille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.15 Dessin - Maquette 3D avec textes . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.16 Dessin - Maquette 3D avec cotations . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.1 Photo - Notre maquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2 Photo - Notre carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

36