Forum: Mikrocontroller und Digitale Elektronik Hilfe bei einem Projekt.


von Anna (Gast)


Lesenswert?

Hallo an alle zusammen,

ich bin gerade bei einem Schulprojekt, bei dem ich ein wenig Hilfe im 
Bereich Mikrocontroller programieren bräuchte. Ich bin in einer 
Technikerschule und jedes Jahr gibt es hier so eine Messe, in der die 
Schüler selber ein Projekt im Laufe des Jahres aussuchen und aufbauen.
Ich habe vor, einen Handschuh für taubstumme Menschen zu entwickeln, der 
die Handzeichen in Wörter auf einem Display und vielleicht auch später 
in Töne umwandeln kann. Zuerst wollte ich dies einmal nur mit den 26 
Buchstaben des Alfabets ausprobieren. Den Handschuh habe ich schon 
besorgt und diesen mit 5 solcher Biegesensoren, welche ihre 
Ausgangsspannung mit dem Biegungsgrad des Fingers variiert, einen für 
jeden Finger, ausgestattet. Auch habe ich schon eine Tabelle aufgebaut, 
wo ich die Werte ( z.B. 1,5V - 2,2V ) der Ausgangsspannungen für jeden 
Finger und jeden Buchstaben eingetragen habe. Die meisten Buchstaben 
unterscheiden sich bei diesen Ausgangsspannungen (1-5V). Nun wollte ich 
das Programm dafür schreiben. Ich habe vor, einen PIC18F4520 zu benutzen 
und das Programm in C++ zu schreiben, da ich schon ein wenig Erfahrung 
darin habe. Nur reichen meine Vorkenntnisse aber nicht dafür aus, das 
Programm zu schreiben. :(
Könnte mir jemand vielleicht dabei helfen? Vielleicht eine Vorlage, wie 
das Programm aussehen könnte. Ich wäre euch wirklich sehr dankbar, da 
ich wirklich hilflos bin..
LG, Anna

von Axel D. (axel_jeromin) Benutzerseite


Lesenswert?

Hallo Anna,
erst einmal schreibst Du das Programm in C und nicht in C++

Dann gehts los:
Fünf mal Analogeingang einlesen

Dann Auswertung der Biegung über Fensterkomparator im Programm

Dann abgleich mit der Tabelle

und Ausgabe.

Wo ist das Problem?

Wenn Du Dich zu einem Atmel entschließen könntest, gibt es bestimmt mehr 
Beispiele.


Axel

von andy (Gast)


Lesenswert?

Das kann doch nicht ernst gemeint sein.
Wenn das die Techniker von morgen sind,Gnade uns Gott.
Ich will mir einen Fluxkompensator bauen.Zeug zum reinwerfen hab ich 
schon.
Brauche nur noch jemanden,der mir ein Programm schreibt,damit das Teil 
auch funktioniert.

von Anna (Gast)


Lesenswert?

Hallo Axel,

vielen Dank für die schnelle Antwort.

Ja, leider kann ich mich nicht zu einem Atmel entschließen, da wir den 
PIC gebrauchen sollten.

Und wegen dem Programm, welche Begriffe kann ich für die verschiedenen 
Funktionen gebrauchen?

LG, Anna

von Anna (Gast)


Lesenswert?

Hallo Andy,

Na ja, eigentlich bin ich noch keine Technikerin, da ich gerade erst mit 
der Schule angefangen habe und wir das Programmieren noch gar nicht 
gelernt haben. Auch ist das noch kein Studium oder so, sondern in 
Deutschland könnte man es mit der 10. Klasse vergleichen.

Anna

von Daniel S. (ds1982)


Lesenswert?

Hi Anna,

also einen fertigen Programmcode kannst du hier nun wirklich nicht 
erwarten, du wirst dich schon ein wenig selbst mit der Materie 
auseinandersetzen müssen.

Fang doch einfach mal an die analogen Werte vom Handschuh einzulesen, 
weiter kannst du ebenfalls schonmal die Tabelle mit deinen aufgenommenen 
Werten implementieren.

Grundlagen findest du hier auf der Seite, obs nun ein Atmel ist oder ein 
PIC ist im ersten Schritt mal egal, denn die Technik ist überall die 
gleiche. Du kannst also auch ruhig mal die hier sehr ausführlichen Atmel 
Tutorials lesen. Hast du dich durch die Grundlagen gearbeitet, verrät 
dir alles weitere das Datenblatt deine PIC's.

Kommst du an einer Stelle nicht weiter, poste hier deinen bisher 
erarbeiteten Quellcode und dein Problem und dir wird mit SICHERHEIT 
geholfen!

Grüße

D

von andy (Gast)


Lesenswert?

Hallo Anna,ich kann nicht glauben,das eine Schule ihren Schülern 
Projekte aufs Auge drückt,ohne das die Schüler über irgendwelches Wissen 
verfügen.
Aus welchem Land kommst du den?
Deine Frage " welche Begriffe kann ich für die verschiedenen Funktionen 
gebrauchen" zeigt,das du wirklich nicht viel übers Programmieren weisst.
Ich glaube,das ist vier Nummern zu gross für dich.Nicht böse sein,nur 
meine Meinung.

andy

von Anna (Gast)


Lesenswert?

Hallo Daniel,

ja, vielen Dank für die Antwort.

Gut, ich werde versuchen mich noch ein wenig darin einzuarbeiten, wenn 
es dann nicht klappt, schue ich hier wieder vorbei.

LG, Anna :)

von Daniel S. (ds1982)


Lesenswert?

andy schrieb:
> Das kann doch nicht ernst gemeint sein.
> Wenn das die Techniker von morgen sind,Gnade uns Gott.
> Ich will mir einen Fluxkompensator bauen.Zeug zum reinwerfen hab ich
> schon.
> Brauche nur noch jemanden,der mir ein Programm schreibt,damit das Teil
> auch funktioniert.

Sowas muss btw wirklich nicht sein!!

@Anna:
Wie sieht denn die Schaltung aus? Ich nehme an ihr habt euren Handschuh 
an ein PIC Evaluation-Board geschraubt??

Hast du überhaupt schonmal was mit Mikrocontrollern gemacht?

von hdd (Gast)


Lesenswert?

Also der Plan klingt schon recht sportlich, vor allem wenn du noch nicht 
programmieren kannst. Wie viel Zeit hast du für das Projekt?

Ein guter Anfang wäre denke ich, wenn du den Handschuh mal ein paar 
Leuten gibst, die Gebärdensprache beherrschen. Die sollen dann alle mal 
das Alphabet durchgehen und du misst bei jedem Buchstaben für jeden 
Finger die Spannung der Biegesensoren mit einem Multimeter. Dann kriegst 
du schonmal einen Überblick, wie weit die Messwerte streuen, da ja nicht 
jeder die Finger genau gleich hält.
Im nächsten Schritt lässt du die Leute nochmal ein paar Buchstaben 
machen und versuchst von Hand über die Messwerte zu sagen was sie 
gezeigt haben.
Erst wenn das richtig funktioniert, kannst du diese Übersetzung sinnvoll 
in ein Programm einbauen. Das geht dann vom Prinzip her wie Axel schon 
gesagt hat. Du machst für jeden Buchstaben jeweils für jeden der 5 
Messwerte ein Fenster (von-bis) in dem der Wert liegen muss. Dann gehst 
du die Liste mit den Buchstaben durch und vergleichst deine aktuellen 
Messwerte mit den gespeicherten Werten und dort wo alle 5 Werte im 
Fenster liegen ist dein gesuchter Buchstabe.
Wenn es dabei mehrere Treffer gibt könnte man z.B. schauen wo die 
Abweichung der Messwerte von den Mittelwerten der einzelnen Fenster am 
kleinsten ist.

von Anna (Gast)


Lesenswert?

Hallo Andy,

ja, hier in Brasilien sind die Schulen ein wenig anders als in 
Deutschland. Die Schüder suchen sich ein Projekt aus und müssen selber 
damit zurechtkommen. Für das Programmieren habe ich am Anfang des Jahres 
so einen Kurs gemacht, wo man so das Wesentliche erlernt. Aber welchen 
Begriff man z.B. benutzt, um die Spannungswerte einzutragen, (z.B. 1,5V 
- 3,2V), darüber muss ich halt irgenwo nachschauen müssen.
Ich glaub auch, dass das Projekt ein bisschen zu schwierig ist :D. Und 
böse bin ich dir natürlich nicht! :DD

LG, Anna

von Anna (Gast)


Lesenswert?

Hallo Daniel,

also, ich hab die Schlatung schon fertig, fehlt nur das Programm. Und 
mit dem Mikrocontroller habe ich schon ein paar einfache Schaltungen 
aufgebaut..

von Daniel S. (ds1982)


Lesenswert?

Anna schrieb:
> Hallo Daniel,
>
> also, ich hab die Schaltung schon fertig, fehlt nur das Programm.

Gut, ist denn auch sichergestellt, dass die Schaltung funktioniert?

Wenn ja fang einfach mal damit an einen einzelnen analogen Wert per ADC 
einzulesen.
Wenns nicht klappt stell hier eine konkrete Frage (mit Quelltext)!

von Anna (Gast)


Lesenswert?

Hallo hdd (?)

Ja, ich habe bis Oktober Zeit mit dem Projekt.

Ja, vielen Dank für die Tipps, ich hab dies schon mit mehreren Leuten 
versucht und Werte stimmen alle ungefähr überein.

Vielen Dank!

Anna

von Michael (Gast)


Lesenswert?

Eine Möglichkeit wäre, deine Messungen als 5-dimensionalen Vektorraum zu 
betrachten. Die fünf Messwerte stellen dann einen Vektor mit fünf 
Komponenten dar und die Tabelle (5 Werte zu jedem Buchstaben) sind die 
Ortskoordinaten deiner Buchstaben. Für die Auswertung einer Messung 
rechnet man dann den Abstand des Meßvektors zu allen Ortsvektoren der 
Buchstaben aus. Der mit dem kleinsten Abstand ist dann mit hoher 
Wahrscheinlichkeit der richtige Buchstabe.
Das sollte ganz gut in einem nicht zu aufwändiges Programm umsetzbar 
sein.

Gruß
Michael

von Anna (Gast)


Lesenswert?

Hallo Daniel,

Ja, die Schaltung ist schon fertig und funktioniert.


Michael, vielen Dank für die Hilfe ich werde mal versuchen, das Programm 
zu schreiben. Ich melde mich dann wieder. :)

Anna

von Vlad T. (vlad_tepesch)


Lesenswert?

Michael schrieb:
> Eine Möglichkeit wäre, deine Messungen als 5-dimensionalen Vektorraum zu
> betrachten. Die fünf Messwerte stellen dann einen Vektor mit fünf
> Komponenten dar und die Tabelle (5 Werte zu jedem Buchstaben) sind die
> Ortskoordinaten deiner Buchstaben. Für die Auswertung einer Messung
> rechnet man dann den Abstand des Meßvektors zu allen Ortsvektoren der
> Buchstaben aus. Der mit dem kleinsten Abstand ist dann mit hoher
> Wahrscheinlichkeit der richtige Buchstabe.
> Das sollte ganz gut in einem nicht zu aufwändiges Programm umsetzbar
> sein.
>
> Gruß
> Michael

Nearest Neighbor Classifier

Es sollten aber zu jedem Buchstaben mehrere Vektoren geben.
Das sind aber schon Deteils.

Ich würde folgende Vorgehensweise vorschlagen:

Das wichtigste ist, dass du systematisch vorgehst,
Der Anfang hört sich ja schonmal ganz gut an.
Handschuh , Sensoren und Gedanken zur Auswertung sind schon gemacht.

Jetzt kommt der Handwerkliche Teil der Umsetzung:
Als erstes zerlegt man das Problem:

Phase I: Analyse
1. Anforderungen an das System aufschreiben 
(funktionale+nichtfunktionale)
2. Tests spezifizieren

Phase II: Kennenlernen des Zielsystems
1. Testprogramm led blinken
2. ADC einlesen und LED in Abhängigkleit des Wertes ändern.
3. neues Testprogramm Kommunikation µC-->PC zB UART/RS232
   das ist essentiel zum Debuggen und Entwickeln
   Zuerst nur "Hallo Welt" (fixer Text), dann einee fest codierte
   Zahl verschicken.
4. Kombination der beiden Programme
   Senden des eingelesenen Wertes an den PC
5. Erweiterung auf alle Sensoren

   Jetzt würde ich außerdem Daten aufzeichen, von welchen
   ein Teil als Entwicklungsdaten und einaderer als Testdaten
   verwendet werden. Diese sollten dann von Hand bewertet
   werden.

Phase III: Vorentwicklung (80%-Lösung)
   Entwicklung des Übersetzers zuerst auf den PC
   Der µC liefert erstmal nur die analogen Spannungen
   So geht die Entwicklung in jedem Falle schneller
   und man braucht sich nicht für jeden neuen Ansatz zusätzlich
   noch an die µC-Restriktionen zu halten
   Verschiedene Ansätze ausprobieren und eine demonstrierbare
   Version entwickeln.

Phase IV: Stabilisierung der Funktion
   Selektion der Verfahren, die sich als am aussichtsreichsten
   herausgestellt haben und (funktionial) optimieren.
   Nebenbei Robustheit hinzufügen:
   Codequalität, Fehlerhandling, sonstige nichtfunktionale 
Anforderungen.
   Optimieren der Algorithmen in Richtung Target.

Phase V: Portierung

Vorteil ist, dass selbst wenn die Deadline schneller ist, als du, 
immerhin schon etwas da ist, was man zeigen kann. außerdem ist das ganze 
motivierender, als wenn man sich mit mehreren Baustellen auf einmal 
rumplagen muss (µC-Programmierung + Funktionsentwicklung)


Unnötig zu erwähnen, dass in jedem Schritt ausgiebig getestet werden 
sollte - automatisiert. Also aufzeichnen von use cases und einspielen 
der Aufzeichnung anstelle echter Sensordaten.
in Schritt III hautptsächlichst testen gegen die funktionalen 
Anforderungen.
in Schritt IV testen gegen alle Anforderungen
in Schritt V wie IV, aber Target wird getestet

von Axel D. (axel_jeromin) Benutzerseite


Lesenswert?

Anna schrieb:
> Ja, die Schaltung ist schon fertig und funktioniert.

Dann Zeig doch mal den Schaltplan und ein Foto.

Wo lebst Du in Brasilien?

Axel

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.