Forum: Mikrocontroller und Digitale Elektronik Digital oder Analog


von Gast (Gast)


Lesenswert?

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

von sebba (Gast)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

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

von Ulrich P. (uprinz)


Lesenswert?

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

von STK500-BEsitzer (Gast)


Lesenswert?

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...?!).

von Gast (Gast)


Lesenswert?

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

von sebba (Gast)


Lesenswert?

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

von sebba (Gast)


Lesenswert?

huch?
da war mein browser wohl nicht mehr ganz aktuell
die meisten Fragen sind ja schon beantwortet

von Ulrich P. (uprinz)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

und natürlich ADc auf die Module die sollen auch gesteiert werden (Vom 
FPGA)

von Ulrich P. (uprinz)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

@ Ulrich
weisst du vielleicht ob ich mit einem einzigen UART am FPGA alle Module 
absprechen kann. Auch wenn ich die mit verschiedenen Abtastraten 
anspreche?

von Gast (Gast)


Lesenswert?

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

von Barsch (Gast)


Lesenswert?

lol

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
Noch kein Account? Hier anmelden.