Re: ports.adc Kategorie: Programmierung (von ChristianK - 8.11.2004 10:12) | ||
Als Antwort auf Re: ports.adc von krassos - 8.11.2004 6:43 | ||
| ||
> > ok, fangen wir noch mal von vorn an. > > > > man nehme: > > > > 1. einen Thread, welcher Dir ständig so im etwa 250ms Takt den Wert vom > > AD Eingang einliest und am Display ausgibt. > > > > 2. einen Widerstand ( etwa 220k ) zwischen AD und +5V. > > Damit ziehen wir den AD im Ruhezustand hoch. > > > > 3. an der Masse abgreifen und zu deinem Doppeltaster gehen. > > > > 4. nach deinem Doppeltaster einmal Widerstand ( etwa 3k ) und am anderen Ausgang > > so etwa ( 5k ) anlegen. Beide Widerstände zum AD Eingang. > > > > probiers mal und poste das Ergebniss. > > Du kannst auch den 220k gegen Masse ziehen, und die Spannung der Tasterwiderstände > > holst Du dir von den +5V. Sollte auch gehen. > > > > Rene > > > > Moin, > > fürs erste würde ich mal direkt, über 10k- schutzwiderstand an die Bezugspotentiale gehen und > mir die Me�werte ansehen, die da wären 0 für Masse und 1023 für +5V. > Wenn die stabil sind, wovon ich ausgehe, würde ich an Deinem Spannungsteiler die Taster mal durch > Drahtbrücken ersetzen. Deine Tasten sind möglicherweise nicht sehr Kontaktsicher. > > mfg > krassos Hallo Rene und krassos ich habe jetzt mal folgendes ausprobiert: for i=1...4 { for n=0...12 step 6 { hdt.OkTaste1 = ports.adc(2); rblcd.goto(i,n); rblcd.zahl5(hdt.OkTaste1); sleep 10; } } Dann bekomme ich z. B. folgende Anzeige bei der Stop-Taste: (der erste Wert schwankt von 400 bis 800) 476 901 902 903 902 902 903 902 902 903 451 451 Die Anzahl der Werte mit dem Sollwert für die entsprechende Taste hängen natürlich davon ab, wie lange die entsprechende Taste gedrückt wurde. Bei extrem kurzen Antippen der Taste erhalte ich nur 3mal den Sollwert. Ich habe verschiedene Tasten ausprobiert, bei der schlechtesten erhalte ich nur 1mal den Sollwert. (Hinweis von krassos ist richtig) Das Beste wären Tasten, die eine definierte Ein-Zeit hätten, also nicht schleifende Kontakte, sondern mit einer "Schapp"-Charakteristik, wie man sie bei MIcro-Switches hat. Weder bei Reichelt noch bei Conrad finde ich ausreichende Spezifikationen um zu erkennen, welche Charakteristik die Tasten haben. Es sieht also so aus, das ich wohl mit meiner Abfrage zu schnell bin und so bei einer einzigen Abfrage des AD-Portes zu einem Zeitpunkt abfrage, wo sich der Wert noch nicht stabilisiert hat. Ob es mit einem definierten sleep funktioniert oder ob ich doch eine math.max...-Schleife benutze, die ich bei sinkendem Wert verlasse, werde ich ausprobieren, es sei denn, jemand hat eine bessere Idee Danke für die Tipps. MfG ChristianK. | ||
Antwort schreiben Antworten: Re: ports.adc (von ChristianK - 8.11.2004 11:11) |