Forum: Mikrocontroller und Digitale Elektronik ATMega-Board an RS232 - bitte mal Schaltung beurteilen


von Christoph G. (uranhexafluorid)


Angehängte Dateien:

Lesenswert?

Hallo liebe Forenmitglieder,

schaut ihr euch bitte mal die angehängten Schaltungsschnipsel an und 
gebt mir Tisps, wo ich was verbessern kann!?

Bisher verwende ich im Labor Arduinos mit selbstgebastelten Shields um 
diverse Sachen zu steuern und zu messen (Relais / Ventile, analoge 
Ausgänge).
Auch mit Übertragung an den PC.

Die USB-Verbindung bereitet mir jedoch vermehrt Probleme. Sobald mal an 
einem Gerät ein Überschlag auftritt (z.B. an einem 
Elektronenstrahlverdampfer) verschwinden gelegentlich die Com-Ports im 
Rechner - beheben lässt sich das meist nur durch komplettes Ab- und 
wieder Anstecken des Arduinos.

Jetzt wollte ich eigentlich erst einen Arduino mit RS232 (was ja 
unempfindlicher sein sollte) zusammenbasteln; habe mir aber dann 
gedacht, dass, wenn ich schon mal dabei bin, ich es auch gleich richtig 
machen kann.

Haben möchte ich folgendes:
je 3 Relais- und FET-Ausgänge
2 x 0-10 V Analog-Ausgänge
6 ADC-Kanäle
Kommunikation und Programmierung über RS232 (z.B. mit 
Arduino-Bootloader)

Was bisher herausgekommen ist seht ihr im Anhang.
Bin für alle Anmerkungen dankbar!

Viele Grüße,
Christoph


PS: Bitte nicht über die Pinbezeichnungen am ATMega wundern - sollte 
ursprünglich ja eine Art Arduino werden...
PPS: SL - Stiftleiste, KL - Klemmleiste

von Felix Adam (Gast)


Lesenswert?

Beim kurzen Überfliegen:
1) die LEDs leuchten, wenn UART inaktiv ist. Vielleicht wäre es besser, 
wenn die nur leuchten, wenn auf dem UART was passiert?
2) Zwischen der Stiftleiste und den Gates der Mosfets sollten noch 
Widerstände gesetzt werden mit vielleicht 470 Ohm. Zum Schutz von Mosfet 
UND Controller. Auch wenn das hier im Forum immer wieder als 
Angstwiderstände abgetan wird.

Schöne Ostern

von Manfred (Gast)


Lesenswert?

Felix Adam schrieb:

> 2) Zwischen der Stiftleiste und den Gates der Mosfets sollten noch
> Widerstände gesetzt werden mit vielleicht 470 Ohm. Zum Schutz von Mosfet
> UND Controller.

Warum 470 Ohm? Wie schützen die Widerstände die Transistoren und den µC?

von Wolfgang (Gast)


Lesenswert?

Felix Adam schrieb:
> 2) Zwischen der Stiftleiste und den Gates der Mosfets sollten noch
> Widerstände gesetzt werden mit vielleicht 470 Ohm.

Je nach PWM-Frequenz (?) sind 470Ω schon arg viel, wenn der FET wegen 
der Verlustleistung nicht zu langsam durch den linearen Bereich rutschen 
soll, i.e. es kommt auf den Laststrom an.

Ist C5 am unteren Ende richtig angeschlossen?

von Sebastian S. (amateur)


Lesenswert?

Gib' die Dioden (1N4148) an den Relais in Zahlung.

Sind die Kondensatoren am Mäxchen nicht ein wenig groß?
Ein kleiner Reihenwiderstand in Reihe zu RX und DX und ein winziger 
Kondensator gegen Masse können die Lebensdauer des Chips stark 
erhöhen...

100µ am Reglerausgang...
Spendier ihm lieber einen keramischen am Eingang.

Bis jetzt

: Bearbeitet durch User
von Sebastian S. (amateur)


Lesenswert?

Ach so:
1 K in Reihe zu SCK und Konsorten!
Ich würde die hochziehen allerdings mit etwas mehr Ohm.

von Sebastian S. (amateur)


Lesenswert?

Und noch was...

Hoffentlich ist garantiert, dass an K13 und K14 nur maximal 2*Vcc 
anliegen und nichts negatives (< -1,4V). Der µC springt sonst aus der 
Fassung.
Übrigens sehr viel weniger als 2*Vcc sollten es auch nicht sein, sonst 
verguckt sich der Kerl.

Ist natürlich beim Anstecken garantiert, dass erst die Masseverbindung 
kommt und dann der Signalpegel, kannst Du das z.T. vergessen.

Ein paar Dioden gegen Masse und Vcc könnten hier auch nicht schaden.
Drei Stück hast Du ja noch von den Relais über. Die anderen 9 musst Du 
halt kaufen.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

1. RS232:
Es gibt inzwischen genügend MAX232-Alternativen, die nur noch 100n 
Kondensatoren brauchen und von 3-5V funktionieren. Nur mal so als Tip. 
Da funktionieren dann auch 0603 SMD Keramikkondensatoren.

Und eigentlich willst Du USB? Ja, dann lass den MAX232 weg und nimm 
einem MCP2221. Der braucht 5V, GND, USB, und das wars dann schon. Quarz 
ist unnötig. Den nehm ich immer für solche Sachen. Keine Ahnung, ob die 
Arduino-Software damit zurecht kommt, oder ob die FTDI braucht. Oder 
nimm gleich einen Mega32U4. Würde sich dann ja anbieten.

https://www.arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf

2. FETs:
Immer Widerstände vor die Gates packen, und zwar aus zwei Gründen.
(a) Die Gates sind das empfindliche an den FETs, und ein Vorwiderstand 
ist ein zusätzlicher ESD-Schutz.
(b) Der Vorwiderstand dient als Strombegrenzung. Denk dran, dass das 
Gate im Prinzip eine Hälfte eines Kondensators ist, die andere Hälfte 
wird durch den Source-Drain-Kanal gebildet. Wenn der Kondensator geladen 
ist, ist der Source-Drain-Kanal geschlossen, ohne ladung offen (oder 
umgekehrt, je nach Typ). Der Widerstand vor dem Gate begrenzt die 
Geschwindigkeit, mit der der Kondensator ge- oder entladen wird, und 
damit auch die Schaltgeschwindigkeit. Wenn der FET langsamer schaltet, 
hast Du weniger Störungen in Deiner Schaltung, weil es dann keine so 
hohen Stromspitzen mehr gibt.

Als Größenordnung sind so 10-100Ω üblich.

3. Spannungsversorgung:
(a) Du verbrätst da mit einem 7805 relativ viel Leistung. Kann man 
machen, muss man aber nicht.
(b) Bei dem 7660 bin ich mir unsicher, ob er genug Leistung liefert, um 
die OpAmps des DACs zu treiben. Dabei kenne ich natürlich auch die 
Anforderungen nicht und weiß nicht, welche Lasten die OpApms treiben 
müssen. Vergiss hier auch die kapazitiven Lasten durch lange Kabel etc 
nicht.

4. DACs: Du willst 0-10V Ausgänge haben. Wie soll denn der OpAmp 10V 
erzeugen, wenn er nur mit 5V gefüttert wird? Das funktioniert so nicht! 
Du bekommst nicht einmal -5...+5V hin, weil Dein ICL7660 einfach keine 
-5V liefert.
Außerdem kannst Du einen OpAmp nicht bis an die Grenzen aussteuern. Wenn 
ein OpAmp -5...+5V liefern soll, braucht er mindestens -6V und +6V an 
Versorgungsspannungen, eher mehr je nach Typ. Ja, es gibt Rail2Rail, 
aber die haben dafür andere "Eigenarten".

Du hast Dir ja schon einen Rail2Rail-Typ ausgesucht, und der kann mit 
bis zu 16V betrieben werden. Mein Vorschlag: vergiss den 7660, nimm GND 
als VCC- und schön gefilterte 12V als Vcc+ für die OpAmps.

5. PC-Isolation:
Wenn bei Dir die Geräte, die an den Arduino angeschlossen werden, den PC 
stören, dann kannst Du über eine galvanische Trennung nachdenken. Dafür 
gibts zwei Strategien:

(a) USB isolieren. Dafür gibts den ADuM3160/4160:
http://www.analog.com/media/en/technical-documentation/data-sheets/ADuM4160.pdf
Problem dabei: Wenn Du deinen ICSP-Programmer anschließt, ist die 
galvanische Trennung wieder im Eimer, es sei denn, Du isolierst auch den 
Programmer.
Ich empfehle daher Strategie (b)
(b) Peripherie isolieren
Da nimmst Du ADuM140x
http://www.analog.com/media/en/technical-documentation/data-sheets/ADuM1400_1401_1402.pdf
oder SI866x
https://www.silabs.com/documents/public/data-sheets/Si866x.pdf
und schaltest sie zwischen Atmega und die ganze Peripherie. Die 
Peripherie wird durch das externe Netzteil versorgt, der Atmega selber 
per USB vom PC.
Nachteil: Die eingebauten ADCs kannst Du nicht isolieren (nicht 
einfach), und deswegen darfst Du sie nicht mehr benutzen, sondern nimmst 
statt dessen einen SPI-ADC wie den MCP3208.
http://ww1.microchip.com/downloads/en/DeviceDoc/21298c.pdf
Dafür hast Du dann 8 Eingänge und 12 Bit Auflösung als Bonus.

Die Spannungsversorgung der Peripherieseite der digitalen Isolation 
machst Du am besten mit einem MCP1703T-3302E/DB. Die Isolatoren brauchen 
kaum Strom, und der MCP hat einen sehr geringen Eigenverbrauch.
http://ww1.microchip.com/downloads/en/DeviceDoc/22049e.pdf

fchk

von Christoph G. (uranhexafluorid)


Lesenswert?

Ging ja schnell!
Danke euch schon Mal!

Ich habs jetzt erstmal nur überflogen, aber die wichtigsten Punkte 
soweit:

Der TS912 soll natürlich mit +12V versorgt werden und nicht nur mit +5V. 
Böser Fehler...

Gatewiderstände (10 Ohm) baue ich noch ein.


Beim Rest bin ich nicht sicher:
Viel mehr als 50 mA werden doch auf den 5V kaum gezogen werden (oder seh 
ich das falsch?) - da komm ich mit dem 7805 doch gut hin?

Der 7660 soll nur dafür sorgen, dass der TS912 auch auf 0V runter kommt. 
Wieviel Strom zieht so ein Opamp eigentlich auf der negativen 
Versorgung, wenn er 0V ausgeben soll?

Wieso die Dioden an den Relais weglassen?

von Sebastian S. (amateur)


Lesenswert?

>Wieso die Dioden an den Relais weglassen?
Wofür sollen die denn gut sein.
Die Kontakte liegen auf der "sicheren" Seite, richtige Ströme werden 
nicht geschaltet, Induktion gibt es nur von Deinen Leiterbahnen.
Sicher ist allerdings: Sie schaden nicht, das tut ein ausgefallenes Haar 
auch nicht.

von Manfred (Gast)


Lesenswert?

Frank K. schrieb:
> Und eigentlich willst Du USB? Ja, dann lass den MAX232 weg und nimm
> einem MCP2221. Der braucht 5V, GND, USB, und das wars dann schon. Quarz
> ist unnötig. Den nehm ich immer für solche Sachen. Keine Ahnung, ob die
> Arduino-Software damit zurecht kommt, oder ob die FTDI braucht.
Dem Arduino und dessen IDE ist das egal. Der µC sieht Rx und Tx als 
serielle Schnittstelle, auf PC-Seite wird ein COM_irgendwas ausgewählt.

Wenn man Ärger mit Potentialen befürchtet oder hat, sollte man den USB 
nach seriell-Konverter aus dem PC speisen und zum µC hin galvanisch 
trennen. Der Sinn eines MAX232 direkt am µC erschließt sich mir nicht.

Hier im Forum wurde mir mal der ADuM1201 empfohlen:
Beitrag "Re: Arduino ProMini galvanisch getrennt"

von Frank K. (fchk)


Lesenswert?

Christoph G. schrieb:

> Der TS912 soll natürlich mit +12V versorgt werden und nicht nur mit +5V.
> Böser Fehler...

Dacht ichs mir.
>
> Gatewiderstände (10 Ohm) baue ich noch ein.

Mein Defaultwert ist 22Ω

> Beim Rest bin ich nicht sicher:
> Viel mehr als 50 mA werden doch auf den 5V kaum gezogen werden (oder seh
> ich das falsch?) - da komm ich mit dem 7805 doch gut hin?

Vor 30 Jahren hätte da auch niemand was gesagt, außer dass ein 78L05 
auch reichen würde. Die Welt hat sich aber weiter gedreht, und es gibt 
Bausteine mit wesentlich weniger Eigenverbrauch wie den MCP1703, und die 
kann man auch durchaus verwenden.

> Der 7660 soll nur dafür sorgen, dass der TS912 auch auf 0V runter kommt.
> Wieviel Strom zieht so ein Opamp eigentlich auf der negativen
> Versorgung, wenn er 0V ausgeben soll?

Der OpAmp kann 40mA liefern. Wenn er aktiv auf 0V ziehen soll, braucht 
er die auch auf VCC-, mindestens. Der 7660 liefert nur wenige mA. Das 
ist eindeutig zu wenig. Andererseit kommt der OpAmp bei geringer Last 
(wenige mA, der Bereich wo der 7660 reichen würde) bis auf 30mV an VCC- 
ran, bei höherer Last sind es 300mV. Wenn das für Dich akzeptabel ist, 
setze VCC- auf GND, wenn nicht, dann brauchst Du für beide Ausgänge eine 
negative Spannungsquelle, die Du mit mindestens 100mA belasten kannst. 
Entweder bastelst Du Dir selber einen invertierenden Schaltregler, oder 
Du nimmst einen fertigen DC-DC-Wandler mit 12V in und ±12V symmetrisch 
out wie den hier:
https://www.reichelt.de/DC-DC-Wandler-diverse/SIM5-1212D/3/index.html?ACTION=3&GROUPID=7247&ARTICLE=35086&OFFSET=16&;
Die Ausgänge musst Du natürlich nochmal jeweils mit einem LC-Glied 
filtern, ist ja klar. Das ist dann zwar nicht billig, aber Dein Gerät 
wird ja eh eher ein Einzelstück bleiben.

> Wieso die Dioden an den Relais weglassen?

Die Freilaufdioden gehören an die Spulen, um die Spannungsspitzen beim 
Abschalten zu unterdrücken.

Und zur galvanischen Trennung nochmal: Wenn Störungen von der 
Peripherieseite zu erwarten sind, dann sollte auch der Atmega auf der 
geschützten Seite sein, damit der im Falle eines Falles auch weiter 
läuft. Wenn Du nur die PC-Verbindung isolierst, dann ist der Atmega 
ungeschützt und könnte abstürzen, was nicht in Deinem Sinne ist. Klar 
bedeutet das mehr Aufwand, aber Du willst ja etwas, was sicher 
funktioniert und nicht etwas, was zufällig funktioniert. Die 
Relais-Ansteuerung brauchst Du nicht zu isolieren, weil ja die Relais 
selber für die Trennung sorgen.

fchk

von Christoph G. (uranhexafluorid)


Lesenswert?

Moin,

danke für die weiteren Infos!

Die LEDs an Tx und Rx gehen jetzt gegen +5V. 100 Ohm sind auch in den 
Leitungen drin.

Bei den Relais muss ich gestehen, dass ich die falsch rum gezeichnet 
habe...
Der µC soll die schalten... ;(


Was die PC-Verbindung angeht:
Die aktuellen Arduinos laufen weiter wenn so ein Überschlag passiert - 
bei geöffnetem Com-Port empfangen sie sogar noch Befehle und reaieren 
korrekt. Aber das Senden - bzw. am PC das Empfangen funktioniert nicht 
mehr. Und, wie gesagt, die COM-Ports verschwinden aus dem 
Geräte-Manager.
Gelegentlich verabschieden sich auch die USB-Maus und die USB-Graka.
Die RS232-Geräte laufen dagegen alle problemlos. Außerdem bin ich mit 
der USB-Leitungslänge teilweise schon an der Grenze (~ 10 Meter). Ich 
denke RS232 ist da der richtige Weg?

USB isolieren habe ich übrigens schon versucht. An einem der Arduinos 
hängt ein MAX31855, dessen Thermoelement ich dann doch nicht isoliert 
anbringen konnte. Da der 31855 jedoch die Masseverbindung erkennt, hab 
ich kurzerhand den ganzen Arduino mit einem fertigen USB-Isolator 
getrennt. Die gelegentlichen Kommunikations-Verluste treten trotzdem 
auf.

Ich arbeite mal die Änderungen soweit ein und lade nachher nochmal den 
Schaltplan hoch.

Viele Grüße,
Christoph


PS: Fast vergessen:
Die Analog-Ausgänge dienen zur Steuerung von Netzteilen und später 
eventuell auch von Massflow-Controllern. Leistung brauche ich da nicht 
wirklich - aber auf 0 gehen sollten sie schon.
Ähnlich verhält es sich übrigens mit den Analog-Eingängen. Damit möchte 
ich nur Analog-Schnittstellen von Netzteilen und Druckmesszellen 
einlesen. Schlimme Sachen erwarte ich auch hier nicht.

: Bearbeitet durch User
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.