Auteur Sujet: Premiers pas de bricoleau  (Lu 1475 fois)

msport

  • Sr. Member
  • ****
  • Messages: 422
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Premiers pas de bricoleau
« Réponse #15 le: décembre 16, 2017, 11:13:41 pm »
Non, à priori un moteur bloqué consomme plus qu'à vide. C'est la force contre électromotrice ( FCEM ~ tension) qui reflète la vitesse.
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1204
    • Voir le profil
Re : Premiers pas de bricoleau
« Réponse #16 le: décembre 16, 2017, 11:18:50 pm »
Le courant donne une mesure du couple, pas de la vitesse de rotation

Pour mesurer la vitesse de rotation, il faut mesurer la force contre électromotrice (FCEM)

Pour ce faire, on coupe la PWM, on attend quelques dizaines de µs que le courant tombe à zéro (inductance du moteur) et on mesure la FCEM aux bornes du moteur. On calcule la PWM à appliquer et on la remet en marche.

Sur mon proto qui est une reproduction en Arduino d'un système qui tourne sur PIC depuis maintenant 3 ans, la PWM est coupée toutes les 10ms.

EDIT: Oups, grillé :-)
« Modifié: décembre 17, 2017, 11:19:06 am par Jean-Luc »

bricoleau

  • Jr. Member
  • **
  • Messages: 51
    • Voir le profil
Re : Premiers pas de bricoleau
« Réponse #17 le: décembre 18, 2017, 11:01:16 pm »
Ok ok
Sur le principe c'est ce qui est expliqué par exemple là : http://amfn.nice.free.fr/alim.htm

Donc je coupe l'alim du moteur, j'attends éventuellement un pouillème, puis je mesure la tension résiduelle sur le rail, issue du moteur qui continue à tourner par inertie mécanique, agissant alors comme un générateur.
Je vais tâcher de commencer par observer le phénomène à l'oscillo, pour bien visualiser à quoi j'ai à faire.

Pour mesurer la tension résiduelle, est-ce que ça peut être aussi simple que de passer par un diviseur de tension et des analogread() de l'arduino?
Voire éventuellement de passer directement par les registres de l'atmega pour des lectures plus rapides?

NB : avec ce montage de hachage de tension, j'ai un rail qui reste à 12V, l'autre qui est haché à GND. C'est celui-là qui m'intéresse.
Lorsque le MOSFET est non passant, le rail est "en l'air" (au bémol près de la diode roue libre et du moteur de l'éventuelle loco présente sur la voie).
Je pense ajouter un diviseur de tension entre ce rail et GND, avec par exemple des résistances de 30k et 10k
Je m'attends donc à faire des mesures à l'envers, avec une tension résiduelle qui remonte vers 12V lorsque le moteur ralentit.
Et accessoirement la même lecture de tension (toujours hors alim) devrait me permettre de détecter l'occupation de voie, même avec une loco à l'arrêt. Car en l'absence de loco sur la voie, le rail est vraiment "en l'air" et le diviseur de tension va faire office de pull down. Donc tension à 0V => voie libre. Tension à 12V => voie occupée avec loco à l'arrêt.
Me gourre-je?
« Modifié: décembre 18, 2017, 11:07:35 pm par bricoleau »

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1204
    • Voir le profil
Re : Re : Premiers pas de bricoleau
« Réponse #18 le: décembre 18, 2017, 11:31:57 pm »
Donc je coupe l'alim du moteur, j'attends éventuellement un pouillème,

Pas éventuellement, à coup sûr. Tant que la diode roue libre conduit, la tension que tu mesureras est le seuil de la diode en négatif, pas la FCEM.

Citer
Pour mesurer la tension résiduelle, est-ce que ça peut être aussi simple que de passer par un diviseur de tension et des analogread() de l'arduino?

analogRead oui mais pas avec un diviseur de tension. Il faut que le courant soit quasi-nul sinon le générateur que constitue le moteur de la locomotive va débiter, le moteur sera freiné, la tension va chuter. Il faut utiliser un ampli op avec des résistances de 1MΩ en entrée. Il faut également filtrer avec une capa pour la HF car la FCEM fluctue lors de la rotation. Tu as le schéma à la page 3 de http://www.locoduino.org/pic/AlimentationTraction.pdf

Citer
Voire éventuellement de passer directement par les registres de l'atmega pour des lectures plus rapides?

un pouillème. Par contre il faut changer l'horloge du convertisseur analogique numérique pour faire des conversions plus rapides.

Tu as du code ici : https://git.framasoft.org/locoduino.org/AlimentationTraction

Par défaut l'ADC de l'Arduino est à 125kHz et ça met 150µs pour faire une conversion. Je passe l'horloge à 1MHz et je fais 6 conversions successives, je les trie, j'élimine les deux extrêmes et je moyenne les 4 qui restent.

Citer
Et accessoirement la même lecture de tension (toujours hors alim) devrait me permettre de détecter l'occupation de voie, même avec une loco à l'arrêt. Car en l'absence de loco sur la voie, le rail est vraiment "en l'air" et le diviseur de tension va faire office de pull down. Donc tension à 0V => voie libre. Tension à 12V => voie occupée avec loco à l'arrêt.
Me gourre-je?

Oui car si la loco est à l'arrêt la PWM est à 0 et la tension est nulle

bricoleau

  • Jr. Member
  • **
  • Messages: 51
    • Voir le profil
Re : Premiers pas de bricoleau
« Réponse #19 le: décembre 19, 2017, 12:08:47 am »
Merci encore.

J'avais bien repéré ce beau PDF avec tous les schémas.
C'est justement la réponse que j'avais peur d'entendre... Les ampli op, un vieux trauma de mes années d'études.  ;D

Je vais prendre le temps d'une remise à niveau théorique, pour bien comprendre ce schéma avant de foncer tête baissée.