Go Down

Topic: [SPI]Utiliser des périphériques avec des tensions différentes. (Read 1 time) previous topic - next topic

timiti29

Nov 01, 2013, 10:01 pm Last Edit: Nov 05, 2013, 10:03 pm by timiti29 Reason: 1
Bonjour,
J'ai actuelement un arduino Mega2560, un module Ethernet ENC28J60 en 5v et un module RFID en 3.3v

Je dispose de plusieurs CD4050 pour faire du level-shifting.

cependant je ne sais pas comment je doit cablé car il y a une différence de tension entre le module Ethernet et RFID.

J'ai essayé les deux modules indépendament et il marche sans problème.
pour l'ethernet j'avais brancher dirrectement sur le 5v de l'arduino,
pour le module RFID j'avais utiliser les CD4050 pour convertir le 5v en 3.3 et un deuxieme pour le 3.3v du miso vers 5v pour l'arduino.

Comment dois-je faire ?
Est-ce  possible au moin ?

Je vous remercie.


B@tto

En fait je comprends pas vraiment ton problème, du moment que tu respectes les tensions de chaque module y'a pas de problème. Donc mis à part ton RFID qui doit avoir chacun de ses pin SPI derrière une porte du CD4050, y'a rien à changer.

Je vois pas vraiment ton questionnement vu que tu dis avoir déjà testé séparement
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

skywodd

Bonjour,

Ton câblage de chaque module séparément marche ?
Si oui le problème n'en est pas un.

Tu branches exactement de la même façon que séparément en prenant juste soin de ne pas avoir la broche CS (chip select) au même endroit pour les deux modules.
C'est tout, c'est pas plus compliqué que ça ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

timiti29

Bonjour,
Je poste donc mon schemas :


Je n'est pas mis de 4050 pour la liaison MISO entre le RFID et l'arduino car je n'obtient pas de bonne valeurs et par consequant, sa ne marche pas (bizard d'ailleurs)

bref, mon code ne fonctionnant pas, je penssais à un problème hardware.
le but du programme est de lire une carte RFID et quand il y en a une, on envoie les infos via une requete POST sur un serveur apache qui via un script php ajoute une entrée dans une basse de données MySQL.

J'ai donc bien ma lecture du tag, l'arduino dispose bien d'une adresse IP, ... mais je n'ai aucune trame (via wireshark sur mon pc)

Je pose le code pour ceux qui sont intérésé en piece jointe

Pourquoi n'est-je aucune trame ?

Merci
Timiti29

skywodd

Rajoute une diode (1N4148 ou assimilé) entre le MISO de l'ethernet et la ligne MISO 3v3/arduino.
Actuellement quand ton module ethernet parle il balance du 5v dans la ligne MISO commune qui va directement au module 3v3.
Ça a pas du faire de dégât mais ce serait bien de rajouter cette diode.

Bon sinon ton problème vient à coup sur du code, mais je t'avouerai que je j'ai pas eu le courage de le lire en entier.
Juste un conseil :
Code: [Select]
#define disMFRC digitalWrite(chipSelectPin, HIGH);
// ...
disMFRC
// ...

C'est juste horrible à lire.

Code: [Select]
#define disMFRC() digitalWrite(chipSelectPin, HIGH)
// ...
disMFRC();
// ...

C'est tout de suite plus propre.

A mon avis tu as un problème de chipselect, actuellement c'est vraiment brouillon la façon dont tu sélectionne / désélectionne les modules.

Travail par bloc : tu sélectionnes X, tu fait ton truc avec X, tu désélectionnes X, le tout dans le même bloc.
Ton truc au début avec la partie ethernet qui vient ce mettre entre deux morceaux de lecteur mifare c'est typiquement le genre de truc qui va foutre la merde. Pour peu qu'en plus il y ait un timing précis à respecter pour l'initialisation c'est foutu.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

timiti29

#6
Nov 05, 2013, 09:11 pm Last Edit: Nov 05, 2013, 09:17 pm by timiti29 Reason: 1
Merci pour les propositions d'améliorations,

j'ai fait ce schemas avec la diode :


Je ne sais pas si c'est sa que tu me proposais mais chez moi sa ne fonctionne pas, mon lecteur ne lit plus mon tag avec la diode.
J'ai utilisé une 1N4148 comme l'image :


Merci.
Timiti29

Super_Cinci

sans vouloir faire mon chieur, mais tu voudrais pas modifier ton premier post dans le titre? utiliser au lieu de utilisé, ça me choque grave depuis quelque temps... ;)

merci!


skywodd

Il y a de l'idée mais moi je voyais pas le diode de ce côté mais sur le côté MISO ethernet.
Le but c'est de faire tomber le 5v à du ~3v3, une diode 1n4148 a une tension de jonction de ~0.6v en en mettant 3 en série tu arrives à quasiment 3v3 en partant de 5v.
Sinon il y a plus simple, une diode zener 3v3 entre MISO et GND mais je sait pas si tu en as.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

patg_

Pour un de mes futurs projets je pense utiliser ce système pour adapter les voltages:


Issu de cette note d'application: http://www.semiconductors.philips.com/acrobat/applicationnotes/an97055.pdf

Mes Arduineries: http://breizhmakers.over-blog.com/

68tjs

Est ce quelqu'un a relevé le schéma des petits modules que l'on trouve sur ebay ?

skywodd


Est ce quelqu'un a relevé le schéma des petits modules que l'on trouve sur ebay ?

C'est un truc ultra classique :
http://dlnmh9ip6v2uc.cloudfront.net/datasheets/BreakoutBoards/Logic_Level_Converter.pdf
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

68tjs

Ok, c'est le schéma de la note d'application Philips.

skywodd


Ok, c'est le schéma de la note d'application Philips.

Ben oui pourquoi chercher plus compliqué :smiley-mr-green:
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up