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

Salut,

Je progresse après 1000 heures de lecture et de debuggage. Donc c'est le Nano sans SD card , ça va et ça m'arrange. Le log ci dessous est de l'ordi.
Ces derniers 4 j j'ai appris les bases du multitask et des interrupt() internes ou externes ( pratique qd on a un bouton poussoir et que le prog tourne ailleurs ... )

Drolement bien, pour les RPM , je les ai au tour près entre noInterrupt() et interrupt() car c'est calculé avec pulseIn() qui travaille à la µs, donc pas de taches parralèles possibles sans avoir des RPM baladeurs ... à +/- 200 - 300 près ...  bien1

Pour le bouton poussoir de changement d'affichage , éviter le bounce , faire qu'il note que je veux switcher la page , même en plein compute de variables, il me la change parfois 5 sec après mais c'est pas grave, il a pris l'info en RAM dès que je l'ai pressé grace à l'attachInterrupt() qui lui est lié, je represse : la page d'après et dernière page le met en veille.

Bon faut pas en abuser des interrupt() dans un prog car ça met le proc et en pause, il enregistre là ou il en est et reprend après. La avec 2 petits ça passe nickel

Cool  rnr

J'ai aussi testé la régule des ventilos grandeur nature avec les vraies valeurs , réglé sur 88°C , je vous abreuve pas de log , mais ça marche super bien.
Y aura des bugs encore sûr et des seuils à ajuster mais ça roule nickel, juste un extrait de log , le Spal gère la tempé de la sonde AEM à 0,5°C près, il faut environ 1 mn au PID pour caler les ventilos sur un régime constant à qques % de variation près.
J'ai choisis l'option de les couper au dessus de 70 km/h , ça fera des ampères en moins , et ile ne feront pas frein avec le shroud , sauf tempé indécente bien sur ( ce qui ne devrait pas arriver normalement LOL )

18:10:17.159 -> Time: 16:10:16.000
18:10:17.159 -> Date: 17/10/2023
18:10:17.159 -> Fix: 1 quality: 2
18:10:17.159 -> Location: 4859.5229N, 208.4770E
18:10:17.192 -> Speed (knots): 40.49
18:10:17.192 -> Angle: 17.91
18:10:17.192 -> Altitude: 53.50
18:10:17.224 -> Satellites: 8
18:10:17.224 -> Antenna status: 2
18:10:17.224 -> tempAEM = 88.44°C
18:10:17.256 -> PWMval1 = 157.97 Dutycycle = 38%
18:10:17.256 -> Contact = 1 Clim = 1 pompe = 0 12V Batterie : 1
18:10:17.288 ->  RPM = 3011 pHigh = 996 pLow = 3985
18:10:17.288 -> interruptScreenCount = 15 screenCount = 3

Là je crois que je suis bon pour rentrer tout ça dans la boite  :v:

geloche

Y a plusieurs façons de filtrer les glitch des boutons. Les deux les plus simples: sur une durée on compte les 0 et les 1 et on compare, ou alors on remplis un shift reg de bit d'acquisition et on veut un FF ou FFFF. Les filtres anti-glitch hardware utilisent un shift reg.

filou96

Bah j'ai fait simple,  interruptScreenCount = 15 : c'est la variable DANS la fonction de l'interrupt stockée en RAM , tu peux voir 15 rebonds du bouton LOL

le screenCount = 3 c'est le N° de la page affichée , en gros je récupère interruptScreenCount dans le loop() , si >0 j'incrémente le screenCount de 1 et je remets interruptScreenCount à 0 et voila , jusqu'au prochain appui de bouton.

machbill

Citation de: geloche le 17 Octobre 2023 à 19:00:49Y a plusieurs façons de filtrer les glitch des boutons. Les deux les plus simples: sur une durée on compte les 0 et les 1 et on compare, ou alors on remplis un shift reg de bit d'acquisition et on veut un FF ou FFFF. Les filtres anti-glitch hardware utilisent un shift reg.

oui de mémoire avec l'électronique c'est la bascule de schmitt, mais là c'est quand tu veux des informations d'entrées fiables, dans ton cas, si j'ai bien compris, c'est le comptage des tours moteurs.

filou96

Oui
J ai 2 interrupt()
1 soft pour les pulseIn() qui me donnent les RPM
Et 1 hard externe pour le bouton qui switche les pages du display ;)

Geloche me parle en assembleur arghhh

geloche

Je parlais de comment on filtre les glitchs des boutons.


geloche

Citation de: filou96 le 17 Octobre 2023 à 20:18:19Oui merci bien1
Mais j en suis pas à l assembleur ;D
Là ça tourne

Aucun rapport avec l'assembleur. Ca dépend de ce que t'as comme libs pour ce genre de taches.
Entre le C que tu utilises sur un 8bit et l'assembleur il n'y a une grosse distance. A part pour les multiplications et autree calculs complexes

filou96

Salut , ça avance , cablage fait à 80% manque la platine des relais avec optocoupleurs et les 2 régulateurs

A gauche l'interface qui sert à brancher la prise 10 broches et supporte aussi les ponts de résistance et le le MOSFET optocoupleur qui pilote le PWM des ventilos, au centre l'Arduino Nano sur son shield ou est aussi soudé le module GPS , à dte l'écran.

J'attends la plaque de fond du boitier pour monter les entretoises. Ca ne saurait tarder.

J'ai aussi le schéma Fritzing qui va bien avec les N° repères, les couleurs de fil etc ..... Sinon c'est mort LOL J'ai pris une boite de fils AWG24, je ne travaille que sur des mA et mV , sinon y a du 3V, 5V, 8V et 12-14V max, et  aussi du µV , donc boite ( chinoise of course ) 6 couleurs de fils seulement , donc faut gérer .

La puissance est gérée par des relais externe automobiles.

Ce qui est top , je branche mon ordi en USB, fais les modif, reboot et voila aussi simple :D

traffic.gif

traffic.gif

filou96

Salut ,

Comme toujours , on monte la V1 , plein de pb à résoudre , du coup à la fin ça marche mais c'est moche avec des défauts, fils à la volée , d'autre coupés etc ... , donc on remonte une V2 en tenant compte des pb rencontrés et là elle semble correcte, malgré qque debuggage et fonctionne bien1

Y a plus qu'à la mettre dans la boite , elle est sur sa platine là , faut que je monte un connecteur 4 broches pour l'écran.

traffic.gif


On voit les 2 alim step down verticales de chaque coté à G pour le 3V permanent horloge GPS, à dte le 8V Vin de l'Arduino, la platine des relais dessous et tout en bas le shield de l'Arduino.

traffic.gif

traffic.gif

Prochaine étape , mise en boite , cet AM vu le temps ...

filou96

Voila LOL

A pas fallu longtemps et miracle ça fonctionne encore  bien1 Je vais rester sur les mini Wago pour l'écran

La vidéo arrive le temps que Youtube fasse les vérif  ;D Oui je sais le "Local Time" est à l'heure d'été ;D J'aime pas l'heure d'hiver



traffic.gif

loran


jojo28500

Salut Filou96 j'espère que tous va bien de ton coté, car plus de nouvelles depuis 1 mois   

olive82

Ben oui c'est vrai.....il est ou Filou , ta santé va bien au moins ?

steph77144

Je lui ai passé un p'tit MP depuis déjà un bon moment, Et aucune réponse  ???

jojo28500

Oui c'est pas normal, j'espère surtout que sa santé va bien

Jean-Yves 26

Ce n'est pas dans ses habitudes d'être aux abonnés absents...

filou96

Salut , oui je sais , la Mustang va bien , je vend ma maison ... Trop d'escaliers avec les années ... le développement de l'interface Arduino occupe mes journées avec un écran 10" tactile , c'est super addictif lol 🤣
Désolé pour mon absence , mais quand je n'ai pas le temps de suivre , je lache un peu ...
J'ai un peu laché le forum car mis à part le dev Arduino , se passe rien et j'aurais pas pu suivre ... Mais je vais revenir dans pas longtemps .
L'Arduino est carrément passé au stade supérieur  ;D
Ca progresse , moi aussi forcement plongé dans les doc ATMEL de 1000 pages ...
Je suis passé sur Due et écran capacitif de 10"
Bref, succès du jour passez les sorties PWM à 100 Hz au lieu de 1000 Hz , pas mal de méthodes , beaucoup s'en servent pour piloter les moteurs de leur servos en PWM.
Vu que je n'avais pas besoin de plusieurs fréquences, j'ai fait dans le hard modif fichier système variant.h, tout mes PWM sont à 100 Hz ...
Autant l'écran est puissant : 10 pages en SDRAM 1024X600 , on exécute le code que l'on veut sur chaque page en background , on affiche des swap de pages ou de morceaux de pages comme on veux , on peut bien jouer avec, mais faut s'accrocher pour le code ... Avantage c'est fluide et immédiat et on ne puise pas les ressources de l'Arduino .
La compréhension de ses fonctions et leur mise en oeuvre c'est encore 600 pages de bouquin ... Les Libraries chinoises aident au début , mais je les ai largement modifiées.
Le Due ( c'est un ARM ) fait merveille , le Nano ben à la ramasse ... seul inconvénient pas grave il bosse sur du 3.3V I/O.

Vous avez le duty cycle sur l'oscillo à G à 100 Hz indexé sur la vitesse pour essai
Vous aurez compris , vitesse en haut , RPM en bas ... C'est pas encore écrit, le flocon qui change de couleur c'est clim ON/OFF

L'idée c'est ça , il y aura d'autres pages pour modifier les paramètres en tactile

traffic.gif

Prochaine étape dans pas longtemps le Raspberry Pi



Capteur de tempé 5V adapté au 3.3V



A bientot

olive82