Hallo, ich habe mir eine Disco-Brille gebaut. Diese tut soweit alles was sie soll außer dass sie öfters hängen bleibt. Leider kann ich den Fehler nicht finden. Aufbau: Die Disco-Brille besteht aus einem alten 3D-Brillenrahmen auf dem ich viele kleine SMD-LED's in den Farben Rot, Blau und Gelb befestigt habe. Jeweils alle LED's einer Farbe sind parallel geschalten und werden von einem Mikrokontrouler gesteuert. Dieser ist in Basic mit Bascom-AVR programmiert und wählt verschiedene Farbkombinationen random(zufällig) aus. Funktion: Die LED's blinken in unterschiedlichen Abständen und Farbkombinationen. Problem: Aus unerklärlichen Gründen bleibt der Farbwechsel oft einfach stecken(ca. 20 Sekunden lang). Dies passiert aber immer nur wenn gerade die Farbe Gelb alleine leuchtet. Da der Ablauf des Farbwechsel mit einem "Systhem-Randomizer" generiert wird, ist die Abfolge der Farben bei jedem Neustart gleich. Wann die Brillenbeleuchtung stecken bleibt ist aber nie gleich, trotzdem passiert es immer nur wenn Gelb leuchtet. Manchmal bleibt es schon nach paar Sekunden stecken oder manchmal kann es bis zu 3 minuten dauern. Da wahrscheinlich das alles sehr schwer zum Vorstellen ist habe ich ein klienes Video gemacht in dem viele Bilder der Brille sind und auch der Schaltplan + Code vom Mikrokontrouler ist. Link: https://youtu.be/wD37maJuNms Ich hoffe, dass mir jemand helfen kann :-) Mfg Lukas PS: bin 14 Jahre alt und kenne mich jetzt noch nicht so gut aus in Elektronik also bitte nicht auf kleine, unwichtige Fehler achten:-)
Lukas S. schrieb: > PS: bin 14 Jahre alt und kenne mich jetzt noch nicht so gut aus in > Elektronik Dann solltest Du jetzt gleich lernen, dass zu einer Frage in einem Forum Dein Programm, ein Bild vom Aufbau und alle weiteren wichtigen Informationen gehören.
Hi Den Code habe ich mir jetzt nicht aus dem Video raus extrahiert. Normal sollte es reichen, wenn der PullUp des Reset-Pin eingeschaltet wird oder Reset extern auf High gezogen wird, um den µC sicher am Leben zu halten. Benutzt Du GOSUB und GOTO in Deinem Code? Ggf. springst Du aus der Gelb-Szene per Goto raus, was irgend wann einen Stack-Überlauf zur Folge hat. Wenn das Programm hängt, kümmert sich der Watchdog nach einigen Sekunden darum, daß es weiter geht. Wäre mir recht, wenn Du den Code hier posten könntest. Den Aufbau kann man, so meine ich, im Video ausreichend gut erkennen. MfG PS: Ich zweifle, daß der Zweifler den Video-Link gefunden hat :O
:
Bearbeitet durch User
Lukas S. schrieb: > bin 14 Jahre alt Immerhin LED-Vorwiderstände, aber nur 1 und dann alle LEDs einer Farbe direkt parallel -> nicht gut, jede LED braucht ihren eigenen Vorwiderstand. Das ist aber wohl nicht die Ursache, sondern: Stützkondenstaor am uC vergessen. Es sei denn, du überlastet deine Stromversorgung und die Spannung bricht ein, wenn gerade gelb an ist. Das könnte man ja mit einem Voltmeter am uC messen.
Danke für die Schnellen antworten! Patrick J. schrieb: > Wäre mir recht, wenn Du den Code hier posten könntest Der Code ist jetzt im Anhang :-) Patrick J. schrieb: > Benutzt Du GOSUB und GOTO in Deinem Code? Gar keines von beiden. Ich verwende einen Loop oder ist das eine Methode von den zwei? Michael B. schrieb: > Immerhin LED-Vorwiderstände, aber nur 1 und dann alle LEDs einer Farbe > direkt parallel -> nicht gut, jede LED braucht ihren eigenen > Vorwiderstand. oh das ist dumm. Ich kann das jetzt nur noch sehr schwer ändern weil alle LED's angeklebt sind. Ist es sehr wichtig das alles noch zuändern? Michael B. schrieb: > Stützkondenstaor am uC vergessen. > > Es sei denn, du überlastet deine Stromversorgung und die Spannung bricht > ein, wenn gerade gelb an ist. Das könnte man ja mit einem Voltmeter am > uC messen. Hab schnell nach gemessen und keinen Spannungseinbruch festgestellt. Außerdem wäre es unlogisch weil Gelb am aller wenigsten Strom zieht und außerdem nehme ich an dass im Netztgerät solche Kondensatoren schon verbaut sind. Aber zur Sicherheit kann ich paar Kondensatoren dazu pfuschen.
Tut mir leid, Hier der code:
1 | $regfile = "attiny13.dat" |
2 | $crystal = 1000000 |
3 | $hwstack = 8 |
4 | $swstack = 4 |
5 | $framesize = 4 |
6 | |
7 | Dim R As Byte |
8 | Dim Z As Word |
9 | |
10 | Config Portb.0 = Output |
11 | Config Portb.1 = Output |
12 | Config Portb.2 = Output |
13 | |
14 | Orange Alias Portb.2 |
15 | Gelb Alias Portb.1 |
16 | Blau Alias Portb.0 |
17 | |
18 | Orange = 0 |
19 | Gelb = 0 |
20 | Blau = 0 |
21 | |
22 | Do |
23 | R = Rnd(9) |
24 | Z = Rnd(500) |
25 | Z = Z + 100 |
26 | |
27 | If R = 1 Then |
28 | Orange = 1 |
29 | Blau = 0 |
30 | Gelb = 0 |
31 | Waitms Z |
32 | |
33 | Elseif R = 2 Then |
34 | Orange = 0 |
35 | Blau = 1 |
36 | Gelb = 0 |
37 | Waitms Z |
38 | |
39 | Elseif R = 3 Then |
40 | Orange = 0 |
41 | Blau = 0 |
42 | Gelb = 1 |
43 | Waitms Z |
44 | |
45 | Elseif R = 4 Then |
46 | Orange = 1 |
47 | Blau = 1 |
48 | Gelb = 0 |
49 | Waitms Z |
50 | |
51 | Elseif R = 5 Then |
52 | Orange = 0 |
53 | Blau = 1 |
54 | Gelb = 1 |
55 | Waitms Z |
56 | |
57 | Elseif R = 6 Then |
58 | Orange = 0 |
59 | Blau = 1 |
60 | Gelb = 1 |
61 | Waitms Z |
62 | |
63 | Elseif R = 7 Then |
64 | Orange = 1 |
65 | Blau = 0 |
66 | Gelb = 1 |
67 | Waitms Z |
68 | |
69 | Else |
70 | Orange = 1 |
71 | Blau = 1 |
72 | Gelb = 1 |
73 | Waitms Z |
74 | End If |
75 | |
76 | Loop |
77 | End |
Mfg Lukas
Hi Den Code als Bild ... gewöhnungsbedürftig. Was spricht gegen Text? Die Stützkondensatoren sind keramisch und sollten so nahe wie möglich an den µC. Die sind dafür da, den µC 'zu stützen', wenn intern irgend was geschaltet wird. Dort muß auch jeder Transistor etwas Strom haben und bis Dieser von Außen nachgeflossen ist, kann der µC schon eine Unterspannung erkannt haben. Wir reden hier von winzigsten Strömen, Die aber sehr schnell benötigt werden. Der Kondensator im Netzteil (bei einem SNT aber eher auch nur ein kleiner Elko) ist dafür viel zu weit weg und viel zu träge. MfG
Patrick J. schrieb: > Was spricht gegen Text? sorry hab nicht nachgedacht aber hab jetzt eh den Code schon als text gepostet. Patrick J. schrieb: > Die Stützkondensatoren sind keramisch und sollten so nahe wie möglich an > den µC. Gut, dann löte ich die Kondensatoren schnell dazu. Passen 2 x 100µF(=200µF)? Oder sollten es mehr sein?
Hi Siehe dazu: http://rn-wissen.de/wiki/index.php/Abblockkondensator https://www.mikrocontroller.net/articles/Kondensator#Entkoppelkondensator PS: Der Code sollte machen, wofür Er gedacht ist. Denke, es ist hier kein Software Problem. MfG
:
Bearbeitet durch User
Dass nur ein Widerstand sowohl für alle LEDs einer Farbe, als auch gleichzeitig für die Erhöhung des Eingangswiderstandes der Transistor-Kollektorschaltung verwendet wird (Einsparung des Basiswiderstandes), finde ich gar nicht so doof. Ganz im Gegenteil, dadurch kann die Schaltung kleiner aufgebaut werden und wenn dann noch die LEDs aus der gleichen Produktionsserie mit annähernd gleichem Spannungsabfall sind, dürfte es keine nennenswerten Probleme geben, wie man im Film schön sehen kann. Bis auf den Kondensator würde ich an der Schaltung nichts mehr ändern. Ich finde die Brille jedenfalls gut und werde mir über die Weihnachtsfeiertage evtl. auch so eine bauen, vielleicht aber nur mit einem 4017, wegen der Einfachheit (Wegfall des Programms).
Patrick J. schrieb: > Siehe dazu: > http://rn-wissen.de/wiki/index.php/Abblockkondensator Danke, die Seite hat mir sehr geholfen. Habe auch im Datenblatt des MC nachgeschaut aber da ist nichts genaues gestanden. Ich werde die Kondensatoren jetzt anlöten...irgendwie dazu pfuschen, weil die Platine neu ätzen würde zu lange dauern :-). Hoffentlich klappt es dann. Patrick J. schrieb: > PS: Der Code sollte machen, wofür Er gedacht ist. > Denke, es ist hier kein Software Problem. Das ist gut. Es ist immer sehr mühsam den SMD-MC raus zu nehmen und zu verkabeln damit man ihn programmieren kann. Mfg Lukas
Hi Ein Umprogrammieren sollte doch bei der minimalen Beschaltung auch in der Schaltung gehen? Da Du eh sogar mit SMD rumhantierst , kannst Du Dir eine Aufsatz-Platine mit Pogo-Pins bauen - dann musst Du 'nur' die Beinchen treffen und während des Programmieren nicht so doll zittern. Alternativ das ISP-Interface - zumindest die Lötaugen dafür - auf der Platine irgendwo hinpacken - Die trifft man auch besser mit den Pogo-Pins. MfG und viel Erfolg. PS: Kann es sein, daß 'der Zufall' es will, daß Du x Sekunden Gelb bekommst? Ok, da ein Umprogrammieren akut noch etwas umständlich ist, wohl nur per Ersatz-Chip verifizierbar. Bei der Zwischenplatine hätte eine DIP-Version aber auch nicht so viel Unterschied gemacht, oder?
:
Bearbeitet durch User
Es funktioniert jetzt mit den Kondensatoren. Vielen Dank an alle die mir geholfen haben :-) Schlauberger schrieb: > Ganz im Gegenteil, dadurch kann die Schaltung kleiner aufgebaut werden > und wenn dann noch die LEDs aus der gleichen Produktionsserie mit > annähernd gleichem Spannungsabfall sind, dürfte es keine nennenswerten > Probleme geben, wie man im Film schön sehen kann Ja, die LED's sind alle die selben und waren auch nicht die billigsten.Bis jetzt hatte ich noch keine Probleme damit. Schlauberger schrieb: > Bis auf den Kondensator würde ich an der Schaltung nichts mehr ändern. Kondensatoren sind jetzt oben und alles funktioniert also wird jetzt die Arbeit eingestellt :-) Schlauberger schrieb: > Ich finde die Brille jedenfalls gut und werde mir über die > Weihnachtsfeiertage evtl. auch so eine bauen Freut mich zu hören.Finde die Brille auch ziehmlich cool. Patrick J. schrieb: > kannst Du Dir eine Aufsatz-Platine > mit Pogo-Pins bauen Gute Idee. Werde ich machen :-) Patrick J. schrieb: > PS: Kann es sein, daß 'der Zufall' es will, daß Du x Sekunden Gelb > bekommst? Ja kann sein Patrick J. schrieb: > Bei der Zwischenplatine hätte eine DIP-Version aber auch nicht so viel > Unterschied gemacht, oder? Nein eigentlich nicht aber die Platine ist so doch kleiner und flacher., vorallem wenn man einen Sockel für den MC verwendet hätte. Außerdem wollte ich es einfach mal in SMD machen weil es doch bisschen schwieriger ist und es mir Spaß macht :-) Hätte nicht gedacht dass das Problem so "einfach" zu lösen gewesen wäre. [strong] Wäre darauf alleine warscheinlich nie gekommen.Danke an alle die mir geholfen haben :-)!!! [strong]
Lukas, Denk noch mal (in deinem Video) über das Wort Beläuchtung nach ... Ansonsten: die Brille ist nett. Wie versorgst du die mit Strom?
:
Bearbeitet durch User
Wegstaben V. schrieb: > Denk noch mal (in deinem Video) über das Wort Beläuchtung nach ... Ja da ist ein Rechtschreibfehler drin. Hab das leider erst bemerkt als das Video schon oben war und ich den Link schon gepostet hatte. Da wollte ich nicht wieder alles ändern und hab eigentlich gehofft dass es niemand bemerkt :-) >Ansonsten: die Brille ist nett. Wie versorgst du die mit Strom? Mit 3 x Batterien AAA(1,5V) = (4,5V) in einem Batteriehalter. Diesen verbinde ich über einen kleinen Stecker mit der Brille. Den Batteriehalter kann man sich mit einem Magneten auf sein T-shirt klemmen damit er nicht stört. Mfg Lukas
"Es ist immer sehr mühsam den SMD-MC raus zu nehmen und zu verkabeln damit man ihn programmieren kann." wenn man öfter solche Basteleien macht empfiehlt es sich einen SMD Programmieradapter zu nutzen einfach ein Reststück einer Platine nehmen das Layout von dem µController und ein paar Anschlüsse für Steckverbinder drauf ätzen. Während des flashen kann man den µC mit einer Wäscheklammer auf den Smd Pads fixieren
dudley schrieb: > wenn man öfter solche Basteleien macht empfiehlt es sich einen SMD > Programmieradapter zu nutzen Werde ich mir anschauen, nur leider sind diese Teile nicht gerade billig. dudley schrieb: > einfach ein Reststück einer Platine nehmen das Layout von dem > µController > und ein paar Anschlüsse für Steckverbinder drauf ätzen. Während des > flashen kann man den µC mit einer Wäscheklammer auf den Smd Pads > fixieren Das klingt viel besser. Werde das gleich machen. Mfg Lukas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.