[Terminé] verification avant création PCB

Bonsoir

Demain je voudrais essayer de faire mon premier PCB maison double face.
J'affiche mon schema ici.

Si jamais quelqu'un voit une grosse bétise (ou même une petite), n'hésitez pas à me le dire avant que je fasse le pcb :slight_smile:

Quelques explications:

Donc c'est un atmega328 (avec le bootloader d'un uno)
Le but est d'y brancher un module enc28j60 tout fait acheté sur ebay ainsi qu'un module RF nRF24L01

le regulateur du haut est le 3.3v, celui du bas le 5v

J'ai prévu des pins pour brancher un adaptateur FTDI (sans l'alimentation, juste la masse)
Puis, j'ai prévu des connecteurs:
1 pour le module enc28j60
et 2 pour le module radio (2 rangé de 5 pour pouvoir l'enficher directement dessus)

Je n'ai pas testé les deux montage relié aux régulateurs car j'ai testé sur une breadboard avec un arduino nano (du coup il est deja 5 et 3.3v)

Voila.
Si jamais quelqu'un voit quelque chose ou a un commentaire, je suis preneur :slight_smile:

Merci!

Est ce que tu peux héberger une image plus petite, cf la charte du forum, merci.

Je comprends que tu ne sois pas sûr... le schéma est assez illisible à cause des lignes pas droites, croisements, recouvrements... Peux-tu le refaire plus propre avec de beaux angles droits, et surtout plus petit :wink:

Merci!

Schémas assez dur à lire effectivement

Ce qu'il manque c'est essentiellement l'adaptation 5V -> 3V3 de SCK, MOSI, CS vers les périphériques 3V3 (NRF et ENC). Bref tous les signaux qui vont vers de l'ATmega vers les modules.

Sinon, tu pourrais aussi mettre en série le régulateur 3V3 sur le 5V au lieu de l'alimenter séparément. Ca lui fera moins à chauffer (mais c'est le 5V qui chauffera à la place...).

Si tu peux te contenter de faire tourner ton ATmega à 8MHz au lieu de 16MHz, tu peux alors passer à 3V3 pour tous les composants ce qui est plus simple.
Cela demande de retoucher au bootloader et aux fusibles.
A 8Mhz tu peux aussi tourner sur oscillateur interne ce qui évite le quartz et les 2 capa.

En effet ça peut être pratique de supprimer le quartz et les capa pour une application simple.
Mais perso je n'ai pas réussi! http://arduino.cc/forum/index.php/topic,134107.0.html

Dans ce mode (quand on bidouille les fusibles) il est encore plus simple de se passer de bootloader et de programmer systématiquement en ICSP.

J'ai lu pas mal de fois qu'il fallait éviter les angles droits pour les conducteurs des circuits imprimés, c'est mieux de faire des angles de 45°, pour éviter les cassures. Si quelqu'un peut confirmer :slight_smile:

Bonjour à tous

Merci pour vos conseils.
Je crois que je vais tout simplement repousser la création de mon PCB :slight_smile:

Désolé pour la taille du schema, je ne savais pas qu'il y avait une taille max. Je ne voulais pas trop le reduire pour qu'il reste lisible.

Donc si je comprend bien, c'est le foutoir sur mon schema :slight_smile: Ok je vais essayer de l'améliorer. Mais c'est sur que comme ll y a deux periphérique qui "discutent" en SPI, j'utilise les meme lignes, d'ou les croisements.

J'avais lu que les deux periphériques (module ENC et module radio) que j'utilisent sont "5v tolerant", c'est pourquoi je n'ai pas mis de buffer. De plus je confirme qu'ils fonctionnent bien comme cela.

J'étais au courant que je pouvais utiliser l'oscillateur interne mais je n'avais pas compris que cela me permettait d'éliminer le 5v! C'est tres cool!
Est ce que ca pourrait poser un problème au niveau du montage de rouler le tout en 8 au lieu de 16mhz?
Est ce qu'un programme qui roule en 16 roule FORCEMENT en 8 (bien sur, deux fois plus lents)
Est ce que le module ENC28j60 pourrait ne pas marcher en 8mhz?

Autre chose que je viens d'apprendre grace a vous: Le bootloader n'est pas necessaire! Pour moi, dand ma tête, il était essentiel. Je viens de me documenter et je comprend mieux maintenant.

Peut être qu'il serait plus judicicieux pour moi de construire d'abord un programmeur finalement.
Est ce qu'un programmeur fonctionne en 3.3v ou en 5v?

Ha oui, derniere question: Pourquoi est ce mieux d'eviter d'utiliser un bootloader quand on modifis les fusibles?

Merci!

atlas2003:
J'avais lu que les deux periphériques (module ENC et module radio) que j'utilisent sont "5v tolerant", c'est pourquoi je n'ai pas mis de buffer. De plus je confirme qu'ils fonctionnent bien comme cela.

Possible, je n'ai pas vérifié.
Si c'est le cas, pas besoin d'adaptateur.

atlas2003:
Est ce qu'un programme qui roule en 16 roule FORCEMENT en 8 (bien sur, deux fois plus lents)

Oui le programme va plus lentement donc il faut avoir moins de choses a faire.
Tout dépend si à 16MHz tu es juste ou si tu as de la marge.

atlas2003:
Est ce que le module ENC28j60 pourrait ne pas marcher en 8mhz?

Pas de problème, il a sa propre horloge.
C'est juste l'ATmega qui va prendre plus de temps pour faire le même travail.
Donc il est important d'estimer si ton programme peut tourner à 8MHz au lieu de 16MHz.

atlas2003:
Autre chose que je viens d'apprendre grace a vous: Le bootloader n'est pas necessaire! Pour moi, dand ma tête, il était essentiel. Je viens de me documenter et je comprend mieux maintenant.
Peut être qu'il serait plus judicicieux pour moi de construire d'abord un programmeur finalement.

Si tu as une Arduino UNO (ou autre) tu as un programmateur XD
Il existe un sketch standard appellé ArduinoISP qui permet d'utiliser un Arduino en programmateur
Sinon sur la baie, un clone USBASP coute moins de 3 euros. Faut juste être patient pour qu'il vienne de Chine/HK en bateau :wink:

Est ce qu'un programmeur fonctionne en 3.3v ou en 5v?

Il faut que le CPU a programmer et le programmateur tourne sur la même tension. Ou bien il faut prévoir des adaptateurs.
Si le ATmega est sur support, tu peux le sortir de ta carte pour le programmer sous 5V depuis une breadboard.

Ha oui, derniere question: Pourquoi est ce mieux d'eviter d'utiliser un bootloader quand on modifis les fusibles?

Ce n'est pas mieux, c'est éventuellement plus facile.
Le bootloader programme certaines parties de l'ATmega en connaissant a priori la fréquence à laquelle il tourne.
Si tu flashes dans un ATmega le bootloader précompilé d'un Arduino UNO qui tourne à 16MHz sur un Atmega configuré à 8MHz, les calculs de temps seront faux.
Notamment la programmation de la vitesse de la liaison série.

Donc il faut avant, modifier et recompiler le bootloader.

Pour 8MHz, tu peux aussi reflasher le bootloader optiboot_pro_8MHz.hex qui est tout prêt.
-il faudra bidouiller un peu ton board.txt pour que ca se passe bien).

Sinon, si tu utilise un programmateur ICSP, plus besoin de bootloader. Tu programme les fusibles et ton code directement.

C'est un choix, pas une obligation.

Ok merci pour les reponses

Si je comprend bien, il y a moyen de faire tourner en 8mhz l'atmel soit en utilisant l'oscillateur interne, soit en utilisant un externe (de 8 ou 16)?
Comment savoir si l'oscillateur interne suffit pour mon programme? Par exemple: module ethernet + module radio? Car si je comprend bien, il est beaucoup moins précis qu'un vrai quartz?

Peut etre que le mieux pour moi serait de le faire rouler en 8mhz en 3.3v avec un crystal externe. (si jamais ca fonctionne)

Si tu ne cherches pas à gérer une horloge temps réel par soft (c'est à dire gérer la date de manière permanente), tout va bien avec l'oscillateur interne.

Je viens d'avoir un flash:

Le jeenode de notre ami JCW fonctionne en 3.3v, en 16mhz (avec crystal externe) avec optiloader.
Je pense que ca serait parfait pour moi.
Je vais essayer de creuser par là pour trouver exactement comment il arrive a faire fonctionner le tout

C'est vrai.
Étonnant puisque le manuel du ATmega328 donne (section 29.3, page 322) un max de 13Mhz à 3.3V, et un mini de 3.8V pour atteindre 16MHz.

Je viens d'essayer mon montage sur une breadboard. Le tout alimenté par un seul regulateur 3.3v
Pour l'instant ca marche nickel.
Je vais laisser tourner plusieurs heures pour verifier que tout fonctionne bien et que je n'ai pas de plantage aléatoire.

Bon ca doit faire 6h que ca tourne sans problème.
Le montage recoit via le module radio une température provenant d'un autre arduino, et publis cette donnée sur pachube toutes les 5 secondes (je sais, 5 secondes c'est beaucoup mais c'est pour le tester "à fond" disons...

Entre temps j'ai refais le schema plus propre :slight_smile:
J'ai appris a utilisé les outils qui permettent de mettre des masses, des VCC et des labels... C'est ca qu'il me manquait! Je ne comprenais pas comment ne rien avoir de croisé!
Comme quoi, se faire critiquer, ca nous force a apprendre plus :slight_smile: C'est parfait!

Je vais quand meme le laisser tourner toute la nuit. Je vous tiendrais au courant.

Merci!

Les problèmes arrivant plutot a chaud, ce qui n'est pas trop la saison (glagla), je suggère de mettre le tout dans une boite bien isolé qui se chauffera elle-même.
24H à 40-45° et tu devrais être tranquille.

Est-ce que quelqu'un d'autre a l'expérience ici de faire tourner un ATmega à 3V3 @ 16MHz ?

Est-ce que quelqu'un d'autre a l'expérience ici de faire tourner un ATmega à 3V3 @ 16MHz

Conscient d'etre hors spécifications je cable toujours en 3V3 @16MHz sur mes plaques d'essais ou veroboards... vu que la quasi totalité des élements raccordés sont sous 3V3. A cette toute petite échelle je n'ai jamais constaté de dysfonctionnement imputable à cela. (réalisations à température ambiante, à quartz ou résonateur céramique)

JCW du site JeeLabs a choisi aussi de faire cet 'écart' pour ses JeeNode.
ll commercialise pourtant ses réalisations. On ne voit pas de retour à ce sujet sur ses forums.

Reste qu'Atmel ne garantit pas du tout le bon fonctionnement dans ces conditions.
Personellement si j'étais dans un projet industriel je rentrerai 'dans les clous' et ne dépasserai pas 12MHz.

Bonjour

J'ai terminé le routage du PCB dans fritzing.
J'ai fais juste une petite modif:
Dans le schema précédent, j'avais prévu un connecteur pour mon cable FTDI mais j'avais prévu de ne pas utiliser le 5v du ftdi.
Donc je voulais cabler seulement reset, rx, tx et la masse. J'avais prévu d'utilisé l'alimentation externe tout le temps. Surtout que la mon arduino va être alimenté en 3.3v et que mon cable FTDI est juste en 5v.
Mais je viens de penser que je pouvais tout simplement utiliser le 5v du cable FTDI comme entré au régulateur de tension 3.3v.
J'ai donc modifié mon schema comme suivant:

Est ce que ca vous parrait correct?

Le RX et TX de mon cable FTDI sont surrement en 5v aussi. J'imagine que meme si mon arduino est alimenté en 3.3v, il est quand meme 5v "tolerant"?

Merci de m'éclairer. Bonne journée

Tu n'as donc pas le droit de brancher simultanément le FTDI et l'alim externe.

Pour éviter un problème, insère une diode entre le +5V du connecteur FTDI et le 5V de la carte. Cela évitera à l'alim externe de remonter sur le FTDI et l'USB.

Oui pas de problème, j'avais prévu de ne jamais branché les deux alims en même temps.
Par contre tu me dis qu'avec une diode en plus, je pourrais avoir les deux branchés en même temps et ça ne serait pas grave?

Imaginons que mon transfo externe soit un 9v et que je branche en plus mon cable FTDI 5v
Donc mon régulateur 3.3v recoit le 9v + le 5v?
Par contre la diode empechera le 9v d'arriver sur le cable FTDI.

C'est bien cela?