Visiteurs :

 
 
.: http://kudelsko.free.fr :.
 

 

Google
 
Navigation :

 Page d'accueil


Programmateurs :
 Prog PIC / EEPROM Centronic
 Prog PIC / EEPROM RS232
 Prog PIC / EEPROM USB V2
 Prog 68HC11F1

Instruments de mesure :
 Oscilloscope pour PC  
 Testeur de composants  
 Inductancemètre USB 
 Isolateur optique oscilloscope
 Capacimètre USB 
 Analyseur logique 30MHz
 Loupe vidéo 
 Générateur de fonctions DDS
 Volt / Amp. Mètre LCD USB
 Oscillateur 1kHz - 68MHz

Projets Divers :
 Horloge / Calendrier
 Serrure à iButton
 Serrure à transpondeurs
 Décodage trame UM3750

 
Commutateur IR dual
 Gradateur IR dual
 Récepteur IR/PC 16 canaux 
 Déport IR à courant porteur  
 Décodeur 2 ou 4 canaux HF 
 Récepteur HF pour K6706B  
 Disjoncteur différentiel  

Interfaces Réseau WIFI :
 Module ESP8266

Domotique :
 Présentation des dispositifs
 Interface PC domotique
 Contrôleur Telis 4 Dual
 Contrôleur Velux Trio
 Emetteur HF - RS232
 Récepteur HF
 Contrôleur Ethernet

Ensemble domotique :
 Présentation des dispositifs
 Power Switch IR - 3 canaux
 CPL émetteur
 CPL récepteur
 Power Clock USB 

Interfaces Réseau Ethernet :
 ENC28J60, Config. et Delphi  Interface Ethernet 8 in 8 out
 Interface Ethernet 16 sorties
 Interface Ethernet LCD
 Interface Eth. n°1 multi IN-OUT
 Interface Eth. n°2 multi IN-OUT
 Interface Eth. LCD Graphique

Interfaces USB :
 Interface USB à 16 sorties
 Interface LCD USB
 Récepteur IR USB
 Interface Therm/Hygro USB
 
Interface univer. USB/RS232 
       Présentation
       Réalisation
       Programmation
       Utilisation en USB
       Utilisation en RS232
       Datasheets
 Interface USB 16 out, 8 in
 Interface LCD graphique USB 
 Timer USB programmable 

Interfaces RS232 :
 LCD - RS232
 CAN 12 bits - RS232 et //
 Clavier RS232 et //
 LCD 4 x 40 - RS232
 OSD - RS232
 
Interface univer. USB/RS232
      
Présentation
       Réalisation
       Programmation
       Utilisation en USB
       Utilisation en RS232
       Datasheets 
 Afficheurs 7 segments RS232
 Interface LCD graphique 
 Interface OSD - RS232 V2 

Applications Vidéo :
 Stabilisateur de recopie vidéo
 Générateur de mires
 Transcodeur PAL-RVB / SECAM
 Distributeur audio-vidéo 1-3  
 Commutateur Péritels 4 / 2 
 PiP Box  

Applications Audio :
 Commutateur audio 4 voies

Téléphonie :
 Sélecteur lignes téléphoniques
 Sélecteur lignes téléphoniq. V2
 Sélecteur lignes téléph. V3  

Mesures dans l'environnement :
 - température;
 - pression;
 - humidité relative;
 - orientation...
 Thermo-PC Dual
 Thermomètre
 Baromètre
 Météo OSD
 Thermomètre pour PC
 Boussole électronique 

Chargeurs/déchargeurs accus :
 Chargeur Accus R6 - 6F22

Logiciels :
 Atténuateurs HF
 Réseau d'adaptation résistif

Articles de la presse :
 Mipot HF
 Transformateur
 Radiateur
 Mosfet
 Alimentation
 AOP
 AOP2
 Applications des régulateurs
 Convertisseurs de tension
 Convertisseurs DC -DC
 Les filtres électroniques
 Le NE555
 Le triac
 Le réglage offset des AOP
 Les régulateurs
 
Les multiplieurs

L'indispensable :
 Code couleur résistances
 Valeurs normalisées résistances
 Code couleur condensateurs

Publicité :

 

 

Utilisation de l'interface en mode USB


  Connexion de l'interface :

      L'interface est conçue pour s'interconnecter directement à l'un de vos ports de communication USB présents sur votre ordinateur au moyen d'un cordon USB A mâle - USB B mâle.


Cordon USB A mâle - USB B mâle.

 


  Combinaison VID et PID :

       Dans le cadre de ce projet, nous utilisons un driver de type HID (Human Interface Device) utilisé pour tous les périphériques de type souris ou clavier USB du commerce. L'avantage est sa simplicité de mise en oeuvre car le périphérique de type HID est automatiquement reconnu par Windows et ne nécessite aucun driver exotique.

       Tous les périphériques USB sont pourvus d'une combinaison unique prenant la forme de deux nombres. Le premier nombre VID identifie le fabricant du produit, ici Microchip et le second PID représente l'identificateur du produit. Dans le cadre de ce projet nous avons utilisé le VID de Microchip librement disponible 1240 et comme PID nous avons pris arbitrairement la valeur 9. N'oubliez pas que le PIC et le logiciel sous Windows doivent utiliser la même combinaison VID/PID.


  Enumération :

       Avant que le PC ne puisse utiliser le périphérique USB, il faut qu'il y ait eu ce que l'on appelle une énumération. La première étape de ce processus se fait directement au coeur du PIC18F4550. C'est par le biais de résistances de Pull-Up ou Pull-down (internes au PIC) que le dit circuit signale sa présence sur le bus USB.
        En réaction à ce changement d'état de la ligne de donnée, le PC essaie par le biais d'un protocole définit, de découvrir quel périphérique a été connecté au port USB.
       Au delà des données classiques telles que le VID et PID, le PIC18F4550 indique sa "classe", avec le numéro de version, un nom, etc...
       Le PIC18F4550 se voit alors attribuer une
adresse USB, ce qui permet au PC de le différentier des autres appareils USB. Sur la base des données obtenues, le PC détermine le bon pilote qu'il lui faut pour activer et dialoguer avec l'interface équipée du PIC18F4550.


 
Interface en mode de communication USB :

    Hors tension, retirez le cavalier SW2 de manière à ne pas court-circuiter les deux picots. Le mode de communication USB est ainsi initialisé dès la mise sous tension de la platine.

 

 


 
Connexion pour la première fois de l'interface USB au PC :

   La détection du périphérique USB s'effectue dès la toute première connexion de l'interface à votre PC.


      Après l'installation du pilote, l'interface est
immédiatement fonctionnelle et vous pouvez désormais utiliser le logiciel sous Windows pour piloter votre interface.



  Protocole utilisé pour dialoguer avec l'interface en mode USB :

      Afin de piloter sélectivement les entrées et sorties de l'interface, différentes commandes simples d'utilisation ont été définies.

      Dès sa mise sous tension, l'interface transmet au PC
les données correspondantes aux différents états logiques présents sur les 16 entrées J1 et J2.  L'interface envoie également les données issues du convertisseur analogique - numérique 12 bits (CAN)  des entrées J5 et J6. A titre indicatif, si le convertisseur 12 bits n'a pas été placé sur sont support de circuit intégré, les valeurs reçues par le PC sont systématiquement 4096.


       La communication étant bidirectionnelle entre l'interface et la PC, nous devons considérer deux cas de figures :
            pour une communication de l'interface (PIC) vers le PC, l'instruction est affectée aux cases mémoires
FBufferIn[1], FBufferIn[2] et FBufferIn[3].     
           
pour une communication du PC vers l'interface (PIC), l'instruction est affectée aux cases mémoires FBufferOut[1], FBufferOut[2]...... FBufferOut[21].
 

      Nous allons expliciter ci-dessous l'ensemble de ces commandes...

 
    Transfert de données de l'interface (PIC)  vers le PC (transfert toutes les 5ms) :

        8 entrées numériques J1 :

         Le PC reçoit deux octets :
           -
FBufferIn[1] = 1 indique que l'on a reçu l'octet présent sur les 8 entrées de J1.
           - 
FBufferIn[2] contient l'octet (compris entre 0 et 255) présent sur les 8 entrées de J1.


        8 entrées numériques J2 :

         Le PC reçoit deux octets :
           -
FBufferIn[1] = 2 indique que l'on a reçu l'octet présent sur les 8 entrées de J2.
           - 
FBufferIn[2] contient l'octet (compris entre 0 et 255) présent sur les 8 entrées de J2.


        Entrée analogique J5 codée sur 12 bits :

        Le PC reçoit trois octets :
           -
FBufferIn[1] = 3 indique que l'on a reçu deux octets du convertisseur depuis l'entrée J5.
           - 
FBufferIn[2] contient le LSB de la valeur numérisée par le CAN sur l'entrée J5.
           - 
FBufferIn[3] contient le MSB de la valeur numérisée par le CAN sur l'entrée J5.
          Pour reconstituer la valeur numérisée sur 12 bits, il suffit d'appliquer la relation :
           Valeur sur 12 bits de J5 = (256 x
FBufferIn[3] ) + FBufferIn[2]

 

        Entrée analogique J6 codée sur 12 bits :

        Le PC reçoit trois octets :
           -
FBufferIn[1] = 4 indique que l'on a reçu deux octets du convertisseur depuis l'entrée J6.            - FBufferIn[2] contient le LSB de la valeur numérisée par le CAN sur l'entrée J6.
           - 
FBufferIn[3] contient le MSB de la valeur numérisée par le CAN sur l'entrée J6.
          Pour reconstituer la valeur numérisée sur 12 bits, il suffit d'appliquer la relation :
           Valeur sur 12 bits de J6 = (256 x
FBufferIn[3] ) + FBufferIn[2]

 

 

    Transfert de données du PC vers l'interface (PIC) :

        Afficheur LCD :

        1ère ligne du LCD :
         On affecte la valeur
1 à la case mémoire
FBufferOut[1] = 1.
          L'ensemble des
N caractères à afficher sur le LCD sont placés dans les différentes cases mémoires de FBufferOut[2] à FBufferOut[N+1]. Avec N compris entre 1 et 20.


 
        2ème ligne du LCD :
          On affecte la valeur
2 à la case mémoire
FBufferOut[1] = 2.
           L'ensemble des
N caractères à afficher sur le LCD sont placés dans les différentes cases mémoires de FBufferOut[2] à FBufferOut[N+1]. Avec N compris entre 1 et 20.

 
 
        3ème ligne du LCD :
          On affecte la valeur
3 à la case mémoire
FBufferOut[1] = 3.
           L'ensemble des
N caractères à afficher sur le LCD sont placés dans les différentes cases mémoires de FBufferOut[2] à FBufferOut[N+1]. Avec N compris entre 1 et 20.

          4ème ligne du LCD :
          On affecte la valeur
4 à la case mémoire
FBufferOut[1] = 4.
           L'ensemble des
N caractères à afficher sur le LCD sont placés dans les différentes cases mémoires de FBufferOut[2] à FBufferOut[N+1]. Avec N compris entre 1 et 20.

 
 
        Effacement du LCD :
          On affecte la valeur
5 à la case mémoire
FBufferOut[1] = 5.
          L'écran du LCD est aussitôt effacé.

 

       Sorties PWM sur J7 :

        On affecte la valeur 6 à la case mémoire FBufferOut[1] = 6.
        La valeur du rapport cyclique doit être contenue dans la case mémoire
FBufferOut[2].

     Exemples : FBufferOut[2] = 0 pour un rapport cyclique de 0% sur la sortie J7.        
                           
FBufferOut[2] = 255 pour un rapport cyclique de 100% sur la sortie J7.
 

 

       Sorties PWM sur J8 :

        On affecte la valeur 7 à la case mémoire FBufferOut[1] = 7.
        La valeur du rapport cyclique doit être contenue dans la case mémoire
FBufferOut[2].

     Exemples : FBufferOut[2] = 0 pour un rapport cyclique de 0% sur la sortie J8.        
                           
FBufferOut[2] = 255 pour un rapport cyclique de 100% sur la sortie J8.
 


 
      Sortie numérique J3 :

        On affecte la valeur 8 à la case mémoire FBufferOut[1] = 8.
        La valeur de l'octet à appliquer sur les 8 sorties de J3 est contenue dans la case mémoire FBufferOut[2].

     Exemples : FBufferOut[2] = 0 les 8 sorties de J3 sont à l'état bas.
                           
FBufferOut[2] = 255 les 8 sorties de J3 sont à l'état haut.
 

 
 
      Sortie numérique J4 :

        On affecte la valeur 9 à la case mémoire FBufferOut[1] = 9.
        La valeur de l'octet à appliquer sur les 8 sorties de J4 est contenue dans la case mémoire FBufferOut[2].

     Exemples : FBufferOut[2] = 0 les 8 sorties de J4 sont à l'état bas.
                           
FBufferOut[2] = 255 les 8 sorties de J4 sont à l'état haut.
 

 
 
      Sortie numérique J9 :

        On affecte la valeur 10 à la case mémoire FBufferOut[1] = 10.
        La valeur de l'octet à appliquer sur les 8 sorties de J9 est contenue dans la case mémoire FBufferOut[2].

     Exemples : FBufferOut[2] = 0 les 8 sorties de J9 sont à l'état bas.
                           
FBufferOut[2] = 255 les 8 sorties de J9 sont à l'état haut.
 

 
 
      Sortie numérique J10 :

        On affecte la valeur 11 à la case mémoire FBufferOut[1] = 11.
        La valeur de l'octet à appliquer sur les 8 sorties de J10 est contenue dans la case mémoire FBufferOut[2].

     Exemples : FBufferOut[2] = 0 les 8 sorties de J10 sont à l'état bas.
                           
FBufferOut[2] = 255 les 8 sorties de J10 sont à l'état haut.
 

 
 
      Sortie numérique J11 :

        On affecte la valeur 12 à la case mémoire FBufferOut[1] = 12.
        La valeur de l'octet à appliquer sur les 8 sorties de J11 est contenue dans la case mémoire FBufferOut[2].

     Exemples : FBufferOut[2] = 0 les 8 sorties de J11 sont à l'état bas.
                           
FBufferOut[2] = 255 les 8 sorties de J11 sont à l'état haut.


 

       Sorties numériques optionnelles complémentaires :

       Le connecteur K4 de l'interface permet d'ajouter trois autres PCF8574P supplémentaires à l'interface. Pour ce faire, vous devrez réaliser une carte fille vous permettant l'ajout de ces 3 nouveaux composants. Vous n'aurez aucune difficulté à câbler ces 3 nouveaux circuits en vous aidant du schéma électrique de l'interface.
       Le câblage des entrées A0, A1 et A2 des PCF8574P et la commande de ces 3 nouveaux circuits s'effectuent en utilisant les informations ci-après.


       Le
premier PCF8574P est câblé avec les broches A2 = +5V et A1 = A0 = GND.
       Le contrôle de ce dernier par la liaison USB s'effectue comme précédemment mais en affectant la valeur
13 à la case mémoire
FBufferOut[1] = 13.

       Le second PCF8574P est câblé avec les broches A2 = +5V, A1= GND et A0 = +5V.
       Le contrôle de ce dernier par la liaison USB s'effectue en affectant la valeur
14 à la case mémoire
FBufferOut[1] = 14.

       Le troisième PCF8574P est câblé avec les broches A2 = +5V, A1= GND et A0 = +5V.
       Le contrôle de ce dernier par la liaison USB s'effectue en affectant la valeur
15 à la case mémoire
FBufferOut[1] = 15.

 
       Désormais l'interface universelle permet de gérer un total de 64 sorties numériques au lieu des 40 proposées par défaut.

 


 
Logiciel et son code source dédié à la gestion de l'interface en mode USB :

       Afin de piloter simplement l'interface USB via votre PC, un petit programme écrit sous
Borland Delphi (compatible avec la version 5, 6 et 7 de Delphi) est disponible en libre téléchargement.
      Ce dernier génère automatiquement
les différentes instructions présentées ci-dessus.

      Les SE compatibles avec ce programme sont
:   8, Seven, Vista et XP.
      ll n'a pas été testé sous 2000, Me et 98SE.


 

         Téléchargement du soft compilé EXE : 484ko    
 

       L'ensemble du code source de ce programme est librement téléchargeable ci-après. Le code source est commenté et vous n'aurez aucun mal à l'adapter selon vos besoins.

    
  Téléchargement de l'ensemble des fichiers sources au format Borland Delphi : 126ko  


      Téléchargement du code source au format TEXTE :
22 ko

 

       Les commandes sont extrêmement simples à maitriser grâce à l'usage d'une
DLL (Dynamic Link Library) spécifiquement dédiée à la communication USB (mcHID.dll). N'oubliez pas de placer cette DLL dans le même répertoire que votre programme exécutable. Le fichier mcHID.dll est disponible en téléchargement avec le fichier exécutable (EXE) depuis le lien précédent : "Téléchargement du soft compilé EXE".

      Sachez pas ailleurs que cette DLL peut-être utilisée avec d'autres logiciels de développement, tels que Borland C++, Visual Basic, Visual C++ et bien d'autres encore...

 

 


 


 

 

 


 


 


 



Copyright © 2000 - 2016. F.KUDELSKO. Tous droits réservés.
Reproduction interdite sans autorisation.