Table des matières:

Thermomètre USB intérieur/extérieur (ou "Mon premier périphérique USB") : 4 étapes (avec photos)
Thermomètre USB intérieur/extérieur (ou "Mon premier périphérique USB") : 4 étapes (avec photos)

Vidéo: Thermomètre USB intérieur/extérieur (ou "Mon premier périphérique USB") : 4 étapes (avec photos)

Vidéo: Thermomètre USB intérieur/extérieur (ou
Vidéo: Elle Était Coincée Donc Ce Policier L'aide 2024, Novembre
Anonim
Thermomètre USB intérieur/extérieur (ou « Mon premier périphérique USB »)
Thermomètre USB intérieur/extérieur (ou « Mon premier périphérique USB »)

Il s'agit d'une conception simple qui illustre le périphérique USB sur les PIC 18F. Il existe de nombreux exemples de puces 18F4550 40 broches en ligne, cette conception illustre la version plus petite 18F2550 28 broches. Le PCB utilise des pièces à montage en surface, mais tous les composants sont disponibles dans des versions à trou traversant. J'utilise des pièces de montage en surface car il est plus rapide de fabriquer la planche sans percer de trous. Le résultat final est un petit périphérique USB qui mesure les températures intérieures/extérieures. Les données sont disponibles pour le PC via un port série virtuel. Des capteurs de température sont utilisés dans l'exemple, mais d'autres capteurs analogiques peuvent être ajoutés. PSVoir un graphique en direct des données de mon enregistreur ici:https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/?format= graphique

Étape 1: Présentation de la conception

Aperçu de la conception
Aperçu de la conception
Aperçu de la conception
Aperçu de la conception
Aperçu de la conception
Aperçu de la conception

Composants PIC requis

Ce périphérique USB est basé sur le PIC 28 broches 18F2550. Cette puce a tout le nécessaire pour une interface USB à pleine vitesse. Un condensateur de 0,1 uf entre l'alimentation et la terre découple le PIC de l'alimentation. Un cristal de 20MHz (utilisé pour générer une horloge interne de 48MHz) et deux condensateurs de 27pf. Une résistance de 10K de l'alimentation à la broche MCLR. J'ai ajouté une diode équivalente 1n4148 entre la résistance et l'alimentation afin que les 13 + volts placés sur MCLR lors de la programmation n'endommagent pas les autres composants du circuit imprimé. Un en-tête ICSP (5 broches) est utilisé pour programmer et déboguer l'appareil. Matériel USB requis Une prise USB femelle de style « B ». Une capacité de 220nf-440nf est requise pour le régulateur de tension USB interne. J'utilise deux condensateurs de 0,1 uf (les mêmes que ceux utilisés pour le découplage) sans problème. Une LED avec une résistance de limitation de courant de 330 ohms est utilisée pour afficher l'état de la connexion USB. Matériel de capteur requis J'ai utilisé le capteur de température à puce TC1047A comme capteur de température intérieure. Il est physiquement soudé à la carte, ce qui l'amène à chauffer de quelques degrés au-dessus de la température ambiante. Un collecteur permet de connecter une sonde de température extérieure (version TO-92 du TC1047a). Un condensateur supplémentaire de 0,1 uf permet de découpler un long fil du reste de la carte. Les niveaux de tension USB ne sont pas suffisamment cohérents pour mesurer et calculer avec précision la température à partir des capteurs analogiques. Une référence de tension externe (MCP1525, 2,5 volts) est utilisée. La référence de tension nécessite un condensateur sur la sortie de 1uf à 10uf. Sans ce condensateur, la référence de tension ne fonctionnera pas.

Étape 2: Micrologiciel

Le firmware utilise la classe USB CDC pour émuler un port série. L'appareil apparaîtra comme un port com virtuel sur un PC. Le firmware est divisé en trois sections:1. Le pilote USB se charge d'énumérer le périphérique sur un PC et d'émuler un port COM. 2. Une routine de service lit alternativement les valeurs de température et les convertit dans un format lisible. Faire ces deux opérations à la fois a causé la perte de connexion du périphérique USB avec le PC (accaparement du temps). La conversion des valeurs à virgule flottante en une chaîne dans le cycle de service suivant la conversion a résolu le problème de connectivité.* 3. Enfin, une routine principale reçoit les octets envoyés par le PC et renvoie les mesures demandées. Les mesures multiples sont séparées par une virgule, les lignes se terminent par un caractère nul (hex 0x00) Le firmware de démonstration accepte les commandes suivantes: Valeur hexadécimale Renvoie0x00 Température intérieure (capteur embarqué)0x01 Température extérieure (en-tête externe)0x02 Les deux températures (virgule) séparés) La température est calculée sur la base de la référence de 2,5 volts et du décalage et de la pente du Microchip TC1047A. D'autres capteurs de température peuvent avoir des caractéristiques différentes. La fiche technique du TC1047A est disponible ici: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf Le firmware est écrit en MPLAB avec le compilateur de démonstration PIC C18. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011Le micrologiciel USB réel est fourni par Microchip. L'environnement d'origine est disponible ici:https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021631Pour modifier le firmware: extrayez l'intégralité de la structure de répertoire de la source dans votre répertoire racine (c:\MCHPFSUSB). Vous pouvez ensuite charger le fichier de l'espace de travail dans MPLAB. * La routine float to string est un monopolisateur de ressources. Pour contourner le problème de connectivité, la routine de service USB est appelée à divers points de la routine float2string. Cela serait mieux résolu en intervenant sur le périphérique USB lors d'une interruption. J'ai utilisé le hack pour que le firmware reste le plus proche possible de la version de référence.

Étape 3: Test de l'appareil

Test de l'appareil
Test de l'appareil
Test de l'appareil
Test de l'appareil
Test de l'appareil
Test de l'appareil

Les instructions concernent Windows, mais l'appareil peut être connecté à tout ce qui possède des pilotes d'émulation de port série CDC.

Programmez l'appareil avec le firmware. Tous les bits de configuration doivent être définis correctement dans le firmware. Branchez l'appareil sur un port USB. Windows le détectera et vous invitera à choisir un pilote. ASSUREZ-VOUS DE CLIQUER SUR « NAVIGUER POUR UN PILOTE PERSONNALISÉ ». Accédez à l'emplacement du fichier.inf inclus dans l'archive du projet (driver-win2k_winxp). Windows utilisera ce fichier pour installer le périphérique. *Remarque sur le pilote CDC: le pilote d'émulation de port série CDC est inclus avec Windows. Le fichier.inf (fourni par Microchip) indique simplement à Windows de connecter ces pilotes au périphérique. Pour savoir à quel port COM le périphérique a été affecté, procédez comme suit: Accédez au panneau de configuration (démarrer-> paramètres-> panneau de configuration) Double-cliquez sur « système » Cliquez sur l'onglet « matériel ». Cliquez sur « gestionnaire de périphériques » Cliquez sur le « + » à côté des ports Une liste des ports COM du système s'affiche. J'ai vu l'appareil s'afficher sous les noms COM 3 et 4, mais cela varie selon le système. S'il n'est pas évident de savoir quel port est nouveau, essayez ceci: Débranchez l'appareil du port USB. L'un des ports va disparaître. Il s'agit du numéro de port COM de l'appareil. Rebranchez l'appareil, le port réapparaîtra. La petite application VB (source incluse) peut être utilisée pour tester l'appareil. Entrez la commande à envoyer, cliquez sur 'Démarrer'. La réponse s'affichera dans la fenêtre.

Étape 4: que peut-il faire d'autre ?

Que puis-je faire d'autre?
Que puis-je faire d'autre?

Cette carte de démonstration est un bon point de départ pour une petite station météo domestique: ajoutez un capteur d'humidité HIH3160 ou remplacez le capteur de température analogique par le capteur de température et d'humidité série haute précision Sensiron HT74. Ajoutez un capteur de pression Freescale MPX(a)4115 à mesurer la pression barométrique. Vous voulez syndiquer ces données sur le Web ? L'inclure dans votre propre site Web, l'afficher dans Google Earth ou obtenir des mises à jour dans votre flux RSS ? Voir cette instructable sur l'intégration de cet appareil avec le backend web de syndicIT.com:

Conseillé: