- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 42

Thema: Kollisionstaster von Asuro unten montieren- geht das?

  1. #11
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Anzeige

    Powerstation Test
    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.

    Code:
    #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

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    30.10.2004
    Alter
    33
    Beiträge
    36
    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

  3. #13
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    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

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    30.10.2004
    Alter
    33
    Beiträge
    36
    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

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    30.10.2004
    Alter
    33
    Beiträge
    36
    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

  6. #16
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    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:

    Code:
    #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

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    30.10.2004
    Alter
    33
    Beiträge
    36
    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

  8. #18
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    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

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    15.10.2005
    Alter
    35
    Beiträge
    23

    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...

  10. #20
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo Atreyu,

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

    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
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken switches.jpg  

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad