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
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
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.
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
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
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
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
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 :)
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?
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.
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
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..
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)!
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
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
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
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