Derzeit nutze ich die PWM-Ausgänge meines Arduino, um ein 4..20mA-Signal zu erzeugen. Dazu schalte ich hinter dem PWM-Ausgang ein RC-Glied (um das Signal zu glätten, sonst ist der Ripple zu groß). Und dahinter nutze ich dann einen LM224 (oder LM358), um in Abhängigkeit der Spannung hinter dem RC-Glied (1..5V) einen Ausgangsstrom von 4..20mA zu erzeugen (siehe Screenshot -- RC-Glied ist weggelassen). Das funktioniert soweit ganz gut und ist für meine Zwecke ausreichend präzise. Jetzt habe ich damit allerdings zwei Probleme: 1) Ich benötige mehr PWM-Ausgänge, als der Arduino her gibt und ich würde gerne die ganze Sache durch etwas weniger Verkabelung "entwirren". Ich brauche 32 Ausgänge. 2) Ich würde mir nach Möglichkeit gerne das RC-Glied (Glättung) und den LM358 sparen und insgesamt mit wenigen Bauteilen auskommen. Nebenbedingung: Das ganze sollte eben auch steckbar sein (also kein SMD). Darauf hin habe ich hier eine mögliche Lösung mit einem 16-Kanal LED-Driver-Chip (TLC5940) gefunden: https://howtomechatronics.com/tutorials/arduino/how-to-extend-arduino-pwm-outputs-tlc5940-tutorial/ Der ist mittlerweile kaum noch zu bekommen, aber auf eBay erhält man ihn noch. Die zugehörige Doku von Texas Instruments ist hier: http://www.ti.com/lit/ds/symlink/tlc5940.pdf?&ts=1590088182268 Meine eigene Einschätzung: 3) Es sieht so aus, als könnte ich damit zumindest mein Problem 1) lösen und die Ports erweitern. Aber nach meinem Verständnis müsste ich das ganze hinter dem TLC5940 dann doch erst wieder glätten (oder fällt das hier weg, weil der im Vergleich zum Arduino mit nur 480Hz relativ hoch getaktet ist?), über einen Spannungsteiler auf 1..5V bringen und dann alles doch wieder über einen LM224 in den entsprechenden Strom (4..20mA) wandeln, richtig? Mein Problem 2) hätte ich damit leider nicht gelöst. *Meine Fragen:* - Ist 3) so korrekt von mir beschrieben? - Wie kann ich Problem 2) (am besten alles mit wenigen Bauteilen) lösen? - Gibt es vielleicht eine alternative recht einfach Möglichkeit, das Gesamtproblem zu lösen und bin ich hier mit meinem Ansatz vielleicht auf dem Holzweg und mache es mir unnötig kompliziert?
Der TLC5940 hat Konstantstromausgänge, die einerseits mit jeweils einem 12-bit-Zähler PWMt werden, und gleichzeitig eine analoge Stromquellenverstellung mit 6 bit. Wenn du mit der 6-bit Stromverstellung hinkommst, kannst du den Chip auf 20mA pro Pin einstellen, PWM auf 100% und den Strom nur über die Dot Correction beeinflussen. Allerdings musst du natürlich mit den elektrischen Gegebenheiten der Ausgänge klarkommen, dann ist Teil2 gelöst. Wenn es nur mit PWM geht, ist der PCA9685 evtl. besser geeignet, aber diesen Steckbrettmist solltest du mal überdenken. Und du bräuchtest dann wieder die ganzen Filter usw., aber der kann schnelleres PWM, da wird das wenigstens kleiner.
:
Bearbeitet durch User
Hinter dem RC-Glied könntest du einen NPN Transistor in Kollektorschaltung schalten. Durch die fehlenden 0,6 Volt bleiben am Ausgang dann zwar nur noch 4,4 Volt übrig, aber wenn der Emitterwiderstand von 250R auf 220R verkleinert wird, dann sind es rechnerisch wieder 20mA.
Sebastian E. schrieb: > 1) Ich benötige mehr PWM-Ausgänge, als der Arduino her gibt und ich > würde gerne die ganze Sache durch etwas weniger Verkabelung "entwirren". > Ich brauche 32 Ausgänge. Ich plädiere auch für zwei Module mit PCA9685 > 2) Ich würde mir nach Möglichkeit gerne das RC-Glied (Glättung) und den > LM358 sparen und insgesamt mit wenigen Bauteilen auskommen. Das R/C Glied brauchst du nicht, wenn du D/A Wandler verwendest. Aber 32 Stück davon könnte teuer werden. Anstelle des LM358 kann man Konstantstromquellen auch mit einfachen Transistoren aufbauen. Siehe https://de.wikipedia.org/wiki/Konstantstromquelle#Mit_Bipolartransistor
> - Gibt es vielleicht eine alternative recht einfach Möglichkeit, das > Gesamtproblem zu lösen und bin ich hier mit meinem Ansatz vielleicht auf > dem Holzweg und mache es mir unnötig kompliziert? Deine gezeigte OpAmSchaltung ist eine Spannungsgesteuerte Stromquelle. Deine bisherigen PWM-Ausgänge mit nachgeschalteten RC-glieder SIND in der Tat Spannungsquellen (um o.g. Stromquellen zu steuern). Suche doch entsprechend "programmierbare Spannungsquellen" aka DA-Wandlerbausteine, wovon Du in benötigter Anzahl anschliessen kannst. DA-Wandler mit z.B. I2C Anschluss gibt es viele auch in Mehrkanaliger Ausführung. I2C ist ein Bussystem welches 1 Master (der Arduino) und mehrere dem Master hörigen Slaves (hier die DACs) hat; die Slave-DACs verdrahtest Du mit unterschiedlichen Adressen sodass mehrere gleiche DACs individuell gesteuert werden. Eben soviele bis Du die benötigten 32 hast und jeder bekommt seinen OpAmp um 4..20mA auszugeben. Bei LED-PWM-Treibern ist es nämlich i.d.R. so dass nicht der Strom durch die LED geglättet wird, weil sich unsere Augen um die Glättung kümmern in dem sie dem tatsächlichen Lichtflackern oberhalb ca. 50..60 Hz nicht mehr nachkommen. Das dürfte also der falsche Ansatz sein, ganz ohne dass ich den genannten Ti-Chip überhaupt anschaue. Normal erhältlich ist er eh nicht, schreibst Du.
Konzeptverkäufer schrieb: > Suche doch entsprechend "programmierbare Spannungsquellen" aka > DA-Wandlerbausteine, wovon Du in benötigter Anzahl anschliessen kannst. > Hier mal eine Liste bei TI mit den DA-Wandlern, die in Frage kämen: http://www.ti.com/de-de/data-converters/dac-circuit/products.html?pqs=paqs&familyid=392#p1021=1;16&p116=Unbuffered%20Current;Buffered%20Current&p84=8;12&p158=I2C;SPI;Serial%20LVDS Das Problem ist: Die haben maximal 2 Kanäle und kosten nach ersten Recherchen eher mal über 10 Euro. Außerdem haben alle SPI als Interface, keiner davon I2C. Kenne mich mit SPI nicht so genau aus, aber ich denke, damit würde ich dann keine Ports am Arduino sparen. Eher das Gegenteil wäre der Fall. Stefan ⛄ F. schrieb: > Ich plädiere auch für zwei Module mit PCA9685 OK, warum genau? Wegen der besseren Bauteilverfügbarkeit? Gibt es leider nicht als DIL-Variante, korrekt?
Stefan ⛄ F. schrieb: > Ich plädiere auch für zwei Module mit PCA9685 Sebastian E. schrieb: > OK, warum genau? Wegen der besseren Bauteilverfügbarkeit? Weil du mit dem Weg über PWM bereits klar gekommen bist und diese Module wie gewünscht steck-Anschlüsse haben. Und ja, auch weil sie gut verfügbar sind. > Gibt es leider nicht als DIL-Variante, korrekt? Laut Datenblatt: Nein. Aber es gibt entsprechende Adapterplatinen. Damit musst du dich abfinden, in DIL gibt es nur noch wenige Mikrochips.
Mal eine Zwischenfrage: Hat das alles mit dem 4-20mA Signal zu tun, dass u.a. in industriellen Steuerungen verwendet wird? Weil dort wäre es ja so, dass das Signal von der positiven Seite getrieben wird.
Sebastian E. schrieb: > Derzeit nutze ich die PWM-Ausgänge meines Arduino, um ein 4..20mA-Signal > zu erzeugen. Nutzt Du bisher nur die A[1..5] PWM-Analogausgänge? Es gibt da noch Softwarbibliotheken "libs" für sog. Soft-PWM um an anderen D[1..x] Ausgänge ebenfalls PWM hinzubekommen. Damit kommst Du an einem Arduino UNO sicher nicht auf tot. 32 PWMs, aber auf mehr als 5. Vielleicht reichen Dir alle Pins eines Arduino MEGA? Oder Arduino DUE? Oder vielleicht programmierst Du 2..3 zusätzliche Arduinos so dass sie Befehle via Serieller Schnittstelle von einem weiteren, Übergeordneten Arduino erwarten. Auch auf solchem Wege lassen sich bis 32 oder mehr 4..20mA Ausgänge realisieren. SPI Man kann mehrere SPI Peripheriechips an die selben Daten/Taktleitungen verdrahten, jeder Peripheriechip bekommt dann eine individuelle Enable Leitung worüber er signalisiert bekommt dass er angesprochen ist. Ggfs. hilft ein Decoderbaustein z.B. "1-aus-8" um mit nur 3 uC-Pins 8 Peripheriechips zu adressieren (anstatt 8 uC-Pins direkt). Einen Tod muss gestorben werden.
Konzeptverkäufer schrieb: > SPI > Man kann mehrere SPI Peripheriechips an die selben Daten/Taktleitungen > verdrahten, jeder Peripheriechip bekommt dann eine individuelle Enable > Leitung worüber er signalisiert bekommt dass er angesprochen ist. > Ggfs. hilft ein Decoderbaustein z.B. "1-aus-8" um mit nur 3 uC-Pins 8 > Peripheriechips zu adressieren (anstatt 8 uC-Pins direkt). > Einen Tod muss gestorben werden. Soweit ich das sehe, kann man die seriell hintereinander schalten: https://de.wikipedia.org/wiki/Serial_Peripheral_Interface Dann brauche ich unabhängig von der Anzahl der Wandler insgesamt nur 4 Leitungen. Konzeptverkäufer schrieb: > Es gibt da noch Softwarbibliotheken "libs" für sog. Soft-PWM um an > anderen D[1..x] Ausgänge ebenfalls PWM hinzubekommen. Daran hatte ich auch gedacht. Habe allerdings etwas Angst, dass da ein paar Tücken dahinter versteckt sind.
> Soweit ich das sehe, kann man die seriell hintereinander schalten: > https://de.wikipedia.org/wiki/Serial_Peripheral_Interface > > Dann brauche ich unabhängig von der Anzahl der Wandler insgesamt nur 4 > Leitungen. Ja. Dann aber viel Erfolg beim ausklamüsern der Bitmuster welche dann rauszutakten sind. Die Variante "Sternverkabelung" mit pro Chip je 1x *SS Leitung ist deutlich übersichtlicher auszuprogrammieren. Bei 3 Peripheriechips wie im Wikibild sind 3 uC-GPIOs angemessen; bei mehr z.B. muss abgewogen werden obs 8 uC-GPIOs oder 3 uC-GPIOs + "1-aus-8"Decoder sein sollen. > Konzeptverkäufer schrieb: >> Es gibt da noch Softwarbibliotheken "libs" für sog. Soft-PWM um an >> anderen D[1..x] Ausgänge ebenfalls PWM hinzubekommen. > > Daran hatte ich auch gedacht. Habe allerdings etwas Angst, dass da ein > paar Tücken dahinter versteckt sind. Du denkst schon richtig. +1 Das hängt von den Umständen resp. Anforderungen ab. Weil Du (noch?) Nichts dazu geschrieben hast, habe ich der Vereinfachung wegen dies nicht gleich angesprochen. Geht es um die Übertragung von sich nur langsam ändernden Werte (z.B. Umgebungstemperaturen oder nur Anzeigewerte auf Drehspulinstrumente) dann dürfte Soft-PWM schon passen. Bei sich schnell ändernden Werte (z.B. Positionierdaten o.ä.) eher nicht. Auch was dein 'duino sonst so zu rechnen hat, resp. wie clever Du es zu implementieren schaffst hat hier Einfluss. Möglicherweise ist eben ein schnellerer DUE oder ein STM32'duino vonnöten. Ev. musst Du sogar kategorisieren: was muss auf echten PWM-Ausgänge on-chip raus und was darf auf Soft-PWMs oder langsamer Peripherie raus. Soweit lautete der Fokus Deiner Anfrage "wie MEHR PWMs" (besser: "wie MEHR Analogausgänge"), nicht "wie PWMs/A-outs mit *BESTIMMTEN Eigenschaften* " abgesehen von 4..20mA. Probier doch erstmal aus!
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.