PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SMD RGB LED´s mit PWM; ATmega168 / Probleme mit dem EEprom



Klingon77
21.02.2009, 16:01
hi,

ich möchte gerne mehrere parallel geschaltete RGB-LED´s mit jeweils 20mA/Farbe per Software-PWM bei einem ATmega8 automatisiert in den drei Grundfarben (RGB) dimmen.

Es soll für eine Beleuchtung mit "Regenbogen-Farbverlauf" sein.


Was mir noch ein wenig zu schaffen macht (bin AVR-Neuling) ist das Prinzip.
Um den entsprechenden Syntax kümmere ich mich dann beim Programmieren.



Dazu benötige ich einen Timer (Timer 0; zählt bis 255 und dann erfolgt der Überlauf)

Bei einem 8 MHz Quarz bekomme ich mit einem Prescale von 64 eine Frequenz von: 8.000.000/64/256/ = 488 Hz.

Beim Überlauf wird eine Interrupt aufgerufen in dem eine Variable (z.B: 8-Bit) hochgezählt wird.

Diese Variable ist mein Zähler!


In der Interruptroutine werden Variablen für "R"; "G"; "B" mit dem Zähler verglichen (IF; THEN; ELSE).
Ist der Zähler niedriger als die Variable für die LED-Farbe wird der Port für die entsprechende LED eingeschaltet.
Ist der Zähler höher als die Variable für die LED-Farbe wird der Port für die entsprechende LED ausgeschaltet.

Die Variable für die LED kann ich dann im Hauptprogramm setzen.


Richtig so? oder habe ich noch einen elementaren Denkfehler?




Könnte ich als "Leistungsteil" für die LED´s einen einfachen Darlington Transistor z.B:

BD 675 A NPN TO225 AA 45 V 4 A

verwenden oder gehört da mehr dazu?
Pro Leistungsstufe (Farbe) sollen max. 50 LED´s zu je 20mA geschaltet werden.



Mal Dank für eure Hilfe \:D/


liebe Grüße,

Klingon77

Mixxer
21.02.2009, 17:04
Hallo,

vom Prinzip her richtig (siehe z.B. Assembler-Tutorial bei mikrocontroller.net)
Allerdings musst du deinen Takt nochmal durch 256 (bei 8 bit) teilen.
Somit wäre die Frequenz zu niedrig - mehr als 100 Herz solltens schon sein damit die LED bei niedrigem Tastverhältnis auch nicht bklinkt!

Für die Leistungstreiber kannst du auch n Transistorarray nehmen(Wenn der gegen GND schaltet kannst du die LED-Spannung erhöhen.
Ansonnsten könnte man noch n MosFET nehmen!

MFG Mixxer

Klingon77
21.02.2009, 17:29
hi,

mal Dank für die rasche Bestätigung.

Das Vorgehen habe ich aus dem AVR-Tutorial abgeleitet.

Die Formel für die Frequenzberechnung wäre dann:

Quarztakt / Prescale / 8-Bit Timer / 8 Bit Variable?

Richtig so?


Wenn ich bei dieser Formel rechne könnte ich auch:

8.000.000 / 1 / 256 / 256 = 122 Hz.

Bleibt denn dann noch Rechenzeit für das Hauptprogramm?


liebe Grüße,

Klingon77

Mixxer
21.02.2009, 17:38
Hallo,

Ja, so kannst du die PWM-Frequenz berechnen.

Es wird dann alle 256 Takte die Interrupt-Routine für die SW-PWM aufgerufen. Die ist normal sehr schlank (variable hochzählen, 3x vergleichen) und braucht nur wenige Takte. Den Rest kann der AVR im Hauptprogramm arbeiten!

Was für einen AVR möchtest du verwenden?
Bei nem Mega88 z.B. könnte die PWM mit Hardware gemacht werden (der hat 6 Kanäle)

MFG Mixxer

Klingon77
22.02.2009, 09:49
hi,

nun habe ich mir den Atmega88 angeschaut.
6 x PWM; feine Sache.


Als ich dann weitergeschaut habe sah ich den ATmega168.

16 KB Flash
23 I-O Port´s
1 * 16 Bit Timer
2 * 8 Bit Timer
20 MHz Taktfrequenz möglich
Kostet bei Conrad 5€; gibt es sicherlich auch günstiger.

Wie wäre es damit?


Was ich möchte (Pflichtenheft):

* RGB-LED´s in den einzelnen Farben unhabhängig voneinander mit PWM reglen.
* 3-5 Taster zur Eingabe anschließen
* 1 vierzeiliges LCD-Display zur Ausgabe anschließen und betreiben.

Das sollte doch mit dem ATmega168 möglich sein?


liebe Grüße,

Klingon77
(der nun noch ein wenig über Hardwar-PWM lesen muß, damit er weiter fragen kann).

Mixxer
22.02.2009, 10:13
Hallo,

Atmel`s sind bei Conrad sowieso viel teurer als anderswo. Schau mal bei Reichelt oder CSD, da sind die viel günstiger!

Ja, das ist mit nem ATmega168 leicht möglich. Es würde auch ein Mega88 oder Mega48 reichen. Für so ein Projekt ist normal nicht viel Flash nötig.

MFG Mixxer

Klingon77
22.02.2009, 10:52
hi,

mal Dank für Deine Hilfe \:D/

Nun werde ich nochmal ein wenig lesen und mich dann gerne nochmal melden.


liebe Grüße,

Klingon77

oberallgeier
22.02.2009, 11:21
... sah ich den ATmega168 ... gibt es sicherlich auch günstiger ... Wie wäre es damit ...Mein Standard-(Lieblings-)controller ist der m168. Auch wenn der bei mir manchmal etwas oversized verwendet wird. Softwaremässig ist es pflegeleichter, wenn man erst mal die verschiedenen hardwarespezifischen Routinen griffbereit hat. Der ATMEGA168-20PU (und der ~AU --- aber ich glaub nicht, daß Du Dir den antun willst) kosten beim CSD aktuell 275. Versandkosten sind dort niedrig, vermutlich um 3.- und Mindermengen kennt er nicht.

Ein LCD habe ich schon daran betrieben (dieses Zweizeiligen von Andree-HB) - braucht gerade mal sieben Portpins. Dazu könnte ich Dir helfen. Es blieben also noch 11 Pins (bzw. 13 Pins wenn Du kein USART brauchst) übrig.

Klingon77
22.02.2009, 11:22
hi,

mal Dank für Eure Hilfe \:D/

Nun werde ich nochmal ein wenig lesen und mich dann gerne nochmal melden.


liebe Grüße,

Klingon77

Gock
22.02.2009, 12:44
Hi!
Ich kann auch nur die HardwarePWM empfehlen. Damit wird das fast ein 3-Zeiler:
Timer aktivieren und einstellen (einmal in der Init)
OutPutCompare Unit aktivieren und einstellen (einmal in der Init)
IRQs initialisieren (einmal in der Init)
Und dann brauchst Du nur noch entsprechende Werte in die OCR-Register zu schreiben, um das Tastverhältnis einzustellen. Das kann zu jeder Zeit geschehen.
Die Sache benötigt im Hauptprogramm auschließlich die Zeit zum Ändern der OCRWerte.
Dafür würde auch der Mega8 ausreichen, weil Du ja nur 3 PWM Kanäle brauchst. Allerdings musst Du prüfen, ob du die Pins nicht noch für was anderes brauchst und Du dann doch lieber den Mega88 nimmst.
Der Transistor sollte gehen (Basisvorwiderstand nicht vergessen), ein FET, zB IRL3803 wäre auch ok, dann wird auch nichts warm. Mit einem Widerstand vor zwischen Gate und µCAusgang (zB 200Ohm) und von Gate nach GND (10k). Beim BD sind es schon rund 3Watt, die Du wegkühlen musst, wenn ich das auf die schnelle richtig gelesen habe.
Gruß

Netzman
22.02.2009, 14:05
Falls es noch aktuell ist, im jetzigen Elektor wird ein RGB-Led PWM Chip vorgestellt. Er besitzt 3 integrierte Wandler, hat dadurch einen Versorgungsspannungsbereich von 2,7 - 5V, treibt RGB Leds mit einem Strom von insgesamt maximal 180mA mit Full Duty Cycle PWM mit jeweils logarithmischen 16 Stufen (kann also 4096 Farben darstellen), kennt 2 Betriebsmodi (Absolut R+G+B, R+G+B und Gesamthelligkeit) und wird über ein 1Draht Protokoll gesteuert. Der AAT3129 braucht jediglich noch 4 1µF Kondensatoren. Beispielcode für AVRs ist auch im Elektor abgedruckt.
Ein recht interessanter IC wie ich finde.

mfg

TomEdl
22.02.2009, 14:42
Hallo!

Meine Methode der Software-PWM sieht so aus:



'Name:.............Soft-PWM
'Version:..........1.0a
'Datum:............19.02.2009
'Autor:............Thomas Edlinger
'---------------------------------
'Beschreibung: Software-PWM mit 3 Kanälen.
'
' Version 1.0a: Es wird ein weicher Übergang zwischen den einzelnen
' Kanälen erzeugt. Bei entreteten einer High-Low-Flanke
' an PC6 wird die Geschwindigkeit der Übergänge schneller.
'
' Pinbelegung:
' ###########################
' # LED rot: A=PB1 | K=PB0 #
' # LED gelb: A=PA0 | K=PB3 #
' # LED grün: A=PA3 | K=PA2 #
' # Taster: 1=PC7 | 2=PC6 #
' ###########################


$regfile = "m32def.dat"
$crystal = 8000000


'KONFIGURATION PORTS
Config Portb = Output
Config Porta = Output
Config Portc.7 = Output
Config Pinc.6 = Input
Portc.6 = 1
Portb.0 = 0
Portb.3 = 0
Porta.2 = 0
Portc.7 = 0


'ALIAS-ADRESSEN
Led1 Alias Portb.1
Led2 Alias Porta.0
Led3 Alias Porta.3
Taster Alias Pinc.6


'KONFIGURATION ENTPRELLROUTINE
Config Debounce = 50


'KONFIGURATION TIMER
Config Timer0 = Timer , Prescale = 8

Config Timer1 = Timer , Prescale = 1
On Timer1 Timer1_isr
Start Timer1
Enable Timer1


'VARIABLEN
Dim Led1_value As Byte
Dim Led2_value As Byte
Dim Led3_value As Byte
Dim Programm As Byte
Dim Richtung1 As Bit
Dim Richtung2 As Bit
Dim Richtung3 As Bit
Dim A1 As Bit
Dim A2 As Bit
Dim A3 As Bit
A1 = 1


'INTERRUPTS GLOBAL FREIGEBEN
Enable Interrupts


'### HAUPTSCHLEIFE ###
Do

If Led1_value <= Timer0 Then Led1 = 0 Else Led1 = 1
If Led2_value <= Timer0 Then Led2 = 0 Else Led2 = 1
If Led3_value <= Timer0 Then Led3 = 0 Else Led3 = 1

Debounce Taster , 0 , On_taster , Sub

Loop


'### UNTERROUTINEN ###
Timer1_isr:

If Programm = 0 Then
If A1 = 1 Then
If Richtung1 = 0 Then Incr Led1_value Else Decr Led1_value
If Led1_value = 200 Then Richtung1 = 1
If Led1_value = 10 Then Richtung1 = 0
End If
If A2 = 1 Then
If Richtung2 = 0 Then Incr Led2_value Else Decr Led2_value
If Led2_value = 200 Then Richtung2 = 1
If Led2_value = 10 Then Richtung2 = 0
End If
If A3 = 1 Then
If Richtung3 = 0 Then Incr Led3_value Else Decr Led3_value
If Led3_value = 200 Then Richtung3 = 1
If Led3_value = 10 Then Richtung3 = 0
End If
If Led1_value = 90 And Richtung1 = 0 Then A2 = 1
If Led2_value = 90 And Richtung2 = 0 Then A3 = 1
If Led3_value = 90 And Richtung3 = 0 Then A1 = 1
If Led1_value = 10 And Richtung1 = 1 Then A1 = 0
If Led2_value = 10 And Richtung2 = 1 Then A2 = 0
If Led3_value = 10 And Richtung3 = 1 Then A3 = 0
End If

If Programm = 1 Then
If A1 = 1 Then
If Richtung1 = 0 Then Incr Led1_value Else Decr Led1_value
If Led1_value = 200 Then Richtung1 = 1
If Led1_value = 10 Then Richtung1 = 0
End If
If A2 = 1 Then
If Richtung2 = 0 Then Incr Led2_value Else Decr Led2_value
If Led2_value = 200 Then Richtung2 = 1
If Led2_value = 10 Then Richtung2 = 0
End If
If A3 = 1 Then
If Richtung3 = 0 Then Incr Led3_value Else Decr Led3_value
If Led3_value = 200 Then Richtung3 = 1
If Led3_value = 10 Then Richtung3 = 0
End If
If Led1_value = 90 And Richtung1 = 0 Then A2 = 1
If Led2_value = 90 And Richtung2 = 0 Then A3 = 1
If Led3_value = 90 And Richtung3 = 0 Then A1 = 1
If Led1_value = 10 And Richtung1 = 1 Then A1 = 0
If Led2_value = 10 And Richtung2 = 1 Then A2 = 0
If Led3_value = 10 And Richtung3 = 1 Then A3 = 0
Timer1 = 50000
End If


Return


On_taster:

Incr Programm
If Programm = 2 Then Programm = 0

Return


End


Interessant ist nur die Do-Loop-Schleife. Der restliche Programmteil dient nur zum ändern der Helligkeitswerte.

MfG
Thomas
;)

Klingon77
24.02.2009, 19:15
hi,

SORRY; beim letzten Posting hatte ich leider nicht die Zeit auf eure vielfältige Hilfe einzugehen.


Nun habe ich mich entschieden:

Ich möchte gerne den ATmega 168 verwenden.
Der ist zwar für die Aufgabe "oversized" aber da ich mich auch in das Thema "ATmega" einarbeiten möchte ist das wohl ein kleines hübsches Projekt zu Beginn.
Der ATmega 168 bietet auch die Möglichkeit für weitere Projekte; er ist etwas größer und Leistungsstärker als der ATmega8.

Nun habe ich begonnen eine Platine nach dem Vorbild von AndreeHB´s SNUG-Board zu entwickeln.
Darauf soll der Mega168; aber ohne Spannungsstabilisierung.
Mal Dank an dieser Stelle für die Baugruppe, welche mir den Einstieg wirklich leicht macht \:D/


Wenn der ATmega168 dann mal läuft geht es weiter; mit entsprechenden Vorwiderständen kann ich dann z.B: 3 LED´s direkt stecken und schon mal an der Programmierung üben.

Dann noch ein Leistungsteil auf eine separate Platine.


Im "Endstadium" möchte ich gerne alles auf eine Platine bringen und weitestgehend mit SMD bestücken (träumen ist explizit erlaubt :idea: :mrgreen: ).

Zum lernen ist ein modularer Aufbau im 2,54mm Raster leichter.



@Oberallgeier:
Auf Deine Hilfe komme ich gerne zurück, wenn es hakelt.
Schön zu wissen, daß man nicht im Regen steht \:D/




...
Ich kann auch nur die HardwarePWM empfehlen.
...


Das habe ich nun eingesehen (habe ein wenig gelesen).
Ich möchte es nun auch gerne so machen, wie Du vorgeschlagen hast.



...
ein FET, zB IRL3803 wäre auch ok, dann wird auch nichts warm.
...
Beim BD sind es schon rund 3Watt, die Du wegkühlen musst, wenn ich das auf die schnelle richtig gelesen habe.
...
Gruß

Das macht Sinn.



Was ich bräuchte:

Eine Leistungsstufe mit welcher ich zwischen 1 und 50 LED´s a´ 20mA schalten kann.
Je nach Bedarf.
Der Transistor müsste also genau so funktionieren wie ein Relais.
Die angepeilte PWM-Frequenz sollte so um die 250 Hz liegen. Dann wird sie auch von den allermeisten Tieren nicht mehr als störend empfunden.
Bienen beispielsweise können noch Frequenzen von über 100Hz auflösen und als Flackern wahrnehmen.

Geht das mit FET´s ?



Mit dem BD675 (Darlington) habe ich früher schon gebastelt; da habe ich ein wenig Erfahrung.

Von den FET´s kenne ich nur das Grundprinzip.

Muß ich z.B. den Vorwiderstand für eine unterschiedliche Anzahl von LED´s jeweils neu berechnen?
Oder würde eine Baugruppe den Bereich von 20mA - 1000mA komplett abdecken können.

Ich würde auch gerne einen FET nehmen, der einen höheren Strom verträgt. Im Maschinenbau ist es so, daß die Bauteile länger halten wenn sie nicht bis an Ihre Grenzen belastet werden. Das sollte in der Elektronik ähnlich sein, denke ich.

Ist die Frequenz von ca. 250 Hz überhaupt mit dem AVR machbar?
Nach dem, was ich bisher gelesen habe sollte es gehen; insbesondere bei Hardware-PWM.

Bei den FET´s gibt es mitunter Probleme mit der kompletten Sperrung bei höheren Frequenzen (kurzzeitiger Kurzschluß mit hoher Wärmeentwicklung). Ich glaube aber, daß diese Probleme jenseits der erhofften 250 Hz liegen.




@Netzman:
Der Baustein ist sicherlich interessant.
"Nebenziel" ist es aber mich in die AVR´s ein wenig einzuarbeiten.
Deshalb: "Dank für den Tip" \:D/
Ich möchte gerne eine "konventionelle" Lösung aufbauen um auch an dieser zu lernen.




@TomEdl:
Mal Dank für das wirklich ausführliche Software-Konzept.
Das hat mir schon mal einen kleinen Einblick gegeben.
Vieles konnte ich direkt anhand Deines Beispiels nachvollziehen.
Mit solcherart Vorgabe kann ich gut lernen.
Ich verwende diese und ändere jeweils einzelne Parameter ab. Dann kann ich die Auswirkungen beobachten und das Ganze mit dem Datenblatt (soweit mein englisch reicht) abgleichen.




Nochmals Dank für eure Hilfe \:D/

liebe Grüße,

Klingon77

Gock
24.02.2009, 21:22
Geht das mit FET´s ?

Das ist kein Problem. Erst bei mehreren Kilohertz tritt das Problem der Umladung der GateKapazität in Erscheinung. Dafür braucht es nämlich Leistung, die aus dem µCAusgang kommen muss.



Muß ich z.B. den Vorwiderstand für eine unterschiedliche Anzahl von LED´s jeweils neu berechnen?
Oder würde eine Baugruppe den Bereich von 20mA - 1000mA komplett abdecken können.

Der Vorwiderstand am FET begrenzt nur den Ladestrom und verhindert Reflexionen in der Leitung. Er ist immer gleich und sollte so niedrig wie möglich sein, ohne dass Reflexionen auftraten. 200 -300 Ohm ist meist ein guter Wert. Der Bereich wäre also vollkommen abgedeckt. Dies hängt ohnehin von der Verschaltung der LEDs ab. Bei so vielen, kann es Sinn machen, mehrere in Reihe zu schalten und nur einen Vorwiderstand zu wählen, weil an jedem Vorwiderstand Leistung abfällt. Man kann so auch die benötigte Spannung an die der Quelle besser anpassen. Je nach bedarf schaltet man dann mehr oder weniger solcher Stränge parallel. Das müsstest Du vorher entscheiden.



Ich würde auch gerne einen FET nehmen, der einen höheren Strom verträgt. Im Maschinenbau ist es so, daß die Bauteile länger halten wenn sie nicht bis an Ihre Grenzen belastet werden. Das sollte in der Elektronik ähnlich sein, denke ich.

Das ist prinzipill gut, aber der IRL3803 schafft dauerhaft rund 110A, das sollte doch reichen, oder? Den hohen Strom bezahlt man mit einer hohen Gatekapazität (...), die aber in diesem Fall nicht ins Gewicht fällt. Es ginge also auch ein viel kleinerer.



Ist die Frequenz von ca. 250 Hz überhaupt mit dem AVR machbar?
Nach dem, was ich bisher gelesen habe sollte es gehen; insbesondere bei Hardware-PWM.

ZB bei 8MHz wird der Controller außerst müde werden... In welcher Sprache programmierst Du eigentlich???



Bei den FET´s gibt es mitunter Probleme mit der kompletten Sperrung bei höheren Frequenzen (kurzzeitiger Kurzschluß mit hoher Wärmeentwicklung). Ich glaube aber, daß diese Probleme jenseits der erhofften 250 Hz liegen.

SIehe oben. Es ist aber gerade KEIN Kurzschluss, sondern ein zu hoher Widerstand, der den FET erwärmt, eben weil seine Gatekapazität noch nicht ge- oder entladen ist. Um das sicher zu umgehen, kann man einen MOSFET Treiber nutzen. Ist aber unter zig kilohertz nicht nötig. Die Entladezeit wird durch den Widerstand von Gate nach Masse bestimmt.
Gruß

Klingon77
24.02.2009, 22:12
hi Gock,

mal Dank für die rasche Hilfe :mrgreen:


Die LED´s werden (leider) alle einzeln mit Vorwiderstand verschaltet.
Die einseitige Platine für die RGB SMD LED darf nur 7,7 mm breit werden.
Da nun ein "Strangstrom" von bis zu 1A fließt (bis 50 LED´s) muß ich eine gewisse Breite einhalten.
Ich verwende zwar "70 mü" Platinen, möchte die zusätzlichen 35 mü aber als "Sicherheit" vewenden.
Meine Recherchen zeigten daß bei 35 mü Kupferauflage ein max. Strom von ca. 1A fließen darf.
Meine schmalste Leiterbahn ist ca. 0,8mm breit; dafür aber dann die 70 mü dicke Kupferschicht.


Der IRL3803 mit 110A sollte sicher reichen \:D/


Der ATmega 168 möchte ich mit 16 MHz betreiben.
Programmiert werden soll in BASIC (Bascom).


Nochmals Dank für Deine Hilfe.
Nun habe ich nicht nur einen "Ansatz" sondern schon fast eine fertige "Treiber-Lösung".


liebe Grüße,

Klingon77

TomEdl
25.02.2009, 09:39
@TomEdl:
Mal Dank für das wirklich ausführliche Software-Konzept.
Das hat mir schon mal einen kleinen Einblick gegeben.
Vieles konnte ich direkt anhand Deines Beispiels nachvollziehen.
Mit solcherart Vorgabe kann ich gut lernen.
Ich verwende diese und ändere jeweils einzelne Parameter ab. Dann kann ich die Auswirkungen beobachten und das Ganze mit dem Datenblatt (soweit mein englisch reicht) abgleichen.

Bitte gerne. Wenn etwaige Fragen zum Programm auftauchen sollten, frag einfach. ;)

Grüße
Thomas

Klingon77
12.03.2009, 01:34
hi,

nach einem kurzen Zwischenspiel:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=46754&highlight=

schlich ich mich heute Abend in die Werkstatt und bastelte etwas weiter.



Die Welt der PWM`s erschließt sich mir nun langsam.
Nach vielem Lesen im Buch von Roland Walter, dem Netz, Datenblatt, einiger Beispielprogramme, sowie eurer tatkräftigen Hilfe :idea: konnte ich 3 LED´s aufeinanderfolgend mit unterschiedlicher Geschwindigkeit aufleuchten und ausfaden lassen \:D/


Anbei das kleine Programm, welches ich "verzapft" habe.

Falls Ihr Fehler entdecken könnt, lasst es mich bitte wissen.
Es sind mir noch nicht alle Aspekte meines "Geschreibsels" bis in´s letzte Detail klar.
Insbesondere die Register machen mir da noch etwas zu schaffen.
Es scheint ja eben dort sehr viele Kombinationen zu geben; je nachdem, welches Bit gerade gesetzt ist.
Deshalb habe ich mich auf die "Bascom-Variante" festgelegt (vorerst).



'Hardware PWM Lauflicht by Klingon77
'12.März 2009


$regfile = "m168def.dat" 'Compilerdefinition
$crystal = 16000000 'Quarzfrequenz


'PWM Ausgabepins
Rot Alias Ocr0a 'PD 6
Gruen Alias Ocr0b 'PD 5
Gelb Alias Ocr2b 'PD 3

'Laufvariablen für Farbwechsel (256 Stufen)
Dim Laufrot As Byte
Dim Laufgruen As Byte
Dim Laufgelb As Byte

'Pausenwert in "mS" während der Farbwechselschleifen (max: 65535 mS)
Dim Pauserot As Word
Dim Pausegruen As Word
Dim Pausegelb As Word

'Ports initialisieren:
Ddrb = &B00000000 'PB alle Eingang
Ddrc = &B00000000 'PC alle Eingang
Ddrd = &B01101000 'PD3, PD5 & PD 6 Ausgang; Rest Eingang

'Timer einstellen(Timer 0 & 2 sind 8-Bit Timer):
'
'Timer0 auf PWM stellen
'Timer0 PWM Ausgabe A(PD 6) & B (PD 5) einstellen
'Clear Down; LED wird mit höherem Variablenwert heller
'Vorteiler = 8
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8

'Timer2 auf PWM stellen
'Timer2 PWM Ausgabe A(PD 3) einstellen
'Clear Down; LED wird mit höherem Variablenwert heller
'Vorteiler = 8
Config Timer2 = Pwm , Compare B Pwm = Clear Down , Prescale = 8

Enable Timer0 'Timer0 starten
Enable Timer2 'Timer2 starten



Do 'Endlosschleife: Beginn

Pauserot = 2 'Pausenzeit im roten Farbwechsel
Pausegruen = 4 'Pausenzeit im grünen Farbwechsel
Pausegelb = 6 'Pausenzeit im gelben Farbwechsel

'---------------------------------------------------

For Laufrot = 1 To 255 'PWM Wert hochzählen
Rot = Laufrot ' Ocr0a (PD 6) = Laufrot-Wert
Waitms Pauserot 'Pause für ROT entsprechend Variable
Next Laufrot 'Nächster "Step" in der Schleife

For Laufrot = 254 To 1 Step -1 'PWM Wert runterzählen
Rot = Laufrot ' Ocr0a (PD 6) = Laufrot-Wert
Waitms Pauserot 'Pause für ROT entsprechend Variable
Next Laufrot 'Nächster "Step" in der Schleife

'---------------------------------------------------

For Laufgruen = 1 To 255 'PWM Wert hochzählen
Gruen = Laufgruen ' Ocr0b (PD 5) = Laufgruen-Wert
Waitms Pausegruen 'Pause für GRÜN entsprechend Variable
Next Laufgruen 'Nächster "Step" in der Schleife

For Laufgruen = 254 To 1 Step -1 'PWM Wert runterzählen
Gruen = Laufgruen ' Ocr0b (PD 5) = Laufgruen-Wert
Waitms Pausegruen 'Pause für GRÜN entsprechend Variable
Next Laufgruen 'Nächster "Step" in der Schleife

'---------------------------------------------------

For Laufgelb = 1 To 255 'PWM Wert hochzählen
Gelb = Laufgelb ' Ocr2a (PD 3) = Laufgelb-Wert
Waitms Pausegelb 'Pause für GELB entsprechend Variable
Next Laufgelb 'Nächster "Step" in der Schleife

For Laufgelb = 254 To 1 Step -1 'PWM Wert runterzählen
Gelb = Laufgelb ' Ocr2a (PD 3) = Laufgelb-Wert
Waitms Pausegelb 'Pause für GELB entsprechend Variable
Next Laufgelb 'Nächster "Step" in der Schleife

'---------------------------------------------------

Loop 'Endlosschleife: zum Schleifenanfang



End 'Programmende (da Endlosschleife nicht benötigt)


Fotos gibt es leider noch keine, da meine Werkstatt zur Zeit aussieht wie ein Schlachtschiff nach der "Schlacht um Midway" :-b

Wenn ich das Ganze etwas sauberer aufgebaut habe und mal wieder zum aufräumen komme werden sie prompt nachgelierfert.


Nochmals Dank für eure Hilfe bis hierher \:D/


liebe Grüße,

Klingon77



Nachtrag:
Den Threadtitel habe ich angepasst.
Falls jemand ähnliche Probleme hat, findet er auch was in der SUFU.

Klingon77
13.03.2009, 02:33
hi,

nun läuft ja meine PWM halbwegs \:D/

Bleibt noch der Treiberteil.
Ich wollte die Schaltung später gerne in SMD Bauweise realiseren.
Kann ich statt des von @Gock: vorgeschlagenen "IRL3803" im TO220 Gehäuse auch den "IRL 2203 NS" im "D2PAK (P-TO263)" nehmen?
Anbei mal ein paar teschnische Daten:

IRL 2203 NS
30 V/92 A
ID &commat; 25°C: 116 A
ID &commat; HighTemp: 82 A
Rth max.: 0.9 °C/W
UBR DSS: 30 V
Gehäuse: D2PAK
RDS(on): 0.007 Ω

Der Innenwiderstand beträgt 7mΩ.
Die Last max. 1A bei 5V (die LED´s haben alle einen eigenen Vorwiderstand).
Die Wärmeentwicklung sollte da doch keine Rolle spielen?
Die PWM-Frequenz möchte ich auf ca. 200Hz - 300 Hz auslegen.
Bei meinem kleinen Programm oben habe ich noch nichts gerechnet.
Dafür war es so um 1:30 Uhr doch ein wenig zu spät.

Ändern sich der Widerstand zwischen Port und Gate?


Über die Reflektionen habe ich gelesen.
Wenn ich das richtig verstehe handelt es sich dabei um ein hochfrequentes "Aufschaukeln" welches sogar HF Störungen verursachen kann?
Weiterhin las ich das ggf. eine Spule zwischen Port und Gate die bessere Wahl ist?
Das HF-"Aufschaukeln" kommt wohl durch die geringe Kapazität des FET`s?


Fragen über Fragen; aber ich glaubte kurz einen kleinen "Lichtschein am Horizont" zu sehen... O:)


liebe Grüße,

Klingon77

Gock
13.03.2009, 12:26
Der 2203 ist sogar noch besser, er hat nur die halbe Eingangskapazität.
Der R zwischen Port und Gate ist relativ unkritisch, 200 Ohm sollten gehen. Ist er zu groß, wird der FET warm, ist er zu klein, kann es Störungen geben oder der µC wird überlastet (unwahrscheinlich bei diesem FET).
Die Störungen wiederum können den FET auch erwärmen lassen, weil er dadurch nicht mehr sauber durchschaltet. Je länger er eine zu niedrige Vgs hat, desto länger fällt unnötig Leistung an ihm ab und er erwärmt sich.
Hochfrequentes "Aufschaukeln" geschieht nur bei hochfrequenter Ansteuerung. Reflexionen gibt es auch schon bei einzelnen Pulsen.
Die Störungen kommen durch die relativ hohe Kapazität des FETs.
Ürbigens ist Deine Lösung keine HardwarePWM, sondern eine SoftwarePWM. D h, dass währenddessen Dein µC nichts mehr anderes machen kann. Die "Wait" befehle kann man vermeiden, wenn man die TimerIRQs (OCIE) benutzt.
Gruß

Klingon77
13.03.2009, 13:47
hi,

da bin ich froh, aus der Vielzahl der FET´s einen passenden ausgesucht zu haben :mrgreen:
Dann werde ich diesen bei der nächsten Bestellung dazunehmen.


Macht denn eine zusätzlich Spule zum Widerstand zwischen Gate und Port Sinn?
Zu Zeiten meiner CC-Basic habe ich recht schlechte Erfahrungen mit Störungen aus dem Netz oder aus anderer Quelle gemacht.
Er hat sich alle paar Minuten aufgehängt...




Was ich nicht verstehe:
Wieso ist meine Lösung keine Hardware-PWM?

Die PWM wird doch mit den Timern initialisiert, welche dann autonom laufen:


---------------------------------------------------------------------------------
'Timer0 auf PWM stellen
'Timer0 PWM Ausgabe A(PD 6) & B (PD 5) einstellen
'Clear Down; LED wird mit höherem Variablenwert heller
'Vorteiler = 8
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8

'Timer2 auf PWM stellen
'Timer2 PWM Ausgabe A(PD 3) einstellen
'Clear Down; LED wird mit höherem Variablenwert heller
'Vorteiler = 8
Config Timer2 = Pwm , Compare B Pwm = Clear Down , Prescale = 8
---------------------------------------------------------------------------------

Im eigentlichen Hauptprogramm (Do-Loop) werden nur noch die Zählerwerte für Ein- und Ausfaden der LED´s an die Register übergeben.
Wenn ich statt dessen in der Initialisierung feste Werte vorgäbe könnte ich eine LED z.B: dauerhaft mit 50% laufen lassen.
Interrupts sind alle aus und es wird auch kein Unterprogramm vom Hauptprogramm angesprungen.

Nun glaubte ich die Hardware-PWM halbwegs verstanden und umgesetzt zu haben; Essig ist... :cry: :oops:
Da müsste ich dann nochmals "nachsitzen" #-o

Das mit dene Timer-IRQ´s (OCIE) muß ich mir nochmals durchlesen.
Momentan gibt es so viel an Input aus allen Richtungen daß ich mitunter nicht immer die passenden Verknüpfungen ziehen kann...


Nochmals Dank für Deine/Eure Hilfe,

Klingon77

Gock
13.03.2009, 15:12
Sorry, anscheinend habe ich da beim kurzen Überfliegen was falsch verstanden. Liegt wahrscheinlich daran, dass ich kein BasicSpezialist bin.
Ich hatte mich über die Waitanweisung und die Schleife gewundert, aber die benutzt Du ja nur zum Dimmen und nicht als PWM...Also ist es wohl doch eine Hardware PWM.
Wenn Du jetzt die TimerOverFlows oder OutputCaptures zählen wolltest, könntest Du Dir die waits und die schleifen sparen und Rechenzeit frei machen, indem Du alle x Zählungen den OCR Wert veränderst.
Aber das ist nur eine Anregung.
Eine Spule halte ich für unnötig, weil ein Widerstand ausreicht.
Viel Spass noch.
Gruß

Klingon77
13.03.2009, 16:25
hi,

freut mich, daß mein "Weltbild doch nicht wankt" \:D/

Die Spule lasse ich weg und werde es so aufbauen, wie Du geschrieben hast.

Die Sache mit dem "Overflow zählen" geht in einem Register.
Das liefe dann über eine If-Then Anweisung, nehme ich an...

Mal schauen; noch ein wenig lesen, testen, basteln; eben das, warum wir (fast) alle hier sind.


Wenn sich wieder was tut (hoffe bald) schreibe ich auch wieder was.
Diesmal auch mit Foto´s; versprochen!


liebe Grüße und ein schönes WE,

Klingon77

Klingon77
16.03.2009, 00:10
hi,

Nun kann ich auch ein paar Bilder und ein kurzes Video (16 Mb; 640x480 Pixel; 1;17 Min.) präsentieren.

Zuerst die Platinen:
die rechte enthält (nach dem Vorbild von AndreeHB´s SNUGBOARD) den Prozessor, den Quarz die Kerko´s (unter dem Prozessor), einen 100nF parallel zur Spannung und eine LED für die 5V.
Auf eine Spannungsreglung habe ich verzichtet; die kommt auf ein extra Platinchen (7805).
Die Pin´s habe ich rausgezogen so daß man sie mit 0,5mm Draht verkabeln kann.
Dabei sind die PIN`s für die Programmierschnittstelle über einen Jumper umsteckbar (zum Wannenstecker oder zu den ext. Pin´s).
Einen Reset-Taster und einen Pull-Up Widerstand für den Reset-Pin habe ich auch noch reingebastelt.
Bestückt ist das Ganze mit einem ATmega168.

Auf der linken, kreisrunden Platine befindet sich nur eine SMD-LED und drei 0805 Widerstände.

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/Platine.jpg


Nun konnte ich die Plexiglasplatte mit den gefrästen Blättern auflegen und die Farbwechsel programmieren:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/Rot-klein.jpg


http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/Gruen-klein.jpg


http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/Blau-klein.jpg


Das Video findet Ihr hier zum Download:
http://rapidshare.com/files/209692017/Farbwechsel.mp4
Es ist in MP4 konvertiert.

Eine YouTube-Version findet Ihr hier:
http://www.youtube.com/watch?v=ovdfBDQPyok

Die LED´s laufen zur Zeit noch mit ca. 11-13 mA (je nach Farbe).
Ich möchte den ATmega168, welche die LED´s direkt treibt nicht überbelasten.
Da ist also noch etwas "Luft nach oben" drinnen, was die Leuchtkraft und die Helligkeit betrifft.

Kennt jemand eine gute Bezugsadresse für Widerstände 0805 der E-96 Reihe?
1% findet man öfter aber nur in E24.
Conrad ist dann, wie immer mal wieder zu teuer...
Wenn ich passende Widerstände finde möchte ich die LED´s gerne mit 18 oder 19 mA bei 5 V betreiben.

Es soll noch, wie gesagt eine Spannungsregelung dazukommen.
Weiterhin so ca. 5 Taster, ein LCD-Display und natürlich die Treiber mit dem oben erwähnten "IRL 2203 NS".

Diese Bausteine werde ich ebenfalls auf "Platinenschnipsel" aufbringen und auf eine Grundplatte aufschrauben.
So habe ich alles schön säuberlich in kleine, überschaubare Einheiten geteilt.
Die einzelnen Komponenten werden dann mit 0,5mm Draht verbunden.

Diese "zergliederte" Bauweise ist für mich (noch) leichter zu überblicken.
Wenn ich sofort versuchte alles auf eine Platine zu bringen bekäme ich wohl ein paar Probleme.
Die einzelenen Bausteine später auf eine einzige Platine zu übertragen ist dann leichter.
Wenn möglich möchte ich dann auch in SMD arbeiten.
Den ATmega168 gibt es ja auch als SMD-Variante.

Funktionieren alle Einheiten zur Zufriedenheit kann ich die Grundplatte mit den aufgeschraubten Komponenten nehmen, Steckernetzteil (oder 9V Akku) dran, Notebook hochfahren und mich mit der Programmierung beschäftigen.
Das dann auch an jedem Ort; nicht nur in der Werkstatt.

Die einzelnen Komponenten kann man für spätere Entwicklungen weiterverwenden.

Das ist dann noch übersichtlicher als alles auf einem Steckbrett.


liebe Grüße,

Klingon77 :cry:

oberallgeier
19.03.2009, 15:33
Hi Klingon77,

hübsch geworden. Die gefrästen Platinchen sind ja schick - das sieht man wieder, was aus manchen Fertigungsverfahren herauszuholen ist. Sehr schön anzusehen.

Ich weiß nicht, welche Reihe CSD (http://www.csd-electronics.de/de/index.htm) als 0805-Widerstände verkauft. Er hat rund 130 Widerstände im Angebot, soweit ich weiß, sind die immer 1%. Vielleicht selbst mal nachsehen, ob die gewünschten dabei sind.

Klingon77
19.03.2009, 20:45
hi Oberallgeier,

Nun habe ich Vorwiderstande bei CSD bestellt.
Der Tip war gut; aber leider keine E96 Reihe.

Macht nichts.

Mit E96 wäre ich bei gerechneten 18 mA geblieben.
So sind es nun zwischen 18 mA und 19 mA pro LED.

Die 0805er Widerstände sind 1%; das hieße ich hätte noch mind. 4% für Spannungsschwankungen aus dem Netzteil bei gerechneten 19 mA und möglichen 20mA für die LED.

Die Spannung dürfte also max. bei 5, 2V liegen; das sollte mein kleines Steckernetzteil schaffen.


Die LED´s wollte ich ob ihrer Lebensdauer mit weniger Strom betreiben.




Bei der Platine habe ich mir keine "übergroße" Mühe in der Formgestaltung gegeben.
Sie sollte nur Ihren Zweck erfüllen und für weitere (zukünftige) Experimente mit dem ATmega168 zur Verfügung stehen.
Deshalb auch die 4 Bohrungen am Rand.
Sie werden noch auf 2,2mm aufgebohrt und dann kommt das gute Stück zusammen mit den anderen auf eine transportable Grundplatte.

Steckernetzteil dran, Notebook dran und schon kann ich überall an der Software "tüfteln".



Heute habe ich noch die IRL´s und ein 4x20 Zeichen LCD bestellt.
Freue mich schon darauf diese Teile in das "System" zu integrieren.



Gestern setzte ich noch eine Idee um, über die ich vor ca. 15 Jahren mal gelesen hatte:

5 Tasten an einem AD-Port.

Vorteil ist, daß man nur einen Port des Atmega verwenden muß.

Über eine fünfzeilige Abfrage (IF ADC >"X" AND <"Y" THEN Gosub...) kann man den ADC auswerten. Den Syntax kenne ich noch nicht so genau; ist nur ein Prinzipbeispiel.

Bei nur 5 Tasten und einem Auswertungsumfang von 0-256 sollte der Abstand groß genug sein um eine sichere Tastenabfrage zu gewährleisten.

Die Platine ist gefräst und bestückt.
Das Voltmeter gibt auch die entsprechend richtigen Werte aus.

Der Test am ATmega168 steht aber noch aus.
Foto´s kommen auch noch; Schaltplan habe ich leider auch noch nicht gezeichnet; hole ich aber noch nach.


Soweit für heute.


liebe Grüße,

Klingon77

oberallgeier
19.03.2009, 22:27
... Gestern setzte ich noch eine Idee um ... 5 Tasten an einem AD-Port ...Schön daß es vorangeht! Die 5-Tastenabfrage könntest Du beim RNControl 1:1 abkupfern. Dort gibt es genau diese Einrichtung! Den Schaltplan dazu (https://www.roboternetz.de/wissen/index.php/Bild:Rncontrol1.4schaltplan.gif) aus der guten Dokumentation.

Syntax kenne ich noch nicht so genau; ist nur ein PrinzipbeispielNatürlich gibts dazu auch den Code für die Tastenabfrage (https://www.roboternetz.de/wissen/index.php/RN-Control#Basic_Beispieltestprogramm) als Beispiel in Bascom. Also nur die geänderten Ports für Deinen M168 einsetzen und fertig.

Viel Erfolg

Klingon77
21.03.2009, 07:04
hi oberallgeier,

das Forum und deren Mitglieder sind ja echt toll :mrgreen:

genau das, was ich brauche; als Schaltplan (meiner sieht nicht viel anders aus; zumindest in diesem Segment) und die passende Softwar gleich dazu.

Zur Entprellung habe ich noch einen 100nF Kondensator dazugebastelt.
Mit der Entprellung muß ich mich noch ein wenig beschäftigen.
Ich habe das schon mal "angelesen".
Softwareseitige Entprellung benötigt Rechenzeit was bei den Farbverläufen evtl. negativ auffallen könnte.
Hardwareseitig muß ich nochmal nachschauen und evtl. mal meinen "alten Russen" (Oszi 2-Kanal; 5 Mhz) dranhängen und überprüfen, was ich machen kann.
Den "alten Russen" habe ich bestimmt seit mehr als 10 Jahren nicht mehr ausgepackt; wird mal wieder Zeit dafür.


Liebe Grüße und Dank für Deine Hilfe und Unterstützung,

Klingon77

Hellmut
22.03.2009, 23:21
Hallo, vermutlich eine dumme Frage. Wenn ich über die duty-cycle der PWM den Strom steuere, warum braucht die LED dann noch eine Vorwiderstand? Ich plane eine ähnliche Schaltung wie Klingon77. Das Deck eines Modellseglers soll mit vielen kleinen LEDs, 30-36 Stück, indirekt beleuchtet werden, diese sollen dimmbar sein, dürfte bei Nachtfahrten gut wirken. Die PWM Hardware dürfte mit der von Klingon77 weitgehend identisch sein.
Auf Grund der Umgebung möchte ich eine 2-Draht Leitung (GND und VCC) rund ums Deck legen, per PWM der Strom geregelt, an dieser soll genau die Vorwärtsspannung der eingesetzten LEDs anliegen. Bei jeder LED würde ich die Spannung abgreifen, die LEDs sind also parallel geschaltet. Nun würde ich gerne SMD-LEDs verdrahtet in ein Messingrohr mit "Fenster" einsetzen und an die 2-Draht Leitung anschliessen. Müssen die einen Vorwiderstand haben?

Habe ich 10 LEDs mit je 20mA Strombedarf, heisst das das die PWM-Schaltung 200mA bereitstellen muß? Ich vermute ja? Jetzt gehe ich mal von der Annahme aus eine LED geht kaputt, bekommen dann die anderen LEDs entsprechend mehr Strom? Wenn ja, wie kann ich Schaltungstechnisch erkennen wenn eine LED kaputt ist? Die PWM Schaltung müßte dann entsprechend weniger Strom in das Netz einspeisen.

Der Grund warum ich jetzt alle diese Fragen stellen muß liegt darin das ich mein Boot für ein Treffen vom Schiffsmodellforum ende Mai einsatzbereit haben will und ich jetzt im Baufortschritt die Leitungen vorsehen muß.

Danke wenn mir jemand hier Tipps gibt.

Klingon77
23.03.2009, 06:37
hi Hellmut,

bei 10 parallel geschalteten LED´s würde ich auf jeden Fall Vorwiderstände verwenden.

Aus einem meiner anderen Thread´s mit ähnlichem Problem weiß ich daß die kleinen Dinger zum Selbstmord neigen; also stark suizidgefährdet sind.

Mal angenommen Du stellst 200mA zur Verfügung und eine LED zieht statt der erlaubten 20mA volle 25mA.
Dann wird diese sehr hell leuchten und sich erwärmen.
Dadurch zieht sie noch mehr Strom.
Sie steckt in einer "suizidalen Aufwärtsspirale"...
Das geht dann solange bis sie den Hitzetod stirbt.

Die andenren 9 LED´s bekommen dann entsprechend weniger Strom.

Durch die einzelnen Vorwiderstände kannst Du das Problem umgehen.

Eine andere Variante wäre eine Reihenschaltung von LED-Gruppen oder allen 10 LED´s bei höherer Spannung.

Da kann dann jemand noch was dazu schreiben; ich denke aber das sollte funktionieren.



Mit PWM müsste man eigentlich die Spannung begrenzen können.
Ein Schaltnetzteil arbeitet ja nach dem gleichen Prinzip?
Schau doch mal nach "DA-Wandlung".
Da steckt normalerweise hinter dem Leistungstransistor noch ein Elko zum glätten der Ausgangsspannung.
Den Strom wirst Du damit aber wohl nicht begrenzen können; dieser ist für die LED´s elementar wichtig.

Die kostengünstigste und leichteste Lösung sind einfache Vorwiderstände.


liebe Grüße,

Klingon77

wkrug
23.03.2009, 07:29
Das Deck eines Modellseglers soll mit vielen kleinen LEDs, 30-36 Stück, indirekt beleuchtet werden, diese sollen dimmbar sein, dürfte bei Nachtfahrten gut wirken
Ich bin da auch der Meinung von Klingon77.
Ich würde die LED's keinesfalls ohne Vorwiderstand betreiben.
Beim Betrieb ohne Vorwiderstand wird auf jeden Fall der maximal zulässige Kurzzeitstrom für die LED's überschritten.
Wenn man dann noch eine potente Spannungsquelle, wie z.B. eine NiMh Akku hat, können die LED's sofort in die ewigen Jagdgründe eingehen.

Leg die Schaltung so aus, das der maximal zulässige Dauerstrom für die LED's nicht überschritten wird. Dann kannst Du den vollen Regelbereich der PWM's für deine Dimmgeschichte nutzen.

Bei so vielen LED's ist es aber schon sinnvoll diese in Gruppen zusammen zu fassen. Wie viele LED's dann dabei in eine Reihenschaltung können, ist von der Betriebsspannung und der Schwellenspannung der LED's abhängig.

Jede so erzeugte Reihenschaltung der LED's bekommt einen eigenen Vorwiderstand. Die einzelnen Reihenschaltungen inklusive Vorwiderstand werden dann parallel geschaltet.

oberallgeier
23.03.2009, 09:31
... Wenn ich über die duty-cycle der PWM den Strom steuere, warum braucht die LED dann noch eine Vorwiderstand? ...DASS sie ohne Vorwiderstand stirbt, haben die beiden vor mir beschrieben. Wie schnell das geht kann man in diesem Posting sehen. (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=385277#385277) Dabei ist der Vorwiderstand montiert, siehe diese Schaltung. (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=384868#384868)

Zu diesem Test hatte ich eine Modifikation mit einem Kondensator beim Transistor-Vorwiderstand gemacht, wobei der Stromanstieg der LEDs erheblich schneller wurde. Bei Anstiegsgeschwindigkeiten von rund 0,2 µs (https://www.roboternetz.de/phpBB2/viewtopic.php?p=387767#387767) (eine Seite runterscrollen) bis zum maximal eingestellten Strom kommst Du mit einer PWM wohl nicht mehr WIRKLICH mit, zumindest weiß ich nicht, welche Hardware Dir eine PWM liefert, die schneller als 5 MHz läuft *gggggg*.

Fazit: eine L ED ist keine Glühbirne. Der Stromfluss steigt so schnell an, dass der maximal zulässige Wert mit einer separaten Durchflussbegrenzung eingestellt werden muss. Der Widerstand ist so ein Durchflussbegrenzer mit praktisch beliebiger Ansprechgeschwindigkeit.

Hellmut
23.03.2009, 09:39
Danke für die schnellen Antworten. Nun im Einzelnen:
Ich hatte die Zahl 10 aus Gründen der Einfachheit der Rechnung gewählt, es sind die genannten bis zu 36 LEDs gleicher Art! Wie aus den Beiträgen zu erkennen ändern sich die Anforderung an meine Leitungsverlegung drastisch, je nach dem welche Lösung gewählt wird. Das Ganze ist im Nachhinein ohne große Folgen kaum mehr zu ändern!
@Klingon77: Die PWM hat keinen Einfluss auf die Spannung, sondern nur auf den Strom, oder irre mich mich da?
Ich gehe mal im folgenden davon aus das die PWM, wie von mir angenommen, den Strom regelt und nicht die Spannung. Die PWM erlaubt mir, abhängig von der Frekuenz, den Strom recht genau zu regeln, also ein Dimmen über den Strom bei konstanter Spannung. Wie kann ich schaltungstechnisch erkennen ob eine LED kaputt ist? Ändert sich der Widerstand, dann müsste man diesen überwachen?
@wkrug: NiMH Akkus werden eingesetzt! Du meinst also die Vorwiderstände als Deckelung des Stromes durch die LED, die PWM um zwischen dem Maximum, über die Vorwiderstände eingestellt,und Null zu regeln. Ich neigte innerlich zu der Lösung. Jetzt aber zur Beschaltung:
1. Alle in Reihe geschaltet muß wohl ausscheiden? Ist das aber nicht das Prinzip bei den LED-Bändern? In dem Fall dürfte das Ausfallen einer LED alle LEDs löschen, oder? Für die Anwendung ist das nicht mission critical. Ich müßte dan alle LEDs einzeln herausnehmen um die Defekte zu erkennen!
2. Alle parallel, jeder mit seinem Vorwiderstand:
2.1: Einen Leitungsring an den alle LEDs jeweils mit ihrem Vorwiderstand angeschlossen werden
2.2: LEDs in Gruppen in Reihe geschaltet zusamengefasst und parallel geschaltet an den Leitungsring angeschlossen.
2.3: Jede LED Gruppe mit Vorwiderstand an eine eigene PWM angeschlossen
2.4: Jede LED einzeln mit Vorwiderstand an einen Port des uC.

zu 2.: Mit Leitungsring meine ich ein Leitungspaar mit GND und VCC, dabei VCC exakt der Spannungswert der Vorwärtsspannung der LED´s.

zu 2.4: Hier müßte man die PWM realisieren, indem man mit der Interruptroutine zum Timer der Hardware PWM die Ports mit Software toggelt, das sollte doch schnell genug sein? Der Verdrahtungsaufwand maxima!
zu 2.3: Wie 2.4, jedoch reduziertem Verdrahtungsaufwand, je nach dem wieviele LEDs man in Gruppen zusammenfasst.
Bei 2.2 und 2.1 mit dem Leitungsring bleibt das Problem wie ich erkenne ob eine LED kaputt ist um dann den Strom im Leitungsring entsprechend anzupassen, richtig?

wkrug
23.03.2009, 16:35
Meine Lösung wäre eine Modifikation von deiner 2.2 Lösung.
So ein LED String, sagen wir mal aus 4 LED's kriegt einen eigenen! Vorwiderstand.
Nun können beliebig viele ( was der PWM Leistungstransistor bzw. die Spannungsquelle hergibt ) von diesen 4er Ketten mit eigenem Vorwiderstand angeschlossen werden.

Die Parallelschaltung von einzelnen LED oder auch LED Ketten ohne Vorwiderstand sollte man nicht machen - Auch wenn einige Leute behaupten das das kein Problem wäre.
LED's haben einen negativen Temperaturkoeffizienten.
Das bedeutet die LED's die ohnehin den meisten Strom ziehen werden auch am wärmsten. Durch diese Wärmeentwicklung fällt die Schwellenspannung noch weiter und der Strom durch diese LED's steigt noch weiter an.

Ich hatte mal einen Infrarot Kopfhörer Sender, bei dem die LED's zu 3er Gruppen zusammengefasst und dann einfach parallel geschaltet wurden.
Das Ergebnis - Alle 1...2 Jahre waren immer irgendwelche LED's defekt.
Als ich dann kleine SMD Widerstände in die Zuleitung jeder 3er Gruppe reingemacht hab, war der Spuk vorbei.

Klingon77
23.03.2009, 20:41
hi,

wenn ich das mit der PWM richtig verstanden habe sollte die Spannung geregelt werden.
Der Strom kann dann "beliebig" groß sein, weil der Schalttransistor immer zu 100% öffnet oder schließt (ist nun ein wenig idealistisch dargestellt).

Bitte mal um Aufklärung bezüglich der Frage von jemand der es wissen muß.
Ich bin ja nur ein kleiner "Mechanikus" und streife die Elektronik eben erst.


liebe Grüße,

Klingon77

Gock
23.03.2009, 21:31
Das ist schon richtig, dass ein viel zu großer Strom trotz PWM fließen kann, wenn der Vorwiderstand zu klein gewählt ist.
Spannung oder Strom "regeln" kann man natürlich nicht sagen, schließlich wird nur mit einem bestimmten Verhältnis ein- und ausgeschaltet.
Punkt 2.2 ist schon sinnvoll, denn je weniger Widerstände man benötigt, desto weniger Wärme kann entstehen (wenn man es richtig anstellt...)
Es ist bei manchen LEDs möglich, sie bei einem Tastverhältnis von weniger als 100% mit mehr als dem Nennstrom zu betreiben. Sie leiden darunter nicht unbedingt aber wirken heller. Das geht aber kaum mit den ohnehin schon hellen LEDs.
Darüberhinaus lässt sich jede LED kurzzeitig mit wesintlich höherem Strom betreiben. Bei gekühlten LEDs ist das sogar dauerhaft möglich, innerhalb gewisser Grenzen.
Bei IR Dioden zB für Fernbedienungen, gibt man von vorherein einen pulsförmigen Nennstrom an. Im Dauerbetreib würden solche bei nicht so lange halten, wie herkömmliche LEDs.
Gruß

hardware.bas
24.03.2009, 07:44
Habe mir auch das Youtube-Filmchen angeschaut und finde die Zusammen-
stellung des Farbwechslers mit der Gravur sehr geschmackvoll. Die
Geräusche im Hintergrund sind sicherlich die Rekombinationen der
Photonen mit den Antimaterieresten in den LEDs??... VG Micha

oberallgeier
24.03.2009, 08:30
Hallo Klingon77,


... Strom kann dann "beliebig" groß sein, weil der Schalttransistor immer zu 100% öffnet oder schließt ...
... Bitte mal um Aufklärung ...Nun bin ich ja ein recht kleines Licht in der Elektronik. Soweit ich die Theorie verstehe, regelt hier/meist/vorzugsweise das Ohm´sche Gesetz den Zusammenhang zwischen Strom und Spannung - im Rahmen der Leistungsfähigkeit der entsprechenden Energiequelle und des Energieverbrauchers. Deshalb hat vorzugsweise und in den meisten Schaltungen ein >ohmscher< Widerstand im Rahmen seiner Betriebsgrenzen und -eigenschaften wie z.B. Temperaturkoeffizient, die Aufgabe, eine Regelfunktion für den Strom(-fluß) zu übernehmen.

Die PWM dient nun auf sehr primitive Weise dazu, den Energiefluss während einer gewissen Zeit durch ständiges, schnelles Ein- und Ausschalten auf ein gewünschtes Maß zu bringen. Beim Dimmer von Glühbirnen wird der (Wechsel-) Strom im Takt der Netzfrequenz so geschaltet, dass nur bestimmte Teile einer Halbwelle durch den Widerstandsdraht der Birne fließen können. Der kühlt in den Schaltpausen ein bisschen ab - und erzeugt tatsächlich ein gedimmtes Licht niedriger Helligkeit, weil er in den Schaltpausen nicht ganz kalt und bei eingeschaltetem Stromfluss nicht ganz heiß wird; die Funktion erinnert an eine PWM.
Die L ED ist anders: die leuchtet immer dann, wenn sie ein ist, mit voller Strahlstärke im Rahmen der durchgelassenen Stromstärke. In meinem Posting von gestern um 10:31, siehe oben, habe ich Beispiele zur Anstiegsgeschwindigkeit des Stromes durch die LED genannt und die Folgen beschrieben. Da in der LED der Strom im Bereich von MikrosekundenBRUCHteilen ansteigt - und damit die Lichtemission - kann unser Auge dem nicht ganz folgen. Schaltet man dann für ein paar Mikro- oder Millisekunden den Strom und damit die Lichterzeugung der LED wieder aus und das hintereinander so "sehen" wir ein Licht geringere Helligkeit wegen der Trägheit unserer Augennerven. >>Der Stromfluss<< während der Lichterzeugung ist bei der LED so hoch wie bei Dauerstrom, weil beim Einschalten immer die Spannung voll freigegeben wird. Der Stromfluss muss separat begrenzt werden. Der begrenzte Stromfluss verringert naturgemäß die Leuchtkraft der LED während des "Ein-" Zustandes auf rein physikalische Weise. Die PWM verringert die Leuchtkraft, genauer gesagt unser subjektives Helligkeitsempfinden, zusätzlich auf physiologische Weise.

Hoffentlich habe ich das klar, verständlich und nicht zu kompliziert ausgedrückt. Vielleicht guckst Du Dir dazu den Beitrag im Wiki (https://www.roboternetz.de/wissen/index.php/Pwm#PWM_bei_LEDs) an, am Besten den ganzen Beitrag.

Hellmut
24.03.2009, 18:19
Ich kann mich nur Klingon77 weiter oben anschliessen, toll was für eine wertvolle und kompetente Hilfe man hier bekommt!
@oberallgeier: Spitzen Information, klare und verständliche Erläuterungen. Ich bin jetzt in der Lage meine Entscheidung kompetent, so hoffe ich zumindest, zu treffen. Ich habe den Wiki Beitrag zum Thema PWN komplett gelesen und muß mich so bei Klingon77 entschuldigen. Unter der Oberschrift "PWM als D/A Wandler" ist zu entnehmen das auch eine Spannungsregelung möglich ist. Es kommt halt auf die externe Beschaltung an! Ich hatte mich damit im Zusammenhang mit der regelung eines DC-Motors beschäftigt und mir diese irrige Meinung zu eigen gemacht!
Wie lauten die Gleichungen um statt einem Vorwiderstand die Paarung von Induktivität und Freilaufdiode einzusetzen und diese geeignet zu dimensionieren? Du sagst man hat dann weniger Verlustleistung!

Richard
24.03.2009, 19:33
Moin moin Kingon77

Erst einmal, sieht gut aus und Du baust auch Schaltungen sehr sauber!

Aber ich habe jetzt eine Frage die "hier" etwas OT ist, wollte Dich aber
schnellstmöglich ereichen. Schaue Dir bitte einmal folgendes Angebot für
eine Drehbank an ....

http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=170311572026

... ich bin da leider kein Experte, der Preis ist aber verlockend. Allerdings
ist es von Wildeshausen/Bremen nach Hockenheim mit Transporter auch
nicht Billig. Ob ich an das Teil herankomme ist ja auch fraglich, möchte mich
aber nicht über herausgeworfenes Geld ärgern müssen.

Noch habe ich nicht geboten...und einige h sind ja noch offen.

Liebe Grüße Richard

Klingon77
25.03.2009, 15:44
hi,

leider komme ich erst jetzt zum antworten :cry:

Die Drehmaschine habe ich mir angeschaut und denke für den Preis und der Beschreibung entsprechenden Laufleistung sollte sie OK sein.

Falls Du einen Maschinenbauer, Universalzerspaner o.ä. im Freundeskreis hast empfehle ich Dir Ihn mitzunehmen (bewaffnet mit einem Winkel (DIN 875 / 0 oder besser 00), einer Meßuhr und einem zugehörigen Halter.

Er kann Dir die Maschine vor Ort vermessen.

Ein Stück Rundstahl für eine Drehprobe (Oberfläche Außenrund- und Plandrehen runden das Bild ab.


Bei dem Gewicht könnte man die Maschine evtl. auch noch in einem Kombi transportieren.
Du mußt sie dann aber nach allen Seiten gut "abspannen"; insbesondere nach vorne (Frontalaufprall).

Oder ein kleiner Anhänger mit Plastikfolie.




PWM:
Mal Dank für die Info; nun bin ich ein wenig "schlauer" :mrgreen:


Die Geräusche im Hintergrund stammen aus einem alten Radiator der nicht mehr im Rettungswagen betrieben werden durfte.
Seitdem heizt er meine kleine Quadratmeter große Werkstatt.

Zum nächsten Filmchen schalte ich ihn aus und es läuft wieder "Bach" oder "Stabat Mater" von "Pergolesi"; versprchen O:)


Der Aufbau, den ich zur Zeit plane ist nur ein Provisorium.
Dann kann ich mich bezüglich der Programierung auch an anderen Orten "austoben" z.B: Wohnzimmer bei der "Holden".

Die endgültige Version möchte ich, sofern ich das schaffe, in SMD aufbauen.


Heute kam das LCD (4 x 20) und die FET´s.
Wenn ich wieder Zeit habe stehle ich mich ein paar Stunden in die Werkstatt und dann geht es weiter.


Was nicht funktionierte, wie ich plante waren die seriall geschalteten fünf Taster am AD-Port.

Er lieferte zwar die richtigen Werte aber meine Entprell-Maßnahmen waren wohl eben für den "Hund"... :-k ](*,)


Ich habe letztens schon mal darüber gelesen; daß muß ich nochmals tun und dann im nächsten Anlauf einen neuen Versuch starten.

Vorab werde ich wohl doch fünf normale PIN´s des ATmega168 verwenden (klassisch halt), damit es vorwärts geht.


liebe Grüße,

Klingon77

Richard
25.03.2009, 16:25
hi,

wenn ich das mit der PWM richtig verstanden habe sollte die Spannung geregelt werden.
Der Strom kann dann "beliebig" groß sein, weil der Schalttransistor immer zu 100% öffnet oder schließt (ist nun ein wenig idealistisch dargestellt).

Bitte mal um Aufklärung bezüglich der Frage von jemand der es wissen muß.
Ich bin ja nur ein kleiner "Mechanikus" und streife die Elektronik eben erst.


liebe Grüße,

Klingon77

Moin moin Klingon77.

PWM ist eine Spannungsregelung, über das Ein/Aus Verhältniss bildet
die Last quasie einen Mittelwert der "Eingangsspannung". Wenn z.B.
eine 12V Batterie die Spannung liefert kommt nach der PWM mit
50% Tastverhältniss (theoretisch) als Mittelwert 6 V am Verbraucher an.

Wenn der Verbraucher eine rein Omsche Last ist, fließt dann durch
diese Last natürlich I = U/R auch der halbe Strom. :-)

Der R für die LED`s muß klar für die maximal zur Verfugung stehende
Speisespannung berechnet sein, sonst fackeln die ab. :-(

Gruß Richard

Klingon77
25.03.2009, 16:41
hi Richard,

dann habe ich alles richtig gemacht; Widerstände sind für die max. Spannung und max Strom (abzüglich 5% - 10% Sicherheit) berechnet.

Mal Dank für die Aufklärung :mrgreen:


liebe Grüße,

Klingon77

oberallgeier
25.03.2009, 16:53
... PWM ist eine Spannungsregelung ...Nein, das ist sie nun ganz genau NICHT.


... über das Ein/Aus Verhältniss bildet die Last quasie einen Mittelwert der "Eingangsspannung" ...... ABER nur, wenn die Last zu träge ist, um die Schaltvorgänge mitzugehen. Denn wenn die Last, wie die LED, voll mit dem Tempo mitgeht - dann ham wir den Salat. Da bin ich also in meinem obigen Posting nicht wirklich verstanden worden.

>> Die PwM ist NUR ein Ding, das eine (bestimmte, bzw. im Rahmen des verfügbaren Schaltorgans beliebige) Spannung schnell schaltet: PulsWeitenModulation - sagt ja auch, dass der Puls innerhalb des PwM-Zyklus in seiner Weite variabel ist. Die Spannung wird also zerhackt - nicht geregelt. Genaueres steht im Wiki oder sonstigen Tutorials.

Richard
26.03.2009, 18:56
>> Die PwM ist NUR ein Ding, das eine (bestimmte, bzw. im Rahmen des verfügbaren Schaltorgans beliebige) Spannung schnell schaltet:
Pulsweitenmodulation - sagt ja auch, dass der Puls innerhalb des PwM-Zyklus in seiner Weite variabel ist. Die Spannung wird also zerhackt - nicht geregelt. Genaueres steht im Wiki oder sonstigen Tutorials.

Ich finde unter Regler kein "Ding". :-))) PWM Regelt aber irgendwie,
z.w. Drehzahl oder halt auch LED`s. Wenn ich bei meinen Scheibenwischer
Motor mittels PWM die Drehzahl regel und dabei
parallel zum Motor die Spannung messe sinkt diese proportional zur
Pulsweite = Mittelwert.

Eine Spannungsregelung wie ein Liniarregler ist das natürlich nicht,
der Arbeitet sehr einfach gesehen halt wie ein Poti. Da wird nichts
"zerhackt", da wird der unerwünschte Rest in Wärme umgesetzt.

Schaltregler könnte man (etwas vereinfacht) schon in der "Nähe"
von PWM ansiedeln. Nehme ein PWM Signal, eine Diode, einen
fetten Elko und Du hast einen sehr sehr einfachen "Schaltregler".
Wobei der Verglein sehr hinkt, bein Schaltregler ist die "PWM"
eher konstand geregelt wird dort mit der "PWM" Frequenz.

Aber ein wirklich einfacher Versuch ist eine normale Glühlampe.
Bei sehr niedriger PWM Frequenz und kleinen Tastverhältniss
wird die Lgühlampe an/aus gehen. Erhöht man die Frequens kamm
Mensch das nicht mehr auflösen, die Glühlampe ist halt so dunkel
oder Hell wie das PWM Pulsverhältniss.

Eine Sromsteuerung ist PWM dann auch nur im Sinne kleiner
Spannungsmittelwert = kleiner Stromfluss durch die Last.

Man könnte sich möglicherweise auf "Leistungsregler" einigen. :-)

Ein Konstand_Spannungsregler hält die Spannung bei "egal"
welcher Last konstand.

Eine Konstand_Strom Regler hält den Strom bei "egal" welcher Last
konstand.

Eine PWM bildet einfach nur einen Mittelwert aus Srom und Spammung
an einer Last. Messe die Leistung einer 20 W Glühlampe bei 12 V,
messe nocheinmal mit PWM 50%. Heraus kommt 10 W wenn über
einen gleichen Zeitraum gemessen wurde. Logisch bei PWM 50%
war die 20 W Glühlampe ja in Echtzeit nur zur Hälben Zeit
eingeschaltet.

Bei LED`s ist das letztendlich NIX anders, die krepieren wenn sie zu
warm werden = eine zu hohe Leistung ZU lange abgeben. IR-LED`s
werden durchaus zur Erhohung der Reichweite mit Kurzen Impulsen
weit über ihren Nennsrom betrieben und überleben das auch, wenn
die zulässige "W-Leistung" nicht überschritten wird. Das bedeutet
letztendlich die "Pausenzeit" muß zum Abkühlen ausreichen.

Ich denke jetzt einfach wier reden alle irgendwie aneinander vorbei,
deshalb ist diese Posting auch etwas lang. Jder meint im Grunde
das Gleiche, drückt sich aber halt mit anderen Worten aus.......

Grüße Richard

Gock
27.03.2009, 00:04
Hallo Richard!
Einige Deiner Vereinfachungen sind zwar nicht falsch, aber wir müssen hier der Richtigkeit halber trotzdem feststellen, dass es sich nicht um eine Spannungsregelung handelt. Eine Regelung an sich erfolgt immer durch Vergleich von Ist- und Sollwert und das ist bei einer PWM keine Vorraussetzung. Man muss eher von Steuerung sprechen.
Außerdem können wir Hallogenlampen oder ähnlich nicht mit LEDs vergleichen, das sind zu große Unterschiede. Denn wie schon oben erwähnt, ist eine Lampe träge und eine LED nicht. Mittelwerte können daher nicht einfach herangezogen werden.
Kurz um: Der Strom durch LEDs sollte auch kurzfristig nicht deren Nennstrom überschreiten, schon garnicht im Mittel. Sie wird auf Dauer in den meisten Fällen an Lebendauer einbüßen, wieviel ist von LED zu LED unterschiedlich. Das geht aus dem jeweiligen Datenblatt hervor.
Eine IR LED benötigt keine Lebensdauer von 50000 Stunden, da genügen auch schon wenige hundert oder noch weniger.
Natürlich spielen Kapazitäten und Induktivitäten die entscheidende Rolle, aber die durch Leitungen gebildeten sind fast immer zu gering, um eine ausreichende Glättung durchzuführen.
Wenn wir Leistung messen, dann beziehen wir diese immer auf einen gewissen Messzeitraum. Ist dieser verhältinsmäßig lang zur PWM-Periodendauer, hast Du natürlich recht. Aber eine LED ist eben sehr "flink" und aus ihrer Sicht kann innerhalb einer kurzen Einschaltdauer eine viel zu hohe Leistung anliegen, wenn der Strom zu groß ist. Dies kann sie beschädigen oder zerstören, auch wenn sie gut gekühlt ist, wenngleich Kühlung dem natürlich entgegen wirkt.
Vielleicht meinen wir etwas ähnliches, aber wir sollten trotzdem versuchen, uns präzise auszudrücken.
Gruß

Richard
27.03.2009, 05:46
Hallo Richard!

Kurz um: Der Strom durch LEDs sollte auch kurzfristig nicht deren Nennstrom überschreiten,
Gruß

Moin moin Gock.

Ich gehe dabei selbstverständlich davon aus das die LED`s mit
einem Vorwiderstand betrieben werden der für die Maximal
mögliche Spannung berechnet ist, ohne werden sie Sterben!

Steuerung ist ein Guter Ausdruck, zur Regelung gehört tatsächlich
ein Ist/Sollwert vergleich. Meine beiden Motoren werden zur Zeit
nur gesteuert, geregelt erst wenn der PID Regler in Betrieb genommen
wurde. :-)

Obwohl beim Dimmer im Wohnzimmer wird auch geregelt,
wobei der Mensch die Regelstrecke ist. Der vergleicht ja
den ist/Sollwert. :-) Immer den Ärger mit den Begriffsmöglichkeiten.

Grüße Richard

oberallgeier
27.03.2009, 10:21
.... Wenn ich ... Motor mittels PWM die Drehzahl regel ... parallel zum Motor die Spannung messe sinkt diese proportional zur
Pulsweite = Mittelwert ...Tja, das liegt aber nicht an der PwM, sondern nur am Messverfahren Deines Messgerätes. Man darf nicht jedes (Mess-) Ergebnis so präzise glauben, wie es angezeigt wird. Nimm nen Oskar - der ist flotter als die sonst üblichen Messgeräte. Aber egal wie Du es siehst, ich komm damit schon klar.

Klingon77
27.03.2009, 18:51
hi,

nun habe ich alles gelesen und auch (weitestgehend) zumindest im Prinzip verstanden.
Aus den Postings ziehe ich nun folgende Schlüsse für die Praxis:

* Die Aussage daß man eine LED (nicht IR-LED) nur über PWM ohne geeigneten Vorwiderstand, welcher auf die jeweilige Spannung und Strom der LED ausgelegt ist, regeln kann, führt praktisch früher oder später zum vorzeitigen eingehen der LED in´s "Halbleiternirvana".

* IR LED´s können kurze Pulse mit höheren Strömen und/oder Spannungen "ab". Info´s gibt das jeweilige Datenblatt.

* Hängt hinter der PWM (ggf. mit Leistungsteil) ein "träger" Verbraucher oder ein Tiefpaß-Filter (?) kann man eine "Mittelwert-Spannung" einstellen und diese auch für weitere Aufgaben verwenden.
Träger Verbraucher sind z.B: Glühlampen, Motoren, Heizdraht.

* PWM ist nur ein Bauglied zur Spannungsstabilisierung; es fehlt der geschlossene Regelkreis.

Richtig so?

Mal dank für die anregende und informative Diskussion.
Ich kann da viel für mich mitnehmen und es ist sehr viel interessanter zu lesen als ein Fachbuch oder ein Fachartikel aus dem Netz.


liebe Grüße,

Klingon77

oberallgeier
27.03.2009, 19:30
Hallo Klingon77,

um es mal völlig einfach auszudrücken: die PwM ist nichts anderes als eine Art Schalter, mit dem man eine Strom- (bzw. Spannungs-) Versorgung (sehr schnell) schalten kann. Der Abstand vom Einschalten bis zum Einschalten (das ist also EIN Zyklus) steht dabei recht fest, sie ist vom verwendeten Timer und dessen Einstellung abhängig - aus dieser Zeit errechnet man die PWM-Frequenz. Die Zeit während der innerhalb eines Zyklus der Schalter auf "ein" steht, ist in bestimmten Grenzen wählbar - z.B. je nach Auflösung der PWM - 8bit, 10bit ... 16bit. Alles andere ergibt sich daraus, dass die Versorgung "nur" ein- bzw. ausgeschaltet wird.

Gock
28.03.2009, 13:48
Hi Klingon!
Sehr schöne Zusammenfassung, die könnte man so direkt ins Wiki stellen, als zusammenfassend Einleitung/Überblick, würde ich vorschlagen. Die Erklärungen dort sind übrigens ziemlich gut: https://www.roboternetz.de/wissen/index.php/Pulsweitenmodulation
Zum Thema Mittelwertbildung könnte man noch ergänzen, dass neben den trägen Verbrauchern selbst auch eine Spule als Glättungselement genutzt werden kann, wie es in Schlaltenetzteilen üblich ist. Hier findet dann natürlich zusätzlich eine Spannungsregelung statt.
Gruß

Klingon77
28.03.2009, 22:21
hi,

mal Dank für die Blumen; da gibt es sicherlich treffendere und einfachere Aussagen für´s WIKI als mein "Geschreibsel".

Nun denke ich, daß ich dank eurer Hilfe einen groben Überblick bezüglich PWM und Verbraucher erhalten habe.
Zumindest scheue ich mich nun nicht mehr vor einer praktischen Anwendung und fühle mich ein gutes Stück sicherer.
Der Artikel im WIKI ist recht informativ.
Die Berechnung ist leicht verständlich dargestellt.

Die Freilaufdiode für induktive Lasten hätte ich nun doch nochmal vergessen.
Und das obwohl ich seit jeher zu jedem Relais, welches ich früher mal "verbastelt" habe automatisch eine solche eingeplant hatte...
Motoren oder Spulen im allgemeinen sind ja nichts anderes...



liebe Grüße,

Klingon77

Klingon77
31.03.2009, 22:22
hi,

LCD Display gekauft und Probleme...

War nicht anders zu erwarten...


Vor ca. 15 Jahren habe ich schon mal eines im 8-Bit Modus angesteuert.
Das hat gut funktioniert.

Nun habe ich mir ein 4*20 Display von Reichelt gekauft:

file:///E:/DMC/Makrolon-Stirnseitenbeleuchtung/Bauteile/LCD%20Modul%20-%20LCD%20204B%20BL%20%20LCD%20Dot-Matrix-Modul%204x20%20Zeichen,%20blau/LCD%20204B%20BL%20Dot-Matrix-Modul.htm

* LED Hintergrund angeschlossen; funktioniert.
* Spannung und Poti für den Kontrast; einwandfrei
* Restliche Leitungen wie im Datenblatt:

Nun wollte ich das Teil mit folgendem Programm im 4-Bit Modus initialisieren und ein "A" ausgeben.



$regfile = "m168def.dat" 'Compilerdefinition
$crystal = 16000000 'Quarzfrequenz



'Ports initialisieren:
Ddrb = &B00000000 'PB alle Eingang
Ddrc = &B00111111 'PC 7 & 6 Eingang; 5-0 Ausgang
'C0=DB4; C1=DB5; C2=DB6; C3=DB7
'C4=E; C5=RS (0=Initialisieren; 1=Daten)
Ddrd = &B00000000 'PD3, PD5 & PD 6 Ausgang; Rest Eingang




'----------------------------------------------------------------------------------------------------

'LCD

'C0=DB4
'C1=DB5
'C2=DB6
'C3=DB7
'C4=E (Daten werden bei fallender Flanke übernommen)
'C5=RS (0=Initialisieren; 1=Daten schreiben)
'R/W permanent auf LOW; Zeichen schreiben - HIGH = Zeichen vom Display lesen.


'LCD initialisieren:

Portc = &B00010010 ' 4 Bit Modus
Waitms 10
Portc = &B00000010 'E auf LOW (PORTC.4)
Waitms 10

Portc = &B00010010 '4Bit Datenlänge; Einzeiliges Display; 5x7 Font - HIGH BYTE
Waitms 10
Portc = &B00000010 'E auf LOW (PORTC.4)
Waitms 10

Portc = &B00010000 ' LOW BYTE
Waitms 10
Portc = &B00000000 'E auf LOW (PORTC.4)
Waitms 10

Portc = &B00010000 'Display ein; Cursor ein; Cursor blinken - HIGH BYTE
Waitms 10
Portc = &B00000000 'E auf LOW (PORTC.4)
Waitms 10

Portc = &B00011111 ' LOW BYTE
Waitms 10
Portc = &B00001111 'E auf LOW (PORTC.4)
Waitms 10

Portc = &B00010000 'Display löschen: Cursor auf 1. Spalte von Zeile 1 - HIGH BYTE
Waitms 10
Portc = &B00000000 'E auf LOW (PORTC.4)
Waitms 10

Portc = &B00010001 ' LOW BYTE
Waitms 10
Portc = &B00000001 'E auf LOW (PORTC.4)
Waitms 10

'Zeichen Uebertragen 'Zeichen "A" übertragen (HEX 65) & RS =1 (Port C5)

Portc = &B00110100 ' HIGH BYTE
Waitms 10
Portc = &B00100100 'E auf LOW (PORTC.4)
Waitms 10

Portc = &B00110001 ' LOW BYTE
Waitms 10
Portc = &B00100001 'E auf LOW (PORTC.4)
Waitms 10



End 'end program



Die übertriebenen 10ms Pause zwischen den einzelnen Befehlen sind erstmal zur Sicherheit, damit es keine Timingprobleme gibt.

Ich schreibe zuerst das HIGH-Byte in den Port "C"
Dabei ist E (PortC.5) = HIGH
Dann wird das gleiche High-BYTE mit E = LOW nochmal geschrieben.
Bei fallender Flanke sollten die Daten übernommen werden.

Das selbe Spiel mit dem LOW-Byte.


Leider tut sich nichts.
Das Display funktioniert.
Bei einem Test gingen bei der Datenübertragung zum AVR die einzelen Matrixfelder der Reihe nach an.


Was mache ich falsch? Ich denke mal es liegt an der Initialisierung (ist nach dem Datenblatt).




INITIALISIERUNGSBEISPIEL FÜR DEN 4-BIT MODUS
RS=0; R/W=0

DB7 - DB4

0 0 1 0 4-Bit Datenlänge einschalten (noch im 8-Bit Modus)


0 0 1 0 4-Bit Datenlänge, 1-zeiliges Display, 5x7 Font
0 0 0 0


0 0 0 0 Display ein, Cursor ein, Cursor blinken
1 1 1 1


0 0 0 0 Display löschen, Cursor auf 1. Spalte von 1. Zeile
0 0 0 1


0 0 0 0 Cursor Auto-Increment
0 1 1 0




Was ich noch versuchte:

* Eine vertauschte Reihenfolge von HIGH- und LOW-BYTE Übertragung
* Port C4 (Enable am Display) separat auf LOW zu schalten
* Port C4 (Enable am Display) mit dem Befehl "Toggle" zweimal umzuschalten

brachte keinen Erfolg


Nach der Initialisierung sollte doch der Blinkende Cursor auf POS: 1.1 im Display zusehen sein?

Der Kontrast war eben so eingestellt, daß ich die 5x7 Quadrate sehen konnte.
Ein Zeichen/Cursor sollte also auf jeden Fall sichtbar sein.
Die Hintergrundbeleuchtung war ebenfalls eingeschaltet.


Nun stehe ich ein wenig auf dem Schlauch; bin erstmal am Ende meines begrenzten "Latein´s"...


liebe Grüße,

Klingon77

Klingon77
01.04.2009, 21:52
hi,

heute war ein guter Tag \:D/

12 Stunden Tagdienst ohne Schwerkranke; mit wenig Einsätzen, schönem Wetter und heute Abend dann das LCD-Display an´s laufen gebracht :idea: :mrgreen:

Seltsam, daß derartige "Kleinigkeiten" eine scheinbar tiefe Befriedigung vermitteln können...


Von Anfang an:
Gestern Abend/Nacht habe ich nochmal hier und in den "Weiten des Netzes" nach Lösungsansätzen gesucht und bin vermeindlich fündig geworden:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-01_LCD_blau_RGB-LED_Plexi-Baum/LCD-Display-01.jpg


'LCD konfigurieren

Config Lcd = 20 * 4 '4 x 20 Zeichen Display
' Im I/O Mode wird jeder Prozessor Pin einzeln angegeben
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4


'LCD Ausgabe

Cls 'loesche das LCD Display
Wait 1
Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
Lcd "Hallo Roboter-Netz" 'String auf Display anzeigen

Locate 2 , 1 'Cursor auf 2 Zeile, 1 Spalte
Lcd "Loesung gefunden :-)" 'String auf Display anzeigen

Locate 3 , 1 'Cursor auf 3 Zeile, 1 Spalte
Lcd "Blicke aber noch" 'String auf Display anzeigen

Locate 4 , 1 'Cursor auf 1 Zeile, 1 Spalte
Lcd "nicht richtig durch" 'String auf Display anzeigen




Als ich über diese Initialisierung stolperte dachte ich bei mir:
"Kann es denn so einfach sein?"

Zu Zeiten meiner CC-Basic mußte ich alles noch "von Hand zu Fuß" schreiben...


Zusätzlich habe ich nocht im BASCOM folgendes geändert/angepasst:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-01_LCD_blau_RGB-LED_Plexi-Baum/Bascom-AVR-LCD-Optionen.jpg


In Kombination mit einer neuen gefrästen "Muster-Plexi-Platte mit Baummotiv" kam dann folgendes heraus:


http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-01_LCD_blau_RGB-LED_Plexi-Baum/LCD-Display-Baum-blau.jpg


Der Baum wird nur von einer einzelen RGB-LED von unten angestrahlt.
Die umlaufenden Kanten sind noch nicht verspiegelt.

Für interessierte; gefräst habe ich mit:
* Vorschub 100mm/min
* Drehzahl ca. 8.000 1/min (mehr ist nicht notwendig bei dem kleinen Vorschub)
* Zustellung: 0,25mm (zwei Durchgänge a´ 0,23mm und 0,02mm um die Nut schön sauber zu bekommen)
* 45 Grad spiralverzahnter Stichel (CNC-Eltner)
* Trocken gefräst (naß ist bei Plexi besser!)

* Die Scheibe ist 5mm dick.


Ein kurzes Video habe ich auch für euch hochgeladen.
Wie versprochen / angedroht mit Bach: "Tokata und Fuge" :)

http://www.youtube.com/watch?v=SC4ouaQBkrs





'Hardware PWM Lauflicht und LCD-Display 4x20 by Klingon77 & Roboter NETZ (WIKI)
'01 Apr 2009

$regfile = "m168def.dat" 'Compilerdefinition
$crystal = 16000000 'Quarzfrequenz

'----------------------------------------------------------------------------------------------------

'
'Ports initialisieren:

Ddrb = &B00000000 'PB alle Eingang
Ddrc = &B00111111 'PC 7 & 6 Eingang; 5-0 Ausgang
'C0=DB4; C1=DB5; C2=DB6; C3=DB7; C4=RS; C5=E (RS: 0=Initialisieren; 1=Daten)
Ddrd = &B01101000 'PD3, PD5 & PD 6 Ausgang; Rest Eingang
Portd.2 = 1
Portd.4 = 1

'Timer einstellen(Timer 0 & 2 sind 8-Bit Timer):
'
'Timer0 auf PWM stellen
'Timer0 PWM Ausgabe A(PD 6) & B (PD 5) einstellen
'Clear Down; LED wird mit höherem Variablenwert heller
'Vorteiler = 8
Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8

'Timer2 auf PWM stellen
'Timer2 PWM Ausgabe A(PD 3) einstellen
'Clear Down; LED wird mit höherem Variablenwert heller
'Vorteiler = 8
Config Timer2 = Pwm , Compare B Pwm = Clear Up , Prescale = 8

Enable Timer0 'Timer0 starten
Enable Timer2 'Timer2 starten

'PWM Ausgabepins
Rot Alias Ocr0a 'PD 6
Gruen Alias Ocr0b 'PD 5
Blau Alias Ocr2b 'PD 3
Rot = 0
Gruen = 0
Blau = 0



'----------------------------------------------------------------------------------------------------

'Dimensionierung von Variablen

'allgemeine Schleifenlaufvariable
Dim Lauf As Byte

'Pausenwert in "mS" während der Farbwechselschleifen (max: 65535 mS)
Dim Pause As Word
Dim Disp As Byte 'Variable welche an das LCD übergeben wird

Declare Sub Farbwechsel01
Declare Sub Farbwechsel02

'----------------------------------------------------------------------------------------------------


'Programmvorbereitungen

Pause = 10 'Pausenzeit (mS) im Farbwechsel

'----------------------------------------------------------------------------------------------------
'Hauptprogramm

Wait 2

'LCD konfigurieren

Config Lcd = 20 * 4 '4 x 20 Zeichen Display
' Im I/O Mode wird jeder Prozessor Pin einzeln angegeben
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4


'LCD Ausgabe

Cls 'loesche das LCD Display
Wait 1
Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
Lcd "Hallo Roboter-Netz" 'String auf Display anzeigen

Locate 2 , 1 'Cursor auf 2 Zeile, 1 Spalte
Lcd "Loesung gefunden :-)" 'String auf Display anzeigen

Locate 3 , 1 'Cursor auf 3 Zeile, 1 Spalte
Lcd "Blicke aber noch" 'String auf Display anzeigen

Locate 4 , 1 'Cursor auf 1 Zeile, 1 Spalte
Lcd "nicht richtig durch" 'String auf Display anzeigen



'RBG-LED Baum in Plexi

Wait 1
Rot = 255
Waitms 500
Rot = 0
Gruen = 255
Waitms 500
Gruen = 0
Blau = 255
Waitms 500
Blau = 0
Wait 1



Do 'Endlosschleife: Beginn

Farbwechsel01

'Debounce Pind.2 , 0 , Farbwechsel01 , Sub
Debounce Pind.4 , 0 , Farbwechsel02 , Sub

Loop

'----------------------------------------------------------------------------------------------------

'Unterprogramme

Sub Farbwechsel01

Rot = 255
Blau = 0
Gruen = 0
Wait 2
For Lauf = 1 To 255
Rot = 255 - Lauf
Blau = Lauf
Waitms Pause
Next Lauf
Rot = 0

For Lauf = 1 To 255
Blau = 255 - Lauf
Gruen = Lauf
Waitms Pause
Next Lauf
Blau = 0

For Lauf = 1 To 255
Gruen = 255 - Lauf
Rot = Lauf
Waitms Pause
Next Lauf
Gruen = 0
Wait 2
Rot = 0

End Sub


Sub Farbwechsel02
Rot = 255
Wait 2
Rot = 0
End Sub

End 'end program


Nun habe ich noch ein paar Fragen an euch:
(erklärende Link´s reichen; dann müßt Ihr die "Basics" nicht zum 1000 ten Mal erklären)

* wie steuert der ATmega168 nun das LCD-Display an?
Da gehört doch mehr dazu als das was in dem Programmbeispiel zu sehen ist (Initialisierung; Speicheradressen, Zeilenverwaltung usw.)

Hat der 168er da was im ROM?
Ging das von BASCOM aus? Ich habe ja keine ".LIB" aufgerufen.

* Wie bekomme ich den Cursor ausgeschaltet?
Gibt es da auch einen einfachen Befehl, welchen ich nun übergeben kann?
Ähnlich wie "LOCATE X,Y"
Ich möchte gerne Texte darstellen ohne daß der Cursor sichtbar ist.




Das mein kleines Programm so "unaufgeräumt" und nicht richtig dokumentiert ist bitte ich zu entschuldigen :oops:

Ist halt eine Testphase in der ich lediglich Funktionen erlernen und testen möchte.
Über die Ergonomie mache ich mir später Gedanken, wenn ich gelernt habe mit den Grundlagen umzugehen.


liebe Grüße und Dank für eure Hilfe,

Klingon77



Nachtrag:

Ganz vergessen zu fragen...

Die freien PIN´s am LCD (4 Bit Modus) liegen auf Masse.
Nun habe ich gelesen sie sollen über einen 10KOhm Widerstand gegen Masse geführt werden um vor dem Initialisieren einen "internen" Kurzschluß zu vermeiden?

Ist da was dran? Im WIKI steht nur "gegen Masse legen" um ein eindeutigen Signalpegel (kein TrisState) zu haben.
Von PullDown Widerstand steht da nichts...

Klingon77
03.04.2009, 09:14
hi,

nun habe ich mal in´s BASCOM Handbuch geschaut...

"6.111 CONFIG LCD"

Englische Sprachkenntnise sind zwar nur rudimentär vorhanden; allerdings glaube ich zumindest ansatzweise zu verstehen, was ich im obigen Programm geschrieben habe.

Einen Befehl um den Cursor auszuschalten gibt es wohl auch :mrgreen:


Da hat sich seit meinen "guten alten CC-Basic Zeiten" doch einiges getan; ich bin da sehr angenehm überrascht \:D/



Bliebe nur noch die eine Frage:

Die freien Daten-PIN´s am LCD (4 Bit Modus) liegen auf Masse.
Nun habe ich gelesen sie sollen über einen 10KOhm Widerstand gegen Masse geführt werden um vor dem Initialisieren einen "internen" Kurzschluß zu vermeiden?

Ist da was dran? Im WIKI steht nur "gegen Masse legen" um ein eindeutigen Signalpegel (kein TrisState) zu haben.
Von PullDown Widerstand steht da nichts...

Wie macht Ihr das; wie ist es richtig?
Nicht das sich das schöne (und nicht billige) LCD nach einigen Wochen/Monaten "in´s Halbleiternirvana verabschiedet"... :cry:


liebe Grüße,

Klingon77

Klingon77
07.04.2009, 20:42
hi,

mal ein kleiner "Abriss" bezüglich der LED´s:

Ich wollte ja das "Gesamtproblem" zergliedern und das habe ich nun auch gemacht; sprichwörtlich!

Alles (soweit fertig) auf eine große Holzplatte aufgebaut.

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-07%20RGB%20LED%20Probeaufbau%2001/Bild-001.jpg

LCD Display, Buchse für die Spannungsversorgung und der ATmega168 sind schon drauf.



Den Baum aus den oberen Foto´s habe ich nochmals als Schneidplott gemacht.
Die Folie wird dann aufgeklebt und die Scheibe rundum mit Folie beklebt.
Danach wird das Ganze (die freien Flächen) sandgestrahlt.
Das kann ich in meiner kleinen "Baumarkt-Sandstrahlkabine" selber machen.

Das Ergebnis sieht man im Foto:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-07%20RGB%20LED%20Probeaufbau%2001/Bild-002.jpg

Während bei gefrästen Plexi-Platten nur Konturen dargestellt werden können ist es beim Sandstrahlverfahren möglich "Flächen" darzustellen.
Das Licht wird wie üblich an den glatten Außenkanten des Plexiglases refklektiert und kann durch die "körnige Oberfläche" der sandgestrahlten Areale nach außen treten.

Beim betrachten des Fotos fällt auf, daß man mehr Licht benötigt um die Flächen zum leuchten zu bringen als dies bei den gefrästen Konturen der Fall ist.
Bedenkt bitte, daß die Plexiplatte in diesem "Baustadium" lediglich von einer einzelnen RGB-LED angestrahlt wird.
Geplant sind LED-Leisten mit einem LED Abstand von 20mm.
Die Platine dazu ist auch schon gezeichnet \:D/




http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-07%20RGB%20LED%20Probeaufbau%2001/Bild-003.jpg

Für das LCD-Display habe ich eine Halterung aus 2mm Makrolon/Lexan gefräst.
Damit kann ich es sicher auf der Platte montieren.
Was noch fehlt ist die Anschlußplatine mit dem Poti für die Kontrasteinstellung und dem Vorwiderstand zur LED-Beleuchtung.




http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-07%20RGB%20LED%20Probeaufbau%2001/Bild-004.jpg

Der Anschlußbuchse für die Spannungsversorgung habe ich ebenfalls eine kleine Makrolon-Halterung spendiert.




http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-07%20RGB%20LED%20Probeaufbau%2001/Bild-005.jpg

Mit diesem kleinen Steckernetzgerät (5V 2500mA stabilisiert) möchte ich die Versuchsanordnung betreiben.




http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-07%20RGB%20LED%20Probeaufbau%2001/Bild-006.jpg

Eine kleine Platine mit einer einzelnen SMD-RGB-LED habe ich auch gefertigt.
Diese kann ich noch ohne Leistungsstufe direkt am ATmega168 betreiben.
Zum ersten Test allemal genug.
Dabei wird die LED nur mit 13mA - 15mA betrieben. Nicht daß mein ATmega168 Schaden nimmt. Die Farbwechsel kann man auch mit weniger Strom begutachten.
Rechts die kleine Platine mit dem ATmega168 nach dem Vorbild von AndreeHB.




http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-07%20RGB%20LED%20Probeaufbau%2001/Bild-007.jpg

Zum Abschluß nochmal der direkte Vergleich zwischen der gefrästen (links) und der sandgestrahlten (rechts) Variante des Baummotives.
Die Plexi-Platte ist ca. 100mm breit und 130mm hoch.
Die umlaufenden Kanten sind mit "Spiegelfolie" abgeklebt um den Lichtaustritt stirnseitig zu vermindern.





Langsam geht es vorwärts \:D/ obwohl noch viel fehlt.
Dem System möchte ich ein Auswahlmenu zur Anwahl unterschiedlicher Farbwechsel "spendieren".
Falls möglich soll evtl. auch die Helligkeit des LCD Display´s geregelt werden... mal schauen.

Das Ganze soll über drei Tasten "laufen".
1) Auswahl "UP"
2) Auswahl "Down"
3) "Enter"



Es fehlt noch die Leistungsstufe mit den FET´s, die Platine mit den Tastern und die Platine für die Spannungsversorgung.

Auf dieser möchte ich noch einen Elko zum glätten, einen 100nF und einen Ferit Ring zum unterdrücken von Störungen, sowie eine Sicherung einbauen.

Kann ich sonst noch etwas tun (außer kurze Leitungen) um die Störsicherheit zu erhöhen?



liebe Grüße,

Klingon77

Klingon77
10.04.2009, 17:44
hi,

heute ging es nochmal ein Stück weiter \:D/


Vorab ein kleiner Rückschlag:
meine schöne Makrolon-Halterung für den Stecker des Netzteiles hat sich in seine Einzelteile zerlegt.
Sicherlich hatte ich die Zeit beim zusammendrücken der Teile beim kleben zu kurz bemessen und die Verbindungen waren nicht richtig fest.
Dann auch sofort die Buchse reingeschraubt und angeschlossen...
Kommt davon, wenn man ungeduldig bastelt und sich nicht die nötige Zeit nimmt :cry:

Selbst schuld...


Gestern fräste ich noch eine ähnliche Halterung für die Sicherung (die hält!!!):

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-007.jpg



Dann ging es mit der "Eingangsspannung" weiter.
Eine kleine Platine sollte die 5V aus dem Steckernetzgerät etwas störunanfälliger machen.

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-001.jpg

Die Schrift ist ca. 2mm hoch. Da hat es das Ganze doch "verrissen"; trotz 30 Grad Hartmetallstichels...
Ich machte den Fehler einfach eine Schrift im CAD (SolidEdge V18) zu nehmen. Die bestand natürlich aus "Doppellinien".
Wieder was gelernt...

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-002.jpg

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-003.jpg

Zwei Elkos a´ 2200 uF, ein 100nF Kondensator, eine kleine Spule um einen Feritkern sowie einen Abgang zur Sicherung. Mehr ist nicht drauf.
Eine kleine, übersichtliche "Baugruppe".

Den Halter für die Buchse fräse ich natürlich nochmal neu.



Bei der nächsten Platine, zur Ansteuerung des LCD Display´s, war ich dann schon ein wenig "schlauer".
Statt eine Schrift aus dem CAD zu nehmen zeichnete ich die Zahlen und Buchstaben rasch direkt im CAD.
Das ging erstaunlich schnell, wenn man mal in etwa weiß welches "Raster" man verwenden möchte und sich auch daran hält O:)
Auch hier sind die kleinsten Ziffern 2mm hoch.
Die "4" ist leider etwas verunglückt... da muß ich nochmal "drüber".

Einen "Klops" habe ich auch da reingefräst:
Zum einen sieht man in einer Leiterbahn einen "Anfahrbogen".
Da habe ich im CAM nicht aufgepasst.
Zum zweiten habe ich natürlich für die LDC Hintergrundbeleuchtung die PIN´s vertauscht. Kabel am Stecker umgelötet; hat geholfen...

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-004.jpg

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-005.jpg

Ich dachte, die Bestückung und Bezeichnungen der PIN´s "darauf zu schreiben" wäre keine schlechte Sache.
Macht es doch das Ganze (auch wenn es nur eine kleine Platine ist) etwas übersichtlicher.
Die vier freien PIN´s des LCD-Display´s legte ich nun über einen 1K Widerstand auf Masse.
Weiter oben beschrieb ich schon, daß ich im Microcontroller-Net mal las das es ansonsten bei der Initialisierung des LCD´s zu Kurzschlüssen kommen kann, da sie intern auf HIHG-Pegel liegen???
Sicher ist sicher, dachte ich mir und 5 zusätzliche Widerstände kosten nicht die Welt.

So sieht sie bestückt aus.

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-006.jpg

Poti hatte ich in dem entsprechenden Wert leider kein anderes mehr da.
Ist ja auch nur eine Versuchsanordnung.




Mein ATmega168 sieht nun auch ein klein wenig "aufgeräumter" aus.
Die Spannungsversorgung meines Steckbrettes konnte ich nun auch abschalten. Das Ganze läuft nun über das kleine Steckernetzteil.

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-009.jpg




Noch ein Bild, wie das Ganze nun auf der Holzplatte aussieht:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-10-RGB-LED-Probeaufbau-02/Bild-010.jpg


Die LCD-Platine (Mitte vorne) habe ich ebenso gegen Störeinflüsse "gesichert" wie die Spannungs-Platine (links hinten).
Die Zuleitungen vom AVR zur Platine sowie die Spannungszuführung wurden verdrillt.
Die Störsicherheit hat nun merklich zugenommen und das bei unverändert langen Leitungen.
Einen Darstellungsfehler im Display konnte ich nun nicht mehr provozieren.


Zum Schluß noch ein Video, leider mit schlechter Tonqualität:
"Bach; Tocata und Fuge"

http://www.youtube.com/watch?v=VyTuiO1M5q0




So, genug geschrieben für heute \:D/


liebe Grüße und ein schönes Osterfest wünscht,

Klingon77

Klingon77
12.04.2009, 20:48
hi,

nun habe ich mir mal eine "Platinenschrift" gezeichnet.
Sie ist zugegebenermaßen nicht sonderlich schön, sollte aber lesbar sein.


Mein erster Versuch ("Spule" & "Sicherung" im Foto oben) war nicht so berauschend.
Das lag daran, daß ich einfach eine Windows Schrift nahm und die war zweireihig.
Bei einer Buchstabenhöhe von 1,5-2mm war das nicht so prickelnd.

Nun zeichnete ich mir rasch eine "Einlinienschrift" in SolidEdge.

Ein Foto gibt es im Anhang.


Die Buchstaben und Zahlen sind jeweils:

2mm hoch und 1mm breit.
1,5mm hoch und ca. 0,75mm breit.

Einige Ausnahmen gibt es; z.B: das "W".


Falls noch andere Interesse an der Schrift haben stelle ich sie hier mal zum download rein.
Man kann die einzelnen Buchstaben aus dem geöffneten File "kopieren" und in die eigene Zeichnung "einfügen".


Die ZIP-Datei enthält die Schrift in folgenden Formaten:

1) SolidEdge V18 Studi-Lizenz ".DFT" (lässt sich nicht in der regulären Lizenz öffnen)
2) ".IGS" ".DWG"
3) ACAD ".DXF" in den Versionen: 12; 13; 14; 2000


Die Schrift habe ich selber erstellt und alle "Rechte" liegen bei mir.

Wer möchte darf sie auch weitergeben.
Da stelle ich keinerlei Ansprüche und man muß auch nicht fragen.


Viel Spass beim fräsen wünscht,

Klingon77

thewulf00
13.04.2009, 13:39
Dein ganzes Projekt ist einfach total krank! (Das ist ein Ausdruck tiefster Bewunderung)

Klingon77
13.04.2009, 18:37
hi,

dann mal gute Genesung uns allen; da gibt es einige "Kranke" im Fourm :oops: :mrgreen:
Ich zähle mich da noch zu den wirklich leichten Fällen...
Mit etwas Glück nimmt die Fieberkurve einen leicht nach oben führenden Verlauf.



Ich würde mich über eine Resonanz bezüglich der Schrift(en) freuen.
Ein Foto vom Fräsergebnis oder ein kurzer Hinweis, was ich besser machen könnte.
Ggf. fehlt auch noch was wichtiges an Zeichen?
Das könnte ich dann nachbessern und wieder einstellen.


liebe Grüße,

Klingon77

Klingon77
15.04.2009, 22:34
hi,

heute Morgen und heute Abend fand ich etwas Zeit die FET-Leistungsplatine zu fertigen.

Gezeichnet hatte ich die schon gestern Abend:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-15-Leistungstreiber-FET/001.jpg

Natürlich sofort einen "Klops" geschossen... #-o
Eine Unterbrechung vergessen (roter Kreis im Foto unten).
Da fragt man sich warum der blaue Kanal nicht tut was er soll :-b


Gefräst sieht es dann so aus:
Die Unterbrechung habe ich nachträglich mit dem Skalpell in die 70 mü Platine "geschnitzt".

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-15-Leistungstreiber-FET/002.jpg

Genießt das Bild; gelötet ist es schrecklich:


http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-15-Leistungstreiber-FET/003.jpg

Das liegt zum Teil daran, daß die kleine Spule die Fehlstelle verdeckte und ich mit dem Lötkolben den Fehler suchte...
...Teil einlöten, auslöten, messen, einlöten, am Verstand zweifeln, usw.
Ihr kennt das sicher.

Die Schrift zum Platinenbeschriften macht sich übrigens sehr gut.
Die Buchstaben "R,G,B" zur Kanalbezeichnung sind 2mm hoch; der Rest ist 1,5mm hoch.
Damit will ich zufrieden sein \:D/



Nun konnte ich auch meine "alte" Lichtleiste mit fünf der RGB-SMD-LED´s anschließen.

Die Leiste ist ca. 100mm lang und 8mm breit. Es befinden sich fünf der LED´s darauf.

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-15-Leistungstreiber-FET/004.jpg

Nun erstrahlt das kleine Bäumchen schon viel kräftiger \:D/
Die Farben kommen in "natura" kräftiger und gleichmäßiger als auf den Fotos zu sehen ist.
Ich habe schon mehrere Aufnahmevarianten getestet; es gelingt mir aber nicht die Farben naturgetreu wiederzugeben.


Alles in Allem seht Ihr hier den Versuchsaufbau wie er bis dato realisiert ist:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-15-Leistungstreiber-FET/005.jpg

Die kleine Platine mit den Leistungstreibern findet sich in der rechten unteren Ecke.
Eine Messung vom Port zur Platine (Gate am FET) ergab (mit dem Multimeter bei PWM-Zyklus) eine Stromaufnahme von ca. 30 uA.

Die 200 Ohm (196 Ohm) Widerstände machen sich gut.
Ich konnte keine Einschränkung in der Funktion der LED´s feststellen.


Die Halterung für meine Spannungszuführung habe ich immer noch nicht nachgearbeitet... kommt aber noch [-o<


Zum Schluß noch ein Foto des LCD´s.


http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-15-Leistungstreiber-FET/006.jpg



Mein LCD-Display verliert bei längerem Betrieb immer noch von Zeit zu Zeit Zeichen (immer das Erste von oben und dann die nachfolgenden).
Ich führe dies auf Störungen aus dem Netz zurück.
In der Endfassung wird das Kabel stark gekürzt.

Bringt es was einen Schmitt-Trigger Baustein für "DB5-8, E und RS" dazwischen zu schalten? Habe ich im Netz gelesen.
Solle die Schmitt-Trigger an den Kabelanfang oder das Kabelende vor das LCD.
Wenn der Aufbau mal steht muß ich ein mal paar Messungen mit dem Oszi machen.




So, genug für heute; evtl. finde ich Sa. nochmal etwas Zeit oder nächste Woche. Dann möchte ich die Platine für die drei Taster fertigen.



liebe Grüße,

Klingon77


PS: fast vergessen...
kleines Video mit 5 LED´s.
Leider versucht meine DigiCam permanent die Schärfe nachzuziehen.
Ich glaube ich leihe mir mal eine richtige Videokamera.


http://www.youtube.com/watch?v=KnfjQ1dWyG4

thewulf00
16.04.2009, 07:24
Ich denke nicht, dass Dir ein Schmitttrigger helfen wird. Schließlich ist das Problem nicht nur die Signalschärfe, sondern auch gegenseitige oder fremde Störungen, die dann mit geschärft werden.

Deine FET-Leistungsplatine sieht wunderbar aus. Es ist ein wahrer Genuss, diese anzuschauen.
Aber ich frage mich folgendes: Warum machst Du THT-Bausteine (Wie den Elko, die Spule, etc) auf die selbe Seite wie SMD (Die FETs) ? Das gehört eigentlich andersrum :-)
Ich frage mich nämlich, wozu Du diese Löcher bohrst/fräst, wenn Du es sowieso auf die selbe Seite machst...

Aber wenn ich mir Deine Versuchsanordnung so anschaue, werde ich sehr neidisch, und bekomme tierisch Lust, so etwas nachzubauen!

Das Problem von Digicams mit farbändernden RGB-LEDs kennen wir alle. Meine RGB-Lampe konnte ich auch nicht filmen. Aber die Helligkeit ist unglaublich - das sieht man nämlich sehr gut auf dem Video.
Ich würde sage - ein geglücktes Projekt.

hardware.bas
16.04.2009, 08:11
Wenn überhaupt Schmitttrigger, dann nur mit extrem großer Hysterese.
Kommen Störungen in die Nähe oder über Ucc bzw Ground nützen Diese
jedoch nix. VG Micha

thewulf00
16.04.2009, 08:31
Genau das meinte ich ja. Habe mich nur kurzgefasst. :-)

hardware.bas
16.04.2009, 18:07
Gock: Ich würde bei einer PWM, wenn man mit die (resulutierende)
Spannung festlegen will nicht unbedingt vom Regelungsgedanken
weggehen. Ein Schaltnetzteil ist auch geregelt. Ansonsten pflichte ich
Dir bei. VG Micha

Gock
16.04.2009, 18:40
Ja, aber die Regelung im Schaltnetzteil basiert auf der gemessenen Spannung und reagiert auf diese.
Eine PWM macht nichts anderes, als ein und auszuschalten, unabhängig von der anliegenden oder entstehenden Spannung und eine Spannung stellt sich daraufhin ein.
Genau das ist ja der Unterschied zwischen Steuer- und Regelung!
Gruß

Klingon77
16.04.2009, 19:33
hi,

mal Dank für eure Hilfe \:D/


Schmitt-Trigger also nicht :cry:

Wie wäre es denn mit einem Varistor in jeder der Baueinheiten?
Die kosten nicht die Welt.

Evtl. die Bussignale zum LCD durch sehr kleine Kondensatoren gegen Masse etwas "träger" machen?

Sind nur ein paar Laienhafte Überlegungen; bin ja kein Elektroniker.


@thewulf00:

Die Bohrungen waren eine klare "freudsche Fehlleistung".
Sind schön anzusehen aber wenig nützlich.
Den FET gibt es auch mit "Beinchen" zur normalen Verwendung.
Leider habe ich nur die SMD Variante bestellt; dreimal um die Ecke gedacht und versuche nun das Beste daraus zu machen.

Die Platine funktioniert und ist auch nur ein "Arbeitsmodell"; läuft also nur unter Aufsicht.

Wenn die Schaltung mal steht möchte ich alle Baugruppen zusammen auf eine einzige Platine bringen und diese dann in SMD (soweit möglich) bestücken.


Wenn die Tasterplatine mal fertig ist (letzte Baugruppe) nehme ich mir etwas Zeit und "werfe meinen alten (Russen) Oszi" nach mehr als 10 Jahren wieder an.
Mal schauen was er sagt, wenn er plötzlich 10V AC mehr bekommt...
Ich glaube da muß ich nochmal mein Buch "Messen mit dem Oszilloskop" bemühen...


Die Helligkeit der LED´s ist wirklich erstaunlich.
Besonders beeindruckend sind die "reinen" Farben; wie mit Licht gemalt.


liebe Grüße,

Klingon77

Gock
16.04.2009, 23:15
Hatte ganz vergessen zu erklären, dass Deine Fräsungen gleichsam präzise wie formschön sind.
Ich folge diesem Thread weiterhin, tolle Bilder, tolle Arbeit.
Viel Erfolg noch, bis bald...
Gruß

Klingon77
28.04.2009, 22:20
hi,

mal Dank für die Blumen \:D/


nun konnte ich heute die Hardware (für´s erste) fertigstellen.

Wie bereits geschrieben ist es nur eine "Entwicklungsumgebung". Wenn alles "steht" möchte ich es gerne auf eine einzige Platine adaptieren.


So sieht das Ganze nun aus:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-28-Taster_und_Netzteilstecker/01.jpg

Sorry wegen der schlechten Bildqualität; leider habe ich mein Stativ vergessen und wollte nicht wieder in die Werkstatt laufen...


Neu gefertigt habe ich ein kleines "Tischchen" für die drei Taster
* UP
* DOWN
* Enter
Mit ihnen möchte ich meine Menusteuerung realisieren.

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-28-Taster_und_Netzteilstecker/01a.jpg

Der Tisch ist dabei um wenige Grad nach vorne geneigt.
Da hätte ich den Winkel auch noch vergrößern können; er ist ein wenig zu klein.


http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-28-Taster_und_Netzteilstecker/02.jpg

Weil die Fräse sowieso am Laufen war gravierte ich eben noch die Tastenbezeichnungen in die Deckplatte.


http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-28-Taster_und_Netzteilstecker/03.jpg

Auf der linken Seite vergaß ich den Stecker für die Spannungsversorgung...
"Wer feilen kann ist klar im Vorteil" \:D/


http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-28-Taster_und_Netzteilstecker/04.jpg

Die Verbindungen sind alle geklebt.
Dabei ist mir aufgefallen daß der Druck während des Trocknungsvorganges und die Dauer entscheidend für die Festigkeit der Verbindung sind.
Ganz wie im Lehrbuch beschrieben...
Geduld beim Kleben ist also "angesagt".

Die Verbindungen sind alle "ineinandergreifend" gefertigt.
Das erhöht nochmal die Festigkeit.



Dann noch "rasch" die fehlende Befestigung für die Spannungsversorgung gefräst und geklebt:

http://klingon77.roboterbastler.de/ZZZ%20Roboternetz%20Forum-Bilder/2009-04-28-Taster_und_Netzteilstecker/05.jpg

fertig ist die Hardware \:D/



Die Tage leistete ich mir dann auch eine BASCOM Lizenz.
Ging mit Paypal recht flott.
Innerhalb einer Stunde hatte ich meine Bestätigung per EMAIL und konnte die Software runterladen.
Installiert und funktioniert.



Ein Menu mit nur drei Tasten zu basteln ist nicht so leicht, wie ich es mir vorgestellt habe.

Na; ja:
Erste Versuche verliefen erfolgversprechend und ich bin ja prinzipiell "voll der Hoffnung" O:)



liebe Grüße,

Klingon77

ikarus_177
29.04.2009, 13:05
Hi Klingon77,

die einzelnen "Segmente" sind wirklich sehr sauber und professionell gefertigt, da gibts absolut nix!

Ich wäre wahrscheinlich viel zu ungeduldig, das alles so penibel und komplett im CAD vorzuplanen, bei mir muss es erst mal funktionieren, danach kanns immer noch verbessert werden ;-) Hier hast du wirklich meinen absoluten Respekt!

Baffe Grüße
ikarus_177

Klingon77
29.04.2009, 19:18
hi,


in "jungen Jahren" war ich auch viel ungeduldiger.
Seit ein paar Jahren ist es etwas leichter; ich denke das hat mit dem Alter zu tun.

Dennoch brauche ich, insbesondere wenn sich ein funktionaler Bauabschnitt dem Ende der Fertigung nähert besonders viel Geduld (fällt mir schwer) damit ich den noch verbleibenden Rest nicht "hinschludere".


na ja; so sauber ist es auch nicht.

Beim kleben habe ich nicht richtig aufgepasst; da gibt es einige Patzer.

Die rechte abgerundete Ecke ist nicht richtig gefräst. Da hat wohl die Fräserradiuskomensation einen Aussetzer.

Das passiert, wenn man nicht sauber zeichnet und die Linen nicht exakt aufeinander stoßen sondern über eine kleine "Ecke" miteinander verbunden werden.

Zum Schluß vergaß ich dann auch noch die Aussparung für den Stecker...


Erare humanum est; da war ich dann doch ungeduldig :oops:


Ist aber nur für mich und auch nur ein Versuchsprojekt.
Dafür bin ich sehr zufrieden damit und ich denke daß sich die modulare Bauweise in der Zukunft "bezahlt" macht.





Nun möchte ich ggf. in der Platine die ich für alle Teile fertigen möchte (SMD) einen ATmega 64 oder sogar einen ATmega128 einbauen.

Helft Ihr mir ein wenig, wenn ich meine Planung vorstelle?


liebe Grüße,

Klingon77

Richard
29.04.2009, 21:12
hi,



Erare humanum est; da war ich dann doch ungeduldig :oops:



liebe Grüße,

Klingon77

Moin moin

Erare humanum est

Auch unter (leider) die Bezeichnung EHE bekannt. :-(
Deine Sig ist trotzdem Klasse. :-)

Gruß Richard

Klingon77
17.05.2009, 13:17
hi,

mal eine allgemeine Frage zu SMD LED´s.

Heute bin ich in den "Weiten des Netzes" über eine andere SMD RGB LED gestoßen als ich sie für mein kleines Projekt verwende:


NEUE LED:

http://www.leds-and-more.de/catalog/product_info.php?products_id=1003&osCsid=2bb6e0343d881801739d2b451c51cba2

Lichtleistung
Rot: 350 mcd bei 2,2V und 20 mA
Grün: 1000 mcd bei 3,2V und 20mA
Blau: 300 mcd bei 3,2V und 20mA

Öffnungswinkel: 120°

Preis (100 Stück): 69.95 €



ALTE LED:

http://www.led1.de/shop/product_info.php?pName=led-smd-bauform-1206-rgb-4pin-100-stueck-p-466&cName=smd-led-bauform-1206-rgb-fullcolor-c-60_104

Lichtleistung
Rot: 255 mcd bei 1,8V und 20 mA
Grün: 450 mcd bei 3,0V und 20mA
Blau: 150 mcd bei 3,2V und 20mA

Öffnungswinkel: 120°

Preis (100 Stück): 152,99 €


Die neuen sind nicht nur wesentlich heller sondern auch um mehr als die Hälfte günstiger.

Wo steckt der Haken?

Ich habe mal gelesen daß die "mcd" Angaben keinen Rückschluß auf die direkte Lichtleistung geben.
Die Öffnungswinkel sind bei beiden LED´s gleich.
Leider kann ich das nicht richtig zuordnen; da fehlt mir die Erfahrung.


Wenn ich das nun richtig lese sollten die "neuen" nicht nur heller sondern auch günstiger sein?

Für den Preisunterschied und den Helligkeitsgewinn würde ich mein Platinenlayout gerne ändern bzw. neu entwickeln.



liebe Grüße,

Klingon77

Gock
17.05.2009, 13:51
Hi!
Das siehst Du richtig. Ein Unterschied ist, dass die neue etwas mehr Leistung benötigt, weil die Spannung höher ist.
Bei gleichen Öffnungswinkeln und der Annahme gleichmäßiger Ausstrahlung kann man die Candelaangaben vergleichen.
Gruß

avion23
17.05.2009, 23:33
Bei LEDs sind die angegebenen Vorwärtsspannung immer nur ein Anhaltspunkt. Entscheidend ist das Datenblatt. Und jede LED ist unterschiedlich :( Bei den nicht-highpower-LEDs sind die angaben meistens gelogen.

LEDs gibt es auch günstiger.
http://www.dealextreme.com/details.dx/sku.4530 und
http://www.dealextreme.com/details.dx/sku.20999
sind leistungsfähiger, haben einen größeren wirkungsgrad und sind besser kühlbar. Immer die Kommentare lesen und >2 Wochen einplanen beim bestellen.

Klingon77
18.05.2009, 06:34
hi,

mal Dank für die rasche Info und Hilfe \:D/


Dann werde ich bei der nächsten Bestellung die "neuen" ordern und testen.

Das Platinenlayout zu ändern ist ja nicht die Welt und man kann ordentlich sparen.



Die Emitter kann ich für das Projekt leider nicht verwenden, auch wenn die Quelle gut ist und sie einen ordentlichen Metallring zum befestigen am Kühlkörper aufweisen.

Die LED´s sollen dazu verwendet werden Licht von der Stirnseite in eine transparente Platte zu bringen.
Dazu sind sie (mit Kühlkörper) einfach zu groß.
Für eine flächige Beleuchtung aber sicher nicht schlecht; und günstig
\:D/


liebe Grüße,

Klingon77

Klingon77
26.05.2009, 10:21
hi,

fast eine Woche hier nichts geschrieben; da war ich eifrig bei der Programmierung :mrgreen:

Das Auswahlmenu beinhaltet nun folgende Optionen:

* Farbe Rot (Einzelfarbe)
* Farbe Blau (Einzelfarbe)
* Farbe Grün (Einzelfarbe)

* Farbwechsel "harte Übergänge" (rot, blau, grün)
* Farbwechsel "weiche Übergänge" (wie im Video weiter oben); rot; blau; grün


* Für alle Programme Helligkeit in Stufen zu 10 % von 10% bis 100% einstellbar
* Für die beiden Farbwechselprogramme ist die Zeit in Schritten (abgestuft) von 3 Sekunden bis 240 Minuten für einen Farbumlauf (rot -> blau -> grün -> rot) wählbar.

Beim Programmieren habe ich sehr oft um "37 Ecken gedacht" und einen wohl unmöglichen Code verzapft; aber es funktioniert.
Das Ganze Menügesteuert mit nur drei Tasten.



Nun hat sich ein neues Problemchen aufgetan:
Beim speichern der Einstellparameter (Helligkeit/Zeit pro Umlauf) für jedes Farbwechselprogramm hat sich ergeben daß die Werte im EEprom bei Unterbrechung der Spannungsversorgung manchmal mit neuen, unterschiedlichen, nicht passenden Werten überschrieben werden :-k

Ich habe dann ein wenig hier gelesen und herausgefunden daß man mit dem Brown-Out Detektor das Problem entschärfen kann.
Der steht nun auf 4,3V (Atmega 168).
Erste Tests ergaben, daß ich den Fehler nicht mehr reproduzieren konnte.
Die Erste Speicherstelle im EEprom habe ich auch mit einer "Dummy-Variable" belegt; es änderten sich aber auch andere Speicherstellen.

Nun meine Frage:
Reicht der Brown-Out
Wie sind eure Erfahrungen ?

liebe Grüße,

Klingon77

TomEdl
26.05.2009, 13:57
Hallo!


Nun meine Frage:
Reicht der Brown-Out
Wie sind eure Erfahrungen ?

Bei meinen Anwendungen benutze ich bis jetzt nur den Brown-Out und es werden keine Speicherstellen überschrieben. Aber ich benutze nur Attiny13, Attiny26, Atmega8 , Atmega16 und Atmega 32.

Gruß
Thomas

thewulf00
26.05.2009, 14:13
Du kannst, falls Du größere Probleme hast, wie in dem anderen Thread vorgeschlagen, die Daten mehrfach, quasi als Backup, schreiben. z.B. vier mal. Dann kannst Du alle auslesen und die offensichtlich falschen gleich wieder korrigieren.

Noch eine Idee zu Deiner Software: Du hast ja mehrere LEDs, falls es die Hardware hergibt, könntest Du sie ja von links nach rechts überlaufen lassen. D.h. während links noch rot ist, ist rechts schon blau, usw.

Meiner Erfahrung nach hilft die Brown-Out gegen die meisten EEPROM-Probleme.

Klingon77
26.05.2009, 18:54
hi,

Dank für eure Erfahrungen aus der Praxis und für den Programmtip mit der Mehrfachspeicherung :idea: :mrgreen:

Da fühle ich mich gleich viel sicherer und habe auch noch die Option eines weiteren gangbaren Weges, den ich wahrscheinlich auch nutzen werde, da meine Anwendung in diesem Bereich nicht zeitkritisch ist.


Über eine Überblendung von links nach rechts, oben nach unten (oder umgekehrt); evtl. auch diagonal? habe ich auch schon nachgedacht...
Dazu müsste aber jede LED (jedes LED Paar) eine eigene Ansteuerung erhalten.
Da meine Platine nur 8mm breit ist sehe ich da momentan keinen Weg.
Die LED´s sitzen im Abstand von 20mm.

Eine andere Möglichkeit wäre ein Bussystem; ggf. über eine doppelseitige Platine auf der Rückseite mit Durchkontaktierungen zur jeweiligen LED?

Oder ein dünnes vieladriges Kabel unter der Platine und die Adressdecodierung auf die Haupt-Steuerplatine?

Oder...
Mal schauen; der Gedanke ist sehr reizvoll (für ein neues Projekt).

Diese Projket ist schon zu weit fortgeschritten. Da möchte ich keine einschneidenden Veränderungen durchführen.


Über die Programmierung möchte ich dann gar nicht nachdenken; bin schon froh, wenn meine "Lämpchen leuchten" :lol: \:D/


Diese Woche geht es nicht mehr; ggf. die nächste Woche kommen auch nochmal ein paar Foto´s von der Menuführung.

Außerdem wollte ich meinen "Alten Russen" (Oszi) mal an die Schaltung hängen.


liebe Grüße,

Klingon77