Forum: Mikrocontroller und Digitale Elektronik Hardware für 12-Kanal-Soft-PWM - Review bitte


von Michael G. (mjgraf)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin dabei, mir eine kleine LED-Leuchtensteuerung zu basteln. 
Anforderungsprofil:

- 12 Kanal Soft-PWM
  o Steuerung von LEDs
  o bis zu 1A / Kanal
  o bis zu 6A gesamt
  o Teilbestückung (weniger Kanäle) möglich
- ISP-Schnittstelle, Doppelnutzung für Bedienelemente (Taster, 
Drehencoder) möglich
- Serielle Schnittstelle
  o RS232 mit TTL-Pegeln
  o Bestückungsvariante RS485 (1 zusätzlicher Portpin erforderlich)
- Temperaturüberwachung mit DS1820 (sicher ist sicher)
- Spannungsüberwachung, um beim Einbruch der Versorgung noch schnell den 
aktuellen Betriebszustand ins EEPROM zu schreiben
- Bedienbarkeit über Infrarot-FB mit TSOP1736

Mein aktueller Schaltplanentwurf ist im Anhang - habt ihr Feedback?

Gruß & Dank
Michael

von Ex-perte (Gast)


Lesenswert?

Der Schaltplan gibt da soviel nicht her. Wichtiger scheinen mir hier die 
logistischen Herausforderungen des handlings der Bestückung. RS485 hat 
minter andere Pegel, als RS232. Entscheidend ist, dass das Layout das 
kann. 6 A sind nicht ohne, wobei ich nicht weiss, ob der Wandler das 
kann.

von Conny G. (conny_g)


Lesenswert?

Schaut mir ganz gut aus!

Pull-Down-Widerstände am Gate der MOSFETs wären nicht schlecht, damit 
die einen definierten Level haben, wenn der uC gerade nicht läuft 
(Startup).
Und manche machen 10 oder 100 Ohm Widerstande vor's Gate.

von Conny G. (conny_g)


Lesenswert?

Ex-perte schrieb:
> Der Schaltplan gibt da soviel nicht her. Wichtiger scheinen mir hier die
> logistischen Herausforderungen des handlings der Bestückung. RS485 hat
> minter andere Pegel, als RS232. Entscheidend ist, dass das Layout das
> kann. 6 A sind nicht ohne, wobei ich nicht weiss, ob der Wandler das
> kann.

Die 6A kommen ja über die 12V, nicht vom Wandler/5V.

von m.n. (Gast)


Lesenswert?

Michael Graf schrieb:
> - habt ihr Feedback?

Mein Vorschlag, um nicht so viele IO-Pins zu verbrauchen.
http://www.mino-elektronik.de/AVR_PWM_64/AVR_PWM_64.htm

von Karl H. (kbuchegg)


Lesenswert?

> Doppelnutzung für Bedienelemente (Taster, Drehencoder)

Warum willst du die unbedingt mit externem Pullup machen?
Gerade an den ISP Pins würde ich da nichts ranbauen, was mir unter 
Umständen das ISP beeinflusst.
Die Taster an sich sind ja kein Problem. Während eines Brennvorgangs 
muss man ja nicht unbedingt mit den Tastern spielen. Aber als Pullup 
kann das Programm genausogut auch die internen Pullups während des 
Programmlaufs aktivieren.

von Timm T. (Gast)


Lesenswert?

Pull-Downs an die Gates, sonst leuchten die LEDs während Init / 
Programmierung.

/RE und DE zusammenlegen und an einen Pin hängen, dann kannst Du die 
Datenrichtung vom µC aus umschalten. Wenn Du das brauchen solltest.

Die 10k Pull-Ups am SPI stören nicht, wenn Du nicht gerade mit Ponyprog 
und einem RS232 Dongle programmierst.

Ich lege prinzipiell einen C 10n zwischen Reset und GND.

Der TSOP möchte noch einen C zwischen Vss und GND, siehe Datenblatt.

von Michael G. (mjgraf)


Lesenswert?

Danke für die vielen Rückmeldungen!

Conny G. schrieb:

> Pull-Down-Widerstände am Gate der MOSFETs wären nicht schlecht, damit
> die einen definierten Level haben, wenn der uC gerade nicht läuft
> (Startup).

Werden ergänzt.

Karl Heinz schrieb:
>> Doppelnutzung für Bedienelemente (Taster, Drehencoder)
>
> Warum willst du die unbedingt mit externem Pullup machen?
> Gerade an den ISP Pins würde ich da nichts ranbauen, was mir unter
> Umständen das ISP beeinflusst.
> Die Taster an sich sind ja kein Problem. Während eines Brennvorgangs
> muss man ja nicht unbedingt mit den Tastern spielen. Aber als Pullup
> kann das Programm genausogut auch die internen Pullups während des
> Programmlaufs aktivieren.

Die Idee war, die Bedienelemente (die eh extern sind) über die 
ISP-Buchse anzuschließen. Sorry, wenn das aus dem Schaltplan so nicht 
herauskam -- ein kleines Kästchen um den Teil wäre wohl gut...
Es ist also entweder der Programmer oder die Bedienelemente mit 
Pull-Ups angeschlossen, aber nie beides gleichzeitig.

Timm Thaler schrieb:
> Pull-Downs an die Gates, sonst leuchten die LEDs während Init /
> Programmierung.

Werden ergänzt, s.o.

> /RE und DE zusammenlegen und an einen Pin hängen, dann kannst Du die
> Datenrichtung vom µC aus umschalten. Wenn Du das brauchen solltest.

Datenrichtungsumschaltung macht doch nur /DE -- und für den müsste man 
bei Bedarf dann einen Portpin opfern, für die ad-hoc-Verdrahtung gibt es 
PAD1.

/RE steuert nur, ob an RO ein Signal rauskommt, der kann m.E. permanent 
auf Masse.

> Ich lege prinzipiell einen C 10n zwischen Reset und GND.

Guter Punkt, danke! Wird ergänzt.

> Der TSOP möchte noch einen C zwischen Vss und GND, siehe Datenblatt.

Hat er, ist C8. Ich habe die Stützkondensatoren zur Spannungsversorgung 
weggeräumt.

Gruß & Dank
Michael

von Timm T. (Gast)


Lesenswert?

Michael Graf schrieb:
> Hat er, ist C8. Ich habe die Stützkondensatoren zur Spannungsversorgung
> weggeräumt.

Der muss aber hinter dern R direkt an den TSOP, min. 100n, eher größer.

Michael Graf schrieb:
> /RE steuert nur, ob an RO ein Signal rauskommt, der kann m.E. permanent
> auf Masse.

Dann empfängst Du aber am Rx immer Deine selbst gesendeten Signale mit. 
Kann störne, muss aber nicht.

von Michael G. (mjgraf)


Lesenswert?

Timm Thaler schrieb:

> Dann empfängst Du aber am Rx immer Deine selbst gesendeten Signale mit.
> Kann störne, muss aber nicht.

Das will ich auch - wie soll ich sonst prüfen, dass nicht parallel 
jemand anderes auf dem Bus unterwegs war?

von Michael G. (mjgraf)


Angehängte Dateien:

Lesenswert?

Anbei der überarbeitete Schaltplan:

- Pull-Down-Widerstände ergänzt
- Kondensator von /RESET nach Masse ergänzt
- Kondensator am TSOP hinter den Widerstand verschoben

Layout ist in Arbeit.

Nochmal Danke an alle, die Feedback gegeben haben!

von Conny G. (conny_g)


Lesenswert?

Da sind gar keine Pulldowns an den MOSFETs, richtige Grafik?

Ach sorry, das sind die Widerstandsarrays.

: Bearbeitet durch User
von Michael G. (mjgraf)


Angehängte Dateien:

Lesenswert?

So, hier ist mein Layout-Versuch. Vielleicht sollte ich dazu sagen, dass 
es erst mein zweites Layout ist -- für konstruktive Kritik bin ich also 
dankbar.

von Conny G. (conny_g)


Lesenswert?

Michael Graf schrieb:
> So, hier ist mein Layout-Versuch. Vielleicht sollte ich dazu sagen, dass
> es erst mein zweites Layout ist -- für konstruktive Kritik bin ich also
> dankbar.

Das ist eine 5/2.1mm Buchse für den eingehenden Strom?
Die ist nur für 2.5 A geeignet lt dem erstbesten Datenblatt, das ich 
gerade gefunden habe.

Und die Leiterbahnen zu den FETs sollten ca 100mil breit sein:
http://www.mikrocontroller.net/articles/Leiterbahnbreite

Sonst ist es doch schon mal ganz schick.

: Bearbeitet durch User
von zz (Gast)


Lesenswert?

Michael Graf schrieb:
> So, hier ist mein Layout-Versuch. Vielleicht sollte ich dazu
> sagen, dass
> es erst mein zweites Layout ist -- für konstruktive Kritik bin ich also
> dankbar.

Die Gate Ansteurungen von der Masse Leitung weg, da könnte was 
einkoppeln. Und die Gates mit sinnvollen R auf Masse ziehen.

von Timm T. (Gast)


Lesenswert?

An den 78L05 gehören dicht dran noch 2 Cs 100n.

von Michael G. (mjgraf)


Angehängte Dateien:

Lesenswert?

Conny G. schrieb:

> Das ist eine 5/2.1mm Buchse für den eingehenden Strom?

Ja.

> Die ist nur für 2.5 A geeignet lt dem erstbesten Datenblatt, das ich
> gerade gefunden habe.

... und hier liegen zwei Netzteile 12V/5A "für LED-Beleuchtung", mit 
"China Export"-Siegel und just diesen Steckern... Man lernt... ;-)

Ich habe Platz für eine Schraubklemme (geeignet für 6A) ergänzt.

> Und die Leiterbahnen zu den FETs sollten ca 100mil breit sein:
> http://www.mikrocontroller.net/articles/Leiterbahnbreite

Ich habe jetzt eine Massefläche und (im 12V-Bereich) eine 12V-Fläche 
verwendet. Das sollte für die Leiterbahnbreite reichen - oder?

Allerdings habe ich noch einen Punkt, der mir Sorgen macht: einige Pads 
haben - bedingt durch die Lage der übrigen Leiterbahnen - nur ein bis 
zwei schmale Stege zur Fläche, siehe Detailansicht. Zwar weiß ich, wie 
man die Stegbreite für das gesamte Polygon hochsetzen kann - aber geht 
das in Eagle auch selektiv für einzelne Pads? Oder gibt es einen 
Workaround?



zz schrieb:

> Die Gate Ansteurungen von der Masse Leitung weg, da könnte was
> einkoppeln.

Siehst Du das Problem mit der Massefläche immer noch?

> Und die Gates mit sinnvollen R auf Masse ziehen.

Die Widerstandsarrays sind rechts vom Microcontroller.



Timm Thaler schrieb:
> An den 78L05 gehören dicht dran noch 2 Cs 100n.

Done.



Euch allen: Danke!

EDIT: Erst war kein Bild da, dann habe ich sie nochmal angefügt, jetzt 
sind sie doppelt... @Admin: Könnte einer von Euch die Dubletten löschen? 
Danke!

: Bearbeitet durch User
von Timm T. (Gast)


Lesenswert?

1. An die Jumper unter dem 485 kommst Du nicht mehr ran, wenn der drauf 
sitzt. Ist wahrscheinlich egal.

2. Du läßt die LP mit DK fertigen? In Eigenfertigung ohne DK kannst Du 
den Quarz und einiges andere nicht löten.

3. Dem TSOP und auch der Schraubbuchse würde ich zwecks besserer 
mechanischer Stabilität lange Pads verpassen, so wie bei X3.

4. Die Cs und Rs würde ich nun gleich noch als SMD machen, kann man ja 
auch bottom platzieren.

von Michael G. (mjgraf)


Lesenswert?

Timm Thaler schrieb:
> 1. An die Jumper unter dem 485 kommst Du nicht mehr ran, wenn der drauf
> sitzt. Ist wahrscheinlich egal.

Korrekt :-)

Die Jumper werden genau dann geschlossen, wenn der 485 nicht bestückt 
wird, ich also eine reguläre RS232 (mit TTL-Pegeln) an der Stiftleiste 
haben möchte.


> 2. Du läßt die LP mit DK fertigen? In Eigenfertigung ohne DK kannst Du
> den Quarz und einiges andere nicht löten.

Sollte zu iTead gehen - als erster Versuch dort. Für $14,90 für 10 Stück 
kriege ich hierzulande wohl höchstens das Rohmaterial...


> 3. Dem TSOP und auch der Schraubbuchse würde ich zwecks besserer
> mechanischer Stabilität lange Pads verpassen, so wie bei X3.

Wird gemacht. Danke!


> 4. Die Cs und Rs würde ich nun gleich noch als SMD machen, kann man ja
> auch bottom platzieren.

Bedrahtet liegen sie hier mehr-als-ausreichender Menge in der 
Bastelkiste. Von daher -- beim nächsten Mal :-)


Gruß & Dank
Michael

von Guest (Gast)


Lesenswert?

Michael Graf schrieb:
> Allerdings habe ich noch einen Punkt, der mir Sorgen macht: einige Pads
> haben - bedingt durch die Lage der übrigen Leiterbahnen - nur ein bis
> zwei schmale Stege zur Fläche, siehe Detailansicht. Zwar weiß ich, wie
> man die Stegbreite für das gesamte Polygon hochsetzen kann - aber geht
> das in Eagle auch selektiv für einzelne Pads? Oder gibt es einen
> Workaround?

Ich verlasse mich nicht auf das Massepolygon um Verbindungen auf 
Massepads zu erhalten. Wenn alle Masseverbindungen mit "normal" dicken 
Leiterbahnen gerottet werden kann es nicht passieren, dass ein Masseteil 
mit dem anderen  unabsichtlich nur durch eine Haarfeine Leiterbahn 
verbunden ist. Ebenso entfällt das Problem mit den dünnen Stegen der 
Thermals.
Also route alles so, als ob Du kein Massepolygon vorgesehen hättest.

von Timm T. (Gast)


Lesenswert?

Guest schrieb:
> Also route alles so, als ob Du kein Massepolygon vorgesehen hättest.

Quark, die Werte für das Polynom entsprechend setzen, dann entstehen 
keine zu schmalen Stege. Wenn dabei Inseln entstehen, dann werden die 
fehlenden Verbindungen angezeigt. Werden die Inseln nicht benötigt 
(keine Pads oder Vias drauf), werden sie entfernt.

Für normale DIL und SMD nehme ich Width 14-16, Isolate 12, Thermals on, 
Orphans (leere Inseln) off für das GND-Polygon.

von Conny G. (conny_g)


Lesenswert?

Guest schrieb:
> Michael Graf schrieb:
>> Allerdings habe ich noch einen Punkt, der mir Sorgen macht: einige Pads
>> haben - bedingt durch die Lage der übrigen Leiterbahnen - nur ein bis
>> zwei schmale Stege zur Fläche, siehe Detailansicht. Zwar weiß ich, wie
>> man die Stegbreite für das gesamte Polygon hochsetzen kann - aber geht
>> das in Eagle auch selektiv für einzelne Pads? Oder gibt es einen
>> Workaround?
>
> Ich verlasse mich nicht auf das Massepolygon um Verbindungen auf
> Massepads zu erhalten. Wenn alle Masseverbindungen mit "normal" dicken
> Leiterbahnen gerottet werden kann es nicht passieren, dass ein Masseteil
> mit dem anderen  unabsichtlich nur durch eine Haarfeine Leiterbahn
> verbunden ist. Ebenso entfällt das Problem mit den dünnen Stegen der
> Thermals.
> Also route alles so, als ob Du kein Massepolygon vorgesehen hättest.

Das mache ich auch so. Erst alles routen inclusive Masseleitungen, 
danach das GND-Polygon, dann haben alle Pads, die "dicke" Masseanbindung 
brauchen diese auch.

von Guest (Gast)


Lesenswert?

Timm Thaler schrieb:
> Quark, die Werte für das Polynom entsprechend setzen, dann entstehen
> keine zu schmalen Stege. Wenn dabei Inseln entstehen, dann werden die
> fehlenden Verbindungen angezeigt. Werden die Inseln nicht benötigt
> (keine Pads oder Vias drauf), werden sie entfernt.


Genau, Quark mit Sosse

Wie stellst Du sicher, dass wirklich alle Verbindungen mit den richtigen 
Leiterbahnquerschnitten erstellt werden? Je nach Layout kann es nämlich 
vorkommen, dass zwei Masseflächen nur über einen kleinen Steg 
miteinander verbunden werden, welcher die geforderten Anforderungen an 
die Mindestbreite nicht erfüllt. Zudem ist die Gefahr gross, dass so 
noch Airwires übrig bleiben und übersehen werden.
Ich betrachte die Polygone nicht als Werkzeug um das Masserouting zu 
erstellen, sondern um Ätzmittel zu sparen.
Wenn man ordentlich routet und generell immer zuerst die Versorgung (was 
meiner Meinung nach das Wichtigste ist) routet, hat man die obigen 
Probleme schon zum Vornherein bereits eliminiert.

von Timm T. (Gast)


Lesenswert?

Guest schrieb:
> Wie stellst Du sicher, dass wirklich alle Verbindungen mit den richtigen
> Leiterbahnquerschnitten erstellt werden?

Achje, machen wir jetzt einen Grundkurs: Wie route ich eine 
Leiterplatte?

1. Ein gutes Placing ist das Wichtigste. Also Bauteile, die hohe Ströme 
verlangen möglichst dicht beieinander und nicht an die entgegengesetzten 
Ecken der Leiterplatte packen.

2. Das GND-Polygon gleich am Anfang mit draufpacken, dann sieht man 
schon, wo es eng werden könnte.

3. Highlight des GND-Polygons, und man sieht wunderbar, wo Verbindungen 
zu eng ausfallen.

4. Gegen "übersehene" Luftlinien gibt es: "Ratsnetz - xx Luftlinien". 
Solange xx > 0, musst Du halt weitermachen.

5. Für wirkliche Hochstrom-Anwendungen kann - und sollte - man die 
GND-Polygone teilen, ein Digital GND und ein Power GND. Dann kann man 
das Power GND auch mit Width 40 oder so angeben, und es wird nirgendwo 
mit 12mil durchgeroutet.

6. Für Low Budget-Eigenfertigung kann man auch doppellagige 
Leiterplatten nehmen, wobei eine Lage nur - und wirklich nur - GND ist, 
der Rest wird auf der anderen Seite geroutet, zu GND wird per Vias 
verbunden. Dann hat man eine super GND-Fläche, muss nur eine Seite 
entwickeln und ätzen - auf der GND-Seite bleibt die Schutzfolie bis 
zuletzt drauf - und muss nur die GND-Vias durchkontaktieren.

von San L. (zwillingsfreunde)


Angehängte Dateien:

Lesenswert?

Michael Graf schrieb:
> aber geht
> das in Eagle auch selektiv für einzelne Pads? Oder gibt es einen
> Workaround?

Es besteht in der Tat die Möglichkeit, den Abstand bei Einzelnen Pads zu 
Vergrössern... wenn auch nur mit einem kleinen Trick. Hatte das selbe 
Problem und nach ein paar Stunden des ausprobierens kam ich zu folgendem 
Ergebniss:

(Am besten bisschen damit rumspielen, dann wirst du schnell selbst 
merken wie sich das ganze Verhält):

1. In der Layout Ansicht im Menü "Rect" auswählen (Siehe Anhang)

2. Das Reckteck auf der Fläche platzieren, wo das Polygon entfernt 
werden soll

3. Rechtsklick auf das Viereck -> Eigenschaften

4. Nun setzt du das Viereck auf den Layer 41 tRestrict (Falls Top Seite) 
oder Layer 42 bRestrict (Falls Bot Seite).

5. Durch einen Klick auf Ratsnest (Luftlinien neu Verbinden) wird sich 
nun auch dein Polygon anpassen. Das Polygon wird überall wo ein Viereck 
Platziert wurde entfernt. Somit besteht die Möglichkeit, an heiklen 
Stellen nachzubessern.

Hoffe konnte dir helfen.

Guest schrieb:
> Also route alles so, als ob Du kein Massepolygon vorgesehen hättest.

Ein Polygon erleichtert auch die Layout arbeit. Die meisten Verbindungen 
auf einem Layout sind gegen GND. Wenn du diese alle Routest, obwohl es 
nicht einmal nötig wäre, verbrauchst du damit unnötig viel Platz und 
hast bei etwas komplexeren Leiterplatten am Schluss wohl unzählige Via's 
welche komplett unnötig sind. Zudem nimmst du dir so selbst extrem viel 
Platz weg für andere normale Leiterbahnen. Wieso also sich das Leben 
erschweren?

: Bearbeitet durch User
von Conny G. (conny_g)


Lesenswert?

San Lue schrieb:
> Guest schrieb:
>> Also route alles so, als ob Du kein Massepolygon vorgesehen hättest.
>
> Ein Polygon erleichtert auch die Layout arbeit. Die meisten Verbindungen
> auf einem Layout sind gegen GND. Wenn du diese alle Routest, obwohl es
> nicht einmal nötig wäre, verbrauchst du damit unnötig viel Platz und
> hast bei etwas komplexeren Leiterplatten am Schluss wohl unzählige Via's
> welche komplett unnötig sind. Zudem nimmst du dir so selbst extrem viel
> Platz weg für andere normale Leiterbahnen. Wieso also sich das Leben
> erschweren?

Das ist ein Trugschluss und ist ein "wird schon irgendwie 
passen"-Faulheits-Ansatz.
Wenn man GND nicht explizit routet hat man keine Kontrolle darüber auf 
welchem Wege und mit welcher Leitungsdicke die entsprechende Stelle an 
GND angebunden ist.
Ich möchte das genau wissen und möchte mich nicht darauf verlassen, dass 
mein Bauteile "schon irgendwie" an GND landet, weil das magische 
GND-Polygon das über Umwege einmal um die Platine rum das schon 
irgendwie macht.
Deshalb route ich alles ohne Polygon und das wird am Ende drübergelegt. 
Dann kann ich immer noch Redundanzen rausnehmen, wenn ich möchte.

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.