Digitale Potentiometer

  • Erst mal Hallo an alle!

    Bin ein RP einsteiger und hab bereits ein wenig gebastelt. Leider habe ich noch so gut wie kein Erfahrung. Habe mich gestern 5h lang durch Inet geklicket aber nicht wirklich etwas brauchbares gefunden. Ich hoffe mit eurer Hilfe das Problem in den Griff zu bekommen und wenn alles funktioniert werd ich auch ein How To schreiben!

    Also hier zu mein Problem:

    Ich muss einen Temperatursensor simulieren. Dieser ist ja nichts anderes als ein NTC-Widerstand. Ich gaukle mit dem Versuchsaufbau praktisch eine bestimmte Temperatur vor. Die Temperaturdaten hole ich aus dem Internet.

    Ich habe sogenannte "Digitale Potentiometer" gefunden. Die gibts es bei Conrad und Reichelt zwar nicht in wirklich großer auswahl aber dennoch. (Wenn ihr eine bessere Adresse habt könnt ihr mir diese gerne nennen ;) ).


    Ich muss einen Widerstandbereich von ca. 2kOhm bis 100kOhm realisieren. Dummerweiße handelt es sich hier um einen nichtlinearen Verlauf (siehe Bild im Anhang). Da die digi Pot's immer nur in Schritten den Widerstand ändern können, sollte pro Schritt nicht mehr als +-50Ohm anfallen.


    1. Frage: Welches Protokoll ist einfacher/besser für meinen Versuch (I2C oder SPI)
    2. Frage: Ist es möglich mehrere digi Potis mit diesem zu steuern?


    Ich habe jetzt mal die zwei Potis in Augenschein genommen:
    10kOhm 256 Step

    100kOhm 256 Step

    Diese werden der nichtliniarität soweit gerecht. Im unteren Bereich löst der 10kOhm genügend gut auf und nach oben hin ist der 100kOhm ausreichend.

    Thema Verschaltung:
    Datenblatt
    Hier mal das Datenblatt^^

    Frage 3:
    Also es gibt folgende Eingänge bei diesen Beispielchips:
    Vdd = 5V oder 3,3V laut Datenblatt beides möglich. Was meint ihr?
    Vss = Ground
    A1 = ?
    HVC/A0 = ?
    SCL = Pin 5 RP
    SDA = Pin 3 RP
    WP = Bei negative Flanke wird der Speicher gesperrt soweit ich gelesen habe
    Reset = Bei negativer Flanke wird er wohl auf den Ausgangswiderstand zurückgesetzt


    Frage 4: Wie verschaltet dann mehrere Digi Potis?


    Software:

    Eine Anleitung wie man I²C generell aktiviert gibt es ja genüge im Inet. Also gehen wir davon aus alles richtig verkabelt und wenn ich den Bus abfrage melden sich die zwei Potis.

    Frage 5: Wie spreche ich die Bausteine an? Wie schreibe ich in das Register?


    Wäre super wenn ihr mir helfen könntet. Wie gesagt wenn ich es geschafft habe werde ich ein Tutorial erstellen um anderen Nutzern und euch diese Fragen zu ersparen.

    :danke_ATDE:


  • 1. Frage: Welches Protokoll ist einfacher/besser für meinen Versuch (I2C oder SPI)

    ich würde I2C wählen weil ich mit denen mehr gemacht habe, zu SPI ist es mir noch nicht klar wann CE0 CE1 oder CS verlangt wird, jeder Chip will das irgendwie anders, dann kommen noch die verschiedensten Bitraten hinzu, was bei mehren Chips zum Durcheinander führen kann.


    2. Frage: Ist es möglich mehrere digi Potis mit diesem zu steuern?

    das lese ich so, zumindest über einen derA Leitungen 0 oder 1 hat man freie Möglichkeit, macht 2 IC, wenn sich die Basisadresse der beiden unterscheidet noch besser.


    Ich habe jetzt mal die zwei Potis in Augenschein genommen:
    Frage 3:
    Vdd = 5V oder 3,3V laut Datenblatt beides möglich. Was meint ihr?

    klare Antwort (für meinen Teil) , am PI 3,3V am Atmel 5V


    Thema Verschaltung
    A1 = ?
    HVC/A0 = ?

    da müsste man sich viel tiefer ins Datenblatt einlesen, sowas ist mir noch nicht begegnet.
    Eine Adresse hat eine Verknüpfung zu einem hochvolt Mode, lassen wir den erst mal unangetastet wenn wir ihn nicht brauchen, bleibt eine unabhängige Adresse über für 2 Chips mit der selben Basisadress.


    Frage 4: Wie verschaltet dann mehrere Digi Potis?[/b]

    analog oder digital ?


    Eine Anleitung wie man I²C generell aktiviert gibt es ja genüge im Inet. Also gehen wir davon aus alles richtig verkabelt und wenn ich den Bus abfrage melden sich die zwei Potis.

    ja, am PI empfehle ich mal hier zu lesen,
    Realtime Clock (RTC DS1307) am Raspberry Pi betreiben

    hat mir geholfen, dummerweise betrachtet jeder die Adressgenerierung anders

    ich schaue ins Datanblatt und nehme alle Bits ! für ein Adressbyte !
    in o.g. Link wurde das nicht getan was zu einer Verwirrung bei mir führte die ich dann später auflösen konnte.

    ist zwar am Arduino aber nun gut....

    Code
    I2C Scanner -> Scanning...
    I2C device found at address 0x38; 0111000x; << 0x70; 01110000 PCF8574A Tastatur
    I2C device found at address 0x50; 1010000x; << 0xA0; 10100000
    I2C device found at address 0x68; 1101000x; << 0xD0; 11010000 DS1307/DS3231 RTC
    done

    meine Tastatur liegt bei mir auf 0x70, das letzte Bit ist aber R/W vorbehalten was für die PI (der anderen) Schreiber eben nicht zählt oder anders gesagt, es sind nur 127 Adressen nach alter Definition möglich, ergo wurden nur die vordersten 7 Bit beguckt was zu 0x38 führt

    mit einem links shift habe ich meine kleine Welt wieder gerade gerückt, wie man das auch betrachtet ist ja egal, nur muss man sich vorher über die Betrachtungsweise einigen.


    Frage 5: Wie spreche ich die Bausteine an? Wie schreibe ich in das Register?

    da hilft evtl. ein Blick in die verschiedensten Libs

    man init I2C, sendet (als Master) ein Start command, wartet auf Antwort liest soviel wie nötig und sendet (als Master) ein Stop command und schaut noch ob der Slave "die Beine vom Bus nimmt" damit der wieder frei ist für andere.

    C Quellcodes habe ich (für AVR), sollte am PI ähnlich sein nur da bin ich noch nicht so tief drin


    Wäre super wenn ihr mir helfen könntet.

    wir versuchen es, bei dieser Vorarbeit auch gerne :thumbs1:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • So danke für die Antwort! ich werd mir erst mal die beiden Potis kaufen und ein bisschen probieren.

    Derweil hab ich das Datasheet mal durchgearbeitet und auf S 58 auf die Tabelle im Anhang getroffen.

    Auf dieser Website habe ich eine Anleitung gefunden wie man anscheinend mit I²C Bausteinen kommunizieren kann:

    $ i2cget -y 0 0x20
    Holt sich am Bus 0 die Daten der Adresse 0x20 (Steht hier drin welcher Wert sich gerade im Poti befindet?!?)

    $ sudo i2cset -y 0 0x20 0x00
    Schreibt am Bus 0 auf die Adresse 0x20 den Wert 0x00.


    Wenn ich jetzt die Tabelle verwendet aus dem Anhang:
    $ sudo i2cset -y 0 0x20 10000100
    Würde jetzt das Register 0 um eins erhöhen oder?

    Wiper 0 Register ist für die ersten 128 Steps und Wiper 1 Register wohl für die zweiten 128 Steps. Da es sich mit maximal 8Bit adressieren lässt und 128d = 10000000b ist.

    Wie schreibe ich jetzt aber direkt in den Speicher? Also nicht nur um eins erhöhen sondern direkt einen Wert z.B. 00110010 (50d)?


    hab mir wegen der Verschaltung nochmal Gedanken gemacht und in den Anhang gepackt. hab eine Rohschaltung ohne Leitungen dazu gepackt. Vielleicht schmeist auch jemand schnell paint an ;-).

    Was sagt ihr dazu? Leg ich hier total falsch? Hab alles ein wenig kommentiert das man evtl versteht was mein Gedankengang war.


  • Was sagt ihr dazu? Leg ich hier total falsch? Hab alles ein wenig kommentiert das man evtl versteht was mein Gedankengang war.

    kann dazu noch nix sagen, stecke selber in Arbeit, nur 2 Anmerkungen


    Ich muss einen Temperatursensor simulieren. Dieser ist ja nichts anderes als ein NTC-Widerstand......

    WARUM ?

    1. ist ein Temperatur Sensor nicht immer ein NTC, kann genauso gut PTC oder digital sein !
    2. wenn es ein NTC ist so wird der über ein konstante Spannung und einem konstanten Teilerwiderstand oder in einer Messbrücke an einen ADC geführt, dieser erwartet eine Spannung entsprechend der Temperatur, somit könnte ich den Umweg über Poti sparen und dem gleich die Spannung liefern mit einem DAC

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Stimmt. Ich hab da wohl ein bisschen falsch formuliert.

    Also der Tempsensor ist in diesem Fall ein NTC ;-).

    Es stimmt natürlich das der NTC ausgewertet werden muss und das man hier viel leichter angreifen könnte. ABER in diesem Fall komm ich da nicht ran, weil es sich um ein geschlossenes Modul handelt. Und nur Gott weiß wie das Sigal intern ausgewertet wird ;-).

    Also ich muss definitv (leider) diese Schnittstelle anzapfen und den Widerstand simulieren. Mich wundert bloß das es so wenig Infos über ein solch universelles Bauteil gibt :-/.

    Naja darum versuch ich auf jeden Fall das Wissen zu sammeln und dann alles sauber zusammenschreiben.


  • ....Also der Tempsensor ist in diesem Fall ein NTC ;-).

    ....ABER in diesem Fall komm ich da nicht ran, weil es sich um ein geschlossenes Modul handelt.

    wenn du an den NTC kommst und der ersetzt werden soll kommst du an seine Anschlüsse und an die kann man die Spannung (potenzialfrei) anlegen die sich einstellen würde wenn sich der NTC im Wert verändert.

    wenn du das mit einem Poti von aussen simmulieren kannst dann kannst du auch die Spannung messen oder eben diese einkoppeln.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ja jetzt verstehe ich was du meinst. Das sollte natürlich grundsätzlich möglich sein. Ich werde am Montag eine Messung diesbezüglich durchführen.

    Welchen DAC würdest du empfehlen? Der NTC wird mit 3,3V gespeist, das habe ich bereits herausgefunden!

    Trotzdem würde ich gerne wissen wie das mit den Potis funktioniert :P. Aus purer Neugier. Du könntest dir mal meinen Schaltungsvorschlag anschauen wenn du Zeit hast! Dann würde ich sobald ich die Teile habe mal probieren!


  • Welchen DAC würdest du empfehlen?

    ich mache gerade einen Aufbau mit einem 16-Bit DAC LTC1655
    http://www.linear.com/product/LTC1655


    Trotzdem würde ich gerne wissen wie das mit den Potis funktioniert :P. Aus purer Neugier. Du könntest dir mal meinen Schaltungsvorschlag anschauen wenn du Zeit hast! Dann würde ich sobald ich die Teile habe mal probieren!

    puh, kann dauern.....

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!