je vais vous présenter ici la partie Interface des Contacts.
Cette partie sert à récupérer l'état des contacts de tout le flipper et les transmet au PC.
Le microcontrôleur de l'interface des contacts scrute tous les contacts et ne communique avec le PC que pour lui indiquer que des contacts ont changés. Ainsi le débit de données utilisé est très faible et paradoxalement le temps de réponse est très élevé, car moins de travail est nécessaire pour "trier les données" entre celles utiles (un contacts modifié) et celles ne servant à rien.
Un premier prototype a été réalisé avec une carte microcontrôleur et une carte de câblage rapide.
Voici les fonctions supportées :
-gestion de la matrice des contacts (8 lignes x 8 colonnes).
-gestion des 8 contacts directs ("dedicated grounded switches")
-gestion de 8 contacts directs supplémentaires, utilisés sur les WPC Fliptronic.
Détails du fonctionnement :
Le PIC balaye les colonnes et lit l'état des lignes à la recherche d'un contact modifié. C'est le coeur du programme du PIC; En clair : il passe plus de 95% de son temps à surveiller la matrice. Dès qu'un contact diffère depuis la dernière lecture, la mémoire est mise à jour et la colonne (comprenant le contact) est transférée au PC.
Les contact généraux sont gérés par un circuit d'extension : le MCP23017 qui communique par le bus I²C avec le microcontrôleur PIC. Ce circuit "ajoute" 16 pattes au PIC et est indépendant dans la surveillance de ces contacts. En effet, il n'informe le PIC que lorsqu'un contact a changé d'état. Le PIC recopie alors la donnée et la transfert au PC.
Toute la carte fonctionne en 5V ainsi que la matrice et les contacts généraux. Ceci permet de relier directement toutes les lignes sur les entrées des composants sans devoir faire d'adaptation (augmentation du nombre de composants et de la complexité de la carte). De plus les circuits comportant en interne les résistances nécessaire au fonctionnement des contacts, ça simplifie encore le système en diminuant d'autant le nombre de composants.
Des essais sur un vrai plateau ont été faits et sont très concluants.
La carte me permettant de faire mes essais sur mon bureau et en fonctionnement sur le Terminator2.


Voici la vidéo des test du premier prototype : http://www.youtube.com/watch?v=EpeeBJjY3AM (désolé pour la qualité pourrie de la vidéo. si vous voulez une voix OFF, tapez 1, si vous voulez une video de meilleure qualité tapez 2

Je tiens à préciser que je tente de limiter le nombre de composants au strict minimum (et donc le prix, et donc la complexité du système). Par exemple voici quelques composants et spécificités présents sur les CPU qui ne le seront pas ici :
- les résistances sur les fils des contacts (jusqu'à 4 par ligne sur les WPC).
- les diodes (sur la carte).
- les amplificateurs (lm339).
- alimentation en 12V des fils des contacts.
- tout circuit logique (TTL ou CMOS).
- circuit de reset.
[AJOUT du 5/7/07]
La première carte prototype a été réalisée :
Réalisation du circuit imprimé et photo du premier essai raté avec la 2e carte réussie.


Côté pile pendant le soudage des supports et composants; et le côté face.


Liste des composants présents sur cette carte :
- microcontrôleur PIC 16F877A
- 2 circuits d'extension MCP23017
- un support (en bas a droite) pour le branchement du convertisseur.
- 2 optocoupleurs juste à sa gauche.
- Régulateur d'alim 5V, fusible et zener de protection.
- quelques condos sur les pistes d'alim, quelques résistances.
C'est tout !
Cette carte fait 100*200mm, dans le but de pouvoir en tirer 3 sur une plaque vierge de 200*300...

[/AJOUT du 5/7/07]
[AJOUT du 9/7/07]
La carte étant terminée, je vais vous la présenter :

en haut a gauche le bornier 3 fils sert à l'alimentation des circuits de la carte. Le bornier du milieu est la masse, celui de gauche permet l'alimentation directement en +5V et celui de droite entre 7V et 30V.
Vient en dessous le régulateur 7805 qui rabaisse la tension à 5V si la carte est alimentée entre 7 et 30V.
Sous ce régulateur, un petit fusible associé à une diode zener de 5.6V (commandée, pas reçu donc pas soudée) pour la protection en cas de surtension ou d'inversion de polarité.
Puis un condensateur de 1000µF lissant la tension pour une alimentation bien propre et bien stabilisée.
Les 2 circuits intégrés verticaux à droite de l'alimentation sont les MCP23017, circuits d'extension au microcontrôleur. Ils communiquent avec lui grâce au bus I²C et l'informent d'un changement sur une de leurs entrées grâce à des sorties d'interruption (2 par circuit).
Le bus I²C communique à la vitesse de 1Mbps (plus de 128.000 octets par seconde).
Le microcontrôleur à droite est cadencé par le quartz à une fréquence de 20MHz (le maximum supportable par ce CI). Un condensateur a été rajouté de l'autre côté de la carte, une nouvelle fois pour des raisons de stabilité d'alimentation.
La rangée de picots sur le haut de la carte correspond à toutes les entrées/sorties possibles offertes par l'interface. Elles peuvent soit être utilisées de façon matricielle, soit une à une indépendamment.
En bas à droite de la carte nous observons le convertisseur USB/Série enfiché sur un support et un petit condensateur pour le lissage du +5V venant de l'USB.
La communication entre le PIC et le PC passe par ce convertisseur à une vitesse de 38400bps, avec un peu de travail elle pourra encore être augmentée.
Viennent ensuite et enfin les 2 optocoupleurs qui font l'isolation électrique totale entre la carte et le convertisseur USB. Ils permettent également la communication entre le PIC et le convertisseur. Ainsi, si une surtension intervient sur la carte, le convertisseur sera protégé, et également votre cher PC

Etant donné qu'aucun typon n'est parfait, le miens n'a pas échappé à la règle. 2 petites erreurs m'ont obligé à détourner une piste et à créer 2 petits ponts sous la carte. Promis le prototype 2 sera NICKEL

[/AJOUT du 9/7/07]
Pour toute question, complément d'info ou suggestion : ne vous privez pas !!!
@+