PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schalter K6 liefert keinen Wert



rchdrei
03.05.2011, 19:48
Hallo zusammen,

ich habe bei meinem Asuro das Problem, dass der Schalter K6 keinen Wert liefert.

Ich habe nun schon einige Foreneinträge gelesen, aber bisher konnte ich keine konkrete Lösung für mein Problem finden.
Grundsätzlich sind die einzelnen Widerstände für die 6 Schalter nicht besonders gut. Deshalb liefern die anderen Taster teilweise auch nicht genau die gewünschten Werte. Hier muss ich dann wohl noch etwas mit der Pollswitch-Funktion spielen. ...
Das sollte aber alles nicht der Grund sein, das ich für K6 überhaupt keine Wert bekomme. NUR K6 liefert KEINEN Wert ...
Trotzdem habe ich aber schon mal den 68K (R30) durch einen neuen, "besseren" getauscht.

Was ich bereits gemacht/gemessen habe:
- R30 hat 67,8K, i.O.
- Verbindung "vor" R30 zu PC4-Pin gemessen: hat Durchgang, 0OHM Widerstand, somit ist die Verbindung auch gegeben, i.O.
- Verbindung "hinter" R30 zu PC4-Pin gemessen: zeigt auch 67,8K, auch i.O.
- Der Schalter an sich scheint auch i.O. zu sein. Durchgangsprüfung ok.
- Verbindung von Schalter zu GND (gemessen am Batterieanschluss...), auch i.O.

Ich habe keine Idee mehr, was ich sonst noch tun/prüfen könnte :confused:
Kalte Lötstellen konnte ich auch keine finden (R30 habe ich auch schon ersetzt: ohne Verbesserung). Aber nachdem auch die Messungen meiner Meinung nach in Ordnung sind, würde ich eine kalte Löhtstelle eh ausschließen. Oder was meint ihr?

Ich habe auch ein paar Fotos angehängt. Allerdings kann man hier nur schwer etwas erkennen.

Würde mich sehr freuen, wenn ihr noch eine Idee hättet und mir weiterhelfen könntet.

Viele Grüße


187071870518706

radbruch
03.05.2011, 20:01
Fehlt noch die Messung der Verbindung zwischen R30 und dem Schalter. Was passiert, wenn du von "hinter" R30 eine Brücke nach GND machst?

Die Lötstelle zwischen dem "K" von "K6" und dem "N" von "ON" scheint mir zweifelhaft auf deinem dritten Bild:
https://www.roboternetz.de/community/attachment.php?attachmentid=18708&d=1304449571

rchdrei
03.05.2011, 20:15
danke für deine schnelle Antwort. Zwischen R30 und dem Schalter hab ich auch Durchgang. Wiederstand ungefähr 0,3OHM (das dürfte bei den anderen Verbindungen in etwa auch so sein ...).
Brücke von R30 zu GND --> d.h. der Schalter ist quasi immer gedrückt? Ich heitz' mal den Kolben an und mach eine Verbindung von R30 zu GND, direkt am Batterieanschluss ...

rchdrei
03.05.2011, 20:45
Auch mit der Brücke hat sich nichts geändert. Tut immer noch nicht.
Die von dir erwähnte Löststelle habe ich auch nochmal nachgebessert. Obwohl mir eigenltlich hier nichts aufgefallen ist. Leider hat auch das nichts gebracht. siehe Foto.

radbruch
03.05.2011, 21:05
Hallo

Naja, die Brücke hätte man nicht unbedingt löten müssen ;) Dass sich trotzdem nicht ändert ist seltsam. Wie ermittelst du eigentlich die Tastenwerte?

Möglicherweise findest du hier eine Antwort:
https://www.roboternetz.de/community/showthread.php?50158-T9-glimmt-nur-und-Schalter-funktionieren-nicht-richtig&p=483552&viewfull=1#post483552

Um es abzukürzen (der Thread ist lang...) hier ein Vorgriff auf die Lösung:
https://www.roboternetz.de/community/showthread.php?50158-T9-glimmt-nur-und-Schalter-funktionieren-nicht-richtig&p=484092&viewfull=1#post484092

Vielleicht passt das auch zu deinem Problem.

Gruß

mic

rchdrei
04.05.2011, 17:37
Hallo,

danke für deine Mühe! Gestern hab ich noch Ewigkeiten damit verbracht, das AVR-Studio, sowie die aktuellste AsuroLib auf meinem PC wieder zum laufen zu bekommen ...

Ich habe nun in der switches.c die Pollswitch-Funktion folgendermaßen angepasst und anschließend die lib neu compiliert:
/* return ((10240000L / (long)i - 10000L) * MY_SWITCH_VALUE + 5000L) / 10000; */
return ((unsigned char) ((( 1024.0/(float)(i-7) - 1.0)) * 63.0 + 0.5));

Anschließend habe ich das "TasterTest"-Programm aus dem Examples-Verzeichnis auf den Asuro übertragen. Ergebnis: K6 liefert immer noch keinen Wert *seufz*
Anbei noch die Ausgabe des Programms:

Tastsensor Test
31
15
7
3
1

...ok. Alle Werte sind um 1 zu niedrig. Das kann man ja noch anpassen. Aber sollte bei K6 nicht zumindest eine 0 kommen (die 1 ist von K5) ????

radbruch
04.05.2011, 18:22
Vermutlich steht im Taster-Test-Programm etwa das: "if(PollSwitch()>0) ...."

Und da mit gedrücktem K6 der Wert nicht größer als 0 ist, wird auch nichts ausgegeben.

In der neuen Library kann man den Faktor auch als MY_SWITCH_VALUE mit der Datei myasuro.h beeinflussen:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=31073

rchdrei
04.05.2011, 20:39
da hast du mich auf die Richtige Spur gebracht ... if (t1 && t2 && t1 == t2){...}
Die UND-Verknüpfung ist liefert natürlich FALSE, wenn mein K6 Wert 0 ist. Somit wird nichts ausgegeben! Danke :)

Aber es geht weiter ....
Ich wollte mit dem von dir genannten Programm die Werte ermitteln. Allerdings scheint auch das Programm an dem Wert 0 hängen zu bleiben, weil das Programm für meine K6 keinen Wert einliest ... :(


edit:
...nach langem Probieren und Messen funktioniert es nun, so dass die Werte aller 6 Taster richtig ausgegeben werden.
Um für K6 einen brauchwaren Wert vom AD-Wandler zu ermitteln, habe ich anstatt dem 68K Widerstand (R30) ein Poti angelötet und damit den richten Widerstand ermittelt. Bei 55K !!! habe ich einen Wert 1019-1021 bekommen! Bei größeren Widerstandswerten, konnte kein richtiger Wert gemessen werden (>1023).
Warum das so von der Angabe abweicht, kann ich mir nicht erklären! Es sei denn, die Verbindung vom Widerstand, zum AD-Port ist nicht in Ordnung. Allerdings konnte ich hier nichts fehlerhaften messen.
Damit auch die übrigen Taster stabile Werte lieferten, musste ich die Pollswitch-Funktion noch um ein gutes Stück nachjustieren(siehe unten). Danach lieferte jedoch der AD-Wert 1023 eine 1 anstatt 0.
Da ich zum Schluss, nach vielen, vielen Tagen keine Lust mehr hatte, hab ich letztendlich noch ein etwas unschönes IF darum gebaut ....

MY_SWITCH_VALUE = 61;

if(i == 1023){ /* unschön, aber die Geldud ist am Ende ;-) */
return 0;
}else{
return ((unsigned char) ((( 1024.0/(float)(i-15) - 1.0)) * MY_SWITCH_VALUE + 0.5));
}


@Radbruch: nochmals vielen Dank für deine Hilfe!!!