Simulieren von digitalen und analogen Eingängen auf einer SPS

Was wäre der einfachste Weg, um digitale und analoge Eingänge von einer SPS mit Ausgängen eines AVR ATmega328 zu verbinden? Ich muss lediglich verschiedene analoge Werte und digitale Zustände simulieren.

Antworten (3)

Zunächst einmal hat Ihr ATMega328 keinen Digital-Analog-Wandler, sodass Sie zusätzliche Schaltungen benötigen, um analoge Signale zu erzeugen. Es gibt ein paar Optionen.

Meine erste Idee wäre, PWM und einen Tiefpassfilter zu verwenden, um analoge Spannungen zu erzeugen. Bei dieser Methode verwenden Sie das PWM-Modul, um eine Rechteckwelle mit unterschiedlicher Impulsbreite zu erzeugen. Wenn dieses Signal mit einem Tiefpassfilter gefiltert wird, erhält man eine analoge Spannung. Die Größe der Spannung ist linear proportional zur Impulsbreite in Ihrer Wellenform. Beim ATMega328 erzeugt eine Impulsbreite von 100 % eine analoge Spannung gleich der Vcc, die dem Chip zugeführt wird (normalerweise 5 V oder 3,3 V), und eine Impulsbreite von 0 % erzeugt 0 V. Sie können an dieses Signal Verstärker anhängen, um die Reichweite zu erweitern, aber Sie benötigen natürlich ein Netzteil, um den Verstärker mit der höheren Spannung zu versorgen.

Das Problem bei dieser Methode ist der Filter. Wenn es nicht vollständig herausgefiltert wird, verursacht das PWM-Signal eine Welligkeit in Ihrer analogen Spannung bei der PWM-Frequenz. Das vollständige Herausfiltern des Signals reduziert jedoch die Bandbreite der analogen Signale, die Sie erzeugen können. Dies ist der Hauptkompromiß beim Design eines solchen D/A. Lassen Sie uns Filter für eine Sekunde besprechen.

Ein typisches einpoliges Tiefpassfilter besteht aus einem Widerstand und einem Kondensator. Die Werte dieser beiden Komponenten bestimmen die Bandbreite oder Grenzfrequenz des Filters. Ein einzelner Pol reduziert die Stärke aller Signale oberhalb seiner Grenzfrequenz mit einer Rate von -20 dB/Dekade. Eine Dekade ist die Differenz zwischen Zehnerpotenzen im Frequenzbereich - 1 Hz bis 10 Hz ist eine Dekade, 10 Hz bis 100 Hz ist eine Dekade usw. -20 dB bedeutet, dass die Größe eines Signals auf 1/10 des vorherigen Werts reduziert wird. Um dies alles in einem Beispiel zusammenzufassen: Wenn Sie ein 1-V-10-kHz-Signal haben, das Sie durch einen einpoligen Filter mit einer Bandbreite von 1 kHz leiten, ist das herauskommende Signal ein 0,1-V-10-kHz-Signal. Wenn Sie ein anderes Signal von 1 V bei 500 Hz haben, wird es ohne Verringerung der Stärke durchgelassen - Sie erhalten ein 1 V 500 Hz-Signal.

Der Trick besteht darin, die PWM-Signalleistung auf ein viel niedrigeres Niveau zu reduzieren und gleichzeitig die Grenzfrequenz so hoch wie möglich zu halten. Wenn Sie die Grenzfrequenz so hoch wie möglich halten, erhöht sich die Frequenz der Signale, die Sie mit Ihrem PWM-D/A-Wandler erzeugen können. Wenn Ihre Grenzfrequenz 1 kHz beträgt, können Sie maximal 1 kHz Sinuswelle und maximal 100 Hz Rechteckwelle erzeugen (wenn Sie nur Rechteckwellen erzeugen müssen, benötigen Sie natürlich keinen D/A-Wandler - nur das PWM-Modul ohne Filter). Das PWM-Signal aus dem ATMega328 ist ein 5-V-Signal (Peak-to-Peak) mit einer Frequenz, die der von Ihnen konfigurierten PWM-Frequenz entspricht. Typischerweise wird dies so gewählt, dass es im hohen Zehn-KHz-Bereich liegt. 36 kHz ist eine beliebte Frequenz, also werde ich damit gehen. Wenn das PWM-Signal eine Dekade von der Grenzfrequenz entfernt ist, handelt es sich um ein 0,5-Vpp-Signal, das wie eine schnelle Welligkeit Ihrer analogen Spannung aussieht. Wenn dies eine akzeptable Welligkeit im Signal ist, bleibt Ihnen eine Bandbreite von 3,6 kHz. Wenn nicht, müssen Sie es möglicherweise um ein weiteres Jahrzehnt verschieben, was Ihnen eine Bandbreite von 360 Hz und eine Welligkeit von 0,05 Vpp belassen würde. Sie können sehen, dass Sie für ein saubereres Signal Bandbreite der Signale opfern, die Sie erzeugen können.

Wenn Ihnen das nicht zusagt, können Sie jederzeit eine R2R-Leiter erstellen . Grundsätzlich werden hier digitale Ausgänge und Widerstandsspannungsteiler verwendet, um analoge Spannungen zu erzeugen. Der Vorteil davon ist eine höhere Bandbreite – Sie können die analoge Spannung so schnell ändern, wie Sie alle digitalen Ausgänge ändern können. Der Hauptnachteil davon ist die begrenzte Anzahl von Ausgangsspannungen, die Sie erzeugen können. Sie benötigen viele Widerstände und digitale Ausgänge, um eine Vielzahl von Spannungen zu erzeugen. Schauen Sie sich den Link an, aber kurz und knapp ist, dass Sie mit einem digitalen Ausgang und zwei Widerständen zwei Spannungen erzeugen können. Zwei digitale Ausgänge, vier Widerstände, vier Spannungen und so weiter.

Digital ist zumindest einfach - solange die Spannungen stimmen und alle Stromspezifikationen erfüllt sind, sollten die Eingänge funktionieren. Wenn die SPS den ATMega328 liest, müssen Sie sicherstellen, dass VOH für den ATMega328 größer ist als VIH für die SPS und dass ATMega328 VOL kleiner als VIL der SPS ist. Stellen Sie für den Strom sicher, dass der IOL des ATMega328 größer ist als der IIL der SPS und der IOH des ATMega328 größer als der IIH der SPS ist. Für alle digitalen Leitungen, die von der SPS angesteuert werden, tauschen Sie die ATmega328- und SPS-Namen oben.

Und zu allem Überfluss benötigen Sie eine Art Schnittstelle am ATMega328, mit der Sie an all den verschiedenen analogen und digitalen Spannungen herumspielen können. Ich würde empfehlen, einen UART zu verwenden, um über einen seriellen <-> USB-Adapterchip von FTDI mit einem PC zu sprechen. Hier gibt es gute Kabel für diesen Zweck (ich mag das TTL-232RG-VSW5V-WE). Wenn Sie das Arduino-Board verwenden, erhalten Sie natürlich den seriellen <-> USB kostenlos, das ist also gut. Sie können so etwas wie eine Labview- oder Python-GUI schreiben, um alle verschiedenen digitalen und analogen Werte zu ändern. Abgesehen davon glaube ich, dass ich einen Build für das Arduino gesehen habe, der es leicht über eine Python-Schnittstelle steuerbar macht - kann mich jemand daran erinnern, wie das heißt?

Mikrocontroller sind normalerweise für nicht mehr als 5 V ausgelegt, aber industrielle SPS haben verschiedene Spannungsbereiche, von mindestens 12 VDC oder 24 VDC bis 220 VAC. Angenommen, für eine 12/24-VDC-SPS benötigen Sie zunächst einen Spannungspegelwandler. Die beste Option besteht darin, Ihre eigene optoisolierte Schaltung mit PC817 oder 4N25 oder was auch immer Sie erhalten, herzustellen. Dieses Opto ist für digitale Ausgänge von SPS zu Micro.

Analoge Spannungen haben auch einen großen Bereich, aber maximal 10 V. Sie können also für diesen Zweck eine Spannungsteilerschaltung verwenden, indem Sie 1% Widerstände verwenden.