- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 40

Thema: bidirektionale Level-Converter I2C

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Beim ersten Sensor konnte ich nur finden, daß er nicht mehr produziert wird.

    Zitat Zitat von ePyx Beitrag anzeigen
    Hast du eigentlich auch noch andere TWI-Slaves die mit 5Volt arbeiten ? Wenn nein, kann man auch die Pullups an 3,3V hängen der ATmega kann dann immer noch zwischen Low und High unterscheiden.
    Das hatte ich schon vorgeschlagen, extremesports ist aber wohl der Meinung (siehe weiter oben), daß sich die 5V auf magische Weise über OC-Ausgänge und Pullups an 3,3V auf seine Sensoren übertragen und sie zerstören werden. Da muß er nun mal basteln.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.02.2010
    Beiträge
    101
    Also wenn ihr alle meint, dass das kein Problem ist das über Pull-Ups auf 3,3V anzuschließen werd ich das mal versuchen. Ich hab da immer so ein flaues Gefühl im Magen wenn ich mit verschiedenen Spannungen arbeite...
    Ich probiers die Tage mal auf den Steckbrett. Andere TWI-Slaves mit 5V hab ich momentan nicht geplant. Ich versuch trotzdem mal bei TI die entsprechenden ICs zu bekommen.

    Wäre das mit den Pull-Ups denn so richtig? Die beiden schwarzen Vierecke sollen die Pull-Ups sein. Hatte grad leider keine Zeit nen vernünftigen Schaltplan zu zeichnen...

    Klicke auf die Grafik für eine größere Ansicht

Name:	<a href=I2C3.3voltmociy.jpg Hits: 7 Größe: 19,4 KB ID: 22240" class="thumbnail" style="float:CONFIG" />
    Gerüße
    e.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Das sieht so ok aus. Und mach sie nicht so groß, so ca. 1 bis 2kOhm. Ein I2C Treiber muß 3mA treiben können. (Umgekehrt kann eine Body/Schutzdiode an einem IC-Eingang 5mA oder mehr nach der jeweiligen Versorgung vertragen)

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Für mich einfachste Lösung wäre den AVR auch mit 3,3 V zu versorgen.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.02.2010
    Beiträge
    101
    Hey PICture:
    es handelt sich um folgendes ATmega128 Board:
    http://www.avr-tools.de/component/pa...d,29/vmcchk,1/
    Im Datenblatt steht dass entweder 5 Volt oder 7-20 Volt mgl. sind.
    Man kann zwar den ATmega direkt mit Spannung versorgen, aber der Rest an ICs benötigt wohl 5 Volt. Und zwei Spannungsversorgungen sind nicht mgl.

    Grüße
    e.

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Dann kannst du es wirklich nicht machen, wenn es noch mehr Hardware gibt, die 5 V benötigt. Ich habe nur an deinen letzten Schaltplan gedacht (kenne AVR's nur grob).
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.02.2010
    Beiträge
    101
    Zitat Zitat von Klebwax Beitrag anzeigen
    Beim ersten Sensor konnte ich nur finden, daß er nicht mehr produziert wird.
    Das von Jeelabs is ja nur ne Breakout Platine ohne weitere Bestückung und da is folgende Sensorplatine dabei, die ich noch nicht auf das Breakoutboard gelötet hab:
    http://www.kosmodrom.com.ua/pdf/HDPM01.pdf
    Im Datenblatt is zu finden dass die Spannung von 2,4-5,25V mgl. ist.
    Weiter unten findet man aber auch die Angabe, dass 2,2-3,6V der mgl. Bereich ist.

    Evtl. weiß jemand mehr zu diesem Sensor?

    [edit]
    @PICture: Ja ich hab auf dem Schaltplan nur nen AVR gezeichnet, da wäre das mit den 3,3 Volt mgl. Bei dem letATwork Modul leider nicht. Deshalb beschäftigt mich die Sache mit dem 3,3Volt I2C ja auch so...
    [edit]

    Grüße
    e.

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Ja so war es von Klebwax und mir gemeint. Pullups für SDA und SCL an die Versorgungsspannung der Slaves.

    Zitat Zitat von Klebwax Beitrag anzeigen
    Das hatte ich schon vorgeschlagen, extremesports ist aber wohl der Meinung (siehe weiter oben), daß sich die 5V auf magische Weise über OC-Ausgänge und Pullups an 3,3V auf seine Sensoren übertragen und sie zerstören werden. Da muß er nun mal basteln.
    Tut mir leid, hab ich wohl überlesen.
    Grüße,
    Daniel

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.02.2010
    Beiträge
    101
    Am Dienstag werd ich das mit den Pullups auf dem Steckbrett mal testen. Bei TI hab ich jetzt noch mal Samples bestellt, die seit heute auf dem Weg zu mir sind.
    Dabei handelt es sich dann um folgende ICs:
    http://www.ti.com/lit/ds/symlink/tca9406.pdf
    Dafür werd ich also nebenbei auch mal ein Layout entwerfen, damit ich es dann letztendlich mit denen aufbauen kann.

    Grüße e.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.02.2010
    Beiträge
    101
    Ich habs in der Zwischenzeit geschafft das Ganze mal aufzubauen.

    Allerdings hab ich jetzt für die ersten Versuche eine etwas abgeänderte Hardware verwendet:
    Ein ATmega 8 (Code poste ich weiter unten noch) läuft mit 5 Volt.
    Als I2C Sensor hab ich ein Lux Plug von Jeelabs genommen (http://jeelabs.net/projects/hardware/wiki/Lux_Plug) da ich da die I2C Adresse kenne. Beim Heading Board ist mir die Adresse nicht bekannt - konnte sie noch in keinem Datenblatt finden. Außerdem benötigt das Heading Board ein Master Clock Signal mit 32 kHz. Das kann ja eigentlich ohne Probleme vom ATmega erzeugt werden, muss dann aber auch auf 3,3 Volt gebracht werden...
    Zurück zum momentanen Aufbau: Ich hab die Spannungsversorgung vom Sensor an 3,3 Volt angeschlossen. SDL und SDA sind am ATmega8 laut Datenblatt an Pin C4 und C5 angeschlossen und die Pullups(1kOhm) gehen auf 3,3 Volt.
    Vom ATmega gehen die UART Leitungen (RXD und TXD) zu einer USBtoUART Bridge, damit ich am PC über Hterm die Ausgabe des Controllers verfolgen kann.

    Hier mal der Code, der auf dem ATmega läuft:
    Code:
    ' BASCOM-Programm
    ' I2C-Scanner mit ATMega8
    '
    ' In:  beliebige I2C-Slaves  an C.4=SDA und C.5=SCL
    ' Out: SerialOut über UART
    ' Funktion dieses Demo-Programmes:
    ' Scannen der Slave-Adressen
    
    '$sim
    
    $regfile = "m8def.dat"                                      ' benutzter Mikrocontroller
    $crystal = 8000000                                          ' Taktfrequenz
    
    $hwstack = 40                                               ' Hardware Stack
    $swstack = 32                                               ' SW Stack
    $framesize = 60                                             ' Frame
    
    $baud = 9600
    
    Waitms 250
    
    Config Sda = Portc.4
    Config Scl = Portc.5
    
    'Config I2cdelay = 20
    
    I2cinit
    
    Dim Slaveadresse As Byte
    Dim Lux As Byte
    Lux = 0
    
    Do
       Print "I2C Slaves"
       Print "suchen..."
       Wait 2
    
       For Slaveadresse = 0 To 254 Step 1                      
          I2cstart                                              'Startbedingung senden
          I2cwbyte Slaveadresse                                 ' Addresse senden
    
          If Err = 0 Then                                       'I2C-Slave gefunden?
             Print "Slave dec: " ; Slaveadresse
             Print "h" ; Hex(slaveadresse) ; "  b" ; Bin(slaveadresse)
             Wait 2
          End If
    
          I2cstop                                               'Bus freigeben
       Next
    
       Print "Ende Scan"
       Wait 2
    
       I2cstart
       I2creceive &H72 , Lux
       Print "Lux72: " ; Lux
       I2cstop
    
       I2cstart
       I2creceive &H73 , Lux
       Print "Lux73: " ; Lux
       I2cstop
    
       I2cstart
       I2creceive &H74 , Lux
       Print "Lux74: " ; Lux
       I2cstop
    
       I2cstart
       I2creceive &H75 , Lux
       Print "Lux75: " ; Lux
       I2cstop
    Loop
    End
    Die 4 Blöcke mit den 4 Adressen zum Ende des codes kommen daher, dass ich als Ausgabe der eigentlichen Programmes diese 4 Adressen zurück bekommen hab.
    Laut Datenblatt sollte die Adresse 0x39 sein.

    Bei den Adressen &H72 und &H73 bekomme ich einen Wert von 0 zurück, bei den Adressen &H74 und &H75 bekomme ich einen Wert von 255 zurück. Diese Werte verändern sich leider nie.
    Eigentlich sollten doch nur die ungeraden Adressen die zum Lesen sein?!

    Hat mir evtl. jemand nen Tipp, wo meine Fehler bzw. meine Fehler liegen könnten - ich bin etwas ratlos.


    [edit]
    Ich hab gerade einen Schaltplan gefunden, wo jemand als Pullups gegen 3,3 Volt 10kOhm verwendet. Kann es daran liegen, dass ich die falschen Pullups verwende(1kOhm)?
    [edit]

    [edit]
    Ich bin mir ziemlich sicher, dass ich den Fehler in meinem Code und in meinen Gedanken gefunden hab:
    Nachdem das Modul ja mit 7 bit Adressen arbeitet, ich aber 8 bit Adressen abfrage finde ich binär: 01110010
    Die Adresse ist aber eigentlich nur 0111001 und somit dezimal 57 anstatt 72 oder was auch immer...
    Hier (http://www.rn-wissen.de/index.php/I2..._7-Bit-Adresse) hab ich herausgefunden, dass bei 7 bit Adressen das 8 byte das lesen oder schreiben angibt wobei 1 für lesen steht. Also sollte ich mit der Adresse 011100101 meinen Sensor auslesen können?! Dezimal wäre das dann die 229 (also die ungerade Adresse) und die 228 (also die gerade Adresse) um zu schreiben.
    [edit]


    Viele Grüße
    e.
    Geändert von extremesports (03.05.2012 um 20:57 Uhr)

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Einstieg auf niederigstem Level
    Von camarril im Forum Buchempfehlungen
    Antworten: 9
    Letzter Beitrag: 28.08.2010, 19:35
  2. Drehscheibe > IR Bidirektionale Datenübertragung
    Von shakespear im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 6
    Letzter Beitrag: 31.03.2008, 16:04
  3. Optokoppler für bidirektionale Schnittstelle ???
    Von müllo im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 03.11.2005, 21:12
  4. Antworten: 16
    Letzter Beitrag: 28.06.2005, 21:44
  5. bidirektionale Alternative zu I²C: RS232
    Von God im Forum AVR Hardwarethemen
    Antworten: 28
    Letzter Beitrag: 28.05.2004, 11:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen