Tachymètre. Un exemple de travail avec une photorésistance et un écran LCD HD44780 sur arduino


32:20 - Algorithmes du micrologiciel 16 et 18
36:50 - Variables du micrologiciel
40:40 - Micros sur le capteur Hall

Après avoir assemblé et testé le détendeur décrit ici : https://shenrok.blog...t=1489156293398
Nous pouvons commencer à installer le micrologiciel qui prendra en charge la vitesse spécifiée. Mais d'abord, attardons-nous sur la question du capteur Hall.
Remplacer la génératrice tachymétrique par un capteur Hall n'est pas du tout difficile. J'en parle en détail dans la vidéo à 5:48. Mais lequel mettre ? Nous avons besoin d'un capteur Hall numérique, de préférence bipolaire. Puisqu'il émettra 2 fois plus de signaux. Et c'est très important pour les petites révolutions. C'est celui de mon moteur SS441 .

Envisager PID_12 :
Au tout début de l'esquisse, nous avons des lignes dans lesquelles nous devons entrer les valeurs dont nous avons besoin :

int obMax = 6000 ; //saisir le régime maximal

flotteur kImp = 120 ; //saisir le nombre d'impulsions pour 10 tours

Dans la première ligne, nous entrons le nombre de tours maximum dont nous avons besoin. Le second est minime. Dans la troisième ligne, nous mettons le nombre d'impulsions de notre capteur pour 10 tours de l'arbre. Dans la quatrième ligne, vous devez entrer un nombre qui limitera le courant de vitesse minimum. Cela dépendra du nombre de tours minimum et des charges appliquées. Et dans le cinquième - le nombre auquel le moteur commence à tourner sur le firmware n ° 6 (nous y avons prêté attention).
Ensuite est la chose la plus importante. Il est nécessaire de régler (sélectionner) les coefficients du régulateur PID. Ils sont à la 19e ligne du croquis :
PID monPID(&Entrée, &Sortie, &Consigne, 0.01 , 0.2 , 0 , DIRECT);

La recherche donne plusieurs façons de configurer, vous pouvez utiliser n'importe laquelle. Mais pour être honnête, je n'ai pas vraiment aimé ce contrôleur. Ou peut-être que je n'ai tout simplement pas eu la patience de le mettre en place.

Envisager _16:
Les principales variables de l'esquisse sont les mêmes que dans le contrôleur PID :

entier obmin = 200 ; //saisir le régime minimum


intminzn = 115 ; // la valeur minimale du triac à laquelle la rotation commence.
int ogrmin = 70 ; // limite du triac à la vitesse minimale.
int mindimming = 80; // valeur du triac lorsque la machine est bloquée (impulsion initiale)

Et ils sont installés de la même manière. Mais 2 valeurs ont été ajoutées. ce valeur du triac avec une machine bloquée (impulsion initiale) Il est choisi comme ça. Sur le firmware n ° 6, nous donnons une petite charge à l'arbre, le minimum, si seulement l'arbre n'était pas inactif. Et nous commençons à faire tourner le régulateur. Il est nécessaire de noter le nombre auquel l'arbre commencera à tourner. Nous avons besoin de cette valeur pour donner l'impulsion initiale à notre machine. Le nombre est très conditionnel et permet quelques tolérances. Et la principale variable qui nécessitera un réglage et une sélection est tolérance de régime moins et plus. Cela signifie dans quelles limites la vitesse de notre moteur se stabilisera. Nous trouvons la valeur minimale à laquelle le moteur tournera sans à-coups au ralenti et sous charge à différentes vitesses. Ce firmware fournit déjà une bonne stabilisation des révolutions dans les limites spécifiées, et cela suffira peut-être déjà. Si une stabilisation exacte des révolutions est nécessaire, nous procédons à la couture suivante.

Envisager _18:

Toutes les valeurs sont transférées du firmware précédent :

entier obmin = 200 ; //saisir le régime minimum
int obMax = 9000 ; //saisir le régime maximal
entier kImp = 120 ; //saisir le nombre d'impulsions pour 10 tours
intminzn = 115 ; // la valeur minimale du triac à laquelle la rotation commence.
int ogrmin = 70 ; // limite du triac à la vitesse minimale.
int mindimming = 80; //valeur du triac lorsque la machine est bloquée (impulsion initiale)
entier dopusk = 200 ; //tolérance des révolutions en moins et en plus
int race = 50 ; //variable d'accélération 1 - 100

Seule la valeur de l'accélération, ou douceur, a été ajoutée. Avec une valeur de 1, la stabilisation se produit en douceur, avec une augmentation de la valeur, l'accélération est plus sévère. La limite supérieure est très grande, mais après 100 (dans mon cas), il n'y a aucun changement.

Développement parallèle : http://www.motor-r.i...og-page_19.html

Variante du régulateur sur le chipmaker :

Beaucoup de questions sur les détails, où commander. J'ai commandé un ensemble pour moi, je partage avec vous.

Et j'ai commandé un bloc de relais pour l'inversion et la protection. Nous compléterons.

En fonction de vos questions, l'article sera complété. Alors on demande.

Alors, continuons à régler et à affiner notre contrôleur de vitesse de rétroaction.
Commencer ici:
1 Idée et développement
2 régulateur PID
3 Assemblage du régulateur, instructions étape par étape
4 questions - réponses, astuces, algorithme de travail
5 Réglage de la tolérance, suppression des à-coups liés au débordement, un interrupteur à bascule à 2 vitesses, un relais de protection contre la panne du triac.

Ceux qui ont déjà fabriqué ce détendeur ont rencontré un problème, il est très difficile de trouver une tolérance variable. La méthode de dénombrement est longue et peu pratique. Et il s'est avéré que la tolérance à basse et à haute vitesse peut différer. Par conséquent, un micrologiciel a été écrit pour aider à la fois à sélectionner très précisément cette valeur aux vitesses minimale et maximale.
Pour ce faire, nous devons souder temporairement une résistance variable de 10 kΩ avec le contact central à la broche A3, notre arduino. Les contacts extrêmes de la résistance, comme toujours, sont soudés au + et au -.
Maintenant, après avoir téléchargé le firmware nastroyka_dopuska , dans lequel nous entrerons d'abord toutes les variables liées à notre machine ou moteur. Les principaux seront les tours minimum et maximum nécessaires sur la machine, ainsi que le nombre d'impulsions pour 10 tours de la broche.
Nous sélectionnons la tolérance, comme indiqué dans la vidéo. Après cela, nous pouvons entrer les données reçues dans le firmware 18 et les utiliser. L'affichage a été amélioré dans ce firmware. Parce que vous avez demandé.
Micrologiciel : https://drive.google...iew?usp=sharing


Le problème suivant que nous avons eu était que des « secousses » se produisaient à certains régimes moteur. Pour comprendre la raison, un micrologiciel a été créé qui envoyait la valeur de la variable tic à l'ordinateur. C'est le nombre de cycles qui s'écoulent entre les signaux du capteur Hall. Les données ont été affichées dans le programme SerialPortPlotter sous forme graphique.




Après consultations, il s'est avéré que des pannes se produisent si le signal du capteur arrive simultanément avec le débordement du compteur, qui se produit après 65535 cycles. Ils m'ont également dit comment éviter de tels échecs, ce dont je suis très reconnaissant.

La prochaine tâche à laquelle nous étions confrontés était de mettre en œuvre une protection contre la panne du triac à l'aide d'un relais. Ainsi, si les révolutions dépassent celles définies d'un certain nombre, le relais fonctionnera et éteindra le moteur.
Nous utiliserons un bloc de relais de 4 pièces, car à l'avenir, nous mettrons en œuvre l'inversion du moteur à travers eux. Mais si vous n'avez pas besoin d'un inverseur, vous pouvez vous débrouiller avec un relais.


Nous appliquons un moins aux contacts GND, nous appliquons un plus 5 volts à VCC, nous connectons IN3 et IN4 à la broche A1 de l'arduino, c'est pour l'inverse, et IN2 à la broche A2. Ce contact sera chargé d'éteindre la carte de puissance. Téléchargement du micrologiciel prouverka_rele , et nos relais doivent alternativement s'allumer pendant 1 seconde et s'éteindre. Deux jumelés et un séparé. Si tout fonctionne correctement, vous pouvez faire passer le fil qui va à la carte d'alimentation via ce relais unique, télécharger le firmware roos_zashita_1 et utiliser le contrôleur. Les secousses sont éliminées ici et la protection est mise en œuvre.

Nous pouvons également installer et connecter immédiatement un interrupteur à bascule pour la marche arrière par 3 positions et un interrupteur à bascule qui divisera notre plage de vitesse comme nous le souhaitons. Pour ma machine, j'ai fait la première vitesse pour le tournage, de 100rpm à 2000rpm, et la seconde pour la rectification de 1500rpm à 5000rpm. Nous les connectons de la manière suivante :

Téléchargez le croquis pour vérifier prouverka_tumblerov et lorsque vous changez la position des interrupteurs à bascule, les chiffres à l'écran changent. Si des changements se produisent, vous pouvez télécharger le firmware roos_zashita_2speed et apprécie.

N'oubliez pas que sur tous les firmwares, vous devez entrer les valeurs dont vous avez besoin.
Micrologiciel :
Signet ---- avec deux relais pour la marche arrière et le freinage https://wdfiles.ru/dr8k

Signet ---- avec composants SMD et blocage des impulsions alimentation pour le boitier D6MG https://drive.google...T0JOd2pFZjI3SmM

Pour les relais 12v, transférez le cavalier au repère 12
Pour les relais, le 5v est déjà au repère 5
Soudez les diodes des relais directement sur la carte du côté des conducteurs.
Pour les cartes avec ULN2003, les diodes sur le relais ne sont pas nécessaires.

La liste des pièces change en fonction du signet que vous choisissez.

résistance 10k 0.25W-2pcs
résistance 4.7k 0.25W-1pc
résistance 2k 0.25W-1pc
résistance 470 0.25W-1pc
résistance 100 2W-1pc
résistance 360 ​​0.25w-2pcs
résistance 5k 0.25W-1pc (bouton marche arrière)
résistance trimmer 10k-1pc (pour écran LCD)
résistance variable 10k-1pc (rev twister)
résistance ajustable 10k (par jambe A3)
diode RL205 1pc
condensateur 100n 600V-1pc С4
condensateur 0.05mf -1pc C3
triac BTA24-600 (BTA16-600) Sur le radiateur
PC817C-1pc
MOC3021-1pc (MOC3023)
L7805CV-1pc
pont de diodes ce qui serait le même que sur la carte GBL04-E3/51 (KBL04), Pont de diodes 4A 400V
borniers sur la carte - double - 7 pcs,
relais JS1-12V 2pcs peut être 5v
condensateurs électrolytiques 100 microfarad * 25v -2pcs (C1 et C2)
puce ULN2003A - 1pc

transformateur - lequel vous pouvez trouver (1,5-3W)
interrupteur à trois positions - 1 pc
prise pour Arduino -1pc

Disponible à bord, non listé
la résistance sur le circuit sous l'arduino est de 10k (est-ce du côté des pistes ou est-ce important?) Sur la carte du côté des conducteurs, mais vous pouvez aussi la mettre sur le dessus. Et il est nécessaire pour ceux qui diviseront la plage de contrôle de vitesse en deux sous-gammes.
diodes au verso de la carte au relais - quoi? la réponse est tout ce qui sera possible RL205
transistors BC 550 - Les transistors 2 pièces sont également tous avec arr. émetteur vous pouvez kt 315 ou kt3102

Variante de circuit
Version corrigée du schéma

Images jointes




Le message a été éditéorio55: 01 mai 2017 - 20:05

Un tachymètre est un outil utile pour compter le RPM (tours par minute) d'une roue ou de tout ce qui tourne. Le moyen le plus simple de fabriquer un tachymètre consiste à utiliser un émetteur et un récepteur IR. Lorsque la communication entre eux est interrompue, vous savez que quelque chose tourne et vous pouvez utiliser le code pour calculer le RPM en fonction de la fréquence des interruptions de communication.

Dans cet article, nous verrons comment utiliser un émetteur et un récepteur IR pour fabriquer un tachymètre à l'aide d'Arduino. Le résultat est affiché sur un écran LCD 16x2.

Le but de ce projet est de créer un système avec une entrée et une sortie. À l'entrée de l'appareil, il y a un signal qui passe du niveau haut (+5V) au niveau bas (+0V) en cas de panne de communication. Selon ce signal, l'Arduino augmentera la valeur du compteur interne. Ensuite, un traitement et un calcul supplémentaires sont effectués, et lorsque le déclencheur est interrompu, le RPM calculé s'affiche sur l'écran LCD.

Pour la communication, nous utiliserons un faisceau infrarouge provenant d'une LED infrarouge connectée via une résistance à faible résistance afin qu'elle brille fortement. En tant que récepteur, nous utiliserons un phototransistor, qui "se ferme" en l'absence de lumière LED IR. Le ventilateur de l'ordinateur sera placé entre l'émetteur et le récepteur IR et allumé. Un récepteur IR connecté via un circuit à transistor générera des interruptions. Pour afficher le résultat sera utilisé LCD Arduino interface, afin que nous puissions afficher la valeur RPM finale sur l'écran LCD.

Éléments:

Planche à pain

Résistance ajustable 5 kΩ

Cavaliers

Connecteurs SIP

2 transistors NPN 2N2222

DEL infrarouge

Phototransistor

Résistance 10 ohms

Résistance 100 kΩ

Résistance 15 kΩ ou 16 kΩ

ventilateur d'ordinateur

Liste détaillée des articles

Tous les éléments utilisés dans le projet sont énumérés ci-dessus, mais je décrirai plus en détail les fonctions des principaux éléments.

Arduino UNO

Il s'agit de la carte Arduino que nous utiliserons pour traiter les impulsions d'interruption IR qui nous indiquent quand une pale de ventilateur d'ordinateur se trouve entre le récepteur et le capteur. L'Arduino utilisera ces impulsions avec une minuterie pour calculer le RPM du ventilateur.

Écran LCD 16×2

Une fois que l'Arduino a calculé le RPM, cette valeur sera affichée sur l'écran de manière conviviale.

Résistance ajustable 5 kΩ

Ce potentiomètre sera utilisé pour régler le contraste de l'écran LCD 16x2. Il fournit une tension analogique dans la plage de 0 à + 5 V, vous permettant de régler la luminosité de l'écran LCD.

LED infrarouge et phototransistor

Le phototransistor s'ouvre lorsqu'une puissante lumière IR tombe dessus. Par conséquent, lorsque la LED IR est allumée, elle maintient le phototransistor ouvert, mais si la LED IR est couverte, par exemple, par une pale de ventilateur, alors le phototransistor est fermé.

2N3904 et 2N3906

Ces transistors sont utilisés pour convertir le niveau du signal, afin de fournir les impulsions de sortie du phototransistor à l'Arduino, dans lequel il n'y a pas de tensions autres que +0 et +5V.

schéma


Dans le schéma, l'interface de communication LCD est simplifiée et ne comporte que 2 lignes de commande et 4 lignes de données.

Caractéristiques des circuits

Interface d'affichage LCD 16 × 2

2 broches de contrôle et 4 pour le transfert de données sont connectées de l'Arduino à l'écran LCD. C'est ce qui indique à l'écran LCD quoi faire et quand.

Circuit de coupure de faisceau IR

Le signal de rupture de faisceau IR passe au 2e numérique Broche Arduino. Cela interrompt l'Arduino, lui permettant de compter l'impulsion et permettant au tachymètre de recevoir des données.

Bibliothèque LCD Arduino

Pour ce projet, nous utiliserons la bibliothèque LCD Arduino. Fondamentalement, nous mettrons simplement à jour la valeur RPM sur la deuxième ligne avec la nouvelle.

En guise de préparation, regardez le code ci-dessous, qui utilise cette bibliothèque pour afficher "Hello, World!" sur l'écran LCD. Dans le tachymètre, nous utiliserons un code similaire, notamment : "lcd.print(millis()/1000);".


Comprendre les fonctions de cette bibliothèque LCD avec autant de détails que possible avant de continuer. Ce n'est pas trop compliqué et c'est bien documenté sur le site Arduino.

Comptage RPM avec Arduino

Puisque nous allons calculer le RPM d'un ventilateur d'ordinateur, nous devons comprendre que nous utilisons une interruption de faisceau IR pour calculer. C'est très pratique, mais il faut tenir compte du fait que le ventilateur de l'ordinateur a 7 pales. Cela signifie que 7 interruptions équivalent à 1 révolution.

Si nous suivons les interruptions, nous devons savoir que chaque septième interruption signifie qu'une révolution complète vient de se produire. Si nous gardons une trace du temps qu'il faut pour une révolution complète, alors nous pouvons facilement calculer le RPM.

Temps de 1er tour = P * (µS/tour)

RPM = RPM = 60 000 000 * (µS/min) * (1/P) = (60 000 000 / P) * (RPM)

Pour calculer le RPM, nous utiliserons la formule ci-dessus. La formule est exacte et la précision dépend de la capacité de l'Arduino à suivre le temps entre les interruptions et à compter le nombre de tours complets.

Assemblage de circuits

Sur la photo ci-dessous, vous pouvez voir toutes les pièces et cavaliers nécessaires comme sur le schéma.


Connectez d'abord + 5V et les lignes de données/contrôle LCD. Puis LCD, potentiomètre de contraste et LED d'alimentation.


Le circuit pour couper le faisceau IR est assemblé. Essayez de garder une distance entre la LED IR et le phototransistor. Cette photo montre la distance entre la LED IR et le phototransistor où je placerai le ventilateur de l'ordinateur.


Assez parlé de matériel ! Commençons à créer un firmware/programme pour voir comment l'appareil fonctionne !

Partie logicielle

Il y a deux parties principales du code qui sont présentées et détaillées ci-dessous :

Cycle de rafraîchissement de l'écran LCD principal

Mise à jour des temps de pause

Dans le cycle principal, les révolutions et les mises à jour de l'écran LCD sont comptées. Comme la boucle principale est une boucle while(1) géante, elle fonctionnera toujours, le RPM sera compté et l'écran LCD sera mis à jour plusieurs fois par seconde. La fonction dans l'interruption compte le temps entre les interruptions IR, vous pouvez donc compter le RPM dans la boucle principale.

N'oubliez pas qu'un ventilateur d'ordinateur a 7 pales, donc ce tachymètre est conçu pour fonctionner uniquement avec de tels ventilateurs. Si votre ventilateur ou autre appareil ne donne que 4 impulsions par tour, modifiez "(time*4)" dans le code.

Voici une vidéo de démonstration du fonctionnement du tachymètre.

Les deux ventilateurs tournent à environ 3000 tr/min et 2600 tr/min, avec une erreur d'environ +/-100 tr/min.

Présentation du tachymètre Arduino

Le ventilateur génère des impulsions d'interruption et à la sortie, nous voyons RPM. Bien que la précision ne soit pas de 100 %, mais d'environ 95 %, avec un coût de 10 $, il est logique de construire ce tachymètre sur Arduino.

Alors, qu'y a-t-il maintenant ?

Les systèmes à coupure de faisceau sont utiles non seulement pour les mesures RPM, mais aussi comme autres capteurs. Par exemple, vous voulez savoir si une porte est ouverte ou fermée. Peut-être voulez-vous savoir si quelque chose s'est passé sous le robot. Il existe de nombreuses applications de coupure de faisceau, et le circuit utilisé ici est si simple qu'il existe de nombreuses façons d'améliorer et de construire d'autres dispositifs étonnants.

Conclusion

En général, je considère ce projet comme un succès… Mais c'est une question de temps et d'expérience… Quoi qu'il en soit, le système fonctionne comme prévu et de manière assez fiable, et nous avons obtenu le résultat escompté. J'espère que vous avez aimé lire cet article et apprendre à fabriquer votre propre tachymètre Arduino !

Article original sur langue Anglaise(Traduction: Alexandre Kassianov pour le site cxem.net)

Le module capteur de régime moteur est principalement conçu pour détecter la vitesse de rotation de l'arbre moteur. Ce module, associé au microcontrôleur, peut déterminer, en plus de la vitesse, le nombre d'impulsions et la position de l'arbre.



En règle générale, les capteurs mesurent l'amplitude en enregistrant certains événements, puis le nombre d'événements est corrélé à la période de temps au cours de laquelle ils se sont produits.


Donc, dans ce cas, la vitesse est mesurée - les événements sont ici compris comme des impulsions reçues à la suite du fonctionnement du capteur optique lors de la rotation du disque à fentes. Le capteur se compose d'une LED et d'un phototransistor qui détecte la présence ou l'absence de rayonnement LED.


Schème


Le circuit présenté peut être utilisé pour envoyer les impulsions enregistrées au microcontrôleur. La base du régime est capteur optique OS25B10 (OC1) avec sortie LED et phototransistor.


Vient ensuite le circuit intégré à double comparateur LM393 (IC1) configuré comme un simple déclencheur de Schmitt. DEL verte(LED1) indique la présence de tension appliquée au circuit, et la LED rouge (LED2) surveille la sortie du module capteur de vitesse du moteur. Recommandé tension de fonctionnement module est comprise entre 4,5 et 5,5 V.




Notez que la résistance R1 (180 ohms) est utilisée ici pour limiter le courant de fonctionnement de la LED à l'intérieur du capteur optique OS25B10 (OC1). Si nécessaire, vous pouvez modifier sa valeur pour votre prototype. Vous pouvez également ajuster la valeur de la résistance R2 (10 kΩ) pour obtenir la tension requise pour votre circuit. La résistance R7 (10 kΩ) est une résistance pull-up en option.


Disque codeur


Un disque d'encodeur placé dans la fente du capteur sépare le capteur optique de sorte qu'il y ait une LED d'un côté du disque et un phototransistor de l'autre côté. Si le chemin du faisceau lumineux de la LED n'est pas bloqué par le disque, le phototransistor laissera passer le courant, sinon il sera fermé.


Un tachymètre est un appareil qui sert à mesurer le nombre de tours d'un objet dans un intervalle de temps donné. Habituellement, la valeur est exprimée en tours par minute ou tr/min. Auparavant, les tachymètres étaient des dispositifs purement mécaniques dans lesquels la rotation était transmise au tachymètre via une connexion mécanique (câble ou arbre), le nombre de tours par minute était déterminé à l'aide train d'engrenage et affiché sur une échelle circulaire. Après l'avènement de l'électronique moderne, les tachymètres ont beaucoup changé. Cet article décrit un tachymètre numérique sans contact basé sur Embase Arduino. La vitesse du moteur peut également être contrôlée à l'aide d'un circuit similaire. Le nombre de tours par minute et d'autres informations sont affichés sur un écran à cristaux liquides 16×2. Schéma de câblage Le tachymètre numérique basé sur Arduino est illustré ci-dessous.

Schéma de câblage


Capteur de régime
Un phototransistor infrarouge et une LED infrarouge forment un capteur. Un phototransistor infrarouge est un type de phototransistor qui ne répond qu'aux ondes infrarouges. L'utilisation d'un phototransistor infrarouge évite l'influence d'autres interférences lumineuses environnement. Le phototransistor et la LED infrarouge sont disposés en parallèle. La résistance R2 limite le courant traversant la diode infrarouge. La bande de guidage réfléchissante est collée sur un objet en rotation (arbre, disque ou ventilateur) aligné avec le capteur. J'ai utilisé un ventilateur de refroidissement 9V/100mA. L'écart entre le capteur et la bande de guidage réfléchissante ne doit pas dépasser 1 cm. Lorsque la bande de guidage réfléchissante passe devant le capteur, les ondes infrarouges sont réfléchies vers le phototransistor. Le phototransistor conduit plus en ce moment et par conséquent la tension aux bornes de R3 (résistance de 68K) augmente rapidement. Le résultat sera une forme d'onde illustrée ci-dessous à l'émetteur du phototransistor. Le nombre de tours par minute peut être déterminé en calculant le nombre d'impulsions vers le haut dans un intervalle de temps donné.


Calcul du nombre de tours par minute
L'Arduino est utilisé pour calculer la valeur RPM et afficher cette valeur sur l'écran LCD. L'émetteur du phototransistor est connecté à la broche Interrupt 0 (broche numérique 2) de l'Arduino. L'interruption Arduino est configurée sur un front montant déclenché. Par conséquent, une interruption est gérée pour chaque impulsion montante dans la forme d'onde de l'émetteur. Le nombre d'interruptions reçues à un instant donné est calculé en incrémentant une variable, au moyen d'une routine de service d'interruption. Le temps écoulé pendant le cycle de calcul est déterminé à l'aide de la fonction millis(). La fonction millis() renvoie le nombre de kilomètres de secondes qui se sont écoulés depuis la mise sous tension de la carte Arduino. Appeler la fonction millis() avant et après le cycle de calcul et calculer leur différence donne le temps écoulé pendant le cycle de calcul. La valeur (nombre d'interruptions/fois par milliseconde)*60000 déterminera le nombre de tours par minute (RPM).

Contrôle du régime moteur
Un dispositif de contrôle de la vitesse du moteur avec un potentiomètre est également inclus dans le circuit. Le transistor Q1 est utilisé pour contrôler le moteur. Sa base est connectée à la broche PWM 9 de l'Arduino via une résistance de limitation de courant R1. Le potentiomètre de contrôle de vitesse R4 est connecté à la broche analogique A0 de l'Arduino. La tension sur cette broche est convertie en une valeur comprise entre 0 et 1023 à l'aide de la fonction anlogRead. Cette valeur est ensuite divisée par quatre pour obtenir entre 0 et 255. Après cela valeur donnée est écrit sur la broche PWM 9 à l'aide de la fonction anlogWrite. Le résultat est une onde carrée sur la broche 9 dont le rapport cyclique est proportionnel à la valeur écrite avec la fonction analogWrite. Par exemple, si la valeur est 255, le rapport cyclique sera de 100 %, et si la valeur est 127, le rapport cyclique sera d'environ 50 %. D1 est une diode flyback et C1 est un condensateur antibruit (découpleur). Le régime et le rapport cyclique sont affichés sur l'écran LCD à l'aide de la bibliothèque LiquidCrystal standard. Lire cet article : Interface LCD pour Arduino. Le code de programme complet pour le tachymètre numérique basé sur Arduino est présenté ci-dessous.

Code programme
#comprendre LCD LiquidCrystal (12, 11, 6, 5, 4, 3); intpwm=9 ; intpot=A0 ; valeur flottante=0 ; entier pour cent ; flotteur rev=0 ; tr/min entier ; ancien temps int=0 ; int temps ; void isr() //routine de service d'interruption ( rev++; ) void setup() ( lcd.begin(16,2); //initialise LCD attachInterrupt(0,isr,RISING); //attache l'interruption ) void loop() ( delay(1000); detachInterrupt(0); //détache l'interruption time=millis()-oldtime; //trouve l'heure rpm=(rev/time)*60000; //calcule rpm oldtime=millis(); / /enregistre l'heure actuelle rev=0 ; value=analogRead(pot); //lit le contrôle de vitesse POT value=value/4 ; analogWrite(pwm,value); //définit la vitesse souhaitée percent=(value/255)* 100 ; // trouve le rapport cyclique % lcd.clear(); lcd.setCursor(0,0); lcd.print("___TACHYMETER___"); lcd.setCursor(0,1); lcd.print(rpm); lcd .print("RPM"); lcd.print(" "); lcd.print(pourcentage); lcd.print("%"); attachInterrupt(0,isr,RISING); )
Remarques
Sur le Carte Arduino La tension d'alimentation 9V peut être fournie via une prise de courant externe.
Le 5V requis pour certains composants du circuit peut être fourni à partir d'une alimentation 5V sur la carte Arduino.
Le ventilateur utilisé utilise une tension de 9V/100mA. Le transistor 2N2222 ne peut gérer que jusqu'à 800mA. Gardez cela à l'esprit lorsque vous choisissez une charge.
L'écran à cristaux liquides utilisé est le JHD162A.
Le potentiomètre R5 peut être utilisé pour régler le contraste de l'écran LCD. Une fois connecté, rien ne s'affiche à l'écran. Réglez R5 jusqu'à ce qu'une image apparaisse à l'écran. La tension optimale sur le curseur du potentiomètre R5 est comprise entre 0,4 et 1 V.
Le phototransistor infrarouge et la diode infrarouge ont été retirés du module de photo-interruption LTH-1550.
La surface latérale du phototransistor doit être recouverte de ruban électrique.
La position du capteur est indiquée dans la figure ci-dessous.