Multiplexer lauffähig

Dependencies:   USBDevice mbed

Fork of Multiplexer-Test by H2M Teststand

Multiplexer_read.cpp

Committer:
O_Shovah
Date:
2014-09-08
Revision:
5:c89afbb7d0b2
Parent:
4:57163b0e7dbc
Child:
6:d61faae1989d

File content as of revision 5:c89afbb7d0b2:

#include "mbed.h"

//***************************************************************************************************
//Outputs

DigitalOut Multiplex_select_0 (p15);
DigitalOut Multiplex_select_1 (p16);
DigitalOut Myled (LED1);

DigitalOut timetest_0 (p30);
DigitalOut timetest_1 (p29);

//PWMout Mosfet(p21);

BusOut    unused(p18);

//***************************************************************************************************
//Inputs


AnalogIn Messkanal_0 (p19);
AnalogIn Messkanal_1 (p20);



//***************************************************************************************************
//Communication

Serial pc(USBTX, USBRX);


volatile float  Motorspannung, Bremsenspannung , Motorstrom, Aux, Bremsenstrom, Temperatur_1, Temperatur_2, Temperatur_3, c1v1, c1v2 ;


//***************************************************************************************************
//read sensors via multiplexer

void interr_read_sensors()
{

    int  Messwert_0 = 0, Messwert_1 = 0;

    Multiplex_select_0 = 0, Multiplex_select_1 = 0;

    //Selection of Multiplexer states

    for (int i=0; i<=4; i++) {
        //while(i<=4) {

        Multiplex_select_0 = i&0x01;
        Multiplex_select_1 = (i>>1)&0x01;
        wait(0.001);
        
        Messwert_0 = Messkanal_0.read_u16();
        Messwert_1 = Messkanal_1.read_u16();

        switch(i) {
            case 0: {
                Multiplex_select_0 = 0;
                Multiplex_select_1 = 0;
                wait(0.001);
                Temperatur_1 = Messwert_0 ;
                Motorspannung = Messwert_1 * 0.000515 - 0.05 ; //Gute Näherung von 2- ~23V. Dannach zu niedrig.Z-Diode
                break;
            }

            case 1: {
                Multiplex_select_0 = 1;
                Multiplex_select_1 = 0;
                wait(0.001);
                Temperatur_2 = Messwert_0  ;
                Motorstrom = Messwert_1 * 0.000396 - 4.15;//
                break;
            }

            case 2: {
                Multiplex_select_0 = 0;
                Multiplex_select_1 = 1;
                wait(0.001);
                Temperatur_3 = Messwert_0;
                Bremsenspannung = Messwert_1 * 0.000515 - 0.05;//Gute Näherung von 2- ~23V. Dannach zu niedrig.Z-Diode
                break;
            }

            case 3: {
                Multiplex_select_0 = 1;
                Multiplex_select_1 = 1;
                wait(0.001);
                Aux = Messwert_0 / 1629;
                Bremsenstrom = Messwert_1; //* 0.00032 - 15.8;
                break;
            }


        }

    }

}


//***************************************************************************************************
// MAIN:

int main(void)
{

    while(true) {

        interr_read_sensors();
      
        
        Multiplex_select_0 = 1, Multiplex_select_1 = 0;
        pc.printf(" [Temperatur1, Motorspannung]; 0 %5.2f deg; 1 %5.2f V;", Temperatur_1, Motorspannung);
        pc.printf(" [Temperatur2, Motorstrom]; 0 %5.2f deg; 1 %5.2f A;", Temperatur_2, Motorstrom);
        pc.printf(" [Temperatur3, Bremsenspannung]; 0 %5.2f deg; 1 %5.2f V;", Temperatur_3, Bremsenspannung);
        pc.printf(" [Aux, Bremsenstrom]; 0 %5.2f ; 1 %5.2f ;", Aux, Bremsenstrom);
        pc.printf(" \n\r\n\r");
        wait(1);

    }
}