Hallo zusammen, ich bin dabei ein Messsystem zu entwicklen, das über mehrere Platinen verfügt. es gibt eine Zentrale Platine und Mehrere Modulen. Der erste Modul ist für die Temperaturmessung gedacht. Jetzt meine fragen: 1. wenn die Länge der Kabel zwischen dem Modul und der zentralen platine" wo die Daten mit hilfe eines FPGAs und einen µCs gespeichert werden" länger als 3m ist. soll ich lieber die Daten Digital senden oder? 2. Als Protokol wollte ich SPI nehmen, ist das kein Problem für sehr lange Strecken? 3.Für die Temperaturmessung benötige ich PT100 Sensor hat jemandem eine vernünftige Schaltung dafür. Es gibt sehr viele hier im Forum Aber............ Danke im Voraus MfG
Hallo, das ist eigentlich egal. Wenn Analog: Ich würd das Signal als Strom übertragen. 4-20mA ist da so ein Standardsignal. Also bei dir 4mA vllt 0°C und 20mA 100°C oder so. Dann reichen 2 Adern, das Signal ist wenig störanfällig und 3 Meter sind absolut kein Problem. Musst mal ein wenig suchen, gibt es divere Schaltungen zu. Der "Sender" kann sich für OPs usw bis zu 4mA abzwacken der Rest wird von nem Transistor verbraten. Der Sender misst einfach die Spannung über einem Widerstand die dann proportional zum Strom und damit proportional zur Messgröße ist. Wenn Digital: Auch eine Möglichkeit. SPI ist ok, allerdings nicht so verbreitet. Meistens nutzt man I2C. Vorteil: Du brauchst nur 4 (manchmal nur 3 - wenn kein eigenes Vcc mitgeführt wird) Adern. (SPI mindestens 5) Und du kannst gleich mehrere Sensoren ansprechen. 3 Meter sind völlig ok, bei längeren Leitungen musst du irgendwann auf die maximale Taktfrequenz achten. Gruß Sven
Danke Sven, ich glaube mit einer digitalen Übertragung ist sicherer, egal wie die Entfernung länder wird. ich habe bis Jetzt nur mit SPI gearbeitet ist dass mit I2C komplizierter? und wie kann ich am besten die Übertragung machen, mit Hilfe von RS485 und RS422? Brauche ich keine Modulationsverfahren? Was meinst du mit "bei längeren Leitungen musst du irgendwann auf die maximale Taktfrequenz achten" Danke noch mal. MfG
I2C und SPI sind nicht für lange Strecken geeignet, da sie mit Logikpegel arbeiten und nur eine Ader pro Signalteil ( Daten, Clock) verfügen. Selbst RS232 ist für Strecken > 5m nicht mehr wirklich zu empfehlen. Also bleiben nur RS485 oder RS422 übrig. Hier kann man aber bei der geringen erforderlichen Geschiwndigkeit auch mit preiswerten Tranceiver-Bausteinen bereits Längen bis 100m überbrücken. Nutzt man dazu dann z.B. RJ45 Stecker und Kabel, so kann man über die verbleibenden Kontakte auch gleich die Versorgung für den Sensor mitliefern. Für analoge Sensoren ist aber der 4..20mA Bus sehr viel praktischer. Es gibt ein paar fertige Bausteine für beide Seiten und es gibt auch eine ganze Reihe fertiger Sensoren dafür, so daß man nicht nur auf seine eigene Speziallösung zurück greifen muss. Das wird immer dann zu einem Nachteil, wenn ein neuer Sensor immer eine neue Entwicklung nach sich zieht. Es kann aber auch zu einem Nachteil werden, wenn der Kunde nur die Anzeige kauft, aber die Sensoren woanders. Aber 4..20mA ist eine Stromschleife, d.h. die maximale Länge des Busses wird durch ihren Widerstand bestimmt, der max. 500R nicht überschreiten darf. Das sind schon ein paar Meter Kupferkabel... Natürlich muss man den Innenwiderstand aller im Ring befindlichen Verbraucher einrechnen. Aber man kann durchaus mehrere Anzeigen in den Ring klemmen um ein Signal vor Ort, in einer entfernten Warte und im Protokollschrank anzuzeigen / zu erfassen. Eine Platine mit einem USB-Controller und 2x 4..20mA Eingängen und 2x 4..20mA Ausgängen habe ich mal für eine kommerzielle Anwendung entwickelt. Wenn da Bedarf an Informationen besteht, kann ich den Kontakt zum Rechtinhaber herstellen. Bei Interesse einfach mailen. An sonsten sind für passende Chips sicherlich Maxim, TI und Analog Devices die Partner für eine Bauteilsuche. Maxim hat einen 10 oder 12 Bit DAC für einen Digital->4..20mA Konverter. TI hat galvanisch getrennte OPs für die Konvertierung Sensor->4..20mA und 4..20mA->ADC. Analog hat ebenfalls gute ADCs und DACs für die Wandlung von Messwerten. Ach ja, HP/Agilent/Allegro ( oder wie die heute gerade heißen) haben einen schicken Optokoppler, der es mit relativ wenig Zusatzbeschaltung ermöglicht den 4..20mA galvanisch zu trennen. Diese Schaltung ist immer noch ein gutes Stück preiswerter als die Trenn-OPs von TI. Gruß, Ulrich
Man könnte das Signal natürlich auch mit einem NE555 oder so digitalisieren. Die Information wäre dann in der Pulslänge und der Periodendauer codiert. Es gibt auch einen Temperatur-Sensor, die nach diesem Prinzip arbeitet (SMT...?!).
Danke Ulrich, Temperaturmessung ist nur der Anfang danach muss ich drehmoment und schwingungen messen. Das Problem, die Schwingungsmessungen sollen sehr genau sein, dafür habe ich mich entschieden für jedes Kanal ein ADC zu nehmen. und wenn ich 12 Kanäle zum Beispiel habe dann habe ich 12 ADC auf der Zentralplatine. Also Analog zu übertragen ist nicht günstig. ich habe vielleicht ein verständniss Problem. ich meinte SPI ist das Protokoll und RS485 ist der Art der Übertragung??? Danke noch mal MfG
Damit wir nicht übers Ziel hinausschießen: - Wie lang soll die Leitung denn werden? - Wieviele Sensoren sollens denn werden? - Was für Sensoren? (Nur Temperatur?) - Welche Genauigkeit
huch? da war mein browser wohl nicht mehr ganz aktuell die meisten Fragen sind ja schon beantwortet
Hi! Also dann würde ich RS485 oder RS422 empfehlen. Das hat einige Vorteile: Mann kann zwischen Länge und Geschwindigkeit variieren. Also auf Strecken bis 100m sind bei guten Tranceivern Baudraten bis 10MBit möglich. Andererseits kann man bei 9600 Baud auch gerne mal 2.5km überbrücken. RJ45 ermöglicht es billiges Netzwerkkabel zu nutzen. Je nach installation kann man damit auch vorhendene Patchfelder einbinden. Damit kannst Du Dir leicht den persönlichen Kompromiss aus Geschwindigkeit, Entfernung und Kosten zusammenstellen. RS485/422 sind verwandt und oft auch mischbar, allerdings wird RS485 oft nur Halb-Duplex ausgeführt, das muss ein RS422 Bus berücksichtigen, er kann dann auch nur Halb-Duplex nutzen. Nein, ich meine mit RS485 nicht SPI. Man könnte die vier Leitungen ( MOSI,MISO,SCK und ChipSelect) auch über einen RS485 Tranceiver führen. Ich halte das aber nicht für sinnvoll. Die RS4xx Tranceiver werden am USART angeschlossen, den fast alle Controller ohnehin haben. Es ist billiger und einfacher, den Sensoren einen kleinen Controller zur Seite zu stellen, der die Daten aufbereitet. Gerade bei Beschleunigungs-Sensoren ist eine Menge Aufwand in der Glättung der Informationen notwendig, das sollte man lokal vorab machen. Dazu kommt dann, dass man nicht für jeden angeschlossenen Sensor, egal welcher Typ, einen eigenen Eingang am Master braucht, sondern alle Sensoren in einen Bus schalten kann. Jeder Sensor erhält eine Adresse und der Master kann sie der Reihe nach abfragen ( Pollen). Das entspannt die Kabelage enorm. SPI ist, ebenso wie I2C, ein Kurzstrecken-System. I2C kann man als so genanntes Power-I2C auch strecken und verlängern. Aber gerade SPI hat den Nachteil, dass es nicht über ein Adressierungssystem verfügt, sondern pro Partner einen eigenen ChipSelect benötigt. I2C ist nicht so einfach zu verlängern, weil beide Leitungen (SDA und SCL) bidirektional sein müssen. Ich halte daher den UART immer frei für diese Art der Kommunikation, SPI verwende ich dann für z.B. Displays. Viele bezahlbare LCDs haben inzwischen alternativ zu dem blöden Hitachi Parallel Bus auch SPI oder I2C als Kommunikation. Oder ich nehme Noritake Itron VFDs, wenn die Ablesbarkeit höher sein muss. Die haben dann sogar eine Ansteuerung für eine Tastenmatrix als 4x4 inklusive. Wenn man überlegt, dass ein ATtiny etwa so viel kostet, wie ein RS422 Tranceiver, dann ist schnell klar, dass es sinnvoller ist einen RS422 über UART zu realisieren und einen ATtiny zu verwenden, als etliche diskrete Wandlerlogik und 4 Tranceiver. Nebenbei kann man dem Sensor vor Ort noch eine kleine Funktionsanzeige in Form eine blinkenden LED oder sogar einer zwei-Farben LED ( Sollwert eingehalten oder nicht, Kommunikation oder nicht) spendieren. Dass erleichtert später die Fehlersuche. Gruß, Ulrich
Hi! Danke Ulrich für die viele Informationen. --------- | Tem |----- | | | --------- | |-------------- |---------------------------| | |------| --------- | FPGA | ------ | | |Schwi..|--------------------------------| | | RAM | | | | | | | --------- |--------------------------| | | | --------- | | | |------- |Schwi..|----- |-------------- | | --------- ich habe versucht das Konzept was ich im Kopf habe, zu zeichnen. FPGA und Ram auf der Zentralplatine. Also brauche ich für z.b. 8 Kanäle Schwingungsmessungen und 1 Kanal Temperaturmessungen nur eine UART Schnittstelle? wie wird das gemacht? MfG
Hmmm, also jeder Sensor bekommt einen Controller, der gerade mal so groß ist, wie es benötigt wird. Dieser Controller hat einen UART, der an einen RS4xx Tranceiver ( Beispiel MAX485) geschaltet wird. Aus diesem Trnceiver kommen A/Y und B/Z antweder als ein Paar oder eben alle vier getrennt heraus, was dann Landläufig als RS422 bezeichnet wird. Auch Dein FPGA bekommt einen UART als IP verpasst und an diesen wird dann ein Tranceiver geschaltet. Bei RS485 werden A/Y und B/Z des FPGAs ( Master) mit den gleichnamigen Pinnen aller Slaves / Sensoren verbunden. Bei RS422 würden Y und Z des Masters mit A und B der Slaves verbunden werden und A und B des Masters mit Y und Z aller Slaves. Bei langen Bussystemen werden dann noch 120R als Terminator an den beiden von einander am weitesten entfernten Teilnehmern eingesetzt. Schau doch dazu mal einfach in die Datenblätter dieser Tranceiver. Bei Maxim bekommt man bei der Suche nach RS485 und RS422 einige interessante Application Notes dazu. Du verlegst also bei RS485 2 verdrilltes Adrepaar, bei RS422 zwei verdrillte Aderpaare. In der Grundeinstellung schalten alle Teilnehmer ihre Tranceiver auf Empfang. Hat der Master oder ein Slave was zu sagen, schaltet er auf Senden und schickt seine Mitteilung raus. Um sich nun nicht mir Kollisionen herum schlagen zu müssen kann man sich viele Dinge ausdenken. Am Einfachsten ist es sicherlich, dass nur der Master eine Kommunikation eröffnen darf. Man versieht also alle Teilnehmer mit einer Adresse und der Master fragt der Reihe nach alle Teilnehmer ab. Du hast leider noch nicht wirklich gesagt, was Du an Transferraten benötigst und wie schnell das ganze reagieren muss. Wenn Du im 50..100ms Bereich alle Sensoren durch pollen musst, dann geht das ganze. Wenn der Beschleunigungssensor aber mit 100kHz 3*16 Bit liefern muss, dann wird das ganze eng. Aber es ist immer noch möglich den g-Sensor direkt am FPGA mit I2S oder SPI anzuschließen und direkt abzufragen, aber die anderen Sensoren dann über lange Kabel und eben den RS4xx Bus anzukoppeln. Es ist generell eine Frage, die zuvor auch schon gestellt wurde, welche Parameter, welche Auflösung, in welcher Zeit? Wenn ich lese 12 ADCs für g-Sensoren, dann die Frage, 12x 1-Achse oder 4x 3-Achsen Senoren. Müssen einzelne Peaks gemessen und verarbeitet werden, oder will man nur den gemittelten Wert haben? Kann die Mittelung, Offsetabgleich und Drift nicht schon durch einen lokalen kleinen Microcontroller erledigt werden, der jedem Sensor zur Seite steht? Kann dann nicht das FPGA entfallen, weil es ein einfacher ARM7 oder weniger schon schafft, die globale Kommunikation mit allen Slaves zu erledigen? Ich kenne Deine Anwendung nicht. Meine Anwendung war u.A.: 100 Module mit U/I Messung und PWM Regelung für eine Qualitätssicherungsanlage. Jedes Modul hatte einen ATmega32 für die lokale Messung von U und I und der Erzeugung der PWM. Jeweils 20 Module wurden in Reihe an einen RS485 Bus geklemmt und auf eine Ethernut geschaltet ( ARM7 System mit Netzwerk). Die 5 Ethernuts wurden über einen Switch dann mit dem Messrechner verbunden. Nur so als Beispiel.
ich glaube, dass ich die Module nur mit dem FPGA steuren kann? Ich brauche nicht für jeden einen µC ? die geschwindigkeit bei Schwingungsensoren soll 80khz pro Kanal sein z.b. 8 Schwingungssensoren und 4 Drehmomentmessungen kann" jede knal mit 1Khz abdetastet werden".Temperatur nur mit 10 Hz die Zentrale Platine soll nicht sehr groß sein. ich möchte die Kanäle gleichzeitig abfragen, or allem die Schwingungssensoren, das ist sehr wichtig bei Schwingungsmessungen. Damit ich die danach vergleichen kann. MfG
@ Ulrich weisst du vielleicht ob ich mit einem einzigen UART am FPGA alle Module absprechen kann. Auch wenn ich die mit verschiedenen Abtastraten anspreche?
Hallo Ulrich, ich glaube mit dem 80 KHz kann ich vergessen. ich werde es mit 20 KHz versuchen. und ich besränke mein Projekt nur auf Schwingungsmessungen. hälltest du das für eine Sinnvolle Idee? Danke
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.