* *
* *
Electronique
+ Arduino
 -  Bus I2C
+ Divers
+ Game Boy Advance
+ Robotique
+ Z80
Informatique
+ Commande numérique
+ Les DLL
+ Mon Guppy
+ divers
Mathématiques
Astronomie
Webmaster - Infos
Ecrire à Grosse Christophe  Webmestre
Ajouter aux favoris  Favoris
Recommander ce site à un ami  Recommander
Version mobile   Version mobile
Recherche




Préférences

 Nombre de membres 30 membres


Utilisateurs en ligne

( personne )
Interface universelle PC/Bus I2C


Le principe de fonctionnement

L'interface proposée permet d'émuler un bus I2C a partir du port parallèle d'un PC. Cette interface contrôle le bus en mode multi-maitres. Ici , le PC jouera soit le rôle de maitre soit le rôle d'un simple esclave en attente d'un message I2C. Cette interface simple à construire assure des niveaux électriques compatibles avec ceux d'un vrai bus I2C. Le logiciel qui pilote cette interface a été écrit en turbo-pascal mais le listing est facilement transposable dans d'autres languages.Une DLL (16 bits ) pour windows 3.xx est en cours de développement, permettant ainsi de piloter l'interface a partir de Visual Basic ou bien de Delphi.

Schéma

busi2.gif
Schéma électrique

Une analyse rapide du schéma révèle que le circuit doit être alimenté par une alimentation +5V régulée et filtrée.Une led permet de constater la présence du +5V.Attention ! Vu la consommation du montage , il est impossible d'alimenter celui-ci directement à partir du port parallèle. Les broches 1 (strobe) et 14 ( autofeed ) servent a générer les lignes SDA et SCL. Leur signal est inversé grâce aux deux portes IC2 (CD 4001) pour attaquer les bases des transistors T1 et T2.Les résistances R4 et R5 font office de Pull-up sur les lignes SDA et SCL. Celles-ci sont donc maintenue à l'état haut lorsque le bus est au repos. Lorsque les transistors T1 et T2 reçoivent un signal sur leurs bases , les lignes SDA et SCL sont amenées au niveau de la masse. Enfin , les entrées 12 ( Paper empty ) et 10 ( Acknoledge ) du port centronic servent a espionner les niveaux présents sur les lignes SDA et SCL. Les résistances R1 et R2 limitent le courant dans ces entrées.

Réalisation pratique

 pbusi2.gif
Photo du prototype intégrant l'interface et le régulateur de tension

La nomenclature ci-dessous recense tous les composants nécessaires à la construction du prototype présenté sur la photo. Ceci intègre l'interface I2C décrite dans cette page ainsi qu'un régulateur de tension fournissant un niveau +5V régulé et filtré. L'utilisation d'un petit bloc secteur ( 9V DC ou 12V DC 500ma) évite l'utilisation d'un transformateur et d'un pont de diode. Tous les composants prennent ainsi place sur une platine d'expérimentation ELEX N°1. Une prise jack convenable permettra d'y connecter le bloc secteur. Le brochage des modular jack 6P/4C retenu assure la compatibilité avec les kit i2c vendus par SELECTRONIC.
 conecr.gif
Brochage du modular jack vu de dessus

Afin de faciliter la connection des modules à cette interface , j'utilise un code de couleur ( rond rouge vide et carré bleu plein ) afin de distinguer deux types de brochage. La sortie de notre interface est du type rond rouge vide ! Vous vous demandez certainement pourquoi un tel codage ? Les cables 6P4C utilisés étant croisés , il faut donc prévoir sur chaque module deux types de brochage afin de pouvoir constituer une chaine I2C en respectant le principe suivant : On ne peut connecter deux modular qu'à la condition qu'ils aient des codes de couleur différente comme le montre l'exemple suivant ( sinon gare aux court-circuits ! ).Le nombre de modules connectable n'est limité que par la consommation des modules et la longueur totale de la chaine I2C ( environ 20 m ).

 conecs.gif
Diagramme de connections des modules à l'interface

Nomenclature

Résistances :

R1,R6 : 100 Ohm
R2,R3 : 2K2 Ohm
R4,R5,R7 : 4K7 Ohm

Condensateurs :

C1 : 470uF 25V Radial électrochimique
C2 : 100uF 10V Radial électrochimique

Transistors :

T1,T2 : 2N2222A

Circuits intégrés :

IC1 : Régulateur de tension 7805
IC2 : CD4001

Divers :

Une platine d'expérimentation ELEX1
Une led rouge
Une prise centronic DB 25 broches à cabler
une barettes sécables à picot droit.
Une prise jack diamètre ... mm à monter sur châssis
Un petit radiateur.
Deux vis plastiques.
Une prise Modular Jack 6P/4C.
Un cordon avec embouts pour modular jack 6P/4C.

Logiciels

Une unité écrite en Turbo Pascal permet de gérer cette interface. Cette unité est nécessaire au bon fonctionnement de tous les programmes décrit sur ce site .Vous pouvez librement télécharger le source ( BUSI2C.PAS 8Ko ) , ou directement l'unité compilée ( BUSI2C.TPU 10Ko ) a intégrer dans vos projets futurs. Le listing étant documenté , je ne m'attarderai pas sur le fonctionnement de cette unité.

Une DLL ( 16 bits ) est disponible pour ceux qui désirerait programmer sous windows.

Mise en oeuvre et tests

Afin de vérifier que l'interface fonctionne parfaitement , j'ai écrit un petit programme de test. Celui-ci permet à l'aide d'un multimètre de tester pas à pas l'état des lignes SDA et SCL du bus I2C.

Téléchargez le source TEST.PAS 1Ko ( vous devez posséder le fichier BUSI2C.TPU )
Téléchargez le programme de test TEST.EXE 6Ko

 test.gif
Illustration du programme de test

Applications

L'interface proposée ici est la base de nombreux projets faisant appel à des composants i2c. Sur les pages suivantes vous trouverez des applications maisons , des descriptions de kit et plein de programmes a télécharger . Bonne visite !


Date de création : 19/07/2006 @ 15:09
Dernière modification : 31/01/2008 @ 07:42
Catégorie : Bus I2C
Page lue 15836 fois


Prévisualiser la page Prévisualiser la page     Imprimer la page Imprimer la page

react.gifRéactions à cet article


Réaction n°1 

par leon24 le 27/09/2009 @ 17:17

Bonjour,

 

Articles et sujets très intéressants.

 

Dommage que certaines images gif qui documente le sujet ne soient pas accessibles.

 

Cordialement

Modifier Désactiver Supprimer


^ Haut ^

GuppY - http://www.freeguppy.org/    Site créé avec GuppY v4.5.8 © 2004-2005 - Licence Libre CeCILL   GuppY - http://www.freeguppy.org/

Document généré en 0.96 seconde