vérification PCB

Bonjour à tous,

M'étant remis à travailler sur ma CNC que j'avais dû mettre de côté quelque temps, j'ai dessiné un PCB pour remplacer les breadboards et toute la filasse.

J'aurais aimé que quelqu'un puisse me dire s'il n'y a pas trop de conneries sur mon PCB avant de l'envoyer en fabrication ? Je n'ai pas trop d'expérience en ce domaine… j'en avais déjà fait un ou deux, mais pas de cette complexité !

Quelques notes:

  • Alimentation: partie logique: 5v, partie moteurs: 12v (récup d'un alim de PC)
  • Teensy 3.2: alimenté en 5v sur Vin, VCC 3.3v vers les contrôleurs de moteurs pas-à-pas
  • DRV8825: drivers moteurs pas-à-pas
  • LCD: 20x4, connecté en SPI, alimenté en 5v
  • Button matrix: matrice 3x3 de boutons poussoirs
  • Pot: potentionmètre branché sur GND, A3, VCC + pin libre pour un éventuel futur bouton poussoir
  • Limit switches: interrupteurs de fin de course, 2 en parallèle sur chaque axe, alimentant une LED verte ou rouge. L'arrêt des moteurs est défini logiciellement, je devrais peut-être mettre une sécurité matérielle (relais ? transistor ?) qui interviendrait directement sur l'alimentation des moteurs ?


drv8825 pinout.png

Impossible de te répondre.
Tu ne fournis pas de schéma et les 3 fichiers images ne comportent pas tous les mêmes éléments
Sur le PCB tu as des connecteurs LCD, Button matrix, Pot, ... ça vient d'où et ça va où sur le schéma ?
Pour les connecteur d'alimenttion les polarités ne sont pqs indiquées
Quel pin-map as-tu défini pour les broches de ton µcontrôlleur ?

Dernière question : un circuit double face est-il indispensable ?

Bonsoir,

Tu ajoutes des condensateurs de 100uF à chaque drivers, c'est une bonne chose, mais si tu regardes avec attention les drivers un condensateur et déjà prévu à cet effet.

J’apprécie le placement des composants, il y a une cohérence.

Il y a encore plein d'autre optimisation, mais je laisse les autres donner leurs avis.

Alain46:

En fait je me suis dans doute mal exprimé, il s'agissait du pcb en lui-même, par exemple taille des pistes, placement des condensateur, nécessité d'un plan de masse...
Le circuit en lui-même fonctionne actuellement sur breadboard, et je voudrais le pérenniser avec un pcb bien propre.
L'image du Teensy et du DRV8825 sont juste là pour permettre de repérer facilement les pins d'alimentation, de signaux etc, les noms des pins n'apparaissant pas sur mon schéma.
Pour ce qui est du double face, ben... c'est le même prix que pour du simple face, autant en profiter :slight_smile:

Standby:

Merci pour ta remarque, je vais peut-être pouvoir me passer des condos du coup... à voir.

Edit: Pour la polarité des connecteurs d'alimentation: masse à gauche, 5v ou 12v à droite.

Bonjour,

à première vue ça à l'air juste, alors quelques recommandations :

  • faire de ton gnd un plan de masse sur les 2 faces du pcb
  • multiplier par 10 la largeur de la piste Vmot
  • te donner la possibilité de mettre mieux que les 100µF (m'ont l'air petits) au droit de chaque driver
  • mettre un peu d'espace entre les drivers, pour prendre en compte une tolérance sur les dimensions de leur pcb respectifs. S'assurer que les radiateurs y trouveront leur place.
  • mettre un 100nF sur VDD/GND au niveau du connecteur du Pot. Idem, voire mieux pour le LCD.
  • s'assurer que les broches vers la matrice et le bouton disposent des pull up ou down nécessaires
  • il me semblent que le fonctionnement des switches soit assez critique, à fortiori si on veut les utiliser pour initialiser les positions. Il faut sans doute, à minima, des résistances de pull (up ou down) moins élevées que celles qui se cachent dans le mcu -> prévoir les emplacements de ces résistances. Ce point doit faire l'objet d'une attention particulière, au besoin chercher les littératures ayant traité du sujet ...
  • par ailleurs, je dirais, oublier les composants through hole, mettre du 1206, au final plus facile à souder
  • tu peux utiliser une broche dispo pour commander en même temps les entrées /enable des drivers. Mettre un pull up de 10k vers le 3v3
  • pas de fusible (pptc) ?
  • pas de ventilateur (support + connectique) ?
  • agnd peut-il rester en l'air ?
  • réglage de l'intensité des drivers ?
  • il reste 2 broches libres pour un 5ème driver ...

concernant la connectique :

  • au lieu des dupond, prévoir du jst au pas de 2.54 : bonne qualité et assure le détrompage
  • laisser un peu d'espace entre les connecteurs des moteurs et les drivers, éloigner un peu les 100µF
  • amener les connecteurs des switches près du bord du pcb. La première utilité d'un pcb, c'est de tenir les composants et les connecteurs, la deuxième c'est de placer les connecteurs de manière à ce que le câblage des fils soit le plus facile et le plus fluide possible : il serait dommage de faire un beau pcb caché par les fils comme un plat de spaghettis

j'ai du publier des trucs, mais j'aurai le temps de rattraper ...
grillé, donc peut-être double emploi, voire contradictions avec d'autres réponses

Alain46:
Tu ne fournis pas de schéma

cbrandt:
par exemple taille des pistes, placement des condensateurs,

Je suis comme Alain pour la largeur des pistes : il faut savoir à quoi elle servent.
Rien de mieux qu'un schéma pour le savoir.

Mais peut-être as tu fais ton circuit imprimé sans schéma.
On faisait comme cela il y a 30 ans parce qu'on ne pouvait pas faire autrement. Maintenant on établi un schéma électrique et le logiciel de circuit imprimé n'autorise que les connexions qui figurent sur le schéma électrique et impossible d'oublier une connexion.

Il y a 30 ans il fallait 3 ou 5 tours de circuit imprimé pour en avoir un sans erreur, maintenant si le schéma électrique est bon 1 seul tour suffit, souvent un 2éme mais pour des modifs légères ou des améliorations de dernière minute..

trimarco232:

  • multiplier par 10 la largeur de la piste Vmot

tant que ça ?? ok :slight_smile:

  • te donner la possibilité de mettre mieux que les 100µF (m'ont l'air petits) au droit de chaque driver
  • mettre un peu d'espace entre les drivers, pour prendre en compte une tolérance sur les dimensions de leur pcb respectifs. S'assurer que les radiateurs y trouveront leur place.
  • mettre un 100nF sur VDD/GND au niveau du connecteur du Pot. Idem, voire mieux pour le LCD.

ok

  • s'assurer que les broches vers la matrice et le bouton disposent des pull up ou down nécessaires

oui, pullups internes du microcontroleur

  • il me semblent que le fonctionnement des switches soit assez critique, à fortiori si on veut les utiliser pour initialiser les positions. Il faut sans doute, à minima, des résistances de pull (up ou down) moins élevées que celles qui se cachent dans le mcu -> prévoir les emplacements de ces résistances. Ce point doit faire l'objet d'une attention particulière, au besoin chercher les littératures ayant traité du sujet ...

j'ai fait quelques recherches du coup, donc ok je mettrai des pull up moins élevées et des petits condos

  • par ailleurs, je dirais, oublier les composants through hole, mettre du 1206, au final plus facile à souder

euh en fait tous mes petits composants sont en trough hole déjà, sinon je dois tout racheter ou presque :slight_smile:

  • tu peux utiliser une broche dispo pour commander en même temps les entrées /enable des drivers. Mettre un pull up de 10k vers le 3v3

je vais étudier

  • pas de fusible (pptc) ?

euh non pas pensé à ça… à voir…

  • pas de ventilateur (support + connectique) ?

pas pour l'instant, mais ça deviendre nécessaire une fois en boitier

  • agnd peut-il rester en l'air ?

oui, pas de soucis de ce côté

  • réglage de l'intensité des drivers ?

faite selon les préconisations ici: https://www.pololu.com/blog/484/video-setting-the-current-limit-on-pololu-stepper-motor-driver-carriers

  • il reste 2 broches libres pour un 5ème driver ...

les broches 4, 9, 10 sont prises par un module SD et un wiz820io: PJRC Store (non présent sur le schéma)

concernant la connectique :

  • au lieu des dupond, prévoir du jst au pas de 2.54 : bonne qualité et assure le détrompage
  • laisser un peu d'espace entre les connecteurs des moteurs et les drivers, éloigner un peu les 100µF
  • amener les connecteurs des switches près du bord du pcb. La première utilité d'un pcb, c'est de tenir les composants et les connecteurs, la deuxième c'est de placer les connecteurs de manière à ce que le câblage des fils soit le plus facile et le plus fluide possible : il serait dommage de faire un beau pcb caché par les fils comme un plat de spaghettis

ok

j'ai du publier des trucs, mais j'aurai le temps de rattraper ...
grillé, donc peut-être double emploi, voire contradictions avec d'autres réponses

merci d'avoir pris du temps pour regarder !!

68tjs:
Je suis comme Alain pour la largeur des pistes : il faut savoir à quoi elle servent.
Rien de mieux qu'un schéma pour le savoir.

merci aussi !

note: les refs des moteurs sur le schéma ne correspondent pas, il s'agit de ces moteurs: https://www.pololu.com/product/1208

EDIT:

voici le nouveau schéma (version 1.1 donc), mis à jour suite aux commentaires:

et le pcb qui va avec:


sans le plan de masse pour l'instant

Bonsoir,

Quote from: trimarco232 on Nov 22, 2017, 07:30 pm

  • multiplier par 10 la largeur de la piste Vmot
    tant que ça ?? ok :slight_smile:

il y a de la place, tu peux encore élargir, la largeur que tu a mis convient bien pour VDD

te donner la possibilité de mettre mieux que les 100µF (m'ont l'air petits)

j'ai vu que les shields utilisaient du 100µF 50v -> 220µF 50v serait mieux, dans tous les cas s'assurer que le pcb convient au condo ...

mes petits composants sont en trough hole

c'était juste une suggestion, dans la mesure où ces composants ne coûtent "rien", et que cela te permet de garder ceux que tu as pour de nouvelles expériences

  • pas de fusible (pptc) ?
    euh non pas pensé à ça… à voir…

s'assurer que le(s) fusible qui va bien tient sur le pcb

les broches 4, 9, 10 sont prises par un module SD et un wiz820io: PJRC Store (non présent sur le schéma)

oui, mais il serait peut-être bien qu'il figure sur le pcb ?

Juste une remarque concernant les alim il y a intérêt à faire les piste les plus larges.
Pour le 0V c'est carrément un plan de masse qu'il faut.

Mais dire qu'une piste est large n'est pas suffisant : quel sera l'épaisseur du cuivre ?
Ce n'est pas la largeur qui compte mais la section.

En épaisseur normalisée il existe :

  • 17,5 µm
  • 35 µm
  • 70 µm ( pas trop courant en circuit pas cher).

Petite pause : en quoi une piste d'alim trop étroite est gênante :
Un conducteur même en cuivre reste une résistance surtout qu'en circuit imprimé les épaisseurs sont très fines.

Si la résistance de la piste n'est pas négligeable :

  • il y aura une chute de tension dans la piste U=RI. En électronique numérique sur l'alim ce n'est pas trop gênant à condition que la chute de tension reste "raisonnable". Par contre même en électronique numérique la masse est beaucoup plus sensible --> plan de masse.
  • la piste en cuivre chauffera et risquera de se décoller. La puissance dissipée dans la piste dépend du carré de l'intensité : P = RI2.
    --> Pas de panique quand même, tu n'utilises pas des dizaines d'ampères, c'est juste pour fixer les bornes.

Je n'ai pas de nom à te proposer () mais je sais qu'il existe des utilitaires pour aider aux calcul des pistes qui transportent du courant.
Ils te donnent la chute de tension et l'élévation (théorique) de température.
(
) Kicad fourni un outil mais sur la version que j'ai (Debian Stretch) l'outil ne fonctionne plus.

Quand je faisais de l'électronique, du militaire de surcroit (there is a long time ago), on avait l'habitude de découpler chaque circuit intégré par une capacité céramique de 10 nF à ses pieds afin de limiter la pollution HF sur le circuit imprimé.

C'était probablement sur-abondant, mais c'était efficace.

Cordialement.

Pierre

C'était probablement sur-abondant, mais c'était efficace.

Bonjour,

certainement pas surabondant, mais absolument indispensable !
ici ce n'est pas apparent car cbrandt n'utilise pas des CI, mais des modules tout faits qui comportent déjà ce découplage

j'avais vu dans une revue allemande les auteurs pousser la prétention de qualité jusqu'à utiliser une triplette de condensateurs pour cette tâche (100n, 10n, 1n pas certain de ma mémoire ...). J'en suis resté au traditionnel 100nF qui fait l'affaire, toujours semble-t-il.

j'avais vu dans une revue allemande les auteurs utiliser une triplette de condensateurs pour cette tâche 100n, 10n, 1n

100n OU 10n OU 1n oui mais les 3 ensemble c'est inutile et potentiellement dangereux.

Ce qu'il est nécessaire de connaître c'est les limites des technologies de condensateurs.
Les condensateurs à techno céramique sont très bons pour les fréquences élevées mais ne permettent pas à coût acceptable de dépasser 1µ à 2µF.
Les condensateurs céramiques ne sont pas polarisés.

Cette valeur est trop faible pour filtrer les perturbations basse fréquence.
Dans le domaine des fortes valeurs (100 µF et au delà) on utilise la techno "chimique ou aluminium".
Cette techno est polarisée.
Cette techno a le défaut d'avoir des résistances de perte série de l'ordre de l'ohm. Elle présente aussi des inductances parasites non négligeables ce qui fait que l'efficacité de ces "gros" condensateurs n'est pas bonne en fréquence élevée.

Pour un filtrage d'alim efficace on mixe condensateur chimique et condensateur céramique.

Quelques points non triviaux :
Tout bout de fil présente une inductance. Dans le vide pour un fil de longueur infinie on compte 10nH par cm.
Dans la réalité ce peut être moins si le fil est proche d'un plan de masse ou dix mille fois pire si le fil fait des boucles (je pense avec horreur à certains montages sur breadboard avec de fils de masse de 10 ou 20 cm ! )

Conséquence : ajouter un condensateur c'est une chose, l'ajouter de façon qu'il remplisse sa tâche en est une autre.
Les connexions d'un condensateur de découplage doivent être les plus courtes possible et c'est pour cela qu'il faut privilégier les condensateurs CMS, non pas en format 1206 mais directement en 0805. Le format 0805 se soude parfaitement sur de la plaquette pastillée au pas de 2,54.
Il suffit de se dire qu'on est pas plus maladroit qu'un autre et de franchir le pas. Avec des yeux de 55 ans j'arrivais bien à souder du 0402 (1mm de long , 0,5 mm de large), donc les jeunes vous n'avez pas d'excuse et pour les moins jeunes sachez que les loupes sur pied cela existe, celles de chez Lidl sont très bien à pas cher.

Il est important de créer un plan de masse et de connecter les condensateurs de découplage a ce plan de masse.

L'inductance et la capacité se comporte à l'opposée l'une de l'autre.

Effet de l'Inductance Effet de la Capacité
Continu court-circuit Circuit ouvert
Alternatif Augmente avec la fréquence Diminue avec la fréquence

Conséquence pour le filtrage d'alim :
L'inductance du fil d'alim est bénéfique, l'inductance en série avec le condensateur est catastrophique

Filtage_alim.png

Dernier point :
Sur ce forum je n'entend jamais parler de condensateur au tantale.
Il faut vivre avec son temps leur réputation de produit cher est dépassée depuis longtemps par contre leur supériorité par rapport aux "chimiques" est un avantage certain.
Ils sont plus compact, donc moins d'éléments parasites R et L, et encore très efficace en moyenne fréquence.
Les condensateurs tantale sont polarisés.

Filtage_alim.png

Revoici avec un plan de masse:

  • les modules sd et ethernet sont superposés au Teensy, du coup rien n'apparaît sur le pcb les concernant:

  • d'après le site du fabricant du pcb, l'épaisseur du cuivre sera du "1oz" (sous-entendu par pouce carré) ce qui fera 35,6 µm d'épaisseur si mes calculs sont justes, taille standard comme l'indique 68tjs. Sur cette histoire de largeur/épaisseur de piste, il y a quand même un truc que je ne comprends pas: les modules DRV8825 que j'utilise n'ont pas l'air d'avoir de pistes bien larges pour l'alim des moteurs, excepté le plan de masse qui recouvre à peu près toute la surface inférieur. Ou alors comme les pistes sont très courtes (quelques mm) la largeur réduite peut suffire ?
    D'ailleurs j'ai du mal à dépasser 98mils avec le logiciel (pourri) que j'utilise, au-delà ça se rapproche dangereusement des pads adjacents…

  • je vais essayer avec des composants smd, on verra bien :slight_smile:

Merci à tous pour les remarques, suggestions et explications détaillées !

les modules DRV8825 que j'utilise n'ont pas l'air d'avoir de pistes bien larges pour l'alim des moteurs

  • les liaisons sont courtes
  • l'épaisseur du cuivre peut être 2 oz *
  • c'est peut-être du quadruple face *
  • : aussi pour améliorer la dissipation thermique

rien de tout celà dans ton cas, donc tu peux encore élargir !

Revoici avec un plan de masse

bien, mais maintenant pour voir les erreurs il faut représenter les 2 faces

quel est la dimension finale du pcb et fabricant pressenti ?

La dimension finale est de 9x10 cm (je peux aller jusqu'à 10x10 avant de changer de tranche de prix).
Fabriqué chez itead.cc

Voici les deux faces, avec quelques modifications:

  • ajout de pads à relier par un pont de soudure, pour pouvoir passer en micro-steps, au cas où (les drivers seront sur des supports, donc il devrait y avoir la place)
  • déplacement vers le bord gauche des connecteurs pour les interrupteurs de fin de course
  • ajout de connecteurs pour les leds de témoin de fin de course (au lieu de leds directement sur le pcb)
  • quelques composants en SMD
  • piste alim moteurs élargie

dessus:

dessous:

Bonsoir,
bien !
il y peut-être quelques menus détails à revoir, je te donnerai + de précisions d'ici mardi
je les listes pour ne pas les oublier ... :

  • ajouter 1 fil pour gnd au connecteur d'alim (il y a 2 alims avec chacune leurs fil gnd)
  • mettre des 1206 à la place des pads à souder : c'est + propre. D'ailleurs, envisager de les placer côté soudure pour faciliter l'accès
  • tes formes de capa 100µF me paraissent décidément trop petites !
  • remonter un peu le via du net pot -> A3, pour permettre la continuité du plan de masse côté soudures
  • dans la même idée côté composants, déplacer le via près de r16 immédiatement au dessus du pad de r16. Faire la continuité du net en enfilant les pads de r16, 21 et 22
  • au niveau de la séparation de la piste du +5v vers le fan : partir de suite à 45° vers la gauche pour réduire la longueur de la piste

bonjour !

tout d'abord merci pour ces derniers conseils.
voici la dernière version du pcb, avec les modifs suggérées ainsi que quelques autres:

  • accès à la pin 'fault' des drivers, pour détecter les surchauffes par ex.
  • sortie de la pin 4 (cs carte sd) et d'une autre pin vers le connecteur lcd, pour possibilité de remplacement du lcd text 20x4 par lcd graphique avec lecteur de carte sd


Bonjour,

  • tu as déplacé le via de la broche 13 (du module mcu) vers la gauche, ce qui coince le plan de masse côté soudures : tu peux le remettre dans l'alignement de la broche 12 comme avant
  • tu peux ajouter un via dédié aux plans de masse à droite du N de CNC

Le prix du pcb n'étant plus un souci, il reste 2 raisons pour s'appliquer

  • si tu dois le refaire, le délai te paraîtra long (fabrication + port)
  • tu va te retrouver avec 5 ou 10 (voire +) pcb identiques. Le but sera de les céder à des makers, qui ne pourront être preneurs que s'ils sont réussis ...

néanmoins je te lâche la grappe, j'attends de voir les gerber

trimarco232:
Bonjour,

  • tu as déplacé le via de la broche 13 (du module mcu) vers la gauche, ce qui coince le plan de masse côté soudures : tu peux le remettre dans l'alignement de la broche 12 comme avant
  • tu peux ajouter un via dédié aux plans de masse à droite du N de CNC

bonjour !
alors, j'ai re-déplacé le via, et ajouté celui demandé. Néanmoins j'ai (encore…) dû ajouter une pin de sortie pour le connecteur LCD, mais les pins du mcu dispo n'étaient plus que des entrée analogiques (exclusivement). Donc re-routage…


woody_1.5.zip (257 KB)

Bonjour,
oui, mais utiliser des entrées purement analogiques pour les switches, ça fait le job ?
autre question : le connecteur usb du teensy est assez solide pour ton usage ?