Inscription

Veuillez vous inscrire pour accéder à l'intégralité des sections du forum, aux images et interagir avec d'autres passionnés de la Ford Mustang.

Développement d'un Arduino comme controleur moteur gen 1

Démarré par filou96, 25 Juillet 2023 à 18:18:21

0 Membres et 1 Invité sur ce sujet

filou96

Non non
Bushing 36° max @ 3000 rpm centrifuge
Dépression 1° à 16° entre 6 et 12 inchesHg
Prise capsule au dessus des papillons
Désolé sur tél pas facile

geloche

J'ai pareil, mais je vais descendre le max de la centrifuge vers 2500. Je lis partout que 3000 c'est trop prudent sur le 289.
Par contre comme le carbu est trop gros je vais faire tourner le ralenti avec la depression (du coup à plus de 20 deg d'avance) pour ne pas être riche en toutes petites charges. Sinon à 90km/h j'ai l'AFR à 12. J'ai déjà fait un essai ça à l'air de tenir le ralenti.

filou96

Ouais j'ai aussi lu avance centrifuge max better @ 2500 RPM , bon avec les ressorts que j'avais je me contente de 3000 LOL

geloche

Je mets un faible et un moyen. Le max devrait être dans les 2750. Je verrai. Après un ressort ça se bricole.

filou96

Ca avance gentiment , j'ai reçu vis et entretoises et j'ai fait mes essais de montage à blanc, ça va.

Faut je colle un bornier à vis 8 fils à l'extérieur du boitier + micro USB chassis, pas me prendre la tête à ouvrir le boitier à chaque modif. La boite sera dans la boite à gant au chaud et au sec et à l'abri des vibrations , l'écran est indicatif , pas besoin de l'avoir sous le nez sauf si pb , j'ouvre la boite à gant, d'ailleurs capteur courtoisie light boite à gant pour allumage/extinction écran cool LOL
J'ai prévu fils blindés RPM et PWM et thermocouple.

J'ai reçu accéléromètre, magnétomètre , gyroscope , purée impressionnant dans 2 cm2 , il ira pas dans le montage car bouffe trop d'entrée et de mémoire mais je vais bien jouer avec sur le Mega, le Uno va aussi si y a que ça, tout comme le Nano , mais il est full le Nano là ;D  bien1

Ouais qques rayures .... dérapage de dremel  ::)

traffic.gif

traffic.gif

filou96

Salut,

Les connecteurs c'est une véritable jungle !!! sur Mouser ou Digikey y en a style 65 000 différents !!!!

Ca m'a bien pris 2h pour trouver , je me suis concentré sur une marque à la fin : Phoenix , leur site est cool avec des modèles 3D en présentation, j'ai pris ce couple enfichable 10 contacts , la partie bornier à vis externe avec une partie femelle qui rentre dans la boite et la 2eme partie avec picots à 90° dessous à souder sur CI ( on les voit pas sur la photo ). Les 2 fixées par 2 vis qui servent aussi de fixation sur la boite ... OUffff

traffic.gif

traffic.gif

filou96

Salut

Beau progrès aujourd'hui , j'ai supprimé une carte !!  rnr libéré des pin , thermocouple viré ^^

Test avec sonde de tempé automobile AEM ( celle qu'il y a sur la voiture ) et calcul de corrélation ( merci l'ordi car y a des logarithmes )
Courbe parfaite , testé en vrai sur breadboard , affiche au degré près sans carte, juste la sonde sur une entrée et 2 résistances  msk L'Arduino calcule les log comme une fleur :D , pourtant ils ne figurent pas dans le Language Reference ???
Calcul ci dessous , formule en haut du graphe indice de précision R2 = 0.999  bien1

traffic.gif

filou96

Progrès du soir , l'acquisition des tempé se fait maintenant de 0°C à 110°C à 1°C près maintenant avec la sonde AEM direct pas de cartes.
Ca mange 1 pin et 1 ligne de prog !!! je vais pas m'en priver, tempé BVA, tempé ext , int, pour clim.
Huile moteur franchement pour mon moteur pas la peine LOL
Tempé BVA plus curieux à suivre  bien1

Ne pouvant corréler de 0 à 110 °C avec un formule , sauf moyenne glissante flottante , mais là je rentrais dans du lourd de lourd en prog ..., tableaux tournants and co , et ça me dépasse un peu , j'ai trouvé d'autres bonnes solutions

J'ai fait 2 zones, y a pas de formule  qui fait tout sauf la moyenne glissante flottante , complexe ...

Basse tempé corrélée à 1°C de 0°C à 65°C, formules polynomiales pour les 2 en fait . Sur le breadboard ça roule nickel , une fois debuggé , tout plantait au début ..... fallait passer certaines variables de unit8_t et uint16_t ( pour économiser mémoire ...)  en float pour les calculs ... J'ai mis qques h à trouver ce bug. Les def de variables c'est tout une histoire !!!

traffic.gif

Tempé d'utilisation

traffic.gif

geloche

En général on ne s'emmerde pas avec les formules pour les sondes dans les boitiers des moteurs. Le fabricant de la sonde donne un tableau avec une dizaines de points, on la copie et on fait sa cuisine avec. La précision pour les températures n'a pas d'importance, sauf pour les tempés de déclenchement des ventilos (95 ou 100 degrés c'est pas pareil). Les sondes de tempé ne sont pas précises (5-10%), seuls les thermocontacts sont précis.

filou96

Oui j'y ai pensé au tableau, à 5°C près ça suffit clairement on est d'accord, mais je me suis dit que j'allais avant regarder si pas de corrélation. A vrai dire j'ai été surpris d'en trouver une tout de suite ;D

A l'arrivée un tableau et son utilisation mangent plus de mémoire qu'une formule unique, un peu ;D ... C'était l'option B le tableau si pas de corrélation , l'option formule est parfaite et tient en 1 ligne de prog.

Après je me suis dit pourquoi ne pas l'étendre aux tempé BVA, clim et extérieures. Pour ça que je suis descendu à 0°C , pour le moteur 70 - 110°C suffisent

Les sondes AEM sont parfaites pour l'Arduino, on balance les 5V régulés de l'Arduino dedans ( qques mA ) et on récupère les tensions en mV des graphes selon la tempé sur une pullup de 2.2kΩ , y a plus qu'à les rentrer dans une pin analogique.

geloche

Le seul pb c'est que le logarithme est très cher en temps de calcul sur un petit cpu, et en RAM de la stack je pense. Si tu ne fais pas de temps réel ce n'est pas un pb. Une table comme ça c'est 20 bytes dans la rom.
Toutes les sondes NTC se branchent comme tu le décris.

filou96

Je fais un calcul toutes les 5 sec pour tout ce qui est relevés moteur , pas besoin de plus et un peu obligé sinon le GPS bugge il n'a pas le temps , il lui faut presque 1 sec pour balancer ttes ses données, il rafraichit à 1 Hz.

Les dernières formules sont polynomiales et n'ont pas de log ,

geloche

Oui le gps a un encodage hyper lourd (genre 60bit par bit de donnée) donc c'est lent. Normalement les gps des téléphones utilisent les accéléromètres pour interpoler entre les acquisitions.

Même avec tes formules sans log le flottant c'est cher y compris en RAM (sur un petit 8bit).

filou96

Oui j'essaye de faire gaffe aux variables, mais il y a qques float. J'ai qd même encore un peu de marge sur le Nano

Sketch uses 19786 bytes (64%) of program storage space. Maximum is 30720 bytes.
Global variables use 1670 bytes (81%) of dynamic memory, leaving 378 bytes for local variables. Maximum is 2048 bytes.

filou96

J'ai monté accéléromètre , SD card prog en dataloging , GPS et le reste .....Ben oupssssss hein35

Sketch uses 31584 bytes (102%) of program storage space. Maximum is 30720 bytes.
Global variables use 2517 bytes (122%) of dynamic memory, leaving -469 bytes for local variables. Maximum is 2048 bytes.
Sketch too big; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing it.
text section exceeds available space in board

Compilation error: text section exceeds available space in board


LOL je regarde si le Mega rentre dans la boite , Nano is too nano LOL

Avec le Dataloging et l'accéléromètre et le GPS , je peux extrapoler la puissance moteur :D et d'autres choses , c'est bien tentant.

Faut vraiment que je sécurise ce qui est gestion moteur de base : tempé , ventilo etc ...

Et tout le reste juste là pour m'amuser ...

Je peux aussi envisager 2 Arduino mais c'est casse pied , 2 boitiers , récupérer certaines variables qui vont aux 2 etc ... que de fils ...

geloche

Le Gps et même l'accéléromètre pour mesurer la puissance marche très mal, l'erreur et la dispersion sont énormes. La seule façon précise c'est de relever (au min 10 fois par seconde) le rpm ou la vitesse à partir de l'allumage ou du capteur d'abs, et de recalculer en utilisant le poid, les rapports de la transmission et la taille des roues. Et même comme ça c'est pas simple.

Je n'ai pas compris, ton log est envoyé sur le pc ?

L'accéléromètre c'est bien pour mesurer la performance du chassis: les accels laterales dans les virages, les deccel du freinage. C'est très utilisé pour régler la suspension. Ou pour améliorer le pilotage sur circuit.

filou96

Réponse partielle
J ai un module SD Card qui enregistre les log des variables sélectionnées
Le Mega gère sans pb occupation mém peanuts

filou96

Salut ,

J'ai voulu faire le montage définitif avec le Nano, donc j'ai voulu optimiser le programme final et là il me saoule  sbhy  sbhy  sbhy

Je ne peux pas mettre la SD card because mémoire full ( bon OK pas un drame, je le savais , donc pas de datalogging )

Les données du GPS pompent bcp de ressources et la liaison en softwareSerial ( pas de Rx Tx dispo sur le Nano ) n'arrange rien, si je branche le GPS en Tx Rx , ça marche mais c'est la ligne qui sert au Serial Monitor de l'IDE sur l'ordinateur, là ou on écrit le prog et où on lit ce que le Nano raconte via l'USB , donc plus d'upload de prog possible sans débrancher le GPS ... Bref il me saoule.
Pendant ce temps évidemment , il ça retentit sur le reste du prog de gestion moteur qui a du mal à passer entre les gouttes.

J'ai passé pleins d'heures à debugger le truc , je vais essayer le multitask , c'est à dire faire effectuer les taches les unes après les autres par périodes définies par le compteur millis() et non en routine permanente. Je vais me pencher sur la création de Fonctions_perso , une fois crées il suffira de les appeler dans le loop() bcp plus simple et compact.

Si ça va pas , je fais avec le Mega , là par de pb ...

A suivre ;D

geloche

Passes à un cpu plus gros. Software serial doit bouffer beaucoup de cpu, ca peut commencer à déconner si tu charges trop en calcul. Faire du multitask dans ces conditions c'est compliqué. Certe tu vas beaucoup apprendre mais au prix de beaucoup beaucoup de jours de debug.

filou96

Ben écoute , franchement , multitask de base sans fonctions , juste avec les millis() et surtout , j'ai passé toutes mes constantes style chaines de texte que ce soit écran ou Serial monitor de la RAM vers la Flash et ça tourne ! Ca a libéré pas mal de RAM , c'est elle qui saturait

J'espère même sans trop y croire du coup y caser la SD card en plus, enfin essayer  , c'est sympa pour lire des log bien1
A suivre