Rechercher



 

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

  Catégorie : Réalisation de cartes électroniques
  Ajouté le : 22/07/2011 16:43
  Ajouté par : Technologuepro
  Lectures : 20911
  Commentaires : 5   [ Poster un commentaire ]
  Note :  [ Evaluer ]
  

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 d’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 :

Annuaire

Java -  (02/05/2011)
CEDRE: Calcul d'Écoulements Diphasiques et Réactifs pour l'Énergétique -  (13/12/2010)
Kudelsko -  (23/08/2010)
LabVIEW -  (22/08/2010)
Proteus (ISIS ARES) Design Suite -  (10/08/2010)


  Commentaires

dizay
 Posté par dizay le 27/07/2011 14:27

good

DLL pour VB8
 Posté par kawi2006 le 28/07/2011 14:55

merci beaucoup pour ce sujet,

svp avez vous le dll pour vb8



DLL
 Posté par Technologuepro le 09/08/2011 00:57

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
 Posté par piki le 31/08/2011 09:56

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

 Posté par sihem_bsf le 21/10/2011 20:37

merci

*Poster un commentaire :
Uniquement les membres peuvent poster des commentaires
Montages electroniques simples, pour les amateurs et pro de l'électronique, offre de montage electronique et cours: programmateurs de PIC USB, chargeur pour batteries, insoleuse 3 tubes ultra violet pour circuits imprimés et carte développement microcontrôleur PIC