mikrocontroller.net

Forum: FPGA, VHDL & Co. Eingangsbeschaltung für digitale Eingänge am FPGA


Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Mein FPGA soll mehrere digitale Eingänge verarbeiten. Die Pegel der 
Eingangssignale haben Werte zwischen 0..24 V. Jeder Eingang erhält einen 
Pullup-Widerstand mit 4K7 auf 3.3 V und einen Serienwiderstand mit 150 
K.

Nun stellt sich mir dir die Frage ob es überhaupt notwendig ist zwischen 
Eingangsbeschaltung und FPGA noch einen Leitungstreiber (Z.B. 74HC245 
o.ä.) zu setzen.

Sind es vielleicht die Schmitt-Trigger, die das Eingangssignal etwas 
peakfreier machen oder sind andere Probleme zu erwarten wenn man die 
Leitungstreiber weg lässt?

Vielen Dank für Eure Anregungen

Geri

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schnell verändern sich denn deine digitalen Eingangssignale?
Bei 100 MHz bzw. weniger als 10ns Anstiegszeit könntest Du Probleme 
bekommen, da dein Vorwiderstand (150k) mit parasitären Kapazitäten einen 
netten Tiefpass bildet. Sind die Signale deutlich langsamer ist es wohl 
eher unkritisch. Ich verwende den SN65LVDS348 als Puffer,
http://www.ssalewski.de/Digital_In_A.pdf

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Jeder Eingang erhält einen Pullup-Widerstand mit 4K7 auf 3.3 V und einen 
>Serienwiderstand mit 150K.

Wobei mir eh nicht klar ist, wie das einen gültigen Logik-Pegel 0/3.3V 
geben soll -- aber ich habe auch nicht wirklich drüber nachgedacht.

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan

Vielen Dank für deine Hilfe!

Die Signale änderen sich vielleicht mit maximal 100 KHz. Die meisten 
noch deutlich langsamer (Endschalter, Taster).

Ist in diesem Fall ein Puffer Luxus oder gibt es dann noch Gründe einen 
zu verwenden? Und wo liegen die Grenzen?

Beste Grüsse

Geri

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hallo Stefan

Mach doch mal ein Bildchen, dann wird es klarer.
Und sonst: Der Eingang des FPGA mit der Leiterbahn wird ein paar pF 
haben, da musst Du Dir eben die Grenzfrequenz des Tiefpasses ausrechnen, 
der sich mit Deinen Vorwiderstands-Netwerk ergibt. Und weiter: Geht der 
Eingang nach aussen, so dass ihn ein statisch aufgeladener Mensch 
berühren kann? Das wären die beiden Punkte, über die ich zuerst 
nachdenken würde. Eventuell Schutzdioden in Sperrrichtung nach VCC und 
GND.

Autor: Michael Sauron (Firma: www.das-labor.org) (laborsauron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fpga reagieren sehr empfindlich auf überspannungen. Selbst mit 5 Volt 
gibt das schon probleme, da Fpgas nur max 3,3 V haben sollten. Es gibt 
zwar meistens Überspannungsschutzdioden an den Ports, aber für einen 
dauerhaften Strom sind die nicht gedacht.

>mehrere digitale Eingänge
wieviele ?

>Jeder Eingang erhält einen Pullup-Widerstand
Warum das ? Erscheint mir nach deiner Beschreibung unlogisch.

>Sind es vielleicht die Schmitt-Trigger, die das Eingangssignal etwas
>peakfreier machen
Was ist denn die Ursache für die Peaks ?

>Die Signale änderen sich vielleicht mit maximal 100 KHz. Die meisten
>noch deutlich langsamer
Hört sich nicht so an, als ob du unbedingt einen Fpga brauchst.

>(Endschalter, Taster).
> 24 V
Hört sich nach Industrieanlage an, da sind Treiber ein absolutes muss.

> Erklär doch einfach mal was du machen willst.

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Thema gehört natürlich

Pegelwandler

Autor: Geri (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Vielen Dank für eure Rückmeldung. Anbei ein Bild, wie die Schaltung 
ursprünglich aussah.

Es handelt sich um eine Steuerung mit ca. 24 digitalen Eingängen. An den 
Eingängen werden digitale Sensoren, Schalter, Taster angeschlossen 
werden.

Die Pullups haben den Zwecke, dass das Eingangssignal immer definiert 
ist und man keine weitere Hardware ausser einem Taster der Schalter 
benötiget um einen Eingang zu schalten.

Die Ursache für die Peaks könnte das Prellen eines Kontaktes sein. Es 
kann vorkommen, dass ein Mensch die Eingangskontakte berührt.

Der FPGA erledigt sonst noch andere Aufgaben wo ordentlich Power 
notwendig ist.

Die Schaltung ist momentan nur für den Hobbygebrauch. Mich interessiert 
aber sehr wie die Profis die Eingänge beschalten damit sie 
instustrietauglich sind.

Beste Grüsse und nochmals vielen Dank für Eure Tipps

Geri

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Treiber (IC2) wollte ich 74HC245 verwenden.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm einen einfachen Spannungsteiler, dann liegen deine Schaltschwellen 
nicht so ungünstig bei 2V. Denn bei einem 24V-Eingang würde ich die 
Schaltschwellen eher auf etwa 8-10V erwarten.

> Es handelt sich um eine Steuerung mit ca. 24 digitalen Eingängen.
> An den Eingängen werden digitale Sensoren, Schalter, Taster
> angeschlossen werden.
In der Steuerungstechnik üblich ist ein Anschluss der Aktoren zwischen 
24V und dem Eingang und damit ein Pegel von 0V bei nicht angeschlossenem 
oder inaktivem Aktor. Die Pullup-Geschichte macht da ganz das Falsche:
Eingang offen (z.B. Taster offen) --> high
Taster betätigt --> 24V --> high

So ist das üblich:
    24V o
        |                           o 3V3
        |                           |
       \                            -
        \                           ^ D1
        |                           |
        |   Eingang  ___ 22k        |
        '-------o---|___|----o------o-----o-----> FPGA
                             |      |     |
                             -      -     |
                         6k8| |     ^    === 100n
                            | |     | D2  |
                             -      |     |
                             |      |     |
                             '------o-----'
                                    |
                                   ---
Wenn du für D2 eine blaue LED in Durchlassrichtung verwendest, hast du 
gleich noch eine Rückmeldung, ob am Eingang 0 oder 1 anliegt.

> Die Ursache für die Peaks könnte das Prellen eines Kontaktes sein.
Das wirst du wohl im Design angemessen brücksichtigen müssen. Dafür gibt 
es Entprellfunktionen.
> Es kann vorkommen, dass ein Mensch die Eingangskontakte berührt.
Die obige Schaltung ist dafür ausreichend gewappnet (ein brauchbares 
Layout vorausgesetzt).

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Schaltung wird dich nicht glücklich machen.
Der allererste Irrtum, dem man meisten aufsitzt ist, dass es in der 
Industrie keine 24 V Eingänge gibt und deshalb, soviel ich weiss, auch 
keine Pegel dazu.
Sensoren haben PNP oder NPN Ausgänge, die einen Eingang entweder nach 
24V oder nach GND ziehen, wobei ein kleiner Strom fließen sollte. Es 
braucht in jedem Fall also einen Pullup oder Pulldown.

Bei deiner Schaltung kannst Du höchstens ine Spannung von < 0.8 V an den 
Eingang legen, damit das FPGA einen Low-Pegel sieht. Das ist im 
Interesse eines vernünftigen Störabstands viel zu wenig. Alles andere 
ergibt schon '1'.
Du solltest die Schaltung zumindest so ändern, dass alles das < 3-5 V 
ist als 0 erkannt wird, und alles das z.B. > 15-20 V als '1'. 
Zwischenpegel sollten nicht vorkommen.

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Lothar

Vielen Dank für deine ausführliche Hilfe! Das sieht sehr gut aus weil 
mit leicht beschaffbaren Teilen machbar. Super Idee auch mit der 
Leuchtdiode!

Michael Sauron meinte oben, er würde für eine Anwendung im industriellen 
Umfeld auf jenden Fall Leitungstreiber verwenden. Wie ich sehe würdest 
du darauf verzichten.

"brauchbares Layout"
würde für mich hier insbesondere heissen:
- kurze, möglichst geradlinige Durchführung der Leiterbahnen
- grosszügige Massefläche bzw. eigenen Masse-Layer

Würdest du mir bitte ein Beispiel für verwendbare Dioden und 
Kondensatoren nennen bzwl. welche Dioden und Kondensatoren eignen sich 
für diese Schaltung eigentlich besonders? Ich habe mir gerade gedacht, 
dass bei einem kurzzeitigen Spannungsimpuls am Kondensator und in Sperr 
und Durchlassrichtung 230 V anliegen könnten. Wenn die Diode in 
Durchlassrichtung schnell genug ist, dann wird diese Spannung nie 
erreicht. Für die Auslegung wäre es aber doch interessant zu wissen wie 
hoch sie ist... Welche Spannung die Kondensatoren aushalten müssen ist 
für mich gerade wegen der Grösse der Bauteile interessant.

Vielen Dank nochmals

Geri

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus

Vielen Dank für Deine Infos. Habe deinen Beitrag zu spät gesehen.

Das würden dann bedeuten, dass ich nach Schaltung von Lother bei einem 
Sensor mit pnp-Ausgang noch einen externen Pullup verpassen müsste - 
oder. Bei Schalter und Taster wäre es nicht notwendig

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geri schrieb:
> Michael Sauron meinte oben, er würde für eine Anwendung im industriellen
> Umfeld auf jenden Fall Leitungstreiber verwenden. Wie ich sehe würdest
> du darauf verzichten.

Ich würde für eine Anwendung im industriellen Bereich nur Optokoppler 
verwenden. Man kann das Layout so sauber haben wie man will, aber wenn 
man den GND nicht entkoppelt dann bedeutet es immer, dass man mit dem 
GND der PCB im Gerät herumfahren muß und sich jede Menge unkontrollierte 
Ströme einfangen wird.
Außerdem haben Optokoppler den Vorteil, dass sie auf Strom reagieren und 
der Schaltpunkt bei manchen Typen relativ genau spezifiziert ist. Durch 
Umjumpern der Beschaltung und Anpassen des Vorwiderstand kann man dann 
5V, 12V oder 24 V NPN oder PNP Eingänge daraus machen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Optokoppler sind natürlich ideal, wenn Potentialtrennung nötig oder 
gewünscht ist. Aber der Platzbedarf ist u.U. auch nicht ohne...

Geri schrieb:
> Michael Sauron meinte oben, er würde für eine Anwendung im industriellen
> Umfeld auf jenden Fall Leitungstreiber verwenden. Wie ich sehe würdest
> du darauf verzichten.
Ein IC zwischen dem 24V-Eingang und dem FPGA bietet keinen (ESD-)Schutz. 
Es kann sogar sein, dass das IC komplett durchlegiert und einen 
Störimpuls an 1 eingang auf alle 8 Ausgänge ausgibt. Besser ist es, 
jeden Eingang getrennt ans FPGA zu führen.

> "brauchbares Layout"
> würde für mich hier insbesondere heissen:
> - kurze, möglichst geradlinige Durchführung der Leiterbahnen
> - grosszügige Massefläche bzw. eigenen Masse-Layer
heißt hier insbesondere, dass der 100n Kondensator, seine Zweitfunktion 
als ESD-Blocker ausführen kann (die offensichtliche Erstfunktion ist ein 
Tiefpass). Und deshalb muß der Kondensator so ins Layout eingefügt sein, 
dass ein Eingangsimpuls über das eine Anschlusspad weg muß. Das Andere 
Anschlusspad muß auf direktestem Weg an Masse liegen.
# -> Kupfer
O -> Durchkontaktierung
X -> Pad

Falsch:
        ####################X FPGA
                #
                #
                #
                #
                X
               [C]
                X
                #
                #
                #
                #
                O auf Masse-Layer               

Richtig:
        ########X###########X FPGA
               [C]
                X
                O auf Masse-Layer                


Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus und Lothar

Vielen Dank für die Hilfestellung!!

@Klaus:
Wie würde die Beschaltung dann bitte aussehen? Käme hier nur mehr ein 
Vorwiderstand, welcher so ausgelegt ist, dass ein Kurzschluss am Eingang 
den Optokoppler nicht zerstören würde und am Ausgang ein Pullup?


@Lothar:
Vielen Dank auch für die Schaltung. Ich denke, so lässt sich das auch 
sehr gut ruten.
Die Ganze Schaltung sollte schliesslich auf eine Europlatine passen. 
Darauf ein FPGA mit 240 pins, USB-Anbindung und ein paar Stecker. 
Fürchte momentan eben auch das Platzproblem.

Dazu kommen noch etwa 40 digitale Ausgänge:) Hier müsste ich dann die 
Optokopplergeschichte konsequent weiterführen.

Je nachdem was beim Optokoppler noch dazu kommt werde ich mir mal 
anschauen wer mehr Platz benötigt.

Würde eine BAT54-Doppeldiode von den Werten her eigentlich ausreichen?

Beste Grüsse und vielen Dank nochmals für die fachlich sehr guten Tipps 
und Erklärungen

Geri

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Würde eine BAT54-Doppeldiode von den Werten her eigentlich ausreichen?
Eine BAT54S also?
Ja, auch eine BAV99 ist ok, oder evtl. eine 4-fache BAV99S.

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, eine Bat54s hatte ich gemeint.

Vielen Dank

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lothar

Weiter oben hast du gemeint, man könnte eine blaude Diode in 
Durchgangsrichtung verwenden. Wäre diese Diode bitte zusätzlich oder 
anstatt D2 gedacht?

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geri schrieb:
> @Klaus:
> Wie würde die Beschaltung dann bitte aussehen? Käme hier nur mehr ein
> Vorwiderstand, welcher so ausgelegt ist, dass ein Kurzschluss am Eingang
> den Optokoppler nicht zerstören würde und am Ausgang ein Pullup?

Wieso Kurzschluss?
Der Serienwiderstand ist so ausgelegt, dass bei 24V [12V, 5V] genau der 
Strom fließt, bei dem der Optokoppler schaltet und der im Datenblatt als 
empfohlener Strom angegeben wird.

Du solltest Dir aber wirklich zuerst überlegen was Du wirklich brauchst.
Optokoppler sind eine saubere, aber aufwändige Lösung.
Wenn man sie aufgrund der Applikation braucht, dann sind sie zwingend, 
Platzprobleme hin oder her.
Wenn deine Karte in ein professionelles Gerät kommt, und :
- die Leitungen zu den Schaltern oder Sensoren länger als z.B. 0.5 m 
sind
- oder Störquellen wie Motoren in der Nähe der Leitungen sind
- oder ..
dann sind sie meiner Meinung nach zwingend.

Wenn das Ganze ein Bastelprojekt ist, dann ....

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wäre diese Diode bitte zusätzlich oder anstatt D2 gedacht?
Das war ein Teppfihler... :-/
Es wäre eine blaue LED (Uf<=3,5V) anstatt der D1 parallel zur D2 
möglich:
    24V o
        |                           
        |                           
       \                            
        \                           
        |                           
        |   Eingang  ___ 22k       D2    LED blau
        '-------o---|___|----o------o-----o------o-----> FPGA
                             |      |     |      |
                             -      -     v =>   |
                         6k8| |     ^     -     === 100n
                            | |     |     |      |
                             -      |     |      |
                             |      |     |      |
                             '------o-----o------'
                                    |
                                   ---
Diese LED begrenzt dann die positive Eingangsspannung auf ungefährliche 
Werte...

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja, danke!
So ist es auch sehr praktisch, weil man im Layout alternativ mit einer 
BAT54S oder Bat54 mit Leuchtdiode bestücken kann.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.