Salut,
Pardon Pascal, j'ai mélangé tours/minutes et Hertz
Il y a deux trous et le moteur tourne à environ 10000 t / mn !!!
-----

Salut,
Pardon Pascal, j'ai mélangé tours/minutes et Hertz
Il y a deux trous et le moteur tourne à environ 10000 t / mn !!!
Le savoir des uns peut faire le bonheur des autres
Salut,
Je ne suis pas prêt à me jeter dans le grand bain mais j'ai pris un billet d'entrée !!!Aller jette toi dans le grand bain!
J'ai cogité et voici une chaine schématique, y a t il toutes les informations pour élaborer un programme ? Arduino ou Picaxe
![]()
Merci
Le savoir des uns peut faire le bonheur des autres
Je comprend que tu asservis les vitesses de rotation des moteurs.
Agir sur la pwm de chaque moteur ne suffit pas ?
L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .
Bonjour
Et pourquoi pas simplement 2 servos -> 2 potentiomètres et un Arduino ou Picaxe pour convertir en 2 PWM pour les moteurs ?
l'UC n'aurait qu'à calculer, la latence ne serait due qu'à la vitesse des servos.
![]()
Dernière modification par Pascal071 ; 12/10/2025 à 20h43.
Pascal
bonsoir
c'est là son problème les deux moteurs ne tournent pas à la même vitesse donc mesure de vitesse de rotation et asservissement.
Il faut avoir des capteurs de vitesse ad hoc et pisser du code.
Je l'ai fait pour quelques robots(mais avec PX8A32)et cela fonctionne bien.
JR
l'électronique c'est pas du vaudou!
L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .
Bonsoir
je ne comprends pas l'utilité d'un asservissement..
si les 2 moteurs sont identiques, comme ils sont soumis au même effort, un simple offset sur la commande DIR devrait faire aller droit l'engin ?
ou un décalage des 2 sorties PWM ?
ça peut être fait avec un ajustable lu par la carte UC.
Pascal
Salut,
Et non! les régulateurs n'ont pas le même gain, ce qui fait qu'un moteur démarre avant et ne tourne pas à la même vitesseJe comprend que tu asservis les vitesses de rotation des moteurs.
Agir sur la pwm de chaque moteur ne suffit pas ?
Bien vuc'est là son problème les deux moteurs ne tournent pas à la même vitesse donc mesure de vitesse de rotation et asservissement.
Si ce n'était que ça il y a les trim pour corrigerEn ligne droite ? Il y a une sorte d'offset dans la commande de gaz
J'ai fait une multitude d'essais , toute les combinaisons inimaginable, il me faut une boucleEt pourquoi pas simplement 2 servos -> 2 potentiomètres et un Arduino ou Picaxe pour convertir en 2 PWM pour les moteurs ?
l'UC n'aurait qu'à calculer, la latence ne serait due qu'à la vitesse des servos.
Alors là pour pisser !!! j'ai des soucis avec la prostate !!!Il faut avoir des capteurs de vitesse ad hoc et pisser du code.
Merci les gars, sympa !
Le savoir des uns peut faire le bonheur des autres
Comment l'avion est utilisé ? - je n'ai connu que des gros bouzins avec un radar dans nez -
Lorsque tu veux décoler pour la première fois, tu augmentes les gaz (une seule manette) et la pwm envoyée à chaque pilote moteur est la même pour les deux.
Lors du premier essai, si l'avion vole de travers avec une commande "vol en ligne droite", tu agis sur un trim. Ce trime est mémorisé pour les vols futurs mais il peut être modifié puis à nouveau mémorisé.
Jusque-là est-ce exacte ?
Ce que tu veux obtenir in fine est une variation de la vitesse de rotation des moteurs G et D, pour s'adapter automatiquement aux rayons des virages effectués par l'avion. Exacte ?
Sous quelle forme se présente l'information trim ? tension analogique venant d'un potar ?
Je sens bien qu'il y a moyen d'obtenir le bon résultat !
L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .
bonjour
pour avoir eu à résoudre le problème il faut savoir qu'il n'existe pas deux moteurs continus strictement identiques,les différences peuvent être faibles mais quand même emmerdantes.
Mon dernier robot est un chenillé avec capteur intégré au moteur ce qui rend la chose plus facile coté hard mais il faut quand même coder un PID.
JR
PS: comme j'utilise des µC exotiques fournir le code ne servirait à personne.
l'électronique c'est pas du vaudou!
Re,
OuiJusque-là est-ce exacte ?
Oui, je veux maitriser la vitesse de rotation qui me permet d'aller tout droit sans rien toucher, ou virer à droite ou à gauche par DirectionCe que tu veux obtenir in fine est une variation de la vitesse de rotation des moteurs G et D, pour s'adapter automatiquement aux rayons des virages effectués par l'avion. Exacte ?
Sur les anciennes radio, sur l'émetteur, c'était comme ça, on décalait la position du potar, ce qui modifiait la durée du PWM, mais maintenant ? c'est une succession d'appuis alors !!! ?Sous quelle forme se présente l'information trim ? tension analogique venant d'un potar ?
Là, ce sont des moteurs Brushless ( Tri en plus !!!)pour avoir eu à résoudre le problème il faut savoir qu'il n'existe pas deux moteurs continus strictement identiques, les différences peuvent être faibles mais quand même emmerdantes.
Pour l'instant ce n'est ni avion, ni bateau, ni drone, j'essaye de trouver une solutionComment l'avion est utilisé ?
Le savoir des uns peut faire le bonheur des autres
D'accord, erreur de ma part alors (j'ai pas tout lu depuis le début).
Ce n'est donc pas çaqui s'applique exclusivement à un avion à deux moteurs (G et D).Ce que tu veux obtenir in fine est une variation de la vitesse de rotation des moteurs G et D, pour s'adapter automatiquement aux rayons des virages effectués par l'avion.
Tu veux une fonction universelle pour tout ce qui doit pouvoir tourner avec deux moteurs G et D.
C'est moins simple, excuse-moi pour la perte de temps.
Reste plus qu'à suivre la piste proposée par jiherve![]()
L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .
Re,
Non, sur un avion il y a aussi l'empênage , cela peut servir sur un bateau, un chenillé ! etc..qui s'applique exclusivement à un avion à deux moteurs (G et D).
Ce serait des moteurs en continus et il y aurait plus d'espace une tachy et roulez !! mais là, le problème est la traduction du signal en tension continue, les filtres c'est lent, il y a des CI mais ils sont chez le marchand et je ne sais pas lequel choisir, il y a tellement de fonctions
J'ai tout mon temps, je suis un boomer !!C'est moins simple, excuse-moi pour la perte de temps.
J'étudie les PID que propose Jhervé
Dernière modification par Positron1 ; 13/10/2025 à 17h11.
Le savoir des uns peut faire le bonheur des autres
S'il y a trim je ne vois pas le problème pour aller en ligne droite.
La correction pour tenir compte des rayon des virage est un autre problème.
C'est comme ça que je le comprend, mais bon je suis pas modéliste . . .
Dernière modification par antek ; 13/10/2025 à 17h21.
L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .
RE,
C'est vrai, il semblerait que ...! mais ce n'est pas aussi facile, d'abord le trim au maxi ne suffit pas à faire démarrer les moteurs en même temps et en plus la progression de la vitesse est différente
ça c'est facile on trompe la mesure PWM (555) dans un sens ou dans l'autre, ça avec le montage que j'ai fait, ça fonctionne très bien et en plus l'ami mag1 m'a fait un programme Picaxe qui fonctionne parfaitementLa correction pour tenir compte des rayon des virage est un autre problème.
Dernière modification par Positron1 ; 13/10/2025 à 18h42.
Le savoir des uns peut faire le bonheur des autres
Bonjour,
Je ne suis pas intervenu depuis, je pense que l'on est aller au bout de ce que l'on pouvait faire avec un (des) picaxes. Les avions et les bateaux bimoteurs utilisent tous un gouvernail, non sans raisons. Le montage serait par contre utile pour un véhicule à chenilles par ex.
Bonne bidouille...
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Salut mag1,
Content de te revoir !
Mais même avec un gouvernail ou un empennage l'appareil serait ingouvernableLes avions et les bateaux bimoteurs utilisent tous un gouvernail, non sans raisons. Le montage serait par contre utile pour un véhicule à chenilles par ex.
Probablement et je t'en remercie, d'autant plus qu'il n'y a pas d'entrées analogique, je n'ai pas dit mon dernier mot !! quand je tiens un morceau, je ne le lâche pas comme ça !je pense que l'on est aller au bout de ce que l'on pouvait faire avec un (des) picaxes.
Je vais voir en analogique et si ça marche pas je testerais avec l'arduino ! Non mais !!!
Le savoir des uns peut faire le bonheur des autres
Salut,
Afin de trouver une solution à mon problème de conversion de capteur optique en tension continu
J'ai trouvé un programme pour un arduino, mais il me met erreur dont voici le texte :
:1:1: error: expected unqualified-id before numeric constant
1
^
64:42: error: expected ',' or ';' before '\x3030'
const unsigned long micros_per_minute= 60'000'000;
^~~~~
In function 'void setup()':
: error: 'interrupt_pin' was not declared in this scope
pinMode(interrupt_pin, INPUT_PULLUP);
^~~~~~~~~~~~~
note: suggested alternative: 'interrupts'
pinMode(interrupt_pin, INPUT_PULLUP);
^~~~~~~~~~~~~
interrupts
: error: 'analogWriteResolution' was not declared in this scope
analogWriteResolution(analog_w rite_bits_resolution);
^~~~~~~~~~~~~~~~~~~~~
note: suggested alternative: 'analog_write_bits_resolution'
analogWriteResolution(analog_w rite_bits_resolution);
^~~~~~~~~~~~~~~~~~~~~
analog_write_bits_resolution
exit status 1
Compilation error: expected unqualified-id before numeric constant
Je vous joint le programme :
Quelqu'un aurait il la sympathie de me dire s'il y a moyen d'en tirer quelque chose , si c'est exploitable ou a virerCode:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 //scaled analog tachometer, for illustrative purposes only. //config const unsigned interrupt_pin= 2; // <=> optical sensor const unsigned analog_pin= 3; // <=> V_out const unsigned onboard_DAC_bits_resolution= 12; // i.e. 12-bits onboard digital to analog converter const unsigned rpm_min= 1500; const unsigned rpm_max= 15000; const unsigned long ticks_per_revolution= 2; //computed constants const unsigned analog_write_bits_resolution= onboard_DAC_bits_resolution; const unsigned analog_write_max= (1<<analog_write_bits_resolution)-1; const unsigned long micros_per_minute= 60'000'000; const unsigned long micros_per_minute_per_tick= micros_per_minute / ticks_per_revolution; #if defined SIMULATION_MODE #include "simulation_mode.h" #endif inline unsigned clamp(unsigned n, unsigned min, unsigned max) { n= n<min ? min : n; n= n>max ? max : n; return n; } void on_tick_event() { static unsigned long current_time; static unsigned long previous_time; static unsigned long elapsed_time; current_time= micros(); elapsed_time= current_time - previous_time; unsigned rpm_real= micros_per_minute_per_tick/elapsed_time; unsigned rpm_clamped= clamp(rpm_real, rpm_min, rpm_max); unsigned integral_analog= ((rpm_clamped - rpm_min) * analog_write_max) / (rpm_max - rpm_min); analogWrite(analog_pin, integral_analog); // -> V_out previous_time= current_time; } void setup() { pinMode(interrupt_pin, INPUT_PULLUP); analogWriteResolution(analog_write_bits_resolution); attachInterrupt(digitalPinToInterrupt(interrupt_pin), on_tick_event, RISING); } void loop() { }
Il y a un code avec:
1
2
3
4
5
6
7
extrait du journal de simulation:
rpm: 100, analog: 0, volts: 0.00
rpm: 1500, analog: 0, volts: 0.00
rpm: 15000, analog: 4095, volts: 5.00
rpm: 16000, analog: 4095, volts: 5.00
rpm: 6000, analog: 1365, volts: 1.67
rpm: 3000, analog: 455, volts: 0.56
Je remercie celui qui va se sacrifier !!
Salutations
Dernière modification par Antoane ; 26/10/2025 à 10h39. Motif: Ajout balises [/code]
Le savoir des uns peut faire le bonheur des autres
Bonjour
enlever tous les chiffres au début (erreur au copiage certainement)
enlever les apostrophes: const unsigned long micros_per_minute= 60000000;
la commande analogWriteResolution(); n'est pas reconnue... ?
quand on pointe dessus, rien ne s'affiche, contrairement aux autres fonctions
c'est pourtant la bonne syntaxe: https://docs.arduino.cc/language-ref...iteResolution/
Il n'y a plus d'erreur lorsqu'on enlève cette fonction, mais la résolution analogWrite reste à 8bits (par défaut)
Pascal
après essais, la fonction n'est pas reconnue avec environnement Arduino UNO R3
plus d'erreur en déclarant un Arduino UNOR4
donc 0-255 seulement avec un UNO R3
....
Pascal
Salut,
D'abord un grand merci pour ton aide, j'avoue chez moi, la programmation, c'est une lacune !! il faudrait que je m'y mette mais j'ai tellement à faire !!
Je vais donc abuser de ton aide !
J'ai tenté de modifier comme tu m'as indiqué J'ai viré tous les chiffres , les apostrophes, c'est mieux mais j'ai toujours cette erreur analogWriteRésolution, d'après ton dernier post, ce serait Arduino uno , j'ai IDE 2.3.6
Dois je télécharger la dernière mouture ?
En supposant que j'arrive à corriger l'erreur, est ce qu'en doublant ce programme, en ajoutant une entrée et sortie je peux avoir deux entrées numériques et deux sorties analogiques 0/5 V ?
Merci
Cordialement
Le savoir des uns peut faire le bonheur des autres
De toutes façons il faut télécharger la dernière version de l'ide.
Si tu utilises un uno r3, il faut se contenter de 8 bits en sortie et enlever toutes les lignes qui concernent la résolution en sortie.
Je n'ai même pas étudié ce que faisait ton programme, juste essayé de résoudre l'erreur.. Oui, avec un arduino uno, nano, on a quelques entrées Analogiques 10 bits et quelques sorties pwm en 8 bits. Pour la config je peux t'aider, mais pour le traitement de ton contrôle de moteurs, je ne serai pas expert !
Pascal
Bonjour,
Si c'est pour faire une lecture numérique et une sortie PWM (0 à 1023), un picaxe peut s'en sortir.
Quelle est la fréquence d'entrée du numérique?
Il y a aussi des convertisseurs numérique/analogique spécifiques, comme le LM297N8 (https://www.ti.com/lit/ds/symlink/lm2907-n.pdf)
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
je ne sais pas gérer 2 interruptions à cette vitesse avec 1 seul arduino..
salut Mag1:
avec 2 tops /tour:
rpm_min= 1500 (f=50Hz)
rpm_max= 15000 (f=500Hz)
Pascal
Salut,
Je peux peut-être mettre deux 328 en parallèle avec le même programme ?je ne sais pas gérer 2 interruptions à cette vitesse avec 1 seul arduino..
ça je sais faire !!Pour la config je peux t'aider, mais pour le traitement de ton contrôle de moteurs, je ne serai pas expert !
Salut mag1, je suis toujours avec mes moteurs/régulateurs , après m' avoir réglé le problème de signal #112 je cherche à les faire tourner à la même vitesse il y en a un moins vaillant que l'autre !
Je cherche à traduire le signal optique en tension continue variable selon la vitesse pour appliquer au montage avec les 555, je pensais avoir trouvé un programme arduino mais il a une erreur et peut-être qu'il me faudra deux 328
Je vais voir du coté du coté LM 297N8, J'ai fait rentrer deux module CNA, ils sont en 12 V , en 5 V les résultats ne sont pas fameux, Pour les refaire en 5 V j'ai extirpé le schéma mais la référence du CI est meulée !! c'est certainement un AOP , il me manque des liaisons !! J'ai fait plusieurs filtres mais le temps de réponse est trop long.
Merci les gars. Bonne journée
Cordialement
Le savoir des uns peut faire le bonheur des autres
bonjour,
encore une fois passer en assembleur et par une fonction périodemètre et là tout baigne.
Le timer 1 possède une fonction de capture et 16bits de résolution ce qui est largement suffisant, bien sur il faudra un mux devant l'entrée ICP1 et gérer çà correctement, on doit pouvoir faire des mesures à 25Hz.
Les solutions analogiques sont vouées à l’échec compte tenu de la dispersion des composants avec le LM29x7 l'écart peut aller jusqu'à 4% en utilisant des condensateurs et résistance à 1% et ce sans compter les effets de la température.
Tu disposes de capteurs logiques donc il faut rester en numérique.
JR
l'électronique c'est pas du vaudou!
Salut,
Tu es bien sympa l'ami jiherve, tu me dis de passer en assembleur !! moi je veux bien !! encore faudrait il que je sache ce que assembleur veut dire !!
Je sais qu'une solution existe un MCU, deux entrées capteurs , deux entrées PWM Dir et Gaz, deux sorties PWM vers les régulateurs et un programme qui gère tout ça et roulez petit bolides, mais le programme je ne sais pas faire , comme tu dis pisser du code !! tu n'aurais pas une envie par hasard ? !!!
Tu m'en as parlé #160 et je t'ai répondu que ce n'était pas des moteurs en continu mais des Bruchless, ce n'est peut être pas la même sauce !
Merci
Le savoir des uns peut faire le bonheur des autres
bonsoir
pour avoir une réponse plus rapide, il faut multiplier le nombre de secteurs sur le capteurJe cherche à traduire le signal optique en tension continue variable selon la vitesse pour appliquer au montage avec les 555...J'ai fait plusieurs filtres mais le temps de réponse est trop long.
2 top/tours pour 1500 à 15000 tours font 2 à 20mS.
avec une pompe à diode, (ce que fait le LM 297N8) lisser 20mS ne peut pas être plus court que 40mS, même avec le meilleur des filtres!
Pascal
bonjour
avec 500Hz à 5000Hz pour 1500 à 15000 t/mn, le filtre sera plus rapide
exemples:
https://www.amazon.com/grille-motor-.../dp/B0BLW96CRZ
https://fr.aliexpress.com/i/1005005810258183.html
![]()
Pascal
Salut,
je comprends ta solution mais je n'ai pas de place pour loger ce type de grille, éventuellement je peux percer d'autres trous sur le moyeu jusqu'à 8 !!
J'entrevoie une autre solution que je vais tester
Merci
Clt
Le savoir des uns peut faire le bonheur des autres
