Auteur Sujet: Carte Servomoteurs DCC + CAN  (Lu 143315 fois)

bern69

  • Newbie
  • *
  • Messages: 33
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #120 le: avril 19, 2016, 05:42:30 pm »
bonjour a tous.
échange standard effectué sans problème, avec réutilisation de la pièce primitive, avec qd même quelques moments de transpiration...

Je ne peux même pas tester le DCC!!

Je reviens sur la proposition de Thierry concernant la création sur locoduino d'une section dédiée aux cartes maisons... Les fichiers , modes d'emploi, etc... éviteraient un certain nombre de loupés. Qu'en pensez vous?

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #121 le: avril 19, 2016, 08:46:37 pm »
Tester le DCC est possible, même sans les composants RC1, 4N33, R11 et R12.
Le DCC est récupéré à la sortie du 6N137 (IT-DCC) sur l'entrée D2 du Nano.

Un test facile est possible en chargeant le code du moniteur DCC ici : http://www.locoduino.org/spip.php?article39

Normalement le code de cet article est compatible avec l'entrée DCC sur D2.
 Je n'ai pas eu le temps de le tester mais j'y crois :))
Cordialement,
Dominique

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 744
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #122 le: avril 19, 2016, 09:59:12 pm »
Nouvelle question. Si je veux relier deux cartes servos pour faire des essais sur le bus CAN, il faut un cable RJ11 droit ou croisé ?

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #123 le: avril 19, 2016, 10:13:52 pm »
droit (cable téléphonique standard)

même couleurs des fils sur les prises à chaque extrémité

j'ai ma propre pince RJ11/12 et une autre RJ45, c'est bien pratique pour se faire des cables à la longueur désirée
« Modifié: avril 19, 2016, 10:16:15 pm par Dominique »
Cordialement,
Dominique

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #124 le: avril 19, 2016, 10:17:25 pm »
Comme dit Dominique. C'est bien sûr le même brochage que sur les cartes CAN.
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #125 le: avril 19, 2016, 10:23:01 pm »
Oui, il faut bien relier tous les CanH ensemble et tous les CanL ensemble.

Si tu croises, c'est certain que ça ne marche plus (Denis a testé).

Le bus Can fonctionne uniquement en différentiel entre CanH et CanL : la masse, le 5v ou le 3,3V n'interviennent pas du tout. Il ne faut que 2 fils (contrairement à l'I2C).

C'est pratique pour relier un Due en 3,3v à un Nano en 5v, sans problème : ca je le vois fonctionner tous les jours dans mon réseau.
« Modifié: avril 19, 2016, 10:36:09 pm par Dominique »
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #126 le: avril 19, 2016, 10:33:37 pm »
En passant j'ai testé un servo branché sur la prise S7 (comme sur la photo de Jean-Luc là http://forum.locoduino.org/index.php?topic=125.msg1539#msg1539), en utilisant l'exemple "sweep" de la bibliothèque standard SERVO de l'IDE.

Et ça marche aussi :))

Je n'avais encore jamais joué avec des servos !
Cordialement,
Dominique

DDEFF

  • Hero Member
  • *****
  • Messages: 738
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #127 le: avril 20, 2016, 09:12:20 am »
Juste une petite précision :
Citer
Si tu croises, c'est certain que ça ne marche plus (Denis a testé)
Ce ne sont pas les fils du bus CAN que j'avais croisés  ::), mais le lien entre la carte CAN et l'Arduino DUE.
En voyant Rx et Tx de chaque côté, j'avais croisé et il ne faut pas : Rx du DUE vers Rx de la carte et Tx du DUE vers Tx de la carte.
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #128 le: avril 20, 2016, 09:54:52 am »
Exact !

Tu as bien fait de préciser. Merci Denis
Cordialement,
Dominique

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 744
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #129 le: avril 20, 2016, 08:37:55 pm »
Bon, je continue mes tests... Lorsque je tente d'initialiser le bus Can, rien ne bouge :

void setup()
{
    Serial.begin(115200);

    while (CAN_OK != CAN.begin(CAN_500KBPS))              // init can bus : baudrate = 500k
    {
        Serial.println("CAN BUS Shield init fail");
        Serial.println(" Init CAN BUS Shield again");
        delay(100);
    }
    Serial.println("CAN BUS Shield init ok!");
}

Le while n'est jamais validé, ni en alim USB, ni en alim externe ! Y aurait-il quelque chose à faire que j'ai oublié du côté matériel, ou un test simple à mettre en oeuvre ? Et dans la même veine, il a deux prises RJ11, a quoi elles correspondent, et est ce que le terminateur est nécessaire ?

DDEFF

  • Hero Member
  • *****
  • Messages: 738
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #130 le: avril 20, 2016, 08:54:38 pm »
C'est la phase la plus stressante : on branche et ça ne marche pas.

Je suis sûr d'au moins un truc : il faut 2 termineurs (un à chaque bout).

Schéma générique :

https://fr.wikipedia.org/wiki/Controller_Area_Network#/media/File:CAN_Support.svg

C'est une boucle. Si tu ne la fermes pas (la boucle  :D ), ça ne peut pas marcher
« Modifié: avril 20, 2016, 08:56:11 pm par DDEFF »
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #131 le: avril 20, 2016, 09:09:08 pm »
La discussion entre l'Arduino et le contrôleur CAN (le 2515) n'est pas influencée par le terminateur.

Par contre, comment alimentes tu la carte. Si c'est uniquement via l'USB, seul le Nano est alimenté. Il faut que tu alimentes via la prise d'alimentation pour que le 2515 et le reste de la carte soit alimenté
« Modifié: avril 20, 2016, 09:15:32 pm par Jean-Luc »
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #132 le: avril 20, 2016, 09:11:08 pm »
Je viens de tester l'init du CAN en utilisant le sketch de la carte Locoduino, modifié pour avoir le CS sur la pin D10 (selon schéma 1.5) :

// demo: CAN-BUS Shield, receive data with check mode
// send data coming to fast, such as less than 10ms, you can use this way
// loovee, 2014-6-13


#include <SPI.h>
#include "mcp_can.h"


// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 10;

MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin

void setup()
{
    Serial.begin(115200);

START_INIT:

    if(CAN_OK == CAN.begin(CAN_500KBPS))                   // init can bus : baudrate = 500k
    {
        Serial.println("CAN BUS Shield init ok!");
    }
    else
    {
        Serial.println("CAN BUS Shield init fail");
        Serial.println("Init CAN BUS Shield again");
        delay(100);
        goto START_INIT;
    }
}


void loop()
{
    unsigned char len = 0;
    unsigned char buf[8];

    if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming
    {
        CAN.readMsgBuf(&len, buf);    // read data,  len: data length, buf: data buf

        unsigned long canId = CAN.getCanId();
       
        Serial.println("-----------------------------");
        Serial.print("get data from ID: ");
        Serial.println(canId, HEX);

        for(int i = 0; i<len; i++)    // print the data
        {
            Serial.print(buf[i]);
            Serial.print("\t");
        }
        Serial.println();
    }
}
/

Résultat : j'ai bien "CAN BUS Shield init ok!" sur le moniteur :))
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Re : Carte Servomoteurs DCC + CAN
« Réponse #133 le: avril 20, 2016, 09:18:50 pm »
Par contre, comment alimentes tu la carte. Si c'est uniquement via l'USB, seul le Nano est alimenté. Il faut que tu alimentes via la prise d'alimentation pour que le 2515 et le reste de la carte soit alimenté

D'après le schéma, les MCPxxxx sont alimentés par le 5V-Logic.
Si les straps S1 et S2 sont soudés ET si le Gnd1 du Nano est relié au Gnd-Logic, comme tu l'as recommandé plus tôt dans cette discussion, les MCPxxxx sont alimentés aussi à partir de l'USB du Nano : en tout cas ça marche chez moi (pour l'init CAN).

Citation de Jean-Luc : Tout d'abord il faut souder les straps S1 et S2.

L'absence de masse entre l'Arduino et le reste n'est pas compliqué à régler : soude une queue de résistance entre la broche 4 de l'Arduino et la broche 5 (GND-LOGIC) du 6N137


Néanmoins, vu le schéma, je ne vois pas comment ça peut marcher car le 5v du Nano n'est pas connecté, et pourtant ça marche chez moi ! : Mystère  :o :o
« Modifié: avril 20, 2016, 09:28:17 pm par Dominique »
Cordialement,
Dominique

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Carte Servomoteurs DCC + CAN
« Réponse #134 le: avril 20, 2016, 09:27:32 pm »
Curieux oui.

J'ai pas le temps dans la semaine mais je vous accompagne ce week end
Cordialement