PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : T9 glimmt nur und Schalter funktionieren nicht richtig



stuemi
03.10.2010, 10:03
Hallo,

da ich kompletter Neuling auf dem Gebiet Robotik bin, habe ich mir den ASURO-Bausatz bestellt.
Ich habe Jetzt auch alles zusammen gelötet und bin jetzt beim Selbsttest angelangt.
Bis zu den Fototransistoren funktioniert auch alles Einwandfrei.
Wenn er T9 und T10 testen will, geht aber nur D16 an. Wenn ich T10 dann abdunkel geht auch D16 aus. So soll es ja auch sein denke ich mal. D15 glimmt nur ein wenig und wenn ich T10 abdunkel dann geht D15 dann auch ganz aus. Das heißt das es ja funtkioniert nur D15 nicht korrekt leuchtet bei diesem Test. Ich habe jetzt mal die Widerstände R14 und R15 mit einem Multimeter gemessen und da stimmt auch alles. und kalte Lötstellen konnte ich auch nicht entdecken. Wo könnte also noch der Fehler liegen?
Ein weiterer Fehler tritt dann gleich danach auf wo er die Schalter testet.
Dort leuchten die LEDs zwar aber bei jedem Test irgendwie anders und wenn ich K1 bis K5 drücke bewegt sich auch noch der linke Motor (aber auch nicht immer). Wenn ich K6 betätige dann bewegt er sich nicht. Eigentlich sollte er sich ja nur bewegen wenn ich K6 betätige. Wo könnte da der Felher liegen?
Alle anderen Tests verlaufen dann wieder Einwandfrei soweit ich da beurteilen kann.

Gruß Christian

markusj
03.10.2010, 11:24
T9/10 abdunkeln? Die müssen doch normalerweise beleuchtet werden damit sich "was tut".
Ist D15 korrekt gepolt? Geht D15 beim ersten Test (LEDs) korrekt an/aus?
Probiere Mal mit einer Taschenlampe T9/10 getrennt zu beleuchteten.

Dass die Taster unter Umständen komische Effekte verursachen ist bekannt, das kommt durch die Exemplarstreuung der verbauten Widerstände. Es gibt für die verwendete Berechnungsformel einen Parameter der bei Problemen etwas modifiziert werden kann, bei der ASURO-Bibliothek des DLR muss diese Änderung direkt in PollSwitch vorgenommen werden, die weiterentwickelten Bibliotheken haben den Parameter in ihrer Konfiguration.

mfG
Markus

PS: Zeile 216 der DLR-ASURO-Lib, anstelle der 63.0 kannst du Mal leicht andere Werte (+-2) ausprobieren, das sollte reichen.

return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));

stuemi
03.10.2010, 11:39
T9/10 abdunkeln? Die müssen doch normalerweise beleuchtet werden damit sich "was tut".
Ist D15 korrekt gepolt? Geht D15 beim ersten Test (LEDs) korrekt an/aus?
Probiere Mal mit einer Taschenlampe T9/10 getrennt zu beleuchteten.
[/code]

D15 geht bei dem LED Test einwandfrei.
wenn ich beide beleuchte dann leuchtet D16 hell und D15 glimmt nur. Wenn ich dann T10 abdunkel, geht D16 aus. Das Gleiche geschieht bei T9 und D15.
D15 leuchtet ja, wenn T9 angestrahlt wird. Aber nur ganz ganz wenig.

markusj
03.10.2010, 13:04
Komisch, das glimmen von D15 tritt eigentlich nur auf wenn die Back-LEDs nicht aktiv angesteuert werden ...
Ich würde an deiner Stelle ein kleines Programm schreiben dass Messwerte der beiden Liniensensoren aufzeichnet und über die IR-Schnittstelle verschickt. Dann kannst du dir die Werte mal näher betrachten ob sich da komische Verhaltensmuster zeigen. (Mit/ohne Beleuchtung ausprobieren)

Da der LED-Test funktioniert wird der Aufbau der Back-LEDs korrekt sein.

mfG
Markus

stuemi
03.10.2010, 19:01
So hab mich jetzt erst mal den Tastern zugewendet. :)
Hab ein Test Programm drauf geflasht.
Folgende Ergebnisse sind dabei herausgekommen:

K1 31
K2 15
K3 7
K4 3
K5 1
K6 nichts

K1-5 ist wenn ich das richtig sehe soweit in Ordnung.Nur passiert leider nichts wenn ich K6 drücke.
Was kann das sein ein Kurzschluss?
ich habe die Lötpunkte mehrmals kontrolliert aber ich konnte nichts feststellen. Sollte ich K6 einmal auslöten und wieder einlöten oder ist vielleicht irgendwo anders ein Fehler?

gruß Christian

radbruch
03.10.2010, 19:31
K1-5 ist wenn ich das richtig sehe soweit in Ordnung.Ne, nicht wirklich. Die Werte sollten 32,16,8,4,2 und 1 sein:

http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Tasten

stuemi
03.10.2010, 19:54
Ja das weiß ich. Ich meinte damit dass sie hardware mäßig funktionieren. Das ist ja dann ein Software Problem.
Hängt das dann auch mit K6 zusammen?

Ezalo
03.10.2010, 20:01
Hast du ein Multimeter/ Durchgangsprüfer zur Hand?

Wenn ja: Durchgangsprüfer oder Multimeter (auf Durchgang prüfen/ Wiederstand messen oder Diodentsest stellen) und dann mit je einer Messspitze auf einen Kontakt von K6 gehen.

Dann schauen ob Durchgang vorhanden ist oder nicht. Wenn nicht, Taster drücken und schauen was passiert. Dann kannst du schonmal ausschließen ob der Taster defekt ist. Das nächste wäre im Schaltplan zu schauen an welchen Pin der Taster K6 angeschlossen ist und von da denn durchgang zum Taster zu prüfen.

stuemi
03.10.2010, 20:12
Also hab mal ein Multimeter an die Pins von K6 gehalten. hab den Multimeter auf Widerstandsmessung gestellt und er zeigte mir immer 0,4 Ohm an. Bei den anderen Tastern war das genau das gleiche. Also gehe ich mal davon aus, dass er nicht defekt ist.
Ich wollte das jetzt mal testen das ich in asuro.c die folgende Zeile ändere:
return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));

Kann mir einer erklären was ich dann noch alles machen muss. ich habe mir die Asuro libary heruntergeladen und das Programm Tastertest drauf geflasht. Aber ich finde in diesem Ordner gar keine ASURO.c
Was muss ich dann noch alles machen wenn ich den Wert geändert habe?

radbruch
03.10.2010, 20:15
Hängt das dann auch mit K6 zusammen?Vermutlich schon. Deine Werte sind quasi um ein Bit verschoben:

K1 31 statt 32
K2 15 statt 16
...
K5 1 statt 2
K6 0 statt 1?

Wenn das Kalibrieren in PollSwitch() nicht hinhaut kannst du alternativ PollSwitch()+1 auswerten. Aber wahrscheinlich wird das Kalibrieren mit den oben schon beschriebenen 60er-Werten funktionieren.


ich habe mir die Asuro libary heruntergeladenWo und welche Version? Bei der erweiterten RN-Version der Library wurde die Flieskommaformel durch eine Integerformel ersetzt. Hier meine Anpassung bei V2.3:


//return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 61.0 + 0.5));
//return ((10240000L/(long)i-10000L)*61L+5000L)/10000;
return ((10240000L/(long)i-10000L)*63L+5000L)/10000;

stuemi
03.10.2010, 20:18
[/quote]Wenn das Kalibrieren in PollSwitch() nicht hinhaut kannst du alternativ PollSwitch()+1 auswerten. Aber wahrscheinlich wird das Kalibrieren mit den oben schon beschriebenen 60er-Werten funktionieren.[/quote]

Und wie mache ich das genau?

stuemi
03.10.2010, 21:23
So hab die Werte (ich hoffe das ich das richtig gemacht habe) jetzt einmal probiert aber das bringt irgendwie nicht.
Ich hab mir dann auch mal das Taster kalibrierungsprogramm von Asuruwiki grauf geflasht aber der zeigt mir gar keine Werte für K6 und 5 an. Das wundert mich aber. Bei K6 könnte ich das ja noch verstehen aber K5? der geht ja ...

stuemi
04.10.2010, 08:24
Also ich gebs echt bald auf. Ich Hatte gestern mehrmals dieses Tasterkalibrierungsprogramm ausgeführt und für K% und 6 hatte er mir keine Werte übertragen. Man konnte lediglich nur sehen, dass die Taster betätigt worden waren. In der Erklärung stand dann drinn, dass das auf falsche Widerstandswerte zurückzuführen ist. Aber die Wiederstände stimmen ja alle. Ich hab sie glaube ich schon hundert mal nachgemessen und auch die Lötstellen sind soweit in Ordnung. ich kann einfach keine Fehler erkennen ](*,)
Was könnte noch falsch sein, dass K6 nicht funktioniert?

Valen
04.10.2010, 11:38
Habst du die wiederstanden nach gemessen wen sie schon eingelötet sind, oder schon fruher. Weil wiederstandsmessung in einer (parallel) schaltung oft schief geht. Du misst möglich den andere wiederstanden ins parallel schaltung (aber auch alles was sonnst mit V+ verbunden ist) mit. Auslöten und dan messen gibt sicherheit.

Osser
04.10.2010, 12:05
Hi,


nie aufgeben!

;-)


Probier mal den Kode hier aus. Damit wird der A/B Wandler gepollt und Du erhältst den echten Wert der ermittelt wird als resultat womit Du wiederum sehen kannst ob überhaupt eine Werteveränderung "gelesen" wird.


/*
4-Okt-2010
O.O. Müller

Einlesen vom ADC im Polling-Betrieb
*/

#include <avr/io.h>
#include "asuro.h"


#define ADC4 0x04

/*
aMux ADC0, ADC1, ..., ADC7
aVal pointer to 16 bit result value
*/
void adcReadChannel(uint8_t aMux,int16_t* aVal) {
register int16_t tmp;

// Analog comparator disable
ACSR = (1 << ACD);

// Enable AD conversion
// Prescaler 8x (ADPS1, ADPS0)
// Prescaler 32x (ADPS2, ADPS0)
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (0 << ADPS1) | (1 << ADPS0);

// AREF, Internal Vref turned off.
ADMUX = (0 << REFS1) | (0 << REFS0) | (aMux & 0x1F);

// Start conversion
ADCSRA |= (1 << ADSC) | (1 << ADEN);
while (!(ADCSRA & (1 << ADIF)));

// Calc value
*aVal = (int16_t)ADC;

ADCSRA = (1 << ADIF);
ADCSRA &= ~(1 << ADEN);

}

void termWrite(char *aText) {
// ...
// ...
}

char term_getc(void) {
// ...
// ...
//
return 0;
}


uint8_t main(void) {
uint16_t iADC;
uint8_t szBuf[30];

while (1) {
// Daten lesen von ADC4
adcReadChannel(ADC4, &iADC);

// Daten ausgeben auf LCD/Terminal o.ä.
sprintf(szBuf, "Gelesene Daten: %ld\n", iADC);
termWrite(szBuf);

// wait until key pressed
sprintf(szBuf, "Taste drücken für weiter..\n");
termWrite(szBuf);
while (term_getc() == 0);

}
}


/* EOF */




Lediglich termWrite und term_getc musst Du noch anpassen.

Gruss,

O

stuemi
04.10.2010, 12:37
Jetzt funktioniert leider gar nichts mehr :cry:
Hatte die Platine mit Spiritus gereinigt gehabt, weil überall Flussmittel war.
Hab sie dann trocknen lassen und noch mal das Tasterkalibrierungsprogramm getestet und es hatte sogar funktioniert 8-[
Nur dann hatte mir Hyperterminal auf einmal nur noch hyroglyphen angezeigt und die unterseite lief dann noch so wislich an. Hab noch mal mit Spiritus gereinigt und die Platine wurde auch nicht mehr weislich.
Dafür ging leuchtet jetzt keine Status led mehr und keine Backleds beim Einschalten. Ich gehe mal davon aus, dass da nicht mehr viel zu retten ist.
Am meisten regt mich auf das das Problem eigentlich schon gelöst war.
K6 hatte ja kurz vorher funktioniert. Es lag höchstwahscheinlich nur daran, dass die Platine zu sehr mit flussmittel usw verschmutzt war ...

markusj
04.10.2010, 12:48
Kurzschluss? Kabel des Akkuhalters abgebrochen? Widerstände verbogen? Du hast ein Multimeter, du kannst also ausprobieren wie weit die Versorgungsspannung noch kommt.

Der Spiritus sollte es nicht gewesen sein, ich habe meinen ASURO genauso gereinigt.

mfG
Markus

stuemi
05.10.2010, 07:29
Er eght jetzt wieder =D>

Es hatte sich wieder so ein weißer Belag abgebildet ich hatte sie jetzt noch mal hundert Prozentig sauber gemacht und siehe da er geht wieder an :)
Leider habe ich jetzt wieder mein altes Problem mit den Tastern. Ich würde mal gerne wissen wollen, warum er das gestern nach der ersten Säuberungaktion gemacht hat. da ging alles einwandfrei ... bis sich halt der weiße Belag abgesetzt hatte. alles irgendwie komisch

stuemi
05.10.2010, 08:49
So ich hab jetzt noch mal mal das Self Test Programm geflasht und durch das Reinigen geht jetzt auch T9 einwandfrei. Alles läuft außer dieser eine kleine Taster. #-o

Valen
05.10.2010, 10:02
Schaltet den Taster uberhaupt? Ich hatte damals ein Taster zerstört weil ich es zu heiß gemacht habe beim löten. Eindrucken hatte gar keinen Effekt.

stuemi
05.10.2010, 11:06
Ja schalten tut er. wenn ich zum Beispiel K6 und 4 drücke, dann macht er was anderes als nur K4. Nur bei K6 macht er nichts. Lediglich das Tasterkalibrierungsprogramm reagiert auf K6 wenn ich ihn alleine drücke. Aber er gibt mir dann keine Werte aus.
Mal ne andere Frage. Wenn ich mir die Erweiterung hole mit den Ultraschall Entfernungsmesser dann brauche ich doch die Taser nicht oder sehe ich das falsch?

Valen
05.10.2010, 11:15
Im Prinzip nicht. Die Schaltung macht nichts mit den Tastern. Aber ob den US Modul immer jeder Objekt bemerkt kann man nicht Garantieren. So einer andere Art von Objekt Erkennung wurde behilflich sein. Den US Transducers stehen aber ein bisschen weit nach vorne. So den Tastern werden möglich eben nicht an geprellt.

radbruch
05.10.2010, 12:56
Hallo

Offensichtlich schaltet der Taster ja, den 0,4Ohm mit dem Multimeter bedeutet "Durchgang vorhanden". Selbstverständlich sollten alle Tasten funktionieren, aber wenn es einfach nicht klappen will, kann man zur Not auch drauf verzichten. Auch mit fünf Tasten könnte man den asuro bedienen. Als Kollisionserkennung (besser Kollisionsvermeidung) ist die US- oder IR-Lösung eh besser geeignet, weil der asuro dann nicht gegen das Hinderniss knallt.

Ich würde mal den Mega8 entfernen und zwischen Pin27 und GND den Widerstand messen. Wenn man dann die Taster drückt, müsste man die einzelnen Werte von R25 bis R30/32 messen können. Außerdem sollte zwischen Pin27 und Pin5 (PD3) der R24 mit 1k messbar sein. Eine kleine Tabelle mit diesen sieben Messwerten wäre eine gute Basis für weitere Diagnosen.

Obwohl die Schaltung recht einfach und übersichtlich aussieht (magische 74!), unterscheiden sich die Interpretationen der Funktion hier sehr. Meine Deutung: Jeder Taster bildet mit seinem Widerstand (R25-30 und R32) einen Spannungsteiler mit R24 (1k). Soweit stimme ich mit z.B. dem Wiki überein. Allerdings kann ich nicht erkennen, dass sich die Werte irgendwie verdoppeln. Überhaupt ist mir völlig schleierhaft, wie man auf diese Berechnungsformel kommt. Da mein asuro nicht einsatzbereit ist, habe ich mal einen theoretischen Ansatz mit jeweils einer gedrückten Taste durchgerechnet (ohne Berücksichtigung von R23!):

Die Spannungen am ADC-Pin und die ADC-Werte dazu errechnen sich so:

5V/(R24+Rtaster)*Rtaster=Vtaster
1023/5V*Vtaster=ADCtaster

Dann habe ich alle ADCtaster-Werte mit der Orginalformel und dem Taschenrechner nachgerechnet. Mein Faktor, mit dem übrigens auch mein asuro funktioniert, war dabei 63:


K1 2k 3,33V 681 32,23
K2 4k 4,00V 818 16,36
K3 8k 4,44V 908 8,54
K4 16k 4,70V 961 4,63
K5 33k 4,85V 992 2,53
K6 68k 4,92V 1007 1,56

Passt doch erstaunlich gut, oder? Was bringt das alles? Erstmal nichts. Allerdings erkennt man auch bei der Tastenauswertung die geniale Konstruktion des asuro. Neben der eigentlichen Tastenerkennung ist die Schaltung interruptfähig und es ist zudem möglich, per digitaler Abfrage zu erkennen, ob überhaupt ein Taster gedrückt wurde. Und das alles mit minimalster Bestückung und extrem schlankem Code. Da können sich die Entwickler der aktuellen Kleinroboter mal anschauen, wie man sowas macht ;)

Gruß

mic

stuemi
06.10.2010, 06:54
habe jetzt noch mal die Tasterwerte gemessen:
wenn ich alle einzeln drücke kommt:

K1=32
K2=16
K3=7
K4=3
K5=1
K6= nichts

wenn ich jetzt mehrere drücke kommt:

K1 und 6 = 33
K2 und 6 = 17
K3 und 6 = 8
K4 und 6 = 4
K5 und 6 = 2

also wenn ich mehrere drücke dann funktioniert K6 ja irgendwie weil immer 1 dazu addiert wird

Auch bei den anderen die nicht stimmen (K3-K5) ist es so.
Wenn sie zusammen mit K1 oder K2 gedrückt werden, dann stimmen die Werte. Also beispielsweise K1 und K5 = 34

was kann das also sein?

Edit: @radbruch hab erst gar nicht gesehen, dass du geantwortet hast O:) werd ich denn mal nach messen :)

wollt an dieser Stelle mal sagen, dass ich es klasse finde, wie einem hier geholfen wird. Echt cooles Forum =D>

Richard
06.10.2010, 09:25
Suche doch einmal nach R 2r Netzwerk, das ist quasi ein DAC Digital Analog wandler und sollte wenn die R's richtig angeordnet sind und die Taster ok b.z.w. ordentlich verlötet sind, immer funktionieren. Wenn nicht sind die R's nicht richtig (Reihenfolge) oder die Lötstellen nicht OK. Da das eine Manuelle Wandlung nur mit R und Taster ohne Elektronik ist, kann (Zwangsläufig) NUR ein Mechanischer Fehler vorliegen....

Gruß Richard

Osser
06.10.2010, 09:57
Hi stuemi,


hast Du versucht die Werte direkt zu lesen so wie ich gefragt hatte und wofür ich Dir ein Programmgerüst geschrieben habe?


Gruss,

O.

markusj
06.10.2010, 10:10
K6= nichts

Wie misst du "nichts"? Irgendwie kommt mir das etwas "schräg" vor ...

mfG
Markus

stuemi
06.10.2010, 11:36
@ Osser
nein ich habe mir die Asurolib heruntergeladen und das Tasterkalibrierungsprogramm geflasht da ich vom programmieren noch null Ahnung habe

@markusj
na wenn ich K6 alleine drücke, dann gibt er keine Daten aus. Es ist als wenn ich die Taste gar nicht gedrückt habe.
Nur wenn ich sie zum Beispiel mit K1 zusammen drücke, dann bekomme ich in dem Fall den Wert 33 (welcher ja dann auch richtig ist)

stuemi
06.10.2010, 12:11
@ radbruch
so habe jetzt mal die Werte zwischen Pin27 und den einzelnen Tastern gemessen:

K1=1,9k Ohm
K2=3,9k Ohm
K3=8,0k Ohm
K4=15,6k Ohm
K5=31,8k Ohm
K6=64k Ohm

zwischen Pin27 und 5 0,9k Ohm

Das ist aber komisch denn wenn ich nur die Wiederstände messe
habe ich beispielsweise

R29=32,8k Ohm
R30=68,4k Ohm

Valen
06.10.2010, 12:18
Ist das mit den IC1 eingesteckt, oder ohne? Versuch das mal ohne IC1.

Valen
06.10.2010, 14:05
Sehe das mal an: (auf die Website von Arexx-Henk )

http://home.planet.nl/~winko001/Asuro/Info/Files/Asuro,%20PCB,%20measure%20switches%20resistors.jpg

Richard
06.10.2010, 15:30
@ radbruch
so habe jetzt mal die Werte zwischen Pin27 und den einzelnen Tastern gemessen:

K1=1,9k Ohm
K2=3,9k Ohm
K3=8,0k Ohm
K4=15,6k Ohm
K5=31,8k Ohm
K6=64k Ohm

zwischen Pin27 und 5 0,9k Ohm



Das kommt ja beinahe hin. :-) Messe bitte auch einmal von Pin 27 und Pin 9 mit gedrücktem Taster (immer einer pro Messung) Die Messwerte sollten ähnlich sein. Aber bitte ohne Versorgungsspannung!

Gruß Richard

stuemi
07.10.2010, 06:56
So also hier mal die Werte ohne IC1

Pin27 und

K1=1,97k Ohm
K2=3,95k Ohm
K3=8,13k Ohm
K4=15,65K Ohm
K5=31,8k Ohm
K6=63,9k Ohm

Wenn ich jetzt zwischen Pin 9 und den Tasten messe zeigt mein Multimeter mir nichts an. Pin 9 ist doch der der zu dem 8Mhz Schwinger geht oder nicht?

Richard
07.10.2010, 07:30
Zwischen Pin 27 und Pin 9 BITTE, also zwischen ADC Eingang und GND. Dabei immer nur 1 Taste zur Messung drücken.

Gruß Richard

stuemi
07.10.2010, 07:53
Also wenn ich das jetzt richtig verstanden habe, dann soll ich zwischen Pin27 und 9 messen und dann eine Taste drücken.

...Aber wenn ich das mache bekomme ich keine Messergebnisse. Das Multimeter zeigt nichts an.

Richard
07.10.2010, 08:20
Steht das Multimeter auf Volt? es sollte Dir die Spannung über den Mess R's anzeigen...Äämmm diese Messung geht nur wenn Pin 5 5 V hat, also !!Chip herausnehmen!! und eine Dratbrücke von Pin 7 nach Pin 5 und Spannung einschalten.

Gruß Richard

radbruch
07.10.2010, 08:24
Hallo

Beim Mega8 ist Pin 8 der GND! Die Messung sollte also zwischen 8 und 27 stattfinden. Gelegentlich sollte man mal in den Schaltplan/Datenblatt schauen. Beim asuro sind die Achsen oder die kleine Brücke neben dem IR-Empfänger gute Anschlusspunkte für GND. Hier könnte man auch mal den Widerstand zwischen Brücke/Achsen/Pin8 nachmessen. Er sollte in etwa dem Widerstandswert direkt verbundener Messspitzen entsprechen.

Bisher ist mir auch noch nicht klar was deinem asuro fehlt. Warum deine Messungen sich von Messungen direkt an den Widerständen unterscheiden ist mir schleierhaft. Welche Spannung liegt denn zwischen Pin 7 und 8 (mit und ohne Mega8)?

Welche Werte werden eigentlich von Ossers Programm gemeldet?
https://www.roboternetz.de/phpBB2/viewtopic.php?p=521014#521014

"Nichts" erscheint mir auch seltsam:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=521210#521210

Gruß

mic

Richard
07.10.2010, 08:52
Hallo

Beim Mega8 ist Pin 8 der GND! Die Messung sollte also zwischen 8 und 27 stattfinden. Gelegentlich sollte man mal in den Schaltplan/Datenblatt schauen.

Der Schaltplan ist auf meinem 2. Monitor geöffnet, nutzt nichts wenn man nicht lesen kann (schäm).

Gruß Richard

radbruch
07.10.2010, 11:01
Hallo

Kein Grund zum Schämen. Wenn immer alle an alles denken würden (Forumsuche, Datenblätter, google, rtfm...), wäre das Forum wohl überflüssig. Außerdem war meine Anmerkung eher an stuemi adressiert.

Kleines OffTopic:

Im Datenblatt zum Thema "Analog Noise Canceling Techniques" (ca. S.203) wird an der SMD-Version gezeigt, wie man den ADC möglichst störungsfrei verwendet. Dabei spielt u.a. eine kurze Leitungslänge eine wichtige Rolle, speziell der zweite GND-Anschluß (Pin21 bei SMD) sticht mir hierbei ins Auge. Er ist räumlich sehr nahe (=direkt neben) bei AVCC, AREF und den ADCx-Pins. Das läßt vermuten, das dieser GND bevorzugt für den ADC geeignet ist.

Da Aufbau und Lage der Pins bei der DIP-Version ähnlich ist, dürfte der für die ADC-Eingänge relevantere GND-Anschluß vermutlich der Pin22 sein. Deshalb sollte man wohl auch mal die Verbindung des Pin22 zu Pin8 und den anderen GND-Messpunkten ermitteln.

Gruß

mic

stuemi
07.10.2010, 11:03
@radbruch
ok mess ich denn nachher mal durch und poste die Ergebnisse
nein osser's programm habe ich noch nicht geflasht. Was muss ich denn noch da ergänzen?
und das bei dem einem Programm bei K6 nichts angezeigt wird, ist denke ich mal deswegen, weil der Wert, den K6 hat, weniger als 1 ist (Also vermute ich mal)

An den Widerständen kann es eigentlich nicht liegen. Ich hatte sie bevor ich síe eingelötet habe mit dem Multimeter gemessen und wenn ich sie jetzt auf der Platine messe, dann stimmen sie ja auch.

Ich hoffe das irgendwann mal alles bei meinem ASURO funtkionieren wird :cry:

Richard
07.10.2010, 11:27
und das bei dem einem Programm bei K6 nichts angezeigt wird, ist denke ich mal deswegen, weil der Wert, den K6 hat, weniger als 1 ist (Also vermute ich mal)



Wie ist das zu verstehen? Wenn Du mit dem Ohm Meter nur den Schalter prüfst musst Du (ohne Spannung an der Schaltung) bei nicht gedrücktem Schalter Unendlich Hochohmig, bei gedrücktem Schalter nahe = 0 Ohm messen. Ansonsten ist der Schalter defekt oder Du hast dort irgendwo eine Lötbrücke.

Gruß Richard

radbruch
07.10.2010, 11:59
Hallo

Es bezog sich auf das "nichts" in der Tabelle der vom asuro angezeigten PollSwitch()-Werte:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=521200#521200

Wenn der Wert kleines als 1 ist, sollte er 0 sein und trotzdem gezeigt werden. Welches Testprogramm hast du da verwendet? Fehlt vielleicht ein abschliesendes "\n\r"?

Irgendwann wird auch dein asuro funktionieren. Es ist zwar langatmig und entmutigend, aber ohne Durchhaltevermögen wird mans in der Robotik wohl eh nicht weit bringen. Übrigends lernt man bei der Fehlersuche mehr über die Hardware des asuro und die AVRs als wenn auf Anhieb alles klappt.

Gruß

mic

Valen
07.10.2010, 12:46
Das Chassis der Schaltern ist auch verbunden mit GND. Viel einfacher. :idea:

stuemi
07.10.2010, 22:03
So hier die Messwerte zwischen Pin27 und 8

K1=1,97k Ohm
K2=3,95k Ohm
edit K3=8,11k Ohm
K4=15,65k Ohm
K5=31,8k Ohm
K6=64,0k Ohm

Das Testprogramm ist aus der ASUROlib hier mal der Code:



/************************************************** *********************
*
* File Name: tastsensor.c
* Project : ASURO
*
* Description: Test der Tastensensoren
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------
* 1.0 10.09.2005 m.a.r.v.i.n initial build
* 1.1 08.01.2006 m.a.r.v.i.n 2x PollSwitch + Vergleich, anstelle 8x PollSwitch
*
*/
/************************************************** *************************
* *
* 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"

int main(void)
{
uint8_t t1, t2;
char text[16];

Init();
SerPrint("\r\nTastsensor Test\r\n");
while (1)
{
t1 = PollSwitch();
t2 = PollSwitch();
if (t1 && t2 && t1 == t2) /* irgendeine Taste gedrueckt */
{
itoa(t1, text, 10); /* Tastenwert senden */
SerPrint(text);
SerPrint("\r\n"); /* Zeilenvorschub */
}
Msleep(500);
}
}


@radbruch

Ja das sage ich mir auch immer. Es gab zwar schon einige Momente, wo ich alles am liebsten in die Ecke geschmissen hätte, aber so wie du schon sagst ... man lernt dadurch echt ne Menge dazu. Ich bin da auch zuversichtlich, dass er irgendwann 100% funktioniert.

Könnte es eigentlich auch sein, dass sich die Widerstände irgendwie beiflussen, weil sie so dicht zusammen stehen oder wie sie gebogen sind? Ich hatte dass irgendwie so in der Anleitung gelesen.

Gruß Christian

radbruch
07.10.2010, 22:51
Hallo

Dass sich die Widerstände durch die Einbaulage beeinflußen ist eher unwahrscheinlich. Erwartungsgemäss liegt genau der R30 für K6 ziemlich daneben. Jetzt fehlen noch die dazugehörigen ADC-Werte die du mit dem Programm von Osser ermitteln kannst. Und deine Formel am Ende von PollSwitch() wäre noch von Interesse.

Dein Testprogramm scheint mir unverdächtig (bis auf (t1 && t2 && t1 == t2)), allerdings kenne ich SerPrint() nicht. Welche Library verwendest du denn nun eigentlich? Bei der aktuellen Lib kann man in der Datei myasuro.h auch irgendwie die Taster kalibrieren. Da ich diese Lib aber nicht verwende, kann ich dazu nichts sagen. Der Einstiegslink:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=31073

Noch eine "Grafik" von Sternthaler zu Widerstände der Taster:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=273461#273461

Gruß

mic

Valen
07.10.2010, 23:03
Bitte sehe deine Messwerten noch mal an. Du bist K3 vergessen.

Es ist mir aufgefallen das nicht jeder Messwert sich an dem 1% Genauigkeit halt. Oder dein Messgerät hat nur wenig messresolution. Sind das (alle) 4 oder 5 Farbe-banden Widerstanden? Mit letzte Farbe Gold oder Braun?

stuemi
07.10.2010, 23:11
Ok, denn werd ich mich morgen mal ran machen und die ADC Werte ermitteln.
Ich nutze die aktuellste Libary v2.8.0
Auf AsuroWiki gibt es ja so ein Tasterkalibrierungsprogramm. Das hatte ich ja wie gesagt schon gestestet. hier mal der Link dazu http://www.asurowiki.de/pmwiki/pmwiki.php/Main/TastenKalibrierungC
Und da reagiert das Programm auch auf alle Taster aber für K5 und K6 werden keine Werte ausgegeben. In der Erklärung steht ja drinn, dass es dann an den Widerstandswerten liegt ,, aber das kann in meinem Fall ja nicht sein.

stuemi
08.10.2010, 08:34
So hab die ADC Werte jetzt:

K1=685
K2=825
K3=922
K4=974
K5=1005
K6=1021

So wie ich das sehe, sind die Werte alle höher als normal oder?
gruß
Christian

stuemi
08.10.2010, 10:20
So also ich denke mal das Problem ist beseitigt \:D/

Da die ADC Werte ja alle erhöht waren habe ich die Grenzwerte berechnet, bei denen die Taster noch ihre richtigen Zahlen haben. Also mit dem Faktor 63 ergibt sich für :

K1 bis 682 = 32
K2 bis 821 = 16
K3 bis 915= 8
K4 bis 970 = 4
K5 bis 1000 = 2
K6 bis 1015 = 1

Wenn ich sie mit meinen Werten vergleiche müssen alle Werte um 7 verringert werden.

Also habe ich jetzt die pollswitch funktion wie folgt abgeändert:



return ((unsigned char) ((( 1024.0/(float)(i-7) - 1.0)) * 63.0 + 0.5));

Jetzt stimmen alle Werte :)
sprich jetzt bekomme ich für

K1=32
K2=16
K3=8
K4=4
K5=2
K6=1

Damit müssten die Taster ja jetzt funktionieren oder?

radbruch
08.10.2010, 11:44
Prima. Wirklich gut ist es, wenn bei kombinierten Tastendrücken jeweils die Summe der Einzeltastenwerte angezeigt wird. Dann repräsentiert jedes Bit im Rückgabewert von PollSwitch() genau einen Taster. Aber für den "normalen" Gebrauch sollte es reichen, wenn jeder Taster einzeln erkannt werden kann.

Abschliessend sollte man vielleicht anmerken, dass die Toleranzen deiner Widerstände offensichtlich größer als 1% sind und vermutlich der R24 unverträglich klein ist. Dadurch werden alle Spannungen zu hoch erzeugt und gemessen.

Nach soviel Mühe werden dir sicher die Tränen in die Augen schiessen, wenn du die Werte mit laufenden Motoren betrachtest. *lol*

Gruß

mic

stuemi
08.10.2010, 12:10
So hab jetzt mal auch ein kollisionstest gemacht. Alle Taster funtkionieren einwandfrei.
Auch wenn ich mehrere zusammen drücke. Alles Top. Er gibt immer die richtigen Werte aus. Auch mit laufendem Motor.
Ich wollte mir eh demnächst das Buch mehr Spaß mit Asuro bestellen da bestell ich mir denn gleich noch mal alle Widerstände mit und probiere es noch mal mit den neuen.
Also vielen Dank noch mal, dass ihr mir geholfen habt.

Valen
08.10.2010, 12:21
Wenn du einer andere Asuro Besitzer kennst kannst du vielleicht ihren beiden Atmega8 Chips wechseln damit man heraus finden kann ob es an den Platine liegt oder an dem ADC Einheit im Chip. Dieses PDF beschreibt den messfehler der mit den ADC möglich sind:

http://www.atmel.com/dyn/resources/prod_documents/doc2559.pdf


Oder du bestellst auch ein Ersatz Atmega8 mit bootloader. (das kostet aber)

radbruch
09.10.2010, 00:01
Hallo Valen

Ein sehr aufschlussreiches Dokument, vielen Dank für den Link. Leider reicht meine Zeit nicht dazu aus, auch auf den Atmel-Seiten rumzustöbern. Ob sich der Aufwand für den asuro lohnt?

Das EESAVE rückt plötzlich und unvorbereitet ins Licht der Öffentlichkeit:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=521504#521504

Wenn ich das PDF schon zuvor gekannt hätte, wäre dieser Versuch wohl nie gemacht worden:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=33228

Schönes WE

mic

stuemi
09.10.2010, 07:34
Oder du bestellst auch ein Ersatz Atmega8 mit bootloader. (das kostet aber)


Also z. B. den hier?

http://www.conrad.de/ce/de/product/191359/ASURO-PROZESSOR-MIT-BOOTLOADER/SHOP_AREA_37371&promotionareaSearchDetail=005

gruß Christian

markusj
09.10.2010, 11:54
Hallo Christian, es geht auch günstiger ... Du brauchst lediglich einen ATmega8 + Programmiergerät, es gibt einen freien Bootloader (http://sourceforge.net/projects/libtinyasuro) für den ASURO der kompatibel zum Original-Bootloader ist. Solltest du kein Programmiergerät haben, bringt dir das natürlich wenig.

mfG
Markus

Valen
09.10.2010, 14:18
Oder du bestellst auch ein Ersatz Atmega8 mit bootloader. (das kostet aber)


Also z. B. den hier?

http://www.conrad.de/ce/de/product/191359/ASURO-PROZESSOR-MIT-BOOTLOADER/SHOP_AREA_37371&promotionareaSearchDetail=005

gruß ChristianGenau, das ist er.

stuemi
09.10.2010, 16:05
Solltest du kein Programmiergerät haben, bringt dir das natürlich wenig.


Hab ich nicht :)

Also wie gesagt, wenn ich mir das Buch bestelle, dann werde ich mir alle Widerstände für die Taster noch mal besorgen und den Atmega8 auch noch mal. Wird ja nicht schlecht sowas und kann man später mit Sicherheit noch mal gebrauchen, wenn es damit auch nicht geht :)

gruß Christian

Butcher2186
25.04.2013, 10:18
Hallo,

ich habe vor kurzem mit der Asuro Programmierung bzw. mit der C Programmierung überhaupt angefangen und habe dann auch relativ schnell einen ähnlichen Fehler mit den Tastern festgestellt. Mein K6 hat den Wert 33 geliefert und daher auch in ein paar Tasterkombinationen den Falschen.

Glücklicher Weise habe ich diesen Thread hier gefunden (danke dafür an alle) und das Problem durch ausprobieren behoben:

return ((unsigned char) ((( 1024.0/(float)(i+5) - 1.0)) * 63.0 + 0.5));

Statt von i 7 abzuziehen, addiere ich jetzt 5 und die zurückgegebenen Tasterwerte passen jetzt alle. Aber wie gesagt, auf die +5 bin ich nur durch ausprobieren gekommen. Könnte mir deshalb vielleicht jemand erklären, was die Formel macht bzw. wofür die einzelnen Werte stehen?

Vielen Dank schoneinmal im vorraus.

MfG Michael