IMA4 2018/2019 P6 : Différence entre versions

De Wiki de Projets IMA
(Partie du programme)
(Partie du programme)
Ligne 241 : Ligne 241 :
  
  
'''QR code'''
+
'''PCF8574'''
 +
 
 +
Les broches 1, 2 et 3 sont utilisées pour l’adressage des broches matérielles. Avec trois broches d’adressage, vous pouvez contrôler jusqu’à huit piles identiques à celles mentionnées précédemment. Par exemple, vous pouvez connecter les trois broches à la masse, ce qui rend A2, A1, A0 à (000) tout en connectant la broche 1 à HIGH et les deux autres à LOW feront A2, A1, A0 à (001) et ainsi de suite. La référence d'adresse est indiquée ci-dessous.
 +
 
 +
La différence entre ces deux circuits intégrés (PCF8574A et PCF8574) correspond aux quatre premiers bits de l'adresse. Pour PCF8574, la valeur 0100, tandis que PCF8574A correspond à 0111. Par conséquent, si vous utilisez les deux circuits intégrés, vous pouvez développer jusqu'à 128 E / S. les ports.
 +
 
 +
J'utilise PCF8574A comme expandeur de sortie. Les connexions PCF8574A sont illustrées ci-dessous. Huit voyants sont connectés, de sorte que le PCF8574A joue le rôle de récepteur de courant. Pour allumer la LED, la broche de sortie doit être mise à la terre.
 +
 
 +
C'est le code que j'ai utilisé pour tester le PCF8574A. L'adresse PCF8574A est définie initialement dans le programme. Pour sortir des données sur PCF8574A en utilisant Arduino, vous devez d’abord commencer la transmission à son adresse. Puis écrivez les données de sortie souhaitées. Enfin, terminez la transmission à l'adresse. Il est assez facile de s’interfacer avec PCF8574A pour la sortie des données.
 +
 
 +
Afin de pouvoir contrôler les voyants de la matrice de voyants, j'ai écrit deux fonctions pour le PCF8574: turnPinLowOnPCF8574P afin de réduire la sortie des broches.
 +
turnPinHighOnPCF8574P rend la sortie de broche haute
 +
De cette façon, nous pouvons contrôler chaque broche individuellement dans le programme.
  
 
=Documents Rendus=
 
=Documents Rendus=

Version du 8 octobre 2018 à 17:55


Présentation générale

Description

Il fault réaliser une matrice de LED monochrome 21x21 contrôlée par un micro-contrôleur ATMega328p.

Il y a 21 lignes et 21 colonnes, soit un total de 42 ports. Nous devons contrôler ces 42 ports séparément pour obtenir un contrôle séparé de chaque LED.

Enfin, On implante sur le micro-contrôleur une lecture de chaîne de caractères, de calculer le QR code correspondant et d'afficher le QR code sur les LEDs.

Objectifs

Les objectifs de ce projet sont de réaliser une matrice de LEDs à l'aide de pilotes de LEDs.Les pilotes sont contrôlés par un micro-contrôleur ATMega328p.

On choisit le TLC5947 à contrôler 21 colonnes, il a 24 porte, dont on peut utiliser un TLC5947 à contrôler tout les colonnes. Et utiliser des PCF8574 et des UDN2982 pour contrôler chaque ligne.

Le micro-contrôleur doit se charger, par interruptions, de balayer la matrice ligne par ligne pour allumer les LED de la ligne courante. Ce balayage doit se faire à une fréquence suffisante pour donner l'illusion d'un affichage stable.

Analyse du projet

Analyse du premier concurrent

Présentation générale

Pilote de matrice RVB, par un instrument TLC5947 de Texas (SPI) et un PCF8574 (I2C),La matrice est chaînable.[1]

9371701439627358488.jpg

COMPOSANTS

  • un TLC5947

Interface et CI IC / Interface d'affichage

  • un PCF8574

Microprocessors, Microcontrollers, DSPs / Microprocessors (MPUs)

  • un UDN2982

CI d'interface et IO / Pilotes de périphériques et actionneurs

  • un RGB 8x8 LED MATRIX
7795961439678095856.png

Analyse du second concurrent

Présentation générale

Afin de mieux utiliser la technologie des écrans LED linéaires rotatifs basée sur le principe de la persistance visuelle (principe POV), une méthode basée sur le cœur TMC5947 et ARM Cortex-M3 STM32F103 a été conçue en associant la technologie tactile Qtouch à un écran LED rotatif. Contrôle de l'affichage LED haute résolution à faible coût et faible consommation.


Conception matérielle du système Le STM32F103 est connecté à la LED via le TLC5947 pour contrôler l'affichage des LED sur le tableau tournant. Par exemple, le STM32F103 peut être utilisé pour contrôler la lumière LED afin d'afficher le motif d'horloge ou divers graphiques.Si les conditions le permettent, certains jeux simples peuvent être affichés. La DEL est connectée au processeur ARM et le motif d'affichage de la lampe DEL est modifié par le traitement du signal tactile par le processeur ARM.


2.jpg


3.jpg


Préparation du projet

Cahier des charges

Partie du matériel

  • matrice de LEDs

Il contient un total de 441 LED dans 21x21

  • Circuit de contrôle

Il contient un TLC5947 et trois groupes de PCF8574 et UDN2982, il contrôle les colonnes par un TLC5947 et chaque ligne par des PCF8574 et des UDN2982

  • Microcontrôleur

ATMega328p


Partie logiciel

  • Une fonction qui convertit une chaîne en un QR code, sortie sous la forme d'un tableau à deux dimensions.
  • Une fonction d'interruption. Le micro-contrôleur doit se charger, contrôler 3 PCF8574 par interruptions (Nous assignons 3 adresses matérielles PCF8574 différentes pour le contrôle des interruptions), de balayer la matrice ligne par ligne pour allumer les LED de la ligne courante. Ce balayage doit se faire à une fréquence suffisante pour donner l'illusion d'un affichage stable.
  • Une fonction d’allumer. Utilisez les broches PCF8574 et TLC5947 haut et bas pour éclairer la lumière LED appropriée en fonction des informations de coordonnées en entrée.

Choix techniques : matériel et logiciel

logiciel

Altium Designer


matériel principal

1 x ATMega328p

1 x TLC5947

3 x PCF8574

3 x UDN2982

441 x LEDs

Liste des tâches à effectuer

Calendrier prévisionnel

Réalisation du Projet

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Analyse du projet 0


Prologue

Réalisation des modules

matrice de LEDs

La matrice de points 21X21 est composée de 441 LED et chaque LED est placée à l’intersection des lignes et des colonnes.

S'allume, si le premier point doit être allumé, la 1ère broche est connectée au niveau haut a et le pied est connecté au niveau bas, puis le premier point est allumé;

Si la première ligne doit être allumée, la première broche du line doit être connectée au niveau haut et la broche de la colonne doit être connectée au niveau bas, puis la première ligne est allumée, si la première du colonne doit être allumée, la première ligne Lorsque la goupille est attachée basse et que la goupille sur la ligne est attachée haut, la première colonne sera allumée.

On fait le schematic en Altium Designer.

4.png


Circuit de contrôle

  • Module de TLC5947[2]

Le TLC5947 peut contrôler 24 canaux distincts avec une sortie PWM de 12 bits.

5.jpeg


Connecting to the Arduino

These boards communicate using an SPI protocol. The wiring is slightly different for the two boards, so we will describe them separately. For making breadboard connections with the header pins on top of the board

Connectez-vous à l'Arduino comme suit:


DIN -> Digital 4

CLK -> Digital 5

LAT -> Digital 6

GND -> GND

V + -> VIN

6.jpeg


Ici, nous montrons V + connecté à la broche Arduino VIN, qui alimentera la carte opto-isolée et la LED directement à partir de l’alimentation connectée à la prise d’alimentation CC. Série de chaque canal.

Les broches DIN / CLK / LAT peuvent être modifiées ultérieurement

Pour réaliser la partie contrôleur de circuit, on doit tout d'abord réaliser la partie complète du ATMega328p comme le cpu du notre circuit. Pour réaliser le systeme de ATMega328p,on utilise le schematic de Arduino UNO et combiné avec des documents en ligne,on fait le schematic du ATMega328p.

Afin de pouvoir se connecter au programme de gravure de l'ordinateur, fault ajouter un porte USB pour connecter avec l'ordinateur. Pour la partie connection, on choisit FT232R USB driver. Afin d'éviter un courant d'alimentation insuffisant,nous avons ajouté une batterie à l'alimentation USB. Nous pouvons choisir le mode d'alimentation via le commutateur,on a choisi le LM1117.IMA5 comme le regulateur de alimentation.

Arduino UNO.png
ATMeg328p.png


1538728382(1).png


Afin de réaliser le TLC5947 sur mon carte, j'ai fait le schematic selon le datasheet de module TLC5947.

Le TLC5947 est un circuit d'attaque de LED de puits à courant constant et à 24 canaux. Chaque canal est réglable individuellement avec 4096 pas modulés en largeur d'impulsion (PWM). Le contrôle PWM est répété automatiquement avec les données en niveaux de gris (GS) programmées. Les données GS sont écrites via un port d'interface série. La valeur actuelle des 24 canaux est définie par une seule résistance externe.

Le TLC5947 est doté d'une fonction d'arrêt thermique qui désactive tous les pilotes de sortie en cas de surchauffe. Tous les pilotes de sortie redémarrent automatiquement lorsque la température revient à des conditions normales.

TLC5947.png
Leds tlc5974sch.png


PCF8574 est un module d’extension d’entrée / sortie (E / S) à 8 bits pour le bus bidirectionnel à deux lignes (I2C) conçu pour un fonctionnement en VCC de 2,5 V à 6 V.

Le dispositif PCF8574 fournit une extension d’E / S distante à usage général pour la plupart des familles de microcontrôleurs via l’interface I 2C [horloge série (SCL), données série (SDA)].

L'appareil dispose d'un port d'E / S quasi-bidirectionnel 8 bits (P0 – P7), comprenant des sorties verrouillées avec une capacité de commande à courant élevé pour le pilotage direct de LED. Chaque E / S quasi bidirectionnelle peut être utilisée comme entrée ou sortie sans utiliser de signal de contrôle de la direction des données. À la mise sous tension, les E / S sont élevées. Dans ce mode, seule une source de courant vers VCC est active.

Afin de réaliser le PCF8574 sur mon carte, j'ai fait le schematic selon le datasheet de module PCF8574.

PCF8574.png
1538731712(1).png


Dans le sujet, il fault utiliser 3 UDN2982 pour gerer l'energy, mais ça fait trop long de commander les UDN2982 en Frence, après avoir cherché des composants alternatifs, j'ai décidé de remplacer le UDN2982 par le A2982SLW. Sur le datasheet, il a dit que:

Recommandés pour les applications de commutation côté haut bénéficiant d'une logique et d'une masse de charge séparées, ces appareils incluent des tensions d'alimentation de charge jusqu'à 50 V et des courants de sortie de -500 mA. Ces pilotes sources à 8 canaux sont utiles pour l’interfaçage entre la logique de bas niveau et les charges à forte intensité. Les charges typiques comprennent les relais, les solénoïdes, les lampes, les moteurs pas à pas et / ou les servomoteurs, les marteaux d'impression et les DEL.

Les UDN2981A, UDN2982A et A2982SLW sont électriquement interchangeables, résistent à une tension maximale de sortie de 50 V et fonctionnent à un minimum de 5 V. Tous les appareils de cette série intègrent des résistances de limitation du courant d'entrée et des diodes de suppression des transitoires de sortie, et sont activés par une entrée active haute.

UDN2982.png
A2982SLW.png


Donc je peux remplacer le UDN2982 par le A2982SLW.


Apres, on utilise 3 groupe de PCF8574 à contrôler 21 lines (utilise P1-P7 chaque groupe et on a 21 portes pour gerer tout les lines). On utilise A0-A2 à choisir les adresses des composants dont on peux les contrôler séparé avec interruption. Et on utilise TLC5947 à contrôler 21 colonnes.


1538734895(1).png

Partie du programme

Pour la partie du programme,il contient principalement 3 partie.

  • Une fonction transfert la chaîne caractère à QR code.
  • Une fonction de controler les colonnes (avec TLC5947).
  • Une fonction de controler les line ( avec PCF8574 et l'interruption).


PCF8574

Les broches 1, 2 et 3 sont utilisées pour l’adressage des broches matérielles. Avec trois broches d’adressage, vous pouvez contrôler jusqu’à huit piles identiques à celles mentionnées précédemment. Par exemple, vous pouvez connecter les trois broches à la masse, ce qui rend A2, A1, A0 à (000) tout en connectant la broche 1 à HIGH et les deux autres à LOW feront A2, A1, A0 à (001) et ainsi de suite. La référence d'adresse est indiquée ci-dessous.

La différence entre ces deux circuits intégrés (PCF8574A et PCF8574) correspond aux quatre premiers bits de l'adresse. Pour PCF8574, la valeur 0100, tandis que PCF8574A correspond à 0111. Par conséquent, si vous utilisez les deux circuits intégrés, vous pouvez développer jusqu'à 128 E / S. les ports.

J'utilise PCF8574A comme expandeur de sortie. Les connexions PCF8574A sont illustrées ci-dessous. Huit voyants sont connectés, de sorte que le PCF8574A joue le rôle de récepteur de courant. Pour allumer la LED, la broche de sortie doit être mise à la terre.

C'est le code que j'ai utilisé pour tester le PCF8574A. L'adresse PCF8574A est définie initialement dans le programme. Pour sortir des données sur PCF8574A en utilisant Arduino, vous devez d’abord commencer la transmission à son adresse. Puis écrivez les données de sortie souhaitées. Enfin, terminez la transmission à l'adresse. Il est assez facile de s’interfacer avec PCF8574A pour la sortie des données.

Afin de pouvoir contrôler les voyants de la matrice de voyants, j'ai écrit deux fonctions pour le PCF8574: turnPinLowOnPCF8574P afin de réduire la sortie des broches. turnPinHighOnPCF8574P rend la sortie de broche haute De cette façon, nous pouvons contrôler chaque broche individuellement dans le programme.

Documents Rendus