Przeglądaj źródła

Маленький фикс расчётов АЦП

Vladimir N. Shilov 8 lat temu
rodzic
commit
61d9679a10
1 zmienionych plików z 5 dodań i 4 usunięć
  1. 5 4
      src/main.c

+ 5 - 4
src/main.c

@@ -34,8 +34,9 @@
 #define ADC_SMPLS 64
 // Supply voltage in mili volts
 #define ADC_VREF  3335
-// input OA multiplier -- [(3.6/0.68) + 1) * 1000]
-#define ADC_MULT  6294
+// input OA divider resistance in Ohm
+#define ADC_MULT_TOP  3600
+#define ADC_MULT_BOT  680
 // shunt resistance in mili Ohms
 #define ADC_SHUNT 50
 
@@ -193,9 +194,9 @@ void main(void)
           tbuf >>= 3; // ïðåäâàðèòåëüíûé äåëèòåëü îâåðñåìïëèíãà
           tbuf *= ADC_VREF; // Ìíîæèì íà îïîðíîå íàïðÿæåíèå
           tbuf = (tbuf + 4096) / 8191; // get ADC input voltage in mV
-          tbuf *= 1000; // êîìïåíñàöèÿ êîýô. óñèëåíèÿ âõîäíîãî ÎÓ
           tbuf *= 1000; // êîìïåíñàöèÿ ñîïðîòèâëåíèÿ øóíòà
-          tbuf = (tbuf + (ADC_MULT/2)) / ADC_MULT; // get voltage from shunt
+          tbuf *= (ADC_MULT_TOP + ADC_MULT_BOT);
+          tbuf = (tbuf + (ADC_MULT_BOT/2)) / ADC_MULT_BOT; // get voltage from shunt
           /* â Current òîê â ìèëèàìïåðàõ */
           Current = (tbuf + (ADC_SHUNT/2)) / ADC_SHUNT;