Go Down

Topic: Boitier diagnostic auto youngtimer (Read 1 time) previous topic - next topic

John_Doe34

Je suis un peu perdu, je vais reformuler comme je l'ai compris entre ce qui est dit et ce qui n'a pas porté à remarque sur mon schéma :
- Le couplage en parallèle des lignes A, B, C et D sont corrects ;
- Il y aurait une diode à mettre sur la ligne entre les deux INH : y a t-il une valeur standard à utiliser ?
- Je n'ai pas fait la mise en parallèle des deux Common Out/In : donc à faire, nous sommes d'accord ?

Autre question : est-il conseillé de multiplier les points de masse ou bien peut-on en mutualiser ? Si oui, y a t-il un état de l'art à respecter à ce sujet ?

aligote

-1  Il y aurait une diode à mettre sur la ligne entre les deux INH : y a t-il une valeur standard à utiliser ?
-2 Je n'ai pas fait la mise en parallèle des deux Common Out/In : donc à faire, nous sommes d'accord ?

Commençons par le plus urgent :

A mon Avis :

-1 NON ! Il ne s'agit pas d'une diode mais d'une fonction logique inverseuse; quand un boitier MUX 1/16 est sélectionné, l'autre ne l'est pas. (revoir mon post précédent).
Par ex pour les adresses entre 0 et 0x0F le bit n°4 est à 0 l'un des Mux est sélectionné pas l'autre; pour les adresses de 0x10 à 0x1F le bit 4 est à 1 et c'est le contraire.
 Cette fonction peut, dans un premier temps être réalisé  par un transistor associé à 2 résistances.

- 2 OUI ! Comme les Mux 1/16 ne sont pas sélectionnés en même temps, il n'y a pas de risque de conflit.

Serge .D

aligote

#62
Oct 12, 2017, 01:17 pm Last Edit: Oct 12, 2017, 05:38 pm by aligote
Bon bien comprendre le fonctionnement des MUX , on peut procéder pas à pas avec seulement un MUX 1/8 des Kits sur boite de connexion associés à  8 Leds et 8 résistances( ex 1 K)  entre les sorties analogiques et la masse pour visualiser les commutations.


Alimenter le CI en 5V, appliquer aussi 5V sur in/out et avec des petits conducteurs connecter successivement les 3 entrées de commande du mux au 5V.

Par ex :
- Tout à 1  la dernière led éclairée (adresse 0x07) (Je viens de corriger)
- Commande "A" seule à 1 les autres à 0
- Commande "B" seule à 1
- Commandes A et B à 1 la commande C à 0
- Commande C à 1 les autres à 0

etc....

Serge .D

aligote

Quote
- 1 Le couplage en parallèle des lignes A, B, C et D sont corrects ;
...............
-2  est-il conseillé de multiplier les points de masse ou bien peut-on en mutualiser ? Si oui, y a t-il un état de l'art à respecter à ce sujet ?
Pour continuer (shéma Mabox Master 2x4076B)
- 1 Le couplage en parallèle des lignes A-B-C-D pour moi OK elles sont bien en parallèle. Il reste que j'aurais envisagé de les connecter directement aux lignes digitales de l'arduino sans registre 74HC595. Il faudrait commander les bornes 15 inhibit l'une directement par une sortie digitale de l'arduino que nous pouvons appeler E; l'autre borne 15 après insertion d'un circuit pour l'inversion. (signal E inversé)
- 2 En principe on relie sur les mêmes lignes les masses des circuits logiques (ils ne sont pas nombreux ici) en reliant a part si possible les lignes de masse pour l'analogique.
- Quelque chose que je ne comprend pas non plus, c'est la liaison entre A2, D10 de l'arduino avec  Q2 et DS du registre puis O/I de l'un des 4067

Serge .D

John_Doe34

Je pense avoir succinctement compris ce qu'est un inverseur logique grâce à un support de cours vulgarisant le discours.

En cherchant, j'ai trouvé le 74HC04 qui ferait l'affaire : j'ai repris le schéma avec le 74HC595 du message #58 et je l'ai incorporé. C'est d'ailleurs ce schéma sur lequel je vais dorénavant travailler et laisser de tomber le deuxième 74HC595.
Sur la datasheet du 74HC04 est indiqué un condensateur sur le montage, j'ai fait de même.


Serge, je viens de lire ton tout dernier post mais j'avais déjà fait le schéma ci-joint juste avant.
Je vais de ce pas retravailler le schéma avec tes recommandations.

Concernant ton dernier point :
- Sur la datasheet du CD4067B, les 2 Common I/O sont en parallèle puis une liaison est faire (ci-joint le fichier CD4067B - Common IO.png dans lequel on voit une petite flèche : j'en ai déduis qu'il fallait le relier sur une E/S du 74HC595) ;
- Pour DS et D10... Euh, je ne sais pas... :( J'ai dû voir cela quelque part dans un tuto et ai reproduit bêtement cette liaison;
- Pour moi A2 est vide.

John_Doe34

J'ai retravaillé le schéma en supprimant le 74HC595 et en mutualisant les masses.
A vos commentaires ! :)

aligote

Cela avance ....

Il en reste encore un peu :

- Il manque la commande de sélection des mux 1/16 : borne 15 de celui du haut à relier à une borne de commande de l'arduino .... on peu commencer par envisager par ex A1 libre qui serait programmé en sortie digitale. (prévoir de réorganiser tout cela en changeant les n° des bornes arduino pour simplifier le programme et pour le passage en 15V)
- Il faut relier la borne 1 des Mux (I/O) à une entrée analogique. Par ex A2. Ensuite au passage au 15V prévoir un diviseur de tension.
- On pourrait penser utiliser pour les portes inverseuses (entre les bornes 1 Inhibit) du genre "collecteur ouvert" ainsi les portes inutilisées serviraient à ce moment la comme translation de niveau logique quand il faudra passer au 15V. Dans ce cas il faut mettre une résistance de tirage au Vcc.
- Pour le Mux du bas, certaines E/S analogiques ne sont utilisées (5). Si elles ne sont pas utiles autant prévoir pour les n°TG11,12,13,14,15. le programme sera plus simple à écrire.
Je n'ai pas du tout regardé le reste du câblage (afficheur etc)

Serge .D

John_Doe34

Il y a une chose qui me chiffonne...
Si j'ai bien compris, les E/S digitales ne comprennent que des valeurs booléennes, des états soit à 0, soit à 1.
Les E/S analogiques, avec un savant produit en croix.
Sur les E/S des CD4067B, je vais avoir des données en analogique. Or les lignes A, B, C et D sont reliées à des E/S digitales de l'Arduino.

Comment Arduino va convertir/comprendre l'information ?

Serge, je reprends ton message demain et proposerai une nouvelle version du schéma.
Merci encore.

aligote

Une E/S d'arduino est , de base digitale : elle fourni comme sortie soit 0V soit 5V ou bien elle reçoit comme entrée soit 0, soit 1 selon le niveau de tension.

Certaines (A0 ...) peuvent aussi; à la demande; se comporter comme des entrées analogiques. Dans ce cas elles peuvent lire - comme entrée - une valeur analogique (entre 0 et 5V) qui sera codée sur 10 bits.

Pour obtenir le fonctionnement en entrée analogique pour A0, il faut utiliser analogRead(A0):

int Valeur;
Valeur =analogRead(A0);


Par exemple une tension de 0V serait acquise comme valeur binaire 00 0000 0000
Par exemple une tension de 5V serait acquise comme valeur binaire 11 1111 1111 (1023 en décimal)
Donc on peut obtenir 1024 valeurs différentes (10 bits)

Le calibre 5V peut éventuellement être modifié par programme en changeant la référence du convertisseur analogique digital.

Serge .D

al1fch

#69
Oct 13, 2017, 08:40 am Last Edit: Oct 13, 2017, 08:46 am by al1fch
Bonjour
Quote
Sur les E/S des CD4067B, je vais avoir des données en analogique. Or les lignes A, B, C et D sont reliées à des E/S digitales de l'Arduino.

Comment Arduino va convertir/comprendre l'information ?
Les entrées A, B, C et D du CD4067 reçoivent d'Arduino une information numérique permettant de sélectionner l'une des  8 voies analogiques. du multiplexeur.
L'Arduino va donc envoyer en numérique sur 4 bits (A,B,C,D) le numéro de la voie analogique qu'il veut sélectionner dans le CD4067. ABCD est la 'commande de l'aiguillage'
La seule liaison analogique entre le CD 4067 et l'Arduino se fait avec la broche 1 du CD 4067.
Voir içi une description du fonctionnement du CD4067

aligote

..............
Les E/S analogiques, avec un savant produit en croix.
Sur les E/S des CD4067B, je vais avoir des données en analogique. Or les lignes A, B, C et D sont reliées à des E/S digitales de l'Arduino.
......................;

Je n'avais pas bien vu la confusion entre analogique et digital. al1fch m'a alerté.
Le CD4067B se comporterait un peu comme un commutateur qui sous contrôle d'une information digitale sur ses entrées A,B,C,D aiguille une tension venant d'une borne parmi 16 vers une borne analogique commune.

Le travail de l'arduino est de
-1 sélectionner la voie grâce à un code binaire qu'il doit fournir. Comme il y a 16 voies le code doit être disponible sur 4 conducteurs.
- 2 Faire la conversion de la tension analogique reçue sur la voie précédemment sélectionnée en la recueillant avec un analogRead(xx);

Relire les tutos ...

Serge .D

John_Doe34

A la relecture de mon dernier message, je me suis rendu-compte qu'il en manquait une partie (ma pensée est allée plus vite que mes doigts).

Le tutoriel du Carnet du Maker, je n'ai pas d'excuse : je l'ai ouvert en permanence depuis plusieurs jours et là, je me suis lancé sans le regarder...

La bonne excuse est que j'ai la tête dans le guidon avec ce projet :)

Ci-après le schéma révisé :
- la borne 15 du MUX 1/16 supérieur est relié à A1 et j'ai gardé sa dérivation vers le MUX 1/16 inférieur en passant par le 74HC04 ;
- j'ai rajouté un pont diviseur en prenant comme valeur le Vmax des MUX, à savoir 18V. Pour descendre à 5V, j'ai pris un coefficient diviseur de 4  en plliquant la formule suivante :

         Vsortie = Ventrée * (R2 / (R1 + R2)

En me prêtant à l'exercice des tutoriels Mesurer la tension sur la broche VIN d'une carte Arduino / Genuino et La conversion analogique / numérique avec Arduino / Genuino, voici ce que j'obtiens :

L'auteur choisi arbitrairement pour R2 une résistance de 1K ohms ou 10K ohms. Je prends 1K omhs.
J'ai donc :
         R1 = ((Ventrée / Vsortie) * R2) - R2
Soit     R1 = ((18 / 5) * 1000) - 1000
Soit     R1 = (3.6 * 1000) - 1000
Soit     R1 = 3600 - 1000
Soit     R1 = 2600.

Je choisis d'arrondir la résistance au supérieur et d'en prendre une de 3.3K ohms.

Pour obtenir le coefficient diviseur :
         Coef = R2 / (R1 + R2)
Soit     Coef = 1000 / (3300 + 1000)
Soit     Coef = 1000 / 4300
Soit     Coef = 0.23
Question : est-ce que je peux arrondir à 0.25 ?

Les 2 bornes 1 de chaque MUX 1/16 sont en parallèle : j'ai fait une dérivation pour les connecter sur A2.


aligote

Rapidement ....
Le diviseur de tension est à prévoir sur les bornes I/O des Mux (borne 1) et pas la borne 15.
(permutter 1 et 15)

Serge .D


John_Doe34

Le schéma précédent est faux :(
J'en suis navré, erreur d'inattention : j'ai une ligne qui arrive sur D1 de l'Arduino (TX) et j'ai lu dans "Arduino pour les Nuls" (on ne rigole pas, merci) que D0 et D1 (respectivement RX0 et TX0) n'était pas utilisable dans la mesure où l'on se servait de la console série.
C'était d'ailleurs en cette prévision que j'ai pris le partie de relier tous les boutons-poussoirs sur une seule ligne analogique.

Et du coup... Je n'ai plus assez d'E/S digitales pour relier tout ce petit monde.
Soit je réintroduis le 74HC595 pour y piloter le GLCD, soit je fais des compromis :
- suppression de la LED et je déporte une alerte visuelle sur le GLCD ;
- je détourne les E/S analogiques en utilisation digitale.

Qu'en pensez-vous ?



Go Up