Go Down

Topic: Projet Control module (Read 14486 times) previous topic - next topic

200sx200

#180
Sep 17, 2017, 11:46 pm Last Edit: Sep 17, 2017, 11:46 pm by 200sx200
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.

trimarco232

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 ... )

200sx200

#182
Sep 18, 2017, 10:10 am Last Edit: Sep 18, 2017, 10:54 am by 200sx200
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.

2. 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/:
Code: [Select]

    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):
Code: [Select]

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:

Code: [Select]

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).

trimarco232

Quote
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)

Quote
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 ?



200sx200

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.

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.

trimarco232

Quote
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

200sx200

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

200sx200

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"

200sx200

#188
Sep 24, 2017, 04:49 pm Last Edit: Sep 24, 2017, 07:42 pm by 200sx200
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 ?

trimarco232

#189
Sep 24, 2017, 10:19 pm Last Edit: Sep 24, 2017, 10:44 pm by trimarco232
Quote
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

trimarco232

Quote
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)

200sx200

#191
Sep 24, 2017, 11:05 pm Last Edit: Sep 24, 2017, 11:06 pm by 200sx200
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 ;)

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" :
Code: [Select]


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.

trimarco232

Quote
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é

200sx200

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 ;)

200sx200

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.

Go Up