Go Down

Topic: 74HC595 & reboot (Read 2985 times) previous topic - next topic

fred133084

en augmentant c'est maintenant le second registre qui prend le relais ...

68tjs

Soit plus explicite !
Tu augmente quoi ?
Quel est ton schéma ?

Concernant la mise en route du micro-controleur ce ne doit pas être un problème de stabilisation de l'horloge puisque le bootloader est prévu avec les fuses qui vont bien pour avoir une temporisation de 65 ms.
Par contre il  semble me rappeler (je ne retrouve plus l'endroit ou je l'ai lu) que les I/O sont configurées en entrée  haute impédance.
C'est peut-être là l'origine de ton problème : une entrée haute impédance laissée en l'air capte n'importe qui, il faut une résistance de tirage soit à la masse soit au Vcc pour stabiliser.
Être simplement raccordé au 74HC595 n'est pas suffisant car les entrées du 595 sont aussi à haute impédance.

Pour chaque entrée du 595 essaye de placer une résistance de 10 k entre l'entrée et un rail d'alimentation.
Quel rail : s'il faut que les sorties soient à 0 au démarrage ce sera la masse sinon le Vcc.

fred133084

Bonjour,

j'ai suivi ce que tu as dis :


             Capa = 100 nF             R= 10K ohms
GND <----------||-----------|--------/\/\/\----------->Vcc
                                        |     
                                  Reset

j'ai essayé avec un 100 nF c'est pas bon, je suis monté jusqu'a 4µF et idem ou plus exactement le comportement des registres se décale : en fonction de la valeur du condo c'est tel ou tel registre qui "s'allume" (les sorties  sont actives un bref instant).

Je vais tenter tes dernières explications !

fdufnews

#18
Mar 12, 2013, 09:24 am Last Edit: Mar 12, 2013, 09:55 am by fdufnews Reason: 1

Bonjour,

j'ai suivi ce que tu as dis :


             Capa = 100 nF             R= 10K ohms
GND <----------||-----------|--------/\/\/\----------->Vcc
                                        |     
                                  Reset

j'ai essayé avec un 100 nF c'est pas bon, je suis monté jusqu'a 4µF et idem ou plus exactement le comportement des registres se décale : en fonction de la valeur du condo c'est tel ou tel registre qui "s'allume" (les sorties  sont actives un bref instant).

Je vais tenter tes dernières explications !


C'est de la bidouille. Le reset ne modifie pas les sorties comme expliqué précédemment. Il faut être rigoureux.
Pendant la phase d'initialisation on ne maîtrise rien c'est factuel et c'est vrais pour tous les systèmes à base de microprocesseur puisqu'il faut que celui-ci s'initialise d'abord.
Partant de ce constat, il faut faire en sorte que le système intègre cette contrainte dans sa conception. Le plus simple (et le plus sur) c'est de faire en sorte que la puissance ne soit pas appliquée tant que le processeur n'a pas terminé son initialisation. Une fois que le processeur est opérationnel (c-à-d que toutes les sorties sont dans un état connu), il active un relais (électromécanique ou électronique) qui va envoyer la puissance vers les étages de puissance.

fred133084

bon j'ai testé et cela marche pas.

dans ce cas toutes les sorties sont "allumées" :
                   R= 10K ohms
595 Vcc--------/\/\/\----------->Vcc

                                                                     
dans ce cas c'est aléatoire :
                   R= 10K ohms
Gnd--------/\/\/\----------->595 Vcc
                                           
et avec ou sans le pullup sur OE

fred133084



Bonjour,

j'ai suivi ce que tu as dis :


             Capa = 100 nF             R= 10K ohms
GND <----------||-----------|--------/\/\/\----------->Vcc
                                        |     
                                  Reset

j'ai essayé avec un 100 nF c'est pas bon, je suis monté jusqu'a 4µF et idem ou plus exactement le comportement des registres se décale : en fonction de la valeur du condo c'est tel ou tel registre qui "s'allume" (les sorties  sont actives un bref instant).

Je vais tenter tes dernières explications !


C'est de la bidouille. Le reset ne modifie pas les sorties comme expliqué précédemment. Il faut être rigoureux.
Pendant la phase d'initialisation on ne maîtrise rien c'est factuel et c'est vrais pour tous les systèmes à base de microprocesseur puisqu'il faut que celui-ci s'initialise d'abord.
Partant de ce constat, il faut faire en sorte que le système intègre cette contrainte dans sa conception. Le plus simple (et le plus sur) c'est de faire en sorte que la puissance ne soit pas appliquée tant que le processeur n'a pas terminé sont initialisation. Une fois que le processeur est opérationnel (c-à-d que toutes les sorties sont dans un état connu), il active un relais (électromécanique ou électronique) qui va envoyer la puissance vers les étages de puissance.


donc si je comprend bien cela reprend mon idée de transistor piloté par un pin de l'arduino. un thyristor fait l'affaire ?

fdufnews

Quote
un thyristor fait l'affaire ?

Non un thyristor ne fait pas l'affaire. Un thyristor reste enclenché tant qu'il est parcouru par du courant. Donc tu ne pourrais pas le désactiver à la demande.
Déjà est-ce ton circuit de puissance fonctionne en continu ou en alternatif?
Quelles sont les courant mis en jeu en utilisation et au démarrage?
Pour le continu un mosFET ferait l'affaire. Attention au circuit de commande les tensions commutées sont sûrement supérieures aux 5V de l'arduino.
Pour l'alternatif un triac (avec son circuit de commande)  ou un relais statique.
En fait le relais statique est une solution applicable aussi bien au continu qu'à l'alternatif (il existe des modèles pour l'un ou pour l'autre). C'est plus cher mais plus simple pour qui ne veut pas se prendre la tête.
Le relais électromécanique et la solution simple, passe partout et bon marché. Comme c'est un circuit d'activation général, le relais ne commutera pas souvent il pourra durer longtemps. La seul point négatif c'est la puissance nécessaire à son maintient en position active.
Les composant sont à dimensionner en fonction de la tension du courant consommé et du courant d'appel bien entendu.

fred133084

#22
Mar 12, 2013, 10:20 am Last Edit: Mar 12, 2013, 10:24 am by fred133084 Reason: 1
Bonjour,
ce qui pose problème c'est le premier niveau de "puissance" que pilote l'arduino.
Je m'explique :
j'ai trois niveaux de puissance (ce qui n'est pas vrai car un niveau de puissance est considéré comme > à 50V si je ne me trompe, mais admettons).

ground zéro : 5Vcc : l'arduino
niveau 1 : 5Vcc  (masse commune) - périphériques en entrée ou sortie tout autour de l'arduino (dont donc les fameux 595).
niveau 2 : 12Vcc, séparé par optocouleur (masse commune de mémoire - voir mon tonton si c'est pas bon lol) : comprend donc tout ce qui est relais n co pilotant le niveau supérieur
niveau 3 : 220Vac séparé par optocoupleur on est dans les appareils 220V de la maison.

en gros on protège le noyau central d'une panne ou court circuit pouvant l'endommager. Si un truc doit "tomber" il tombe seul et on tente de limiter la propagation du court circuit. (j'espère avoir tout compris ce qu'il m'a expliqué, je raconte peut être des conneries... j'espère pas).

donc si ce premier niveau est "maitrisé" les autres en dépendent donc il n'y aura plus de problème de comportement empirique.

pour le thyristor je trouve qu'il est parfait quand même non ?
lors du reboot de l'arduino il est inactif car pas enclenché par l'arduino et donc il n'alimente  pas en 5V les 595.
une fois l'arduino démarré on peut alors l'allumer tranquilou une fois pour toute et il le reste jusqu'a la prochaine coupure de courant, je pourrais presque le faire via mon multiplexer non ?

le mofset est une bonne piste aussi, cependant il va nécessiter une consommation électrique continue comparé au thyristor non ?

Artouste



donc si je comprend bien cela reprend mon idée de transistor piloté par un pin de l'arduino. un thyristor fait l'affaire ?

bonjour
si tu travaille sur de la basse tension continue, l'ideal est surement un mosfet N en logic commande
ça coute peanuts cacahouètes  :smiley-mr-green: et ça s'interface sans aucun composants supplementaires.
perso c'est ce que j'utilise dans ce genre de cas.

fdufnews

Quote
pour le thyristor je trouve qu'il est parfait quand même non ?
lors du reboot de l'arduino il est inactif car pas enclenché par l'arduino et donc il n'alimente  pas en 5V les 595.

Oui et non. S'il y a reboot sans coupure de l'alimentation le thyristor ne tombe pas. Cas lors de la mise à jour du code par exemple.

fred133084

mais si il tombe pas c'est pas génant non ?
je cherche a protéger le système contre des comportements anarchiques qui surviennent a la mise en tension de l'ensemble.
donc une fois tout le monde est initialisé cela ne pose plus de soucis dans mon cas.
l'arduino meme si il subit une mise a jour de son code il va reprendre sa pile de "commandes" en cours de traitement et finir tranquilou son taf (ça c'est mon code !).
j'ai implémenté le reset par prog, et effectivement lors d'un reset volontaire de l'arduino les registres ne bronchent pas. Ils restent là ou ils en étaient.

...

mais en fait, ma solution n'est pas bonne. Car pendant le reset de l'arduino du coup les actions continues sans fin ! donc j' en vient au mofset. Et effectivement là on controle quand le "niveau de puissance" est alimenté, ou pas. (c'est bien d'écrire et penser en même temps...).

bon en mosfet je suis pas riche ... j'ai :
IRF510
IRL540N

je vais pas loin avec ça.

Artouste



bon en mosfet je suis pas riche ... j'ai :
IRF510
IRL540N

je vais pas loin avec ça.

bonsoir
Tu a besoin de quelle intensité et sous quelle tension en conditions max ?

fred133084

de rien "presque rien" :
5V et qqs mA (de quoi alimenter les optocoupleurs : en simultanés au max je dirais 11 optocoupleurs MOC3041 si je ne m'abuse).

je ne sais plus si du coup cela représente trop de mA que ll'arduino puisse fournir et si du coup il n'y a pas un PNP avant l'optocoupleur !!

Artouste


de rien "presque rien" :
5V et qqs mA (de quoi alimenter les optocoupleurs : en simultanés au max je dirais 11 optocoupleurs MOC3041 si je ne m'abuse).


ok
je mettrais simplement un petit bs170 , c'est pas du Nlogic donc mettre une petite R 10K entre gate et gnd

fred133084

pas de chance ! il faisait pourtant partie de ma liste d'achat mais au dernier moment j'en ai pas pris... ben voila, un truc de plus a rajouter a la prochaine commande... à suivre donc !

Go Up