H2M Teststand
/
Multiplexer-Test
Multiplexer lauffähig
Fork of Multiplexer-Test by
Multiplexer_read.cpp@11:e8386e95c56c, 2015-11-05 (annotated)
- Committer:
- O_Shovah
- Date:
- Thu Nov 05 15:59:40 2015 +0000
- Revision:
- 11:e8386e95c56c
- Parent:
- 7:97edeef32c45
Version for Tobi
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
O_Shovah | 0:42c1addaf061 | 1 | #include "mbed.h" |
O_Shovah | 0:42c1addaf061 | 2 | |
O_Shovah | 1:84c53305b6a5 | 3 | //*************************************************************************************************** |
O_Shovah | 0:42c1addaf061 | 4 | //Outputs |
O_Shovah | 0:42c1addaf061 | 5 | |
O_Shovah | 11:e8386e95c56c | 6 | DigitalOut Multiplex_select_0 (p25); |
O_Shovah | 11:e8386e95c56c | 7 | DigitalOut Multiplex_select_1 (p26); |
O_Shovah | 0:42c1addaf061 | 8 | DigitalOut Myled (LED1); |
O_Shovah | 0:42c1addaf061 | 9 | |
O_Shovah | 11:e8386e95c56c | 10 | //DigitalOut timetest_0 (p30); |
O_Shovah | 11:e8386e95c56c | 11 | //DigitalOut timetest_1 (p29); |
O_Shovah | 3:cb991a9ba6a6 | 12 | |
O_Shovah | 11:e8386e95c56c | 13 | //BusOut unused(p18); |
O_Shovah | 0:42c1addaf061 | 14 | |
O_Shovah | 1:84c53305b6a5 | 15 | //*************************************************************************************************** |
O_Shovah | 0:42c1addaf061 | 16 | //Inputs |
O_Shovah | 0:42c1addaf061 | 17 | |
O_Shovah | 0:42c1addaf061 | 18 | |
O_Shovah | 11:e8386e95c56c | 19 | AnalogIn Messkanal_0 (p15); |
O_Shovah | 11:e8386e95c56c | 20 | AnalogIn Messkanal_1 (p16); |
O_Shovah | 5:c89afbb7d0b2 | 21 | |
O_Shovah | 11:e8386e95c56c | 22 | AnalogIn DMS_Kanal (p17); |
O_Shovah | 0:42c1addaf061 | 23 | |
O_Shovah | 1:84c53305b6a5 | 24 | //*************************************************************************************************** |
O_Shovah | 0:42c1addaf061 | 25 | //Communication |
O_Shovah | 0:42c1addaf061 | 26 | |
O_Shovah | 0:42c1addaf061 | 27 | Serial pc(USBTX, USBRX); |
O_Shovah | 0:42c1addaf061 | 28 | |
O_Shovah | 0:42c1addaf061 | 29 | |
O_Shovah | 11:e8386e95c56c | 30 | volatile float Motorspannung, Bremsenspannung , Motorstrom, Aux, Bremsenstrom, Temperatur_1, Temperatur_2, Temperatur_3, DMS_Out, DMS_Skalierung; |
O_Shovah | 2:d815250d0377 | 31 | |
O_Shovah | 0:42c1addaf061 | 32 | |
O_Shovah | 1:84c53305b6a5 | 33 | //*************************************************************************************************** |
O_Shovah | 1:84c53305b6a5 | 34 | //read sensors via multiplexer |
O_Shovah | 0:42c1addaf061 | 35 | |
O_Shovah | 0:42c1addaf061 | 36 | void interr_read_sensors() |
O_Shovah | 0:42c1addaf061 | 37 | { |
O_Shovah | 0:42c1addaf061 | 38 | |
O_Shovah | 5:c89afbb7d0b2 | 39 | int Messwert_0 = 0, Messwert_1 = 0; |
O_Shovah | 0:42c1addaf061 | 40 | |
O_Shovah | 0:42c1addaf061 | 41 | Multiplex_select_0 = 0, Multiplex_select_1 = 0; |
O_Shovah | 0:42c1addaf061 | 42 | |
O_Shovah | 0:42c1addaf061 | 43 | //Selection of Multiplexer states |
O_Shovah | 0:42c1addaf061 | 44 | |
O_Shovah | 5:c89afbb7d0b2 | 45 | for (int i=0; i<=4; i++) { |
O_Shovah | 5:c89afbb7d0b2 | 46 | //while(i<=4) { |
O_Shovah | 0:42c1addaf061 | 47 | |
O_Shovah | 4:57163b0e7dbc | 48 | Multiplex_select_0 = i&0x01; |
O_Shovah | 4:57163b0e7dbc | 49 | Multiplex_select_1 = (i>>1)&0x01; |
O_Shovah | 4:57163b0e7dbc | 50 | wait(0.001); |
O_Shovah | 6:d61faae1989d | 51 | |
O_Shovah | 5:c89afbb7d0b2 | 52 | Messwert_0 = Messkanal_0.read_u16(); |
O_Shovah | 5:c89afbb7d0b2 | 53 | Messwert_1 = Messkanal_1.read_u16(); |
O_Shovah | 0:42c1addaf061 | 54 | |
O_Shovah | 0:42c1addaf061 | 55 | switch(i) { |
O_Shovah | 0:42c1addaf061 | 56 | case 0: { |
O_Shovah | 5:c89afbb7d0b2 | 57 | Multiplex_select_0 = 0; |
O_Shovah | 5:c89afbb7d0b2 | 58 | Multiplex_select_1 = 0; |
O_Shovah | 5:c89afbb7d0b2 | 59 | wait(0.001); |
O_Shovah | 5:c89afbb7d0b2 | 60 | Temperatur_1 = Messwert_0 ; |
O_Shovah | 11:e8386e95c56c | 61 | Motorspannung = Messwert_1; //* 0.000515 - 0.05 ; Gute Näherung von 2- ~23V. Dannach zu niedrig.Z-Diode |
O_Shovah | 5:c89afbb7d0b2 | 62 | break; |
O_Shovah | 5:c89afbb7d0b2 | 63 | } |
O_Shovah | 4:57163b0e7dbc | 64 | |
O_Shovah | 5:c89afbb7d0b2 | 65 | case 1: { |
O_Shovah | 5:c89afbb7d0b2 | 66 | Multiplex_select_0 = 1; |
O_Shovah | 5:c89afbb7d0b2 | 67 | Multiplex_select_1 = 0; |
O_Shovah | 5:c89afbb7d0b2 | 68 | wait(0.001); |
O_Shovah | 5:c89afbb7d0b2 | 69 | Temperatur_2 = Messwert_0 ; |
O_Shovah | 11:e8386e95c56c | 70 | Motorstrom = Messwert_1; //* 0.000396 - 4.15; |
O_Shovah | 5:c89afbb7d0b2 | 71 | break; |
O_Shovah | 5:c89afbb7d0b2 | 72 | } |
O_Shovah | 5:c89afbb7d0b2 | 73 | |
O_Shovah | 5:c89afbb7d0b2 | 74 | case 2: { |
O_Shovah | 5:c89afbb7d0b2 | 75 | Multiplex_select_0 = 0; |
O_Shovah | 5:c89afbb7d0b2 | 76 | Multiplex_select_1 = 1; |
O_Shovah | 5:c89afbb7d0b2 | 77 | wait(0.001); |
O_Shovah | 5:c89afbb7d0b2 | 78 | Temperatur_3 = Messwert_0; |
O_Shovah | 11:e8386e95c56c | 79 | Bremsenspannung = Messwert_1; //* 0.000515 - 0.05;Gute Näherung von 2- ~23V. Dannach zu niedrig.Z-Diode |
O_Shovah | 0:42c1addaf061 | 80 | break; |
O_Shovah | 0:42c1addaf061 | 81 | } |
O_Shovah | 0:42c1addaf061 | 82 | |
O_Shovah | 4:57163b0e7dbc | 83 | case 3: { |
O_Shovah | 5:c89afbb7d0b2 | 84 | Multiplex_select_0 = 1; |
O_Shovah | 5:c89afbb7d0b2 | 85 | Multiplex_select_1 = 1; |
O_Shovah | 5:c89afbb7d0b2 | 86 | wait(0.001); |
O_Shovah | 11:e8386e95c56c | 87 | Aux = Messwert_0; // 1629; |
O_Shovah | 5:c89afbb7d0b2 | 88 | Bremsenstrom = Messwert_1; //* 0.00032 - 15.8; |
O_Shovah | 0:42c1addaf061 | 89 | break; |
O_Shovah | 0:42c1addaf061 | 90 | } |
O_Shovah | 0:42c1addaf061 | 91 | |
O_Shovah | 0:42c1addaf061 | 92 | |
O_Shovah | 0:42c1addaf061 | 93 | } |
O_Shovah | 0:42c1addaf061 | 94 | |
O_Shovah | 0:42c1addaf061 | 95 | } |
O_Shovah | 4:57163b0e7dbc | 96 | |
O_Shovah | 0:42c1addaf061 | 97 | } |
O_Shovah | 2:d815250d0377 | 98 | |
O_Shovah | 0:42c1addaf061 | 99 | |
O_Shovah | 1:84c53305b6a5 | 100 | //*************************************************************************************************** |
O_Shovah | 5:c89afbb7d0b2 | 101 | // MAIN: |
O_Shovah | 2:d815250d0377 | 102 | |
O_Shovah | 0:42c1addaf061 | 103 | int main(void) |
O_Shovah | 0:42c1addaf061 | 104 | { |
O_Shovah | 0:42c1addaf061 | 105 | |
O_Shovah | 11:e8386e95c56c | 106 | DMS_Skalierung = 1; |
O_Shovah | 11:e8386e95c56c | 107 | |
O_Shovah | 0:42c1addaf061 | 108 | while(true) { |
O_Shovah | 0:42c1addaf061 | 109 | |
O_Shovah | 11:e8386e95c56c | 110 | |
O_Shovah | 11:e8386e95c56c | 111 | |
O_Shovah | 5:c89afbb7d0b2 | 112 | interr_read_sensors(); |
O_Shovah | 7:97edeef32c45 | 113 | |
O_Shovah | 11:e8386e95c56c | 114 | DMS_Out = DMS_Kanal.read_u16()*DMS_Skalierung; |
O_Shovah | 6:d61faae1989d | 115 | |
O_Shovah | 11:e8386e95c56c | 116 | |
O_Shovah | 5:c89afbb7d0b2 | 117 | pc.printf(" [Temperatur1, Motorspannung]; 0 %5.2f deg; 1 %5.2f V;", Temperatur_1, Motorspannung); |
O_Shovah | 5:c89afbb7d0b2 | 118 | pc.printf(" [Temperatur2, Motorstrom]; 0 %5.2f deg; 1 %5.2f A;", Temperatur_2, Motorstrom); |
O_Shovah | 5:c89afbb7d0b2 | 119 | pc.printf(" [Temperatur3, Bremsenspannung]; 0 %5.2f deg; 1 %5.2f V;", Temperatur_3, Bremsenspannung); |
O_Shovah | 5:c89afbb7d0b2 | 120 | pc.printf(" [Aux, Bremsenstrom]; 0 %5.2f ; 1 %5.2f ;", Aux, Bremsenstrom); |
O_Shovah | 11:e8386e95c56c | 121 | pc.printf(" [DMS-Kanal]; 0 %5.2f ;", DMS_Out); |
O_Shovah | 11:e8386e95c56c | 122 | pc.printf(" \r\n\r\n"); |
O_Shovah | 11:e8386e95c56c | 123 | |
O_Shovah | 5:c89afbb7d0b2 | 124 | wait(1); |
O_Shovah | 4:57163b0e7dbc | 125 | |
O_Shovah | 0:42c1addaf061 | 126 | } |
O_Shovah | 0:42c1addaf061 | 127 | } |