Forum: Mikrocontroller und Digitale Elektronik AVRISP galvanisch isolieren


von bobberjahn (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich versuche jetzt schon seit einiger Zeit eine Schaltung zu entwerfen, 
um den avrisp mkII galvanisch von der Zielschaltung zu trennen. Dabei 
bin ich auf folgende Schwierigkeiten getroffen:

- der isp prüft, ob die Zielschaltung Strom hat, indem der High Pegel 
des Reset Kanals getestet wird und versucht sie dann auf low zu ziehen. 
Das habe ich folgendermaßen realisiert (siehe Anhang, Reseteingang am 
Mikrocontroller beschaltet wie üblich)

- bei den benötigten 3 anderen Leitungen (MISO, MOSI, SCK) hingegen 
kriege ich meiner Meinung nach Probleme, wenn andere Geräte am SPI 
hängen. Wenn ich Optokoppler oder Übertrager einsetze, werden die 
Potentiale der Leitungen von diesen immer auf das Eingangslevel, das vom 
ISP kommt, gezogen, eine Kommunikation des uC mit dem Gerät ist dann 
nicht mehr möglich. Abhilfe würde hier ein Tristate schaffen, der 
aktiviert wird, wenn der Programmiervorgang startet, aber ich habe keine 
Möglichkeit gefunden, dieses Event irgendwie abzugreifen.
Als Lösungen sehe ich hier, den Programmer immer nur einzustecken, wenn 
programmiert werden soll (unpraktisch, dann könnte ich immer auch auf 
Batteriebetrieb wechseln um das Isolationsproblem zu umgehen) oder halt 
keine anderen SPI Geräte einzusetzen.

Ist mein Gedankengang hier überhaupt richtig, hat jemand schonmal 
soetwas gemacht?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

bobberjahn schrieb:
> - der isp prüft, ob die Zielschaltung Strom hat, indem der High Pegel
> des Reset Kanals getestet wird und versucht sie dann auf low zu ziehen.
> Das habe ich folgendermaßen realisiert

Nimm C und R ´raus und schalte die LED des Optokopplers mit 1k nach Vcc.

bobberjahn schrieb:
> bei den benötigten 3 anderen Leitungen (MISO, MOSI, SCK) hingegen
> kriege ich meiner Meinung nach Probleme, wenn andere Geräte am SPI
> hängen. Wenn ich Optokoppler oder Übertrager einsetze, werden die
> Potentiale der Leitungen von diesen immer auf das Eingangslevel, das vom
> ISP kommt, gezogen, eine Kommunikation des uC mit dem Gerät ist dann
> nicht mehr möglich.

Optokoppler sind ausgangsseitig hochohmig, wenn sie nicht angesteuert 
werden.

bobberjahn schrieb:
> Ist mein Gedankengang hier überhaupt richtig,

Eher nicht. Die von Dir verwendeten Optokoppler sind viel zu langsam und 
bidirektionale Interfaces, wie PDI, funktionieren damit gar nicht. Schau 
Dir mal optische oder magnetische High-Speed Koppler an, die Du so 
verschaltest, dass alle Interface-Formen, die der mkII beherrscht, auch 
damit abgedekt werden.

bobberjahn schrieb:
> Abhilfe würde hier ein Tristate schaffen, der
> aktiviert wird, wenn der Programmiervorgang startet, aber ich habe keine
> Möglichkeit gefunden, dieses Event irgendwie abzugreifen.

Der RESET-Pin des MkII ist dieses Event. Ist er LOW, dann müssen die 
Treiber durchgeschaltet werden, ist er HIGH, dann müssen sie hochohmig 
sein.

von Georg (Gast)


Lesenswert?

>Als Lösungen sehe ich hier, den Programmer immer nur einzustecken, wenn
>programmiert werden soll (unpraktisch, ...

Wie oft programmierst du deinen µC? Warum soll der Programmer ständig 
eingesteckt bleiben?

Wenn ich per SPI angesprochenen Baugruppen verwende, habe ich die per 
Flachbandkabel an die ISP-Buchse angeschlossen. Nach dem Programmieren 
wird halt umgesteckt.

von Ralf G. (ralg)


Lesenswert?

Ich würde eine Box (oder nur LP) mit Schaltern dazwischen bauen, um die 
entprechenden Leitungen für die Programmier-/Testphase abzuschalten bzw. 
umzuschalten.

von Falk B. (falk)


Lesenswert?

@  bobberjahn (Gast)

>ich versuche jetzt schon seit einiger Zeit eine Schaltung zu entwerfen,
>um den avrisp mkII galvanisch von der Zielschaltung zu trennen.

Warum? 99% der Schaltungen brauchen das nicht. Zerschossene ISP-Adapter 
haben meist andere Ursachen.

>- der isp prüft, ob die Zielschaltung Strom hat, indem der High Pegel
>des Reset Kanals getestet wird und versucht sie dann auf low zu ziehen.
>Das habe ich folgendermaßen realisiert (siehe Anhang, Reseteingang am
>Mikrocontroller beschaltet wie üblich)

Funktioniert nur bedingt. Du täuschst nur ein Rücklesen des Signals vor. 
OK, zum Austricksen des Programmers reicht es. Aber auch hier ist der 
Optokopplerausgang eher schwach, ein (Open Drain) Treiber in Form einen 
kleinen FETs wäre sinnvoll.

>- bei den benötigten 3 anderen Leitungen (MISO, MOSI, SCK) hingegen
>kriege ich meiner Meinung nach Probleme, wenn andere Geräte am SPI
>hängen.

Nö, du brauchst halt echte Treiber hinter den Optokopplern. 74HC125 z.B.

>nicht mehr möglich. Abhilfe würde hier ein Tristate schaffen, der
>aktiviert wird, wenn der Programmiervorgang startet,

Genau.

> aber ich habe keine
>Möglichkeit gefunden, dieses Event irgendwie abzugreifen.

Kann man über ein retriggerbares Monoflop an SCK erreichen. Solange 
SCK wackelt, sind die Treiber aktiv. Ist es für ein paar Sekunden ruhig, 
werden die Treiber dekativiert. Oder über das Reset, das ist ja während 
der gesamten Programmierung auf LOW, IIRC.

>Als Lösungen sehe ich hier, den Programmer immer nur einzustecken, wenn
>programmiert werden soll (unpraktisch, dann könnte ich immer auch auf
>Batteriebetrieb wechseln um das Isolationsproblem zu umgehen)

Was für ein Isolationsproblem hast du denn? Motorsteuerung auf 
Netzpotential?

MFG
Falk

von bobberjahn (Gast)


Lesenswert?

Danke, das sind schonmal hilfreiche Tipps.

Falk Brunner schrieb:
> Was für ein Isolationsproblem hast du denn? Motorsteuerung auf
> Netzpotential?
Bei bestimmten Einsatzzwecken bin ich kein Fan von externen Netzteilen 
und möchte daher mal Kondensatornetzteile ausprobieren. Und das Risiko 
mir dann wegen der fehlenden galvanischen Trennung über den Programmer 
den PC zu zerschießen will ich nicht eingehen.

von F. F. (foldi)


Lesenswert?

> und möchte daher mal Kondensatornetzteile ausprobieren. Und das Risiko
> mir dann wegen der fehlenden galvanischen Trennung über den Programmer
> den PC zu zerschießen will ich nicht eingehen.

Geht das überhaupt? Ist da nicht eher der Programmer futsch und bei 
falschen Strom schaltet Windows die USB-Schnittstelle aus. Hab ich schon 
ein paar mal gehabt. Wieder aktiviert und gut war.

von Falk B. (falk)


Lesenswert?

@  bobberjahn (Gast)

>> Was für ein Isolationsproblem hast du denn? Motorsteuerung auf
>> Netzpotential?
>Bei bestimmten Einsatzzwecken bin ich kein Fan von externen Netzteilen
>und möchte daher mal Kondensatornetzteile ausprobieren.

Dann sollte man sein Testobjekt sowieso über einen Trenntrafo betreiben.

> Und das Risiko
>mir dann wegen der fehlenden galvanischen Trennung über den Programmer
>den PC zu zerschießen will ich nicht eingehen.

Je nach Netzteilaufbau gibt es zwei Fälle.

A) Masse=N, nix passiert
B) Mass=L, satter Kurzschluß über deinen Programmer und PC, Sicherung 
fliegt.

von bobberjahn (Gast)


Lesenswert?

Falk Brunner schrieb:
> Je nach Netzteilaufbau gibt es zwei Fälle.
>
> A) Masse=N, nix passiert
> B) Mass=L, satter Kurzschluß über deinen Programmer und PC, Sicherung
> fliegt.

Verstehe ich nicht. Wenn ich es so aufbaue, wie zB hier 
http://www.mikrocontroller.net/articles/Controller_an_230V#Versorgung_.C3.BCber_Vorwiderstand.2FKondensator 
gezeigt, ist es doch verpolungssicher.

von Falk B. (falk)


Lesenswert?

@  bobberjahn (Gast)

>> A) Masse=N, nix passiert
>> B) Mass=L, satter Kurzschluß über deinen Programmer und PC, Sicherung
>> fliegt.

>Verstehe ich nicht. Wenn ich es so aufbaue, wie zB hier
>http://www.mikrocontroller.net/articles/Controller...
>gezeigt, ist es doch verpolungssicher.

Nö. Nicht aus Sicht des angeschlossenen ISP-Programers. Zeichne mal eine 
Masseverbindung vom GND im Schaltplan zu GND von PC, welcher mit PE der 
hausinstallation verbunden ist. Und dann schließ dein 
Kondensatornetzteil mal so und mal so an die Steckdose an. Bitte nur 
gedanklich, denn sonst knallt es wirklich.

von bobberjahn (Gast)


Lesenswert?

Gut, diese permanent vorhandene Potentialdifferenz hatte ich durch die 
gewollte galvanische Trennung ausgeblendet ;) Aber um das zu Trennen bin 
ich ja dabei die Schaltung zu entwerfen, um die dieser Thread geht. 
Funktionieren müsste es also so wie oben beschrieben, vorrausgesetzt 
eine korrekte Isolation der beiden Seiten der Trennungsschaltung ist 
vorhanden.

von Falk B. (falk)


Lesenswert?

Ja.

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.