<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.ccc-mannheim.de/mediawiki/index.php?action=history&amp;feed=atom&amp;title=2D-Touchfeld</id>
	<title>2D-Touchfeld - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.ccc-mannheim.de/mediawiki/index.php?action=history&amp;feed=atom&amp;title=2D-Touchfeld"/>
	<link rel="alternate" type="text/html" href="https://www.ccc-mannheim.de/mediawiki/index.php?title=2D-Touchfeld&amp;action=history"/>
	<updated>2026-04-19T17:19:13Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in C3MAWiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.ccc-mannheim.de/mediawiki/index.php?title=2D-Touchfeld&amp;diff=24&amp;oldid=prev</id>
		<title>Dome: Projekt pausiert</title>
		<link rel="alternate" type="text/html" href="https://www.ccc-mannheim.de/mediawiki/index.php?title=2D-Touchfeld&amp;diff=24&amp;oldid=prev"/>
		<updated>2011-12-07T17:37:37Z</updated>

		<summary type="html">&lt;p&gt;Projekt pausiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{pausiertes Projekt|Kontakt=Pensoffsky|öffentlich=ja}}&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
&lt;br /&gt;
Dieses Projekt widmet sich der Entwicklung eines lowcost 2d-Touchfelds.&lt;br /&gt;
Damit soll man fast jede solide Oberfläche in ein Eingabefeld verwandeln können.&lt;br /&gt;
Das ganze basiert auf der Bestimmung der Position von Vibrationen mit Hilfe von Piezo-Sensoren.&lt;br /&gt;
Man klebt z.B. 3 sensoren auf einen tisch, dann tippt man irgendwo zwischen den sensoren mit dem Finger und berechnet mit den Laufzeitunterschieden der Vibrationen die Position.&lt;br /&gt;
&lt;br /&gt;
Die Idee stammt von diesem Projekt: [http://hardware.slashdot.org/article.pl?sid=06/11/29/141215&amp;amp;from=rss Slashdot-Artikel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aufbau ==&lt;br /&gt;
&lt;br /&gt;
Drei Sensoren nehmmen die Vibrationen auf. Ein Operationsverstärker pro Sensor verstärkt die Signale. Ein AVR wertet diese Signale aus und überträgt die Laufzeitunterschiede an ein Programm im Zieldevice.&lt;br /&gt;
&lt;br /&gt;
== Lokalisations-Software ==&lt;br /&gt;
Benutzt wird das sogenannte Hyperbelverfahren, für welches mindestens 3 Sensoren notwendig sind. Um je 2 der Mikrophone wird eine Hyperbel errechnet. Auf diesen Hyperbeln liegen alle Punkte die von den betroffenen Mikrophonen den selben (gemessenen) Laufzeit-Unterschied  voneinander haben.&lt;br /&gt;
&lt;br /&gt;
Soweit ist schon alles objektorientiert in JavaCode implementiert, muss aber wohl in C / Bascom &amp;#039;übersetzt&amp;#039; werden, da eine Ausgabe aller Messwerte über die RS232 (serielle) Schnittstelle viel zu langsam ist!&lt;br /&gt;
&lt;br /&gt;
Im Endeffekt werden wohl nur die &amp;quot;Klicks&amp;quot; relativ zu den Mikrophonen an das Zieldevice weitergeleitet.&lt;br /&gt;
Wer sich gut mit Lösungen von etwas komplexeren Gleichungen auskennt, darf sich gerne melden :)&lt;br /&gt;
&lt;br /&gt;
Es gilt nun noch den Schnittpunkt der Hyperbeln auszurechnen, also (gleichzusetzen oder ähnliches und) nach x aufzulösen ( a, b, p sind bekannt):&lt;br /&gt;
&lt;br /&gt;
* Hyp1: y = sqrt(-a + b² (x-p)²)&lt;br /&gt;
&lt;br /&gt;
* Hyp2: y = sqrt((x² +a) / b²) + p&lt;br /&gt;
&lt;br /&gt;
=== Lösung ===&lt;br /&gt;
(sagt Derive)&lt;br /&gt;
&lt;br /&gt;
x = (√((b + 1)·(b - 1)·(a·(b^2 + 1)^2 + b^2·p^2·(b^2 - 1))) - b^2·p·(b^2 - 1))/((b + 1)·(1 - b)·(b^2 + 1)) ∨ &lt;br /&gt;
&lt;br /&gt;
x = (√((b + 1)·(b - 1)·(a·(b^2 + 1)^2 + b^2·p^2·(b^2 - 1))) + b^2·p·(b^2 - 1))/((b + 1)·(b - 1)·(b^2 + 1)) ∨ &lt;br /&gt;
&lt;br /&gt;
x = (√(a·(b + 1)·(b - 1) + b^2·p^2) - b^2·p)/((b + 1)·(1 - b)) ∨ &lt;br /&gt;
&lt;br /&gt;
x = (√(a·(b + 1)·(b - 1) + b^2·p^2) + b^2·p)/((b + 1)·(b - 1))&lt;br /&gt;
&lt;br /&gt;
Formel als Bild (klick me): [[Bild:Loesung.gif|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status Hardware: ==&lt;br /&gt;
&lt;br /&gt;
* Sensoren wurden gekauft.&lt;br /&gt;
* Prototyp einer Operationsverstärkerschaltung existiert und wartet darauf vervielfertigt zu werden.&lt;br /&gt;
&lt;br /&gt;
== Beteiligte User: ==&lt;br /&gt;
&lt;br /&gt;
* [[Pensoffsky]]&lt;br /&gt;
* [[plusminus]]&lt;br /&gt;
&lt;br /&gt;
== Status Software Controller: ==&lt;br /&gt;
 &lt;br /&gt;
* Die Auslieferung der Messwerte hat begonnen :)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;#039;touchsensor versuch 1&lt;br /&gt;
&lt;br /&gt;
$regfile = &amp;quot;m32def.dat&amp;quot;&lt;br /&gt;
$baud = 9600&lt;br /&gt;
$crystal = 2000000&lt;br /&gt;
&lt;br /&gt;
&amp;#039;long ist nicht wirklich gut in nem controller&lt;br /&gt;
&amp;#039;aber egal erstmal&lt;br /&gt;
Dim Aktiv As Long&lt;br /&gt;
Dim Inaktiv As Long&lt;br /&gt;
&lt;br /&gt;
&amp;#039;das adc zeugs einstellen&lt;br /&gt;
Config Adc = Single , Prescaler = Auto&lt;br /&gt;
Start Adc&lt;br /&gt;
Dim W As Word , Channel As Byte&lt;br /&gt;
Channel = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;gibt die anzahl der messungen während eines peaks&lt;br /&gt;
&amp;#039;und der pause danach aus&lt;br /&gt;
Do&lt;br /&gt;
&lt;br /&gt;
   W = Getadc(0)&lt;br /&gt;
&lt;br /&gt;
   If W &amp;gt; 4 Then&lt;br /&gt;
      Do&lt;br /&gt;
         W = Getadc(0)&lt;br /&gt;
         Incr Aktiv&lt;br /&gt;
      Loop Until W &amp;lt; 4&lt;br /&gt;
&lt;br /&gt;
      Print &amp;quot;a&amp;quot; ; Aktiv&lt;br /&gt;
      Aktiv = 0&lt;br /&gt;
   Else&lt;br /&gt;
      Do&lt;br /&gt;
         W = Getadc(0)&lt;br /&gt;
         Incr Inaktiv&lt;br /&gt;
      Loop Until W &amp;gt; 4&lt;br /&gt;
&lt;br /&gt;
      Print &amp;quot;i&amp;quot; ; Inaktiv&lt;br /&gt;
      Inaktiv = 0&lt;br /&gt;
   End If&lt;br /&gt;
Loop&lt;br /&gt;
End&lt;br /&gt;
&lt;br /&gt;
&amp;#039;beispiel output&lt;br /&gt;
&amp;#039;i3300      &amp;#039;lange pause&lt;br /&gt;
&amp;#039;i9         &amp;#039;störungen?&lt;br /&gt;
&amp;#039;i5         &amp;#039;störungen?&lt;br /&gt;
&amp;#039;a30        &amp;#039;klopfen start&lt;br /&gt;
&amp;#039;a18&lt;br /&gt;
&amp;#039;i10&lt;br /&gt;
&amp;#039;a89&lt;br /&gt;
&amp;#039;a20&lt;br /&gt;
&amp;#039;a442&lt;br /&gt;
&amp;#039;a100&lt;br /&gt;
&amp;#039;a105&lt;br /&gt;
&amp;#039;i9&lt;br /&gt;
&amp;#039;a107&lt;br /&gt;
&amp;#039;i3&lt;br /&gt;
&amp;#039;a99&lt;br /&gt;
&amp;#039;i17&lt;br /&gt;
&amp;#039;a71&lt;br /&gt;
&amp;#039;i13&lt;br /&gt;
&amp;#039;a111&lt;br /&gt;
&amp;#039;a281&lt;br /&gt;
&amp;#039;i8&lt;br /&gt;
&amp;#039;a142       &amp;#039;klopfen ende&lt;br /&gt;
&amp;#039;i15313     &amp;#039;lange pause&lt;br /&gt;
&amp;#039;a57        &amp;#039;mausklick start&lt;br /&gt;
&amp;#039;a266&lt;br /&gt;
&amp;#039;...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fortlaufende News: ==&lt;br /&gt;
* 20.01.2007&lt;br /&gt;
Ein Klopfen mit einem Sensor kann sehr sicher festgestellt werden. Mit leichten Verbesserungen sollte die Hardwareseite keine Probleme mehr machen. Wir habe uns entschieden erstmal die Variante mit der Peak-Detection umzusetzen.&lt;br /&gt;
* 12.01.2007&lt;br /&gt;
Den Testaufbau an einen Mega32 gehängt und ein wenig mim Bascom rumgespielt. Ich glaub der Chip hat ein Problem. Bei nem Takt über 2Mhz bekomm ich keine gescheite serielle Verbindung mehr hin.&lt;br /&gt;
* 11.01.2007&lt;br /&gt;
Ersten Testaufbau für die Verstärkerschaltung(noch nicht mit dem &amp;quot;Wunsch-OpAmp&amp;quot;) getestet, auf dem Messgerät sehen die Daten schon verwertbar aus.&lt;br /&gt;
Getestet wurde bis jetzt nur in der Ebene und nicht an der Wand.&lt;br /&gt;
* 09.01.2007&lt;br /&gt;
3 verschiedene Sensoren gekauft und erste vorsichtige Messungen durchgeführt.&lt;/div&gt;</summary>
		<author><name>Dome</name></author>
	</entry>
</feed>