Ok ! Je n'ai jamais utilisé de shift register donc ça m'intéresse !
Voici the schéma :
Il va falloir codé maintenant (oh lord)..
-----
Ok ! Je n'ai jamais utilisé de shift register donc ça m'intéresse !
Voici the schéma :
Il va falloir codé maintenant (oh lord)..
Petite erreur je pense : le vcc du 74hc595 doit etre relié au 3.3V du raspberry
C'est une méthode simple pour augmenter le nombre de sortie d'un µC (en rajoutant un autre 74HC595, tu as 8 sortie de plus ! )
Le schéma est OK (avec Vcc=3,3V)
La procédure :
GPI01 = 0
GPI02 = 0
1/ GPI03 = 1 ou 0 (data)
2/ GPI01 = 1 (Clk)
3/ GPI01 = 0 (Clk)
4/ goto 1/ 8 fois
5/ GPI02 = 1 (transfert)
6/ GPI02 = 0
NB : GPIO3 et GPIO1, c'est du SPI
NB : A la mise sous tension, l'état du registre est inconnu tant que tu n'as pas fait un transfert (allumage fugitif des LEDs au reset)
La solution ? un GPIOx pour ne valider les sorties qu'après un premier transfert.
PS : R16, C'est le courant dans LED8 .R15, C'est le courant dans LED7
Edit : Tu ne peux vraiment pas utiliser des LEDs bicolores à 3 fils ???? Tu consommes 200mA pour rien.....
PS : je t'avais demandé le schéma de ta carte µC ?
Tu veux le schéma du Raspberry PI v3 ?
Je dois garder ces doubles leds car elles sont couplées à un bouton poussoir.
En gros le projet c'est piloter des relais avec des boutons poussoirs connectés au Raspberry.
Appui sur le BP, variable mise à 0, relais ouvert, led rouge allumée.
Appui sur le BP, variable mise à 1, relais fermé, led bleu allumée.
surtout l'utilisation des GPIO que tu fais
OKJe dois garder ces doubles leds car elles sont couplées à un bouton poussoir.
C'est ça qui est intéressant ! C'est la même sortie pour le relais qui pilote aussi la bicolore !En gros le projet c'est piloter des relais avec des boutons poussoirs connectés au Raspberry.
Pour tes LEDs, tu as fait un test sur un bouton pour déterminer le courant réel nécessaire (en bleu et en rouge) pour illuminer ton bouton ?
A mon humble avis, avec 20mA ... ça va éblouir !
Pour les GPios, je pensais utiliser des Gpios "classique" exemple : gpio17, 27, 22...
J'utilise déja le gpio18 pour de la PWM et les GPio8, 9, 10, 11 pour du SPI.
Pour la luminosité des leds, j'avais prévu de baisser l'intensité.
Après de rapides essais :
La led rouge avec R=600R -> 5mA éclaire comme je le souhaite.
La led bleu avec R=1k -> 1mA! éclaire encore un peu trop..
Ce qui m'interesse, c'est le hardware que tu mets entre les GPIO et tes boutons, relais et autres ...
Tres bien , ça diminue la consommation globale!Pour la luminosité des leds, j'avais prévu de baisser l'intensité.
Après de rapides essais :
La led rouge avec R=600R -> 5mA éclaire comme je le souhaite.
La led bleu avec R=1k -> 1mA! éclaire encore un peu trop..
Entre le Raspberry et les bouton/leds je n'ai rien prévue en hard...
Les relais que j'utilise ont des optocoupleurs en entrées http://www.conrad.fr/ce/fr/product/0...id5xoCsUzw_wcB
C'est une maladie maintenant d'utiliser des machins sans spécifications et avec des trucs inutiles (les photocoupleurs) !
- On ne sait rien du courant d'entrée de la carte
- Pour l'utiliser, faut relier par un strap le 5Vde l'étage d'entrée avec le 5V du relais. Le photocoupleur ne sert plus à rien
Bref, il est probable que les 4 sorties relais et 4 autres permettent de commander directement les quatre couples de NPN du schéma #25 (sans le 74HC04)
De plus, avec un peu de soft (a gérer en interruption avec un timer), tu peux mettre les contacts des 4 boutons sur une seule entrée GPIO (actuellement, tu en utilises 4)
Et oui c'est la facilité !
Les optocoupleurs sont inutiles ? J'ai lu à plusieurs reprises que c'était la meilleur solution pour protéger/isoler le Raspberry.
Je n'ai pas compris le 2eme point. Je pensais connecté directement la sortie du 74HC595 au NPN et au relais (dois-je faire un schéma )
3ème point très intéressant ! Mais du coup je comprends par comment les boutons seront reconnues (pardonnez mon ignorance :$)
Cogite un peu .....
Un relais , c'est un isolement galvanique aussi bon qu'un optocoupleur !
optocoupleur + relais , c'est ceinture ET bretelles
D'autre part, tu mets le jumper/strap sur ta carte pour alimenter les relais en 5V ? Donc tu bypasses l'optocoupleur
C'est bon, mais c'est pour éviter ce genre d'incompréhesion que je t'avais demandé le hardware d'interface de ta carteJe pensais connecté directement la sortie du 74HC595 au NPN et au relais (dois-je faire un schéma )
grossomodo :Mais du coup je comprends par comment les boutons seront reconnues
On met un bouton entre la sortie qui pilote le NPN qui va pas au relais et une résistance de PullUP de 10K
Avec un timer de 50ms, on met à "0" la sortie et on vient regarder l'état de la PullUP , Si c'est "0", c'est que le contact est ON (évidemment , les 4 contacts sont reliés par un ET à diode à la même PullUP .
Evidemment, en faisant ça, on perturbe fugitivement l'affichage de la LED du bouton, mais c'est tellement rapide que ton zoeuil ne voit que dalle !
L'intérêt ?
- On gagne 3 GPIO
- Tout est fait en interruption et pas en pooling dans le "main"
- On peut rajouter facilement un programme anti-rebondissement
Hello !
J'ai fait un petit schéma de ce que j'ai compris sur la gestion des BPs.
Donc récapitulons !
- On mets successivement toutes les 50ms une sortie à 0.
- On lit la PullUp
- PullUp à 0 = appui sur le bouton
On reconnait donc le BP concerné par rapport à la sortie qui a été mise à 0. (Je me comprends.. et vous ?)
dès relâchement du bouton, PullUp à 1, on change la sortie, changement d'état de la led
Je suppose que tes relais, c'est une représentation simplifiée de tes relais avec optocoupleurOn va rentrer dans le détail .- On mets successivement toutes les 50ms une sortie à 0.
- On lit la PullUp
- PullUp à 0 = appui sur le bouton
On reconnait donc le BP concerné par rapport à la sortie qui a été mise à 0. (Je me comprends.. et vous ?)
dès relâchement du bouton, PullUp à 1, on change la sortie, changement d'état de la led
Tu as une variable 8 bits "EtatOld" qui représente l'état de tes voyants (et donc des relais)
Toutes les 50ms (par exemple)
- Tu mets les sorties Q2=0 Q4=1 Q6=1 Q8=1 sans modifier les Q impairs qui commandent les relais)
- Tu mémorises GPIO4 dans une variable bit GPIO4-0
- Tu mets les sorties Q2=1 Q4=0 Q6=1 Q8=1 sans modifier les Q impairs qui commandent les relais)
- Tu mémorises GPIO4 dans une variable bit GPIO4-1
- Tu mets les sorties Q2=1 Q4=1 Q6=0 Q8=1 sans modifier les Q impairs qui commandent les relais)
- Tu mémorises GPIO4 dans une variable bit GPIO4-2
- Tu mets les sorties Q2=1 Q4=1 Q6=1 Q8=0 sans modifier les Q impairs qui commandent les relais)
- Tu mémorises GPIO4 dans une variable bit GPIO4-3
- tu mets EtatOld sur les sorties du HC595 (de manière à restituer l'état normal des voyants)
Maintenant, tu prends les décisions utiles suite aux valeurs lues de GPIO4-0 à GPIO4-3
- Si pas de changement des GPIO4-x -> fin du programme d'interruption
- Si il y a au moins un changement des GPIO4-x , tu changes les bits EtatOld qu'il faut pour activer/désactiver les LEDs et relais
- tu mets EtatOld sur les sorties du HC595 (de manière à mettre l'état nouveau des LEDs et relais)
- Fin du programme d'interruption
NB : le timer à 50ms veut dire qu'il s'écoule au maximum 50ms entre un changement de bouton et sa prise en compte réelle