Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
AusrollversuchH2M.cpp
00001 #include "mbed.h" 00002 #include "Ticker.h" 00003 00004 00005 #define marker 43.0 //Anzahl der Messtreifen pro Umdrehung 00006 00007 //*************************************************************************************************** 00008 //Outputs 00009 00010 00011 00012 DigitalOut led4(LED4); /* Die LED blinkt immer dann auf wenn ein Messpunkt erkannt wurde*/ 00013 00014 00015 00016 //*************************************************************************************************** 00017 //Inputs 00018 00019 InterruptIn input(p17); /* Der Eingang p17 des Mikrocontrollers wird als Interrupt definiert, was bedeutet, dass 00020 jedes Mal wenn das Signal ansteigt oder absinkt das Programm unterbrochen wird und eine definierte 00021 Funktion ausgeführt wird 00022 Anmerkung: Die durch den Interrupt ausgelöste Funktion rechnerisch nicht zu aufwändig sein (zB. 00023 printf) sonst hängt sich der Mikrocontroller auf */ 00024 00025 00026 00027 //*************************************************************************************************** 00028 //Communication 00029 00030 00031 00032 //*************************************************************************************************** 00033 //Variables 00034 00035 00036 00037 volatile float rpm = 0, rpm_total; // Angabe der Umdrehungen pro Minute mit(rpm) und ohne Glättung (rpm_total) 00038 00039 int detekt = 0; // Variable zum Umschalten der LED 00040 00041 bool broadcast = false; // Durch Aktivieren der Variable wird die Übertragung aktiviert 00042 00043 int sampleCounts = 0, sampleCounts_old = 0; // Anzahl der Messpunkte pro festgelegter Zeiteinheit 00044 00045 Serial pc(USBTX, USBRX); // PC Übertragung für Labview 00046 00047 00048 //*************************************************************************************************** 00049 //Misc 00050 00051 00052 00053 Ticker serial_tx; //Definition des Tickers 00054 00055 int seconds = 0; // Der Ersatz für den Timer 00056 00057 void rpm_counter() 00058 { //Funktion die durch den Interrupt ausgelöst wird, 00059 sampleCounts++; // Zählt die smmpleCounts um 1 nach oben 00060 } 00061 00062 00063 00064 00065 00066 00067 void do_ticker() 00068 { 00069 broadcast = 1; //Diese Funktion wird durch den Ticker aktiviert, also in einem festgelegten 00070 seconds++; // Zeitintervall ausgeführt. Hier wird die Übertragung aktiviert und die Timervariable 00071 } // um das festgelegte Tickerintervall hochgezählt (hier 1) 00072 00073 00074 00075 00076 00077 00078 int main(void) 00079 { 00080 00081 input.rise(&rpm_counter); // Aktiverung der Interruptfunktion wenn ein Messpunkt erkannt wird (steigende Flanke) 00082 00083 serial_tx.attach(&do_ticker,1); // Aktivierung des Tickers bei Programmstart, hier wird das Zeitintervall festgelegt (hier ein Sekunde) 00084 00085 00086 00087 seconds = 0; 00088 pc.printf("Beginn der Drehzahlaufzeichnung\n\r"); // Ausgabe an den PC zu Beginn der Messung 00089 while(true) { 00090 00091 if(broadcast == 1) // Aktivierung der Übertragung für dieses Zeitintervall 00092 { 00093 rpm_total = sampleCounts/marker; // Errechnung der Umdrehungen 00094 00095 rpm = ((rpm*1) + ((sampleCounts - sampleCounts_old)/ marker * 60))/2; //Errechnung der geglätteten Drehzahl in U/min. Glättungsfaktor 00096 // einstellbar durch das Verhältnis von alter zu neuer Drehzahl (hier 1:1) 00097 sampleCounts_old = sampleCounts; 00098 00099 pc.printf("$1;1;%i;%f;0\r\n",seconds,rpm); //Ausgabe der aktuellen Messwerte an den PC 00100 broadcast = 0; // Ende der Aufzeichnung für dieses Zeitintervall 00101 } 00102 if (detekt != sampleCounts) {led4 = !led4; detekt = sampleCounts;}; //Funktion zum Umschalten der LED bei Messpunkterkennung 00103 00104 } 00105 }
Generated on Sun Jul 24 2022 16:18:07 by
1.7.2