- 12V Akku mit 280 Ah bauen         
Seite 2 von 8 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 79

Thema: SMD RGB LED´s mit PWM; ATmega168 / Probleme mit dem EEprom

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    Anzeige

    LiFePo4 Akku selber bauen - Video
    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

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Hallo!

    Meine Methode der Software-PWM sieht so aus:

    Code:
    '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

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    62
    Beiträge
    2.543
    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 \/


    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 ).

    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 \/


    Zitat Zitat von Gock
    ...
    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.

    Zitat Zitat von Gock
    ...
    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" \/
    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 \/

    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.112
    Zitat Zitat von Klingon77
    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.

    Zitat Zitat von Klingon77
    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.

    Zitat Zitat von Klingon77
    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.

    Zitat Zitat von Klingon77
    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???

    Zitat Zitat von Klingon77
    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ß

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    62
    Beiträge
    2.543
    hi Gock,

    mal Dank für die rasche Hilfe


    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 \/


    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
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Zitat Zitat von Klingon77
    @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

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    62
    Beiträge
    2.543
    hi,

    nach einem kurzen Zwischenspiel:

    https://www.roboternetz.de/phpBB2/ze...754&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 konnte ich 3 LED´s aufeinanderfolgend mit unterschiedlicher Geschwindigkeit aufleuchten und ausfaden lassen \/


    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).


    Code:
    '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"

    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 \/


    liebe Grüße,

    Klingon77



    Nachtrag:
    Den Threadtitel habe ich angepasst.
    Falls jemand ähnliche Probleme hat, findet er auch was in der SUFU.
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  8. #18
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    62
    Beiträge
    2.543
    hi,

    nun läuft ja meine PWM halbwegs \/

    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...


    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  9. #19
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.112
    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ß

  10. #20
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    62
    Beiträge
    2.543
    hi,

    da bin ich froh, aus der Vielzahl der FET´s einen passenden ausgesucht zu haben
    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...
    Da müsste ich dann nochmals "nachsitzen"

    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
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

Seite 2 von 8 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests