- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: [gelöst] Asuro Schalter K1-K6 per Software korrigieren?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2007
    Alter
    46
    Beiträge
    12

    [gelöst] Asuro Schalter K1-K6 per Software korrigieren?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Moin Leute,

    ich habe den Asuro frisch zusammengebaut und er hat auch den ganzen Selbsttest fast korrekt durchlaufen. Was aber nicht ganz richtig funktioniert hat, waren die Schalter K1 und K2 (1. u. 2. v.l. in Fahrtrichtung). Die sollen ja bei diesem Testdurchlauf die StatusLED grün (K1) und rot (K2) ansteuern. Das tun sie auch, zusätzlich dreht aber auch jeweils der linke Motor mit. Wie in der Anleitung beschrieben habe ich die entsprechenden Widerstände noch mal kontrolliert, kann aber keine unangenehmen Auffälligkeiten entdecken. Nur beim Kontrollmessen beim Einbau ist mir aufgefallen, dass der R28 (16k, 1%) lediglich 15,43kOhm "hatte".
    Nun meine Frage: wie kann man das Problem softwareseitig beheben? Ich denke, das wäre die eleganteste Lösung. Laut Anleitung soll das wohl machbar sein. Hat das schon mal jemand (erfolgreich) geschafft?

    lg
    Christian

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Hier der betreffende Ausschnitt aus der Datei test.c, ein Bestandteil des Selbsttests:

    Code:
    /* ---------------------- */
    /* ----- Switch Test ---- */
    /* K1 -> Status LED Green */
    /* K2 -> Status LED RED   */
    /* K3 -> Line LED         */
    /* K4 -> Break LED Left   */
    /* K5 -> Break LED Rigth  */
    /* K6 -> Motor Left       */
    /* ---------------------- */
    void SwitchTest(void)
    {
    	unsigned char sw,tmp;
    	MotorDir(FWD,BREAK);
    
    	sw = PollSwitch();
    	StatusLED(OFF);
    	FrontLED(OFF);
    	BackLED(OFF,OFF); 
    	MotorSpeed(0,0);
    	tmp = 0;	
    
    	if (sw & 0x01) 
    		MotorSpeed(200,0);
    	if (sw & 0x02) {
    		BackLED(OFF,ON);
    		tmp = ON;
    	}
    	if (sw & 0x04) 
    		BackLED(ON,tmp);
    	if (sw & 0x08) 
    		FrontLED(ON);
    	if (sw & 0x10) 
    		RED_LED_ON;
    	if (sw & 0x20) 
    		GREEN_LED_ON;
    }
    Code:
    	if (sw & 0x01) 
    		MotorSpeed(200,0);
    Prüft ob Bit 0 in der Tasterabfrage gesetzt ist und startet den linken Motor. Soweit alles richtig. Wenn nun beim Drücken der anderen Tasten auch der Motor startet, bedeutet das, dass die Tasterbits von PollSwitch() nicht richtig gesetzt werden. Einfach mal "pollswitch AND taster AND asuro" (ohne ") in der Forensuche eingeben.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2007
    Alter
    46
    Beiträge
    12
    hm... so richtig schlau werde ich daraus auch nach viel Leserei und Experimentieren nicht...
    Soll ich nun die Funktion PollSwitch() bearbeiten oder "einfach" durch Probieren die korrekten Werte in der test.c ermitteln? (Vielleicht hast du dafür eine bessere Lösung?.) Wenn ich die Hex-werte in der test.c verändere, dann ändert sich auch die "Reaktion" auf Druck auf die verschiedenen Taster... Nur scheint sich die Lage nach mehreren Versuchen eher zu "verschlimmbessern".
    Eigentlich sagst du es ja schon, PollSwitch() setzt nicht die richtigen Bits, rein logisch sollte man also auch diese Funktion korrigieren aber da fehlt mir im Moment noch der Durchblick.
    Gib mir doch bitte noch mal einen Tipp! (Es möge sich natürlich auch gern jeder Ander angesprochen fühlen!)

    Gruß
    Christian

    EDIT: Manchmal hilft es doch, wenn man laut denkt... Eine deutliche Verbesserung tritt ein, wenn ich die Funktion PollSwitch() aus "asuro.c" so ändere: (Wenn ich damit alle Taster einzeln(!) ausprobiere, dann funktioniert´s. Etwas verwirrt reagiert mein Asuro aber, wenn ich mehrere Tasten gleichzeitig und wild durcheinander drücke.)
    Code:
    // return  ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5)); // Originalzeile
    return  ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 61.0 + 0.5));
    Um das ganze zu verstehen, hilft es, sich noch mal das Kapitel zur PollSwitch()- Funktion in der Bediehnungsanleitung anzuschauen.

    Ach ja: Hier mein gekürztes Testprogramm: (Spart echt Zeit...)
    Code:
    #include "asuro.h"
    
    /* ---------------------- */
    /* ----- Switch Test ---- */
    /* K1 -> Status LED Green */
    /* K2 -> Status LED RED   */
    /* K3 -> Line LED         */
    /* K4 -> Break LED Left   */
    /* K5 -> Break LED Rigth  */
    /* K6 -> Motor Left       */
    /* ---------------------- */
    void SwitchTest(void)
    {
        unsigned char sw,tmp;
        MotorDir(FWD,BREAK);
    
        sw = PollSwitch();
        StatusLED(OFF);
        FrontLED(OFF);
        BackLED(OFF,OFF);
        MotorSpeed(0,0);
        tmp = 0;    
    
        if (sw & 0x01) 
            MotorSpeed(200,0);
        if (sw & 0x02) {
            BackLED(OFF,ON);
            tmp = ON;
        }
        if (sw & 0x04)
            BackLED(ON,tmp);
        if (sw & 0x08) 
            FrontLED(ON);
        if (sw & 0x10) 
            RED_LED_ON;
        if (sw & 0x20)
            GREEN_LED_ON;
    }/* END Switch Test ------------------------------ */
    
    
    int main ( void ){
        Init();
        StatusLED(GREEN);
        SerWrite("\n\r-- ASURO Tasterabfrage --\n\r",29);
        SerWrite("\n\r Bitte jetzt die einzelnen Taster drücken!\n\r",48);
        while(1){
                SwitchTest();
                SerWrite("\n\r",2);
        }
    return 0;
    }

  4. #4
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    du kannst zuerst mal etwas mechanisches ausprobieren: lass die funktion im originalzustand. dann kneifst du ein beinchen des kondensators, der parallel zu den tastern geschaltet ist, ab. vorsichtig sein! es ist entweder der kondensator c6 oder c7. bitte schau im schaltplan am ende der anleitung nach. falls jemand es weiss, bitte posten =)

    das hat bei mir wahre wunder gewirkt. seitdem stimmen die taster werte zu 99,9%. sollte das nicht klappen bzw nichts helfen, dann kannst du das eine beinchen einfach wieder auf den lötpunkt festlöten; deshalb soltest du nur ein bein abkneifen.

    ansonsten: Suche im forum, die falschen taster werte sind ein "beliebtes" problem was sehr oft besprochen wird. es gibt viele lösungsansätze.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2007
    Alter
    46
    Beiträge
    12
    Mein Asuro ist aber erst zwei Tage alt! (Da kann ich ihm doch nicht jetzt schon Weh tun! *grins*)
    Zitat Zitat von damaltor
    [...]kneifst du ein beinchen des kondensators, der parallel zu den tastern geschaltet ist, ab.
    Dazu habe ich erst mal eine andere Frage: Welche Funktion hat denn der C7 (Laut Schaltbild ist es dieser.)? Die Herren Entwickler haben sich sicher was dabei gedacht, das Ding an der Stelle unterzubringen. Ich vermute mal ganz spontan, dass der C7 Spannungsschwankungen auf der "K1-K6- Schiene" mindern soll. Dass es ohne C7 trotzdem schlagartig besser wird, ist doch ein interessantes Phänomen...

    Gruß
    Christian

  6. #6
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    er ist zur allgemeinen "beruhigung" des systems, ist schon richtig. er soll störspannungen usw herausfiltern. wenn er allerdings gerade geladen ist, dann kann es sein, dass er die spannungsmessung (was anderes ist es nicht, ein ADC misst die spannung des ports an dem die taster hängen, diese ändert sich je nachdem wie viele / welche taster auf masse liegen) verfälscht. dadurch stimmen dann die werte nicht.

    das ist nicht die einzige ursache, zB können die billigen widerstände die zT deutlich höhere toleranzen haben als aufgedruckt wurde, einfluss haben. zB ist ein 10k widerstand mit 1% toleranz theoretisch zwischen 9 und 11kOhm. bei den vom asuro können es durchaus auch 8 oder 12 werden... billig zeug halt =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2007
    Alter
    46
    Beiträge
    12
    Zitat Zitat von damaltor
    wenn er allerdings gerade geladen ist, dann kann es sein, dass er die spannungsmessung (was anderes ist es nicht, ein ADC misst die spannung des ports an dem die taster hängen, diese ändert sich je nachdem wie viele / welche taster auf masse liegen) verfälscht. dadurch stimmen dann die werte nicht.
    Jo, das leuchtet ein. Offensichtlich verschlimmbessert er (der C7) die Gesamtsituation...

    Zitat Zitat von damaltor
    das ist nicht die einzige ursache, zB können die billigen widerstände die zT deutlich höhere toleranzen haben als aufgedruckt wurde, einfluss haben. zB ist ein 10k widerstand mit 1% toleranz theoretisch zwischen 9 und 11kOhm. bei den vom asuro können es durchaus auch 8 oder 12 werden... billig zeug halt =)
    Das habe ich ja oben auch schon beschrieben, 16k +- 1% => 15,84k - 16,16k. Gemessen habe ich an dem Teil aber 15,43k, da kann man glatt noch einen 470er in Reihe dazu schalten... Aber wenigstens konnte ich das Hauptproblem schon so gut wie beheben.

    Danke euch!

    Gruß
    Christian

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Beiträge
    62
    Also hilft es nur wenig die Software anzupassen ( PollSwitch zu kalibrieren ).
    Am einfachsten geht es und vor genauer, indem man den Kondensator C7 entfernt?
    18.März '07- mein erster ASURO

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    31.03.2007
    Alter
    46
    Beiträge
    12
    Zitat Zitat von DGS
    Also hilft es nur wenig die Software anzupassen ( PollSwitch zu kalibrieren ).
    Am einfachsten geht es und vor genauer, indem man den Kondensator C7 entfernt?
    Nein, das kann man so nicht sagen, die komplett "schiefen" Werte, die die PollSwitch() zurück gibt, kann man schon ganz gut mit dem "Softwaretuning" wie ich es oben beschrieben habe, korrigieren. Das Problem, dass der Asuro bei wildem "Drauflosdrücken" wirr und scheinbar ohne System reagiert, kann man offensichtlich durch Entfernen des C7 erreichen. (@damaltor: Stimmt doch, oder?)

    Gruß
    Christian

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    ja genau. bei mir hat es sehr geholfen den kondensator zu entfernen. bei einem freund von mir überhaupt nicht. probiere es aus, entferne ihn nicht ganz, sndern kneif nur ein bein durch, das kann man dann recht leicht wieder anlöten.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test