Obecnie projektuję obwód, który może rejestrować dane z czujnika i zapisywać dane zapisane w pamięci EEPROM. Moje dwa urządzenia (EEPROM i do celów testowych RTC) są połączone magistralą I2C z PIC16F887 µC. Jednak zakres działania napięcia dwóch urządzeń nie jest taki sam (5 V dla EEPROM, 3.3 dla RTC), a moja bateria to bateria 9 V.
Dlatego zaprojektowałem obwód elektroniczny z manetką składającą się z tranzystorów MOSFET dla okablowania SDA / SDL. Do tego dodałem dwa regulatory napięcia LM317 do zasilania urządzeń (9 V -> 3,3 V i 9 V -> 5 V). Ponieważ nie jestem ekspertem w projektowaniu takich rzeczy, byłbym wdzięczny, gdybyś mógł rzucić okiem na to, co zrobiłem i powiedzieć, czy zrobiłem coś strasznie złego!
Odpowiedzi:
Pomimo innych uwag samo rozwiązanie jest w porządku. Widzę jednak kilka drobnych problemów.
10-kilogramowe rezystory podciągające w autobusie nie są wystarczająco sztywne, szczególnie jeśli chcesz użyć wyższych prędkości magistrali.
Potrzebujesz wejściowych i wyjściowych kondensatorów odsprzęgających na liniowych regulatorach i cyfrowych układach scalonych. 100nF to dobry początek dla cyfrowych układów scalonych i dla regulatorów liniowych, 100nF na wejściach i 1μF na wyjściach.
źródło
Tak, zrobiłeś na swoim schemacie rzeczy, które są strasznie złe. Aby prawidłowo przesunąć poziom napięcia, zobacz Adres Slave I2C nie potwierdzony (czasami) Do zmiany poziomu służy układ MAX3373E. Należy pamiętać, że rezystory podciągające są pokazane na liniach SDA i SCK. Jednak w przypadku korzystania z MAX3373E rezystory podciągające nie są wymagane, ponieważ MAX3373E ma wbudowane podciągnięcia po obu stronach linii we / wy. Istnieją również inne układy scalone do zmiany poziomu. Możesz przejść do Digi Key lub Mouser i wyszukać.
źródło