Forum: Mikrocontroller und Digitale Elektronik MCP2200 isolated usb/uart schaltungskontrolle


von Chrys (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen

Ich möchte meine Steuerung auf einem Atmega2560 direkt mit einem 
USB-Kabel an den PC anstöpseln, anstelle eines Max232 und einem 
USB/serial-wandler. Es scheint mir eine simple Angelegenheit zu sein, 
aber zur Sicherheit wärs schön, wenn ihr schnell über die Schaltung 
gucken könntet :) Vorallem die Wahl der Teile, da habe ich das erst 
Beste genommen.
MCP2200 
https://www.reichelt.de/ICs-MCP-1-2-/MCP-2200-I-SS/3/index.html?ACTION=3&LA=446&ARTICLE=109741&GROUPID=5471&artnr=MCP+2200-I%2FSS&SEARCH=mcp2200
ADuM1201AR 
https://www.reichelt.de/ICs-ADC-ADXRS-/ADUM-1201-AR/3/index.html?ACTION=3&LA=446&ARTICLE=107978&GROUPID=5458&artnr=ADUM+1201+AR&SEARCH=adum).
Danke schon im Voraus!

Gruss Chrys

von Bastian W. (jackfrost)


Lesenswert?

Hi, hast du auf der AVR Seite Tx und Rx vertauscht ? Normal müsste ja Tx 
vom MCP auf Rx vom Atmega gehen. Ein Pullup am Rx auf der AVR Seite 
währe nicht schlecht. Damit wenn der MCP nicht eingesteckt ist der low 
Pegel nicht als Startbit erkannt wird.

Gruß JackFrost

von Frank K. (fchk)


Lesenswert?

Den Shield vom USB würde ich über eine Induktivität oder einen 
Widerstand von 100k oder so anbinden. Über die Schirmung soll ja 
eigentlich kein Strom fließen, und schon keine HF.

fchk

von Chrys (Gast)


Angehängte Dateien:

Lesenswert?

Bastian W. schrieb:
> Hi, hast du auf der AVR Seite Tx und Rx vertauscht ? Normal müsste ja Tx
> vom MCP auf Rx vom Atmega gehen. Ein Pullup am Rx auf der AVR Seite
> währe nicht schlecht

Jop, danke. Habe einen Pullup mit 10k reingemacht.

Frank K. schrieb:
> Den Shield vom USB würde ich über eine Induktivität oder einen
> Widerstand von 100k oder so anbinden.

Vielen Dank für die Tipps, die vorgeschlagenen Änderungen sind in der 
Schaltung angepasst.

Gruss Chrys

von Chrys (Gast)


Angehängte Dateien:

Lesenswert?

sorry fürs falsche Format...

von Ray M. (ray_m)


Lesenswert?

hi,

hast du deine schaltung schon fertig und mal getestet,
ich würde die gern ineins meiner projekt übernehmen wenn
du nix dagegen hast ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der MCP2200 hat zwei Ausgänge RXLED und TXLED - an die sollte man LEDs 
anschließen, das ist bei der Fehlersuche (Sendet mein PC-Programm? 
Sendet mein AVR?) sehr hilfreich.

von H.Joachim S. (crazyhorse)


Lesenswert?

Wie sieht denn das mit den Treibern PC-seitig für den MCP aus?
Kannte das Teil noch gar nicht.
Könnte ne Alternative für den überteuerten FT232 sein...

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

H.Joachim S. schrieb:
> Wie sieht denn das mit den Treibern PC-seitig für den MCP aus?
Gibt es, aber nicht aktuell gepflegt - Datum von 2104.

> Könnte ne Alternative für den überteuerten FT232 sein...
FTDI will ich hier nicht mehr sehen, denen geht das zu gut.

Der MCP2200 ist als einfacher Ersatz vermutlich nicht brauchbar, aber 
interessant, weil er andere Dinge kann. Für einen simplen seriell-to-Usb 
würde ich eher nach bewährten ICs wie SiliconLabs schauen, aber auch den 
Chinesen CH340 nicht außer acht lassen.

von Michael_O (Gast)


Lesenswert?

Der MCP2200 ist ein Programmierter 18Fxxx als Low Pin Count Demo Board 
gibt es Hardware und das Programm ist ein bisschen Flexibler und der 
mitgelieferte Treiber läuft Problemlos unter Windows 10.


mfg
Michael

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Manfred schrieb:
> aber auch den Chinesen CH340 nicht außer acht lassen.

Gibt es abgesehen von dem Kram, den Prolific verbricht, eigentlich 
irgendwelche USB-Seriell-Bausteine, die noch schlechter dokumentiert 
sind?

von H.Joachim S. (crazyhorse)


Lesenswert?

Für mich privat wäre das völlig egal, da kann man auch schon mal 
bisschen basteln und probieren, um den Treiber wieder ans Laufen zu 
bringen (Prolific).
Bei Kundensachen geht sowas nicht, das muss funktionieren. Auch nach 
einem Betriebssystem-update.
Und da muss ich sagen, dass ich mit FTDI noch nie Probleme hatte, die 
funktionieren einfach immer.

von Manfred (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
>> aber auch den Chinesen CH340
>
> Gibt es abgesehen von dem Kram, den Prolific verbricht, eigentlich
> irgendwelche USB-Seriell-Bausteine, die noch schlechter dokumentiert
> sind?
Nein!

von Frank K. (fchk)


Lesenswert?

Manfred schrieb:
> H.Joachim S. schrieb:
>> Wie sieht denn das mit den Treibern PC-seitig für den MCP aus?
> Gibt es, aber nicht aktuell gepflegt - Datum von 2104.

Das ist falsch. Dieser Chip nutzt den CDC-ACM-Treiber und den 
HID-Treiber des jeweiligen Betriebssystems. Er braucht daher gar keine 
speziellen Treiber. Bis Windows 8.1 brauchst Du nur ein .inf, das 
Windows sagt, das es seinen eigenen Treiber benutzen soll. Bei Windows 
10 und MacOS und Linux/BSD brauchst Du nicht einmal das.

Das ist ja der Vorteil bei dem Chip.

fchk

von Chrys (Gast)


Lesenswert?

Ray M. schrieb:
> ich würde die gern ineins meiner projekt übernehmen wenn
> du nix dagegen hast ?

Mach damit was du willst :) Habs noch nicht getestet, Reichelt ist nicht 
so schnell...

von Michael O. (michael_o)


Lesenswert?

Der PIC 18F14K50 ist sogar problemlos als DIL20 verfügbar das macht 
solche Sachen auch gleich noch Lochraster kompatibel.

mfg
Michael

von Chrys (Gast)


Lesenswert?

Guten Morgen Zusammen

Ich habe die Schaltung ins Kupfer gebracht. Jetzt habe ich auf der AVR 
Seite des ADuM's nichts angestöpselt um erstmal zu testen ob der MCP2200 
vom PC erkannt wird. Mit Windoof passiert gar nichts und auf Ubuntu 
kriege ich mit dmesg die Meldung:
usb usb1-port4: connect-debounce failed

Weis irgend jemand was hier das Problem ist?

Danke schon im Voraus
Chrys

von Chrys (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang noch das verwendete Layout...

Ich verwende diesen Quarz 
https://www.reichelt.de/Quarze/12-0000-HC49-SMD/3/index.html?ACTION=3&LA=5700&ARTICLE=72514&GROUPID=3173&artnr=12%2C0000-HC49-SMD

Die anderen Teile sind ja schon im ersten Post erwähnt.

von Chrys (Gast)


Lesenswert?

Hat sich erledigt, wenn man um die Uhrzeit noch richtig löten könnte...
Für die dies interessiert, jetzt siehts so aus:
[29485.008028] usb 3-1: new full-speed USB device number 8 using 
uhci_hcd
[29485.216058] usb 3-1: New USB device found, idVendor=04d8, 
idProduct=00df
[29485.216065] usb 3-1: New USB device strings: Mfr=1, Product=2, 
SerialNumber=3
[29485.216069] usb 3-1: Product: MCP2200 USB Serial Port Emulator
[29485.216073] usb 3-1: Manufacturer: Microchip Technology Inc.
[29485.216076] usb 3-1: SerialNumber: 0001414376
[29485.225212] hid-generic 0003:04D8:00DF.0004: hiddev0,hidraw3: USB HID 
v1.11 Device [Microchip Technology Inc. MCP2200 USB Serial Port 
Emulator] on usb-0000:00:1a.0-1/input2
[29485.341627] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
[29485.343216] usbcore: registered new interface driver cdc_acm
[29485.343219] cdc_acm: USB Abstract Control Model driver for USB modems 
and ISDN adapters

Gruss Chrys

von H.Joachim S. (crazyhorse)


Lesenswert?

Soll ich dir ein paar SMD-Kondensatoren schenken?

von Chrys (Gast)


Lesenswert?

Hallo Zusammen

Das ganze funktioniert wie gesagt schon ziemlich gut :)

Jetzt habe ich noch ein Problem:
Wenn der MCP mittels USB Kabel am PC angeschlossen ist und ich mit dem 
Atmega ein Power On oder Off mache, kommt beim PC irgendwas an und es 
gibt Fehler im GUI...
Eigentlich sollte der Ausgang des Adum's (herkommend vom TX des Atmega) 
auf der MCP Seite high sein, wenn die Atmega Seite nicht mit Strom 
versorgt wird. Meine Vermutung: Wenn der Atmega ein/aus-schaltet wird 
das TX kurzzeitig low und der MCP meint etwas erkannt zu haben.

Wie kriege ich das weg? Muss ich den Adum auf der Atmega Seite verzögert 
einschalten und früher als den Atmega ausschalten? Oder gibts noch 
andere Lösungen?

Gruss Chrys

von Chrys (Gast)


Lesenswert?

Hallo Zusammen

Das Problem ist immer noch da:

Chrys schrieb:
> Wenn der MCP mittels USB Kabel am PC angeschlossen ist und ich mit dem
> Atmega ein Power On oder Off mache...

Dann schmiert die Verbindung mit dem PC ab und kurze Zeit später ist sie 
wieder da...

Es ist egal ob RX/TX vom AVR mit dem Adum verbunden sind oder nicht. Ein 
reines An- oder Ausschalten des Adums (auf der Atmega Seite) verwirrt 
den MCP offenbar. Die MCP Seite des Adums ist ja die ganze Zeit mit 
Strom versorgt, solange das USB Kabel eingesteckt ist.

Dmesg spuckt das hier raus:
...
[19769.685244] hid-generic 0003:04D8:00DF.000B: hiddev0,hidraw3: USB HID 
v1.11 Device [MCP2200 USB Serial Port Emulator] on 
usb-0000:00:1a.1-2/input2
---> bis hier ist alles gut :)

---> hier wird der Adum (auf der Atmega Seite mit Strom versorgt)
[19800.220260] usb 4-2: USB disconnect, device number 8
[19800.222238] cdc_acm 4-2:1.0: failed to set dtr/rts

---> kurze Zeit später ist wieder alles OK
[19800.492027] usb 4-2: new full-speed USB device number 9 using 
uhci_hcd
[19800.697222] usb 4-2: New USB device found, idVendor=04d8, 
idProduct=00df
[19800.697229] usb 4-2: New USB device strings: Mfr=1, Product=2, 
SerialNumber=3
[19800.697233] usb 4-2: Product:MCP2200 USB Serial Port Emulator
[19800.697236] usb 4-2: Manufacturer: Microchip
[19800.697239] usb 4-2: SerialNumber: 0001414376
[19800.700366] cdc_acm 4-2:1.0: ttyACM0: USB ACM device
[19800.707387] hid-generic 0003:04D8:00DF.000C: hiddev0,hidraw3: USB HID 
v1.11 Device [MCP2200 USB Serial Port Emulator] on 
usb-0000:00:1a.1-2/input2

Kann mir jemand einen Tipp geben, wie ich dies wegkriege? Ich möchte die 
Atmega Seite so oft an- und ausschalten wie es mir passt, ohne das die 
Verbindung zum PC beeinträchtigt wird :)

Gruss Chrys

von Frank K. (fchk)


Lesenswert?

Hast Du Dich an die Layoutempfehlungen im Datenblatt des ADuM gehalten?

fchk

von Chrys (Gast)


Lesenswert?

Frank K. schrieb:
> Hast Du Dich an die Layoutempfehlungen im Datenblatt des ADuM gehalten?

So viel ich weis, ja. Das Layout ist weiter oben gepostet...

von Chrys (Gast)


Lesenswert?

Sollte soweit alles passen...

PCB LAYOUT
The ADuM120x digital isolators require no external interface
circuitry for the logic interfaces. Power supply bypassing is
strongly recommended at the input and output supply pins.
The capacitor value should be between 0.01 μF and 0.1 μF.
The total lead length between both ends of the capacitor and
the input power supply pin should not exceed 20 mm.

von Chrys (Gast)


Lesenswert?

Ein pull-up am TX des Atmegas bringts nicht...

von Frank K. (fchk)


Lesenswert?

Du hast ja das ganze Board mit GND geflutet. Das kann nicht gut gehen.

Die ADuMs sind dafür gedacht, dass Du links eine Region auf Potential A 
hast, die an den Pads der linken Reihe des ADum endet. Dann kommt eine 
Region ohne Kupfer, nur gebrückt durch den ADuM, und dann kommt Region 
B.

Der Pinabstand zwischen beiden Reihen ist je nach Gehäuse 5-7.5mm, und 
das ist auch der Abstand beider Regionen an JEDER Stelle auf BEIDEN 
Seiten zu ALLEN Seiten, damit es nicht zu kapazitiver Koppelung kommt.

Und wenn Du schon SMD machst, dann richtig. Heißt: auch Kondensatoren 
und Widerstände in SMD. Damit bekommst Du ein deutlich kompakteres 
Layout hin, und damit auch ein besseres. Die Drähte an den Bauteilen 
wirken nämlich wie Induktivitäten.

fchk

von Sven K. (svenk)


Lesenswert?

Hallo,

C4 sollte laut Datenblatt mindestens bei Vusb > 0.22 besser 0.47 sein.
Das würde ich als erstes mal korrigieren.

Gruß Sven

von Gerd E. (robberknight)


Lesenswert?

Du hast zwar die 100nF Bypass-Caps für die 5V-Versorgung von dem MCP2200 
und dem ADUM gesetzt. Aber bei Lastschwankungen, z.B. wenn der ADUM 
während des Ein/Ausschaltens viele "Müll"-Bits überträgt, könnte die 
Versorungsspannung knapp werden.

Pack mal zusätzlich noch 10µF auf diese 5V-Schiene, das könnte dagegen 
helfen.

Wenn Du Dir die AN-1109 von Analog anschaust, dann machen die das dort 
auch so.

von Chrys (Gast)


Lesenswert?

Erstmal vielen Dank für die Hinweise!!

Sven K. schrieb:
> C4 sollte laut Datenblatt mindestens bei Vusb > 0.22 besser 0.47 sein.
> Das würde ich als erstes mal korrigieren.

Gerd E. schrieb:
> Pack mal zusätzlich noch 10µF auf diese 5V-Schiene, das könnte dagegen
> helfen.

Hat leider beides nichts gebracht, immer noch das Selbe verhalten.

Frank K. schrieb:
> Der Pinabstand zwischen beiden Reihen ist je nach Gehäuse 5-7.5mm, und
> das ist auch der Abstand beider Regionen an JEDER Stelle auf BEIDEN
> Seiten zu ALLEN Seiten, damit es nicht zu kapazitiver Koppelung kommt.

Werde es mir beim nächsten Versuch beherzigen, aber dies sollte ja jetzt 
nicht der Grund sein wieso der MCP abschmiert...

Bin froh für alles, was helfen könnte...

Gruss Chrys

von Chrys (Gast)


Lesenswert?

Gerd E. schrieb:
> könnte die
> Versorungsspannung knapp werden.

Hab diese eben mal mit dem Oszi nachgemessen, ist stabil wie ein 
Betonfundament...

Wo könnte ich noch was messen?

Gruss

von Bastian W. (jackfrost)


Lesenswert?

Wie schaltest du den Atmega ab ? Ziehst du den Stecker , oder schaltest 
du das Netzteil aus ? Ich hab hier ein altes NEtzteil mit nem einfachen 
Trafo und wenn ich das ausschalte reconnected mein Board mit dem FT232RL 
auch fast immer. Wenn das JTAGICE MK3 angeschlossen ist dann passiert 
nichts. Das selbe passiert wenn im Stall die Motoren für die Fütterung 
schalten.

Was ich mit dem Oszi messen konnte, war das zischen GND und Schirm die 
Spannung schwankt wenn ich das Netzteil ausschalte. D+ und D- hab ich 
nicht gemessen ob da ggf. die Kommunikation ein Problem hat.

Das du das mal gemessen wie D+ und D- aussehen wenn du den Atmega 
ausschaltest ?

Bei dem aktuellen Layout mit einem xMegaA3U hab ich TVS Dioden auf den 
Datenleitungen für USB, ich hab aber noch nicht getestet ob das Netzteil 
hier auch stört.

Gruß JackFrost

von Gerd E. (robberknight)


Lesenswert?

Vielleicht ein EMV-Problem?

Mit was für einem Netzteil speist Du denn die AVR-Seite Deines Adums?

Wie trennst/verbindest Du diese Versorgung wenn es zu dem Problem kommt? 
Abschalten des gesamten Netzteils oder stecken/ziehen eines Kabels?

Ändert sich etwas wenn Du dort ein anderes Netzteil nimmst?

Ansonsten schau Dir mal die Leitung zum RX-Pin des MCP während des 
Einschaltens/Ausschaltens auf dem Oszi an, Single Trigger. Was passiert 
da?

von Chrys (Gast)


Lesenswert?

Bastian W. schrieb:
> Wie schaltest du den Atmega ab ? Ziehst du den Stecker , oder schaltest
> du das Netzteil aus ?

Gerd E. schrieb:
> Mit was für einem Netzteil speist Du denn die AVR-Seite Deines Adums?
>
> Wie trennst/verbindest Du diese Versorgung wenn es zu dem Problem kommt?
> Abschalten des gesamten Netzteils oder stecken/ziehen eines Kabels?

Ein Labornetzgerät, bei welchem ich den ON/OFF Knopf bediene.
Wenn ich nur den Stecker ziehe passiert es nicht...

von Chrys (Gast)


Lesenswert?

uncool, wollte mich gerade mit einem Schalter in der + Leitung abfinden 
aber ich muss auch GND abhängen, damit ich dann das Netzteil schalten 
kann...
Auf jedenfall vielen Dank für die Hilfe bis hierhin, manchmal denke ich 
schon nicht über die Nasenspitze hinaus...!!
Die Spannungsversorgung für den Atmega ist ein TS7805 mit je einem 100uF 
elko und je einem 100nF keramik kondensator auf der Ein- und 
Ausgangsseite. Was könnte ich da noch ändern, um es immuner zu machen?

Gruss Chrys

von Robert B. (rbu)


Lesenswert?

Manfred schrieb:
> Der MCP2200 ist als einfacher Ersatz vermutlich nicht brauchbar, aber
> interessant, weil er andere Dinge kann.

Der Treiber vom MCP2200 unterstützt auch MCP2221A.
"Version 1.3 (Released 10/09/2014):
 - Updated tool to include the new MCP2200/MCP2221 driver version 
(v1.4)."
http://www.microchip.com/wwwproducts/en/MCP2221A
http://ww1.microchip.com/downloads/en/DeviceDoc/20005565B.pdf

Die Schaltung passt zum Upgrade, womit wir auch noch eine Schnittstelle 
zu I2C/SMBus erhalten. Welche andere Dinge hat Manfred gemeint? GPIO's? 
Einfachen DAC/ADC vom USB2.0 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
Noch kein Account? Hier anmelden.