-         

Ergebnis 1 bis 9 von 9

Thema: Lauflicht mit Schieberegistern spinnt manchmal

  1. #1

    Lauflicht mit Schieberegistern spinnt manchmal

    Anzeige

    guten morgen
    das is jetzt eigentlich kein wahnsinnig hochkompliziertes problem, aber es wundert mich

    ich hab ein einfaches lauflicht nach einem tutorial zusammengebastelt
    http://www.moddingtech.de/tut_ledlau..._01_de,59.html
    das funktioniert soweit wie es soll. Nur wenn ich das lauflicht ausschalte und wieder einschalte dann läuft es zwar weiterhin wie es soll "auf- und abbauend von links nach rechts" nur dann ist es nicht so dass die leds gleichmäßig nebeneinander an sind sondern da is mal eine led an, eine aus, zwei an, eine aus, noch ein paar an usw... wenn ichs dann noch ein paar mal ein/ausschalte isses wieder normal

    kann das an der stromversorgung liegen? ich benutzt bei 16 ultrahellen leds (ca. 0,32A) ein 300mA Netzteil
    nit resigniert nur reichlich desillusioniert
    e bessje jet hann ich kapiert

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    15.07.2004
    Alter
    32
    Beiträge
    807
    Ne, das liegt daran, dass beim ab und anschalten die einzelnen Registerelemente nicht alle auf "null" gehen, also noch irgend ein Mist darin "gespeichert" ist. Das liegt daran das die Eingänge ja eine Kapazität haben und wie ein Kondensator eine gewisse Zeit geladen bleiben können.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Es liegt daran, daß der Pin 9 = Reset beim Einschalten nicht kurz auf Low gezogen wird, um alle Ausgänge auf 0 zu setzen.
    Lösung: 100nF nach GND und 1kOhm nach Plus anschließen, dann gibt's beim Einschalten durch den leeren Kondensator kurz Low und damit Reset.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    16.02.2005
    Ort
    D-98746
    Beiträge
    75
    Hallo BoondockDuck,

    ich weiß nicht, ob Du daran Interesse hast aber ich habe letzte Weihnachten für unseren Weihnachtsbaum vorm Haus so eine Steuerung mit einem Atmel Prozessor (AT90S2313) gebaut. Vom elektronischen Aufwand ist es nicht viel komplizierter, wie die Schaltung, die Du verwendet hast! Käme halt noch die Programmierung des Prozessors dazu.

    Das Lauflicht läuft dann nicht nur in einer Richtung sondern Du kannst die verschiedensten Schaltfunktionen einfügen.
    Bei mir läuft das Licht vorwärts normal, rückwärts normal, vorwärts invertiert, rückwärts invertiert, aller der Reihe nach an und dann wieder von hinten der Reihe nach aus u.s.w.

    Dem Spieltrieb ist da keine Grenze gesetzt

  5. #5
    @hpm
    danke, was meinst du mit interesse? also wenn du mir da mal ein paar infos drüber zuschicken könntest wäre das ganz nett von dir

    Zitat Zitat von kalledom
    Es liegt daran, daß der Pin 9 = Reset beim Einschalten nicht kurz auf Low gezogen wird, um alle Ausgänge auf 0 zu setzen.
    Lösung: 100nF nach GND und 1kOhm nach Plus anschließen, dann gibt's beim Einschalten durch den leeren Kondensator kurz Low und damit Reset.
    bin ich dumm oder wieso bekomm ich das nicht hin?

    also clear -> widerstand -> kondensator -> masse ?
    wenn ja, dann entläd sich der elko doch nicht wieder nach dem erneuten ausschalten?
    nit resigniert nur reichlich desillusioniert
    e bessje jet hann ich kapiert

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo BoondockDuck!

    Vielleicht hilft Dir die Skizze:
    Code:
               VCC
                +
                |....
                |   .
               .-.  |
            10k| |  - D
               | |  ^
               '-'  |
                |   .
                +-------------> Reset Pin
                |
           10n ---
               ---
                |
               ===
               GND
    
      Die Diode (D) beschleunigt nur das Entladen des C
    
      (falls nötig).
    MfG

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Genau wie PICture es gezeichnet hat. Die Diode brauchst Du nicht und ob Du 10nF mit 10k oder 100nF mit 1k nimmst ist Pott wie Deckel.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  8. #8
    ok danke ... hab nen pott wie deckel gemacht

    jetzt gehts so wie es gehen soll
    nit resigniert nur reichlich desillusioniert
    e bessje jet hann ich kapiert

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    16.02.2005
    Ort
    D-98746
    Beiträge
    75
    Hi BoondockDuck,

    "wenn Du interesse hast" Damit meine ich, dass ich erst meine alten Unterlagen mal sortieren muss um Das hier rein zu setzen!

    Hier mal ein stück für den Anfang.

    Ich habe mit dem Projekt mit µC Programmierung angefangen.

    Code:
    '******************************************************************************
    'Name                : Lauflicht5x.bas
    'Purpose             : Lauflicht für Weihnachtsbaum
    'Version              : V0.02
    'Compiler            : Bascom AVR 1.11.7.4
    '
    'Hardware             (1) LED's bzw. Schaltverstärker
    '                         an PB0 bis PB5
    '                     (2) Schalttaster zur Hand/Auto- Steuerung
    '                         an PD0 und PD1
    '
    'Chiptyp             : AT90S2313
    '******************************************************************************
    
    $regfile = "2313def.dat"                                    'AT90S2313
    $crystal = 4000000                                          'Quarz-Frequenz
    
    
    
    Config Portb = Output                                       'PBx als Ausgänge
    Config Portd = Input                                        'PDx als Eingänge
    
    Dim W As Byte                                               'W= Werte in Lauflicht lesen
    Dim I As Byte                                               'I= Schleife für 1 Durchgang
    Dim J As Byte                                               'J= Vieviel mal Schleife
    
    Dim Z As Byte                                               'Z= Zählerwert
    Z = 1
    
    Dim D As Byte
    D = 20                                                      'D= Anzahl der Schleifen
    
    Dim T As Integer                                            'T= Taktzeit
    T = 200
    
    Portb = 63                                                  ' alle Ports EIN
    Wait 60                                                     ' 60 sec Vorheizen
    
    Auto:
    
    Do
    
    For J = 1 To D
        If Pind.1 = 1 Then
        Goto Hand:                                              'Hand/Auto- Ebene
        End If
      Restore Vor1
      For I = 1 To 5
        Read W
        Portb = W
        Waitms T
      Next I
    Next J
    
    For J = 1 To D
        If Pind.1 = 1 Then
        Goto Hand:                                              'Hand/Auto- Ebene
        End If
      Restore Rueck1                                            'Zeiger auf Beginn der Daten setzen
      For I = 1 To 5                                            'Lese nächsten Wert
        Read W                                                  'Setze Port
        Portb = W
        Waitms T
      Next I
    Next J
    
    For J = 1 To D
        If Pind.1 = 1 Then
        Goto Hand:                                              'Hand/Auto- Ebene
        End If
      Restore Neg1                                              'Zeiger auf Beginn der Daten setzen
      For I = 1 To 5                                            'Lese nächsten Wert
        Read W                                                  'Setze Port
        Portb = W
        Waitms T
      Next I
    Next J
    
    For J = 1 To D
        If Pind.1 = 1 Then
        Goto Hand:                                              'Hand/Auto- Ebene
        End If
      Restore Neg2                                              'Zeiger auf Beginn der Daten setzen
      For I = 1 To 5                                            'Lese nächsten Wert
        Read W                                                  'Setze Port
        Portb = W
        Waitms T
      Next I
    Next J
    
    For J = 1 To D
        If Pind.1 = 1 Then
        Goto Hand:                                              'Hand/Auto- Ebene
        End If
      Restore Add1                                              'Zeiger auf Beginn der Daten setzen
      For I = 1 To 10                                           'Lese nächsten Wert
        Read W                                                  'Setze Port
        Portb = W
        Waitms T
      Next I
    Next J
    
    For J = 1 To D
        If Pind.1 = 1 Then
        Goto Hand:                                              'Hand/Auto- Ebene
        End If
      Restore Wechs1                                            'Zeiger auf Beginn der Daten setzen
      For I = 1 To 12                                           'Lese nächsten Wert
        Read W                                                  'Setze Port
        Portb = W
        Waitms T
      Next I
    Next J
    
    For J = 1 To D
        If Pind.1 = 1 Then
        Goto Hand:                                              'Hand/Auto- Ebene
        End If
      Restore Kllauf1                                           'Zeiger auf Beginn der Daten setzen
      For I = 1 To 3                                            'Lese nächsten Wert
        Read W                                                  'Setze Port
        Portb = W
        Waitms T
      Next I
    Next J
    
    For J = 1 To D
        If Pind.1 = 1 Then
        Goto Hand:                                              'Hand/Auto- Ebene
        End If
      Restore Ende                                              'Zeiger auf Beginn der Daten setzen
      For I = 1 To 2                                            'Lese nächsten Wert
        Read W                                                  'Setze Port
        Portb = W
        Wait 1
      Next I
    Next J
    
    Loop
    
    End
    
    
    
    
    '+++++++++++++++++++++++++++++++++++++++++++
    ' Daten für verschiedene Lauflichtfunktionen
    '+++++++++++++++++++++++++++++++++++++++++++
    
    
    Vor1:
    Data 33 , 34 , 36 , 40 , 48,                                '6  12345 einzenl vorwärts
    
    Rueck1:
    Data 48 , 40 , 36 , 34 , 33,                                '6  54321 einzeln rückwärts
    
    Neg1:
    Data 62 , 61 , 59 , 55 , 47,                                '6  12345 negiert einzeln
    
    Neg2:
    Data 47 , 55 , 59 , 61 , 62,                                '6  54321 negiert einzeln
    
    Add1:
    Data 32 , 33 , 35 , 39 , 47 , 63,                           '6  12345 addierend
    Data 62 , 60 , 56 , 48 ,                                    '6  12345 subtrahierend
    
    Wechs1:
    Data 32 , 33 , 49 , 51 , 59 , 63,                           '6  1-15-152-1524-15243
    Data 32 , 63 , 32 , 63 , 32 , 63,                           '6  3xalle
    
    Kllauf1:
    Data 37 , 42 , 52,                                          '6  13-24-35
    
    Ende:
    Data 31 , 32,                                               '6  12345 im Wechsel
    
    
    
    Hand:
    
    If Pind.1 = 0 Then
       Goto Auto:
    End If
    
    If Pind.0 = 0 Then
       Z = Z * 2
    End If
    
    If Z > 32 Then
       Z = 1
    End If
    
    Portb = Z
    
    Wait 1
    
    Goto Hand:
    Das ist der fertige Code, der bei mir im Steuergerät läuft.
    Im Code ist eigentlich schon alles beschrieben.

    Ich habe eine Doppelstockplatine gebaut.
    Auf einer Platine ist der Prozessor und das 5V- Netzteil.

    Auf der Anderen Platine ist das 230V Leistungsteil mit Solid State Relais. Damit habe ich die Kiste auf ein Minimum reduzieren können und die Verlustwärme hält sich in Grenzen.
    Betrieben wird hiermit ein ca. 20m langer Lauflichtschlauch, der Weihnachten immer um den Weihnachtsbaum vorm Haus gehängt wird

    Lass dich nicht vom Code schrecken!
    Als ich anfing war der Code vielleicht 10 Zeilen lang!

    Das meinte ich mit Spieltrieb!!

Berechtigungen

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