Go Down

Topic: Foliendrucksensor, Arduino als MC? (Read 3520 times) previous topic - next topic

tt22

Hallo,

Ich arbeite gerade an meiner Bachelorarbeit. Diese handelt von der Druckverteilung unter einem Schienbeinschoner beim Fußball. Ich bin dabei den Versuchsstand aufzubauen und stehe jetzt vor folgendem Problem:
Ein Foliendrucksensor soll mit Hilfe des Arduino angesteuert werden und möglichst genau Spannungsabfälle aufzeichnen. Der Sensor arbeitet über x- und y-Leiterbahnen, die an den Kreuzungen, abhängig vom einwirkendem Druck, ihren Widerstand verändern.
Jetzt wollte ich zuerst nur eine einzelne Zelle (x/y Kreuzung) ansprechen. Als Multiplexer ist dieser IC vorgesehen: ADG 731 (Datasheet: http://www.analog.com/static/imported-files/data_sheets/ADG725_731.pdf)
Wie kann ich mittels der Truth Table bestimmte Ausgänge ansteuern? Wie müsste das Programm ungefähr aussehen?

Ich besitze das Arduino Uno, bin aber ein absoluter Einsteiger. Einige Examples habe ich aber bereits durchgeführt.
Ich hoffe ich habe nichts vergessen, falls ihr aber genauere Informationen braucht, bitte bescheid sagen.
Danke!

Gruß


Lena

Bekomme ich denn Deinen Batchelor wenn ich es Dir verrate? ]:D
Denk an Herrn von und zu Nichtschlechterhügel.

Aber mal im Ernst, meinst Du nicht es wäre fairer sich zunächst mit der Materie grundsätzlich vertraut zu machen, mit dem Programm anzufangen und dann gegebenenfalls nach Lösungen zu Detailproblemen zu fragen, statt übertrieben ausgedrückt zu fragen: wer erzählt mir von die Pieke auf an, wie meine Arbeit auszusehen hat?
Ich finde das stilistisch doch sehr fragwürdig.

LG Lena
„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."

Albert Einstein

tt22

#2
Apr 23, 2012, 01:46 pm Last Edit: Apr 23, 2012, 01:49 pm by tt22 Reason: 1
jop, da hast du recht! Es ist aber nicht so, dass ich mich mit der Materie überhaupt nicht auseinander gesetzt habe. Leider sind in meinem Studiengang Elektronik und Programmentwicklung etwas kurz gekommen, was den Einstieg bei Arduino schon recht schwer macht. Die Frage oben war aber wohl eindeutig zu allgemein...
Ich versuche mich mal weiter in die Materie einzuarbeiten. Kennt denn jemand ein Bsp (außer diesen: http://arduino.cc/en/Tutorial/HomePage), dass mir helfen kann die SPI-Kommunikation weiter zu verstehen? Vor allem interessiert mich, wie ich mittels dem Arduino ein Binärwort an den Multiplexer schicken kann...

Edit:
@Lena: meinen Bachelor kann ich dir nicht anbieten, aber natürlich eine Erwähnung in meiner Danksagung XD



Lena

Für die Kommunikation via SPI steht eine spezielle Library zur Verfügung.http://arduino.cc/en/Reference/SPI
Nun brauchst zunächst nur zwei verschachtelte schleifen für Zeilen und Spalten, setzt die jeweigen Schalter und speicherst das Ergebnis in einem array[16,16].
Mal so gaaanz grundsätzlich ohne nähere Kenntniss was am Ende rauskommen soll.

LG Lena
„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."

Albert Einstein

Udo Klein

Ich sehe das ähnlich wie Lena. Neulich hat sich hier einer bei seiner Meisterarbeit helfen lassen. Hinterher ist im eingefallen, dass die Prüfer vieleicht eine andere Auffassung von selbständiger Arbeit haben als er. Davon hat am Ende keiner was.

Was für Bachelor willst Du werden?
Check out my experiments http://blog.blinkenlight.net

uwefed


Ich sehe das ähnlich wie Lena. Neulich hat sich hier einer bei seiner Meisterarbeit helfen lassen. Hinterher ist im eingefallen, dass die Prüfer vieleicht eine andere Auffassung von selbständiger Arbeit haben als er. Davon hat am Ende keiner was.

Das schöne war noch, daß er den Moderator frech forderte, alles zu löschen und seinen Freund, den Anwalt zitierte. Das alles noch unter 3 verschiedenen Usern.

Wir helfen gerne, aber lassen uns nicht ausnutzen. Ums blumig zu sagen: Das meiste muß auf Deinen Mist wachsen.   ;) ;) ;)

Grüße Uwe


sth77

Ich denke nicht, dass das hier in eine Grundsatzdiskussion ausarten sollte, die beiden Fälle sind auch nicht vergleichbar. Beim letzten Mal war eine Komplettleistung gefragt, hier geht es um die Ansteuerung eines ICs im Rahmen einer Arbeit. Ist wohl eher mit dem Carrerabahn-Thread zu vergleichen, oder?
Da mir selbst die nöige Erfahrung mit SPI-Programmierung fehlt, muss ich an dieser Stelle auch passen. Eine Frage drängt sich mir aber auf: Wird der ADC des Mega328 schnell genug sein, um die Messwerte auswerten zu können? Ich habe mal versucht, eine Gameboy-Kamera anzusteuern, da versagte der inerne ADC auf ganzer Linie...
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Lena

Ich wollte da auch keine Grundsatzdiskussion draus machen und deshalb habe ich im Anschluß auch versucht konstruktiv auf die Sprünge zu helfen.
Die Frage des Timings habe ich für mich auch sofort hinterfragt. tt22 (ich liebe solche Anreden) will 64 Messwerte erfassen, die (verm.) in einem Zeitfenster von wenigen ms auftreten - das wird wirklich eng.
Bei einem Zeitfenster von 10 ms und geschickter Programmireung könnte das aber funktionieren.
Leider tappen wir ja bezüglich der Rahmenbedingen sehr im dunkeln.
Mag der Threadstarter sich zunächst die geschilderten Aspekte zu gemüte führen und dann sehen wir weiter.

LG Lena
„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."

Albert Einstein

MaFu

Als Entscheidungshilfe, ob ich eine Lichtschranke Analog oder Digital mit Schmitt-Trigger auswerte, hatte ich mal eine kleine Versuchsreihe gemacht. Ich hatte für die Zeitmessung analogRead() in einer Schleife 10000 mal aufgerufen. Um halbwegs realistische Zeiten zu erhalten, wurden in der Schleife auch noch diverse Berechnungen durchgeführt (schließlich bringt einem das reine Auslesen wenig).

Ich kam dabei auf 8,93 Aufrufe pro Millisekunde bzw. 0,112 Millisekunden für einen Aufruf.

Wenn man den ADC des ATmega beschleunigt, kommt man auf 58,59 Aufrufe/ms (0,017 ms/Aufruf).
_______
Manfred

tt22

#9
May 02, 2012, 11:45 am Last Edit: May 02, 2012, 02:23 pm by tt22 Reason: 1
Hallo,
bitte entschuldigt, dass ich erst jetzt Antworte. Zunächst einmal muss ich sagen, dass die Arduino Programmierung nur einen kleinen Teil meines Projekts darstellt. Die konstruierte Messeinrichtung verfügt außerdem über einen Kraftaufnehmer, Winkelmesser und Beschleunigungssensor, die ich aber alle mittels LabView ansteuern kann...
(Der Arduino sollte am Ende möglichst auch mit LabView kommunizieren, aber da habe ich mit VISA schon etwas gefunden...)
Den ersten Beitrag habe ich echt unüberlegt hier hin "gerotzt"...sry dafür.

Zu dem Timingproblem:
Leider sollen nicht nur 64 Messwerte erfasst werden, sondern im Optimalfall 484. Das Zeitfenster würde etwa 15ms betragen.
Dabei wird eine Messfläche von ca.64 cm^2 abgedeckt. Die Anzahl der Messwerte könnte ich durch verkleinern des Messfelds oder verringern der Auflösung noch mindern.

Quote
Ich kam dabei auf 8,93 Aufrufe pro Millisekunde bzw. 0,112 Millisekunden für einen Aufruf.


Das wären in 15ms also ca 134 Messwerte...damit könnte ich mit Sicherheit schon ein Aussagekräftiges Ergebnis erzielen. (klar, besser gehts immer...)

Ich werde jetzt erstmal versuchen, mittels analogRead() (ähnlich wie MaFu) ein kleines Programm zu schreiben um mal den ADC meines Arduino zu testen.

Grüße

Edit: http://arduino.cc/en/Reference/AnalogRead
Habe gerade noch was zur max. lese Rate gefunden. Diese beträgt ca. 10MHz. Also könnte ich immerhin etwa 150 Messwerte in 15ms aufnehmen.

sth77


Edit: http://arduino.cc/en/Reference/AnalogRead
Habe gerade noch was zur max. lese Rate gefunden. Diese beträgt ca. 10MHz. Also könnte ich immerhin etwa 150 Messwerte in 15ms aufnehmen.

Einigen wir uns auf 10 kHz? ;) Aber das mit 150 Messwerte in 15 ms passt.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

tt22



Edit: http://arduino.cc/en/Reference/AnalogRead
Habe gerade noch was zur max. lese Rate gefunden. Diese beträgt ca. 10MHz. Also könnte ich immerhin etwa 150 Messwerte in 15ms aufnehmen.

Einigen wir uns auf 10 kHz? ;) Aber das mit 150 Messwerte in 15 ms passt.


joa, damit kann ich leben;)

koldomon

hallo zusammen,

guck dir doch mal hier nach. Wenn du Geschwindigkeit brauchst, dann hilft nur noch in Assembler oder C den ADC direkt anzusprechen. Nur so wirst du wissen, wo deine Taktzyklen abgeblieben sind. Nix gegen "analogRead", aber wenn ich mir die Doku des mega328 durchlese, glaube ich, dass du mit direkter CPU programmierung in C am meisten rausholen kannst.

cu markus

Razor1990

#13
May 16, 2012, 09:34 pm Last Edit: May 16, 2012, 09:37 pm by Razor1990 Reason: 1
Was hältst du von einer zufälligen Abfrage der Werte, so kannst du alle Messstellen Abfragen, und erhältst zufällig an manchen Punkten ne höhere Auflösung. Oder zwei Arduinos die gekoppelt sind und zeitversetzt abfragen.

Meine Vorschläge sollen nur dazu dienen dich in eine andere Denkrichtung zu stoßen. ;-)

Edit: oder prioritäten setzen, vielleicht sind Werte am Rand wichtiger oder weniger wichtig.

MaFu

Ich komm nochmal auf die Anmerkung in meinem letzten Post zurück:
Wenn man den ADC des ATmega beschleunigt, kommt man auf 58,59 Aufrufe/ms (0,017 ms/Aufruf).

580 Abfragen in 10 ms, reicht das nicht?
_______
Manfred

Go Up