12
Projet : Persistance of Vision (POV) – 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 ` a jmfriedt.free.fr 15 mai 2015 1 / 12

Projet : Persistance of Vision (POV) – affichage d'un message

Embed Size (px)

Citation preview

Page 1: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

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

J.-M Friedt

FEMTO-ST/departement temps-frequence

[email protected]

transparents a jmfriedt.free.fr

15 mai 2015

1 / 12

Page 2: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Objectifs du projet

• Objectif : utiliser la persistance retinienne pour afficher un messageau moyen d’un reseau de LEDs alignees en mouvement

• Concept familier pour l’affichage 7-segments/LCD ou les ecranscathodiques, mais historiquement utilise avant l’avenement ducinema (folioscope et zootrope en 1834 ...)

• Domaine d’application : acquisition et traitement de donnees sursupport mobile, necessite d’alimenter sur pile un dispositif qui seraen rotation (roue, rotor de moteur ou de turbine).

2 / 12

Page 3: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Etat de l’art

• Principe : une barrette de LEDs en mouvement affiche un motif quievolue 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 demonstrations dans la litterature :

• SpokePOV Persistence of Vision for your Bike ! 1

• R.P. Paul, G.B. Rathod, V.R. Trivedi, P.V. Thakkar, Persistence ofVision Control Using Arduino, I.J. Intelligent Systems andApplications, 2014, 01, pp.102-111 (10.5815/ijisa.2014.01.11) 2

• Spinning 16-led POV display using Teensy 2.0 3

• S. Monk, 15 Dangerously Mad Projects for the Evil Genius, McGraw Hill (2011), chap. 8 4

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_GnLo3 / 12

Page 4: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Organisation10 seances de 3 heures :

0 comprendre le sujet + bibliographie

1 choix technologique : prise en main du microcontroleur et desfonctions de base, planification du travail

2 conception du circuit (schema) et commande des composants

3 suite de 2 (routage), test de la sonde a effet Hall, tensiond’alimentation et distance de declenchement

4 realisation d’un premier prototype permettant de se familiariser avecle concept de POV : un motif periodique (chenillard) est affichetandis que la plateforme est en rotation – relation entre GPIO etposition

5 programme permettant d’afficher un message – table de caracteres(difficulte : depassement de RAM)

6 declenchement du motif sur un point fixe de reference (INT0)

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

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

9 finalisation rapport et presentation orale4 / 12

Page 5: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Circuit imprime et premieredemonstration

• logiciel s’apparentant au chenillard

• Olimexino-32U4 respecte lanomenclature Arduino et melange lesports ⇒ LUT reliant chaque LED ason port/position

• montage mecanique de mise enrotation

123456789

10

CON4

A0A1A2A3A4A5

D0D1D2D3D4D5D6D7

D8D9D10D11D12D13GNDAREF

RST3V35VGNDGNDVIN

SDASCL

PLATFORM1

12345678

CON3

123456

CON1

123456

CON2

IC1

VCC

1

GN

D2

OU

T3

LED1

LED2LED3

LED4

LED5

LED6

LED7LED8LED9LED10

JP112

RESET

D1(TXD)

D3(SCL)D2(SDA)

D0(RXD)

D7(LED1)

D13(UEXT_#CS)

D4D5D6

D9(LED2)D10D11D12

D8(UEXT_PWR_E)

POW

ERAN

ALO

GD

IGIT

ALD

IGIT

ALAR

DU

INO

LEO

NAR

DO

PLA

TFO

RM

Circuit imprime : CADSoft

Eagle (www.cadsoft.de)

5 / 12

Page 6: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Circuit imprime et premieredemonstration

• logiciel s’apparentant au chenillard

• Olimexino-32U4 respecte lanomenclature Arduino et melange lesports ⇒ LUT reliant chaque LED ason port/position

• montage mecanique de mise enrotation

123456789

10

CON4

A0A1A2A3A4A5

D0D1D2D3D4D5D6D7

D8D9D10D11D12D13GNDAREF

RST3V35VGNDGNDVIN

SDASCL

PLATFORM1

12345678

CON3

123456

CON1

123456

CON2

IC1

VCC

1

GN

D2

OU

T3

LED1

LED2LED3

LED4

LED5

LED6

LED7LED8LED9LED10

JP112

RESET

D1(TXD)

D3(SCL)D2(SDA)

D0(RXD)

D7(LED1)

D13(UEXT_#CS)

D4D5D6

D9(LED2)D10D11D12

D8(UEXT_PWR_E)

POW

ERAN

ALO

GD

IGIT

ALD

IGIT

ALAR

DU

INO

LEO

NAR

DO

PLA

TFO

RM

Circuit imprime : CADSoft

Eagle (www.cadsoft.de)

6 / 12

Page 7: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Table d’allocation des caracteres• 10 LEDs (0x000-0x3FF) encodees

sur un short

• 10×5 pixels/caractere

• caracteres affichables de la tableASCII : 32-127

• 95 caracteres×2 octets/colonne×5 colonnes/caractere=950 octets

• travail incremental : ajouter lescaracteres si necessaire

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

...

����������������������������������������

����������������

����������������

����������������

����

����������������������������������������

������������ ����

��������������������������������

��������

������������

��������

���� ��������������������

������������

������������������������������������

����������������

����

����������������

������������ ����������������������������������������

������������ ����

����������������������������������������

��������

��������

��������������������

������������

��������������������������������

����

��������

����������������

����

����

����

������������

����

��������

����������������������������

����

��������

������������

����

������������

�������� �������� ����

�������� ��������

����������������������������

��������������������������������

��������������������������������

����

����������������������������������������

��������

������������

����

��������

�������� ����

������������

����

����

����

��������

����������������

����

��������

������������ ����

����������������

��������������������

����

����������������

����������������

����

����������������������������������������

��������

������������

��������

��������

���� ��������������������

��������

��������

����

����������������

����

����

������������

����������������

��������������������

����

����

��������

��������������������

������������

������������

��������������������

���� ��������������������������������

��������

������������

��������

����

����

���� ����

����

������������

�������� ����

����

������������������������

��������

����

������������������������

��������

����

����������������������������������������

��������

������������

�������� ����������������������������������������

��������������������������������

��������

��������

����������������

����

��������

����������������

����

����������������

����������������������������

����

��������

����

������������

�������� ��������

�������� ��������������������������������������������

����������������

��������

����

������������

����

��������������������������������

������������ ����

��������������������������������

������������

��������

���� ����

����

��������

������������

����

��������

������������

����

����������������

������������

����������������

��������

��������������������

��������������������������������

��������

����������������

����

����

������������

����

��������

��������������������

��������

��������

����������������

��������������������������������������������

�������� ����

����

����

����

��������

����

����

�������� ����

����

����

����

��������

��������

����

����

�������� ��������

���� ����

����

����

������������

��������

������������

������������

����

����

��������

��������

�������� ����

��������

������������

��������

�������� ����

����

������������

��������������������

��������

��������

������������������������

����

������������

��������

��������

��������

������������ ����

����������������

��������

������������

��������������������

��������

�������� ������������

����

������������ ���� ��������

��������

������������

������������

����������������

����

����������������

����������������

��������

��������

������������ ������������

������������

������������

����

������������

����������������������������������������

��������

��������

����������������

��������������������

����

��������

��������

������������

��������

�������� ����

��������

������������

������������

����

��������������������

��������

��������

����

����

����������������

��������

����

����������������

����������������

��������

��������

������������

����

������������������������

��������

���� ����

���� ����������������

����

���� ����

��������

����������������

����������������

���� ���� ����

���� ���� ����

0x3ff0x2100x2200x2500x18f

0x3ff0x020

0x3ff

0x0200x020

0x3ff0x2210x2210x2210x221

0x3ff0x001

9

0

0x0010x0010x001

0x1fe0x3030x2010x3030x1fe

0x0000x0000x0000x0000x000

0x3ff0x2010x2010x1020x0fc

0x3fc0x0030x01e0x0030x3fc

0x3ff0x0c0

0x3ff

0x0780x00c

0x3ff0x2200x2200x2400x180

0x3ff0x203

9

0

0x2060x20e0x3f9 0x200

0x3fe0x0010x0010x0010x3fe

0x3800x0400x03f0x0400x380

0x3fc0x0020x0010x0020x3fc

0x38f0x0500x0200x0500x38f

0x0c10x3210x221

0x20c0x200

0x2000x3ff

0x300

0x213

(127−32) caracteres * 5 shorts = 950 octets

0x1ff0x320

0x320

0x3ff0x2210x2210x3520x08c

0x1fe0x303

9

0

0x2010x2010x201

0x1fe0x303

0x3230x13e

0x201 0x3ff0x0040x2030x2010x203

0x3ff0x2600x0900x1080x207

0x120

0x1ff

0x3ff0x2200x2200x2200x200

0x221

0x2010x2010x3ff0x201

0x3fc 0x3ff0x100

0x1000x0c0

0x2030x20d

0x381

0x2110x231

0x3fc0x2020x2310x2310x1c2

0x0000x100

9

0

0x3ff0x0000x000 0x18c

0x3e00x0200x020

0x2000x2000x23f0x2400x380

0x3e10x221

0x2120x20c

0x0fe0x1210x2210x2110x00e

0x1070x2090x211

0x1c10x252

0x2210x221

0x202

0x221 0x3ff0x020

0x2de0x121

0x2de

0x1210x121

0x2210x2210x2210x1fe

0x3ff0x203

9

0

0x2060x20e0x3f9 0x000

0x0000x0030x0030x0000x000

0x0000x3fb0x3fb0x0000x000

0x0070x00c0x0300x0c00x380

0x0480x3ff0x0480x3ff0x048

0x0000x06c0x06c

0x0000x0000x06e

0x000

0x000

0x06d0x1c2

0x221

7 / 12

Page 8: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Probleme de gestion de memoireSeulement 2,5 KB de RAM, mais table de caracteres est statique doncon peut la mettre en flash (32 KB) ... sauf sur une architecture Harvard.

• Sur MSP430 (Von Neumann), sans puis avec const :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 avec const :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

(text va en flash, data et bss en RAM)8 / 12

Page 9: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Affichage d’un messagealphanumerique

• 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 colonnes’affiche 1700/6=283µs

• utilisation du timer en mode Output Compare pour cadencerl’affichage

• ajustement de la cadence sur vitesse de rotation (Input Capture v.sINT0)

9 / 12

Page 10: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Input Capture

• Declenchement d’une interruption sur une transition sur une brocheliee a un timer

• Etallonnage preliminaire ⇒ cadencement a 62500 Hz=16 MHz/25650 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 Hall 5 necessite une alimentation de5 V/5 mA, elle ne commute pas si elle est alimentee en 3,6 V.

5. http://www.farnell.com/datasheets/1702865.pdf10 / 12

Page 11: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Generation 5 V

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

2 MAX1674 : entree entre 0,7 et 5 V, sortie fixe a 5 V (300 mA)

3 ici, MAX631 : entree entre 2,5 et 5 V, sortie fixe a 5 V (50 mA)Montage en dead-bug pour ne pas perdre de temps a refaire uncircuit imprime

11 / 12

Page 12: Projet : Persistance of Vision (POV) – affichage d'un message

Projet :Persistance of

Vision (POV) –affichage d’un

messagelumineux parAtmega32U4

J.-M Friedt

Objectifs

Organisation

Stockage de lapolice

Resultats

Conclusion

Conclusion

1 Projet permettant d’aborder de nombreux peripheriques d’unmicrocontroleur (GPIO, timer, interruption materielle)

2 application embarquee necessairement alimentee sur pile (rotation)

3 complexite incrementale avec validation de chaque etape.

Perspectives

1 ajouter la couleur en remplacant l’unique LED rouge par colonnepar le triplet RGB ou une LED 3-couleurs 6 7.

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

6. LED RGB 5 mm, Farnell reference 2290374, 1 euro/p7. Panasonic LED driver ICs POV (Persistence of Vision) illumination demo

examples a http://channel.panasonic.com/contents/10919/12 / 12