Vorstellung: Touch-System für LED Tisch...

  • Hallo Forum,


    in aller Kürze ein paar Infos zu meinem Touchprototypen.


    Erstmal die Eckdaten:


    Ikea Couch Tisch (25 €)
    zersägt und mit einer RGB LED Matrix verstehen
    Abdeckplatte ist TruLED Plexiglas in schwarz
    4x Küchenwaage von ebay ausgeschlachtet, um an die Kraftsensoren/DMS Brücken zu kommen (20 €)
    Bei TI 4x den ADS1231 gesampelt und Platinen dafür geordert... (40 €)


    Und so schaut es bis jetzt aus:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Also Vorteile der Technik:
    -Druck auf Tischplatte erkennbar und Position bestimmbar
    -ein Kraftsensor rauscht nur im 0,2 Gramm Bereich... (ist eine Brückenausgangsspannung im Nanovoltbereich)
    -damit 10 Gramm schwere Objekte (z.B. leere Redbulldose) schon Pos. -detektierbar
    -80 Hz Samplingrate der Sensoren (aber noch digitaler Tiefpass für 4 Samples)
    -Multitouch möglich... -> Eingangssignal differenzieren und Änderungen dürfen nur im <80 Hz Abstand passieren....
    -Absolutgewichte bestimmtbar... (zB. Schluck aus Glas nehmen und die Differenz messen lassen: "Oh, da ist aber jemand durstig" anzeigen :D
    -sehr hohe Ablösung der Position, da kommt meine 288 Pixel Matrix schon nicht mehr hinter her...


    Nachteile:
    -Nullpunkt driftet weg, da durch Temperatur und Luftfeuchte sich die obere Glasplatte und die untere Holzplatte "verklemmen"
    Der Drift lag pro Sensor bei 10 Gramm in einer Stunde. Da es aber sehr langsam driftet, könnte man das digital recht gut rausfiltern. (kommt noch)
    -für die Absolutgewichtsbestimmung mit guter Genauigkeit ist der mechanische Aufbau recht anspruchsvoll... die Platte darf natürlich an den Seiten nicht schleifen und darf nur gleichmäßig auf den 4 Kraftsensoren aufliegen
    -das Auslesen von 4 Sensoren gleichzeitig erfordert schon etwas Geschick, da nicht alle Werte zur selben Zeit zur Verfügung steht, wenn man den Clock-Eingang des ADS1231 nicht verwendet (kann ich nur jedem ans Herz legen)


    Hier noch ein paar Bilder vom Aufbau:






    Später soll auf dem Tisch noch ein kleines PongGame für zwei Spieler laufen und beim Abstellen von Gegenständen meine Wasserwellen losgetreten werden... so wie hier:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Grüße


    Basti

  • Sehr coole Sache! - Du hast ja schon davon erzählt, aber dass das wirklich so gut funktioniert, ich bin begeistert! :thumbup:


    sehr schön ist halt auch, dass das System Gläser auch erkennt, da gibt's bei IR meist Schwierigkeiten...


    das mit dem Multitouch würde mich interessieren, wie Du das genau vorhast - ich denke mir das so (?), Du hast ja einen Druckpunkt erkannt, drückt man nun noch woanders dazu, dann verschiebt sich die detektierte Stelle auf den gemeinsamen Schwerpunkt, also einen Punkt auf einer Linie zwischen beiden Berührungen...


    wie weit der neue Punkt dann davon weg ist, kommt ja drauf an, wie fest man drückt...(?) - klar, Du kannst ja das Gesamtgewicht bestimmen, und daraus die Kraft auf den neuen Druckpunkt, aber meist ist's ja so, dass man dann den bereits gedrückten Punkt wieder ein bisschen loslässt - könnte schwierig werden, aber Du wirst das schon hin bekommen...


    warum eigentlich TTT...? - wäre eher was für sonstige LED-Basteleien, wenn noch ein Layout zum Nachbasteln dabei wäre und zumindest die SW, mit der man die Sensoren abfragen und die gedrückte Stelle bestimmen kann, dann definitiv was für "LED Schaltungen, Treiber und µC" - nach so Touch-Tischen wird ja auch immer wieder gefragt... ;)


    wäre auch noch cool, wenn Du eine Waage als Beispiel verlinken könntest, oder sind da in allen die selben Sensoren drin...? (bzw. zumindest "kompatible"...)

    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!

  • Danke Zeltinger70...


    ich hab hier auch ein weibliches Wesen und die macht quasi immer die Abnahme... daher könnte das passen ;)


    Pesi ich wollte nicht den ganzen Tisch vorstellen, weil der aller Vorraussicht nach nie fertig wird :) und schon gar nicht perfekt... wie das immer so ist mit den Dauerbaustellen :whistling:


    Die Sensor-ICs auslesen ist an sich nichts besonderes: Wenn der MISO Pin von 1 auf 0 wechselt ist ein neuer Messwert abrufbar, dann einfach 25 Bit auslesen... oder auch 32, damit es aufgeht.
    Wie man das bei 4 ICs ohne große Prozessorlast hinbekommt ist dann eher der Aufwand. Da bin ich selbst noch dran... wollte wieder den geliebten DMA beim XMega benutzten... leider gewöhnt man sich viel zu schnell an den schönen DMAC, so das bei diesem Projekt schon 5 DMA Kanäle nötig wären, aber der XMega hat doch "nur" 4 :pinch:


    Das mit dem Multitouch ist jetzt nicht zu wörtlich zu nehmen... genau so wie du es beschreibst, ist es auch mit dem besten digitalen Filter nicht möglich... also zwei Finger sind nicht drin... aber mehrere Gläser im Abstand von zehntel Sekunden sollte drin sein (statische Gewichte)... müsste dann schon doof kommen, wenn zwei Leute wirklich ihr Glas genau Zeitgleich abstellen... =) aber das wird die Praxis zeigen!


    Das Pong Game ist aber kein Problem... da ja die 4 Taster (2x UpDown) genau auf die Ecken kommen, kann man einfach auf das Erreichen bestimmte Absolutbeträge in den Ecken prüfen... der Cheater fasst dann natürlich in die Mitte um den anderen zu ärgern :P


    Küchenwaage war diese hier:
    ebay


    Bin aber der Meinung das in fast jeder so ein Biegebalken drinnen ist... will aber für nichts garantieren. In Personenwaagen sind mir schon Halbleiter DMS entgegen gekommen... die brauchen diese interen 128 fache Verstärkung des von mir empfohlenen ICs nicht (in der Größe -> da besserer K Faktor)


    Grüße


    Basti

  • Pesi ich wollte nicht den ganzen Tisch vorstellen, weil der aller Vorraussicht nach nie fertig wird :) und schon gar nicht perfekt...

    Muss ja gar nicht - wie gesagt, nur das Touch-System an sich, wie's ja auch im Titel steht: "Touch-System für ..." ;)


    damit man nicht das Layout nachpinseln und SW-mäßig das Rad noch mal erfinden muss, nur das als Ätzvorlage und die Routine, die die Sensoren abfragt und die X/Y-Koordinaaten raus spuckt, so war das gemeint.


    Das würde ja schon reichen an Nachbau-Doku, was man dann mit den Koordinaten macht, bleibt jedem selbst überlassen... ;)

    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!

  • Okay, kein Problem, ist ja kein Geheimprojekt... hab nur noch nix rausgerückt weil ich selbst noch nicht zufrieden mit dem Source bin...
    aber dann bleibt noch genug Luft zum Verbessern und Diskutieren... ;)


    Zum Auslesen wird der Compareausgang eines Timers (Compare match bei overflow halbe) auf die SPI Clockleitung der ICs gelegt und der Overflowinterrupt des Timers aktiviert...


    z.B. Waage 1:


    Code
    TCC0.CNT = 0;
    					TCC0.CTRLB |= TC0_CCAEN_bm;
    tc_set_cca_interrupt_level(&TIMER_EXAMPLE, TC_INT_LVL_LO);


    Dann steht bei mir folgendes in der ISR:



    Anschließend stehen die Werte in tempi und die ganzen 24 Bit Auflösung braucht man auch nicht... da davon einige verrauscht sind... (16 Bit rauschfrei)


    Code
    alter_wert3 = wight3 = tempi1>>9;


    Was man noch braucht ist ein Nullabgleich und den Abgleich einer bestimmten Masse die genau in der Mitte des Tisches positioniert werden muss...
    Hier über zwei Pushbuttons des Explainboardes realisiert:



    Danach muss man alle Rohwerte auf das Realgewicht zurückrechnen: (hier entsteht noch großer Wertverlust... besser wäre: wight1*kilo1 - wight1_zero*kilo1;


    Code
    wight1_real = (wight1 - wight1_zero)*kilo1;
    			wight2_real = (wight2 - wight2_zero)*kilo2;
    			wight3_real = (wight3 - wight3_zero)*kilo3;
    			wight4_real = (wight4 - wight4_zero)*kilo4;


    Und nun kann man mit dieser Funktion die Position auf der Matrix feststellen... dabei ist meine 24*12 Pixel groß...daher der Wert 23 und 11...



    Die Funktion schaut ob ein Mindestdruck auf der Tischplatte anliegt... dabei sind die 2000 noch recht fiktiv, also nicht mit irgendwie mit Gramm gleichsetzen (kommt halt drauf an, was man auf den Tisch aufsetzt um die Mitte zu justieren ;)


    Anschließen wird geschaut auch welcher Tischseite das Objekt steht und die Sensoren mit mehr "ausschlag" werden dann für die Positionsberechnung zu rate gezogen...
    Das mit der *8 und mit der %8 ist dann meine eigene schnelle Rundung... damit das Pixel passende Pixel nicht dem Rundungsfehler zum Opfer fällt...


    Sooo, dass wars auch schon... eigentlich kein Hexenwerk...
    Im Anhang noch das Eagle File der Kraftsensorplatine...



    Grüße


    Basti


    P.S. Mir ist es nicht möglich Tabs bei dieser Forensoftware richtig zu benutzen... :thumbdown:

  • Super, vielen Dank! - hab's mal verschoben...

    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!