Versão do protegemed que calcula o tempo em ms da fuga, calcula o numero de onverflow (valores muito baixo) e underflow (valores muito altos). Além disso, calcula um valor médio a partir dos valores capturados e não apenas pela fft.

Dependencies:   EthernetInterface mbed-rtos mbed

Committer:
rebonatto
Date:
Wed Jul 09 21:16:23 2014 +0000
Revision:
0:c64e1194230b
Vers?o do Protegemed com calculo de tempo de fuga, overflow, underflow e novo valor m?dio (manual).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rebonatto 0:c64e1194230b 1 /*
rebonatto 0:c64e1194230b 2 * EventDetector.h
rebonatto 0:c64e1194230b 3 *
rebonatto 0:c64e1194230b 4 * Created on:
rebonatto 0:c64e1194230b 5 * Author:
rebonatto 0:c64e1194230b 6 */
rebonatto 0:c64e1194230b 7
rebonatto 0:c64e1194230b 8 #ifndef EVENTDETECTOR_H
rebonatto 0:c64e1194230b 9 #define EVENTDETECTOR_H
rebonatto 0:c64e1194230b 10
rebonatto 0:c64e1194230b 11 #include <stdlib.h>
rebonatto 0:c64e1194230b 12
rebonatto 0:c64e1194230b 13 #include "rtos.h"
rebonatto 0:c64e1194230b 14
rebonatto 0:c64e1194230b 15 #include "Settings.h"
rebonatto 0:c64e1194230b 16 #include "Capture.h"
rebonatto 0:c64e1194230b 17 #include "SignalProcessor.h"
rebonatto 0:c64e1194230b 18
rebonatto 0:c64e1194230b 19 class CaptureEvent
rebonatto 0:c64e1194230b 20 {
rebonatto 0:c64e1194230b 21 char m_RFID[9];
rebonatto 0:c64e1194230b 22 int m_Type;
rebonatto 0:c64e1194230b 23 int m_OutletNumber;
rebonatto 0:c64e1194230b 24 float m_MeanValue;
rebonatto 0:c64e1194230b 25 float m_MV2;
rebonatto 0:c64e1194230b 26 float m_RMSValue;
rebonatto 0:c64e1194230b 27 int m_Under;
rebonatto 0:c64e1194230b 28 int m_Over;
rebonatto 0:c64e1194230b 29 float m_Gain;
rebonatto 0:c64e1194230b 30 int m_Offset;
rebonatto 0:c64e1194230b 31 int m_Duration;
rebonatto 0:c64e1194230b 32 float m_Sin[NUMBER_OF_HARMONICS];
rebonatto 0:c64e1194230b 33 float m_Cos[NUMBER_OF_HARMONICS];
rebonatto 0:c64e1194230b 34
rebonatto 0:c64e1194230b 35 public:
rebonatto 0:c64e1194230b 36
rebonatto 0:c64e1194230b 37 CaptureEvent();
rebonatto 0:c64e1194230b 38
rebonatto 0:c64e1194230b 39 //void Setup(char* rfid,int type,int outlet,float mv,float rms,float gain, int offset,float* sin, float* cos);
rebonatto 0:c64e1194230b 40 void Setup(char* rfid, int type, int outlet, float mv, float mv2, float rms, int under, int over, float gain, int offset, int duration, float* sin, float* cos);
rebonatto 0:c64e1194230b 41
rebonatto 0:c64e1194230b 42 char* get_RFID() { return m_RFID; }
rebonatto 0:c64e1194230b 43 int get_Type() { return m_Type; }
rebonatto 0:c64e1194230b 44 int get_OutletNumber() { return m_OutletNumber; }
rebonatto 0:c64e1194230b 45 float get_MeanValue() { return m_MeanValue; }
rebonatto 0:c64e1194230b 46 float get_MV2() { return m_MV2; }
rebonatto 0:c64e1194230b 47 float get_RMSValue() { return m_RMSValue; }
rebonatto 0:c64e1194230b 48 int get_Under() { return m_Under; }
rebonatto 0:c64e1194230b 49 int get_Over() { return m_Over; }
rebonatto 0:c64e1194230b 50 float get_Gain() { return m_Gain; }
rebonatto 0:c64e1194230b 51 int get_Offset() { return m_Offset; }
rebonatto 0:c64e1194230b 52 int get_Duration() { return m_Duration; }
rebonatto 0:c64e1194230b 53 float get_SineValue(int idx) { return m_Sin[idx]; }
rebonatto 0:c64e1194230b 54 float get_CossineValue(int idx) { return m_Cos[idx]; }
rebonatto 0:c64e1194230b 55 };
rebonatto 0:c64e1194230b 56
rebonatto 0:c64e1194230b 57 typedef Mail<CaptureEvent,LENGTH_MAIL_BOX> CaptureMailbox;
rebonatto 0:c64e1194230b 58
rebonatto 0:c64e1194230b 59 class EventDetector
rebonatto 0:c64e1194230b 60 {
rebonatto 0:c64e1194230b 61 protected:
rebonatto 0:c64e1194230b 62
rebonatto 0:c64e1194230b 63 static CaptureMailbox m_EventMailbox;
rebonatto 0:c64e1194230b 64 static const int m_EventLimit;
rebonatto 0:c64e1194230b 65
rebonatto 0:c64e1194230b 66 static EventDetector m_Detector[NUMBER_OF_CHANNELS];
rebonatto 0:c64e1194230b 67
rebonatto 0:c64e1194230b 68 bool m_OutletTriggered;
rebonatto 0:c64e1194230b 69 int m_EventCounter;
rebonatto 0:c64e1194230b 70 int m_Channel;
rebonatto 0:c64e1194230b 71 Timer m_tempo;
rebonatto 0:c64e1194230b 72
rebonatto 0:c64e1194230b 73 //void OnTrigger(float rmsvalue);
rebonatto 0:c64e1194230b 74 void OnTrigger(float rmsvalue, float mv2, int under, int over, int duration);
rebonatto 0:c64e1194230b 75
rebonatto 0:c64e1194230b 76 //void SendMessage(int ext,float rmsvalue);
rebonatto 0:c64e1194230b 77 void SendMessage(int ext,float rmsvalue, float mv2, int under, int over, int duration);
rebonatto 0:c64e1194230b 78
rebonatto 0:c64e1194230b 79 int TimeDelay(int t);
rebonatto 0:c64e1194230b 80
rebonatto 0:c64e1194230b 81 public:
rebonatto 0:c64e1194230b 82
rebonatto 0:c64e1194230b 83 EventDetector(int ch);
rebonatto 0:c64e1194230b 84
rebonatto 0:c64e1194230b 85 void ExternalTrigger();
rebonatto 0:c64e1194230b 86
rebonatto 0:c64e1194230b 87 //void ProcessEvent(float rmsvalue, int t);
rebonatto 0:c64e1194230b 88 void ProcessEvent(float rmsvalue, float mv2, int under, int over);
rebonatto 0:c64e1194230b 89
rebonatto 0:c64e1194230b 90 void ShowValues(CaptureEvent* e);
rebonatto 0:c64e1194230b 91
rebonatto 0:c64e1194230b 92 static CaptureMailbox& GetMailbox() { return m_EventMailbox; }
rebonatto 0:c64e1194230b 93 static EventDetector& get_Detector(int ch) { return m_Detector[ch]; }
rebonatto 0:c64e1194230b 94
rebonatto 0:c64e1194230b 95 };
rebonatto 0:c64e1194230b 96
rebonatto 0:c64e1194230b 97 #endif