• Aucun résultat trouvé

Projet : Persistance of Vision (POV) – affichage d’un message lumineux par Atmega32U4

N/A
N/A
Protected

Academic year: 2022

Partager "Projet : Persistance of Vision (POV) – affichage d’un message lumineux par Atmega32U4"

Copied!
12
0
0

Texte intégral

(1)

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police esultats Conclusion

Projet : Persistance of Vision (POV) – affichage d’un message lumineux par Atmega32U4

J.-M Friedt

FEMTO-ST/d´epartement temps-fr´equence [email protected]

transparents `ajmfriedt.free.fr

15 mai 2015

1 / 12

(2)

Persistance of Vision (POV) –

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs

Organisation Stockage de la police esultats Conclusion

Objectifs du projet

• Objectif: utiliser la persistance r´etinienne pour afficher un message au moyen d’un r´eseau de LEDs align´ees en mouvement

• Concept familier pour l’affichage 7-segments/LCD ou les ´ecrans cathodiques, mais historiquement utilis´e avant l’av`enement du cin´ema (folioscope et zootrope en 1834 ...)

• Domaine d’application : acquisition et traitement de donn´ees sur support mobile, n´ecessit´e d’alimenter sur pile un dispositif qui sera en rotation (roue, rotor de moteur ou de turbine).

2 / 12

(3)

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs

Organisation Stockage de la police esultats Conclusion

Etat de l’art ´

• Principe : une barrette de LEDs en mouvement affiche un motif qui

´

evolue pour afficher un message

• Contraintes : synchroniser sur la vitesse de rotation du support

• Projet classique faisant intervenir du GPIO, input capture, interruptions dans un cadre ludique

Exemples de d´emonstrations dans la litt´erature :

• SpokePOV Persistence of Vision for your Bike !1

• R.P. Paul, G.B. Rathod, V.R. Trivedi, P.V. Thakkar,Persistence of Vision Control Using Arduino, I.J. Intelligent Systems and

Applications, 2014, 01, pp.102-111 (10.5815/ijisa.2014.01.11)2

• Spinning 16-led POV display using Teensy 2.03

• S. Monk,15 Dangerously Mad Projects for the Evil Genius, Mc Graw Hill (2011), chap. 84

1. http://www.ladyada.net/make/spokepov/

2. http://www.mecs-press.org/ijisa/ijisa-v6-n1/IJISA-V6-N1-11.pdf 3. https://github.com/amcinnes/pov_display

4. https://www.youtube.com/watch?v=Ulq33B_GnLo

3 / 12

(4)

Persistance of Vision (POV) –

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police esultats Conclusion

Organisation

10 s´eances de 3 heures :

0 comprendre le sujet + bibliographie

1 choix technologique : prise en main du microcontrˆoleur et des fonctions de base, planification du travail

2 conception du circuit (sch´ema) et commande des composants

3 suite de 2 (routage), test de la sonde `a effet Hall, tension d’alimentation et distance de d´eclenchement

4 r´ealisation d’un premier prototype permettant de se familiariser avec le concept de POV : un motif p´eriodique (chenillard) est affich´e tandis que la plateforme est en rotation – relation entre GPIO et position

5 programme permettant d’afficher un message – table de caract`eres (difficult´e : d´epassement de RAM)

6 d´eclenchement du motif sur un point fixe de r´ef´erence (INT0)

7 affichage sur timer au lieu d’afficher sur d´elai fixe (boucle vide)

8 ajustement de la vitesse du timer afin d’´etaler le message sur toute la surface

9 finalisation rapport et pr´esentation orale

4 / 12

(5)

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police esultats Conclusion

Circuit imprim´ e et premi` ere d´ emonstration

• logiciel s’apparentant au chenillard

• Olimexino-32U4 respecte la

nomenclature Arduino et m´elange les ports ⇒LUT reliant chaque LED `a son port/position

• montage m´ecanique de mise en rotation

1 2 34 5 6 78 9 10 CON4

A0 A1 A2 A3A4 A5

D0 D1 D2D3 D4 D5 D6 D7

D8D9 D10 D11 D12D13 GND AREF RST3V3 5V GND GNDVIN

SDASCL PLATFORM1

12 3 4 56 7 8 CON3

1 23 4 5 6 CON1

1 23 4 5 6 CON2

IC1

VCC1

GND2 OUT3

LED1 LED2LED3 LED4

LED5 LED6

LED7LED8 LED9LED10 JP11

2 RESET

D1(TXD) D3(SCL) D2(SDA) D0(RXD)

D7(LED1)

D13(UEXT_#CS) D4D5 D6

D9(LED2) D10D11 D12 D8(UEXT_PWR_E)

POWERANALOGDIGITALDIGITAL ARDUINO LEONARDO PLATFORM

Circuit imprim´e : CADSoft Eagle (www.cadsoft.de)

5 / 12

(6)

Persistance of Vision (POV) –

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police esultats Conclusion

Circuit imprim´ e et premi` ere d´ emonstration

• logiciel s’apparentant au chenillard

• Olimexino-32U4 respecte la

nomenclature Arduino et m´elange les ports ⇒LUT reliant chaque LED `a son port/position

• montage m´ecanique de mise en rotation

1 2 34 5 6 78 9 10 CON4

A0 A1 A2 A3A4 A5

D0 D1 D2D3 D4 D5 D6 D7

D8D9 D10 D11 D12D13 GND AREF RST3V3 5V GND GNDVIN

SDASCL PLATFORM1

12 3 4 56 7 8 CON3

1 23 4 5 6 CON1

1 23 4 5 6 CON2

IC1

VCC1

GND2 OUT3

LED1 LED2LED3 LED4

LED5 LED6

LED7LED8 LED9LED10 JP11

2 RESET

D1(TXD) D3(SCL) D2(SDA) D0(RXD)

D7(LED1)

D13(UEXT_#CS) D4D5 D6

D9(LED2) D10D11 D12 D8(UEXT_PWR_E)

POWERANALOGDIGITALDIGITAL ARDUINO LEONARDO PLATFORM

Circuit imprim´e : CADSoft Eagle (www.cadsoft.de)

6 / 12

(7)

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police

esultats Conclusion

Table d’allocation des caract` eres

• 10 LEDs (0x000-0x3FF) encod´ees sur un short

• 10×5 pixels/caract`ere

• caract`eres affichables de la table ASCII : 32-127

• 95 caract`eres×2 octets/colonne×

5 colonnes/caract`ere=950 octets

• travail incr´emental : ajouter les caract`eres si n´ecessaire

short c[475]= // on a 2.5 KB RAM

{0x000,0x000,0x000,0x000,0x000, // space 0x000,0x3fb,0x3fb,0x000,0x000, // ! 0x000,0x000,0x000,0x000,0x000, // "

0x048,0x3ff,0x048,0x3ff,0x048, // # ...

0x3ff,0x203,0x206,0x20e,0x3f9, // 0 0x000,0x100,0x3ff,0x000,0x000, // 1 0x107,0x209,0x211,0x221,0x1c1, // 2 0x202,0x221,0x221,0x252,0x18c, // 3 0x3e0,0x020,0x020,0x3ff,0x020, // 4 0x3e1,0x221,0x221,0x212,0x20c, // 5 0x0fe,0x121,0x221,0x211,0x00e, // 6 ...

00 1100 1100 1100 1100 1100 1100 1100 1100 1100 11 00 11001100110011

00 1100 1100 1100 11 00 1100 1100 1100 1100 11

00 1100 1100 1100 1100 1100 1100 1100 1100 1100 11

00 11 00 11 00

11 0011 0011001100110011001100110011001100110011001100110011 00 0011 0011 11 00110011001100110011 00 1100 11 00

1100 1100 1100 1100 1100 1100 1100 1100 1100 11 00 11001100110011

00 11 00 11 00 1100110011

00 1100110011 0011001100110011001100110011001100110011

00 11 00 11 00

11 0011 0011001100110011001100110011001100110011 00 1100 00 11 1100 11

00110011001100110011 00 1100110011 00

1100 1100 1100 1100 1100 1100 1100 11

00 1100 1100 11 00 1100 1100 1100 1100 11 00 11 00 11 00 11 00 1100110011

00 0011 00 11

1100 1100 1100 1100 1100 1100 11

00 1100 1100 11 00 1100 1100 1100 11 00 110011 00 11 00 11 00 11 0011 00 11 0011

00 110011 00110011

00 1100 1100 1100 1100 1100 1100 11

00 00 11 1100 1100 1100 1100 1100 1100 11

00 11 0011001100110011001100110011

00 11 00

1100 1100 1100 1100 1100 1100 1100 1100 1100 11 00 110011 00 1100110011

00 11 00 1100 11

00 11 00 11 0011

00 1100 1100 11

00 11

00 11 00 1100 1100 11 00 1100 1100 1100 1100 11 00 11 00 11 00 11 000011 001111

00 1100 1100 1100 1100 1100 1100 1100 1100 11

00 1100 1100 1100 1100 11 00 1100 1100 1100 1100 11

00 1100 1100 1100 1100 1100 1100 1100 1100 1100 11

00 1100 11 00 1100 1100 110011 000011001111000011001111001100110011 00 1100 11 00

0011 0011 11 0011001100110011 00 11 00 11

00 1100110011 0011001100110011

00 1100 1100 1100 1100 11 00 11 00 11 00 110011 00 11 0011 00 1100110011 001100110011000011110011

00 11 00 1100110011 00 11 001100110011001100110011001100110011

00 1100 11 0011 0000110011110011 0011

00 11 00 11 0011

00 11 00 1100 1100 1100 0011 11 00110011

00 1100 1100 1100 1100 1100 11 00 1100 11 00 11 00 1100 1100 1100 1100 1100 11 00 1100 11 00 11 00

1100 1100 1100 1100 1100 1100 1100 1100 1100 11 00 110011 00 1100110011

00 110011 0011001100110011001100110011001100110011

00 1100 1100 1100 1100 1100 1100 1100 11

00 1100 00 11 1100 11

00 1100 1100 1100 00 11 11 00 1100 11 00 1100 1100 1100 11 00 11 00 11 0011 0011 0011 00

1100 1100 1100 1100 1100 1100 11

00 11 00 1100 1100 11 00 110011 00 11 00 11 00 11 0011 00 11

00 110011 00110011 00

1100 1100 1100 1100 1100 1100 1100 1100 11 00 11001100110011

00 1100 11 00 11 00 1100 1100 11 00 11

00 1100 1100 1100 1100 1100 1100 1100 11

00 11 00 11 00

11 0011 00110011001100110011001100110011 00 1100 1100 00 11 1100 11 00

11 0011

00 11 00 11 0011

00 1100110011 00 11 00 0011 11

00 110011 00 11

00 11 00 110011 00 11 00 11

00 1100110011

00 11 00 1100110011

00 11 00 11 00 11 00 11 001100110011

00 1100 1100 1100 1100 1100 1100 1100 11 00 110011

00 11 00 11 00 11 00 11 00 11

00 11 00 11 00 11 00 11

00 11

00 0011 0011 0011 1100 1100110011

00 1100 11

00 1100 11 00 11 001100110011

00 1100 1100 1100 1100 1100 1100 1100 11001100110011

00 11 00 11 0011

00 11

00 11

00 11 00 1100 11 00 11

00 11 00 11 00 11 0011

00 11 00 11

00 11 00 1100 11

00 1100 11 00 11

00 11 00

11 0011 00110011

00

11 0011

00 11 00 11 00 1100 1100 11 00 1100110011 00

110011

00 1100110011

00 11

00 11

00 0011 11 00 1100 1100110011 0011

00 0011 11 00 1100 11 00 1100110011

00 0011 11 00110011

00 1100 1100 11 00 1100 1100 1100 11 00 11 0011 0011

00 11 0011 00 1100110011001100110011 00 11

00 11 00110011 00110011

00 1100 11 00 0011 11 00 0011 11 00 11 00110011001100110011

00 1100 11 00 1100 1100 11 00 1100 1100 1100 1100 11 00 1100 1100 1100 11 000011001111 00 110011 00 110011 0011 00110011

00 110011

00 11 00 0011 0011 1100 1100 11 00110011001100110011

00 11001100110011

00 1100110011 00

11

00 1100 11 00 110011 00

1100110011 001100110011

00 1100 1100 11 00 1100 1100 11

00 11 00 1100 1100 11

00 1100 1100 1100 1100 1100 1100 1100 1100 1100 11 00

11 0011 00110011 0011001100110011 00 1100 1100 1100 1100 11 00 11 00 11 00 11

00 1100 1100 1100 1100 11 00110011 00

11 00 11 0011

00 11 00 11 00 1100110011001100110011

00 11

00 110011001100110011

00 110011

00 1100 11 00 11

00 11

00 11001100110011 00 110011 00 11 0011000011001111

00 1100110011 00 11

00 1100 1100 1100 11 00

11 00110011 001100110011001100110011001100110011 0011 0011 00 11 001100110011 00 1100 11 00 11 0011

00 11 00 11 00 1100 1100 1100 11 00 1100 1100 1100 11

00 11 0011 0011 00 11 0011 0011

0x3ff 0x210 0x220 0x250 0x18f 0x3ff

0x020 0x3ff 0x020 0x020

0x3ff 0x221 0x221 0x221 0x221

0x3ff 0x001 9

0

0x001 0x001 0x001

0x1fe 0x303 0x201 0x303 0x1fe

0x000 0x000 0x000 0x000 0x000

0x3ff 0x201 0x201 0x102 0x0fc 0x3fc 0x003 0x01e 0x003 0x3fc

0x3ff 0x0c0 0x3ff 0x078 0x00c

0x3ff 0x220 0x220 0x240 0x180

0x3ff 0x203 9

0

0x206 0x20e

0x3f9 0x200

0x3fe 0x001 0x001 0x001 0x3fe

0x380 0x040 0x03f 0x040 0x380 0x3fc 0x002 0x001 0x002 0x3fc

0x38f 0x050 0x020 0x050 0x38f 0x0c1

0x321 0x221 0x20c 0x200

0x200 0x3ff 0x300 0x213 (127−32) caracteres * 5 shorts = 950 octets

0x1ff 0x320 0x320

0x3ff 0x221 0x221 0x352 0x08c

0x1fe 0x303 9

0

0x201 0x201 0x201

0x1fe 0x303 0x323 0x13e

0x201 0x004 0x3ff

0x203 0x201 0x203

0x3ff 0x260 0x090 0x108 0x207 0x120

0x1ff

0x3ff 0x220 0x220 0x220 0x200

0x221 0x201 0x201 0x3ff 0x201

0x3fc 0x3ff0x100 0x100 0x0c0

0x203 0x20d 0x381 0x211 0x231

0x3fc 0x202 0x231 0x231 0x1c2

0x000 0x100 9

0

0x3ff 0x000

0x000 0x18c

0x3e0 0x020 0x020

0x200 0x200 0x23f 0x240 0x380 0x3e1 0x221 0x212 0x20c

0x0fe 0x121 0x221 0x211 0x00e 0x107

0x209 0x211 0x1c1 0x252

0x221 0x221 0x202

0x221 0x3ff

0x020

0x2de 0x121 0x2de 0x121 0x121

0x221 0x221 0x221 0x1fe

0x3ff 0x203 9

0

0x206 0x20e

0x3f9 0x000

0x000 0x003 0x003 0x000 0x000

0x000 0x3fb 0x3fb 0x000 0x000 0x007 0x00c 0x030 0x0c0 0x380

0x048 0x3ff 0x048 0x3ff 0x048 0x000

0x06c 0x06c 0x000 0x0000x06e

0x000 0x000

0x06d 0x1c2

0x221

7 / 12

(8)

Persistance of Vision (POV) –

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police

esultats Conclusion

Probl` eme de gestion de m´ emoire

Seulement 2,5 KB de RAM, mais table de caract`eres est statique donc on peut la mettre en flash (32 KB) ... sauf sur une architecture Harvard.

• Sur MSP430 (Von Neumann), sans puis avecconst:

msp430-gcc -mmcu=msp430f1611 -O0 -o 3pov_memoire.msp430 3pov_memoire.c msp430-size 3pov_memoire.msp430sansconst

text data bss dec hex filename

112 966 2 1080 438 3pov_memoire.msp430sansconst msp430-size 3pov_memoire.msp430avecconst

text data bss dec hex filename

1062 16 2 1080 438 3pov_memoire.msp430avecconst

• Sur Atmega32U4 (Harvard), sans puis avecconst:

avr-gcc -mmcu=atmega32u4 -O0 -Wall -o 3pov_memoire.avr 3pov_memoire.c avr-size 3pov_memoire.avrsansconst

text data bss dec hex filename

232 966 0 1198 4ae 3pov_memoire.avrsansconst avr-size 3pov_memoire.avravecconst

text data bss dec hex filename

232 966 0 1198 4ae 3pov_memoire.avravecconst

(textva en flash, dataetbssen RAM)

8 / 12

(9)

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police esultats Conclusion

Affichage d’un message alphanum´ erique

• 3000 rpm = 50 rps = 20 ms/tour, donc afficher

”HELLO WORLD ” = 12 chars⇒1.7 ms/char

• 5 colonnes/char et un espace = 6 colonnes/char⇒chaque colonne s’affiche 1700/6=283µs

• utilisation dutimeren modeOutput Comparepour cadencer l’affichage

• ajustement de la cadence sur vitesse de rotation (Input Capturev.s INT0)

9 / 12

(10)

Persistance of Vision (POV) –

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police esultats Conclusion

Input Capture

• D´eclenchement d’une interruption sur une transition sur une broche li´ee `a untimer

• Etallonnage pr´´ eliminaire ⇒cadencement `a 62500 Hz=16 MHz/256

50 Hz=0x4E2, 20 Hz=0xC35, 10 Hz=0x186A, 8 Hz=0x1E84, 4 Hz=0x3D09

0x175A=96 ms=10,4 Hz 0x166F=92 ms=10,9 Hz

Attention: la sonde `a effet Hall5 n´ecessite une alimentation de 5 V/5 mA, elle ne commute pas si elle est aliment´ee en 3,6 V.

5. http://www.farnell.com/datasheets/1702865.pdf

10 / 12

(11)

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police esultats Conclusion

G´ en´ eration 5 V

1 Convertisseur DC-DC en step-up (3,6 V→5 V)

2 MAX1674 : entr´ee entre 0,7 et 5 V, sortie fixe `a 5 V (300 mA)

3 ici, MAX631 : entr´ee entre 2,5 et 5 V, sortie fixe `a 5 V (50 mA) Montage endead-bug pour ne pas perdre de temps `a refaire un circuit imprim´e

11 / 12

(12)

Persistance of Vision (POV) –

affichage d’un message lumineux par Atmega32U4 J.-M Friedt

Objectifs Organisation Stockage de la police esultats Conclusion

Conclusion

1 Projet permettant d’aborder de nombreux p´eriph´eriques d’un microcontrˆoleur (GPIO, timer, interruption mat´erielle)

2 application embarqu´ee n´ecessairement aliment´ee sur pile (rotation)

3 complexit´e incr´ementale avec validation de chaque ´etape.

Perspectives

1 ajouter la couleur en rempla¸cant l’unique LED rouge par colonne par le triplet RGB ou une LED 3-couleurs6 7.

2 solution 1-wire du WS2812 (Hackable n.6, 2015) au lieu de 10 GPIOs ?

6. LED RGB 5 mm, Farnell r´ef´erence 2290374, 1 euro/p

7. Panasonic LED driver ICs POV (Persistence of Vision) illumination demo examples`ahttp://channel.panasonic.com/contents/10919/

12 / 12

Références

Documents relatifs

Par ailleurs, la technologie du numérique évolue très vite et il est impossible aujourd'hui de garantir une vraie pérennité sur trois points : le format des fichiers, la durée de

Les directeurs auraient pu parler des ressources limitées pour aider les collègues dans la communauté à perfectionner leurs habiletés en enseignement pour faire

quelques trames, Subset fait aller clock avec des fait aller clock avec des valeurs proportionnelles valeurs proportionnelles. aux trames 1 à 100, mais en aux trames 1 à 100,

En plus de la possibilité de coordonner de multiples aspects des changements en fonction du temps, l'autre bonne raison pour utiliser des valeurs normalisées de clock est qu'on

C'est-à-dire, nous imaginons que notre voiture intelligente, que l'on suppose équipée avec une caméra de couleur, voudrait détecter l'apparition des feux de

Un objet diffusant (source secondaire de lumière) diffuse (envoie dans toutes les directions) la lumière qu’elle reçoit.. Exemples : tous les objets qui se trouvent autour de vous

[r]

 Dans le menu de l’application, choisir « Z/E : méthode » : Les élèves prennent connaissance de la capsule vidéo indiquant la marche à suivre pour identifier une