-         

Ergebnis 1 bis 2 von 2

Thema: Fehlerbehandlung des VNH2SP30-E Motortreibers

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332

    Fehlerbehandlung des VNH2SP30-E Motortreibers

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo Zusammen,

    hat jemand Erfahrung mit dem Fehlerhandling der Kontrollers "VNH2SP30-E" gemacht.

    Laut Tabelle des Datenblatts ist ein Fehlerzustand vorhanden, wenn min der DIA-A Eingang auf Low geht.
    Ich habe in der Schaltung 10kOhm Pullups eingebaut!

    Wenn ich iState=0; entferne arbeitet die Schaltung nicht mehr, da ich einen Abbruch wegen Motorstatus bekomme.

    Wenn ich die Signale mit einem Logikstift prüfe, sind die Signale auch auf High, also alles o.k. Der Fehler muss also in der folgenden Routine sein. Da ich von PIC ASM komme, habe ich ein wenig Probleme mit dem Ansprechen von I/Os unter C bei atmega.

    Code:
    // Definition of the I/O Setup of Port C
    // Bit set to 1 = Output  0=Input
    #define        PORTC_DIRECTIONMASK        0x00
    #define        PORTC_PULLUP_SETUP        0x04
    
    #define        DATA_SCL                PINC0
    #define        DATA_SDA                PINC1
    #define        INPUT_BUMPER_DOWN_L        PINC2
    #define        INPUT_MOTOR_L_DIAGB        PINC3
    #define        INPUT_MOTOR_L_DIAGA        PINC4
    #define        INPUT_MOTOR_R_DIAGA        PINC5
    #define        INPUT_MOTOR_R_DIAGB        PINC6
    #define        INPUT_FREE_PINC7        PINC7
    
    
    //
    //  Get the state of the motor driver
    //
    char    getMotorState(void)
    {
    char    iState=0;
    
        if( !(PINC & (1 << INPUT_MOTOR_R_DIAGA)))    iState |= 0x1;
        if( !(PINC & (1 << INPUT_MOTOR_R_DIAGB)))    iState |= 0x2;
        if( !(PINC & (1 << INPUT_MOTOR_L_DIAGA)))    iState |= 0x4;
        if( !(PINC & (1 << INPUT_MOTOR_L_DIAGB)))    iState |= 0x8;
    
        iState=0;
        
        return (iState);
    }
    Gruss R.
    Geändert von Ritchie (26.02.2012 um 20:05 Uhr)
    Kaum macht man es richtig, schon funktioniert's ...

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hallo Zusammen,

    hier der Code, der wohl auf den ersten Blick laufen sollte:
    Code:
    char    getMotorState(void)
    {
    char        iState=0;
    
        if( (PINC & (1 << INPUT_MOTOR_L_DIAGA)) == 0 && (PINC & (1 << INPUT_MOTOR_L_DIAGB))== 1)    // check feed backs
            iState |= 0x1;
    
        if( (PINC & (1 << INPUT_MOTOR_R_DIAGA))== 0 && (PINC & (1 << INPUT_MOTOR_R_DIAGB)) == 1)
            iState |= 0x2;
    
        return (iState);
    }
    Ursache meines Fehler ist, das ich die Wahrheitstabelle falsch gelesen habe. Wenn Diag B auf 0 geht, ist das ein normaler Zustand.

    Siehe Datenblatt Seite 8/26 oder auch letztes Impulsdiagram Seite 12/26

    Gruss R.
    Kaum macht man es richtig, schon funktioniert's ...

Ähnliche Themen

  1. VNH2SP30 Motortreiber
    Von RKS im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 05.08.2011, 16:32
  2. Kühlkörper für VNH2SP30
    Von Mandi Nice im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 17.01.2010, 11:23
  3. CS-Leitung VNH2SP30
    Von Student08 im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 12.09.2009, 09:14
  4. VNH2SP30 Grundlagenfragen
    Von BlackDevil im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 23.07.2009, 17:11
  5. 300 Watt mit VNH2SP30 ??
    Von Phönix im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 11.07.2009, 20:01

Berechtigungen

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