RealTimeClock - DS1307 - Anschluss an I2C mit 5V?

    • Official Post

    Hallo Leute,



    Ich habe mir folgende Real Time Clock (RTC) besorgt und frage mich nun, ob ich diese so ohne weiteres an den I2C anschließen kann, oder nicht.


    Laut diesem Artikel, soll das einfach möglich sein, da die Pullup Widerstände des RPI genutzt werden.
    Es wird doch aber allgemein gesagt, dass man keine 5V an die GPIOs anlegen darf.



    Folgende Fragen hätte ich nun:

    • Darf ich das Modul ohne weiteres direkt an den i2c anschließen? Wenn nein, wie? (rot markierte Pins)
    • Wofür ist der Pin mit DS? (grün gekennzeichnet)


    Schöne Grüße,
    ps915

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Edited once, last by ps915 ().

  • Wenn das Modul keine PullUp-Widerstände auf den I2C-Leitungen hat, haben die Leitungen keinen eigenen Pegel und schalten nur GND. Die 3,3Volt für den HighPegel kommen dann vom Pi und das Modul kann selber mit 5Volt laufen.
    Nach dem Schaltplan den man zu dem Modul im Netz findet (http://www.hobbyist.co.nz/site…TC/Tiny_RTC_schematic.pdf ) hat es aber PullUps (R2+R3)
    DS ist der Datenbus für den DS18B20 Temperatursensor der mit drauf sein soll. Auch bei dem ist der PullUp schon bestückt (R1) unddamit auch nicht 3,3Volt kompatibel.
    Für den Betrieb am Pi müsstest Du also R1,R2 und R3 entfernen.
    Alle Angaben falls der Schaltplan passt.

    Edited once, last by orb ().

    • Official Post

    danke für die Antwort.



    Wenn das Modul keine PullUp-Widerstände auf den I2C-Leitungen hat, haben die Leitungen keinen eigenen Pegel und schalten nur GND. Die 3,3Volt für den HighPegel kommen dann vom Pi und das Modul kann selber mit 5Volt laufen.


    Okay. Es hat also einen eigenen Pegel und wird mit 5V versorgt?!




    DS ist der Datenbus für den DS18B20 Temperatursensor der mit drauf sein soll.


    Interessant, das wird dann wohl der U1 Anschluss sein. Da könnte ich einen Sensor dazu löten.
    Den brauche ich aber nicht.




    Für den Betrieb am Pi müsstest Du also R1,R2 und R3 entfernen.
    Alle Angaben falls der Schaltplan passt.


    Vorrausgesetzt der Schaltplan stimmt, reicht es also die Widerstände R2 und R3 heraus zulöten und diese zu überbrücken (mit etwas Draht, oder reicht auch ein klecks Lötzinn?
    Würde es dann also bedeuten, dass ich das DS1307 Modul wie gewohnt per i2c und Kernelmodul ansprechen kann? Hat es dann den GPIO freundlichen 3,3 Volt Pegel?

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Edited once, last by ps915 ().


  • Vorrausgesetzt der Schaltplan stimmt, reicht es also die Widerstände R2 und R3 herauszulöten und diese zu überbrücken (mit etwas Draht, oder reicht auch ein klecks Lötzinn?
    Würde es dann also bedeuten, dass ich das DS1307 Modul wie gewohnt per i2c und Kernelmodul ansprechen kann? Hat es dann den GPIO freundlichen 3,3 Volt Pegel?


    Nein,entfernen nicht brücken, dann hättest Du die Datenleitungen fest mit 5Volt verbunden, einfach auslöten.
    Der GPIO-freundliche Pegel kommt dann vom Pi und Du kannst es wie in den ganzen Anleitungen ansprechen.
    Mit einem normalen Mutimeter kannst Du feststellen, ob es die PullUps sind: Eine Seite der Widerstände sollte direkt mit Vcc verbunden sein, die andere geht jeweils auf eine I2C-Leitung.

    • Official Post


    Nein,entfernen nicht brücken, dann hättest Du die Datenleitungen fest mit 5Volt verbunden, einfach auslöten.
    Der GPIO-freundliche Pegel kommt dann vom Pi und Du kannst es wie in den ganzen Anleitungen ansprechen.
    Mit einem normalen Mutimeter kannst Du feststellen, ob es die PullUps sind: Eine Seite der Widerstände sollte direkt mit Vcc verbunden sein, die andere geht jeweils auf eine I2C-Leitung.


    Gut, das habe ich verstanden. Ist im Schaltplan ja auch zu sehen.
    Mir ist nur noch nicht ganz klar, wie der DS1307 aus 5V vom RPi die benötigten 3V macht.
    Ich hoffe die letzte Frage dann auch noch zu klären!

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Edited once, last by ps915 ().


  • Mir ist nur noch nicht ganz klar, wie der DS1307 aus 5V vom RPi die benötigten 3V macht.


    Garnicht. Beim I2C-Bus wird GND geschaltet. Wenn da nichts angeschlossen ist sind die Leitungen tot, sie haben keine eigene Spannungsversorgung. Deßhalb müssen irgendwo auf dem Bus PullUp-Widerstände liegen mit denen dann die Spannung für den High-Pegel festgelegt wird. Die sind beim Pi fest eingebaut, 1,8kOhm gegen 3,3Volt. Dadurch kannst Du jedes I2C-Bauteil anschließen, selbst wenn es mit 24Volt läuft solange es keine zusätzlichen PullUps hat.

    • Official Post

    Ich danke dir! Dann lasse ich nun den Lötkolben aufwärmen und melde mich dann! =)

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    • Official Post

    Okay, kannst du mir kurz sagen, wie du das gemacht hast! ;)
    Lötarbeiten sind abgeschlossen, jetzt wollte ich es gleich mal testen.


    Was für eine zweite RTC ist denn noch verbaut? Nach deinem Bild zufolge hast du auch die beiden Widerstände entfernt?

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • Genau ... die beiden markierten Widerstände weg und dann einfach an den I2C-Bus.
    Das Modul dazu gibts im System.
    Wenn ich mich nicht irre, dann kannst Du jetzt mittels hwclock die Uhr einstellen.
    Ich weiss nur nicht mehr, welcher der default-Wert für die Uhr war.


    Beide Uhren haben natürlich verschiedene Adressen auf dem I2C-Bus ...
    falsch machen kannst Du da nix mehr ;) ...


    cu,
    -ds-


  • Es sind allerdings zwei RTCs drauf ... man muss halt die richtige anschliessen und abfragen.


    ähh, nö.
    Das zweite IC ist ein EEProm mit 32kBit (4kByte). Da kann man Daten speichern, die auch ohne Spannung erhalten bleiben. Ok, macht am PI nicht viel Sinn, am Arduino kann man zusätzlichen Speicher aber oft brauchen.

    • Official Post

    Also folgende Devices werden erkannt. Leide



    Code
    pi@raspberrypi ~ $ sudo i2cdetect -y 0
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --


    i2cdetect -y 0 weil ich REV1 benutzte



    Doch leider kann ich auf das Device nicht zugreifen.



    Code
    pi@raspberrypi ~ $ sudo echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
    -bash: /sys/class/i2c-adapter/i2c-0/new_device: Permission denied


    Dementsprechend kann ich hwclock auch nicht benutzten

    Code
    pi@raspberrypi ~ $ hwclock -r
    hwclock: Cannot access the Hardware Clock via any known method.
    hwclock: Use the --debug option to see the details of our search for an access method.


    Hat jemand eine Idee?

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • Ja hallo orb ... :) ...


    hmm ... also ich bild mir ein, da stand damals was von zwei Uhren ... kann auch sein, dass die zweite Adresse zu einem EEprom gehört. Ich weiss es ehrlich gesagt nicht mehr.
    Aber is ja auch egal ... im Grunde genommen ist es nur wichtig, die beiden Widerstände zu entfernen. Dann einfach mal alles an den I2C Bus und gut ist.


    ciao,
    -ds-
    [hr]


    ...
    Hat jemand eine Idee?



    Hi,

    sudo modprobe rtc-ds1307
    ?
    ciao,

    • Official Post


    hmm ... also ich bild mir ein, da stand damals was von zwei Uhren ... kann auch sein, dass die zweite Adresse zu einem EEprom gehört.


    In der Beschreibung steht etwas von "56 Bytes of Non-volatile memory available to user" Also doch ein Soeicher! ;)



    Dann einfach mal alles an den I2C Bus und gut ist.


    Irgendwie nicht. Ich kann die Werte zwar per Befehle abrufen (sekunden, minuten, stunden), doch einbinden schlägt fehl.



    Code
    pi@raspberrypi ~ $ sudo i2cget -y 0 0x68 0
    0x01
    pi@raspberrypi ~ $ sudo i2cget -y 0 0x68 1
    0x26
    pi@raspberrypi ~ $ sudo i2cget -y 0 0x68 2
    0x16





    Hi,

    sudo modprobe rtc-ds1307
    ?
    ciao,


    Nope, hab ich vorher gemacht! ;)





    Da steht allerdings Used by "0"

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Edited once, last by ps915 ().

    • Official Post

    Leider auch nicht:


    Code
    pi@raspberrypi ~ $ sudo echo "ds1307 0x68" > /sys/class/i2c-adapter/i2c-0/new_device
    -bash: /sys/class/i2c-adapter/i2c-0/new_device: Permission denied

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    • Official Post

    Ja, die Datei existiert! Doch auch mit sudo nano /sys/class/i2c-adapter/i2c-0/new_device habe ich keine Rechte.

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • Aaaalso ... ich hab' das Ding jetzt mal bei mir angeschlossen.
    Relevant sind die Pins auf der Seite des RTC-Moduls, das 7 Anschlüsse aufweist.
    Verbunden habe ich GND, Vcc (5 Volt!), SCL, SDA.


    Beim booten wird bei mir das i2c-Modul automatisch geladen. Falls das bei Dir nicht der Fall ist:



    Code
    sudo nano /etc/modprobe.d/raspi-blacklist.conf
    # blacklist i2c-bcm2708


    in der Blacklist das I2C-Modul auskommentieren.


    Danach die I2C-module laden:



    Code
    $ sudo modprobe i2c-bcm2708
    $ sudo modprobe i2c-dev


    und diese zwei Module in die /etc/modules eintragen.
    Danach habe ich einen



    Code
    $ sudo bash
    # root@raspberrypi:/home/pi# echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device


    gemacht. Du müsstest vermutlich ein:


    Code
    # echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device



    machen.
    Danach konnte ich problemlos die Uhr auslesen:



    Code
    root@raspberrypi:/home/pi# hwclock -r
    Mo 02 Sep 2013 19:34:29 CEST  -0.071315 seconds


    Hmm ... versuch mal nachzumachen ;) ...


    cu,
    -ds-