Răsfoiți Sursa

Упростил вычисления по току

Vladimir N. Shilov 8 ani în urmă
părinte
comite
79f38ab848
1 a modificat fișierele cu 8 adăugiri și 9 ștergeri
  1. 8 9
      lib/adc.c

+ 8 - 9
lib/adc.c

@@ -28,10 +28,12 @@
 #define ADC_BUFFER_ADDRESS  ((uint16_t)(&ADC_Buffer))
 
 #define ADC_REF             3300
-#define ADC_DIV             4095
-#define ADC_ODIV            32760
-#define ADC_DIV_H           2048
-#define ADC_ODIV_H          16380
+// 4095 * 20 (Ку ОУ) * 0.01 (Rш)
+#define ADC_DIV             819
+// 32760 * 20 (Ку ОУ) * 0.01 (Rш)
+#define ADC_ODIV            6552
+#define ADC_DIV_H           410
+#define ADC_ODIV_H          3276
 #define ADC_VOLT_K          11
 #define ADC_CURR_K          20
 #define ADC_CURR_SH         100
@@ -237,13 +239,10 @@ uint16_t * ADC_GetValues(void) {
   curr += 4;
   curr /= 8;
   curr *= ADC_REF;
-  curr += (ADC_CURR_K/2); // для округления
-  curr /= ADC_CURR_K; // делим на Ку усилителя шунта
-  curr *= ADC_CURR_SH; // делим вольты на омы шунта
   curr += ADC_ODIV_H; // для округления
-  curr /= ADC_ODIV;// и получили ток в мА
+  curr /= ADC_ODIV; // делим на К
 
-  /* так как шунт стоит в разрве земли до выхода из БП
+  /* так как шунт стоит в разрыве земли до выхода из БП
      компенсируем падение напряжения на нём. */
   shunt_volt = curr + (ADC_CURR_K/2);
   shunt_volt /= ADC_CURR_K; // мВ на входе ОУ