Projet Control module

trimarco232:
sur quoi et en vertu de quoi les bonnes valeurs sont affichés à la fin ?

Quand j'ai les valeurs comme le voltage batterie , les rpm, la vitesse ect... elles sont toutes correcte et identique au logiciel de diagnostique.

ex: valeurs reçue[1] *80 / 1000= valeur à afficher.

Bonjour,
les bonnes valeurs sont affichées sur quoi ?
( exemple de réponse souhaitée :

  • sur le programme correspondant à l'interface usb
  • sur le moniteur série de l'arduino
  • sur une interface série que tu as fait sur ton ordinateur en programmation visual studio
  • sur ta tv lors d'une émission de stéphane berne
  • sur le smartphone de la bêtasse qui passe dans la rue ... )

Bonjour, lol

Les bonnes valeurs sont affichés sur:

  • sur le programme correspondant à l'interface usb
  • sur le moniteur série de l'arduino (après calcul)

Je vais essayer d'être plus clair car c'est simple mais pas évidement à expliquer.

1.En premier lieu voici Le-Generic-Nissan-ECU-Data-register-table-Ver-2.pdf qui nous donne le langage à savoir pour discuter avec l'écu.

  1. Le protocole à suivre si on veut que l'écu nous comprenne et réponde Consult-Protocol-&-Commands-Issue-6.pdf

3.Les commandes envoyées (sources http://arduino.cybrax-computers.com/:

    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x0B);//ECU_REGISTER_VEHICLE_SPEED 0x0B
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x00);//ECU_REGISTER_TACH_MSB 0x00
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x01);//ECU_REGISTER_TACH_LSB 0x01
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x08);//ECU_REGISTER_COOLANT_TEMP 0x08
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x0C);//ECU_REGISTER_BATTERY_VOLTAGE 0x0C
....
    Serial2.write(0xF0);//ECU_COMMAND_TERM 0xF0

On envoie à l'écu "(0x5A)" (je veux la valeur suivante) suivi du type ex: "(0x0B)".

4.Les donnés reçus par l'arduino transmisse du programme correspondant à l'interface usb à l'écu (HEX mode):

6
29
0
29
7F
29
7A
29
F00
29
1E
29
3A
29
1D
29
75
29
39
29
79
29
1F
29
7D
29
7B
29
74
29
76
29
38
29
70
29
6F
0

Même si ce n'ai pas ce que je voulais recevoir, on distingue une similitude.

5.Je me suis donc basé sur le fait que le (0x5A) et reconnue en tant que "29" par l'arduino. Qui au final n'a pas encore été utiliser jusque là.

6.J'ai crée un tableau de valeurs du nombre de demande du Pc "byte consult[28]" et un calcul pour sortir sur le Serial moniteur la bonne valeur:

Serial2.readBytes(consult, 28);
    if (consult[0] == 0xFF) {
      byteconsult();
      Print();
}

void byteconsult() {
  //Speed kph
  sped = consult[4] * 2;
}
void Print() {
  Serial.print("Speed kph="); Serial.println(sped);
}

Conclusion :

1-Soit l'interface USB (FTDI) ne me permet pas de comprendre correctement les bonnes valeurs, ici pas très important sauf si l'on veut que l'arduino discute seul avec l'écu.
=> l'interface maison comprend l'écu mais pas le FTDI ?

2.Soit le Serial moniteur n'affiche pas les bonnes valeurs ?

Ps:La discussion entre arduino et écu à seulement été tester avec les valeurs HEX "(0x5A)" et pas "0x29" (comme reçue avec l'interface usb).

3.Les commandes envoyées

très concrètement stp, les commandes envoyées par quoi vers quoi, et comment on est certain qu'il s'agit bien de ces datas (et pas par exemple celles qui sont vues ailleurs)

4.Les donnés reçus par l'arduino transmisse du programme correspondant à l'interface usb à l'écu (HEX mode):

c'est ce que l'arduino lit sur le rx de l'ecu ?
attention, sur le rx de l'ecu les signaux serial sont inversés, fais un essai avec softwareserial, en ajoutant le paramètre "inverse_logic", pour voir ce que ça donne ?

trimarco232:
c'est ce que l'arduino lit sur le rx de l'ecu ?
attention, sur le rx de l'ecu les signaux serial sont inversés, fais un essai avec softwareserial, en ajoutant le paramètre "inverse_logic", pour voir ce que ça donne ?

Oui, sur le Rx de l'écu donc ce qu'envoie le PC à l'écu.
Je vais essayer, voir déjà comment ajouter.

trimarco232:
très concrètement stp, les commandes envoyées par quoi vers quoi, et comment on est certain qu'il s'agit bien de ces datas (et pas par exemple celles qui sont vues ailleurs)

La c'est un exemple de programme arduino vers écu, mais les HEX doivent être identique.

mais les HEX doivent être identique

Bonjour,
on peut le supposer, mais le mieux c'est de s'en assurer
cela permet en outre de vérifier le fonctionnement de chaque maillon de toute la boucle

D'accord je répondrais dès que j'aurais essayé "inverse_logic".

trimarco232:
attention, sur le rx de l'ecu les signaux serial sont inversés, fais un essai avec softwareserial, en ajoutant le paramètre "inverse_logic", pour voir ce que ça donne ?

Je viens de regarder un peu à ce sujet mais en faites tu veux juste inverser les Pin ?

Car j'ai déjà essayé de recevoir sur les Rx et Tx de l'écu mais l'écu ne transmets rien t'en qu'il n'a pas reçue de commande.

Aucune activités si l'écu ne reçoit pas "00xff 0xff 0xef"

Bonjour,

Savez-vous s'il existe des Relais qui permette d'être actif dès le contact mais qui ont un "minuteur" pour se désactiver ?

exemple:
1-Moteur tourne relais ON
2-Arret du moteur relais ON pendant X temps
3-Relais OFF

Celui la pourrais faire l'affaire ?

Savez-vous s'il existe des Relais qui permette d'être actif dès le contact mais qui ont un "minuteur" pour se désactiver

si le relais est commandé par l'arduino, il est quand même plus logique de faire cette "minuterie" par le soft

édit : pour ces questions particulières : -> topic particulier

mais en fait tu veux juste inverser les Pin ?

prête à confusion, veux-tu dire :
inverser les niveaux logiques ?
ou permuter les pins ?

en tous cas ce que je souhaites c'est que l'arduino lise les requêtes valables envoyées par l'interface usb vers l'ecu (et les comparer avec le protocole)

trimarco232:
si le relais est commandé par l'arduino, il est quand même plus logique de faire cette "minuterie" par le soft
édit : pour ces questions particulières : -> topic particulier

Je ne souhaite pas le faire via l'arduino pour alléger le plus possible le programme qui ce charge de la gestion de la boite pour qu'il soit le plus rapide possible. Ainsi que pour le programme VS.
Et si le relais devais être contrôlé par l'arduino, cela voudrait dire qu'elle est sous tension :wink:

trimarco232:
en tous cas ce que je souhaites c'est que l'arduino lise les requêtes valables envoyées par l'interface usb vers l'écu (et les comparer avec le protocole)

C'est justement ce que j'ai posté plus haut avec "serial.print"HEX" :

6
29
0
29
7F
29
7A
29
F00
29
1E
29
3A
29
1D
29
75
29
39
29
79
29
1F
29
7D
29
7B
29
74
29
76
29
38
29
70
29
6F
0

C'est la liste de codes transmis par le logiciel de l'interface USB à l'écu.

C'est justement ce que j'ai posté plus haut avec "serial.print"HEX" :

Bonjour,
oui, mais tu ne l'as pas fait avec le sotware serial comme je l'ai suggéré

trimarco232:
Bonjour,
oui, mais tu ne l'as pas fait avec le sotware serial comme je l'ai suggéré

Bonjour, nan c'est vrai.
Je le ferait dès que possible, je suis beaucoup sur la mécanique en ce moment :wink:

Bonjour tous le monde,

Je reprends le topic après une longue pause, je posterais les photos et évolutions qu'il y à eu entre temps.

Sur-ce bonne fêtes.

Voici la préparation en photos pour la boite de vitesse.

J'ai donc crée une entretoise pour fixer un volant moteur et convertisseur de couple sur un moteur électrique 380Volts (pour simuler la rotation moteur).

Volant moteur + 2éme entretoise (centreur du convertisseur de couple)

Montage complet

La création du support pour le placer devant la boite automatique va venir assez vite.

Je mets à jour un peu le poste car arrêté depuis quelque temps :frowning:

J'me suis donc remis sur l'interface avec le LM358 pour réception des infos du PC et de l'écu en étant superposé à l'interface usb :

Testé et fonctionnel, pour la réception de données car parlé seul entre ECU et Arduino à toujours été soldé par un échec.

Ce qui en soit n'est pas si grave car comme j'ai besoin des infos de l'écu à deux endroit différents et que l'écu ne le permets pas, l'interface me permet de transmettre X fois toutes les données à partir du moment ou il est déjà "initialisé" bien entendue.

Bonjour,
alors 1 karma pour la persévérance + 1 pour le pcb

Bonjour trimarco :slight_smile:

Merci :slight_smile:

Bonjour à tous :slight_smile:

Les tests vont bientôt pouvoir commencer, La boite est en place :slight_smile:

Lien de la vidéo : En rotation