Débutant: Tachymètre à sonde effet Hall

Bonsoir à tous

C'est mon premier message sur ce forum, et je suis débutant en Arduino, et dans les Microcontrôleurs en général (mis à part quelques cours à l'école, mais c'est tellement loin...)

Pour mon premier montage, je désirerais fabriquer un tachymètre pour une broche de fraiseuse. Il aurait les caractéristiques suivantes:

  • utilisation d'un capteur à effet de Hall au lieu d'un photo transistor. En effet le lieu d'installation du capteur (près de la broche, au niveau des poulies d'entrainement) ne se prête pas à une installation de LED (saletés, vibrations). Je compte donc coller un aimant sur la broche, et installer le capteur sur le bati à proximité
  • plage de mesure entre 50 tr/min et 9999 tr/min
  • Affichage de la vitesse de rotation sur 4 afficheurs 7-segments
  • installation dans le pupitre de la fraiseuse, donc encombrement minimum (la place est comptée)
  • alimentation de la carte par +5V ou bien par +24V, le variateur pilotant le moteur de la broche (220V triphasé) me fournissant au choix ces 2 tensions continues.

Les buts de cet montage sont de m'initier à Arduino et d'acquérir les bases pour un autre projet bien plus complexe que j'ai en tête qui utiliserait également des afficheurs 7-segments obligatoirement

J'avais pensé à un fonctionnement type:
1- pendant 1 seconde comptage du nombre de passages de l'aimant devant le capteur
2- déduction de la vitesse de rotation
3- affichage
puis retour en 1 etc.

J'ai évidemment quelques questions à vous poser:

  • d'abord sur la faisabilité du projet et sa pertinence? Idiot? Pas idiot?
  • le capteur à effet Hall: j'avais pensé à un TLE4905. Je n'ai pas encore regardé la compatiblité de ce capteur avec Arduino. Aussi auriez vous d'autres références à me proposer qui ont fait leur preuve?
  • comment piloter les 4 afficheurs 7 segments? Je me vois mal utiliser une carte avec 4x7=28 sorties uniquement pour cela. J'ai vu qu'il existait les MAX72xx, mais n'ai pas trouvé comment les utiliser dans le code Arduino??? Existe t'il une bibliothèque pour les piloter?
  • sinon d'autres solutions pour les afficheurs?

Voilà pour ce premier message. Je pense avoir d'autres questions par la suite.

Merci beaucoup

Cordialement,

Alfred

Bonsoir,

Alfred:
C'est mon premier message sur ce forum, et je suis débutant en Arduino, et dans les Microcontrôleurs en général (mis à part quelques cours à l'école, mais c'est tellement loin...)

Bienvenu sur le forum :slight_smile: tu verra pour débuter sur arduino il ne faut aucune bases, et en plus les membres du forum ne mordent pas (sauf Jean-Francois qui fait des citrouilles arduino pour faire peur au petits enfants :grin: #joke).

Alfred:
Les buts de cet montage sont de m'initier à Arduino et d'acquérir les bases pour un autre projet bien plus complexe que j'ai en tête qui utiliserait également des afficheurs 7-segments obligatoirement

J'avais pensé à un fonctionnement type:
1- pendant 1 seconde comptage du nombre de passages de l'aimant devant le capteur
2- déduction de la vitesse de rotation
3- affichage
puis retour en 1 etc.

C'est une solution effectivement, sinon une autre méthode pour un affichage plus "fluide" c'est d'utiliser une interruption, l'affichage sur le 7seg dans le programme principal (loop) et le calcul "en interruption" de la vitesse (voir attachInterrupt(), micros()).

Alfred:
J'ai évidemment quelques questions à vous poser:

  • d'abord sur la faisabilité du projet et sa pertinence? Idiot? Pas idiot?
  • le capteur à effet Hall: j'avais pensé à un TLE4905. Je n'ai pas encore regardé la compatibilité de ce capteur avec Arduino. Aussi auriez vous d'autres références à me proposer qui ont fait leur preuve?
  • comment piloter les 4 afficheurs 7 segments? Je me vois mal utiliser une carte avec 4x7=28 sorties uniquement pour cela. J'ai vu qu'il existait les MAX72xx, mais n'ai pas trouvé comment les utiliser dans le code Arduino??? Existe t'il une bibliothèque pour les piloter?
  • sinon d'autres solutions pour les afficheurs?

La faisabilité d'un tachymètre arduino ?
100%, c'est le genre de projet qui se trouve sur le forum arduino.cc (partie anglaise) sans aucun probléme, que se soit un tachymétre avec afficheur 7seg, lcd, par port série, i2c et j'en passe.
N'importe quelle capteur à effet hall avec sortie à collecteur ouvert est "compatible" avec une carte arduino.

Pour piloter 4 afficheurs 7seg, au choix :

  • un MAX72xx mais c'est "un peu" ch*ant à utiliser,
  • un pcf8575 et les 4 afficheurs multipléxé,
  • un pcf8574 ou un 74HC595 avec un circuit de décodage bcd->7seg en plus du multiplexage des 4 afficheurs,
  • les 4 afficheurs multipléxé "en directe" sur l'arduino (avec de la manipulation de port),
  • afficheurs 7seg série de sparkfun,
  • afficheurs 7seg série "maison" (si j'ai le temps je prépare un tutoriel vidéo sur l'utilisation de 12 afficheurs 7seg avec "seulement" 20 sorties digitales (multiplexage, gestion du refresh, ...).

skywodd:
Pour piloter 4 afficheurs 7seg, au choix :

  • un MAX72xx mais c'est "un peu" ch*ant à utiliser,
  • un pcf8575 et les 4 afficheurs multipléxé,
  • un pcf8574 ou un 74HC595 avec un circuit de décodage bcd->7seg en plus du multiplexage des 4 afficheurs,
  • les 4 afficheurs multipléxé "en directe" sur l'arduino (avec de la manipulation de port),
  • afficheurs 7seg série de sparkfun,
  • afficheurs 7seg série "maison" (si j'ai le temps je prépare un tutoriel vidéo sur l'utilisation de 12 afficheurs 7seg avec "seulement" 20 sorties digitales (multiplexage, gestion du refresh, ...).

bonsoir
Au passage : perso en afficheur led j'ai découvert ça il y a pas longtemps, c'est bien sympa à utiliser et surtout pas "cher".
8 7 segments+DP, 8 push boutons, 8 leds bicolores, gestion de la luminosité
commande en 3 "fils" (chainable sur 5 modules* nécessite une sortie de plus sur l'arduino par module supplémentaires.
http://www.dealextreme.com/p/8x-digital-tube-8x-key-8x-double-color-led-module-81873
existe maintenant en digit vert
http://www.dealextreme.com/p/jy-mcu-8x-green-light-digital-tube-8x-key-8x-double-color-led-module-104329?r=68099021

une bonne lib arduino ici

  • le schema de la lib montre 6 modules chainés, à priori je ne vois sur les miens que 5 possibles, mais comme pour l'instant je n'en ai que 4, je ne peux ni confirmer, ni infirmer :grin:
    j’attends des verts et des mûrs :slight_smile:

le SAA1064 pour 4 afficheurs en I2C est agréable aussi

bsr
sujet interessant , mais il y a un probleme , a 50 tr/mn le mandrin fait moins d'un tour par seconde ; il faut passer a une vitesse de comptage plus rapide . l'aimant sur le mandrin risque de ramassser toute la limaille qui serat +/ - progetée par la fraise , prevoir un endroit proteger .

Salut et bienvenue.

J'ai fait un tachy pour le moteur de ma voiture, on va se retrouver.

J'utilise le capteur PMH (une ferrite avec une bobine autour, le tout à 1mm du volant moteur qui possède 100 dents) qui passe dans un amplificateur différentiel (un AOP et 4 résistances) puis sur une entrée "timer" de l'arduino (chaque dent moteur génère une impulsion qui incrémente un compteur).

Ensuite, j'ai un autre timer qui tourne en continu pour me déclencher une interruption toutes les 203.5 ms (je n'utilise pas de librairies, c'est pas assez précis). cette interruption va lire le compteur moteur et le remettre à zéro. Résultat, j'ai le nombre d'impulsion précis pour une fenêtre de comptage donnée. Un peu de calcul (rotation = compteur * A) pour convertir en tr/min, et hop, vraiment nikel. (de là, je commande un servo sur l'accélérateur et ça me régule la vitesse moteur (un régulateur de vitesse quoi!))

en remplaçant le capteur par un GBF, je peux mesurer de 20tr/min à plus de 18000 tr/min. Au dessus, ça déraille, le compteur moteur (16 bits) déborde. L'inconvénient, c'est que plus tu tournes vite, plus la mesure est précise. Il faudrait l'inverse. l'avantage, c'est que ton arduino reste entièrement libre pour faire autre chose : ce n'est qu'une interruption toutes les 200ms.

est-ce qu'un tel montage (capteur PMH de voiture sur une roue dentée) marcherait? ça coûte rien, et ça marche, puisque je l'ai fait... mais sur un ATmega2560 car j'avais besoin de plusieurs compteurs 16 bits... la transition sur UNO doit être possible si on a accès à la broche T1 (entrée timer1), la fenêtre de comptage se fait alors sur le timer2 (8 bits, mais ce qui compte, c'est de connaître exactement le temps donné par le timer pour calculer le facteur de conversion)

Bonjour à tous

Tout d’abord je tiens à vous remercier d’avoir pris du temps à m’informer et à m’aider. Je vais tenter dans ce message de répondre aux objections qui ont été formulées.

Tout d’abord sur l’installation :
La zone où je compte installer l’aimant et le capteur est une zone sans limaille ni copeaux. C’est sur la partie supérieure de la broche, à proximité de la poulie d’entrainement. Pas du côté outil donc. Par contre ça vibre et c’est graisseux, mais c’est cartérisé.

C'est une solution effectivement, sinon une autre méthode pour un affichage plus "fluide" c'est d'utiliser une interruption, l'affichage sur le 7seg dans le programme principal (loop) et le calcul "en interruption" de la vitesse (voir attachInterrupt(), micros()).

OK. Je comprends mieux.

Le programme ressemblerait donc à un truc comme ça :

setup :
{
Initialiser les variables
T0=millis()
N=0 ;
}

loop:
{
Afficher la valeur de la vitesse de rotation V (fonction à définir)
}

Fonction parcourue en cas d’interruption (signal sur le capteur) :
{
T1=millis() ;
N=N+1 ;
if (T1-T0)>=1000 then
{
Mise à jour de la valeur de V=N*(T1-T0)/60000 ;
Réinitialisation des variables
N=0 ;
T0=T1 ;
}
}

Sauf erreur, ce code permet de considérer des vitesses de rotations très faibles, voire nulles, le calcul de V n’étant effectué que si le différentiel de temps excède la seconde. En dessous de 60 tr/min, la mesure de la vitesse ne se fera qu’avec une seule occurrence de l’interruption. Ca ne me gène pas trop vu que j’utilise très rarement des vitesses inférieures à 200 tr/min.

Pour piloter 4 afficheurs 7seg, au choix :

  • un MAX72xx mais c'est "un peu" ch*ant à utiliser,
  • un pcf8575 et les 4 afficheurs multipléxé,
  • un pcf8574 ou un 74HC595 avec un circuit de décodage bcd->7seg en plus du multiplexage des 4 afficheurs,
  • les 4 afficheurs multipléxé "en directe" sur l'arduino (avec de la manipulation de port),
  • afficheurs 7seg série de sparkfun,
  • afficheurs 7seg série "maison" (si j'ai le temps je prépare un tutoriel vidéo sur l'utilisation de 12 afficheurs 7seg avec "seulement" 20 sorties digitales (multiplexage, gestion du refresh, ...).

C’est du chinois pour moi tout cela. De ce que tu proposes, je retiens surtout la solution de l’afficheur Sparkfun : SparkFun 7-Segment Serial Display - Red - COM-11441 - SparkFun Electronics
3 pins arduino utilisées seulement. Apparemment ils fournissent une bibliothèque, donc je vais regarder plus en détail comment ça marche, mais elle est écrite en C : est ce génant pour Arduino ?
Je n’ai besoin au final que de 4 digits pour l’affichage, je n’en mettrais pas plus , d’autant que la place est comptée.

J'utilise le capteur PMH (une ferrite avec une bobine autour, le tout à 1mm du volant moteur qui possède 100 dents) qui passe dans un amplificateur différentiel (un AOP et 4 résistances) puis sur une entrée "timer" de l'arduino (chaque dent moteur génère une impulsion qui incrémente un compteur).

Chez moi c’est différent, je ne peux pas utiliser un tel système, ne pouvant installer une roue dentée sur la broche. Par contre je comprends que ce soit bien plus précis.

Concernant le capteur, j’ai vu que Sparkfun vendait un US1881 à un prix dérisoire, je pense partir là-dessus vu que je vais probablement commander l’afficheur chez eux.

Maintenant j’ai des questions sur la carte Arduino à acheter.
En réalité j’en souhaiterais 2 : une pour la mise au point qui resterait connectée à mon PC. Une carte pour débuter donc, un modèle de base avec quelques possibilités de connexions. Evidemment le port USB et un fonctionnement sous Linux. Que me conseilleriez vous chez Sparkfun ? Uno ou bien une Mega2560 ?

Et l’autre pour faire le tachymètre, je cherche donc un modèle basique, petit et suffisant pour ce faire. J’avais pensé à une Arduino Pro Mini que je programmerais via une carte additionnelle avec le port USB (mais on n’en trouve plus chez Sparkfun apparemment…).

Les alimentations que j’ai disponibles sur ma fraiseuse sont fournies par le variateur de commande du moteur triphasé (Altivar ATV15HU15M2). Il me donne :

  • +5V continu +/- 5% (soit entre 4.75V et 5.25V), Imax = 10 mA dont 1 mA utilisé pour la commande du variateur, donc reste 9 mA pour une autre utilisation en parallèle
  • +24V continu -15%/+20% (soit entre 20.4 V et 28.8V), Imax = 100 mA dont 8 sont réservés pour la commande du variateur, reste donc 90 mA environ
    Est-ce suffisant pour commander une carte Arduino, ainsi que son capteur et l’afficheur ?
    Je peux envisager de rajouter un régulateur de tension à base LM7805 derrière le 24V, mais je risque de manquer de courant, non ?
    1-Le capteur à effet Hall : 5 mA d’après la datasheet
    2- la carte Arduino = xxx mA ?
    3- l’afficheur = yyy mA ? (la doc dit de l’alimenter en 5V, mais ils ne donnent pas la consommation maxi, juste qu’il est construit sur un ATMega328

Voilà, c’est tout pour aujourd’hui et je vous remercie de m’avoir lu.

Cordialement,

Alfred

Alfred:
Le programme ressemblerait donc à un truc comme ça :

(...)

Sauf erreur, ce code permet de considérer des vitesses de rotations très faibles, voire nulles, le calcul de V n’étant effectué que si le différentiel de temps excède la seconde. En dessous de 60 tr/min, la mesure de la vitesse ne se fera qu’avec une seule occurrence de l’interruption. Ca ne me gène pas trop vu que j’utilise très rarement des vitesses inférieures à 200 tr/min.

L'idée est là mais je n'aurai pas fait comme ça, voila ce que j'aurai fait en c :

volatile unsigned long time = 0; // time en ms depuis le démarrage de l'arduino
volatile unsigned long rpm = 0; // vitesse en tr/min

void setup() { // Fonction éxécuté au démarage de l'arduino
  Serial.begin(9600); // Configuration du port série en 9600bauds
  pinMode(2, INPUT); // Broche D2 en entrée
  attachInterrupt(0, int_cb, FALLING); // Configuration de l'interruption INT0(D2) pour pointer sur la fonction int_cb en cas de front descendant
}

void loop() { // Fonction éxécuté en boucle jusqu'a l'arret de l'arduino
  Serial.println(rpm); // Affiche la vitesse de rotation
  delay(1000); // Attend une seconde
}

void int_cb() { // Fonction appelé lors d'un front descendant (HIGH -> LOW) sur la broche D2 (INT0)
  rpm = (millis() - time) / 60000; // Calcul de la vitesse par rapport au temps précédant
  time = millis(); // Astuce: millis() est "freezé" lors du interruption, sa valeur ne s'incrémentera pas, inutile de crée une variable pour stocker le nouveau temps
}

Ce code affiche sur le port série la vitesse en tours par secondes.

Alfred:
C’est du chinois pour moi tout cela. De ce que tu proposes, je retiens surtout la solution de l’afficheur Sparkfun : SparkFun 7-Segment Serial Display - Red - COM-11441 - SparkFun Electronics
3 pins arduino utilisées seulement. Apparemment ils fournissent une bibliothèque, donc je vais regarder plus en détail comment ça marche, mais elle est écrite en C : est ce génant pour Arduino ?
Je n’ai besoin au final que de 4 digits pour l’affichage, je n’en mettrais pas plus , d’autant que la place est comptée.

Les librairies et les programmes arduino doivent être écrit en c, en aucun cas cela n'est gênant, au contraire sparkfun a fait la librairie justement pour être utilisé avec un µc avr ou un arduino, de toute façon ce sont des afficheurs série qui s'utilise avec Serial.print("") donc c'est pas trés compliqué à utiliser.

Alfred:
Concernant le capteur, j’ai vu que Sparkfun vendait un US1881 à un prix dérisoire, je pense partir là-dessus vu que je vais probablement commander l’afficheur chez eux.

Les prix sont en $, bien penser à faire la conversion $ / € et penser au frais de port + douane :wink:

Alfred:
Maintenant j’ai des questions sur la carte Arduino à acheter.
En réalité j’en souhaiterais 2 : une pour la mise au point qui resterait connectée à mon PC. Une carte pour débuter donc, un modèle de base avec quelques possibilités de connexions. Evidemment le port USB et un fonctionnement sous Linux. Que me conseilleriez vous chez Sparkfun ? Uno ou bien une Mega2560 ?

Et l’autre pour faire le tachymètre, je cherche donc un modèle basique, petit et suffisant pour ce faire. J’avais pensé à une Arduino Pro Mini que je programmerais via une carte additionnelle avec le port USB (mais on n’en trouve plus chez Sparkfun apparemment…).

Pour débuter une UNO sans hésiter ! La mega2560 a des spécificités caché qui la rende incompatible avec certaine shield et avec certain programme, elle est surtout destiné au "gros" projets pour des personnes initié à ses subtilités.
Pour le tachymétre une "pro mini 5v" de sparkfun est largement suffisant, les cartes pro mini et les ftdi basic sont toujours dispo, c'est sparkfun qui les produits :wink:
Sinon tu peut regarder c'est watterott (google ;)) il sont bien fourni et les prix sont assez intéressants (enfin sur certain truc pas tout).

Alfred:
Les alimentations que j’ai disponibles sur ma fraiseuse sont fournies par le variateur de commande du moteur triphasé (Altivar ATV15HU15M2). Il me donne :

  • +5V continu +/- 5% (soit entre 4.75V et 5.25V), Imax = 10 mA dont 1 mA utilisé pour la commande du variateur, donc reste 9 mA pour une autre utilisation en parallèle
  • +24V continu -15%/+20% (soit entre 20.4 V et 28.8V), Imax = 100 mA dont 8 sont réservés pour la commande du variateur, reste donc 90 mA environ
    Est-ce suffisant pour commander une carte Arduino, ainsi que son capteur et l’afficheur ?
    Je peux envisager de rajouter un régulateur de tension à base LM7805 derrière le 24V, mais je risque de manquer de courant, non ?
    1-Le capteur à effet Hall : 5 mA d’après la datasheet
    2- la carte Arduino = xxx mA ?
    3- l’afficheur = yyy mA ? (la doc dit de l’alimenter en 5V, mais ils ne donnent pas la consommation maxi, juste qu’il est construit sur un ATMega328

9mA c'est pas du tout suffisant, 90mA ... trés trés juste, je te conseil une petit alimentation 5v secteur sa ce trouve partout.

Bonjour à tous

Va donc pour une carte UNO pour programmation et debuggage.
Pour mon tachymètre, je pensais donc à une Arduino Pro Mini 328 - 5V/16MHz: http://www.sparkfun.com/products/9218
Pour charger le programme dans cette carte mini, il me faut si j'ai bien compris une carte additionnelle pour le port USB: soit celle ci http://www.sparkfun.com/products/9716 soit celle là FTDI Basic Breakout - 5V - DEV-10008 - SparkFun Electronics
Ces 2 cartes sont telles compatibles avec la pro mini? Je ne vois pas de connecteur pour les enficher dans la carte pro, ni sur les ftdi ni sur la pro mini. Comment fait on en pratique?

Les librairies et les programmes arduino doivent être écrit en c, en aucun cas cela n'est gênant, au contraire sparkfun a fait la librairie justement pour être utilisé avec un µc avr ou un arduino, de toute façon ce sont des afficheurs série qui s'utilise avec Serial.print("") donc c'est pas trés compliqué à utiliser.

OK je comprend mieux

Sinon tu peut regarder c'est watterott (google smiley-wink) il sont bien fourni et les prix sont assez intéressants (enfin sur certain truc pas tout).

Le truc c'est que je pensais commander tout chez Sparkfun: l'afficheur, le capteur, les cartes. C'est long les délais de livraison?
Chez Watterrot je n'ai pas trouvé la carte USB-Série (FTDI mini) (à moins que ce ne soit ceci: http://www.watterott.com/de/FTDI-Breakout-Reloaded-V11 ou bien cela: http://www.watterott.com/en/USB-2-Serial-Converter ??), ni un capteur à effet Hall.
Pour le capteur, je peux me fournir ailleurs, mais la carte FTDI ça m'embête un peu.

9mA c'est pas du tout suffisant, 90mA ... trés trés juste, je te conseil une petit alimentation 5v secteur sa ce trouve partout.

OK, il me faut donc une alim 5V. Je la ferai moins même, j'ai déjà tout ce qu'il faut pour cela (transfo, régulateur, diodes, condos, etc)

Alfred:
Va donc pour une carte UNO pour programmation et debuggage.
Pour mon tachymètre, je pensais donc à une Arduino Pro Mini 328 - 5V/16MHz: http://www.sparkfun.com/products/9218
Pour charger le programme dans cette carte mini, il me faut si j'ai bien compris une carte additionnelle pour le port USB: soit celle ci http://www.sparkfun.com/products/9716 soit celle là FTDI Basic Breakout - 5V - DEV-10008 - SparkFun Electronics
Ces 2 cartes sont telles compatibles avec la pro mini? Je ne vois pas de connecteur pour les enficher dans la carte pro, ni sur les ftdi ni sur la pro mini. Comment fait on en pratique?

Les deux ftdi basic sont identique, c'est juste que sparkfun n'as pas souder le connecteur 6pin sur la 2eme version.
Dans la pratique il faut souder un connecteur sur la rangé de trou noté blk à grn.

Alfred:
Le truc c'est que je pensais commander tout chez Sparkfun: l'afficheur, le capteur, les cartes. C'est long les délais de livraison?
Chez Watterrot je n'ai pas trouvé la carte USB-Série (FTDI mini) (à moins que ce ne soit ceci: http://www.watterott.com/de/FTDI-Breakout-Reloaded-V11 ou bien cela: http://www.watterott.com/en/USB-2-Serial-Converter ??), ni un capteur à effet Hall.
Pour le capteur, je peux me fournir ailleurs, mais la carte FTDI ça m'embête un peu.

lextronic fait des capteurs halls, le ftdi basic et le lcd mais il sont assez chére je trouve, pour le ftdi tu peut prendre le 2eme lien (la version "officiel" arduino) mais les deux marcheront pareil.

Bonjour
Merci pour ton aide.
Il me faut donc, si j'ai bien compris, souder un connecteur 6 pins sur la carte Arduino Pro Mini
et brancher un câble entre celle ci et cette carte FDTI http://www.watterott.com/en/USB-2-Serial-Converter
Quelle est la référence de connecteur que je dois souder sur la carte?
Et la référence du cable?

Merci d'avance

Cordialement,

Alfred

Alfred:
Il me faut donc, si j'ai bien compris, souder un connecteur 6 pins sur la carte Arduino Pro Mini
et brancher un câble entre celle ci et cette carte FDTI http://www.watterott.com/en/USB-2-Serial-Converter
Quelle est la référence de connecteur que je dois souder sur la carte?
Et la référence du cable?

Voila en gros tu viens juste "enficher" le ftdi basic dans le connecteur de la pro mini.
Il n'y a pas vraiment de référence, c'est juste de la barrette tulipe à section carré (pas 2.54mm).

Voila quelques petites photos pour te donner une idée :
http://skyduino.wordpress.com/?attachment_id=2084
http://skyduino.wordpress.com/?attachment_id=2085
http://skyduino.wordpress.com/?attachment_id=2086

Bonsoir
Merci beaucoup d'avoir pris le temps de faire des photos pour m'expliquer. 8)
J'ai commandé finalement les 2 cartes Arduino chez Lextronic (avec d'autres babioles) et le reste je le commanderai chez Watterott (notamment l'afficheur série)

Y'a plus qu'à, comme on dit :stuck_out_tongue:

A bientôt sur le forum

Alfred

Bonjour

J’ai reçu la semaine dernière tout mon petit matériel pour commencer à mettre mon point le tachymètre. Et j’ai commencé ce weekend à faire joujou avec l’Arduino Uno.

Mon capteur à effet HALL est un UGN3113U. Il fournit en sortie une tension de 150 à 200 mV environ quand il ne capte aucun champ magnétique. Et cette tension de sortie tombe à zéro lorsque je place un aimant à proximité.
Le programme que je prévois doit utiliser une interruption lorsque l’aimant fixé sur l’axe en rotation passe devant le capteur. Cette interruption doit exécuter une fonction qui va incrémenter un compteur.
Le problème est donc que je ne peux brancher directement la sortie du capteur sur la broche d’interruption de l’Arduino (la numéro 2 pour l’interruption 0) car la tension en sortie de capteur est bien trop faible (il faut, je pense, du +5V en entrée de l’Arduino). Il me donc l’amplifier, et même mieux utiliser un montage équivalent à un trigger de Schmitt (de mémoire je pense que cela s’appelle comme ça, arrêtez moi si je me trompe).

Je ne suis pas trop spécialiste de l’électronique, aussi je me permets de vous solliciter pour des propositions de solution. Idéalement j’imagine un montage qui fournirait un signal carré entre 0 et +5V en entrée de l’Arduino (du tout ou rien) en fonction de la tension de sortie du capteur :

  • Quand le capteur ne détecte rien, j’ai 150-200 mV en sa sortie, le montage convertirait cette tension en +5V vers l’entrée de l’Arduino
  • Quand le capteur détecte un champ magnétique, sa tension de sortie tombe à zéro, le montage devrait fournir en entrée de l’Arduino une tension nulle
  • La tension de seuil en sortie de capteur (celle qui déciderait si je dois être en 0 ou +5V) devrait se situer aux alentours de 100 mV.

Auriez vous une piste à me proposer ?

Merci d’avance

Cordialement,

Alfred

Bonjour

Mon capteur à effet HALL est un UGN3113U. Il fournit en sortie une tension de 150 à 200 mV environ quand il ne capte aucun champ magnétique. Et cette tension de sortie tombe à zéro lorsque je place un aimant à proximité.

Une simple résistance fait l'affaire, valeur pas critique qq kOhm voire qq dizaines de k Ohm
La sortie de l'UGN3113U est dite 'à collecteur ouvert', le capteur seul ne peut donner 5V, il lui faut une résistance 'de tirage' ou 'pull-up' pour les anglo-saxons.
C'est tellement utile que le fabricant du microcontroleur a intégré cette résistance dans chaque entrée numérique. Avec cette résistance interne ou une résistance externe (entre Vcc et Output, R sur le schéma joint) le signal fourni aura l'amplitude nécessaire (2 valeurs possibles : 0V ou 5V)

tirage.jpg

Super merci!
Encore plus simple que ce que j'imaginais !
8)

Bonsoir
Je viens de tester avec une résistance de 3kohms, ça marche, ça varie entre 0 et +5V. Par contre je ne comprend pas pourquoi j'ai +5V en sortie du capteur (lorsqu'il n'est pas soumis à un champ magnétique)?

Le capteur est conçu apparement comme ça au vu du schéma interne :
-pas de champ -> transistor OFF -> Vcc (si pull up présent)
-champ présent -> transistor ON -> 0V

al1fch:
Le capteur est conçu apparement comme ça au vu du schéma interne :
-pas de champ -> transistor OFF -> Vcc (si pull up présent)
-champ présent -> transistor ON -> 0V

ça ok
Ce que je ne comprends pas c'est pourquoi quand j'ai le transistor = OFF, j'ai VCC sur la broche OUTPUT (avec pull up). Il y a la résistance entre VCC et OUTPUT, donc je devrais avoir logiquement moins que VCC entre output et la masse?

Quand le transistor est OFF = bloqué, aucun courant ne circule dans la résistance, aucune chute de tension à ses bornes (U=R.I) , donc Vcc aux deux bouts !!

en haut du pull up : Vcc
en bas du pull up : (Vcc-R.I) = (Vcc -0) = Vcc

OK je comprends.
Merci de ton explication.