Bon ça fait maintenant 10 ans que je pratique le CAN, ce serait dommage autrement.
Bonjour, je suis avec beaucoup (énormément !!) d’intérert ce projet dans lequel je vais me lancer au plus tôt.
En attendant, Merci pour la mise à dispo totale et gratuite, le SAV et un très très grand BRAVO pour l’idée et la réalisation.
JP
Bonsoir Christophe,
La réponse est écrite dans ton code:
//—————————————————————————————————————————
// If you use CAN-BUS shield (CAN-BUS Shield V2.0 | Seeed Studio Wiki) with Arduino Uno,
// use B connections for MISO, MOSI, SCK, #9 or #10 for CS (as you want),
// #2 or #3 for INT (as you want).
//————————————————————————————————————————
J’allais faire les soudures sur le canal A …
On verra cela demain.
Bonne soirée
Alain
En fait, je vois sur cette doc que CS est par defaut sur 9. Plutôt que de charcuter la carte, il est plus simple de modifier dans le programme ligne 30
static const byte MCP2515_CS = 10; // CS input of MCP2515 (adapt to your design)
par
static const byte MCP2515_CS = 9; // CS input of MCP2515 (adapt to your design)
Par ailleurs, tu peux utiliser le programme ACAN2515 “loopBackDemo”
S’il y a un problème de hard ou de branchements, cela te permettra de le voir facilement sur le moniteur série de l’Arduino.
Je ne sais plus si je te l’ai dit mais pour le programme initial, il faut régler (ligne 142)
ACAN2515Settings settings(QUARTZ_FREQUENCY, 250UL * 1000UL); // CAN bit rate 250kb/s
C’est la vitesse du CAN Marklin.
Essaye cela avant de couper ou souder.
Christophe
Bonjour
N’étant pas très assidu sur le forum ces derniers temps, je découvre ce post qui m’intéresse bigrement aussi.
Félicitations @bobyAndCo pour ce montage qui offre des perspectives de jeu à plusieurs très intéressantes. La seule réserve que j’aurais (et ce n’est surtout pas une critique) est le codage en dur des id des locomotives dans le programme. L’idéal serait la possibilité de les sélectionner parmi une liste à l’instar d’une centrale
Amicalement
Bernard
Bonjour Bernard,
Ce que tu souhaites est bien sûr réalisable. C’est autre chose. Au tout début, je voulais quelque chose de très simple et surtout économique, de l’orde de 30€.
On peut imaginer étendre à 10 ou 15 ou 20 locos !
On peut ajouter un pavé numérique pour renseigner les adresses. J’avais même pensé mettre mon programme qui permet de faire le “MFX Discovery” a l’instar de la découverte sur une centrale.
C’est autre chose et c’est un peu plus couteux car il y a plus de matériel.
Avec du CAN t des Arduino on peut faire plein de choses.
Christophe
J’ai bien corrigé et vérifié les paramètres.
Malheureusement, je n’arrive pas à faire les soudures. C’est beaucoup trop petit pour moi. Même si je tremble peu, c’est encore trop.
C’est au pas de 1.27 avec même pas 5 dixième d’isolation.
Désolé, mais là je ne peux pas.
Alain
Alain,
Je t’ai dit sur un post plus haut que tu peux t’abstenir de souder si tu modifies le programme
MCP2515_CS en 9 et non en 10.
Retourne quelques posts ci-dessus
Christophe
OK.
Moi yen a faire.
Alain
J’ai fais, mais quelque soit la valeur de l’interruption ou la valeur du Chip Select. Cela me met toujours en erreur.
Au final j’ai essayé de souder les pastilles; toutes les leds se sont allumées, puis plus rien.
Je pense que j’ai détérioré la carte CAN.
Je ne sais vraiement plus quoi dire ni faire.
Alain
Non je ne pense pas que la carte soit détériorée. Est-ce que tu as commencé par l’exemple de loopBackDemo comme je t’ai dis ? Fais le et déjà tu verras si tu as un problème de hard
Christophe
Bon Alors :
Au vu du “silence” de la carte, je ne présage rien de bon.
Donc j’ai heureusement une autre carte de chez Joy-it, qui était encore dans son sachet antistatique :
J’ai aussi rajouté un potar rotatif de 10k; c’est mieux que le tout ou rien.
Voici, ci-dessous , la capture d’écran du programme Loopback de Mr Molinaro :
A priori cela fonctionne pour 17 envois …
J’ai juste modifié la vitesse de 125K à 250k
Qu’en penses-tu ?
Alain
Non ce n’est pas bon. 17 messages ok, c’est toujours mais les suivants sont loupés
Mais tu m’avais dit que tu avais un sheild mais sur la photo ce n’est pas un sheild. Est ce que son quartz est de 16 MHz ou 8 MHz. Ce n’est pas les mêmes réglages dans le programme
Le shield de Seeed-Studio est sur le côté pour le moment. Comme j’avais un autre module CAN de chez Joy-It, j’ais mis celui-là, qui n’a pas soudure à faire, juste deux cavaliers. Son Quartz est cadencé à 16Mhz.
Je te joins la doc du produit, si tu veux jeter un regard dessus.
SBC-CAN01-Manual-20201021.pdf (561,1 Ko)
pj2-sbc-can01-connectingdiagram-2314.pdf (1,9 Mo)
Je te souhaite une bonne soirée.
Alain
Jd vois dans la doc que tu joins que INT doit être sur D2, or dans ton programme l’INT est sur D3
static const byte MCP2515_INT = 3; // INT output of MCP2515 (adapt to your design)
PS / Je te redis qu’il faut déjà que tu réussises à faire fonctionner loopBackDemo avant toute autre manip.
Tu devrais aussi afficher les n° de ligne dans l’IDE Arduino, c’est plus facile pour situer des parties de programmes quand on échange.
Christophe
OK Christophe.
J’ai bien compris ce qu’il faut tester en priorité.
Je ferai cela dans la soirée, et je te tiendrai au courant.
Au préalable, je vais lister toutes les lignes qui ont un paramètre et les confronter avec le hardware.
A ce soir.
Cordialement
Alain
Bonjour Christophe,
Donc, j’ai repris l’ensemble de ma “copie” avec un autre montage repris à Zéro :
J’ai vérifié et corrigé les lignes de codes, téléverser le programme et lancé la fenêtre de la console série :
Et au bout d’une dizaine de minutes :
On en est à plus de 600 rebouclages valides.
Je considère donc cette étape franchie et acquise.
Alain
Ok Alain,
Voilà en effet une étape importante de franchie.
Dans un second temps, je te suggère de copier le même programme sur l’Arduino dont tu pensais le shield Ethernet cramé. Ce que je ne crois pas. Mais cela va t’apporter la réponse à ce sujet.
Tu me répondras pour le résultat et si positif, on va faire en sorte de faire communiquer les deux mais je te redis cela après le test précédent.
Christophe
Bonjour Christophe,
A ton avis, peut on sur ce pupitre envisager d’utiliser un potentiomètre avec cran (mécanique) au milieu de sa course pour remplacer le potentiomètre que tu utilises et l’interrupteur d’inversion du sens de marche ?
Cela donnerai au repos tous les réglages potentiomètres au milieu, si on pousse la commande vers le haut, la loco avance, si on pousse la commande vers le bas, la loco recule.
Il y aura forcément une modification du logiciel, mais je ne me rends pas compte de l’ampleur du travail à faire .
En te remerciant en avance pour ta réponse
Cordialement
Remy
Bonjour Remy,
J’ai du mal à te répondre précisément car je ne sais pas comment fonctionnent les potentiomètres avec crans. J’imagine que, comme il s’agit de potentiomètres, la tension de sortie varie en fonction de la position. Sur ce point c’est bon. L’Arduino ajuste la vitesse de la loco en fonction de cette tension reçue qui est dans la plage 0 à 5 volts.
Maintenant, l’Arduino n’acceptera pas de tension négative.
Mais si par exemple ton potentiomètre peut évoluer dans un plage de tension entre 0 et 5 v et que l’on peut dire par exemple de 0 à 2,5 v, c’est la vitesse de 0 à MAX dans un sens et que 2,5 v à 5 volts correspond à la vitesse de 0 à MAX dans l’autre sens ça peut fonctionner. Il sera préférable pour éviter les chevauchement de se limiter à 2 volts dans chaque sens, 2,2 volts max.
C’est un. peu de programmation mais rien de terrible.
Par programmation également on pourra dire que 0v correspond à 100% de la vitesse dans un sens, 2,2v, 0% de la vitesse. La plage 2,2v à 2,8v c’est 0% de la vitesse et 2,8 v 0% de la vitesse dans l’autre sens et 5 volts 100% de la vitesse dans ce même sens.
J’espère que ce que j’écris est compréhensible, Il y a peut être mieux avec un peu d’électronique (portes logiques) mais ça répond à ta question sur la faisabilité.
Christophe