PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 durch Atmegas "schleifen"?



Iopodx
21.07.2009, 18:25
Hiho Gemeinde,

ich habe mir folgendes zur Ansteuerung mehrerer RGB LEDs überlegt:

Je ein Atmega16 übernimmt die Ansteuerung von den R, G, B sowie einer warmweißen LED. Die warmweiße soll einfach etwas mehr "Licht ins dunkle" bringen.

Die Atmega16 haben laut Datenblatt ja schon 4 PWM onboard, es bietet sich also an diese zu nutzen.

Angesteuert werden soll der ganze Spaß via RS232 und da habe ich mir überlegt einfach dem ersten Atmega ein Signal nach dem Schema

ID - R - G - B- W zu senden.

Die ID soll einfach über Jumper / DIP Schalter und meinetwegen 8 I/O Ports gesetzt werden. Somit ergäben sich maximal 256 Clienten. Die ICs senden den Befehl, sofern die ID größer als die eigene ist einfach weiter.

Kann sowas funktionieren?

Alternativ könnte man auch einfach jeden Atmega direkt an den RS232 Bus klemmen. Eine Rückantwort ist nicht notwendig.

Liebe Grüße,
Sören

pongi
21.07.2009, 18:40
Wenn keine Rückantwort nötig ist, kannst du TX vom PC mit allen RX des MAX232 bei jedem Atmel anbinden, und das wars.

lemmings
21.07.2009, 19:02
Die Atmega16 haben laut Datenblatt ja schon 4 PWM onboard, es bietet sich also an diese zu nutzen.


Die ATtiny25 Automotive haben auch 4 PWMs :-)

Nachteil Deiner Idee:

Wenn dir ein Gerät ausfällt sind auch die anderen Geräte dahinter "weg".

Du brauchst in jedem Fall je LED-Reihe eine Regelung für den Strom, der durch für die LED geht (i.d.R. 700mA). => Stichwort Buck-Boost-Konverter
d.h. je LED einen PWM-Kanal und einen für "current sense"

Ich gehe davon aus, dass du kein feedback der lampen abwartest, die kommunikation also nur uni-direktional erfolgen muss.

Ich weiss jetzt nicht, wie gross deine Installation hinterher werden soll, aber bei zunehmender leitungslänge wird das beliebig kompliziert.
Ich gehe mal von ca. 100m² aus.

Auf Grund der Leitungslänge fällt I²C, ein 5V Netz, ... grundsätzlich aus.
Wünschenswert wäre ein 12V Netz für die Energieversorgung, da kann man so schön die vorhandenen Halogen-Trafos benutzen.
Da ich davon ausgehe, dass die Kommunikation nur zur Lampe hin erfolgt und du keine antwort brauchst, reicht dir zum Steuern eigentlich eine leitung, ggf. eine 2., um es als stromschleife zu realisieren (20mA?)

je lampen-position würde sich da aus meiner sicht anbieten, einen ATtiny24/44/84 zu verwenden.
Stromversorgung: die 12V vom Halogentrafo über einen Gleichrichter auf einen Sieb-Elko, die 5V für den µC aus den gesiebten 12 V über einen 78L05 erzeugen.
die Anbindung an die Datenleitung würde ich dann per Spannungsteiler machen

Die Datenleitung selbst würde ich mit 12V ungeregelt und 20 mA am Controller treiben.

+12V --- Opto-Koppler --- Bus --- Lampe 1 --- Lampe 2 --- Lampe x --- Bus --- 560Ohm Widerstand, 1/4 Watt - Masse

der steuernde µC kann dann über den Opto-Koppler galvanisch getrennt (und daher weitgehend ungestört) die Kommandos auf den Bus setzen

Bernhard667
22.07.2009, 17:48
Hallo,
da langweilt sich doch so ein Controller, wenn er nur 4 LED´s bedient.
Da müsste doch ein Soft PWM auf mehr oder gar allen Pins möglich sein.
Dann brauchst Du nicht so viele Controller.

Bernhard

Iopodx
22.07.2009, 18:57
Naja ich will eigentlich keine Soft PWM benutzen... Warum weiß ich auch nicht so richtig ;).

Ansonsten: So lang wird der Bus nicht. Zum einen kann ich ja via USB-RS232 Wandler einige an meinen Rechner hängen, zum anderen könnte ich mit einem myEthernet das auch direkt aus dem Ethernet holen, und Dosen hab ich fast überall im Haus.

Den Rest könnte man ja über Funk machen. Im Moment wären das erst eh einmal nur 3 Lampen.

Ich habe nur diesen Attiny mit 4 PWMs gefunden:

http://de.farnell.com/atmel/attiny25-20pu/avr-mcu-2k-flash-128b-ram-dip8/dp/1455142

Schaut interessant aus, nur ob die 2K reichen? Ich denke schon, aber viel Luft ist da nicht mehr. Aber ein 85er oder so könnte man ja auch nehmen.

Da werden die Platinen dann auch sehr übersichtlich, die Codierung könnte man ja über einen Analogen Port übernehmen, ansonsten direkt softwareseitig.

Laut Wikipedia ist bei einem 12V Pegel und unter Einsatz von Cat5 Kabel die maximale Länge bei 9200 Baud bei ungefähr 45 Metern, laut Spezifikationen.

So weit muss ich nicht unbedingt. Vielleicht 10 Meter. Und die Baudrate kann man ja auch noch weit nach unten korrigieren.

Würde somit nicht ein MAX232 am Anfang reichen?

Danke soweit!
Liebe Grüße,
Sören

Edit:// Zur Stromregelung habe ich eigentlich an ein FET und einen LM317 gedacht, 350mA sollen's werden, könnte man dann ja auch über einen zweiten gleichgroßen R parallel dann auf 700mA erhöhen.

lemmings
24.07.2009, 11:16
Ich habe nur diesen Attiny mit 4 PWMs gefunden:
http://de.farnell.com/atmel/attiny25-20pu/avr-mcu-2k-flash-128b-ram-dip8/dp/1455142
Schaut interessant aus, nur ob die 2K reichen? Ich denke schon, aber viel Luft ist da nicht mehr. Aber ein 85er oder so könnte man ja auch nehmen.

entweder die 25/45/85 mit 8 Pins (je nach Flash Bedarf) oder 24/44/84 mit 14 Pins


Würde somit nicht ein MAX232 am Anfang reichen?

Wenn du bidirektionale Kommunikation brauchst - ja, ansonsten ist es völlig oversized.

wenn das wirklich nur ein paar lampen und die auch nicht weit auseinander sind mach dir ein board mit ein paar ATtiny85 und den Endstufen für die LEDs.

Wenn Du sowieso auf das Ziel 350mA einregeln musst ist es egal, wie lang die Zuleitung zwischen Elektronik und LED ist.

Dann hast du auch das rs232 problem nicht mehr zu lösen < =P~

Software-PWM (mit flackerndem Licht) würde ich auch nicht haben wollen :-)



Zur Stromregelung habe ich eigentlich an ein FET und einen LM317 gedacht, 350mA sollen's werden, könnte man dann ja auch über einen zweiten gleichgroßen R parallel dann auf 700mA erhöhen.

FET als Enstufe ist gut, aber den LM317 brauchst du nicht.

Schick einfach den Strom zur LED durch einen 1Ohm Widerstand und miss mit dem ATtiny den Spannungsabfall am Widerstand.
100% PWM ist 350mA Strom durch die LED. Alles was du machen musst ist, das PWM-Signal so einzustellen, dass der Spannungsabfall am Widerstand 0.35V beträgt.
Damit das funktioniert brauchst du pro pwm-kanal
1x 1-Ohm Widerstand von 1/2 W
ein paar C's
einen N-Kanal MosFET
einen PWM und einen Analog-in PIN

nimm statt des ATtiny25 einen ATtiny24, der hat dann auch genug Pins :-({|=

Iopodx
24.07.2009, 21:14
Hallo,

Danke für deine ausführliche Antwort!

Ich wollte dennoch lieber einen FET verwenden, einfach falls ich mich verprogrammiere, dass meine teuren LEDs dann nicht alle sterben! Den LM317 kann ich durchmessen und dann weiß ich was bei 100% rauskommen...

Bin gerade dabei die Scahltung zu erstellen, nur weiß ich nicht wie ich vom MosFET an den LM317 soll, das funktioniert doch so gar nicht, oder?

Meine Idee war:

http://www.abload.de/thumb/rgbledg3y1.jpg (http://www.abload.de/image.php?img=rgbledg3y1.jpg)

Nicht vollständig, aber geht das theoretisch so?

Ich hab doch nicht wirklich viel Ahnung, versuche mir zwar viel anzulesen, nur selber aufbauen bringt mir mehr...

Liebe Grüße und Danke im Voraus,
Sören

lemmings
24.07.2009, 21:59
Bin gerade dabei die Scahltung zu erstellen, nur weiß ich nicht wie ich vom MosFET an den LM317 soll, das funktioniert doch so gar nicht, oder?
Meine Idee war:
http://www.abload.de/thumb/rgbledg3y1.jpg (http://www.abload.de/image.php?img=rgbledg3y1.jpg)

Nicht vollständig, aber geht das theoretisch so?

Ich hab doch nicht wirklich viel Ahnung, versuche mir zwar viel anzulesen, nur selber aufbauen bringt mir mehr...


Das PWM-Signal liegt dann auf den Gates der FETs ... ??? ... und der LM317 muss sich innerhalb der kurzen Zeit zwischen 2 Dunkelphasen auf den Strom einpegeln?

Ich glaub, das klappt so nicht...

Du willst ausserdem mit einem N-FET High-Side (also nicht GND sondern die Versorgungsspannung (wo ist die bei der zeichnung?)) regeln...

entweder N-FET und LOW-Side, P-FET und HIGH-Side oder, wenn du wirklich HIGH-Side mit N-FET machen willst du benötigst zur Ansteuerung des Gate einen Spannungspegel, der ein paar V über der Versorgungsspannung liegt.

Versuch mal bitte, dieses Beispiel (typical operation circuit) zu verstehen.

http://datasheets.maxim-ic.com/en/ds/MAX16819-MAX16820.pdf

Danach denkst du dir die Schaltung mit einem ATtiny84 (der ATtiny85 hat die PWM-Pins nicht alle parallel rausgeführt, bei maximal 3 gleichzeitig ist Schluss):

Die PWM-Pins des ATtiny steuern die Gates der N-FETs und den Spannungsabfall (den Strom) misst du an einem ADC-Pin.

such mal nach "led buck regulator pwm avr" bei google :-)

Iopodx
25.07.2009, 00:01
Leider bleiben mir deine Ausführungen zum Teil ein Buch mit sieben Siegeln :/

Aber ich habe mich jetzt noch einmal versucht... Habe mir vor allem das: http://www.sprut.de/electronic/switch/nkanal/nkanal.html noch mal zu Gemüte geführt.

Ich meine, mein Schaltplan ist vom Prinzip so wie der dortige. Kondensatoren am 7805er sind mir klar, genauso wie C's vor und nach dem FET.

http://www.abload.de/thumb/rgbled3mak.jpg (http://www.abload.de/image.php?img=rgbled3mak.jpg)

Liebe Grüße und besten Dank,
Sören

lemmings
25.07.2009, 02:00
Leider bleiben mir deine Ausführungen zum Teil ein Buch mit sieben Siegeln :/

Keiner versteht mich :cry: :cry: :cry:

=P~

Der ganze Teil auf der linken Seite (FETs und Spannungsregler) sieht für mich grob erstmal funktionsfähig aus.

Mal abgesehen davon, dass ich das anders machen würde (ja, ich verstehe deine Bedenken, die LEDs zu zerschiessen) und vorausgesetzt, man kann den LM317 so einsetzen (ich hab das Ding noch nicht benutzt - ich mach das anders :-) )

Du ziehst ja mit dem FET die Kathode der LED auf Masse und hast den LM317 zur Stromregelung in Serie ... müsstest du den LM317 samt Widerstand dann nicht umdrehen?

Wie verhalten sich die LM317 im Betrieb unter Last? werden die merklich warm?

wkrug
25.07.2009, 07:41
@Iopodx
Ich bin der Meinung, das die LM317 in dieser beschaltung nicht funktionieren werden.
Die Spannung wird ja von der Ausgangsseite her zugeführt.
Wo hast Du denn die Schaltung her ? Wurde sie schon so getestet ?
Ich würde die Schaltung von Hr. Plischka verwenden. http://www.plischka.at/Leddriver_LM3404.html

Als Schnittstelle würde ich auch nicht RS232 verwenden, sondern lieber DMX 512.

PC Interfaces gibts für DMX 512 auch, zusätzlich auch kostenfreie Software für den PC ( z.B. DMX Control ).

Das Prinzip ( Adressierung ) ist dabei eigentlich genauso, wie Du es mit RS232 vorhast. Nur sind die Clients ( maximal 32 ) da parallel geschaltet.
Die Treiberbausteine ( SN75176 ) sind auch preisgünstiger als die MAX 232 und brauchen weniger Beschaltung.

Zugegebenermassen ist das Interface etwas aufwändiger.
Ich hab mit kürzlich das von Digital Enlightenment aufgebaut - Funktioniert prima.

Protokollbedingt sind dabei bis zu 512 einzelne Lampen steuerbar, was ja auch meistens ausreicht.

Iopodx
26.07.2009, 23:36
Hiho,

also erstmal Danke für eure beiden Antworten! Ich will RS232 verwenden weil ich es einigermaßen verstanden habe. Klar ist DMX ein Protokoll mit sehr vielen Möglichkeiten, da es ja auch extra für solche Zwecke erschaffen wurde.

Ja, das mit dem LM317 dachte ich mir schon, ich wollte diese https://www.roboternetz.de/phpBB2/konstantstrom.php Schaltung verwenden.

Wie gesagt, es würde ja dann theoretisch ein MAX232 reichen, für DMX bräuchte ich mehr. Auf den Preis kommt es jetzt auch nicht soo an.

Wäre es nicht uach möglich, dass ich die FETS durch ein Darlington Array ersetze? EIN ULN2803A wäre zum Beispiel 'ne Idee, oder? Könnte dann ja auch jeweils 2 parallel schalten, dann hätte ich einen maximalen Strom von 1A...

Sehe ich das richtig, dass der dann maixmal 4A von einem PIN(9) zieht?

Liebe Grüße,
Sören...
... der die Platinen ätzen lässt und somit so wenig wie Möglich Platz ver(sch)wenden will, um möglichst viele zu haben ...

Da (http://www.ledstyles.de/ftopic8556.html) hat das schon 'mal jemand gebaut, mal abgesehen davon dass der FET nicht funktioniert und der R1 falsch ist, bin ich nicht der einzige mit der Idee.

Aber:
Er hat den LM317 "vor" dem FET, ich habe ihn "dahinter"...

Wie mache ich es nun richtig? Mit dem Darlington Array geht's ja so gar nicht...

lemmings
27.07.2009, 04:02
ULN2803A

Was spricht denn gegen FET? die D-PAK SMD Package?

willst du die LEDs auch direkt auf die Platine setzen oder sind die LEDs auf diesen STAR-Platinen?

Wenn du die LEDs direkt auf die Platine setzt hättest du die Möglichkeit, zusätzlich einen Temperatursensor direkt daneben zu platzieren. wenns zu warm wird nimmst du einfach Leistung zurück.

Die Steuerung kannst du natürlich auch per RS232 machen. die max232 haben soweit ich in Erinnerung haben je 2 sender und 2 empfängerleitungen.

viele Wege führen nach Rom :-)

Iopodx
28.07.2009, 21:47
So... Ich hab mir das ganze noch mal etwas überlegt, und bin zu dem Schluss gekommen, dass die Schaltung so richtig sein sollte. 470µF pro Kanal, sowie ein 7805er + MAX232 kommen auf die Motherboards für je 5 Platinen.

Ich kann leider kein SMD löten, bzw. traue es mir nicht zu. Ist so einfach einfacher :]

Habe noch 'ne Frage: Wie löte ich z.Bsp. ein TO-220 auf eine obere Leiterbahn? Oder sind die dann durchkontaktiert?

Achso, welcher Port ist dann eigentlich für RxD geeignet?

Liebe Grüße,
Sören

http://www.abload.de/thumb/rgbled2urh0.jpg (http://www.abload.de/image.php?img=rgbled2urh0.jpg)

lemmings
28.07.2009, 22:29
OK, kann ich verstehen.
Wenn du gut konventionell löten kannst sollte SMD bis zu einem gewissen Grad aber trotzdem einfach sein. es muss ja zum Anfang kein 100 Pin BGA sein.
versuchs einfach mal, es gibt so viele neuere bauteile nur noch in SMD, die bleiben dir sonst verschlossen.
wenn du jetzteine platine fertigen lassen willst ist das sicher keine gute idee zum Üben, die Misserfolge werden sonst zu teuer.




:-)
per SMD? einfach keine löcher bohren bzw. SMD-Pads verwenden.
dir wird dann aber auffallen, dass die Pin-Abstände der gleichen Bauteile als SMD kaum kleiner sind.

durchkontaktiert sind nur bohrungen. bei der platinenfertigung werden erst die löcher gebohrt, dann erst durchkontaktiert. löcher, die nicht durchkontaktiert werden sollen müssen beim Durchkontaktieren abgedeckt werden.

[quote="Iopodx"Achso, welcher Port ist dann eigentlich für RxD geeignet?

beim ATtiny 24: jeder ausser GND und VCC. der ATtiny hat keinen USART, d.h. du musst
das ganze serielle Protokoll softwaretechnisch lösen.

[quote="Iopodx" Screenshot [/quote]

bitte grafiken aus eagle schaltplänen in eagle selbst exportieren (datei - exportieren - image).
einerseits wird's dann kleiner und besser, andererseits vermeidest du damit auch den möglichen stress mit irgendwelchen künstleragenturen wegen "nicht autorisierter veröffentlichung von urheberrechtlich geschütztem material" :-b


Ansonsten: trenn die Versorgungsspannung der LEDs von den 5V - oder willst du dir auch noch ein 5v / 30A Netzteil bauen?

Iopodx
28.07.2009, 22:46
Ahh okay, hab bei Speichern gesucht... Aber das fetzt natürlich ein ;)


Ich hoffe ja, dass mein Schaltplan richtig ist, darum veröffentliche ich den ja. Das Layout dann auch noch mal. Kaputtlöten werde ich wahrscheinlich nichts, dazu habe ich schon genug Erfahrung.

Du hast recht - von MAXIM gibts auch einige 350mA LED Treiber, auf die man nur noch das PWM Signal hauen muss, eventuell verwende ich auch so einen... Nur ich glaube ein 16TQFN ist auch nicht das Beste um zu üben...

Achso, stimmt... Dann wirds wohl eher kein ATtiny, sondern 'was größeres..

Ansonsten: Ich meine ich habe das schon getrennt. + und - von den LEDs werden getrennt herausgeführt, VCC ist die Versorgungsspannung für die LEDs, der ATtiny hat seinen eigenen Pin auf der Leiste...

Danke soweit!

Poste dann nochmal mit was geeigneterem... Hoffe ich finde da was