Forum: Projekte & Code Moodlight mit Touchpad


von Marius S. (lupin) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier ein kleines, altes Projekt von mir, welches ich aufgrund von 
Problemen mit dem Touchpad nochmal nacharbeiten musste.

Ich denke jetzt ist es halbwegs ordentlich und kann hier veröffentlicht 
werden.

Die Platine passt in die untere Öffnung einer Mylonit Ikea-Lampe, hat 
drei Bohrlöcher um die LED auf zu nehmen (ich habe die LED einfach auf 
eine runde Alu-Platte geschraubt und diese Alu-Platte dann mit 
Plastik-Abstandshaltern mit der Platine verbunden).

Ein- und Ausgeschaltet wird die Lampe über eine Touch-Oberfläche welche 
ich in das innere der Lampe geklebt habe. Die Geschwindigkeit des 
Farbwechsels lässt sich ändern indem man beim einschalten länger 
gedrückt hält.

Die Touch-Auswertung erfolgt mittels Code von Peter Dannegger:
Beitrag "Re: qtouch - sekt oder selters"

Auf der Unterseite der Lampe befindet sich dann der Netzteilstecker und 
das Kabel kann an der Original Öffnung heraus geführt werden.


Den Kondensator C6 am ADJ-Pin des ZXLD1350 habe ich bei meiner 
Platinen-Version noch nicht drauf. Beim Einstecken des Netzteils blitzt 
die Lampe teilweise kurz auf, da der AVR es nicht rechtzeitig schafft 
die LEDs aus zu schalten bevor die Konstantstromquelle los legt. Ich 
denke mit dem Kondensator am ADJ-Pin sollte die Konstantstromquelle 
langsamer anlaufen und das Problem behoben sein.

Wer einen HV-Brenner hat kann auch den Reset-Pin des Tiny mit dem 
ADJ-Pin verbinden um die Konstantstromquelle aus schalten zu können. Die 
Konstantstromquelle ist nämlich im Kurzschlussbetrieb wenn die LEDs aus 
sind (habe nicht nachgemessen wieviel Strom die dann noch braucht).

Wenn ich ganz sicher bin keine Änderungen mehr zu machen, werde ich mal 
ein Programm machen bei dem der Reset-Pin mit ADJ verbunden ist. Habe 
leider nur einen STK500 kompatiblen Brenner.

Fotos von einer bunten Mylonit-Lampe gibt es im Internet genügend, aber 
meinen Code/Platine habe ich mal angehangen ;-)




------------------------------------------------
Hier nochmal zum Problem mit der ersten Version:

Das Problem lag in der Auswertung des Messwertes, denn die 
Touch-Oberfläche ist eine Alu-Folie mit nur 1cm im Durchmesser und 
befindet sich hinter 1-2 mm Glas. Das ganze muss recht empfindlich sein.

Aufgrund der Erwärmung wurde nach ein paar Minuten/Stunden Betrieb aber 
fälschlicherweise ein Touch-Ereignis festgestellt und die Lampe hat sich 
wieder ausgeschaltet.

Ich tiefpassfiltere jetzt ein paar Messwerte und schaue mir die 
Veränderung des Messwertes relativ zum Mittelwert an.

von Marius S. (lupin) Benutzerseite


Angehängte Dateien:

Lesenswert?

Das einstellen der Fade-Geschwindigkeit über gedrückt halten des 
Touch-Sensors hat nicht ganz zuverlässig funktioniert. Außerdem stört 
die Sensor-Abfrage die software-PWM (da interrupts während der Abfrage 
gesperrt werden).

Deaktiviert man die Interrupts nicht ist die Sensor-Abfrage gestört 
(wohl nicht durch die Interrupt-Unterbrechung, aber aufgrund der 
Störungen durch das Schalten der LEDs).

Habe das ganze jetzt auf Hardware-PWM umgestellt (Layout war dafür 
vorgesehen), jetzt ist die Sensor-Abfrage zwar gestört (da PWM immer im 
Hintergrund läuft), aber ich bilde einen Mittelwert aus ein paar 
Messungen.

Das gedrückt halten des Sensors habe ich entfernt. Außerdem noch ein 
paar Optimierungen bei der HSV->RGB Umrechnung (keine Division mehr).

Der Code ist jetzt gut unter 1kb und würde wohl auch in einen Tiny13 
passen (da müsste man aber wieder soft-PWM verwenden, da der nur einen 
Timer bzw. zwei Output-Compare Ausgänge hat).

Anbei noch ein Foto wie ich das in die Lampe gestopft habe.

von Thomas D. (thomasderbastler)


Lesenswert?

Welchen Touchsensor hast beutzt ?

von Klaus (Gast)


Lesenswert?

Thomas der Bastler schrieb:
> Welchen Touchsensor hast beutzt ?

Wann lernst du eigentlich mal selbständig Informationen zu suchen? Schau 
dir den verlinkten Thread doch mal an. Und im Threadtitel steht was von 
qTouch. Auch danach kann man suchen, hier im Forum oder bei google. 
Warum ich diesen "nutzlosen" Kommentar scheibe, anstatt deine Frage zu 
beantworten? Es wird kein Touchsensor benutzt!

Marius S. schrieb:
> Die Touch-Auswertung erfolgt mittels Code von Peter Dannegger:
> Beitrag "Re: qtouch - sekt oder selters"

von Anton Fomin (Gast)


Lesenswert?

no works, use attiny25, no reaction on sensor

von Marius S. (lupin) Benutzerseite


Lesenswert?

Hello Anton! Did you set up the fuses correctly? 8 MHz clock? Make sure 
CLKDIV8 is not enabled (I think it's enabled by default).

Other idea is to play around with RC values (C5 and R9).
For C5 you could try anything between 1n to 100n. For R9 anything 
between 1k to 100k.

The touch sensor only works when the ISP programmer is disconnected.

Did you try with a big touch sensor surface? When the touch area is big 
then it should work better.
The touch sensing should also work better if the circuit GND is 
connected to some earth point (PE line of AC outlet).

von Anton (Gast)


Lesenswert?

What is the algorithm of the device? Click on the sensor light comes on, 
if the restraint is beginning to change the speed, click again on the 
sensor light goes out?

von Marius S. (lupin) Benutzerseite


Lesenswert?

Touch the sensor -> Light on
Touch sensor again -> Light off

You only need to touch for <1 second then the light should go on/off.

von Anton (Gast)


Lesenswert?

The device works! How to do that when the lamp is on and when you hold 
the sensor - speed down. Thank you

von Marius S. (lupin) Benutzerseite


Lesenswert?

Anton schrieb:
> The device works!

Hey Anton, that's really cool!

What was the problem? Did you need to make any change in 
software/hardware?


Anton schrieb:
> The device works! How to do that when the lamp is on and when you
> hold the sensor - speed down. Thank you

It's a bit tricky. The software from my first post had this option 
(change speed when turning on the lamp) but i removed it in the second 
software version because it was not working stable.

The problem is that when you hold your hand on the sensor the measured 
sensor value is not very stable.

I will try to add this feature again.

von Moritz N. (mox-mox)


Lesenswert?

Hi,

versteh ich das richtig, dass der ZXLD1360 einfach einen Konstanten 
Strom bereit stellt, und die IRML6301 dann die Helligkeit regeln, indem 
sie jeweils die zu ihnen parallel geschaltete LED kurzschließen?

grüne Grütze,
mox

von Marius S. (lupin) Benutzerseite


Angehängte Dateien:

Lesenswert?

Moritz Nöltner schrieb:
> versteh ich das richtig, dass der ZXLD1360 einfach einen Konstanten
> Strom bereit stellt, und die IRML6301 dann die Helligkeit regeln, indem
> sie jeweils die zu ihnen parallel geschaltete LED kurzschließen?

Jo, so ist es. Das kurzschließen erfolgt über eine PWM.
Steuert der NPN durch, so schaltet der P-MOS durch.
Der untere P-MOS wird dabei mit der geringsten Gate-Spannung 
angesteuert, welche 12V minus den Flussspannungen der oberen beiden LEDs 
entspricht (sofern die oberen beiden nicht auch kurzgeschlossen sind).

Also:
HIGH am Port -> NPN an -> P-MOS an -> LED aus
LOW am Port -> NPN aus -> P-MOS aus -> LED an


Ich habe Schaltung und Code noch ein bisschen angepasst.
Ich nutze im ausgeschalteten Zustand jetzt den Reset-Pin des Attiny um 
den ZXLD komplett aus zu schalten. Außerdem wird der Sleep-Mode 
verwendet um ein wenig Strom zu sparen.

Die NPNs wurden in der neuen Schaltung durch N-FETs ersetzt. Dadurch 
können auch die Basis-Widerstände entfallen.
Ist die Lampe aus, so wird der ZXLD deaktiviert und die N-FETs werden 
nicht angesteuert (nur ganz kurz für einen PWM Taktzyklus).
Man könnte die PWM auch noch deaktivieren und die N-FETs dauerhaft 
ausschalten, dann würde man noch ein bisschen Strom sparen.
Ich habe die Schaltung mit N-FETs aber noch nicht ausprobiert / 
aufgebaut.

Nutzt man den Reset-Pin, so müssen die beiden Testpunkte miteinander 
verbunden werden. Ich würde die beiden Testpunkte und den Fuse für den 
Reset-Pin erst verbinden / setzen, wenn die Schaltung ansonsten 
funktioniert.
Weil damit ist der Attiny nicht mehr über ISP programmierbar.

: Bearbeitet durch User
von Anton (Gast)


Lesenswert?

Can I use the PT4115 instead ZXLD1350

von Lupin (Gast)


Lesenswert?

Yes, should work as a direct replacement. But there is no gnd pad in the 
board layout.

von Anton (Gast)


Lesenswert?

Hello. How does your program to determine long press on the sensor.

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
Noch kein Account? Hier anmelden.