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