Anton Boyt
/
ADC_acs712
ADC_acs712
Revision 1:73c1e8f734a4, committed 2015-02-16
- Comitter:
- margadon
- Date:
- Mon Feb 16 07:55:22 2015 +0000
- Parent:
- 0:99e1e788eb9a
- Commit message:
- ACS712
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
subroute.h | Show diff for this revision Revisions of this file |
diff -r 99e1e788eb9a -r 73c1e8f734a4 main.cpp --- a/main.cpp Mon Feb 09 09:38:16 2015 +0000 +++ b/main.cpp Mon Feb 16 07:55:22 2015 +0000 @@ -1,5 +1,4 @@ #include "mbed.h" -//#include "subroute.h" //Serial pc(D8, D2);/* Serial1 tx rx */ Serial pc(USBTX, USBRX); // tx, rx @@ -12,21 +11,13 @@ // значения измеренные АЦП value0- среднее, value - выпрямленное Raw - неусредненное long value, value0, valueRaw0, valueRaw, value2; int zeroLevelAdc=0; -int max=0, - min=0, - amp=0; +int max,min,amp; int aver; - -//uint16_t meas = analog_value.read_u16(); // Converts and read the analog input value - -//Serial pc(PA_11, PA_12);/* Serial6 tx rx */ -// перспектива для случая с прерываниями -//const int FS_ = 12000; // Sampling frequency: 12 kHz -//ADC_Intr adc_(A0, FS_); // for AD using interrupt //обработчик который формирует массив значений ADC по которому усредняется long massHandler(long incom/*входная вел*/, int n/*длина массива*/){ int average=0; + p1=massAdc; for (int i=n-1;i>0;i--){ massAdc[i]=massAdc[i-1]; average=average+massAdc[i]; @@ -35,61 +26,57 @@ average=(average+massAdc[0])/n; return average; }; - + +//long massHandler2(long incom/*входная вел*/, int n/*длина массива*/){ +/* + int average=0; + p1=massAdc; + for (int i=n-1;i>0;i--){ + massAdc[i]=massAdc[i-1]; + average=average+massAdc[i]; + } + massAdc[0]=incom; + average=(average+massAdc[0])/n; + return average; + }; +*/ // обработчик усреднения для цикла main -long massHandlerMain(long incom/*входная вел*/, int n/*длина массива*/) +long maxMinCount(long incom/*входная вел*/, int n/*длина массива*/) { int average=0; + max=0,min=10000; for (int i=n-1;i>0;i--) { - if (massAdcMain[i]>massAdcMain[i-1])max=massAdcMain[i]; else max=massAdcMain[i-1]; - if (massAdcMain[i]<massAdcMain[i-1])min=massAdcMain[i]; else min=massAdcMain[i-1]; + if (massAdcMain[i]>max){max=massAdcMain[i];} + if (massAdcMain[i]<min){min=massAdcMain[i];}// else min=massAdcMain[i-1]; massAdcMain[i]=massAdcMain[i-1]; average=average+massAdcMain[i]; } - amp=max-min; + if (min==0)amp=40; else amp=max-min; massAdcMain[0]=incom; average=(average+massAdcMain[0])/n; - return average; + return amp; }; - -void measure() -{ - value2=(((analog_value.read_u16()>>4)));// в миллиамперах - надо умножить на 4.4 - value=massHandler(abs(value2),50); - myled = 1; -} - +//* void measure0() { - //valueRaw0=(((analog_value.read_u16()>>4)-zeroLevelAdc));// в миллиамперах - надо умножить на 4.4 valueRaw=(((analog_value.read_u16()>>4)));// в миллиамперах - надо умножить на 4.4 - zeroLevelAdc=massHandler(valueRaw,1); - //zeroLevelAdc=valueRaw; - myled = 0; + zeroLevelAdc=massHandler(valueRaw,3); + aver = maxMinCount(zeroLevelAdc,20); } - -void printt(){pc.printf("%d\r\n",aver);} +//*/ +void printt(){pc.printf("%d\r\n",aver);} // по тикеру печатает на графике int main() { - t1.attach(&measure0, 0.2); // раз в 10 мсек запускает измерение тока для выч. нуля (2 выборки на период сетевого напр-я) - //tprint.attach(&printt,0.2); + t1.attach(&measure0, 0.1); // раз в 100 мсек запускает измерение тока для выч. нуля (2 выборки на период сетевого напр-я) + tprint.attach(&printt,0.2); //t2.attach(&measure,1.5);// раз в 4 мсек запускает измерение тока - p1=massAdc; // в p1 зап-ся адрес первого элемента массива зн-ий ADC + //p1=massAdc; // в p1 зап-ся адрес первого элемента массива зн-ий ADC while(1) { - //myled = 1; /*// LED is ON*/wait(0.001); /*// 200 ms*/myled = 0; /*// LED is OFF */ wait(0.2); /*// 1 sec*/ - wait(0.1); - //aver = massHandlerMain(zeroLevelAdc,40); - // if (1) { - // wait(0.03); - //}; - //for (int i=20;i>0;i--)pc.printf("> %d",*p1++,p1); - //pc.printf("%d mes=%d raw0= %d\r\n",value0,value2,valueRaw0); - pc.printf("%d\r\n",zeroLevelAdc); - //pc.printf("%d\r\n",aver); - //pc.printf("min=%d max=%d amp=%d\r\n",min,max,amp); - p1=massAdc; + + if (amp>45) myled=1; else myled=0; } -} \ No newline at end of file +} +
diff -r 99e1e788eb9a -r 73c1e8f734a4 subroute.h --- a/subroute.h Mon Feb 09 09:38:16 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -//Serial pc(PA_11, PA_12);/* Serial6 tx rx */ - -void subr(int *incom, int out){ - //pc.printf("Surb tarted \r\n"); - out =out +*incom; - } - \ No newline at end of file