Salut à tous,
Sur les modules que je connais, c'est indiqué entre 3,6 et 6V pour l'alimentation :
Pièce jointe 608021
Version imprimable
Salut à tous,
Sur les modules que je connais, c'est indiqué entre 3,6 et 6V pour l'alimentation :
Pièce jointe 608021
Ci-joint le PCB du projet final, sachant que le problème est aussi présent sur le petite maquette avec seulement l'ATMEGA328P et le HC05. Pièce jointe 608028
Oui c'est une simplification non volontaire; en réalité j'utilise un pont pour abaisser la tension à 3,3V sur ma maquette avec Arduino.Citation:
Sur le montage avec l'Arduino, tu n'utilises pas les deux résistances pour abaisser la tension de 5V vers 3.3V sur la ligne Arduino TX -> HC05 RX. Est-ce une simplification du schéma que tu as posté ou c'était vraiment comme cela?
Oui tout à fait; sur tous les essais précédents je l'alimentait en 5V. C'est à la suite de lecture sur le Net que j'ai mis ce pont diviseur, mais cela n'a rien changé.Citation:
As tu essayé de juste alimenter ton HC05 en 5V ?
Le 5V n'est pas proprement découplé. Il n'y a qu'un condo céramique en sortie du régulateur (et pas bien placé), et aucun proche de l'AVR. C'est une source immédiate de manque de stabilité de l'oscillateur.
Soude un condensateur céramique entre 10nF et 100nF directement sur le PCB au dos du socle de l'AVR (sur les pattes 7 ou 20 et 8 ou 22).
C'est quoi le TO-220 sur la gauche de la moitié haute du PCB ? Si c'est un régulateur 3.3V, les deux condensateurs (si c'est cela) placé plus bas ne servent pas à grand-chose et il manque un condo céramique sur le 5V à proximité (c'est un bon générateur de parasite).
Au passage le HC05 n'est pas raccordé sur les bornes que tu indiques mais sur A0 et A1 (pattes 23/24), simplification de ta demande ?
Delias
Merci Delias pour ces remarques constructives que je vais appliquées sur mon circuit définitif.
Oui le TO220 est le régulateur 3,3V.Pourquoi?Citation:
les deux condensateurs placés plus bas ne servent pas à grand-chose
Oui sur mon circuit définitif ce sont les ports A0 A1 que j'utilise pour le SoftSerial pour le HC05.Citation:
Au passage le HC05 n'est pas raccordé sur les bornes que tu indiques mais sur A0 et A1 (pattes 23/24), simplification de ta demande ?
Cela dit sur ma petite maquette qui prend les alim sur une carte Arduino, j'ai bien découplé le 5V sur la breadboard où siège l'ATMEGA328P et le disfonctionnement est le même.
Pour illustrer le problème voici une photo de mon portable: à 12:37 je suis sur le montage avec l'Arduino: tout va bien. A 12:42 je suis passé sur le montage avec l'ATMEGA: on voit les signes cabalistiques transmis. :roll:
Pièce jointe 608055
Je viens de contrôler les messages sortant lors de la compilation et j'ai relevé une différence que je pense importante:
pour Arduino j'ai:pour ATMEGA328P j'ai:Citation:
Programmer Type : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
Peut-être que le problème se situe dans un de ces paramètres différent; Oscillator?Citation:
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
Mais comment modifier si cela est à l'origine du conflit?
Bonsoir
La différence c'est la configuration du programmateur, rien de choquant.
Tu n'as pas un Uno avec la puce sur un support? Histoire de mettre la puce Arduino sur ton montage. Cela permettrait de savoir une bonne fois pour toute si c'est un problème soft ou hard.
Cela marche quand-même un peu, le texte semble passer du module à l'AVR, signifiant que l'on est dans le bon ordre de grandeur (on n'a pas un facteur de 2, 4, 8 ou autre sur l'horloge)
[Edit], ouai non, le nombre de caractères n'est pas le même.
Quand je parle des fusibles c'est la Table 27-7. "Fuse Low Byte" qui doit être configuré en $FF pour être identique à la configuration Arduino. Je n'ai pas l'impression que tu parles de cela dans ta réponse à ce sujet.
Les fusible ne se programment pas par le code, mais par le programmateur. (et il y a 3 bytes de fusibles)
Il ne faut pas confondre les fusibles qui paramètrent le micro lors du démarrage avec les registres de configuration de l'horloge (OSCCAL et CLKPR)
[/edit]
Les condensateurs de découplage doivent être sur le chemin du courant et au plus près de la puce qu'ils découplent, c'est pour cela que les condensateurs du régulateur 3.3V ne sont pas à la bonne place.
Le gros, je ne sais pas ce que c'est, mais ce n'est pas un condensateur de découplage.
Perso j'utilise des X7R comme celui-ci (s'ils ont un visuel similaire c'est très probablement bon):
https://www.mouser.ch/images/tdk/images/FG_Bend_DSL.jpg
Tes condos au pas de 200 mils, me font dire que ce n'est éventuellement pas les bons. (Même si des condo adaptés se trouve au pas de 5.08mm, le plus usuel c'est le pas de 2.54mm)
Tu devrais en mettre un sur la ligne entre le régulateur et module HC05 (une patte sur la ligne de 3.3V, l'autre sur la masse). Tu devrais également en mettre un entre le 5V et la masse au plus près du régulateur 3.3V. (En entrée d'un régulateur c'est obligatoire). Pour l'essai, c'est soudable au dos, directement sur les pattes du régulateur 3.3V.
Cela pourrait bien être simplement le régulateur 3.3V qui n'est pas assez stable.
Delias
Bonjour Delias
J'ai bien compris ce qu'étaient les fusibles qui sont chargés par le bootloader . J'ai bien positionner le "fuse low byte" à 0xFF. et lorsque je compile AVRDUDE l'indique bien.
Comme je l'ai indiqué dans un des nombreux messages précédents, j'ai utilisé le même microcontroleur ATMEGA sur ma maquette Arduino et sur ma petite maquette standalone (que j'avais précédemment "bootloadé").Citation:
Tu n'as pas un Uno avec la puce sur un support? Histoire de mettre la puce Arduino sur ton montage. Cela permettrait de savoir une bonne fois pour toute si c'est un problème soft ou hard.
Je te remercie pour les conseils constructifs concernant mon circuit imprimé. Il est vrai que je suis un bricoleur et que je conçois mes cartes de façon empirique.
Mais, je vais dire que pour l'instant, ce qui est capital, c'est de faire fonctionner la petite maquette avec seulement un ATMEGA328P et un HC05.
Voilà le schéma de mes maquettes actuelles mis à jour avec les différentes remarques reçues.Pièce jointe 608094
Si je réussissais à faire fonctionner simplement cela, je pourrais certainement faire fonctionner mon circuit définitif avec les modifs que tu m'as conseillées.
Si tu le désires, je peux d'envoyer le schéma complet du projet.
Merci encore.
Michel
Bonjour
Au sujet des condensateurs et de leur positionnement:
http://genelaix.free.fr/IMG/pdf/deco...t_filtrage.pdf
Pour une fois concis et correct.
Delias
Bonsoir
Désolé pour les questions auxquels tu as déjà répondu, comme j'ai dit, je cherches les différentes raisons possibles.
Est-ce que tu pourrais nous mettre une photo recto/verso de ton module HC05 ? Et de ton montage en l'état actuel (dessus si breadboard, ou recto-verso si PCB).
Delias
Bonjour, ci joint les éléments que tu m'as demandé.
Pièce jointe 608173Pièce jointe 608174
Mais je pense que le problème n'est pas une question de "tripailles". J'ai remarqué que les signes cabalistiques que je reçois lors de la transmission sont différents selon que je mets un quartz 16Mhz ou un résonateur 16Mhz. J'ai l'impression que c'est vraiment un problème de fréquence, mais je ne vois pas comment le résoudre. Je suis allé sur un site américain où quelqu'un a eu le même problème avec un ESP8266 . Une réponse rejoint l'idée d'une fréquence mal adaptée mais personne n'a pu donner la solution exacte.
Merci encore pour l'intérêt que vous portez à mon truc! :?
Bonjour
Déjà pour le module HC05, c'est bien vu de F-Leb :plusser: alimentation en 5V et pas besoin de déparasitage sur le PCB, tout est déjà inclu dans le module (par contre sur breadboard, un petit condo de 100n ne fera pas de mal.)
Ce qui ne va pas sur ton montage:
- pas de condo sur le résonateur
- liaison de masse entre le résonateur et le micro trop longue. Tu mets la masse du résonateur dans le rail vertical, c'est bien, mais le micro doit ensuite être raccordé en court dessus (comme avec le petit fil rouge qui fait le pont entre les deux rails verticaux du VCC).
- Les fils d'alimentation du micro doivent être plus cours entre les deux côtés du micro. D'utiliser des longs fils de l’Arduino à la breadboard cela va passer car le condo compense l'effet. Mais entres les deux côtés du micro il faut du court.
La stabilité d'un oscillateur c'est toujours délicat, surtout quand on monte en fréquence.
Histoire de vérifier que c'est bien cela, est-ce que tu peux charger un programme blink de 1s dans les deux puces (pas besoin d'être évolué: digitalwrite high; delais 500ms; digitalwrite low; delais 500ms; )
Est-ce que les deux led clignote sensiblement à la même fréquence (pas un facteur 2)?
Quel est la durée entre les moments "les deux clignotent ensemble" et "les deux clignotent en alternance" ? (Mesure de la stabilité par mesure du recouvrement de fréquence, si c'est moins d'une minute ce n'est pas bon, si c'est plus ce n'est pas un problème de fréquence)
A titre informatif, une trame série classique fait 10 bits de long (start, 8 données, stop). Un bon système va accepté un décalage d'un demi bit à la fin de la trame soit 5% d'erreur de timing. Mais un algo de lecture un peu pourris va déjà planté dès 1/4 voir 1/8 d'erreur (soit 2.5% ou 1.25% de dérive d'horloge). La plupart des algos que j'ai vu sont au 1/4 de période d'erreur soit 2.5%, avec un quartz c'est normalement bien en dessous.
Delias
Bonsoir Delias
Les condensateurs sont intégrés mais j'ai essayé aussi un quartz 16MHz avec deux petits condos céramiques 22pF.Citation:
pas de condo sur le résonateur
Je viens de mettre des fils courts sur l'alim du micro.
J'ai chargé le petit prog blink dans les deux micro avec des délais de 500ms.
D'abord avec le résonateur: résultat catastrophique.
ensuite avec le quartz et les condos céram: pratiquement synchro avec un décalage d'une 1/2s toutes les 10s environ.
Bonsoir
La bonne nouvelle c'est que le problème est identifié, la mauvaise c'est que j'ai déjà donnés toutes les pistes que j'avais pour le résoudre.
1/2 seconde sur 10sec, soit 1/20ème d'erreur c'est 5% c'est trop pour un RS232. (d'autant plus qu'avec un Softserial, il y a potentiellement déjà une erreur lié au code).
Et 5% c'est en dehors de toutes valeur raisonnable d'un quartz.
Edit: je viens de vérifier sur Mouser. En sélectionnant le filtre pour une fréquence de 16MHz, le filtre pour la tolérance en fréquence se réduit entre 8ppm et 100ppm
Au hasard un Würth dont le prix est de 34 centimes (de CHF) est à 30ppm.
100ppm c'est 0.01%
Petite histoire perso
J'ai vraiment pratiqué les AVR entre 1998 et 2008 sur la base des kits STK200 et STK300 qui sont équipés d'un quartz de 4MHz. C'est ce que je maitrise vraiment. Et déjà à cette fréquence ce n'est pas évident de fonctionner proprement sur plaque d'essai, alors à 16MHz...
Pour bien fonctionner, il faut que les contacts dans la plaque d'essai soient au top. Il faut éviter les pattes trop courtes. C'est éventuellement ton problème actuellement. Il serait bien de réessayer sur le PCB.
Ou alors c'est ton quartz d'occasion qui n'est plus en forme.
:fleche: tant que l'exercice du blink n'est pas bon (au grand minimum 20s pour une 1/2 seconde d'écart, idéalement le double ou bien plus), il est inutile de chercher autre chose.
Bonne suite
Delias
Bonjour,
Les plaques d'essais sont trop capacitives en regard des condo de 22pF, je ne suis pas surpris que ça merdouille un peu. Comme dit Delias il faut essayer sur le PCB.
Je ne suis pas sûr que mon quartz de récup soit au top. Aussi je viens d'en commander quelques uns. J'essaierai dès réception. Ceux que j'ai commandés doivent fonctionner avec des capas de 18pF.
Si j'ai encore des difficultés, j'abandonnerai la transmission asynchrone. Je pense qu'il existe des modules Bluetooth avec une communication synchrone genre SPI.
dès que j'aurais fait ces ultimes essais, je vous tiendrai au courant des résultats.
Cordialement
Michel
Bonjour
Ben non après un peu de réflexion j'ai encore deux astuces dans mes cartons.Citation:
...c'est que j'ai déjà donnés toutes les pistes que j'avais pour le résoudre.
Tu peux essayer de passer les fusibles en mode full swing oscillator qui d'après la description est moins sensibles aux parasites, attention dans ce mode le paramétrage est différent entre quartz et résonateur. Par contre je n'ai jamais comparer les deux.
Ou tu peux passer sur de l'oscillateur haut de gamme, par exemple: https://www.mouser.ch/new/ecs/ecs-ec...k-oscillators/ (dans ce cas les fusibles doivent être configurés en horloge externe)
A titre perso j'arrive à la limite de mon expérience, quand j'utilisais les AT90S (la 1ère génération d'AVR), il n'y avait pas le choix entre deux oscillateurs (ce devait être plutôt similaire au full swing, mais sans certitude), et les fusibles n'étaient programmable qu'en parallèle dont je n'ai jamais eu l'appareil (donc mes puces sont restées en config d'usine).
Depuis que je suis passé sur la nouvelle génération (ATTiny et ATMega), je reste principalement sur l'oscillateur interne à 8MHz. Pour un seul montage j'avais besoin de 10MHz minimum, et dans mon stock de pièces récupérées je n'avais qu'un de ces oscillateur au format DIL14 (comme mon lien). L'avantage pour le bricolage c'est que c'est stable sans prise de tête.
En montage à quartz, le plus haut que j'ai fais c'est 8MHz
Bonne suite
Delias
Bonjour
je reprends tardivement cette discussion car j'étais toujours en recherche d'une solution pour faire fonctionner mon montage.
Et tout bien réfléchi, je me moque un peu de travailler à 16MHz. 8Mhz me suffise grandement , alors j'ai décidé de bootloader une config 8MHz avec oscillateur interne, donc sans quartz. La manip n'a pas été évidente, j'ai cramé un ATMEGA, je ne parle pas du bazar dans le labo. Enfin, je viens d'installer mon microcontroleur sur ma carte définitive après avoir pris soin de couper le résonateur et, Eureka, ça fonctionne.
Cependant, dès que j'aurais reçu mes quartz 16MHz, je referai l'essai.
Merci encore à tous les contributeurs à ce forum qui passent du temps pour aider les autres.
Cordialement
Michel
Bonjour Michel
Attention néanmoins avec l'oscillateur intégré, la fréquence est dépendante de la tension d'alimentation et de la température de la puce. C'est calibré en usine donc la fréquence est bonne sur le bureau, mais quand cela passe sur une alim par batterie et en extérieur cela peut vite changer de beaucoup.
Bonne suite
Delias
Bonjour Delias
Merci pour ces ultimes conseils. En fait, ce montage sera toujours en intérieur car c'est pour programmer mes volets roulants. Néanmoins, j'essaierai tout de même avec un quartz.
Bien que ce ne soit peut-être pas l'endroit, je joins le schéma de mon montage. Si tu peux jeter un coup d'oeil averti et me promulguer quelques conseils, je t'en saurai gré.
Pièce jointe 608439
Cordialement
Michel
Juste pour information à propos des limites en fréquence d'une breadboard.
Voici un simple filtre RC avec une filasse peu soignée.
Pièce jointe 608553
Et voilà le résultat lors d'un tracé du diagramme de Bode :aie: Arrivé à 4 MHz on voit l'effet inductif de la filasse et des pattes de composants. Pour moi un montage sur plaque d'essai c'est 1MHz ou pas beaucoup plus.
Pièce jointe 608555