Programmierbarer Pegel-Trigger

Servus,

ich bin eben dabei, eine Menge an OpAmps in einer Schaltung mit einer an sich einfachen Aufgabe zu versenken: Gegeben sind analoge Eing=C3=A4nge f=C3=BCr ein Signal von jeweils -30V .. +30V gegen=C3=BCber Masse (galvanis= ch nicht getrennt). Aus diesen Signalen soll mit einstellbaren Schaltschwellen eine konfigurierbare Sequenz aus 6 Triggersignalen ausgel=C3=B6st werden.

Mein momentaner Schaltungsentwurf sieht wie folgt aus:

Ein LM324, versorgt mit V- =3D GND und V+ =3D +5V. Die Eingangssignale sind an die OpAmps im invertierender Summenverst=C3=A4rkerbetrieb angeschlossen mit einer Verst=C3=A4rkung von 0.05 (also Eingangswiderstand 20x Feedback-Widerstand), und einer Offsetspannung V+/2 die in den Summenverst=C3=A4rker mit der Verst=C3=A4rkung 1 eingeht.

Damit bringe ich die -30V .. +30V auf V+/2 +/- 1.5V max

Darauf folgt jeweils ein OpAmp als Schmitt-Trigger um gegen eine einstellbare Schwellwertspannung zu vergleichen. Daran schlie=C3=9Fen sich ein Latch, XOR und Flip-Flop an, welches zu einem Interrupt-Controller verbandelt sind (ein- und Ausgangssignale am Latch am XOR, Flanken am Eingang l=C3=B6sen das Flip-Flop aus =E2=80=93 gibt's den 8259 eigentlich n= och wo zu kaufen? Dann k=C3=B6nnte ich mir diesen Hack sparen).

Als Mikrocontroller verwende ich einen ATMega8 (man nimmt, was da ist), d.h. 2 externe Interrupts. Mit den PWM-Ausg=C3=A4ngen =C3=BCber aktive Tiefp=C3=A4sse erzeuge ich die Schwellwertspannungen f=C3=BCr die Schmitt-T= rigger.

Jetzt die Frage: So exotisch kann das doch nicht sein, also N analoge Signale gegen=C3=BCber einstellbaren Schwellenspannungen vergleichen und daraus ein Logik-Signal erzeugen. Gibt's das nicht als fertiges IC. Darf auch >1$ kosten. Also im Idealfall erzeugt das die Schwellwertspannung intern und man gibt die von aussen per I2C o.=C3=A4. vo= r.

Gru=C3=9F

Wolfgang

Reply to
Wolfgang.Draxinger
Loading thread data ...

Am 03.05.2012 17:10, schrieb Wolfgang.Draxinger:

Vielleicht stehe ich jetzt auf dem Schlauch, aber warum machst Du das nicht direkt mit den AD Wandlern im AVR?

Eric.

Reply to
Eric Brücklmeier

Weil die Dinger nicht gleichzeitig arbeiten (man muss die Multiplexen). Weil sie zu langsam sind (Zeit f=C3=BCr's Sampling bis zu 0.26ms), die Signale die ich bekomme sind nur sehr kurze Pulse, von ca. 0.01ms L=C3=A4nge.

Gru=C3=9F

Wolfgang

Reply to
Wolfgang.Draxinger

Also um das zu verdeutlichen: Die Signale haben einen gewissen DC-Anteil und hin und wieder rauschen da Transienten durch. Die Anwendung ist also in etwa der eines Level-Triggers eines Oszilloskops vergleichbar.

Gru=C3=9F

Wolfgang

Reply to
Wolfgang.Draxinger

Oben schriebst Du sechs Sequenzen, jetzt nur noch ein Logik-Signal. Fuer ein gemeinsames "Hier ist was nicht in Ordnung" Signal kaeme vielleicht sowas in Frage:

formatting link

Zwei der Eingaenge kann man auf negativ konfigurieren. Koennte aber alles zu langsam fuer Dich sein.

Wenn Du das wirklich konfigurierbar mit Sequenzen und so brauchst, da gibt's m.W. nix, ist kein Markt fuer vorhanden. Es gibt zum Zusammenstueckeln noch den MC33161:

formatting link

Braucht dann eine kleine negative Hilfsspannung, was jedoch eine der leichteren Uebungen waere.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Mit 10usec würde der LM324 aber auch Probleme haben ...

Ein 8 Bit Video Flash A/D pro Kanal geht nicht ? MP8780 z.B. gibts bei ebay.com in DIL aus Israel.

MfG JRD

Reply to
Rafael Deliano

Dann wirst du etwas schnelleres als den LM324 brauchen. Mit einem einfachen Spannungsteiler direkt vor einem LM393 bekommst du sicher bessere Signale. Wenn der Spannungsteiler gegen VCC/2+1/40VCC läuft ist das Ergebnis wie bei deiner Schaltung.

Nur eben schneller. (Pullup nicht vergessen :-) )

--
MFG Gernot
Reply to
Gernot Fink

Ich habe 6 Sensoren, die synchronisiert angesteuert werden sollen. Das sind die Trigger-Sequenzen. Ausgel=C3=B6st wird das durch analoge Eingangssignale, d.h. eigentlich sehr kurze Eingangsimpulse, die einen DC-Offset haben.

Bis zu 4 Eing=C3=A4nge muss ich abdecken und je nach dem auf welchem Eingang der Puls kommt (Race Conditions sollte es aufbaubedingt keine geben und falls doch eine auftritt habe ich ein ganz anderes Problem) wird eine andere Auslesesequenz gefahren.

Problematisch ist halt nur, dass die Pulse selbst so kurz sein k=C3=B6nnen, dass der AD-Wandler im AVR die teilweise nicht mitbekommt. Die eigentliche Triggersequenz selbst ist dann wieder unkritisch, +/- 0.5ms darf die abweichen.

Es t=C3=A4te auch ein 4-kanaliger Peak-Sample-and-Hold, den man zyklisch mit dem AVR-ADC ausliest.

Was ich im Prinzip brauche ist sowas wie die Triggerschaltung in einem Oszilloskop, die mir den Ablauf der Sequenz in dem Controller startet. Am besten mit einem Latch um mehrere von den Dinger pollen zu k=C3=B6nnen.

Leider nein, weil jeder der 4 Eingangskan=C3=A4le was anderes tut. (Sensoren l=C3=B6schen, Sensoren schnell auslesen, Sensoren hochaufl=C3=B6send ausles= en, Sensoren nichtdestruktiv summierend auslesen).

Gru=C3=9F

Wolfgang

Reply to
Wolfgang.Draxinger

LM324 weil er da war. Ich stopsel das ATM auf einem Breadboard zusammen.

Mal sehen ob ich einen in der Kiste finde...

Also die Signalform muss nicht erhalten bleiben. Letztlich soll das Dingen so funktionieren wie der einstellbare Trigger-Level in einem Oszilloskop. Nur eben per Mikrocontroller einstellbar. Und wenn der AVR mehr als nur die 2 externen Interrupts h=C3=A4tte k=C3=B6nnte man auch den verkappten Interrupt-Controller weglassen.

Gru=C3=9F

Wolfgang

Reply to
Wolfgang.Draxinger

Sowas habe ich bisher immer handgestrickt, aber eher weil Peak-Hold Chips aus dem Audiobereich Boutique-Ware sind die dann alsbald abgekuendigt werden. Lauft so:

Ein LM339 Comparator beobachtet die Signale. Wenn eines ueber den Schwellwert geht zieht der entsprechende Ausgang runter. Zwei 74HC14 Schmitt Inverter pro Signalpfad sind hintereinandergeschaltet und der Ausgang des zweiten geht ueber einen Widerstand auf den Eingang des ersten. Dieser Eingang haengt an einem Ausgang des LM399. Wenn der schaltet, und sei es nur ganz kurzfristig, schnackt der Ausgang des hinteren 74HC14 nach unten und bleibt dort. Nachdem Dein AVR alles ausgelesen hat kann er ueber einen Port-Pin vier Dioden und Widerstaende bedienen welche die Ausgaenge aller LM339 Sektionen hochziehen. Diese Widerstaende muessen deutlich kleiner als die Feedback-Widerstaende sein, 1/10-tel oder so.

Man kann das noch beliebig ausfeilen, etwa wenn man nur pulsartig registrieren will und der Reset auch bei verbleibendem Fehlerfall erfolgreich sein soll. Dann aber die Substratdioden beachten und nicht zu hart da reinballern.

Ich hoffe es kam rueber, wenn nicht versuche ich eine ASCII-Zeichung.

74HC7541 sollte auch gehen, dann braucht man nur einen Buffer pro Kanal weil die nicht invertieren, aber die kosten ueber 50c. Bei mir war in 74HC14 oder CD40106 (fuer langsamer Sachen oder hoehere Betriebsspannungen) meist noch was frei, sind auch billiger. [...]
--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Wenn du sowiso chips besorgen musst käme der Mega88 in Frage. Vieleicht reichten dir die Möglichkeiten der Pin change interrupts.

--
MFG Gernot
Reply to
Gernot Fink

Der OP schrieb, dass die Pulsbreite ca. 0,01ms, also 10 us beträgt. So langsame Signale müsste man auch einfacher auswerten können.

Ich würde aber auch empfehlen, anstelle des ATmega8 einen ATmega88 zu verwenden.

Bei 10us Pulsbreite könnte man aber auch die 6 INT-Signale oderieren, damit den INT auslösen und über normale Port-Pins, die in der INT-Routine abgefragt werden festzustellen, wer den INT ausgelöst hat. Bei 10us und 16 MHz Takt sollte das mit einem ATmega8 kein Problem sein.

Gruß

Stefan

Reply to
Stefan

Koennte gehen. Ich hatte das nur geschrieben weil der OP sich offenbar die uC-Loesung durchueberlegt und als nicht reaktionsschnell genug verworfen hatte.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.