Bus CAN sur des pistes PCB au lieu d'un câble à paire torsadée - points à considérer

Aug 16 2020

Afin de réduire les coûts du système dans l'un de mes projets en cours (pas de câbles), je voudrais éliminer le câble CAN et ajouter des pistes au PCB (une paire de gauche à droite pour connecter les connecteurs + 1 paire de stub au CAN émetteur-récepteur sur chaque carte). Comme j'ai de toute façon une chaîne continue de PCB connectés par un connecteur avec des broches libres, cela semble assez raisonnable à faire. Je prévois d'implémenter CAN avec une vitesse assez faible (125kbits/sec).

Chaque PCB ressemble à peu près à ceci :

Le système est mis en place comme ça et mesure environ 50m de long !

J'ai lu quelques autres questions (par exemple ici , ici et ici ) et des articles et des notes d'application (comme ceci , ceci et cela ). Mais je suis loin de le comprendre pleinement.

J'ai quelques questions à ce sujet :

Le premier concerne l'impédance de la ligne de transmission.

  • La norme 120 Ohm est une impédance différentielle ou asymétrique pour chaque CAN_H et CAN_L ?
  • comment atteindre une impédance de 120Ohm sur une carte 4 couches ? (J'utilise l' empilement standard à 4 couches JLCPCB , et avec leur calculatrice, je n'atteins pas 120 Ohm pour une extrémité unique et pour le différentiel, je ne me rapproche qu'avec une trace de 3,5 mil + un espacement de 4 mil - ce qui est proche de leur minimum absolu).
  • Puis-je/dois-je ajouter des composants supplémentaires aux pistes de bus, pour atteindre les 120 Ohm ?

Concernant le blindage :

  • Malgré le sujet de l'impédance, dans la spécification CAN, un câble à paire torsadée blindé est recommandé. Dois-je dans ce cas mieux acheminer les lignes CAN sur l'une des couches internes et la protéger par un plan GND au-dessus, à côté et en dessous ?

Concernant la paire torsadée :

  • Serait-il judicieux de modéliser les traces sur le PCB comme une paire torsadée (par exemple, quelque chose comme ça

Dans l'ensemble, les questions peuvent être résumées à :

Quelle largeur de trace, espacement sur quelle couche me donne le meilleur résultat pour les longues traces CAN sur un circuit imprimé à 4 couches et comment puis-je le protéger ?

Réponses

1 Mr_Engineer Aug 22 2020 at 02:05

Je n'ai pas spécifiquement conçu avec le bus CAN, mais j'ai implémenté des paires différentielles USB et des lignes de transmission WiFi (2,4 Ghz) à extrémité unique.

Votre problème ressemble à une ligne de transmission différentielle classique. 125kbits/sec devrait être assez indulgent. 1Mb/sec est plus difficile.

Si vous avez le luxe d'une carte à 4 couches, acheminez définitivement les signaux CAN sur les couches internes. Cela vous donnera l'équivalent d'un câble blindé. Les couches extérieures doivent être des plans de masse ou d'alimentation. Les plans de masse et d'alimentation doivent être couplés capacitivement les uns aux autres, ce qui les rend à peu près équivalents à des fins de blindage.

Votre idée de sillonner les traces pour créer une paire "torsadée" est intrigante, mais je soupçonne que cela vous causera plus de maux de tête : 1) des réflexions de signal sur chaque via 2) chaque via enterré est un point de défaut potentiel pour la fabrication de cartes. # 2 dépend de la qualité de votre pension de famille. J'implémenterais une paire différentielle traditionnelle (Zo=120ohms).

Pour calculer l'espacement des lignes de transmission, j'ai trouvé la boîte à outils de Saturn PCB très utile :http://saturnpcb.com/pcb_toolkit/Je noterai que pour atteindre votre impédance caractéristique de 120, vous aurez probablement besoin de pistes plus larges.

Selon ce document TI, une inadéquation des longueurs de câble peut entraîner des problèmes de réflexion avec le bus CAN.https://www.ti.com/lit/an/slla279a/slla279a.pdf.

N'oubliez pas de prévoir des résistances de terminaison de 120 ohms (sur les lignes de bus CAN) à l'extrémité émettrice et au dernier récepteur sur le bus.

Connecteur : ça devrait aller tant que les contacts sont propres. Séparez les broches du bus CAN des autres broches haute vitesse avec une broche de terre entre les deux. Personnellement, j'inclurais également des pastilles de soudure ou un connecteur CAN au cas où vous auriez besoin de vous rabattre sur le câble entre les circuits imprimés. Si c'est le cas, je mettrais des résistances de 0 ohm en série avec les lignes CAN sur le connecteur principal. Cela vous donnera la possibilité de désactiver les lignes CAN sur le connecteur et de revenir au fil. Concevoir un plan B est bon marché tout en disposant le circuit imprimé.

La largeur et l'espacement des traces dépendent de votre empilement de PCB. Utilisez la boîte à outils de Saturn PCB avec l'onglet "Paires différentielles".

J'utiliserais une pile comme

L1=Terre, L2=signal/lignes de transmission, L3=Puissance, L4=signal ou

L1=Terre, L2=signal/lignes de transmission, L3=signal, L4=Puissance.

Si vous avez du cuivre sur d'autres couches, vous pouvez les lier à la terre avec des vias de couture. Ne pas acheminer les signaux à grande vitesse en parallèle avec la paire différentielle à moins qu'ils ne soient séparés par un remplissage de masse (blindage). Si des signaux à grande vitesse doivent se croiser sur des couches adjacentes, rendez-les perpendiculaires.

1 schnedan Aug 22 2020 at 03:30

Pour disposer des lignes différentielles, vous ne devez PAS les concevoir comme des fils à paire torsadée... Les vias agissent comme des inducteurs et tout changement de direction provoque normalement des réflexions. Donc, ce que vous voulez et quel est l'optimum, c'est une simple ligne droite.

Normalement, vous disposez les lignes différentielles côte à côte (si vous ne le faites pas, c'est un couplage lâche... qui fonctionne aussi dans certains cas), PAS de virages à 90°, vous devez garder les deux traces à la même longueur (presque) et les stubs courts ( dans le cas de peut-on parler de quelques cm - pensez que vous pouvez trouver les valeurs dans la norme). La distance entre les lignes et la largeur des traces doivent être calculées, donc avec votre matériau de circuit imprimé et l'épaisseur de la couche, vous maintenez l'impédance requise de 120 Ohm...

Vous pourriez essayerhttps://sourceforge.net/projects/atlc/ouhttp://www.hdtvprimer.com/KQ6QV/atlc2.htmlpour calculer les lignes de transmission différentielles.

Kicad est également livré avec un calculateur de ligne de transmission, ou un bon vieuxhttp://www.hp.woodshot.com/HP AppCad... Vous trouvez même des trucs pour les calculatrices programmables normales.

Si vous suivez les règles de systèmes beaucoup plus sophistiqués comme LVDS, CAN ne devrait jamais vous laisser tomber - il est assez robuste même dans des environnements très difficiles.

https://www.ti.com/lit/an/snla302/snla302.pdf

Je ne l'ai pas vérifié, mais pour autant que je m'en souvienne, ces chiffres sont corrects. Pour une certaine vitesse de bus, vous avez la longueur de la ligne de bus et la longueur d'un tronçon ... supposez que sur un PCB, vous ne rencontrez jamais de problèmes avec CAN

  • 1 Mbit/s 40 m 0,3 m
  • 500 kbit/s 100 m 0,8 m
  • 250 kbit/s 200 m 1,5 m
  • 100 kBit/s 500 m 3,0 m
  • 57 kBit/s 1 000 m 5,0 m
  • 38 kBit/s 2000m 7.0m

PS : comme l'a indiqué Mr_Engineer : vous devez résilier. Mais les deux extrémités (c'est un vrai bus donc n'importe quel nœud écoute et transmet) ! les deux avec 120 Ohm (ses 60 Ohms en courant continu, mais 120 Ohms pour la fréquence médiane/dominante du bus ...) - nous avons un produit avec un seul côté terminé et il fonctionne sur plus de 20 m de longueur de ligne, mais vous devez alors modifier les valeurs. Restez avec la norme!