Carte d'interface USB - PIC18F2550: LCD, 4E/4S Numériques 1E Analogique


  Catégorie : Réalisation de cartes électroniques   Mise à jour le : 22/07/2011 17:43
  Ajouté par : Technologuepro   Lectures : 98565
  Commentaires : 17   [ Poster un commentaire ]   Note : 
  

La carte d’interface USB à base du PIC18F2550 que je vous propose est pourvue de 4 canaux d'entrée numériques (interrupteurs) et 4 canaux de sortie numériques (LEDs). En outre, vous avez à votre disposition une entrée analogique avec une résolution de 10 bits et un afficheur LCD 2x16. Cette exemple vous permettra de créer n’importe quelle carte interface USB avec votre PC dont le nombre d'entrées/de sorties peut être augmenté.

carte d’interface USB à base du PIC18F2550

Toutes les routines de communication sont mémorisées dans une Dynamic Link Library (DLL). Écrivez des applications Windows (98 SE, 2000, ME, XP) sur mesure en Delphi, Visual Basic, C++ Builder ou en utilisant n'importe quel outil de développement 32 bits pour Windows® capable d'appeler une DLL. Parfois en robotique et encore plus souvent en électronique, les fabricants imposent d’utiliser une DLL (ou Dynamic Linked Library) pour contrôler leur produit. Par exemple un modem ou un programmateur ou une carte d’interface entrée/sortie USB pour expérimentations.
Il s’agit d’un groupe de fonctions réunis dans un fichier binaire (pas de code source disponible) que notre programme doit exécuter. Les DLL sont spécifiques à Windows (il existe aussi des bibliothèques logicielles de principe similaire sous Linux et MaxOS, les .so ou "shared objects", .dylib ou "dynamic library", .sl ou "shared library", etc...) et généralement on développe un programme en Delphi, Basic ou en C/C++ pour les utiliser.

Les fonctions utilisées :

  • Connect(tHostWin:HWND):BOOL;
  • Disconnect:BOOL;
  • GetItem(tIndex:UINT):UINT;
  • Read(tHandle:UINT;tData:pointer):BOOL;
  • Write(tHandle:UINT;tData:pointer):BOOL;
  • GetHandle(tVendorID,tProductID:UINT):UINT;
  • GetVendorID(tHandle:UINT):UINT;
  • GetProductID(tHandle:UINT):UINT;
  • GetVersion(tHandle:UINT):UINT;
  • GetProductName(tHandle:UINT;tText:LPSTR;tLen:UINT):UINT;
  • GetSerialNumber(tHandle:UINT;tText:LPSTR;tLen:UINT):UINT;
  • GetInputReportLength(tHandle:UINT):UINT;
  • IsAvailable(tVendorID,tProductID:UINT):BOOL;

 

 Télécharger

Télécharger la DLL ainsi qu'un exemple de code source en Delphi

Dans ce montage, je vais expliquer comment réaliser cette carte d’interface USB, donc accéder aux ressources HID, depuis un programme Delphi, en utilisant l’environnement "Mikropascal" coté carte électronique qui est vraiment très simple et très pratique.

 Carte d'interface USB

L'idée dans ce montage est d'expliquer comment mettre en place une carte électronique pouvant recevoir des ordres d'un ordinateur via le port USB tel que : allume une sortie, fait une conversion analogique,.. et que la carte transmette à l'ordinateur des réponses (la valeur de la conversion analogique, l'état d'une entrée, ...). On associe souvent au terme USB : la vitesse, l'utilisation dans des applications de stockage de données tel que les clés ou les disques dur externes. Ces dernières applications font partie d'un ensemble particulier « Mass storage » qui ne nous intéresse pas dans ce montage. La gamme qui nous intéresse est le périphérique HID, qui est les initiales de « Human Interface Device » c'est-à-dire dans notre bon vieux français périphérique d'interface avec un humain. Cette gamme regroupe les outils les plus utilisés comme les souris, claviers et joysticks. La vitesse de ces périphériques est aussi limitée à 64ko/s… Ce qui entre nous n'est déjà pas mal et permet de résoudre pas mal d'application que ce soit en domotique ou en robotique.

 Télécharger

Télécharger l’application Windows pour piloter cette carte

Mise en place de l'application

L'USB a le désavantage d'obliger l'utilisation de composants particuliers. Dans notre application, nous aurons recours au microcontrôleur 18F2550 de Microchip, une puce simple à programmer (en Mikropascal) et munie de tous les composants hardware nécessaire à la communication sur port USB. Le schéma de la mise en place du composant reste très simple:

 Schéma electronique interface USB

Au centre du schéma, nous retrouvons le PIC18F2550, celui-ci est cadencé par un quartz à 20MHz. Nous avons aussi câblé sur ce schéma une entrée analogique: AN0. Sur les broches RC0, RC1, RC2 et RC6 nous plaçons quatre leds qui nous servirons pour notre application. Sur les broches RA1, RA2,RA3 et RA4 des switchs qui serviront aussi pour cet exemple. Le port B est utilisé pour l’LCD mais nous plaçons la possibilité d'étendre les fonctionnalités de la carte en installant des borniers.
Les capacités C1 et C2 sont de 22pf. Pour R5, R4, R3, R2 nous placerons simplement des résistances de 4k7. Attention de ne pas se tromper pour le connecteur USB. Il s'agit d'un connecteur femelle de Type B. Pour la connecter au PC, j'utilise un cordon d'imprimante A vers B, le même que les cordons HP.
Programmation du microcontrôleur PIC18F2550 :
Bibliothèque USB de Mikropascal :
USB (Universal Serial Bus) est un bus série standard pour connecter une large variété d'appareils, y compris les ordinateurs, les téléphones cellulaires, consoles de jeux, PDA, etc
La bibliothèque USB HID de Mikropascal contient des routines qui supportent les dispositifs de classe HID, ainsi que les routines génériques qui peuvent être utilisées avec des pilotes de fournisseurs spécifiques.
Chaque projet basé sur la librairie USB de mikropascal devrait inclure un descripteur de fichier source qui contient (Vendor ID, nom), (Product ID, nom), la longueur « report length », et d'autres informations pertinentes. Pour créer un fichier descripteur, utilisez l’outil intégré HID terminal de mikroPascal PRO pour PIC (Outils >> USB HID Terminal). Le nom par défaut pour le fichier descripteur est USBdsc.mpas, mais vous pouvez le renommer.

Voir le fichier de description utilisé

Voir le fichier de description utilisé

Les routines disponibles sont :

  • HID_Enable
  • HID_Read
  • HID_Write
  • HID_Disable
  • USB_Interrupt_Proc
  • USB_Polling_Proc
  • Gen_Enable
  • Gen_Read
  • Gen_Write

Voir le fichier de description utilisé

Voir le code source du programme du PIC18F2550

 

 Télécharger

Télécharger le programme en mikropascal ainsi que le fichier descripteur et le fichier .hex

Vous pouvez programmer votre microcontrôleur directement sur la carte car j’ai prévu un connecteur ICSP comme vous le voyez sur l’image suivante, le programmateur utilisé est celui qui a été publié sur le montage : http://www.technologuepro.com/montages-electroniques/Mini-Programmateur-PIC-17.html

programmation du microcontrôleur

Test de la carte :
Une fois la programmation du microcontrôleur terminée, brancher le câble USB, Windows devrait détecter et installer automatiquement la carte en tant que périphérique HID

 detection de la carte

Routage de la carte :
Cette carte ne présente pas beaucoup de composants de ce fait le routage sous le logiciel Proteus(ISIS et ARES) est très simple et peut être réalisé en simple face

 Routage de la carte

 Télécharger

Télécharger le schéma et le typon sous ISIS v7.6

Vidéo de démonstration :

 

 

 

 

 


  

   Lectures recommandées sur ce thème :


  Commentaires

dizay
 dizay

good

DLL pour VB8
 kawi2006

merci beaucoup pour ce sujet,

svp avez vous le dll pour vb8



DLL
 Technologuepro

La DLL présentée ICI fonctionne pour vb8. C'est pour VB, delphi , C++ et tout éditeur de code capable d'appeler une DLL

DLL source
 piki

Bonjour,
Excellent travail, la simulation sous Proteus fonctionne impeccable. Il semblerait que la DLL soit écrite par l'auteur, la source est-elle disponible ?

 sihem_bsf

merci

Génial
 patrijuvet

Si vous plait je voudrais avoir le code source windev
merci...

demande
 AchacheLarbi


comment pourais je obtenir le code source windev
merci pour ce sujet mon amis

code source
 patrijuvet

pourquoi le code source windev n'es toujour pas disponible???

code source windev
 patrijuvet

comment faire pour avoir le code source WINDEV??

programmation
 ahmed. mpse

introduire des equations logiques dans un prog c demo

 ajminader

svp, j'ai un problem pour la connection entre le pic (carte ) et le pc malgré le bon fonctionnement sur l'isis.l'orsque je branche la cable usb l'alimentation(5v) attient la carte et le pic j'ai tester bien mais .pc ne détecter pas la carte (j'ai utilse mode hid ) je ne j'ais pas quel est le probleme car le mode hid ne besoin pas des drivers .svp aide moi et mr6

 kingach

j'ai testé la carte sur plaque à essai mais elle ne fonctionne pas, le pc ne détecte pas le pic

code source
 clo67

Le code source du programme windev est-il disponible?

code windev
 alikhezraoui

svp. Le code source du programme windev est-il disponible?

Périphérique non detecter .. résolution
 toubippc

J ai eu le meme soucis, le périphérique n était pas detecter !
Puis en grattant un petit peu, car les autres montages fonctionnent, pourquoi pas celui-ci ?
Pin 20 (vdd) => +5v
Pin 8 - 19 => GND

Et ca fonctionne .. pour moi ! ;-)
La base meme du branchement du pic18f2550 les gars ...

 Claudine75

Bonne ambiance, bonne présentation etc... C’est un régal dans la journée que de venir le parcourir
Voyance en ligne gratuite

 Claudine75


Coucou, ton forum est trop ! Je viens tous les jours et cela me plait beaucoup
voyance gratuitement

*Poster un commentaire :
Uniquement les membres peuvent poster des commentaires

Haut de page

© 2017 Technologue pro, cours électricité électronique informatique · © 2007 - 2017 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académiqueMontages electroniques simples, pour les amateurs et pro de l'électronique, offre de montage electronique et cours en ligne gratuit: programmateurs de PIC USB, chargeur pour batteries, insoleuse 3 tubes ultra violet pour circuits imprimés et carte développement microcontrôleur PIC

Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index - Annuaire Tunisie -