- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: Robby RP5 Ladeprogramm für erweiterungs Platine .

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.08.2005
    Alter
    47
    Beiträge
    16

    Robby RP5 Ladeprogramm für erweiterungs Platine .

    Anzeige

    Powerstation Test
    Hallo.

    Ich habe zu meinem Robby zusätzlich die erweiterungs Platine und LCD angeschafft um die ausgabe Möglichkeiten von visuelen und Wert-Anzeigen zu erhöhen.
    Ich war mir nicht ganz sicher ob diese auch funktionieren ohne C-Control 2, wo ich aber auch niergnens eine gegenteilige Meldung stehen sah . Jedenfalls funktionieren die Beispiel Programme ohne cc2 tadel los.
    (ich muss halt den anderen Sys treiber mit loaden lassen)

    Ich will als erstes ein Programm schreiben was den Lade status der Akkus mit den auf der Erweiterungs Platine enthaltenen 8 Led's anzeigt.

    Das hab ich den auch getan :

    Code:
    'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    'IIIIIIIIII       MOBILE ROBOT EVALUATION PROGRAM          IIIIIIIIIIII
    'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    ' Erweitertes PROGRAMM ZUR ÜBERWACHUNG DES LADEVORGANGS
    ' Dieses Programm ist für den Robby RP5 mit erweiterungs Platine.
    ' Basis Program war das CHARGE TOOL von Robby .
    ' Frei für benutzung für alle, erweiterung , weitergeben natürlich auch frei :O)
    ' Aber haftbarkeit für etwelche Schäden werden abgelehnt.
    ' Status NICHT funktional . :O(  
    ' Version 0.2
    ' ACHTUNG:
    ' Wenn Sie den Akku des Roboters laden, MUSS der Schalter so geschaltet sein,
    ' dass der Roboter in Betrieb ist !!!
    ' Andernfalls würde eine zu hohe Ladespannung leicht zur Zerstörung der
    ' empfindlichen Elektronik führen.
    ' Starten Sie das Programm BEVOR sie das Ladegerät anstecken, weil
    ' beim Start eine Calibrierung durchgeführt wird und dabei kein Ladestrom
    ' fliessen darf.
    ' ---------------------------------------------------------------------
    '                       FUNKTION DES PROGRAMMS
    '----------------------------------------------------------------------
    ' Der Bezeichner SYS_VOLTS ist der A/D-Wandler, der die Akkuspannung misst.
    ' Ein Digit entspricht dabei 39,2 mV, der Messbereich geht bis 10 V
    ' Die Akkuspannung wird als Balkenanzeige mit den Leuchtdioden angezeigt.
    ' Die Schwellen sind folgendermassen eingestellt:
    ' LED 1 - blinkend:7,1736 V / LED 1 - leuchtend:7,3304 V
    ' LED 2 - blinkend:7,4872 V / LED 2 - leuchtend:7,6440 V
    ' LED 3 - blinkend:7,8008 V / LED 3 - leuchtend:7,9576 V
    ' LED 4 - blinkend:8,1144 V / LED 4 - leuchtend:8,2712 V
    ' LED 5 - blinkend:8,4280 V / LED 5 - leuchtend:8,5848 V
    ' LED 6 - blinkend:8,6632 V / LED 6 - leuchtend:8,7808 V
    ' LED 7 - blinkend:8,8592 V / LED 7 - leuchtend:8,9376 V
    ' LED 8 - blinkend:8,9768 V / LED 8 - leuchtend:9,0160 V
    ' Wenn alle Leuchtdioden dauernd leuchten, ist die Ladung beendet und
    ' wird mit dem Beeper gemeldet.
    '--------------------------
    '------ I/O PORTS ---------
    '--------------------------
    '- INTERFACE LCD/EXTPORT --
    define sdio         port[1]
    define sclio        port[3]
    define strobe       port[4]
    define LSTROBE      port[7]                        ' Hier hab ich erweitert .......
    '-- INTERFACE COM/NAV -----
    define DATALINE     port[1]
    define CLOCKLINE    port[2]
    '--------------------------
    '------ SENSORS ---------
    '--------------------------
    define LIGHT_L      ad[7]
    define LIGHT_R      ad[6]
    define SYS_VOLTS    ad[3]
    define CHRG_CURRENT ad[2]
    define SYS_CURRENT  ad[1]
    define MIC          ad[4]
    define TOUCH        ad[5]
    '---------------------------
    '------  DRIVE -------------
    '---------------------------
    define SPEED_L        da[1]
    define SPEED_R        da[2]
    define REV_L        port[6]
    define REV_R        port[5]
    '--------------------------
    '---- SYSTEM MEMORY -------
    '--------------------------
    '--- INTERFACE BUFFER ----
    define LBYTE         byte[1]
    define HBYTE         byte[2]
    define SUBCMD        byte[3]
    '---- OPERATION DATA ------
    define EXTPORT       byte[4]
    define LED1_F        bit[29]
    define LED2_F        bit[30]
    define LED3_F        bit[31]
    define LED4_F        bit[32]
    define SYSTEM_STATUS byte[5]
    define LEDPORT       byte[6]                          ' Hier hab ich erweitert .......
    define L1_F          bit[41]                              ' Hier hab ich erweitert .......
    define L2_F          bit[42]                              ' Hier hab ich erweitert .......
    define L3_F          bit[43]                              ' Hier hab ich erweitert .......
    define L4_F          bit[44]                              ' Hier hab ich erweitert .......
    define L5_F          bit[45]                              ' Hier hab ich erweitert .......
    define L6_F          bit[46]                              ' Hier hab ich erweitert .......
    define L7_F          bit[47]                              ' Hier hab ich erweitert .......
    define L8_F          bit[48]                              ' Hier hab ich erweitert .......
    '--------------------------
    '----  USER MEMORY  -------
    '--------------------------
    define OFFSET        byte[6]
    
    '--- SYSTEMROUTINEN -----------
    define PLM_SLOW      &H01C4
    define SYSTEM        &H01C9
    define LED_DRIVE     &H01CA                       ' Hier hab ich erweitert .......
    define COMNAV        &H0154
    '---------- INIT---------------
    gosub SUBSYS_PWR_ON:REV_L=off:REV_R=off
    LSTROBE=off:beep 368,10,0:pause 50          ' Hier hab ich erweitert ....... LSTROBE
    if SYS_VOLTS>=CHRG_CURRENT then goto WATCH_AKKU
    OFFSET=CHRG_CURRENT-SYS_VOLTS
    '--------------------------------------------
    '---   LADEÜBERWACHUNG FÜR DEN AKKU      ---
    '--------------------------------------------
    #WATCH_AKKU
    beep 0,1,0
    if SYS_VOLTS > 230 then goto LED8ON
    if SYS_VOLTS > 229 then goto LED8BLINK
    if SYS_VOLTS > 228 then goto LED7ON
    if SYS_VOLTS > 226 then goto LED7BLINK
    if SYS_VOLTS > 224 then goto LED6ON
    if SYS_VOLTS > 221 then goto LED6BLINK
    if SYS_VOLTS > 219 then goto LED5ON
    if SYS_VOLTS > 215 then goto LED5BLINK
    if SYS_VOLTS > 211 then goto LED4ON
    if SYS_VOLTS > 207 then goto LED4BLINK
    if SYS_VOLTS > 203 then goto LED3ON
    if SYS_VOLTS > 199 then goto LED3BLINK
    if SYS_VOLTS > 195 then goto LED2ON
    if SYS_VOLTS > 191 then goto LED2BLINK
    if SYS_VOLTS > 187 then goto LED1ON
    if SYS_VOLTS > 183 then goto LED1BLINK
    goto WATCH_AKKU
    #e
    gosub LOFF:goto WATCH_AKKU
    #LED8ON
    gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:gosub L8ON:goto WATCH_AKKU
    #LED8BLINK
    gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:gosub L8ON:pause 20:gosub L8OFF:pause 20:goto WATCH_AKKU
    #LED7ON
    gosub L8OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:goto WATCH_AKKU
    #LED7BLINK
    gosub L8OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:pause 20:gosub L7OFF:pause 20:goto WATCH_AKKU
    #LED6ON
    gosub L8OFF:gosub L7OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:goto WATCH_AKKU
    #LED6BLINK
    gosub L8OFF:gosub L7OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:pause 20:gosub L6OFF:pause 20:goto WATCH_AKKU
    #LED5ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:goto WATCH_AKKU
    #LED5BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:pause 20:gosub L5OFF:pause 20:goto WATCH_AKKU
    #LED4ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:goto WATCH_AKKU
    #LED4BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:pause 20:gosub L4OFF:pause 20:goto WATCH_AKKU
    #LED3ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L1ON:gosub L2ON:gosub L3ON:goto WATCH_AKKU
    #LED3BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L1ON:gosub L2ON:gosub L3ON:pause 20:gosub L3OFF:pause 20:goto WATCH_AKKU
    #LED2ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L1ON:gosub L2ON:goto WATCH_AKKU
    #LED2BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L1ON:gosub L2ON:pause 20:gosub L2OFF:pause 20:goto WATCH_AKKU
    #LED1ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L2OFF:gosub L1ON:goto WATCH_AKKU
    #LED1BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L2OFF:gosub L1ON:pause 20:gosub L1OFF:pause 20:goto WATCH_AKKU
    '--- LEDS AUF DER BASIS ERWEITERUNG  ------
    #L1ON
    L1_F=on:goto LEDPORT_WRITE
    #L1OFF
    L1_F=off :goto LEDPORT_WRITE
    #L2ON
    L2_F=on:goto LEDPORT_WRITE
    #L2OFF
    L2_F=off :goto LEDPORT_WRITE
    #L3ON
    L3_F=on:goto LEDPORT_WRITE
    #L3OFF
    L3_F=off :goto LEDPORT_WRITE
    #L4ON
    L4_F=on:goto LEDPORT_WRITE
    #L4OFF
    L4_F=off :goto LEDPORT_WRITE
    #L5ON
    L5_F=on:goto LEDPORT_WRITE
    #L5OFF
    L5_F=off :goto LEDPORT_WRITE
    #L6ON
    L6_F=on:goto LEDPORT_WRITE
    #L6OFF
    L6_F=off :goto LEDPORT_WRITE
    #L7ON
    L7_F=on:goto LEDPORT_WRITE
    #L7OFF
    L7_F=off :goto LEDPORT_WRITE
    #L8ON
    L8_F=on:goto LEDPORT_WRITE
    #L8OFF
    L8_F=off :goto LEDPORT_WRITE
    #LOFF
    LEDPORT=0
    #LEDPORT_WRITE
    SYS LED_DRIVE:pulse LSTROBE:RETURN
    'IIIIII   SYSTEMROUTINEN SYSTEM  IIIIIIIIIIII
    #SUBSYS_PWR_ON
    sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8
    sys SYSTEM:return
    #SUBSYS_PWR_OFF
    EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM
    deact sdio:deact sclio:return
    '---------COM/NAV GERÄTEREIBER -------------
    syscode "p5driv12.s19"
    Leider funktioniert das Programm nicht , beim compilern meldet es keine fehler.
    Starte ich das Programm löscht es die 8 Leds wie gewollt , doch dan beginnen sie alle miteinander einfach zu leuchten und der Pipser pipst ab und zu.
    Ich frage mich der weilen an was es liegen könnte , denn ich habe den code nun schon 10mal mit dem des Led beispieles (für die erweiterungs Platine) verglichen und habe keine "übertragungs lücken" entdecken können .

    Ich habe für die bessere übersicht auch noch die kommentar zeilen "' Hier hab ich erweitert ......." eingefügt bei den System initalisierungen und System rutienen .

    Weiss jehmand vieleicht woran die "nicht funktion" liegen könnte ?

    Ich währe mega froh wen mir jehamnd helfen könnte

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Ladeprogramm mit Erweiterungsplatine für Robby

    Hallo cedra,

    was mir auffällt:

    1. byte[6] ist 2-fach belegt (OFFSET und LEDPORT). Dürfte aber hier nicht der Fehler sein, weil in der Schleife nicht genutzt. Wozu nutzt du OFFSET überhaupt?
    2. In deiner Hauptschleife erfolgt die LED-Anzeige fortlaufend ohne Pause und ohne Löschen der LEDs vor einer neuen Messung, weil das Prog nie zum Label #e kommen kann. Du müßtest VOR jeder neuen Messung (d.h. vor dem "if SYS_VOLTS ..."-Block das Löschen der LEDs einfügen. Nach der Anzeige würde ich auch eine Pause einlegen, um die Anzeige etwas "stabiler" zu machen.
    3. Wenn du bei der SYS_VOLTS-Abfrage immer mit "if SYS_VOLTS > ..." arbeitest, dann wird ja mehrfach gemessen. Für deine Anzeige bedeutet das stark schwankende Werte. Ich würde am Anfang nur 1x messen (UBATT=SYS_VOLTS) und dann UBATT testen.

    Gruß Dirk

    Da gab es auch 'mal ein funktionierendes Prog.
    Guckst du hier:
    Code:
    '---------- INIT---------------
    ' Basiserweiterung initialisieren:
    LSTROBE=off 'LEDPORT-Zugriff ermöglichen
    CC2POWER=on 'PWR und +5V (für CC2 und Experimentierplatine) einschalten
    ' Subsysteme einschalten:
    gosub SUBSYS_PWR_ON
    ' LC-Display initialisieren:
    'gosub LCD_INIT
    
    beep 368,10,0:pause 50
    gosub LEDSOFF 'Alle LEDs auf Robby aus
    gosub LOFF    'Alle LEDs auf Basiserweiterung aus
    ' ACS initialisieren:
    'gosub NO_ACS_INT:beep 368,10,0:SYS ACS_HI 'Kein Interrupt, Power HI
    '------------ ANTRIEB -------------------------
    REV_L=on:REV_R=on:SYS PLM_SLOW
    '----------------------------------------------------------------------
    ' PROGRAMM:
    if SYS_VOLTS>=CHRG_CURRENT then goto WATCH_AKKU
    OFFSET=CHRG_CURRENT-SYS_VOLTS
    '--------------------------------------------
    '---   LADEÜBERWACHUNG FÜR DEN AKKU      ---
    '--------------------------------------------
    #WATCH_AKKU
    if TOUCH >10 then goto WATCH_CURRENT
    beep 0,1,0
    if SYS_VOLTS > 230 then goto L4_ON
    if SYS_VOLTS > 227 then goto L4BLINK
    if SYS_VOLTS > 222 then goto L3_ON
    if SYS_VOLTS > 214 then goto L3BLINK
    if SYS_VOLTS > 206 then goto L2_ON
    if SYS_VOLTS > 199 then goto L2BLINK
    if SYS_VOLTS > 191 then goto L1_ON
    if SYS_VOLTS > 183 then goto L1BLINK
    goto WATCH_AKKU
    '--------------------------------------------
    '---         STROMANZEIGE                ----
    '--------------------------------------------
    #WATCH_CURRENT
    beep 368,0,0
    if CHRG_CURRENT<= SYS_VOLTS then goto e
    if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 12 then goto L4_ON
    if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 8 then goto L4BLINK
    if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 5 then goto L3_ON
    if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 4 then goto L3BLINK
    if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 3 then goto L2_ON
    if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 2 then goto L2BLINK
    if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 1 then goto L1_ON
    if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 0 then goto L1BLINK
    #e
    gosub LEDSOFF:goto WATCH_AKKU
    #L4_ON
    gosub LED1ON:gosub LED2ON:gosub LED3ON
    gosub LED4ON:beep 386,20,1:pause 20:goto WATCH_AKKU
    #L4BLINK
    gosub LED1ON:gosub LED2ON:gosub LED3ON
    gosub LED4ON:pause 20:gosub LED4OFF:pause 20:goto WATCH_AKKU
    #L3_ON
    gosub LED1ON:gosub LED2ON:gosub LED4OFF
    gosub LED3ON:goto WATCH_AKKU
    #L3BLINK
    gosub LED1ON:gosub LED2ON:gosub LED4OFF
    gosub LED3ON:pause 20:gosub LED3OFF:pause 20:goto WATCH_AKKU
    #L2_ON
    gosub LED4OFF:gosub LED3OFF
    gosub LED1ON:gosub LED2ON:goto WATCH_AKKU
    #L2BLINK
    gosub LED1ON:gosub LED4OFF:gosub LED3OFF
    gosub LED2ON:pause 20:gosub LED2OFF:pause 20:goto WATCH_AKKU
    #L1_ON
    gosub LED4OFF:gosub LED3OFF:gosub LED2OFF
    gosub LED1ON:goto WATCH_AKKU
    #L1BLINK
    gosub LED4OFF:gosub LED3OFF:gosub LED2OFF
    gosub LED1ON:pause 20:gosub LED1OFF:pause 20:goto WATCH_AKKU

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    17.08.2005
    Alter
    47
    Beiträge
    16
    Hallo Dirk .

    Vilen dank !! genau da liegt der Hund ahnscheinend begraben . :O)

    Frag lieber nicht wozu ich was brauche , ich bin mich gerade in das Basic von Robby am einarbeiten und habe wahrscheindlich noch einige define's drin die es gar nicht braucht .

    Das mit den mess werten ist wierklich eine gute feststellung . Ich werde mir dazu noch eine lösung überlegen (naja eben 1 mal messen in ne Variable übertragen den wert und den diese nach den listen werten abfragen .. so in etwa ) .

    Ich werde erst mal das Programm nun umschreiben (brocht ja ned viel ) und austesten , wen es in dieser form mal funktioniert , werde ich das mit der 1 mal messung realisieren (guter Vorschlag ! ;O) ) und wen das auch klappt wollte ich das Programm auch auf die Lade ströme erweitern noch so das diese auch via 8 Led's angezeigt werden ..

    Ganz toll währe natürlich die Werte auf dem LCD auszu geben aber man kann ja nich gleich "Version 10" auf anhib coden .. ^^

    Ich lasse von mir hören wen es geht und ich auch ne neuere, (hoffentlich) funktionierende Version vom Erweiterungs 1 Loader posten kann .

    aber so weit sehr gut !!! =D>
    cu

    edit :

    so gesagt getan :

    Code:
    'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    'IIIIIIIIII       MOBILE ROBOT EVALUATION PROGRAM          IIIIIIIIIIII
    'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    ' Erweitertes PROGRAMM ZUR ÜBERWACHUNG DES LADEVORGANGS
    ' Dieses Programm ist für den Robby RP5 mit erweiterungs Platine.
    ' Basis Program war das CHARGE TOOL von Robby .
    ' Frei für benutzung für alle, erweiterung , weitergeben natürlich auch frei :O)
    ' Aber haftbarkeit für etwelche Schäden werden abgelehnt.
    ' Status funktional . :O) ( mit hielfe von Dirk @ https://www.roboternetz.de/ )
    ' Version 0.4
    ' ACHTUNG:
    ' Wenn Sie den Akku des Roboters laden, MUSS der Schalter so geschaltet sein,
    ' dass der Roboter in Betrieb ist !!!
    ' Andernfalls würde eine zu hohe Ladespannung leicht zur Zerstörung der
    ' empfindlichen Elektronik führen.
    ' Starten Sie das Programm BEVOR sie das Ladegerät anstecken, weil
    ' beim Start eine Calibrierung durchgeführt wird und dabei kein Ladestrom
    ' fliessen darf.
    ' ---------------------------------------------------------------------
    '                       FUNKTION DES PROGRAMMS
    '----------------------------------------------------------------------
    ' Der Bezeichner SYS_VOLTS ist der A/D-Wandler, der die Akkuspannung misst.
    ' Ein Digit entspricht dabei 39,2 mV, der Messbereich geht bis 10 V
    ' Die Akkuspannung wird als Balkenanzeige mit den Leuchtdioden angezeigt.
    ' Die Schwellen sind folgendermassen eingestellt:
    ' LED 1 - blinkend:7,1736 V / LED 1 - leuchend:7,3304 V
    ' LED 2 - blinkend:7,4872 V / LED 2 - leuchend:7,6440 V
    ' LED 3 - blinkend:7,8008 V / LED 3 - leuchend:7,9576 V
    ' LED 4 - blinkend:8,1144 V / LED 4 - leuchend:8,2712 V
    ' LED 5 - blinkend:8,4280 V / LED 5 - leuchend:8,5848 V
    ' LED 6 - blinkend:8,6632 V / LED 6 - leuchend:8,7808 V
    ' LED 7 - blinkend:8,8592 V / LED 7 - leuchend:8,9376 V
    ' LED 8 - blinkend:8,9768 V / LED 8 - leuchend:9,0160 V
    ' Wenn alle Leuchtdioden dauernd leuchten, ist die Ladung beendet und
    ' wird mit dem Beeper gemeldet.
    '--------------------------
    '------ I/O PORTS ---------
    '--------------------------
    '- INTERFACE LCD/EXTPORT --
    define sdio         port[1]
    define sclio        port[3]
    define strobe       port[4]
    define LSTROBE      port[7] ' Hier hab ich erweitert .......
    '-- INTERFACE COM/NAV -----
    define DATALINE     port[1]
    define CLOCKLINE    port[2]
    '--------------------------
    '------ SENSORS ---------
    '--------------------------
    define LIGHT_L      ad[7]
    define LIGHT_R      ad[6]
    define SYS_VOLTS    ad[3]
    define CHRG_CURRENT ad[2]
    define SYS_CURRENT  ad[1]
    define MIC          ad[4]
    define TOUCH        ad[5]
    '---------------------------
    '------  DRIVE -------------
    '---------------------------
    define SPEED_L        da[1]
    define SPEED_R        da[2]
    define REV_L        port[6]
    define REV_R        port[5]
    '--------------------------
    '---- SYSTEM MEMORY -------
    '--------------------------
    '--- INTERFACE BUFFER ----
    define LBYTE         byte[1]
    define HBYTE         byte[2]
    define SUBCMD        byte[3]
    '---- OPERATION DATA ------
    define EXTPORT       byte[4]
    define LED1_F        bit[29]
    define LED2_F        bit[30]
    define LED3_F        bit[31]
    define LED4_F        bit[32]
    define SYSTEM_STATUS byte[5]
    define LEDPORT       byte[6] ' Hier hab ich erweitert .......
    define L1_F          bit[41] ' Hier hab ich erweitert .......
    define L2_F          bit[42] ' Hier hab ich erweitert .......
    define L3_F          bit[43] ' Hier hab ich erweitert .......
    define L4_F          bit[44] ' Hier hab ich erweitert .......
    define L5_F          bit[45] ' Hier hab ich erweitert .......
    define L6_F          bit[46] ' Hier hab ich erweitert .......
    define L7_F          bit[47] ' Hier hab ich erweitert .......
    define L8_F          bit[48] ' Hier hab ich erweitert .......
    '--- SYSTEMROUTINEN -----------
    define PLM_SLOW      &H01C4
    define SYSTEM        &H01C9
    define LED_DRIVE     &H01CA   ' Hier hab ich erweitert .......
    define COMNAV        &H0154
    '--------------------------
    '----  USER MEMORY  -------
    '--------------------------
    define OFFSET        byte[6]
    '---------- INIT---------------
    gosub SUBSYS_PWR_ON:REV_L=off:REV_R=off
    beep 368,10,0:pause 50
    if SYS_VOLTS>=CHRG_CURRENT then goto WATCH_AKKU
    OFFSET=CHRG_CURRENT-SYS_VOLTS
    '--------------------------------------------
    '---   LADEÜBERWACHUNG FÜR DEN AKKU      ---
    '--------------------------------------------
    #WATCH_AKKU
    pause 20
    if SYS_VOLTS > 230 then goto LED8ON:gosub LOFF
    if SYS_VOLTS > 229 then goto LED8BLINK:gosub LOFF
    if SYS_VOLTS > 228 then goto LED7ON:gosub LOFF
    if SYS_VOLTS > 226 then goto LED7BLINK:gosub LOFF
    if SYS_VOLTS > 224 then goto LED6ON:gosub LOFF
    if SYS_VOLTS > 221 then goto LED6BLINK:gosub LOFF
    if SYS_VOLTS > 219 then goto LED5ON:gosub LOFF
    if SYS_VOLTS > 215 then goto LED5BLINK:gosub LOFF
    if SYS_VOLTS > 211 then goto LED4ON:gosub LOFF
    if SYS_VOLTS > 207 then goto LED4BLINK:gosub LOFF
    if SYS_VOLTS > 203 then goto LED3ON:gosub LOFF
    if SYS_VOLTS > 199 then goto LED3BLINK:gosub LOFF
    if SYS_VOLTS > 195 then goto LED2ON:gosub LOFF
    if SYS_VOLTS > 191 then goto LED2BLINK:gosub LOFF
    if SYS_VOLTS > 187 then goto LED1ON:gosub LOFF
    if SYS_VOLTS > 183 then goto LED1BLINK:gosub LOFF
    goto WATCH_AKKU
    #LED8ON
    gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:gosub L8ON:goto WATCH_AKKU
    #LED8BLINK
    gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:gosub L8ON:pause 20:gosub L8OFF:pause 20:goto WATCH_AKKU
    #LED7ON
    gosub L8OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:goto WATCH_AKKU
    #LED7BLINK
    gosub L8OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:pause 20:gosub L7OFF:pause 20:goto WATCH_AKKU
    #LED6ON
    gosub L8OFF:gosub L7OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:goto WATCH_AKKU
    #LED6BLINK
    gosub L8OFF:gosub L7OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:pause 20:gosub L6OFF:pause 20:goto WATCH_AKKU
    #LED5ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:goto WATCH_AKKU
    #LED5BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:pause 20:gosub L5OFF:pause 20:goto WATCH_AKKU
    #LED4ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:goto WATCH_AKKU
    #LED4BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:pause 20:gosub L4OFF:pause 20:goto WATCH_AKKU
    #LED3ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L1ON:gosub L2ON:gosub L3ON:goto WATCH_AKKU
    #LED3BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L1ON:gosub L2ON:gosub L3ON:pause 20:gosub L3OFF:pause 20:goto WATCH_AKKU
    #LED2ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L1ON:gosub L2ON:goto WATCH_AKKU
    #LED2BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L1ON:gosub L2ON:pause 20:gosub L2OFF:pause 20:goto WATCH_AKKU
    #LED1ON
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L2OFF:gosub L1ON:goto WATCH_AKKU
    #LED1BLINK
    gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L2OFF:gosub L1ON:pause 20:gosub L1OFF:pause 20:goto WATCH_AKKU
    '--- LEDS AUF DER BASIS ERWEITERUNG  ------
    #L1ON
    L1_F=on:goto LEDPORT_WRITE
    #L1OFF
    L1_F=off :goto LEDPORT_WRITE
    #L2ON
    L2_F=on:goto LEDPORT_WRITE
    #L2OFF
    L2_F=off :goto LEDPORT_WRITE
    #L3ON
    L3_F=on:goto LEDPORT_WRITE
    #L3OFF
    L3_F=off :goto LEDPORT_WRITE
    #L4ON
    L4_F=on:goto LEDPORT_WRITE
    #L4OFF
    L4_F=off :goto LEDPORT_WRITE
    #L5ON
    L5_F=on:goto LEDPORT_WRITE
    #L5OFF
    L5_F=off :goto LEDPORT_WRITE
    #L6ON
    L6_F=on:goto LEDPORT_WRITE
    #L6OFF
    L6_F=off :goto LEDPORT_WRITE
    #L7ON
    L7_F=on:goto LEDPORT_WRITE
    #L7OFF
    L7_F=off :goto LEDPORT_WRITE
    #L8ON
    L8_F=on:goto LEDPORT_WRITE
    #L8OFF
    L8_F=off :goto LEDPORT_WRITE
    #LOFF
    LEDPORT=0:RETURN
    #LEDPORT_WRITE
    SYS LED_DRIVE:pulse LSTROBE:RETURN
    'IIIIII   SYSTEMROUTINEN SYSTEM  IIIIIIIIIIII
    #SUBSYS_PWR_ON
    sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8
    sys SYSTEM:return
    #SUBSYS_PWR_OFF
    EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM
    deact sdio:deact sclio:return
    '---------COM/NAV GERÄTEREIBER -------------
    syscode "p5driv12.s19"
    Also so weit so gut !! ^^ *freui* ES funktioniert ! dank dir Dirk :O)

    Aber wie ich bemerken muss leuchten nun immer die 4 Standart leds was es ja auch ned bringt , wenigstens ned wen da nicht die lade strom stärke angezeigt wird wenigstens .. ^^ ( dazu auch der OFFSET )

    Ansonsten bleibt nur noch zu sagen das man die "p5driv12.s19" braucht um das Program ablaufen lassen zu können . Ich werde mir die Sache wegen den 4 Basis Leds mal angucken .

    Brauchen den so Led's viel "strom" ? nicht das eine zu massige Anzeige zu massig Lade strom verbraucht ?!?

  4. #4
    Zitat Zitat von cedra
    Brauchen den so Led's viel "strom" ? nicht das eine zu massige Anzeige zu massig Lade strom verbraucht ?!?
    Hi cedra,
    da das Low-current-LEDs sind, braucht jede 2 bis 3 mA.

    Gruß
    viracocha

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    17.08.2005
    Alter
    47
    Beiträge
    16
    Hallo viracocha .

    2-3 ma geht ja noch , hmm ? also 12 X 3 = 36 mA bei voll leuchten ..

    Jo das geht ja noch .

    Sehr gut ! ^^

    Fehlt noch der Beep im #L8ON musste ich bemerken , was ja als akustik signal sehr gut ist und die stromstärke des lade stroms geb ich nun so am besten auf den 4 Basis Led 's aus . Den sieht man immer wo er ist und mit wiviel der Robby geladen wird noch . (also mit den vier Leds )

    Mal gucken , ich bin gerade an der 1 mal mess genauikeits verbesserung (siehe oben) , wen die klappt kommt die lade strom stärke und den dacht ich mir währe ganz toll wen man die daten auf dem LCD angucken könnte via touch sensor . Die liste von den messstufen wie mess ströme sind ja im Prgramm drin , nur weiss diese ja nich jeder so "frei händig".

    Ich bin mir gerade am überlegen , wie ich den das Programm auch noch verbessern kann in sache verbrauch , sagen ma mal ob das Programm im Slow Mode mit veränderten Pausen nicht genau gleich ablaufen mag und so aber ladezeit eingespart werden kann . oder man via klatschen die Led anzeige "abschalten" lassen kann und nur noch das akustik siganal beim ende des ladens ausgegeben wird . (son "sporado mod" )

    und genau betrachtet wen der Robby schon läuft könnte man über das ganze auch via clock, ladezeiten angaben noch ausgeben lassen

  6. #6
    Die Sache mit dem LCD Display ist ne gute Idee. Ich zeige die Spannung auch auf dem LCD Display an allerdings während des Fahrbetriebs. Wenn die Akkus dem Ende zugehen geht dann eine LED an.
    Um diverse Modi beim Roboter umzuschalten (LED-Anzeige an/aus etc.) benutze ich eine IR-Fernbedienung. Geht auch super zum fernsteuern.

    Gruß
    viracocha

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Robby Ladeprogramm verbessern

    Hallo cedra,

    und den dacht ich mir währe ganz toll wen man die daten auf dem LCD angucken könnte via touch sensor . Die liste von den messstufen wie mess ströme sind ja im Prgramm drin , nur weiss diese ja nich jeder so "frei händig".

    Ich bin mir gerade am überlegen , wie ich den das Programm auch noch verbessern kann in sache verbrauch , sagen ma mal ob das Programm im Slow Mode mit veränderten Pausen nicht genau gleich ablaufen mag und so aber ladezeit eingespart werden kann . oder man via klatschen die Led anzeige "abschalten" lassen kann und nur noch das akustik siganal beim ende des ladens ausgegeben wird . (son "sporado mod" )
    ... dann mal los! Es ist alles möglich!

    Viel Erfolg!

    Zu deinem neuen Prog:
    Sieht gut aus!
    1. Das "gosub LOFF" brauchst du nicht hinter jeder if-Abfrage, sondern nur 1x hinter dem pause 20 am Anfang der Schleife.
    2. Um die 4 LEDs des Robby auszuschalten, must du sie mit gosub LEDSOFF vor der Schleife ausschalten. Das Unterprogramm LEDSOFF steht in anderen Progs für den Robby, oder du nimmst für deine Experimente mein Prog LEERPROGRAMM_BE1.bas aus dem Downloadbereich. Da sind alle Definitionen und wichtige Unterprogramme für den Robby mit Basiserweiterung drin.

    Gruß Dirk

    P.S.: Ich habe 'mal den Stromverbrauch im Slow Mode gemessen: Bringt in kurzen Schleifen fast gar nichts!

Berechtigungen

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

LiFePO4 Speicher Test