PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kollisionstaster von Asuro unten montieren- geht das?



technique
09.09.2005, 14:05
Hallo!

Ich baue ja gerade meinen Asuro zusammen. Versehentlich habe ich die Kollisionstaster auf die verkehrte Seite gelötet, macht das was aus, oder kann ich sie dort lassen?

LG Martin

Manf
09.09.2005, 14:30
Es ist eine ziemliche Fummelei sie umzulöten, ich glaube sie funktionieren untern genauso.
Manfred

technique
09.09.2005, 19:38
Danke, Manf, ich hab's einfach so gelassen!
Hab den Asuro ntürlich heute abend noch fertiggestellt und er funktioniert bis auf folgende Probleme:
Bei dem Test mit den Kollisionstastern wird bei K4 und K5 Status LED rechs rot, nur wenn man beide drückt wird die linke LED rot. Und bei K6 tut sich gar nichts.
Beim Motortest dreht sich jedes mal der rechte Motor hin und zurück. Er glaubt wohl er hat das Monopol beim Antrieb. ;-)

Habt Ihr auf die schnelle Ideen, was ich falsch gemacht habe? Wie man das mit den Kollisionstastern löst, steht nicht in der Anleitung!

Ich freue mich auf Eure Vorschläge!!

LG Martin

Winne
09.09.2005, 20:06
Hallo technique,

probier mal das!!
Ersetze die Zeile
return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));
in der asuro.c
durch
return ((10240000L/(long)i-10000L)*65L+5000L)/10000;

Quelle: https://www.roboternetz.de/phpBB2/viewtopic.php?t=11797

Gruss Winne

technique
10.09.2005, 08:04
Also, das Problem hat sich jetzt geändert:
Der Motor-Test geht Links und Rechts, bei beim Kollisionstest geht bei K4 der linke Motor sehr schnell, die linke Back-Led glimmt und die rechte BackLed ist an. Bei K5 geht der Motor langsam, die rechte BackLed ist an und die linke ist aus. Bei K6 geht ganz normal der linke Motor. Wenn man K4 und K5 zugleich drückt leuchtet die linke BackLED und die rechte glimmt, der linke Motor läuft wieder schnell. (???)
Außerdem läuft der Motor, und die Status Led leuchtet orange, wenn man K1 und K2 zugleich drückt, da sollte eigendlich nur die Status LED
orange leuchten.

@ Winne: Äh, wo find ich diese Zeile, ich kenn mich noch nicht so ganz aus, noch läuft bei mir das Testprogramm!

Ich hoffe, dass da jetzt Irgendeiner in der weite des Universums mitgekommen ist! ;-)

LG Martin

technique
10.09.2005, 11:26
Also, ich hab jetzt mal die ersten Programme raufgeflasht.
Meistens steht denn bei der Analyse:
"test.c:4: error: parse error before "MotorDir"
test.c:5:18: warning: no newline at end of file
make: *** [test.o] Error 1", oder so etwas ähnliches!

Hat wer ne Ahnung was das heißt?

LG Martin

m.a.r.v.i.n
10.09.2005, 12:33
Hallo Martin,

Die Fehlermeldung:


test.c:4: error: parse error before "MotorDir"

deutet meistens auf ein fehlendes ; in der Zeile davor.

die Warnung:


test.c:5:18: warning: no newline at end of file


bedeutet lediglich das man noch eine Leerzeile an das Ende des Files einfügen soll.

Sollange du Fehlermeldungen bekommst, wird auch kein HEX File erzeugt, das du Flashen kannst. Bei Warnungen allerdings schon.


Gruß Peter

technique
10.09.2005, 16:28
AH! So langsam komm ich drauf! Danke!!!!

Ich hab jetzt mal was ganz einfaches geschrieben:(bitte nicht lachen!!!)
#include "asuro.h"

int main(void)
{
Init();

while{PollSwitch() ==0};
MotorSpeed(150,150);
else{MotorSpeed(0,0)};
return 0;
}
Ich weiß, da sind ne Menge Fehler drin, aber kann mir trotzdem jemand helfen?
.....ich bin totaler Anfänger auf dem Gebiet und hab noch nie was von "C" gehört!
Ich wollte schreiben, dass, wenn er anstößt stehen bleibt und sonst mit MotorGeschwindigkeit 150,150 fährt.
Er schreibt jetzt:
"test.c:7: error: parse error before '{' token
test.c:9: error: parse error before "else"
make: *** [test.o] Error 1"
Irgendwie hab ich die klammern falsch gesetzt und else wohl auch, oder??

Bitte, bitte helft mir!

LG Martin

m.a.r.v.i.n
10.09.2005, 17:16
Hallo Martin,

aller Anfang ist schwer.
So sollte es eigentlich funktionieren.


#include "asuro.h"

int main(void)
{
unsigned char taste;

Init();
while(1)
{
taste = PollSwitch();
if(taste == 0) /* keine Taste */
{
MotorDir(FWD,FWD);
MotorSpeed(150,150); /* vorwaerts fahren */
}
else /* irgendeine Taste gedrueckt */
{
MotorSpeed(0,0); /* anhalten */
/* todo: ein Stück rueckwarts fahren, nach rechts oder links ausweichen */
}
}
}


Gruß Peter

technique
10.09.2005, 18:17
Halo Peter!

Vielen Dank für deine Antwort!

Ich hab's gleich probiert, er hat geflasht, aus und wieder eingeschalten und dann leuchtet die StatusLED grün, mehr passiert nicht.

Was könnte ich falsch gemacht haben?
1. Ich hab dein Programm in Programmers Notepad 2 kopiert.
2. Ich hab es umgewandelt
3.Ich hab's geflasht.
4.Es funktioniert nicht.

Das Testprogramm hat aber nur Fehler bei den Kollisionstastern K4 und K5 gefunden, das habe ich eh schobn oben geschrieben.
Woran könnte es außer den Kolisionstastern liegen?

Martin

m.a.r.v.i.n
10.09.2005, 20:31
Hallo Martin,

wahrscheinlich sind bei deinem Asuro ein paar Widerstände vertauscht, oder ein Schalter kurzgeschlossen.

Ich habe mal das Testprogramm soweit geändert, daß der Tastenwert über die IR Schnittstelle zum PC gesendet wird.

Dieses Programm bitte übersetzten und flashen.
Danach den Asuro am besten aufbocken, damit er nicht wegfährt.
Ein Terminalprogramm starten, z.B HyperTerminal.
Den IR Transceiver über den Asuro halten.
Die Ausgaben auf dem Terminalfenster beobachten.

Wenn keine Taste gedrückt wurde, sollte auch keine Ausgabe erfolgen.
Tasten drücken -> entsprechende Zahlen sollten erscheinen:

K1 -> 32
K2 -> 16
K3 -> 8
K4 -> 3
K5 -> 2
K6 -> 1

Das ganze mehrmals wiederholen. Es kann sein, daß anstelle K1 ->32, K1 ->33 ausgegeben wird. Das hat dann aber mit Widerstandstoleranzen zu tun, und kann per Software korrigiert werden.



#include <string.h>
#include "asuro.h"

void PrintInt(int wert)
{ char text[33];
itoa(wert,text,10);
SerWrite(text,strlen(text));
}

void Msleep(int dauer)
{
int z;
for(z=0;z<dauer;z++) Sleep(36);
}

int main(void)
{
unsigned char taste;

Init();
while(1)
{
taste = PollSwitch();
if(taste == 0) /* keine Taste */
{
MotorDir(FWD,FWD);
MotorSpeed(150,150); /* vorwaerts fahren */
}
else /* irgendeine Taste gedrueckt */
{
MotorSpeed(0,0); /* anhalten */
PrintInt(taste); /* Tastenwert senden */
SerWrite("\r\n", 2); /* Zeilenvorschub */
Msleep(500); /* halbe Sekunde warten */

/* todo: ein Stück rueckwarts fahren, nach rechts oder links ausweichen */
}
}
}


Gruß Peter

technique
10.09.2005, 21:03
Hallo Peter!

Muss mich noch mal bedanken, dass du mir so fleißig hilfst!!

Ich habe dasProgramm geflasht, Hyperteminal eingeschaltet und wenn der Sender Sichtkontakt mit Asuro bekommt, erschneinen am Bildschirm regelmäßig "8"er, in einerm Abstand von ca. 1/2 Sekunde.

Ich habe die Zahlen notiert, die statt "8" dastehen, wenn man die jeweiligen Kollisionstaster drückt:

K1:40
K2:24
K3:gar nichts, oder 8, da immer 8 da steht
K4:12
K5:10
K6:9

Ich habs mehrmals probiert, aber es ändert sich nichts bei den Zaheln, der Motor bewegt sich aber auch nicht.
Ist bei meinem Asuro überhaupt noch was zu retten? :-(
Ich hoffe auf deine Hilfe!

Martin

m.a.r.v.i.n
11.09.2005, 12:07
Hallo Martin,

das ist ja recht eindeutig ein Kurzschluß am Taster K3.
Das Programm prüft ja alle 1/2 Sekunde die gedrückten Schalter und gibt den entsprechenden Wert aus.
In deinem Fall wird immer K3 als gedrückt erkannt.
Da man ja auch mehrere Taster gemeinsam drücken kann, ist der ausgegebe Wert die Summe der Werte aller gedrückten Tasten.
Die Widerstände deines Asuro sind ok. Wenn du von den Werten der gedrückten Tasten 8 abziehst, ergeben sich ja die korrekten Werte (32,16,8,4,2,1).

Überprüfe K3 auf Kurzschlüsse. Ebenso R27 auf Masseschluß. Eventuell muß K3 nochmal ausgelötet werden wenn der Schluß unter dem Taster ist.

Keine Sorge der Asuro ist nicht kaputt. Du mußt nur noch den Fehler finden. :)

Gruß Peter

technique
11.09.2005, 13:46
Hallo Peter!

Du hattest recht, zwischen K3 und R27 war ein Kurzer.
Aber woher wusstest du das??
Ich habe nach beheben des Problems wieder dein Programm draufgespielt. Ergebnisse:
K1:32,oder 33
K2:16
K3:8
K4:4
K5:2
K6:1

....hinzu kommt, dass manchmal ein Einser, oder 2 oder 3 Einser nach der Zahl stehen, zb., wenn man K2 drückt:
16
1
1

Das ist doch der Widerstandsfehler, den man per Software beheben kann, oder?

Ich werde jetzt noch mal das Selbsttest-Programm durchlaufen lassen und ein paar Kollisionstaster-Programme und erstatte dann Bericht!

LG Martin

technique
11.09.2005, 14:19
HalloPeter!

Wie zuerst geschrieben, die Ergebnisse, vom Selbst-Test:
K1-K6 funktionieren alle wie beschrieben, nur bei den Kombinationen läuft öfters der Motor mit oder eine der beiden BackLeds leuchten auf.

Beim Motortest läuft aber der linke Motor jetzt etwas komisch:
beim Rückwärtsfahren hat er ca. nur 1/4 der Geschwindigkeit, die der andere Motor beim Rückwärtsfaheren hat. Dieser Fehler war vor dem Umlöten noch nicht (???)

Ich habe auch gleich mal dein Programm, das du mir nach meinen Wünschen geschrieben hast probiert. Ich wollte programmieren, dass die Status LED rot wird, er 1/2 Sekunde wartet und dann rückwärts fährt, wie lange er das tut, wusste ich nicht zu programmieren, über Odometrie?

Ich zitiere:
"else /* irgendeine Taste gedrueckt */
{
MotorSpeed(0,0); /* anhalten */
StatusLED(RED);
Sleep (36);
MotorDir(RWD,RWD);"

Was ist denn da falsch?

Martin

m.a.r.v.i.n
11.09.2005, 17:11
Hallo Martin,

mit den Tastsensoren ist jetzt erst mal alles ok.
diese Geistertasten 1er, 2er, etc. beim Drücken von anderen Tasten kriegt man weg, indem man die PollSwitch() Funktion mehrmals hintereinander aufruft (bis zu 8x sollte reichen) dann wertet man erst das Ergebnis aus.
Hintergrund ist der Kondensator C7 der erst komplett entladen werden muß, das passiert durch den Aufruf der PollSwitch() Funktion.

Falls jetzt bei K1 immer noch nicht 32 als Wert angezeigt wird, kann man die asuro.c anpassen indem man wie schon mal hier beschrieben in der Funktion PollSwitch() die letzte Zeile anpaßt.

zunächst ändern wir die unnötige Floating Point Operation


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


in eine Integer Operation.



return ((10240000L/(long)i-10000L)*61L+5000L)/10000;


dann kann man den Wert 61L in 63L oder 65L ändern. Einfach ausprobieren, bei welchem Wert K1=32 liefert. Die anderen Tasten natürlich auch die richtigen Werte.

Das beim Selbsttest die Back LEDs manchmal mitleuchten, bzw. ein Motor mitdreht ist normal. Macht mein Asuro auch so. Liegt wahrscheinlich an vorher genannten Problem mit der PollSwitch() Funktion.

Das Problem mit dem linken Motor deutet auf einen Fehler in der Motoransteuerung. Die Transistoren T1..T4 und die Dioden D1..D4 sind dafür zuständig. Vielleicht eine Diode falsch gepolt.
Zu allem Unglück gibt es 2 verschiedene Transitortypen, die nicht vertauscht werden dürfen. T1 und T2 sind andere Typen als T3 und T4.
Die Beschriftung der Transistoren ist leider auch nicht so gut erkennbar.
Ansonsten wieder auf Schlüsse prüfen. Bei Rückwärtsfahrt ist, glaube ich, T3 und T2 aktiv.

Zu guter letzt das Programm:




#include "asuro.h"

int main(void)
{
unsigned char taste;

Init();
while(1)
{
PollSwitch(); /* mehrmals abfragen, um C7 zu entladen */
PollSwitch();
PollSwitch();
PollSwitch();
PollSwitch();
PollSwitch();
PollSwitch();
taste = PollSwitch();
if(taste == 0) /* keine Taste */
{
MotorDir(FWD,FWD);
MotorSpeed(150,150); /* vorwaerts fahren */
}
else /* irgendeine Taste gedrueckt */
{
MotorSpeed(0,0); /* anhalten */
MotorDir(RWD,RWD);
MotorSpeed(150,150); /* rückwaerts fahren */
Sleep (36); /* 1 Sek. warten */
/* todo: leichte Kurve fahren,
damit man nicht gleich wieder anstoesst.
*/
MotorSpeed(0,0); /* anhalten */
}
}
}


Odometrie ist hier noch nicht nötig.

Gruß Peter

technique
12.09.2005, 08:22
Hallo Peter!

Die "Floating Point Operation" steht bei mir anders da:
"return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));",
statt 61.0 steht da 63.0. Ich hab's trotzdem mal geändert und gespeichert.
Dann habe ich wieder dein Programm draufgespielt. Nach umbesserung zu 63L kommen alle Zahlen korrekt an, außer bei K4, da kommt immer nur 4, statt 3. Nachteil ist aber, dass er jetzt ständig, oder fast ständig 1er sendet, wenn man einen Taster gedrückt hat. Er hört erst auf, wenn man verschiedene Taster gedrückt hat, oder manchmal hört er gar nicht mehr auf.
....ist da vielleicht ein Kurzer bei K1?, sehen tu ich keinen.
Nun zum Motorproblem:
Es ist weder eine iode falsch gepolt, noch ein falscher Transistor eingebaut. Und einen Kurzen sehe ich auch nicht. Wie geschrieben funktionierte der Motortest noch vor kurzem.
Das Programm funktioniert auch nicht so wie es sollte. Asuro bleibt stehen, die Motoren summen leise und das wars. Mehr passiert nicht, wenn ich Ihn von der Wand wegtue fährt er wieder.
Wenn du mich fragst hängt das alles mit der ausgewechselten Zeile zusammen. Vielleicht habe ich die falsche ausgewechselt, wie geschrieben, bei mir steht statt "61.0" "63.0". Bei mir heißt "Asuro.C" auch nicht "Asuro.C", sondern nur "Asuro" (???).

LG Martin

m.a.r.v.i.n
12.09.2005, 10:06
Hallo Martin,

kann sein, das ich die Werte in meiner PollSwitch() Funktion angepaßt hatte, damit es mit meinem Asuro funktioniert. Ob 61, 63 oder 65 hat nur Einfluß auf den Wert den K1 zurückliefert.

Das bei K4:4 als Ergebnis kommt ist doch richtig.

Hast du das Testprogramm erweitert, daß die PollSwitch() Funktion 8x aufgerufen wird?. Dann sollten die 1en verschwinden.

Im Programm Motortest ist noch ein Fehler. Sleep(36) warte nicht 1 Sekunde, sondern nur 1 Millisekunde. Übernimm doch einfach die Msleep() Funktion aus dem TasterTest Programm.

Was den Motortest betrifft, hat das wohl nichts mit dem Kurzschluß am Taster zu tun. Kalte Lötstellen sind berühmt dafür, das etwas, was mal funktioniert hat, plötzlich nicht mehr funktioniert. Nochmal nachlöten hilft vielleicht.

Windoofs zeigt per Voreinstellung nicht die Dateierweiterung von bekannten Dateitypen an. Läßt sich wohl in den Ordner Optionen einstellen.

Gruß Peter

Atreyu
20.10.2005, 16:22
HI!
hab auch mal ne frage: meine schalter drehen auch völlig durch!
ich bekomm nichts handfestes.
hab mal nach nem kurzen gesucht, nichtsgefunden, widerstände sind auch richtig drin. ebebn hab ich mal dein programm benutzt um die taster auszuwerten: bei K1-K4 kommt immer der gleiche wert: 193, bei den anderen variiert das ergebnis dann bei K5 226 und bei K6 210...

m.a.r.v.i.n
21.10.2005, 09:15
Hallo Atreyu,

hört sich sehr merkwürdig an. So einen Fehler hatten wir hier noch nicht. :-k

Hast du auch R23, R24 und C7 überprüft?
Hier mal noch ein Auszug aus dem Schaltplan.
Wenn ein Voltmeter zur Verfügung steht, mal die Spannung am Prozessor Pin 27 (ADC4/PC4) messen (und dabei die Taster drücken). Leider habe ich keine Vergleichswerte zur Hand, aber der gemessene Wert müßte sich von K1 beginnend jeweils verdoppeln.

Funktionieren denn andere AD Wandler Ports wie Liniensensor, Odometrie sonst kann es auch an AREF liegen?

Gruß Peter

Atreyu
21.10.2005, 15:59
also: die "hardware" ist soweit korrekt!
hab was interessantes festgestellt: ich hab die voltzahl gemessen und dabei folgendes entdeckt: es liegt imer eine spannung von 2,3 volt an. drücke ich nun K1, gibts 0,01V, K2 0,02V, K30,04V , K4 gibt 0,07V, K5 0,14V und K6 0,27V.
ich denke, die differenzen sind bauteiltoleranzen, die hab ich aber auch immer bei meinen programmen zu berücksichtigen versucht, hat ja bekanntlich nicht geklappt.
ich frage mich trotzdem, warum so wirre werte kommen. die voltzahlen stimmen ja interessanterweise mit den werten überein, die nach der A/D wandlung ausgehen sollte!
aber ich versteh jetzt wieder nicht, warum bei den tastern K1-4 gleiche werte rauskommen!
zu der anderen frage: odometrie, linienfolgeeinheit etc. klappt alles hervorragend!mein ASURO hat mich nicht lieb!

m.a.r.v.i.n
21.10.2005, 16:17
Hallo Atreyu,

die Werte kommen mir eine 10er Potenz zu niedrig vor, ich kann mich aber irren.
Werde das mal selbst nachmessen. Habe aber leider derzeit zuhause kein Internet, weshalb ich das Ergebnis am Wochenende nicht posten kann.

Gruß Peter

technique
22.10.2005, 15:37
Hallo Peter!

Tut mir Leid, dass ich mich so lange nicht gemeldet habe. Hatte Schulbeginn und keine Zeit mehr für Asuro. Auch jetzt noch jede Menge Stress und sogar noch Samstags Unterricht!!! Na ja, asuro nervte mich auch ein bisschen, da er nie richtig funktionierte. Hab mir überlegt, ich sollte es wie in der Anleitung steht machen: Erst mit programmieren anfangen, wenn der sElbsttest einwandfrei läuft. Deswegen hab ich, wie du geschrieben hast nochmal alle Löststellen deim linken Motor nachgelötetm, keine Wirkung, hier noch mal die Beschreibung:
Beim Vorwärtsfahren geht der linke Motor ganz normal, vielleicht eine Spur langsamer als der linke, kann aber auch Einbildung sein.
Wenn er sich Rückwärtsdrehen solltze bewegt sich der Motor ganz langsam in zuckigen Bewegungen, als ob er nicht genug Kraft hätte.
Wie in der Fehlersuche der Anleitung beschrieben hab ich nochmal die Bauteile für den linken Motor begutachtet, vom äußerem alles richtig, ich könnte nur noch die Widerstandwete messen und so...
Hast du eine Ahnung was an dem guten Ding falsch ist??

LG Martin

Atreyu
22.10.2005, 16:21
das kann sein, ich teste kurz nach: stimmt, also die werte sind 0,1 etc.
hab die werte jetzt auch genauer, ungerundet gibts immer etwas geringere werte, aber daran sollte es trotzdem nicht liegen, sind wieder die bauteiltoleranzen.

an technique: die motoren drehen sich unterschiedlich schnell, das liegt daran, dass das getriebe auf beiden seiten nicht gleichschnell ist.
guck mal bei deinem ruckeligen motor nach, ob er nicht zu fest am zahnrad hängt, kann schonmal passieren
zu den ungleichschnellen motoren: das problem hatte ich auch!
bei den meisten anwendungen ist es eigentlich egal, aber wenn du trotzdem geradeausfahren willst, geb ich dir einen tipp: du kannst mit der odometrie hantieren, damit du ziemlich geradesausfahren kannst!
hat bei mir geklappt!
wenn du ein beispielprogramm von mir haben möchtest, kann ichs dir geben, probiers aber erstmal alleine ;-)
mfG Atreyu

technique
22.10.2005, 17:40
@Atreyu!
Danke für deinen Tipp, aber selbst, als ich die Motoren ohne Getriebe laufen habe lassen haben sie die selben Probleme. Mir fällt auf, das der linke so schnell läuft iwe der rechte Früher. Der Linke ist sogar beim Vorwärtsfaheren langsamer. Und beim Rückwärtsfahren zuckt er nur ein paar Mal(ergibt mirt Getriebe ca. 1/4 Umdrehung des Rades). Außerdem macht er dabei komische Geräusche, so als ob Fubnken im Motorinnerem überspringen würden. Weiß sonst noch wer eine Lösung oder hatte wer ähnliche Probleme???

LG Martin

technique
22.10.2005, 17:52
Sooooo, ich hab's geschaft, bin selbst draufgekommen, warum der eine Motor nicht gegangen ist. Wie ich Asuro so anschaue, kommt mir plötzlich die Idee, dass ein Kondensator einen Kurzschluss haben könnte, ich meine den Kondensator auf Asuro's Motor. Kein Fehler, aber bei genauerem Hinsehen sehe ich, dass das eine Kondensatorbeinchem vom rechten Motor abgerissen ist. Gleich wieder zusammengelötet und jetzt gehen BEIDE Motoren so wie sie gehen solten. Der Rest ist ein Programm-Prolem.
....muss jetzt gleich alle Programme, ich ich mitlerweile schon gesammelt habe ausprobieren.
....Danke für eure Hilfe, melde mich wieder!!

LG Martin

technique
23.10.2005, 16:21
Wie versprochen, ich schreibe wieder! ;-)

@Peter,
ich hab jetzt dein Programm mit anstoßen und rückwärtsfahren wieder draufgetan. Wenn er anstößt bleibt er stehen und die Motoren summen. Sonst passiert nichts.
Da die Bauteile jetzt alle richtig funktionieren, muss es ein Software-Problem sein. Aber wo könnte der Fehler liegen?
Hast du eine Ahnung?

LG Martin

technique
23.10.2005, 16:46
Ähhh, kann mir wer schnell die Datei "Asuro.c" in First Try schreiben, ich hab's versehentlich überschrieben...*schäm*...

LG Martin

m.a.r.v.i.n
24.10.2005, 10:25
Hallo zusammen,

@atreyu, dann scheint die Hardware ok zu sein. Habe jetzt keine weitere Idee, woran es noch liegen könnte. An der Asuro Bibiothek bzw. der PollSwitch Funktion wurde auch nichts geändert?

@technique, eventuell hilft es die Motorspeed Parameter von 150 auf 200 oder 250 zu erhöhen. Die Asuro Quellen gibt es bei
http://www.arexx.com/arexx.php?cmd=goto&cparam=p_asuro_downloads.dat

Gruß Peter

Andun
24.10.2005, 11:30
Ähhh, kann mir wer schnell die Datei "Asuro.c" in First Try schreiben, ich hab's versehentlich überschrieben...*schäm*...

*werbung mach*

Auf meiner Seite findest du auch eine Version der asuro.c die hier im Forum eigentlcih (weiter)entwickelt wurde aus der original Version.

Ich halte es alledings schon für gut auch erstmal selbst anzufangen und dann auch selbst zu erweitern.

Andun

technique
25.10.2005, 15:08
@Anadun:
Danke für den Tipp, aber wenn ich dein Programm in Asuro.H einfüge, dann schreibt er eine unendliche Fehlerliste auf. Wenn ichs wieder raustu , die normale Asuro.h rein und dein Programm in Asuro.C, dann stehen folgende Fehler da:
asuro.c:125: error: `switched' undeclared (first use in this function)
asuro.c:125: error: (Each undeclared identifier is reported only once
asuro.c:125: error: for each function it appears in.)
asuro.c: In function `__vector_14':
asuro.c:138: error: `encoder' undeclared (first use in this function)
asuro.c: In function `Encoder_Init':
asuro.c:380: warning: implicit declaration of function `Encoder_Set'
asuro.c: At top level:
asuro.c:387: warning: type mismatch with previous implicit declaration
asuro.c:380: warning: previous implicit declaration of `Encoder_Set'
asuro.c:387: warning: `Encoder_Set' was previously implicitly declared to return `int'
asuro.c: In function `Encoder_Set':
asuro.c:388: error: `encoder' undeclared (first use in this function)
asuro.c:388: error: `LEFT' undeclared (first use in this function)
asuro.c:389: error: `RIGHT' undeclared (first use in this function)
asuro.c: In function `PrintInt':
asuro.c:394: warning: implicit declaration of function `itoa'
asuro.c: In function `Go':
asuro.c:424: warning: implicit declaration of function `abs'
asuro.c:436: error: `encoder' undeclared (first use in this function)
asuro.c:436: error: `LEFT' undeclared (first use in this function)
asuro.c:437: error: `RIGHT' undeclared (first use in this function)
asuro.c: In function `Turn':
asuro.c:485: error: `encoder' undeclared (first use in this function)
asuro.c:485: error: `LEFT' undeclared (first use in this function)
asuro.c:486: error: `RIGHT' undeclared (first use in this function)
make: *** [asuro.o] Error 1

> Process Exit Code: 2

....was mach ich denn falsch??
..vielleicht sollte ich einfach nochmal neu installieren.

LG Martin

Andun
25.10.2005, 16:24
Also das Problem ist hier, dass du die asuro.h nicht eingebunden hast. Bzw. die falsche. Also du musst in die asuro.h das rein tun was bei mir drin ist und dann in die asuro.c auch das von mir. (Am besten du lädst dir einfach die Dateien runter)

Dann schreibst du in test.c oben #include "asuro.h" und dann dein Programm mit main() usw. Das sollte dann eigentlich klappen.

Andun

technique
25.10.2005, 18:05
Komisch. Ich habe jetzt in Asuro.h und in Asuro.c deine Datei eingefügt und dann bei Peters Programm make angeklickt, es erscheint wider die unendlich lange Fehlerliste.
Soll ich doch lieber wieder die alte Asuro.C und Asuro.h einfügen??
@Mrvin: Ich habe die Motorspeed erhöt, es bleibt alles gleich, nur der Motor summt noch lauter.
Ich hab mal was gelesen von einem Programm, dass den Asuro zum summen bringen soll, wie haben die das gemacht??

LG Martin

Atreyu
25.10.2005, 19:44
du musst das nicht mir make bearbeitenh, lass einfach die datei und dann lass das mit dem make, das ist überflüssig, du flashst ja nicht asuro.h auf deinen asuro. versuch es mal, müsste klappen! ;-)

fireburner
26.04.2006, 20:27
so mein roboter macht auch probleme mit den tastern:

ich hatte mir ein programm geschrieben in dem er immer über die serielle schnittstelle ausgeben sollte welcher taster gedrückt sei, also beio K1 "Taster 1 gedrueckt" usw.
aber das funktioniert nicht richtig, immer wenn ich eine taste drücke bringt er mir mehrere meldungen auf einmal also z.b. 1 2 4 gedrückt oder so.

ich habe dann mal das programm von oben abgetippt, dann bringt er mir bei
K1 -> 33
K2 -> 16
K3 -> 8
K4 -> 4
K5 -> 2
K6 -> bringt nichts
stattdessen kommt immer wenn ich nichts drücke ne 1

was ist hier faul ??


edit: ok, das programm von unserem lehrer funktionierte nicht mit dem taster auslesen, also das was oben steht.

wenn ich allerdings die abfrage etwas anders gestalte dann gehts.
sogar mit dem taster 6, (der ja mit dem programm von diesem thread immer ne 1 bringt auch wenn er nicht gedrückt ist), funktionierts.
nur fährt er eben nicht bei dem programm, er ruckelt nur ganz langsam, denke mal das liegt an der 1 die er andauernd sendet, er weis dann wohl nicht ob er fahren oder stehen soll.
also wo liegt hier das problem ?
P.S. ich habe die zeile in der asuro.c (return ((10240000L/(long)i-10000L)*65L+5000L)/10000;) bereits angepasst

fireburner
28.04.2006, 18:01
weis keiner eine antwort ???

rainer75
29.04.2006, 22:01
Hallo fireburner!

Hatte auch das Problem, dass die Werte beim Drücken der Taster
nicht übereinstimmten.
Die Angelegenheit mit den dauernden 1en auch ohne gedrückten
Taster hatte/habe ich ebenfalls.

Dass bei Dir jedoch nichts kommt wenn Du den K6 drückst,
deutet auf ein Kontaktproblem hin.
Was passiert wenn Du die Anschlüsse des Tasters mit einer
(leitenden) Pinzette überbrückst? Stimmt der zugehörige
Widerstand (68k)? Hast Du die Möglichkeit den Wert
nachzumessen?

Habe dann mit dem Wert in der asuro.c (bei Dir jetzt 65) in 0.5-er
Schritten solange rumprobiert, bis zumindest die Zahlenwerte zu
den Tastern gepasst haben - auch bei beliebigen Kombinationen.
Wenn sich das garnicht hinbiegen lässt, haben Deine Widerstände
(oder einige) doch höhere Toleranz als erlaubt und Du musst
sie ggf. austauschen.

Die 1er kamen dann aber weiterhin auch ohne Betätigung
bei mir im Hyperterminal.
Aber das scheint (zumindest bei mir) nichts auszumachen,
denn wenn ich ihn dann mit einem Programm laufen lasse,
das PollSwitch() auswertet, reagiert er wirklich erst wenn
irgendein Taster gedrückt wird.

Probiers nochmal aus, es erfordert schon etwas Geduld,
zumal man ja nach jeder Änderung speichern, neu
kompilieren und flashen muss.

Viel Glück!

Grüße,
Rainer

fireburner
01.05.2006, 20:53
nunja ich habe mich wohl falsch ausgedrückt :)
bei k6 kommt halt trotzdem ne 1 aber man kanns halt nicht wirklich unterscheiden.

allerdings hab ich nochmal son programm gemacht, das mir dann bei den jeweiligen tastern über ir gesendet hat welcher taster gedrückt wird.
und da zeigt er alle taster an auch k6. und auch die ständigen 1en stören die abfrage von k6 nicht.

nunja dann mal noch ne frage wie ihr das macht mit dem tasterauslesen, ich hab bisher immer die pollswitch funktion mit der jeweiligen zahl, also 32, 16 usw. inner if anweisung verglichen. gibts da noch andere möglichkeiten ?
nur besteht jetzt noch die frage ob sich die werte durch aufheizen der widerstände im betrieb nicht ändern können und dann plötzlich dadurch vieileicht der wert 33 statt 32 kommt und somit meine funktion nicht mehr funktionieren würde.

außerdem habe ich noch das problem wie ich ja oben beschrieben habe mit dem programm von diesem thread, nämlich das er nicht fährt.
also motoren funktionieren ja, das beim testprogramm ohne probleme geklappt hat.
was kann da noch sein ?

fireburner
12.05.2006, 14:38
weis keiner mehr rat ???

fireburner
17.05.2006, 17:00
nunja, wäre euch sehr dankbar wenn doch noch jemand etwas dazu wüsste !!

sommer87
09.08.2006, 18:03
Hi,
ich habe ebenfalls das Problem, dass mein ASURO einen Taster nicht richtig erkennt.

Alles Sensoren sowie die Taster 2-6 gehen einwandfrei.

Nur Taster 1 gibt statt 32 immer 31 aus.
Ich hab das Programm von marvin laufen und bereits im asuro.c den return wert bei PollSwitch geändert.

wenn ich immer ungerade zahlen einsetze kommt zwischen 55 und 87 ab und an mal ne 32 bei raus, aber eigentlich immer 31 (vereinzelt auch ! oder 21, liegt aber wohl eher an der übertragung).

was kann noch falsch sein?
auf n kurzen oder sonstige fehler in der schaltung hab ich bereits überprüft, müsste aber hardwareseitig ok sein.

würde mich über ne antwort freuen :)
vielen dank schon mal im voraus!

\\EDIT: hab gerade gesehen, dass der thementitel ja überhauptnicht mehr zum thema passt. hab den thread über die suche gefunden und deshalb hier gepostet weil ich kein neues thema für die alte frage aufmachen wollte...

sommer87
10.08.2006, 21:33
Hi,
hab es eben selbst noch mal versucht und bin auf die float einstellung zurückgegangen und habs mit komawerten geregelt.

scheint jetzt ziemlich genau die erforderlichen bit werte einzuhalten :)

Vielen Dank für das klasse Forum hier!
Macht weiter so :)