LSD (LED) Tisch ^^

    LSD (LED) Tisch ^^

    Servus erst mal an alle Forenuser ... geile Seite surf schon die letzten beiden Tage in diesem Forum :) und muste mich einfach anmelden

    bin heute von PIX-Ambilight zu einem 8x8 RGB Tisch gestolpert 64px RGB-Couchtisch+Sensor->[Fertiggestellt] und war schon echt fasziniert ... bis ich bei YouTube das hier entdeckt habe



    hat einer von euch schonmal mit diesem "Sensacell Module HSI64-36-RGB" gearbeitet ?????

    Wenn ich das richtig verstehe ist da ein kapazitiver Sensor mit drinne ... lasse mich aber auch gerne eines besseren belehren

    hier mal ein PDF von der Herstellseite
    sensacell2.com/Website/wp-cont…erface-Protocol-1.0.1.pdf

    und hier mal ein Bild vom Modul

    mmhh das klappt nicht ... hier der Link
    cclightway.com/tt/site/ttboard…1&s_key=71&page=1&idx=236

    sowie das ausschaut besteht der Tisch aus 8x18+ Modulen ... bestimmt schweineteuer :S
    Freu mich auf Resonanz ... :D

    Hier noch ein Wiki-Link
    en.wikipedia.org/wiki/Sensacell

    P.s. Bin normalerweise eher der Forenleser als -schreiber ... verzeiht mir das ich mich mit dem einbetten von links ein bisl blöd anstelle
    P.P.s. Wer Rechtschreibfehler findet darf sie behalten. :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nibbl3r“ ()

    Hi, Willkommen!

    nibbl3r schrieb:

    Wenn ich das richtig verstehe ist da ein kapazitiver Sensor mit drinne ... lasse mich aber auch gerne eines besseren belehren
    das stimmt schon so - Diskutiert wurde über das Teil hier schon mal, aber gearbeitet hat wohl noch keiner hier damit (oder dann vergessen, Bescheid zu sagen... :D)

    Wohl auch, weil das Ding bestimmt nicht billig ist...

    Aber, gut dass Du dran erinnerst: Das Thema ist ja wieder eingeschlafen, und dann wurde mehr mit IR-Reflexsensoren experimentiert - wäre evtl. durchaus lohnenswert, das mal kapazitiv zu versuchen, so ein Sensor ist ja auch relativ einfach selbst gebaut...

    Danke auch für den Link zum PDF, das liest sich sehr interessant, insb. die Beschreibung der automatischen Adressierung.

    P.S.: Witzig: als ich gerade nach dem Link zu Elm-Chan gesucht habe, habe ich gesehen, dass ich die Sensacell-HP auch bei meinem Bookmarks mit drin habe... :D (wollte mich wohl mal in ner ruhigen Minute genauer mit dem Teil befassen, dann aber wieder vergessen.... :whistling: )
    It's only light - but we like it!

    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!
    Zum Thema Kapazitiver Touchsensor:

    Ich hab mir mal so ne qick&dirty Lösung für nen kapazitiven Touchsensor gemacht: Hab ne 1ct Münze genommen und an einen Port von nem ATMega angeschlossen. Kein zusätzlicher Kondensator. Dann den Port auf low schalten lassen um den Sensor zu entladen. Dann hab ich ihn über den internen Pull up geladen und nach ner gewissen Zeit(bei mir 4* nop @8MHz müssten dann 0,5µs sein) geschaut, ob die anliegende Spannung schon als HIGH(>3,5V?) durchgeht. Wenn ich jetzt meinen Finger drauf oder in gewissem Abstand darüber halte vergrößere ich die Kapazität des Kondensators und er lädt langsamer. Die Wartezeit hab ich experimentell ermittelt(geht wsl auch am schnellsten). Nach besagter Zeit ist die Anliegende Spannung dann noch LOW. Hab meinen Code noch angefügt.

    Quellcode

    1. DDRB |= (1<<PB1); //PB1 -> output
    2. PORTB &= ~(1<<PB1); //PB1 low -> sensor entladen
    3. DDRB &= ~(1<<PB1); //PB1 -> input
    4. PORTB |= (1<<PB1); //Sensor über internen Pull up laden
    5. asm volatile("nop"); //warten... 4CK = 0,5µs @ 8MHz -> anpassen an Sensorfläche
    6. asm volatile("nop");
    7. asm volatile("nop");
    8. asm volatile("nop");
    9. //Kapazität(Spannung am Sensor überprüfen)
    10. if(PINB & (1<<PB1)){
    11. //Kapazität ohne Finger
    12. }
    13. else{
    14. //mit Finger
    15. }


    mfg pacad

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „pacad“ ()

    Ging ziemlich zuverlässig. Ich war selber erstaunt, wie gut und mit wie wenig Aufwand des ging. Mit einem Referenzkondensator würde es wsl präziser funktionieren, aber es hat bei mir auch so wunderbar funktioniert. Und bei den Materialkosten von 1ct ist das ein wirklich gigantisches Ergebnis. Ich hatte zwischen Finger und Kupferfläche/Geldmünze auch Testweise auch eine Plastikplatte(genaueres kann ich leider nicht sagen) mit 2mm Dicke gehabt und mir den Kreis von der Münze aufgemalt, dass ich halbwegs treff und selbst so hat des wunderbar funktioniert. Ich hab draufgelangt und die LED hat geleuchtet. Vlt bau ichs morgen nochmal schnell auf, dann kann ich euch auch mal ein kleines Video machen ;)

    mfg pacad
    Das größte Problem bei sowas ist IMHO nicht die Hardware sondern die Software.

    Ich möchte nicht wissen (eigentlich doch) wieviel tausende von programmier Stunden für die paar Effekte draufgegangen sind.

    Sowas läßt sich IMHO als Hobby einfach nicht machen sondern nur wenn man sich da auch mal ein paar Monate in Vollzeit mit beschäftigen kann
    und das geht halt nur wenn man ne Firma im Rücken hat die einen dafür bezahlt.

    mfg
    Falo
    Naja, das Teil kommuniziert ja über RS485, gibt da den Zustand der Sensoren aus, und empfängt Daten, wie die LEDs angesteuert werden sollen...

    das kann man an so nen RS485/USB-Konverter klemmen, und dann die Daten in den PC rein, bzw. die Muster aus dem PC raus schicken...

    am PC dann Processing dafür, das ist genau für sowas gemacht ;) - damit ist das kein allzu großer Aufwand
    It's only light - but we like it!

    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

    pacad schrieb:

    Zeit(bei mir 4* nop @8MHz müssten dann 0,5ns sein)
    Nein, es sind 500ns = 0,5µs.

    pacad schrieb:

    Wenn ich jetzt meinen Finger drauf oder in gewissem Abstand darüber halte vergrößere ich die Kapazität des Kondensators und er lädt langsamer.
    Normalerweise koppelt man so aber nur eine Wechselspannung (vor allem 50 Hz und was sonst noch so "in der Luft ist") ein, halte mal die Fingerspitze an einen hochohmigen Oszitastkopf, da kannst du es gut sehen. Für deine Zwecke sollte die andere Hand oder die Füße nicht allzu hochohmig mit +5V verbunden sein.

    Transistor schrieb:

    Nein, es sind 500ns = 0,5µs.
    Ja, hm, auch das kann man nicht so ganz genau sagen, man weiß ja nicht, was der Compiler aus "if(PINB & (1<<PB1))" macht, das können auch 3, 4 Asm-Befehle und damit weitere Takte werden... ;)

    Transistor schrieb:

    Normalerweise koppelt man so aber nur eine Wechselspannung (vor allem 50 Hz und was sonst noch so "in der Luft ist") ein
    Ja, auf die Art funktioniert auch das hier - der fragt einfach ne Fläche an nem ADC ab, Wert größer soundso heisst "berührt", weil da eben durch das Einkoppeln der 50 Hz-Verschmutzung die Spannung am ADC dann steigt.

    Ein echter kapazitiver Sensor ist das (der verlinkte, meine ich) aber nun *definitiv* nicht, da wird ja nix geladen oder entladen, einfach nur die Spannung am Port gemessen - trotzdem erstaunlich, wie gut das funktioniert (siehe Video in dem Beitrag).

    Hier (bei Pacad) aber, wenn das wirklich so ist, dass mit Finger drüber das Laden *länger* dauert, also bei Finger drüber der Eingang noch *low* ist, dann müsste das ja doch echt kapazitiv sein, wenn's ne Einstreuung wäre, sollte der Eingang ja bei Finger drüber immer *high* sein..? (so wie bei JayDragon).

    Domi: Bei der verlinkten Schaltung von Elm Chan wird übrigens auch gemessen, wie lange es dauert, den Kondensator (also die Kombination Sensorfläche - Finger) *auf*zuladen, hier über einen externen 1 MOhm Pullup - da dauert es dann länger bis der C geladen ist und man hat mehr Zeit zum Auswerten als mit dem internen 50 k Pullup...

    Interessant ist das allemal, und wie gesagt, eigentlich echt simpel - muss ich auch mal ausprobieren, wie weit das geht (also ab welchem Abstand über der Sensorfläche), ob man das so hin bekommt, dass man bei so ner Matrix zuverlässig einen Sensor auslösen kann mit der Hand darüber, ohne die benachbarten anzusprechen - das wäre dann wohl unter'm Strich einfacher als diese IR-Reflexlichtschranken-Sache... wenn die Auswertung wirklich nur ein paar Takte dauert, kann man das auch in ner sowieso laufenden Timer-ISR mit unterbringen...

    Und auch ganz generell, statt nem Taster einfach ne Kupferfläche an nen Port, schon coole Sache, die viele Möglichkeiten bietet - z.B. ne Leuchte mit Plexiabdeckung, die man per Berührung auf der linken Seite runter- und rechts raufdimmt o.ä., ohne dass Taster/Schalter zu sehen sind, und das mit so wenig Aufwand... k.A., warum der kapazitive Sensor irgendwie wieder bei mir vom Schirm verschwunden ist... :D ?(
    It's only light - but we like it!

    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

    Pesi schrieb:

    Ja, hm, auch das kann man nicht so ganz genau sagen, man weiß ja nicht, was der Compiler aus "if(PINB & (1<<PB1))" macht, das können auch 3, 4 Asm-Befehle und damit weitere Takte werden... ;)
    Es ging aber um 4 NOP-Befehle: ( 4* nop @8MHz müssten dann 0,5ns sein)

    Pesi schrieb:

    Hier (bei Pacad) aber, wenn das wirklich so ist, dass mit Finger drüber das Laden *länger* dauert, also bei Finger drüber der Eingang noch *low* ist, dann müsste das ja doch echt kapazitiv sein, wenn's ne Einstreuung wäre, sollte der Eingang ja bei Finger drüber immer *high* sein..? (so wie bei JayDragon).
    Zwei Flächen von 1qcm haben bei einem Abstand von 1mm eine Kapazität 0,88pF zueinander. Das entspricht in etwa dem, was pacad beschrieben hat. Die genannte Methode müsste also rel. geringe Änderungen dieser Kapazität feststellen und das bei gleichzeitiger starker Störeinkopplung und einer um Größenordnungen höheren Eigenkapazität des Ports.
    Eine kapazitive Einstreuung wäre eine Wechselspannung am Eingang, die sich der momentanen Gleichspannung überlagert und je nach Amplitude sowohl high als auch low-Pegel erzeugen kann.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Transistor“ ()

    turi schrieb:

    Es gibt doch von Atmel die QTouch-Lib. Ich habe mich damit nur mal im Überblick beschäftigt, aber da sind auch schon Sensoren mit beschrieben, so viel ich weiß. Dann könnte man etwas fertiges nehmen.
    Ja, da gibt es so nette fertige ICs die die komplette Arbeit übernehmen. Eigentlich nicht mal so teuer. Ich hab hier ein Evaluation-Board vom AT42QT1012: Eine einzelne Touch-Taste mit Ein-, Aus Funktion und Timer-Aus im SOT23-6 Gehäuse. Damit lässt sich schon mal direkt eine LED (oder ein Transistor für mehrer) schalten. Das gleiche gibt es auch als Tasterfunktion (ich glaub der AT42QT1011), was dann für einen Touch-Tabel optimal wäre.
    Man könnte natürlich auch einen mehrfachen Touch-Schalter nehmen, was in Summe sicher günstiger wäre - allerdings ist da dann auch der Aufwand des Auswertens größer.
    Grüße aus Niederbayern

    Andy
    _____________________________________________________________________________________
    Momentan laufende Aktionen: PIX- Die Einzelpixel-Platine , Runde PLCC6 Leiterplatte, PLCC6 RGB-Stripe
    Ich meinte nun auch eher den pacad, dass man eben nicht so genau sagen kann, dass da wirklich exakt 500 ns bis zur Messung gewartet wird (was ja auch egal ist, da Wert sowieso experimental ermittelt... ;)

    Interessant ist aber auch, dass die Methode anscheinend aber ja doch zuverlässig funktioniert... Elm Chan schreibt von 1-10 pF (k.A., wo er den Wert her hat) Änderung durch den Finger - und dass diese Änderung eben leicht zu messen sei.

    Er misst auch bei seiner SW zum kalibrieren erst mal die Kapazität ohne Finger (was dann also aber bedeutet, dass man beim Einschalten des Geräts die Tasten nicht berühren darf ;)), diese bleibt ja konstant, und die *Änderung* sei eben groß genug, um festgestellt werden zu können... Er schreibt natürlich auch dazu, dass das Ganze noch nicht in extrem verseuchter Umgebung getestet wurde, aber ich denke mir, wenn's auf dem Basteltisch geht mit dem ganzen Kram aussenrum, dann wohl im Wohnzimmer auch... ;)

    Hier dann noch seine Kapazitätsmessung, auf der das Ganze aufbaut, angeblich erreicht er damit 20 fF Auflösung...

    Was mich interessieren würde: pacad lädt ja den Kondensator, und schaut dann nach ca. 500 ns, ob schon die "high"-Schwelle überschritten wurde, wenn nicht, ist also der Kondensator noch nicht so weit geladen, wegen größerer Kapazität durch den Finger...

    könnte natürlich real auch davon kommen, dass da die negative Halbwelle der Einstreuung die Ladespannung überlagert, und deswegen noch "low" ist - aber das doch dann nur in 50% der Fälle, also sollte der Sensor so doch nur 50/50 funktionieren...? - weil es könnte ja genauso gerade positiv einstreuen, also dann "high", also Finger nicht erkannt...?

    Wäre evtl. interessant, in ner Schleife ganz schnell (also *wesentlich* öfter als 50 mal in der Sekunde) den Sensor abzufragen, und je nach dem ne LED an oder aus - wenn die Funktion doch durch die Einstreuung kommt, sollte dann die LED doch mit 50 Hz flimmern, wenn man den Finger auf den Sensor legt...?

    turi: ja, das hatte ich mir damals auch schon kurz angesehen, aber so verstanden, dass das für spezielle ICs von Atmel wäre, nicht für jeden beliebigen AVR-µC...?

    Andy: klingt interessant! - insb. dieser AT42QT1011, wenn der nicht zu teuer wäre - da kann man sich den Aufwand dann natürlich sparen, und bei einer "Taste" pro Feld wäre dann eben auch der einzelne besser geeignet für sowas, als ein Mehrfach-IC...
    It's only light - but we like it!

    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

    Transistor schrieb:

    Nein, es sind 500ns = 0,5µs.

    Danke, hab mich wohl um eine Größenordnung vertan. Habs nun ausgebessert.

    dgoersch schrieb:

    Bei allen DIY-Lösungen', die mir bisher begegnet sind (elm-chan, µC-Forum, ...) wurde wenn ich mich recht erinnere nicht die Zeit gemessen, bis der C geladen war, sondern wie lang es dauerte ihn über den Pullup zu entladen.

    Ich hab die Variante noch nicht gesehen, wo die Zeit zum entladen gemessen wurde. Wobei ich um genau zu sein auch noch nie danach gesucht hab... Aber bei mir funktionierts so auch wunderbar

    Pesi schrieb:

    Andy: klingt interessant! - insb. dieser AT42QT1011', wenn der nicht zu teuer wäre - da kann man sich den Aufwand dann natürlich sparen, und bei einer "Taste" pro Feld wäre dann eben auch der einzelne besser geeignet für sowas, als ein Mehrfach-IC...


    Aber auch wenn man sich das selbst macht, wäre es nicht gerade billig(zumindest, wenn man entsprechend viele Sensoren benötigt).

    Hab auch mal Zeit gefunden schnell ein kleines Video zu machen, dass das ganze Verständlicher wird.
    [YouTube]Yyr7k5PWxso[/YouTube]
    hoffe das mit dem Einbetten klappt. Wenn nicht, ist hier noch der Direktlink: youtube.com/watch?v=Yyr7k5PWxso

    Da YouTube den Quellcode iwie nicht in der Videobeschreibung haben will hier noch der komplette Code ganz exklusiv für euch ;)

    C-Quellcode

    1. #include <avr/io.h>
    2. #include <util/delay.h>
    3. #include <stdbool.h>
    4. int main(void){
    5. DDRB = 0xFF;
    6. bool pressed = false;
    7. while(1){
    8. DDRB |= (1<<PB1);//PB1 -> output
    9. PORTB &= ~(1<<PB1); //PB1 low -> sensor entladen
    10. DDRB &= ~(1<<PB1); //PB1 -> input
    11. PORTB |= (1<<PB1); //Sensor über internen Pull up laden
    12. asm volatile("nop"); //wait 7CK = 0,4375µs @ 16MHz -> anpassen an Sensorfläche
    13. asm volatile("nop");
    14. asm volatile("nop");
    15. asm volatile("nop");
    16. asm volatile("nop");
    17. asm volatile("nop");
    18. asm volatile("nop");
    19. //Kapazität(Spannung am Sensor überprüfen
    20. if(PINB & (1<<PB1)){
    21. //Kapazität ohne Hand
    22. pressed = false;
    23. }
    24. else{
    25. //mit Hand
    26. if(!(pressed)){
    27. PORTB ^= (1<<PB0);
    28. _delay_ms(25);
    29. pressed = true;
    30. }
    31. }
    32. DDRB |= (1<<PB1);//PB1 als output
    33. PORTB &= ~(1<<PB1); //PB1 auf Masse -> Sensor entladen
    34. _delay_ms(10);
    35. }
    36. }

    Der Code ist hoffentlich ausführlich genug Kommentiert und nicht von all zu schlechtem Stil :S
    Zur erklärung noch: Die LED ist an PB0 und der Sensor an PB1

    mfg pacad

    Edit: Das mit dem YouTube Video hat gut funktioniert, aber mit den Zitaten hab ich mir mein Posting trotzdem ruiniert.. Bessers grad wieder aus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „pacad“ ()

    Hallo,
    sorry, das ich den Thread nach einem halben Jahr wieder rauskrame. Ich habe aber leider ein paar Probleme mit der Sache mit den kapazitiven Schaltern. Grundsätzlich klappt das bei mir, wenn ich also direkt die Kupferfläche berühre. Bei 2mm Plexiglas geht es schon nicht mehr. Wenn ich einen Widerstand (EDIT: von 1R-300K verschiedene ausprobiert) in Reihe schalte, ist die Reichweite zu extrem. Hier also die eigentliche Frage: Wie kann ich die Schaltschwelle, also die Schaltentfernung, präziser einstellen? Ich verwende einen ATmega8 mit 16MHz externem Quarz.
    Danke und
    Grüße
    Diphthong

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Diphthong“ ()

    Hi,
    mit den Nops habe ich schon einiges ausprobiert, leider mit dem selben Ergebnis: Bei 4 Nops ist der Schalter zu empfindlich (dazu gleich noch was) und bei 5 Nops zu unempfindlich. Ich habe mich eben zu ungenau ausgedrückt, ich meinte eigentlich, wie man das hardwaremäßig präziser einstellen kann. Könntest Du vielleicht trotzdem Deine anderen Programme posten?
    Jetzt zur genaueren Problembeschreibung: Ich habe eine geätzte Platine mit SMD Bauteilen (u.a. ATmega8). Darüber sind in ca. 6mm Entfernung die Kupferflächen, darüber dann die 3mm Plexiglasplatte. Wenn die Platine getrennt vom Plexiglas und den Kupferplättchen ist, funktioniert alles, ich kann den Schalter durchs Plexiglas bedienen, wenn aber alles zusammengebaut ist, ist der kapazitive Schalter immer aktiv. Vermutlich bilden die Kupferfläche und die Platine den Kondensator. Deshalb muss ich die Schaltschwelle auf ziemlich genau 3mm einstellen, damit ich gerade noch durchs Plexiglas schalten kann, aber die Platine dabei nicht stört. Ich hoffe, ihr habt das Problem verstanden.
    Danke und
    Grüße
    Diphthong

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Diphthong“ ()