Deux 18M2 grillés !!!

meepmeep

Senior Member
Bonjour,
Je suis un peu désemparé, en voulant finaliser un projet d'élèves en cours de réalisation, j'ai grillé deux 18M2 sur une carte CHI030B...
Le projet consiste à faire un afficheur (genre le numéro qu'on appelle à la boucherie...)

Au début, ça fonctionnait parfaitement avec cette config :
- Deux alims séparées : 12V pour les sorties B (pour alimenter les rampes de DEL) et du 5V pour le PIC. Et j'ai biensur retiré le strap.
- Une série de DEL sur chaque sorties B0 à B7 pour former mes chiffres
- J'ai un recepteur IR (à trois fils) sur C1 (en utilisant la pastille G) et une télécommande PICAXE bleue
- Un programme fait sur logicator avec une commande BASIC
Code:
irin C.0,varA
pour récupérer la touche de la télécommande
- Selon le code de la télécommande, je compare la varA et j'active ou non les sorties B.
Ça fonctionnait parfaitement...

MAIS... J'avais besoin d'une sortie supplémentaire pour commander un buzzer, j'ai donc essayé de le connecter un module de puissance (module MOSFET avec 3 fils 0v,S,V+). J'ai mis le + du module sur le + du C7, le S sur C7 et le - sur la pastille G à côté.
Avant ça, j'ai dessoudé la résistance de pulldown (R1) sur cette sortie en pensant que ça allait gêner... (suite à des échanges avec pieM sur un autre post).

J'ai placé le récepteur IR sur l'entrée C0 pour faire plus "propre" et j'ai modifié la commande irin avec C0 à la place de C1

J'ai ajouté à la fin de mon organigramme
Code:
if varA = 21 then
high C.7
En faisant "vérifier",
Il m'a mit une erreur sur la commande
Code:
let dirs = 1
Sans trop comprendre pourquoi j'avais cette erreur, je l'ai simplement mise en commentaire avec un ' devant, j'ai downloadé le programme et crac !

Voici la copie de mon programme généré par Picaxe editor 6 (désolé, c'est moche avec les "Cell" mais le programme vient de celui fait par les élèves en organigramme...
Code:
'BASIC converted from flowchart:
'C:\Users\CG\Documents\techno\4e\5. Afficheur cantine\Perso\programme classe afficheur.plf
'Converted  2016-07-04 at 17:05:40

{ ;Symbols
symbol varA = b0
symbol varB = b1
symbol varC = b2
symbol varD = b3
symbol varE = b4
symbol varF = b5
symbol varG = b6
symbol varH = b7
symbol varI = b8
symbol varJ = b9
symbol varK = b10
symbol varL = b11
symbol varM = b12
symbol varN = b13
symbol varO = b14
symbol varP = b15
symbol varQ = b16
symbol varR = b17
symbol varS = b18
symbol varT = b19
symbol varU = b20
symbol varV = b21
symbol varTEMPBYTE1 = b22
symbol varTEMPBYTE2 = b23
symbol varTEMPBYTE3 = b24
symbol varTEMPBYTE4 = b25
symbol varTEMPBYTE5 = b26
symbol varTEMPBYTE6 = b27
symbol varTEMPWORD1 = w11
symbol varTEMPWORD2 = w12
symbol varTEMPWORD3 = w13
}


main:
	'let dirs = 1

	low B.0, B.1, B.2, B.3, B.4, B.5, B.6, B.7, C.6, C.7

Cell_4_5:
irin C.0,varA
	if varA = 2 then
		goto Cell_4_7
	end if
	if varA = 3 then
		goto Cell_7_8
	end if
	if varA = 4 then
		goto Cell_10_9
	end if
	if varA = 5 then
		goto Cell_13_10
	end if
	if varA = 96 then
		goto Cell_4_14
	end if
	if varA = 54 then
		goto Cell_7_15
	end if
	if varA = 37 then
		goto Cell_10_16
	end if
	if varA = 20 then
		goto Cell_13_17
	end if
	if varA = 21 then
		goto Cell_4_21
	end if
	goto Cell_4_5

Cell_4_21:
	high C.7

	goto Cell_4_5

Cell_13_17:
	low B.0
	high B.1, B.2, B.3

	goto Cell_4_5

Cell_10_16:
	low B.0, B.1, B.3
	high B.2

	goto Cell_4_5

Cell_7_15:
	high B.0, B.1, B.2, B.3

	goto Cell_4_5

Cell_4_14:
	low B.1, B.2
	high B.0, B.3

	goto Cell_4_5

Cell_13_10:
	low B.6
	high B.4, B.5, B.7

	goto Cell_4_5

Cell_10_9:
	low B.5, B.6
	high B.4, B.7

	goto Cell_4_5

Cell_7_8:
	low B.5, B.7
	high B.4, B.6

	goto Cell_4_5

Cell_4_7:
	low B.4, B.5
	high B.6, B.7

	goto Cell_4_5


#no_data	'reduce download time
Voilà à quoi ressemble l'organigramme...
Sans titre 2.jpg

Help... Avez-vous une idée de ma connerie ? (Je crois que c'est le mot juste...)
Merci d'avance...
 

meepmeep

Senior Member
Juste avant, j'avais essayé ce programme qui fonctionnait très bien...
Code:
'BASIC converted from flowchart:
'
'Converted  2016-07-04 at 17:42:32

{ ;Symbols
symbol varA = b0
symbol varB = b1
symbol varC = b2
symbol varD = b3
symbol varE = b4
symbol varF = b5
symbol varG = b6
symbol varH = b7
symbol varI = b8
symbol varJ = b9
symbol varK = b10
symbol varL = b11
symbol varM = b12
symbol varN = b13
symbol varO = b14
symbol varP = b15
symbol varQ = b16
symbol varR = b17
symbol varS = b18
symbol varT = b19
symbol varU = b20
symbol varV = b21
symbol varTEMPBYTE1 = b22
symbol varTEMPBYTE2 = b23
symbol varTEMPBYTE3 = b24
symbol varTEMPBYTE4 = b25
symbol varTEMPBYTE5 = b26
symbol varTEMPBYTE6 = b27
symbol varTEMPWORD1 = w11
symbol varTEMPWORD2 = w12
symbol varTEMPWORD3 = w13
}


main:
	let dirsB = 255
	let dirsC = 8

Cell_7_4:
irin C.0,varA
	if varA = 21 then
		goto Cell_7_8
	end if
	low C.7
	goto Cell_7_4

Cell_7_8:
	high C.7
	goto Cell_7_4


#no_data	'reduce download time
Sans titre 3.jpg
 

PieM

Senior Member
Qu'est ce qui te fait dire : le picaxe est grillé!

le let dirs = 1 ne veut rien dire.
dans le programme le let dirsC = 8 n'a pas de sens:
dirsC= 8 = % 00001000
ça veut dire que C.3 est configurée en sortie, alors que c'est C.7 qui est une sortie
fort heureusement la commande low C.7 ou high C.7 la configure automatiquement.
 
Last edited:

meepmeep

Senior Member
maintenant, qd je veux televerser le programme, il me dit un truc du genre no hardware found et qd je met un pic neuf, ça marche
 

PieM

Senior Member
maintenant, qd je veux televerser le programme, il me dit un truc du genre no hardware found et qd je met un pic neuf, ça marche
Normal ! :)

je m'en doutais... C'est le piège: la commande irin est bloquante. donc le µC tourne en rond en attendant une commande et ne peut être à l'écoute de la broche serin.

faire un hard reset: mettre hors tension ton pic, lancer le téléchargement et remettre sous tension qd la fenêtre chargement apparaît.
Normalement on utilise un timeout de la commande irin, mais pas sûr que ça soit dispo en mode logigramme.
Sinon il y a une astuce que j'avais déjà indiqué. on se contente de lire l'entrée liée au capteur : si elle change d'état, on va sur un sous programme qui lui lance le irin.
on rate la première salve IR mais comme elle se répète, c'est pas grave.
 

meepmeep

Senior Member
Super ! Merci ! Le hard reset et les deux solutions (timeout et lecture de B0) fonctionnent !
C'était bien ça, moi qui croyais que j'avais grillé les µC...

Mais je me pose quand même deux questions...
1- Pour que j'arrête de me faire peur, dans quels cas on risque vraiment de griller un µC (ce qu'il ne faut pas faire) ?
2- Mais comment tu sais tout ça !?!
Merci en tous les cas...
 

chimere322

Senior Member
Super ! Merci ! Le hard reset et les deux solutions (timeout et lecture de B0) fonctionnent !
C'était bien ça, moi qui croyais que j'avais grillé les µC...

Mais je me pose quand même deux questions...
1- Pour que j'arrête de me faire peur, dans quels cas on risque vraiment de griller un µC (ce qu'il ne faut pas faire) ?
2- Mais comment tu sais tout ça !?!
Merci en tous les cas...

Bonjour,

Pour faire au plus simple: http://www.picaxe.com/Datasheet-List
Lire les manuels. C'est mieux que du blabla. Appliquer les bonnes tensions d'alim et bien filtrer sans oublier de séparer en cas de commande en puissance et tirer les GND en câblage en étoile. Respecter les seuils d’intensités en sortie de la bête.
 
Last edited:

meepmeep

Senior Member
Qu'est-ce que tu entends par câblage en étoile pour le gnd ?
Sinon, pour les manuels, j'avais commencé à m'y plonger... merci encore.
 

BESQUEUT

Senior Member
Qu'est-ce que tu entends par câblage en étoile pour le gnd ?
Sinon, pour les manuels, j'avais commencé à m'y plonger... merci encore.
Câblage en étoile : aucune boucle dans aucun circuit, en particulier la masse et l'alim.
En général on part du condo de filtrage principal, puis on fait un arbre qui alimente progressivement chaque composant.
A mon sens, les risques principaux sont :
- erreur sur la tension d'alim,
- court circuit sur une platine partiellement alimentée en 12V,(bien séparer les circuits 5V et 12V)
- tentative de mettre à 1 une sortie qui en fait est reliée à la masse, ou dont la résistance à la masse est trop faible.
- idem réciproquement vis à vis de V+
=> si possible utiliser un circuit "tampon" ou au moins des résistances série.
 

PieM

Senior Member
Oui je pense qu'on a fait le tour des risques.
Je crois qu'au niveau platines des élèves, prévoir systématiquement sur les sorties des R de l'ordre de 220 Ohm mini permet de ne pas griller la puce quelle que soit la mauvaise manip avec CC.

Petite remarque: quand on utilise une sortie MOSFET, la présence d'une R de pulldown de l'ordre de 10k ne gène absolument pas, et est même conseillée!
pourquoi ? bonne question: lors de l'initialisation d'un picaxe, toutes les pins sont mis en entrée, donc haute impédance. Le potentiel n'étant pas défini, un Mosfet ayant sa grille connectée directement peut se mettre en conduction.
(Tous les schémas des docs ne sont pas corrigés en ce sens )
 

chimere322

Senior Member
Bonjour à tous,

Câblage en étoile : aucune boucle dans aucun circuit, en particulier la masse et l'alim.
A prendre en compte avec sérieux.Montage sur table,ça fonctionne et une fois mis en boite gros soucis,parole d'électronicien. La CEM c'est terrible et ne fait pas de cadeaux.

Petite remarque: quand on utilise une sortie MOSFET, la présence d'une R de pulldown de l'ordre de 10k ne gène absolument pas, et est même conseillée!
pourquoi ? bonne question: lors de l'initialisation d'un picaxe, toutes les pins sont mis en entrée, donc haute impédance. Le potentiel n'étant pas défini, un Mosfet ayant sa grille connectée directement peut se mettre en conduction.
(Tous les schémas des docs ne sont pas corrigés en ce sens )
Plus 1 pour PieM, Datasheet constructeur, y'a pas mieux. Certe difficile à digérer pour un amateur même pour un pro,mais c'est le prix à payer.

Une petite parenthèse personnel à l'attention des forumeurs inscrits en tant que DIY. Si aujourd'hui vous faites des montages a base de microcontrôleur,genre machin chip, picaxe, ARM,Atmega, et j'en passe, c'est grâce à des radioamateurs qui ont sué pied et mains pour ce faire une autorité dans la matière.Sans ces gens là, les transistors n'auraient pas évolués. Voir la première calculatrice et les premiers circuits logique a base de lampe. Je pense qu PieM
et d'autres balaises du forum apprécieront.
 
Last edited:

BESQUEUT

Senior Member
Parenthèse pour parenthèse...
J'ai eu un prof de physique (M. Cernesse auquel je rends hommage) qui travaillait en 1947 sur des pointes en contact avec des bouts de germanium...
Il nous a avoué que c'était tellement instable qu'il aurait mieux fait d'inventer un sismographe.
Au final, les Bell's lab sont allés plus vite que lui, mais ça s'est semble-t-il joué à peu de chose...
 
Top