Je suis en train de concevoir un circuit qui peut enregistrer des données d'un capteur et sauvegarder les données enregistrées dans une EEPROM. Mes deux appareils (EEPROM et à des fins de test un RTC) sont connectés via un bus I2C à un PIC16F887 µC. Cependant, la plage de fonctionnement en tension des deux appareils n'est pas la même (5v pour l'EEPROM, 3,3 pour le RTC), et ma batterie est une batterie de 9V.
J'ai donc conçu un circuit électronique avec un décalage de niveau composé de MOSFET pour le câblage SDA / SDL. En plus de cela, j'ai ajouté deux régulateurs de tension LM317 pour alimenter les appareils (9V-> 3,3V et 9V-> 5V). Comme je ne suis pas un expert dans la conception de telles choses, j'apprécierais que vous jetiez un coup d'œil à ce que j'ai fait et me disiez si j'ai fait quelque chose d'horriblement mal!
Réponses:
Malgré d'autres commentaires, la solution elle-même est bonne. Je vois cependant quelques problèmes mineurs.
Les résistances de rappel 10k sur le bus ne sont pas assez rigides, surtout si vous souhaitez utiliser des vitesses de bus plus élevées.
Vous avez besoin de condensateurs de découplage d'entrée et de sortie sur vos régulateurs linéaires et circuits intégrés numériques. 100nF est un bon début pour les circuits intégrés numériques et pour les régulateurs linéaires, 100nF sur les entrées et 1μF sur les sorties.
la source
Oui, vous avez fait des choses horribles sur votre schéma. Pour modifier correctement le niveau de vos niveaux de tension, voir l' adresse de l'esclave I2C non acquittée (parfois) Le CI MAX3373E est utilisé pour le décalage de niveau. Veuillez noter que les résistances de tirage sont indiquées sur les lignes SDA et SCK. Cependant, lors de l'utilisation du MAX3373E, aucune résistance de pull up n'est requise car le MAX3373E est doté de pull ups intégrés des deux côtés des lignes d'E / S. Il existe également d'autres circuits intégrés pour le changement de niveau. Vous pouvez aller à Digi Key ou Mouser et rechercher.
la source