Hallo, für ein Temperaturmessgerät, was ich für mein Hobbyprojekt benötige, verwende ich 40! ICs für PT100 mit SPI-Schnittstelle. Es ist sowohl Schreib- als auch Lesezugriff nötig. Wie kann ich am besten die 40x Chip Select auf nur einen einzigen wandeln? Ich möchte nicht die Variante von SPI benutzen, bei der MOSI bzw. MISO durchgeschliffen wird, sondern wirklich für jedes IC ein eigenes Chipselect. Kennt evtl. jemand einen geeigneten Baustein? Gruß, Paule
Von Linear kam vor kurzem Werbung, LTC2983 ist ein Chip für 20 Sensoren, hilft vielleicht auch. http://cds.linear.com/docs/en/datasheet/2983f.pdf
JojoS schrieb: > LTC2983 ist ein Chip für 20 Sensoren, Aber nur auf den 1. Blick: Beitrag "Re: ca. 100 PT1000 Messwiderstände messen" Paul K. schrieb: > Wie kann ich am besten die 40x Chip Select auf nur einen einzigen > wandeln? Das finde ich ungeschickt, zumal dann alle Leitungen mit Ausnahme von /CS parallel liegen. Wie genau muß denn die Temperaturmessung sein? Gingen auch PT1000? Dann wäre es möglich, per µC mehrere Kanäle (<= 8) zu messen und dann von nur noch fünf Einheiten die Daten einzulesen.
@ Paul K. (Gast) >Wie kann ich am besten die 40x Chip Select auf nur einen einzigen >wandeln? Gar nicht. Man kann z.B. 5 Stück 74HC138 und bissel andere Logik nehmen, um einen 1 aus 40 Dekoder zu basteln. Dann braucht man aber 6 IO Pins.
Schaulus Tiger schrieb: > "Wenn man nur Schieberegister hat, sieht jedes Problem seriell aus" Beim 74HC164 wird das Problem eher noch größer, da bei jedem Durchschieben eines Bits alle /CS einmal aktiviert werden. Der Typ stammt nämlich aus einer Zeit, wo Ausgangsregister die Fachwelt noch überforderten. 74HC4094 bzw. 74HC595 sind da deutlich besser.
Falk Brunner schrieb: > Man kann z.B. 5 Stück 74HC138 und bissel andere Logik nehmen, um einen 1 > aus 40 Dekoder zu basteln. Dann braucht man aber 6 IO Pins. Also 5 Pins mehr, als bei der 74HC164 Lösung. Beim 74HC164 braucht man nur eine extra Taktleitung. Als Datenleitung für die einzuschiebende 0 kann man MOSI mitbenutzen. Zwischenzeitliche /CS interessieren einen SPI-Slave nicht, solange SCK ruhig bleibt.
m.n. schrieb: > Beim 74HC164 wird das Problem eher noch größer, da bei jedem > Durchschieben eines Bits alle /CS einmal aktiviert werden. Genau das will der TO doch!?
Hallo Zusammen und wenn man einen 74hC595 nimmt, dann braucht man 2 Zusätzliche Leitungen zum SPI dazu und hat den Vorteil, dass der CS ruhig bleibt bis die Schieberegister geladen sind.... Gruß Thomas
Warum nicht 3 Stück 74HC154? Die Datenleitungen kannst du parallel ansteuern und die Auswahl machst du über die Enable Leitungen, braucht insgesamt 7 Leitungen am µC. Christian_RX7
Wieso nimmt man dann nicht gleich einen MCU mit mindestens 50 GPIOs? Paul K. schrieb: > Ich möchte nicht die Variante von SPI benutzen, bei der MOSI bzw. MISO > durchgeschliffen wird, sondern wirklich für jedes IC ein eigenes > Chipselect. Verstehe ich nicht ganz? Ist SPI nicht ein BUS der für sowas vorgesehen ist? Nimm doch einfach einen ATmega1280 oder so...
> ICs für PT100 mit SPI-Schnittstelle.
Welche denn? Kann man die nicht in einer Daisy chain betreiben, dann
brauchst du nur einen CS, MISO, MOSI, und SCLK am Master.
Naj für SCLK und CS eventuell noch nen Bustreiber für den Strom bzw. um die Kapazität umzuladen.
Paul K. schrieb: > für ein Temperaturmessgerät, was ich für mein Hobbyprojekt benötige, > verwende ich 40! ICs für PT100 mit SPI-Schnittstelle. Bei der Anforderung hätte ich auf I2C oder etwas Eigenes zurückgegriffen. Auf diese Weise kann man zum Beispiel die entsprechende Menge ATTinies an den Bus hängen, die dann alle separat ihre PT100 Messung machen und die Daten nach Aufforderung an den Mastercontroller schicken.
Paul K. schrieb: > Hallo, > Ich möchte nicht die Variante von SPI benutzen, bei der MOSI bzw. MISO > durchgeschliffen wird, sondern wirklich für jedes IC ein eigenes > Chipselect. I/O Expander geht nicht, Was hast du für kontroller? Wenn ein kompletes Port frei hast, kannst dann ein Multiplexer nehmen ;-)))
Hallo, entweder du dekodierst 6 Adressen auf 40 x CS, die Standardlösung. Oder du schiebst die 40 Bit durch entsprechend viele Schieberegister. Wenn du keinen wahlweisen Zugriff brauchst, kannst du 1 einzelnes Bit bei jedem Zugriff um eins weiterschieben, brauchst also zwischen 2 Slaves bloss einen Clk-Puls. An der Tatsache dass man 40 Leitungen braucht führt so oder so kein Weg vorbei. Georg
Paul K. schrieb: > 40! ICs für PT100 mit SPI-Schnittstelle Was sind denn das für ICs, die Du benutzt? D.h. jeweils ein PT100 hängt an einem dieser ICs? Und Du willst alle 40 ICs dannn durch einen Master-IC (AVR?) steuern und jeweils die CS Leitungen vom Master-IC durchsteuern und die Messwerte dann per SPI auslesen? Mit einem Port-Extender (MCP23017 et al.) oder einem TQFP64 AVR (z.B. ATMega644 oder ATMega128) als Master-IC ist das auch machbar. Diese haben 53 frei GPIOs und können die 40 CS der Reihe nach adressieren.
Paul K. schrieb: > Hallo, > > für ein Temperaturmessgerät, was ich für mein Hobbyprojekt benötige, > verwende ich 40! ICs für PT100 mit SPI-Schnittstelle. Es ist sowohl > Schreib- als auch Lesezugriff nötig. > > Wie kann ich am besten die 40x Chip Select auf nur einen einzigen > wandeln? > > Ich möchte nicht die Variante von SPI benutzen, bei der MOSI bzw. MISO > durchgeschliffen wird, sondern wirklich für jedes IC ein eigenes > Chipselect. > > Kennt evtl. jemand einen geeigneten Baustein? > > Gruß, > Paule Servus Paule wie mein Vorredner schon sagte, würde ich auch den MCP23S17 nehme. Der SPI Portexpander hat 2 volle 8 Bit Ports, somit hast du mit einem Baustein 16 GPIO, mit zwei 32 und mit drei 48 - das sollte dann reichen. Empfehle dir wegen Platzbedarf die SMD Variante. Wenn Du dann 3 solcher Bausteine im Einsatz hast, können die GPIO's lese und auch schreibend eingesetzt werden, auch als multipli, darunter verstehe ich, du kannst mit einem Instruct Byte mehrere GPIO gleichzeitig verändern. write(0x25) d0=1 d1=0 d2=1 d3=0 d4=0 d5=1 d6=0 d7=0 Ansteuern tust die SPI expander ganz einfach über seine Adresse, du kannst acht solcher gleichen Bausteine einsetzen, sie unterscheiden sich über die Adresse die man über A0 A1 A2 setzen kann. Alle drei auf GND gezogen, ist das der Baustein 0 A0 auf Vcc+ gezogen ist das der Baustein 1 A0 und A1 auf Vcc+ Baustein 2 usw Wenn du einen GPIO einlesen willst, und du weisst, welchen du einlesen willst, z.B den des Baustein 3 Port A Bit3 dann schreibst einfach Value = SPI_READ(Device, GPIO); Wenn du dir schöne Defines anlegst, .. #define Regler19 SPI_READ(Device3,GPIOA3); #define Regler20 SPI_READ(Device3,GPIOA4); #define Regler21 SPI_READ(Device3,GPIOA5); #define Regler22 SPI_READ(Device3,GPIOA6); #define Regler23 SPI_READ(Device3,GPIOA7); .. ist das ein klacks ReadValue = Regler19; und schreiben? routine anlegen fürs schreiben, und dann genauso. ;-)
Ich würde auch entweder einen größeren uC nehmen oder aber mit einem 2. uC einen "Treiber" bauen. Müsste dann wohl ein TQFP64/QFN64 sein. Der muss ja ansich nichts können. Dem kannst du via SPI, I2C, UART oder auch 1wire sagen, welche Leitung er aktiv schalten soll. Es ginge natürlich auch mit 2 uCs in DIP28/SOIC28/SSOP28... Dann würde ich aber I2C nehmen. Gibt es denn einen Grund, weshalb du nicht alle ICs in Reihe schalten kannst? Vielleicht gibt es solche RTD2Digital ICs ja auch mit I2C? Oder mit SPI, dann aber mit der Möglichkeit, mehrere Pt100 zu messen.
Michael Skropski schrieb: > Gibt es denn einen Grund, weshalb du nicht alle ICs in Reihe schalten > kannst? SPI-ADCs sind üblicher Weise nicht kaskadierbar. Sie kriegen ein Steuerwort und antworten mit dem Meßwert. Das Steuerwort wird nicht durchgeschleift.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.