Forum: Mikrocontroller und Digitale Elektronik USB galvanisch trennen über ATTINY/USART


von Flo G. (phlo)


Angehängte Dateien:

Lesenswert?

Hallo,

habe einen Schaltplan zur Verwendung mit Fotoblitzen entworfen, welcher 
auch einen USB-Anschluss beinhaltet. Da die Schaltung später durchaus 
auch an alten Blitzen betrieben werden soll, bei denen (über 
Spannungsteiler) über SV1 bis zu 350V anliegen, möchte ich die 
USB-Schnittstelle galvanisch trennen, damit im Fehlerfall nur die 
Schaltung stirbt und nicht der ganze PC. Habe vor das Ganze über einen 
eigenen ATTiny zu machen, da ich sowieso fast fertigen Code für 
USB->Seriell rumliegen hab. Kann man das so wie im angehängten 
Schaltplan machen? Von der Geschwindigkeit müssten die 6N137 das doch 
ohne weiteres packen, oder?

Vielleicht noch einige Sachen zum weiterführenden Verständnis:

1. Trennen der hohen Spannungen ist nicht sehr praktikabel, da sonst 
solche Dinge wie Linear-OKs mit rein müssen die ich vermeiden will

2. Bevor's jemand vorschlägt - FTDI ist zu teuer im Vergleich zum 
ATTiny, und ich hab den passenden Code ja schon :-)

3. Benötigte Datenrate ist sehr niedrig, 9600 wäre ok (es werden nur 
Einstellungen hin und her übertragen, evtl. noch ein paar Bit 
Statusmeldungen, und das auch nur mit niedriger Rate)

4. Die TTL-Anschlüsse müssen nicht getrennt sein, da bei deren 
Verwendung der Anschluss eines "alten" Blitzes eh sinnlos ist (wäre 
jetzt zuviel alle Funktionen der Firmware zu erklären, sorry)

5. Sorry für den recht chaotischen Schaltplan, ich bin weder was Eagle 
angeht besonders bewandert, noch was Analogelektronik im Allgemeinen 
angeht.

Vielen Dank schonmal für Korrekturen/Hinweise/etc.!

Gruß,
F. Geiselhart

von holger (Gast)


Lesenswert?

R15 gehört an den Collector von OK3. Nicht an Masse.
Der Transistor in OK4 ist verpolt.

von Flo G. (phlo)


Angehängte Dateien:

Lesenswert?

Okay, super, vielen Dank - war wohl ein Flüchtigkeitsfehler, wurde 
sofort korrigiert (siehe Anhang). Ansonsten müsste diese Schaltung 
"lebensfähig" sein oder?

Danke und Grüße,
Florian

von holger (Gast)


Lesenswert?

Die LED in OK1 hat keinen Vorwiderstand. Wenn das ma gut geht.

von Flo G. (phlo)


Lesenswert?

Argh...du hast natürlich recht, das war bisher nur nicht ins Gewicht 
gefallen weil OK1 zum Triggern immer nur 10ms auf High gezogen wird, und 
danach fast immer mindestens wieder eine Sekunde "Verschnaufpause" hat 
bis wieder getriggert wird. Deswegen ist wohl noch kein OK abgeraucht...

Aber danke, ich werd den Widerstand sicherheitshalber doch noch 
vorsehen!

Achja: Wenn sonst jemand sowieso den Rest der Schaltung auch anschaut 
bin ich auch über Fehler/Korrekturen dort dankbar :-)

Grüße,
Florian

von holger (Gast)


Lesenswert?

Am Mega16 fehlt für meinen Geschmack noch mindestens
ein 100nF zwischen VCC,GND.

AREF an AVCC anzuschliessen würde ich mir auch noch mal überlegen.
Besser nicht.

von Flo G. (phlo)


Angehängte Dateien:

Lesenswert?

Hast recht, die ganze Stromversorgungssektion des Mega war irgendwie 
noch verkorkst, habe das mal grundlegend umgebaut, sollte so eigentlich 
fast allen Eventualitäten genügen...Oder sollte da eventuell noch eine 
kleine L zwischen AVCC und VCC? Bin wie gesagt bei sowas ne ziemliche 
Niete...

Grüße,
Florian

von holger (Gast)


Lesenswert?

Wenn der AD Wandler nicht benutzt wird kannst du dir
die Spule sparen. Den Kondensator an AREF auch.

Den ATTiny26 ohne Quarz zu betreiben würde ich allerdings
nicht machen. Kann klappen, muss aber nicht ;)

von Flo G. (phlo)


Lesenswert?

Hm, doch, der Wandler bzw. 1 Kanal davon wird benutzt...dann mach ich 
die Spule mal noch mit rein...

Zu der Sache mit dem Quarz: Habe anderswo problemlos einen Tiny26 am 
UART mit wesentlich höheren UART-Geschwindkeiten laufen, jeweils unter 
Benutzung der internen PLL-Clock des Tiny (die ich hier sowieso wegen 
USB auch verwenden muss), damit hatte ich eigentlich noch nie 
Probleme...dachte das sei relativ stabil mit der PLL? Du meintest doch 
sicher die UART-Problematik bei Verwendung des internen Osc?

Grüße,
Florian

von Dieter W. (dds5)


Lesenswert?

> Du meintest doch sicher die UART-Problematik bei Verwendung des
> internen Osc?

Das mag ja noch angehen, der UART läuft auch mit 2% Frequenzabweichung.
USB ist da wesentlich pingeliger, hier muss die Abweichung unter 0,1% 
liegen und das ist ohne Quarz unmöglich.

von holger (Gast)


Lesenswert?

>Du meintest doch sicher die UART-Problematik bei Verwendung
>des internen Osc?

Jupp.

Wenn du noch Platz auf der Platine hast, sieh einen Quarz
vor. Plus die beiden Kondensatoren. Eventuell geht es auch ohne.
Falls nicht wäre es schade um die schöne Platine wenn
kein Quarz vorgesehen ist ;)

von Flo G. (phlo)


Lesenswert?

Hallo Dieter,

das war einmal :-)...Aber ich war bis vor ein paar Tagen auch derselben 
Meinung. Tip: Schau mal auf obdev.at vorbei, die haben neue Versionen 
der AVR-USB-Firmware released, welche mit den PLLs von Tiny26/Tiny45 
laufen...was mich doch sehr gefreut hat!

siehe http://obdev.at/products/avrusb/index-de.html

Viele Grüße,
Florian

von Flo G. (phlo)


Lesenswert?

holger,
du hast Recht, an der Grundfläche des Quarzes solls nicht 
scheitern...Wenn das mein einziges Problem bleibt bin ich glücklich :-)

Danke und Grüße,
Florian

von Flo G. (phlo)


Angehängte Dateien:

Lesenswert?

So, mal noch eine aktuelle Version des Schaltplans mit allen 
Verbesserungen bisher...Danke an alle die bisher geholfen haben!!

Grüße,
Florian

von Peter M. (pmahlknecht)


Lesenswert?

Hallo,
die Blitzsteuerung sieht sehr interessant aus, ich würde dem 
Phototransistor jedoch einen eigenen Eingang spendieren. Kannst du mir 
noch erklären wie das mit den Tastern S3 bis S6 funktioniert?
MfG Peter

von Flo G. (phlo)


Lesenswert?

Peter, meinst du interessant im Sinne von "gewöhnungsbedürftig" oder 
wirklich im Sinne von interessant? Falls ersteres zutrifft, wie würdest 
du die Umsetzung eines Lichtimpulses auf eine kurze 5V-Flanke eher 
lösen? Bin da leider nur mäßig fit, vor allem wenn es darum geht, nicht 
den Absolutbetrag zu messen sondern nur auf steigende Flanken eine 
logische 1 auszugeben...das macht jetzt (hoffentlich) der Kondensator.

Das mit dem eigenen Eingang würde heißen dass ich nochmal einen 
Interrupt für den Trigger opfern muss, den wollte ich mir aber vorläufig 
noch vorbehalten für eventuelle Probleme/Erweiterungen...denkst du das 
ist elektrisch unbedingt nötig oder hättest du es eher nur für sinnvoll 
erachtet wegen der Möglichkeiten?

Zu den Buttons: Das läuft analog zu der Geschichte hier => 
Beitrag "LCD Ansteuerung und Digitaler Eingang an einem Pin"
Dabei hängen die Taster an den Datenleitungen D4-D7 des LCDs.
Ergo: LCD-Enable auf Low ziehen, die Datenleitungen nacheinander auf 
High und dann über die Button-Leitung die einzelnen Taster abfragen.
Allerdings war das nur als Notlösung gedacht weil ursprünglich ein Mega8 
in die Schaltung sollte...Theoretisch könnte ich jetzt aber auch die 
Taster normal abfragen, das wurde nur noch nicht geändert...werd ich 
wohl noch machen.

Grüße,
Florian

von Sebastian (Gast)


Lesenswert?

Ich vermisse die bisherigen Verbesserungen noch am ATtiny. Also 100nF 
Kerko. AVCC soll ja glaub ich nicht angeschlossen werden. 
Reset-beschaltung hat er noch überhaupt nicht.

Wie ist das eigentlich mit den 10µF, die am USB-Port hängen. Ich kann 
das nicht wirklich einschätzen, aber etwas bedenken dass er (für die 
Specs) im Einschaltmoment zu viel Strom zieht hab ich dann doch.

Sebastian

von Sebastian (Gast)


Lesenswert?

Ups, sorry. Seh grad, dass in der letzten Version zumindest der Pullup 
des Reset vorhanden ist. 100nF gegen Masse dürften aber auch hier nich 
stören.

Sebastian

von Flo G. (phlo)


Lesenswert?

Sebastian,

hab den 100nF noch dazugemacht, danke. Ansonsten entspricht die 
Beschaltung des Tiny im Großen und Ganzen der "Referenz" von der o.g. 
Obdev-Seite des AVR-USB-Treibers (Projekt EasyLogger). Von dort kommt 
auch der 10µF-Kondensator...wobei ich persönlich jetzt auch nicht denke 
dass die Nanosekunde in der die möglichen 100mA des USB durch den 
Ladestrom des C überschritten werden relevant ist, die USB-Ports sind 
PC-intern immer recht robust beschalten was Kurzschluss angeht.

Prinzipiell müsste es aber auch kein Ding sein den Kondensator auf 
4,7-1µF zu verkleinern falls es je Probleme gibt...

Noch etwas anderes - an den Leitungen von SV1 sowie TTL in und out (an 
Port A) könnten im Fehlerfall (Spannungsteiler kaputt) wie erwähnt hohe 
Spannungen bis ca. 300V gegen GND anliegen. Kann ich mich da für die 
Absicherung auf die internen Schutzdioden des Mega verlassen oder wäre 
es klüger da jeweils noch eine Diode/Z-Diode in Sperrichtung gegen GND 
und VCC an jede Leitung dazuzupacken?

Danke und Gruß,
Florian

von Peter M. (pmahlknecht)


Lesenswert?

F. Geiselhart wrote:
> Peter, meinst du interessant im Sinne von "gewöhnungsbedürftig" oder
> wirklich im Sinne von interessant? Falls ersteres zutrifft, wie würdest
> du die Umsetzung eines Lichtimpulses auf eine kurze 5V-Flanke eher
> lösen? Bin da leider nur mäßig fit, vor allem wenn es darum geht, nicht
> den Absolutbetrag zu messen sondern nur auf steigende Flanken eine
> logische 1 auszugeben...das macht jetzt (hoffentlich) der Kondensator.

Ich meinte das das Projet wirklich interessant ist, hatte mir auch schon 
mal überlegt so etwas zu bauen. Das war also nicht auf die Umsetzung 
bezogen.
Vielleicht solltest du für die Auslösung als Servoblitz einen Komparator 
(evtl. den im Mega16 enthaltenen) nach dem Phototransistor einsetzen und 
mit einem Poti (oder DAC) die Schaltschwelle einstellbar machen.

> Das mit dem eigenen Eingang würde heißen dass ich nochmal einen
> Interrupt für den Trigger opfern muss, den wollte ich mir aber vorläufig
> noch vorbehalten für eventuelle Probleme/Erweiterungen...denkst du das
> ist elektrisch unbedingt nötig oder hättest du es eher nur für sinnvoll
> erachtet wegen der Möglichkeiten?

Vom elektrischen sollte es auch mit einem Eingang funktionieren. Ich 
habe es vorgeschlagen, damit man den Servoblitzeingang getrennt 
deaktivieren kann, damit der Blitz nicht immer auslöst wenn z.B. mehrere 
Leute blitzen.

> Zu den Buttons: Das läuft analog zu der Geschichte hier =>
> Beitrag "LCD Ansteuerung und Digitaler Eingang an einem Pin"
> Dabei hängen die Taster an den Datenleitungen D4-D7 des LCDs.
> Ergo: LCD-Enable auf Low ziehen, die Datenleitungen nacheinander auf
> High und dann über die Button-Leitung die einzelnen Taster abfragen.
> Allerdings war das nur als Notlösung gedacht weil ursprünglich ein Mega8
> in die Schaltung sollte...Theoretisch könnte ich jetzt aber auch die
> Taster normal abfragen, das wurde nur noch nicht geändert...werd ich
> wohl noch machen.

Ok, hab jetzt verstanden wie das funktionieren soll, der Bus im 
Schaltplan erhöht hier leider nicht die Lesbarkeit (du solltest den 
Leitungen evtl. Labels verpassen, damit man weiß wo welche Leitung 
hinführt).
Solltest du die Tastersteuerung so belassen würde ich den 200 Ohm 
Pulldown rauswerfen und den Pullup im Controller verwenden, den kannst 
du während du auf das LCD schreibst auch deaktivieren.

Überleg dir auch nochmal ob der 7805 eine gute Wahl für ein 
batteriebetriebenes Gerät ist. Ein Schaltregler, oder evtl. auch ein 
Low-Dropout-Spannungsregler wären hier sicher die bessere Wahl.

MfG Peter

von Flo G. (phlo)


Lesenswert?

Hallo Peter,

freut mich dass hier auch tatsächlich noch ein Gleichgesinnter unterwegs 
ist. Ich versuche grade auch im DSLR-Forum noch ein paar Enthusiasten 
mit besseren Elektronikkenntnissen als den Meinen zu scharen, und werde 
versuchen das Projekt in Kürze mal mit allen was ich hab online einem 
begrenzten Nutzerkreis zur Verfügung zu stellen. Das erste stabile 
"Release" wird dann zum Open-Source-Projekt umfunktioniert und soll u.a. 
auch die Features des StrobIt-Triggers wie Funkauslösung etc. (einfach 
mal googeln) integrieren, aber gleichzeitig noch viele andere Funktionen 
haben wie z.B. die digitale stufenlose Steuerung von Analogblitzen (das 
soll modular laufen über jeweils passende Schaltungen an SV1). Wenn du 
Interesse daran hast eventuell ein wenig mit deinen Kenntnissen 
beizutragen schreib mich doch mal an, dann gebe ich dir wenns soweit ist 
auch Zugang zur Plattform...

> Vielleicht solltest du für die Auslösung als Servoblitz einen Komparator
> (evtl. den im Mega16 enthaltenen) nach dem Phototransistor einsetzen und
> mit einem Poti (oder DAC) die Schaltschwelle einstellbar machen.

Hm, ich muss zugeben dass ich mich bisher quasi so gut wie gar nicht mit 
dem Komparator auseiandergesetzt hab. So wie es scheint kann dieser ja 
laut Datenblatt auch Interrupts auslösen, das wäre ja dann ideal...Habe 
ich das soweit richtig verstanden? Wie würde denn die externe 
Beschaltung dann aussehen? Fototransistor direkt über nen C an AIN0 und 
einstellbaren Spannungsteiler an AIN1?

> Vom elektrischen sollte es auch mit einem Eingang funktionieren. Ich
> habe es vorgeschlagen, damit man den Servoblitzeingang getrennt
> deaktivieren kann, damit der Blitz nicht immer auslöst wenn z.B. mehrere
> Leute blitzen.

Du hast Recht, das hatte ich auch noch gar nicht bedacht, weil mir immer 
mehr die Verwendung unter kontrollierten (Studio-)Bedingungen im Sinn 
war, wo nur selten mehrere Leute blitzen. Wenn aber das mit dem 
Komparator klappt, wäre es ja kein Ding und tatsächlich nur sinnig das 
Ganze zu trennen, also den Drahteingang an Int0, den RFM12 an Int1 und 
den Fototransistor an AIN/Int2. Und dann hoffen dass ich keine weiteren 
Interrupts mehr brauch ;-).

> Ok, hab jetzt verstanden wie das funktionieren soll, der Bus im
> Schaltplan erhöht hier leider nicht die Lesbarkeit (du solltest den
> Leitungen evtl. Labels verpassen, damit man weiß wo welche Leitung
> hinführt).

Jo, das stimmt, das war sehr unübersichtlich gemacht...Naja, ist einer 
meiner ersten größeren Schaltpläne und mein erster überhaupt der mit 
EAGLE gemacht ist :-). Habs nun auf jeden Fall geändert...

> Solltest du die Tastersteuerung so belassen würde ich den 200 Ohm
> Pulldown rauswerfen und den Pullup im Controller verwenden, den kannst
> du während du auf das LCD schreibst auch deaktivieren.

Stimmt, eigentlich eine gute Idee => wird sofort umgesetzt!

> Überleg dir auch nochmal ob der 7805 eine gute Wahl für ein
> batteriebetriebenes Gerät ist. Ein Schaltregler, oder evtl. auch ein
> Low-Dropout-Spannungsregler wären hier sicher die bessere Wahl.

Naja mir ist bewusst dass das nicht unbedingt optimal ist, allerdings 
muss ich gestehen dass ich mir um die Stromversorgung auch bisher nur 
begrenzt Gedanken gemacht habe, und für das Design der Hauptschaltung 
einfach nur mal die +5V sicher haben wollte.
Was würdest du denn hier bei den gegebenen Rahmenbedingungen konkret 
empfehlen? Also geringer Platzbedarf, Eingangsspannung möglichst 
variabel, Strombedarf/Schnitt(mit LCD-Beleuchtung, ohne nur ca. 10mA) 
ca. 60mA, Strombedarf/Peak ca.80mA (geschätzt).
Ich hatte z.B. schon darüber nachgedacht das ganze auf 3,3V zu 
spezifizieren und 3 AAA-Akkus zu nehmen, oder einen Step-Up-Wandler für 
eine AA-Zelle...aber damit hab ich leider kaum Erfahrung...

Danke, Viele Grüße,
Florian

von Flo G. (phlo)


Angehängte Dateien:

Lesenswert?

So, wieder ein Schaltplan-Update, für diejenigen die es interessiert. 
Die Änderungen am Servoauslöser sind aber noch nicht mit drin...das 
würde ich erst gerne weiter diskutieren...

Grüße,
Florian

von Peter M. (pmahlknecht)


Lesenswert?

Hallo,
hab mal gegoolet um zu sehen wie andere das mit der Servoblitzerkennung 
machen, bin dabei auf ein ct-Projekt gestossen: 
http://www.heise.de/ct/projekte/tochterblitz/ . Ich würde den linken 
Teil der Schaltung aus deren Schaltplan übernehmen (also den Teil der 
aus D1,C1,C3,R1,R2,R3,Q2) besteht. Das sollte dann eigentlich direkt 
einen Logikpegel ergeben den man an einem Interrupt-Eingang einspeisen 
kann.

Noch ein paar Ideen:
-mit dem ADC die Batteriespannung messen (evtl. brauchts noch nen 
hochohmigen Spannungsteiler) damit man abschätzen kann wann man die 
Batterien wechseln muss,
-Einen Ein-Aus-Schalter um die Batterien komplett vom Gerät zu trennen 
(oder ist das SL1 und SL2),
-Für den Mega 16 könnte man den Quarz einsparen, wenn man dafür den 
Clk-Out des RFM-Moduls benutzt (10MHz),

Zur Spannungsversorgung hab ich mir auch noch ein paar Gedanken gemacht:
Man könnte das Gerät direk an 3 NiMh-Akkus (AA oder AAA) betreiben, bei 
vollen Akkus hätte man ca. 3,6V, bei fast leeren ca. 2,7V, Mega16 und 
RFM12 würden in diesem Spannungsbereich auch ohne Spannungsregler 
funktionieren (der Mega16 allerdings nicht mit 16MHz). Wie es mit dem 
Display bei diesen Spannungen aussieht weiss ich leider nicht. Was für 
ein LCD hattest du denn vorgesehen?
Eine andere Möglichkeit wären 1 oder 2 Akkus oder Batterien und ein 
Step-Up-Wandler für 3,3V. Von Maxim gibts dafür ein paar interessante 
z.B. Max856, kostet aber um die ~4€.

Grüße Peter

von Flo G. (phlo)


Lesenswert?

Peter Mahlknecht wrote:

> Ich würde den linken
> Teil der Schaltung aus deren Schaltplan übernehmen (also den Teil der
> aus D1,C1,C3,R1,R2,R3,Q2) besteht. Das sollte dann eigentlich direkt
> einen Logikpegel ergeben den man an einem Interrupt-Eingang einspeisen
> kann.

Okay, das scheint eine gute Idee zu sein, sieht auch gut aus...Die 
Schaltung kannte ich noch gar nicht, obwohl ich mittlerweile schon 
bestimmt 10 der simplen c't-Tochterblitzdinger nachgebaut hab (ohne 
Vorblitzignorierung). Aber nochmal kurz zurück zum letzten Post, wie ist 
das mit dem Komparatoreingang? Kann der einen echten hardwareseitigen 
Interrupt auslösen oder muss ich zuerst den Komparator anwerfen, Werte 
abfragen und dann wird der Interrupt in Software ausgelöst? Ist grade 
irgendwie nur so halb aus dem Datenblatt ersichtlich oder erschließt 
sich mir nicht...

> Noch ein paar Ideen:
> -mit dem ADC die Batteriespannung messen (evtl. brauchts noch nen
> hochohmigen Spannungsteiler) damit man abschätzen kann wann man die
> Batterien wechseln muss,

Super Idee, schon notiert ;-)

> -Einen Ein-Aus-Schalter um die Batterien komplett vom Gerät zu trennen
> (oder ist das SL1 und SL2),

Ebenfalls prima, das Gerät soll sowieso ein Energiesparwunder werden 
(wenn man von dem 7805 absieht...), ist auch notiert.

> -Für den Mega 16 könnte man den Quarz einsparen, wenn man dafür den
> Clk-Out des RFM-Moduls benutzt (10MHz),

Ist der stabil genug für USART-Taktung? Wenn ja wäre das auch prima, 
schon wieder Teile gespart...

> Zur Spannungsversorgung hab ich mir auch noch ein paar Gedanken gemacht:
> Man könnte das Gerät direk an 3 NiMh-Akkus (AA oder AAA) betreiben, bei
> vollen Akkus hätte man ca. 3,6V, bei fast leeren ca. 2,7V, Mega16 und
> RFM12 würden in diesem Spannungsbereich auch ohne Spannungsregler
> funktionieren (der Mega16 allerdings nicht mit 16MHz). Wie es mit dem
> Display bei diesen Spannungen aussieht weiss ich leider nicht. Was für
> ein LCD hattest du denn vorgesehen?
> Eine andere Möglichkeit wären 1 oder 2 Akkus oder Batterien und ein
> Step-Up-Wandler für 3,3V. Von Maxim gibts dafür ein paar interessante
> z.B. Max856, kostet aber um die ~4€.

Zu den Wandlern etc. und den Spannungsbereichen schaust du dir am besten 
einfach mein Projektwiki an was ich jetzt endlich aufgesetzt habe. URL 
und Zugangsdaten sollten in deiner PN-Box liegen...

Grüße,
Flo

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.