Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: ports.adc Kategorie: Programmierung (von ChristianK - 8.11.2004 11:11)
Als Antwort auf Re: ports.adc von ChristianK - 8.11.2004 10:12
Ich nutze:
C-Control II Unit, CC2-StarterBoard, OSOPT V3.0
> > > 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.
>
>
>
Ergebnis:
Ich habe zwischen dem wait (Abfrrage, ob Taste gedrückt wurde)
und dem Zuweisen des Variablenwertes ein sleep 25 eingefügt.
Jetzt scheint es zu funktionieren!

MfG
ChristianK


    Antwort schreiben


Antworten: