Archiv verlassen und diese Seite im Standarddesign anzeigen : Taster defekt?
Echoplex
30.10.2010, 20:21
Hallo,
habe vor kurzem meinen Asuro zusammengebaut.
Jetzt habe ich die Tastterwerte ausgelesen und die entsprechen nicht den normalen Werten.
Hier sind die Werte:
9
19
28
75
154
51
Liegt irgendwo ein Hardwarefehler vor und ergibt sich kein Problem wenn ich die Tasterausgaben in der Ausrolib ändern?[/code]
Sind das die Werte die von PollSwitch zurückgegeben werden? Oder direkt die Messwerte des ADC?
Welche Asurolib verwendest du?
Es wäre am besten wenn du Mal die ADC-Messwerte der einzelnen Taster selbst aufzeichnest. Alternativ könntest du auch das hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=31073) veröffentlichte Programm zur Kalibrierung ausprobieren, wobei ich keine Erfahrung damit habe.
mfG
Markus
Echoplex
30.10.2010, 23:42
Das Programm wollte ich auch schon benutzen, es zeigt mir immer an dass, wenn überhaupt, mehrer Schalter betätigt werden.
Ich werde morgen die Widerstände nachmessen und die AD-Werte posten.
Messungen von eingebauten Widerständen dürfte in vielen Fällen fehlerhaft sein, weil die restliche Schaltung Einfluss auf die Messelektronik haben kann.
mfG
Markus
Echoplex
31.10.2010, 11:51
Wollte jetzt die Werte mit diesen (http://www.asurowiki.de/pmwiki/pmwiki.php/Main/TastenKalibrierungC) Programm testen, allerdings bekomme ich nichts angezeigt, außer das ich die jeweiligen Tasten drücken soll.
Auch das Programm kenne ich nicht - Und da meine Glaskugel gerade kaputt ist kann ich dir nur weiterhelfen wenn du die vom ADC erfassten Rohdaten selbst hier reinpostest.
Wenn du das selbst nicht schaffst, kann ich evtl. später ein kleines Programm dazu schreiben und hochladen.
Nachtrag: Ich zitiere Mal die Wiki-Seite: "Bleibt das Kalibrierprogramm bei einer Taste hängen, liegt eine Unterbrechung im Signalweg vor. Läuft das Testprogramm durch, ohne das eine Taste gedrückt wurde, liegt ein Kurzschluß vor."
mfG
Markus
Echoplex
31.10.2010, 12:06
Ok, hoffe die Werte wurden korrekt ausgelesen:
K6: 894
K5: 787
K4: 633
K3: 464
K2: 293
K1: 171
Die Werte sind um über Faktor 10 zu groß, sieh dir Mal die Werte in dieser (http://www.info-rlp.de/lernteams/06li/abschnitt_4_algorithmen_technische_informatik/tasten_unterscheiden/tasten_unterscheiden_problemloesung.htm#schriftlic he_problemloesung) Tabelle an.
Hast du die Lötstellen der Widerstände für die Tasterauswertung überprüft? Oder hast du bei der Auswertung vielleicht vergessen, die Ausgänge korrekt zu konfigurieren?
PC4 auf Input ohne Pullup, PD3 auf Output High
mfG
Markus
Echoplex
31.10.2010, 21:34
Die Lötstelle sehen ganz gut aus.
Hier mal der Code von dem Programm das ich benutzt habe für die Auswertung:
/************************************************** *************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* any later version. *
************************************************** *************************/
#include <stdlib.h>
#include "asuro.h"
uint16_t MyPollSwitch(void)
{
uint16_t i;
DDRD |= SWITCHES; // Port-Bit SWITCHES als Output
SWITCH_ON; // Port-Bit auf HIGH zur Messung
ADMUX = (1 << REFS0) | SWITCH; // AVCC reference with external capacitor
Sleep (10);
ADCSRA |= (1 << ADSC); // Starte AD-Wandlung
while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten
;
ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen
i = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert
SWITCH_OFF; // Port-Bit auf LOW
Sleep (5);
return ADC;
}
void SwitchTest(void)
{
uint8_t i, j, mval;
uint16_t adval;
for(i=0; i<6; i++)
{
SerPrint("\r\nPress Key ");
PrintInt(6-i);
SerPrint("\r\n");
Msleep(1500);
adval = MyPollSwitch();
PrintInt(adval);
Msleep(1500);
adval = MyPollSwitch();
PrintInt(adval);
Msleep(1500);
adval = MyPollSwitch();
PrintInt(adval);
Msleep(1500);
adval = MyPollSwitch();
PrintInt(adval);
Msleep(1500);
}
}
int main(void)
{
Init();
SerPrint("\r\nTastsensor Kalibration\r\n");
while (1)
{
SwitchTest();
}
}
Könnte ein fehlerhafter Widerstand die Ursache für das Problem sein? Wie kann ich das dann überprüfen?
Besserwessi
31.10.2010, 22:28
Falsche Widerstandswerte könnte schon ein Problem sein. Vor allem würde dann die zuordnung der Tasten nicht mehr passen. Hier gibt es aber vor allem erstmal sehr große Schwankungen bei den Werten - das sollte bei einem falschen Widerstand noch nicht passieren.
Echoplex
31.10.2010, 23:20
Da es wohl zu kompliziert wäre alle Widerstände zu prüfen, kann ich auch einfach meine Werte in die myAsuro.h eintragen? Welche wären das dann?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.