Afficheur DEL clignote !!!!

FB78

New Member
Bonjour à tous,
J'ai conçu un petit circuit qui permettra d'afficher le rapport de la vitesse engagée sur un véhicule.
Mon problème est que dès la mise sous tension, l'afficheur "clignote" (tous les segments) au rythme d'environ 1 seconde au lieu d'afficher un tiret.
Je joins le programme et le schéma afin de m'aider à résoudre ce problème.
Merci beaucoup pour votre aide.
Code:
'***** Programme pour piloter un afficheur 7 segments indiquant le rapport de vitesse engage *****
'***** Definitions *****
#picaxe 18M2			' modele de micro-controleur utilise (sert au compilateur)
' si necessaire, modifier ici les affectations des vitesses sur le port C
symbol Premiere  = pinC.0	' ILS 1ere vitesse
symbol Deuxieme  = pinC.1	' ILS 2eme vitesse
symbol Troisieme = pinC.2	' ILS 3eme vitesse
symbol Quatrieme = pinC.4	' ILS 4eme vitesse (C.4 car C.3 n'est pas utilisable en lecture)
symbol Cinquieme = pinC.5	' ILS 5eme vitesse
symbol Sixieme   = pinC.6	' ILS 6eme vitesse
symbol MarcheAR  = pinC.7	' ILS marche arriere
symbol Afficheur = pinsB	' le port B commande les segments de l'afficheur de rapport
' segments A a G correspondants aux bits du port B pour afficher le rapport engage (B.7 a 0 = point mort)
' bit a 0 = segment allume, bit a 1 = segment eteint (pour LED a anode commune sur le +5V)
'		   				     A
'		   				  +-----+
'		   				F |	| B
'		   				  |__G__|
'		   				  |	|
'		   			        E |  D  | C
'		   			          +-----+
'
symbol Chiffre1 = %11111001	' = segments B + C
symbol Chiffre2 = %10100100	' = segments A + B + D + E + G
symbol Chiffre3 = %10110000	' = segments A + B + C + D + G
symbol Chiffre4 = %10011001	' = segments B + C + F + G
symbol Chiffre5 = %10010010	' = segments A + C + D + F + G
symbol Chiffre6 = %10000010	' = segments A + C + D + E + F + G
symbol LettreA  = %10001000	' = segments A + B + C + E + F + G
symbol Tiret    = %00111111	' = segment G + signal "point mort"
symbol Eteint   = %11111111	' tous les segments de l'afficheur eteint
symbol Allume   = %10000000	' tous les segments de l'afficheur allume
symbol Sortie   = %11111111	' tous les bits en sortie
symbol Entree   = %00001000	' tous les bits en entree sauf le bit 3 qui ne peut etre qu'en sortie
symbol Engage   = 0		' ILS ferme = 0 = rapport engage sinon = 1 = ILS ouvert

'***** Initialisations *****
disconnect			'******* commande ajoutée suite à la remarque de MGU ci-dessous ********
let dirsB = Sortie		' parametre le port B en sortie pour piloter l'afficheur LED
let dirsC = Entree		' parametre le port C en entree pour detecter le rapport engage
let Afficheur = Allume		' allume tous les segments de l'afficheur
pause 1000			' pendant 1 seconde pour controle visuel a la mise sous tension
let Afficheur = Eteint		' eteint l'afficheur

'***** Boucle principale *****
Boucle:
	pause 1000	' attente de 1 seconde pour eviter d'afficher le tiret pendant un changement de vitesse
	if Premiere = Engage then		' si la 1ere est engagee
		Afficheur = Chiffre1
		goto Boucle
	endif
	if Deuxieme = Engage then		' si la 2eme est engagee
		Afficheur = Chiffre2
		goto Boucle
	endif
	if Troisieme = Engage then		' si la 3eme est engagee
		Afficheur = Chiffre3
		goto Boucle
	endif
	if Quatrieme = Engage then		' si la 4eme est engagee
		Afficheur = Chiffre4
		goto Boucle
	endif
	if Cinquieme = Engage then		' si la 5eme est engagee
		Afficheur = Chiffre5
		goto Boucle
	endif
	if Sixieme = Engage then		' si la 6eme est engagee
		Afficheur = Chiffre6
		goto Boucle
	endif
	if MarcheAR = Engage then		' si la marche arriere est engagee
		Afficheur = LettreA
		goto Boucle
	endif
	let Afficheur = Tiret			' sinon, pas de rapport engage alors on affiche un tiret (segment G)
						' et B.7 a zero pour signaler le "point mort"
	goto Boucle
 

Attachments

Last edited:

PieM

Senior Member
Bonjour et bienvenue,

C'est que le picaxe se réinitialise en raison de parasites, puisque tous les segments s'allument !

Mettre impérativement un condo de 100nF aux bornes du picaxe entre les broches V+ et GND. (au plus près)
En plus le montage étant alimenté par un circuit de véhicule donc très parasité, ce ne sera sans doute pas suffisant!
Quelles condos + self de plus seront sans doute nécessaires...
 

FB78

New Member
Merci PieM,
Je ne pense pas qu'il y a des parasites car le circuit est alimenté par des piles pour les tests sur table.
Le fait que tous les segments s'allument est fait dans la section du programme "Initialisations" mais peut-être que l'allumage des segments durant l'initialisation provoque une variation de tension et créé ainsi des "reboot" ????
 

PieM

Senior Member
Merci PieM,
Je ne pense pas qu'il y a des parasites car le circuit est alimenté par des piles pour les tests sur table.
Le fait que tous les segments s'allument est fait dans la section du programme "Initialisations" mais peut-être que l'allumage des segments durant l'initialisation provoque une variation de tension et créé ainsi des "reboot" ????
L'alimentation par piles ne met pas à l'abri de parasites !
C'est bien parce que on repasse par l'initialisation, que ça prouve que le picaxe reboot. Suuprimez cet affichage à l'init et vous verrez...
 

MGU

Senior Member
Bonjour,

Je n'utilise pas de 18M2, mais je vois que C.4 est le sérial in, le reboot n'est pas étonnant.

Va falloir faire quelque chose pour le désactiver.

Ca n'empèche pas les découplages...

Pour info, le 20M2 est au même prix

MM
 

PieM

Senior Member
Bonne remarque de Michel. Pour utiliser Sérial In en entrée il faut utiliser la commande disconnect avant. Voir le manuel...
Vous pouviez aussi utiliser un réseau de R avec les ILS en diviseur de tension sur une entrée ana.
 
Last edited:

FB78

New Member
Merci Michel, effectivement j'ai ajouté la commande "disconnect" dans l'initialisation et maintenant, le circuit ne fait plus le "sapin de Noël" mais le programme ne démarre toujours pas !!!!
Il semble se réinitialiser quand je pose le doigt sur le PICAXE (sans doute la capacité parasite du corps) car il affiche tous les segments pendant 1 seconde.
Il faut peut-être une autre commande d’initialisation du genre "set horloge" ou autres ?????
--> PieM : "Vous pouviez aussi utiliser un réseau de R avec les ILS en diviseur de tension sur une entrée ana."
je n'ai pas compris votre suggestion.
Merci encore de vos précieuses aides.
 

MGU

Senior Member
Bonjour,

Le programme fonctionne en simulation. On revient maintenant sur un problème hardware.

Y a t il maintenant les condos de découplages basiques ?:
un chimique de 100µF sur l'arrivée de l'alimentation
un céramique de 100nF sur les pattes alim du µC

Sinon, les ajouter
Faire une photo de ce montage

MM
 

FB78

New Member
Bonjour MGU,

Je cherche dans mon stock les condos que vous préconisez, je les montent et je vous dis ce que ça donne avec la photo incluse.

Merci
 

PieM

Senior Member
Bonjour,
En complément, il faut penser que pour recharger un programme après un "disconnect", il faut impérativement faire un hard reset:
- couper l'alim picaxe, lancer le téléchargement, et remettre sous tension à l'apparition de la fenêtre de recherche de la com.

l'utilisation de Serial In est dans la mesure du possible à éviter. (ce n'est pas le cas de Serial Out) C'est pourquoi, je rejoint Michel (MGU) dans le conseil d'utiliser un 20M2. pas plus cher avec plus de possibilités.
 

FB78

New Member
Bonsoir,
Oui, j'ai bien compris la contrainte de Serial In mais je dois faire avec le 18M2 que j'ai uniquement.
Si je ne m'en sors pas avec lui, je recommence tout (prog + circuit imprimé) sur la base d'un 20M2.
 

FB78

New Member
Bonjour,

Voici mes derniers essais :
1) installation sur le circuit des capas 100uF-16v + 220nF-63v
2) contrôle des tensions sur toutes les pattes du 18M2, des ILS, des résistances : tout est OK
3) test des ILS ouverts/fermés avec un aimant : tensions 5v/0v OK sur le 18M2

Résultat : aucun allumage de l'afficheur à la mise sous tension ni avec l'aimant sur les ILS.
PS: je ne peux pas joindre la photo qui est trop grande !!!!

Est-il possible de relire le programme contenu dans le PICAXE 18M2 pour contrôle ?
 
Last edited:

PieM

Senior Member
Résultat : aucun allumage de l'afficheur à la mise sous tension ni avec l'aimant sur les ILS.
PS: je ne peux pas joindre la photo qui est trop grande !!!!

Est-il possible de relire le programme contenu dans le PICAXE 18M2 pour contrôle ?
Utiliser un logiciel comme paint si vous n'avez rien d'autre, pour redimensionner vos photos.
ou prenez des photos avec une résolution plus faible.
La simulation marche très bien, donc rechargez votre programme.
Il n'est pas possible de relire un programme installé sur Picaxe.
 

MGU

Senior Member
Bonjour,

J'utilise "Light Image Resizer", gratuit.

Dans la grande majorité des cas, quand j'interviens sur un truc qui fonctionne à moitié, et que ça ne fonctionne plus du tout après, c'est que j'ai fait une ...."erreur".

Y a il eu le message de chargement avec succès ?

MM
 

FB78

New Member
"ça ne fonctionne plus du tout après, c'est que j'ai fait une ....erreur"
pourtant j'ai tout contrôlé visuellement et électriquement, c'est comme si le 18M2 ne "démarrait" pas : les tensions restent stables sur les ports !!!

"Y a il eu le message de chargement avec succès ?"
oui, après le reset hard nécessaire suite à l'utilisation de la commande "disconnect" dans le prog, le message "success" est affiché.

Circuit afficheur.jpg
 

MGU

Senior Member
Probablement un problème de câblage.
Le double faces n'arrange rien.
Le typon est fait avec quoi ?

Affichage:
Enlever le µC, et court circuiter sur le support CI chaque sortie segment au 0v, les segments s'allument ?

µC:
Sans le µC, vérifier sur le support l'alim du µC
Idem avec le µC, en mesurant sur les pattes apparentes du µC
Mesurer les tensions sur les sorties du µC. 5v -> segment éteint , 0v -> segment allumé

Après...on verra

MM
 

PieM

Senior Member
Je revoyais le schéma du #1. toutes vos entrées sont à l'état haut
je pense que le gros problème vient de cette utilisation du Serialin.
Visiblement (pas trop!) la programmation se fait hors de ce circuit imprimé.
Quand vous remettez le Picaxe sur ce circuit, il voit une tension high sur son entrée serial, donc il reste en attente de programmation, avant même que l'instruction disconnect ait pu se faire.!
Comme quoi il faut toujours se faire un circuit d'essai avant de réaliser le moindre typon!
en fait il aurait fallu inverser la logique d'entrée.
Faire le test:
fermer l'ILS de C.4 avant la mise sous tension du picaxe.
 

MGU

Senior Member
Je revoyais le schéma du #1. toutes vos entrées sont à l'état haut
je pense que le gros problème vient de cette utilisation du Serialin.
Visiblement (pas trop!) la programmation se fait hors de ce circuit imprimé.
Quand vous remettez le Picaxe sur ce circuit, il voit une tension high sur son entrée serial, donc il reste en attente de programmation, avant même que l'instruction disconnect ait pu se faire.!
Comme quoi il faut toujours se faire un circuit d'essai avant de réaliser le moindre typon!
en fait il aurait fallu inverser la logique d'entrée.
Faire le test:
fermer l'ILS de C.4 avant la mise sous tension du picaxe.
Bon sang, mais c'est bien sûr....fallait juste y penser..
Pas de solution simple, la logique est fonction de l'installation, sinon changer de picaxe

Peut être un condo chimique sur cette entrée, genre 47 ou 100µF, au 0v

MM
 

PieM

Senior Member
Bon sang, mais c'est bien sûr....fallait juste y penser..
Pas de solution simple, la logique est fonction de l'installation, sinon changer de picaxe

MM

MM
Il faudrait inverser le commun des ILS et du réseau des R SIL. peut être faisable avec coupure de piste et 2 fils
Ou passer la 4e avant de mettre le contact !!!

Peut être un condo chimique sur cette entrée, genre 47 ou 100µF, au 0v
Bonne idée, c'est peut être jouable...
 

MGU

Senior Member
Pas terrible l'idée du condo, il va se décharger dans l' ILS à chaque fois, faudrait une R pour limiter le courant.

Inverser la logique, oui, si c'est possible.

Pour moi, il n'y a qu'une seule bonne solution...

MM
 

MGU

Senior Member
Une idée....

Supprimer les résistances de pullup.
Faudrait peut être une pulldown de disons 100k à 470k sur C.4
Et activer les pullup internes après le disconnect

MM
 

FB78

New Member
BRAVO les gars, c'est bien le C.4 qui me joue des tours !!!!
Le prog se met en route dès que je ferme (0v) l'ILS du C.4 (4ème vitesse)
On doit pouvoir simuler dans le prog cette fermeture de C.4
En tout cas, on avance bien ...
 

MGU

Senior Member
Décidément, ce 18M2 n'est pas ma tasse de thé...

Apparemment, il n'y a pas de pullup internes sur les entrées C, d'après la doc.

La soluce #22 est à l'eau

Et à part changer la logique des entrées, ben ???? Rien de satisfaisant pour une solution sérieuse

MM
 

PieM

Senior Member
On doit pouvoir simuler dans le prog cette fermeture de C.4
En tout cas, on avance bien ...
Absolument pas ! C'est dans les première ms que le Picaxe va voir l'état de C.4. Aucune possibilité soft de mettre un état bas.

Supprimer les résistances de pullup.
Faudrait peut être une pulldown de disons 100k à 470k sur C.4
Et activer les pullup internes après le disconnect
La pullup interne n'est pas possible possible sur le port C ... donc pas sur l'entrée SerialIN.

Inverser le V+ et GND sur les entrées, c'est deux coups de cutter et deux fils à souder.
Et dans le programme, mettre engage = 1
 
Last edited:

FB78

New Member
Et si je met ça dans le prog :
'***** Initialisations *****
serrxd [10,Initialise],#b0 ' pseudo-lecture de "Serial In" (C.4) pour débloquer le programme
Initialise:
disconnect ' invalide le scan de "Serial In" (C.4) utilise pour programmer le PICAXE

est-ce efficace ?
 

PieM

Senior Member
Et si je met ça dans le prog :
'***** Initialisations *****
serrxd [10,Initialise],#b0 ' pseudo-lecture de "Serial In" (C.4) pour débloquer le programme
Initialise:
disconnect ' invalide le scan de "Serial In" (C.4) utilise pour programmer le PICAXE

est-ce efficace ?
Voir #25 : Absolument pas ! C'est dans les première ms que le Picaxe va voir l'état de C.4. Aucune possibilité soft de mettre un état bas, puisque le programme n'a pas démarré.

Je le redis:
Inverser le V+ et GND sur les entrées, c'est deux coups de cutter et deux fils à souder.
Et dans le programme, mettre engage = 1
 

MGU

Senior Member
Une autre idée, alternative à l'inversion de logique:

couper la liaison commun pullup au 5v
Relier C.3 au commun des pullup,
Placer une R de 220k entre C.3 et 0v (peut être inutile ?)

Dans le code :
disconnect
high C.3


MM
 

PieM

Senior Member
Une autre idée, alternative à l'inversion de logique:

couper la liaison commun pullup au 5v
Relier C.3 au commun des pullup,
Placer une R de 220k entre C.3 et 0v (peut être inutile ?)

Dans le code :
disconnect
high C.3


MM
C'est sans doute jouable. Je pense que ta 220k est nécessaire sinon C.3 va être flottant au démarrage (haute impédance)
 

FB78

New Member
Excusez-moi du retard à répondre à cause d'autres "occupations" importantes.

Pour en revenir à mon montage, je suis en pleine réflexion :
- soit faire fonctionner celui qui est fait (l'idée de MGU est intéressante) mais cela va-t-il être définitif ?
- soit repartir à zéro (conception d'un nouveau circuit avec TCI, élaboration d'un nouveau programme PICAXE, achat d'un 20M2 + la carte de développement, etc ....)

Je tiens à remercier PieM et MGU de leurs investigations sur mon projet ainsi que l'aide apportée par leurs connaissances du produit, dorénavant, je suivrai le conseil de MGU d'utiliser le 20M2 au lieu du 18M2.

Dès que mon projet repartira, je vous en ferai part sur le forum pour le partage avec la communauté et que mon expérience de débutant soit utile aux PICAXE'istes.
Merci encore PieM et MGU, à bientôt.
 

MGU

Senior Member
Excusez-moi du retard à répondre à cause d'autres "occupations" importantes.

Pour en revenir à mon montage, je suis en pleine réflexion :
- soit faire fonctionner celui qui est fait (l'idée de MGU est intéressante) mais cela va-t-il être définitif ?
- soit repartir à zéro (conception d'un nouveau circuit avec TCI, élaboration d'un nouveau programme PICAXE, achat d'un 20M2 + la carte de développement, etc ....)

Je tiens à remercier PieM et MGU de leurs investigations sur mon projet ainsi que l'aide apportée par leurs connaissances du produit, dorénavant, je suivrai le conseil de MGU d'utiliser le 20M2 au lieu du 18M2.

Dès que mon projet repartira, je vous en ferai part sur le forum pour le partage avec la communauté et que mon expérience de débutant soit utile aux PICAXE'istes.
Merci encore PieM et MGU, à bientôt.
Bonjour,

Pour répondre aux questions posées:
La modif proposée en #28 serait définitive (faut quand même vérifier la validité)
Le 20M2 serait la meilleure solution alternative. Pour la "carte de développement", il y a la carte AXE118:
https://www.gotronic.fr/art-circuit-d-essais-pour-picaxe-20m2-axe118-11933.htm
En remplaçant l'ULN par les 390ohms, rien à câbler.
Le réseau de 10k est inutile si on active les pullup internes (voir typon plus haut #17)

MM
 

FB78

New Member
Bonjour,

Merci MGU,
Je viens effectivement de prendre la décision de repartir à zéro et j'ai donc commandé le 20M2 + AXE118.
Malgré tout, je dois refaire le C.I. car les ILS n'existent pas sur l'AXE118.

FB
 

PieM

Senior Member
Je pense que passer sur un 20M2 est la solution la plus sage. Utiliser le Axe118 est à faire en tant que platine de développement comme le précise Michel.
Seul le réseau de R afficheur sera nécessaire sur le CI définitif, compte tenu des pullup internes.
Par contre je renouvelle ce que j'ai dit: attention au filtrage de ce montage compte tenu du fait qu'il est monté sur un véhicule!
 

FB78

New Member
Je comprends pas, ils sont où les ILS ?
PS: Ah, ok, ils sont sur la face cachée...mais je vois pas comment ça fonctionne...
MM
Un petit aimant collé sur une patte plastique elle-même fixée sur le levier de vitesse sera déplacé sur l'ILS correspondant à la vitesse engagée, c'est pour cela qu'ils sont soudés sur l'autre face du C.I. afin que les composants ne gênent pas le déplacement de l'aimant.

--> PieM
"attention au filtrage de ce montage compte tenu du fait qu'il est monté sur un véhicule!"

J'ai bien compris la nécessité du filtrage mais le circuit sera alimenté par le 5v. (je pense déjà filtré) qui sert à alimenter un appareil.
 

FB78

New Member
Bonjour,

Après mes essais de "débutant" avec PICAXE et les conseils avisés de PieM et MGU, j'ai terminé mon projet "d'afficheur de vitesse engagée" qui fonctionne maintenant parfaitement.

Pour ceux que cela pourrait intéresser, je joins le programme et le schéma.

'***** Programme pour piloter un afficheur 7 segments indiquant le rapport de vitesse engage *****
'***** Definitions *****
#picaxe 20M2 ' modele de micro-controleur utilise (sert au compilateur)
' si necessaire, modifier ici les affectations des vitesses sur le port C
symbol MarcheAR = pinC.0 ' ILS marche arriere
symbol Premiere = pinC.1 ' ILS 1ere vitesse
symbol Deuxieme = pinC.2 ' ILS 2eme vitesse
symbol Troisieme = pinC.3 ' ILS 3eme vitesse
symbol Quatrieme = pinC.4 ' ILS 4eme vitesse
symbol Cinquieme = pinC.5 ' ILS 5eme vitesse
symbol Sixieme = pinC.6 ' ILS 6eme vitesse
symbol Afficheur = pinsB ' le port B commande les segments de l'afficheur de rapport
symbol Position = pinsC ' le port C lit la position du levier de vitesse grace aux ILS
' segments A a G correspondants aux bits du port B pour afficher le rapport engage (B.7 a 0 = point mort)
' bit a 0 = segment allume, bit a 1 = segment eteint (pour LED a anode commune sur le +5V)
symbol Chiffre1 = %11111001 ' = segments B + C
symbol Chiffre2 = %10100100 ' = segments A + B + D + E + G
symbol Chiffre3 = %10110000 ' = segments A + B + C + D + G
symbol Chiffre4 = %10011001 ' = segments B + C + F + G
symbol Chiffre5 = %10010010 ' = segments A + C + D + F + G
symbol Chiffre6 = %10000010 ' = segments A + C + D + E + F + G
symbol LettreA = %10001000 ' = segments A + B + C + E + F + G
symbol PointM = %00111111 ' = segment G + signal "point mort"
symbol Neutre = %01111111 ' aucune vitesse engagee = position neutre
symbol Allume = %10000000 ' tous les segments de l'afficheur allume
symbol Eteint = %11111111 ' tous les segments de l'afficheur eteint
symbol Sortie = %11111111 ' tous les bits en sortie
symbol Entree = %00000000 ' tous les bits en entree
symbol Engage = 0 ' ILS ferme = 0 = rapport engage sinon = 1 = ILS ouvert

'***** Initialisations *****
dirsB = Sortie ' parametre le port B en sortie pour piloter l'afficheur LED
dirsC = Entree ' parametre le port C en entree pour detecter le rapport engage
Afficheur = Allume ' allume tous les segments de l'afficheur
pause 2000 ' pendant 2 secondes pour controle visuel a la mise sous tension
Afficheur = Eteint ' eteint l'afficheur
goto Debut ' pour eviter une attente supplementaire apres l'initialisation

'***** Boucle principale *****
Boucle:
if Premiere = Engage then ' si la 1ere est engagee
Afficheur = Chiffre1
goto Boucle
endif
if Deuxieme = Engage then ' si la 2eme est engagee
Afficheur = Chiffre2
goto Boucle
endif
if Troisieme = Engage then ' si la 3eme est engagee
Afficheur = Chiffre3
goto Boucle
endif
if Quatrieme = Engage then ' si la 4eme est engagee
Afficheur = Chiffre4
goto Boucle
endif
if Cinquieme = Engage then ' si la 5eme est engagee
Afficheur = Chiffre5
goto Boucle
endif
if Sixieme = Engage then ' si la 6eme est engagee
Afficheur = Chiffre6
goto Boucle
endif
if MarcheAR = Engage then ' si la marche arriere est engagee
Afficheur = LettreA
goto Boucle
endif
pause 2000 ' attente de 2 secondes pour eviter d'afficher le tiret pendant un changement de vitesse
Debut:
if Position = Neutre then ' si toujours pas de vitesse engagee apres le delai de changement
Afficheur = PointM ' alors on affiche un tiret et on signale "point mort"
endif
goto Boucle

Affichage rapport engagé.jpg
 
Top