FRDM_wahadlo_torsyjne

Dependencies:   mbed BufferedSerial

Fork of FRDM_wahadlo_torsyjne by Wojciech M

Revision:
19:2012df6b8e56
Parent:
18:97a08a408bc7
--- a/main.cpp	Wed Oct 11 08:11:43 2017 +0000
+++ b/main.cpp	Wed Feb 27 21:13:54 2019 +0000
@@ -15,6 +15,14 @@
 
 #include "mbed.h"
 #include "BufferedSerial.h"
+#include "math.h"
+
+//=========TERMISTOR==================
+#define beta 3950      // stała materiałowa termistora [K]
+#define T0 298         // temperatura odniesienia (zwykle 298K) [K]
+#define R0 10000       // rezystancja termistora w temperaturze odniesienia [Ω]
+#define R 16700        // rezystancja opornika w dzielniku [Ω]
+
 
 Ticker triger1;                                             //interrupt. No. 1
 Ticker triger2;                                             //interrupt No. 2
@@ -25,18 +33,27 @@
 //float switch_dir_time=(float)((float)EXC_angle/500.0)*((float)motor_PWM_period_us/1000.0);  
 float switch_dir_time=(float)((float)EXC_angle/500.0)*((float)motor_PWM_period_us/1000.0);  
 //float switch_dir_time = 1;
-float sampling_time = 0.005;
+float sampling_time = 0.2;//0.005
 int samples_in_period = int(switch_dir_time/sampling_time);
 int zero_analog_IN_0 = 0;
 int zero_analog_IN_1 = 0;
+int zero_analog_IN_2 = 0;
+int zero_analog_IN_3 = 0;
+int zero_analog_IN_4 = 0;
+int zero_analog_IN_5 = 0;
 float timet = 0;
+
+//volatile float t;
  
 DigitalOut direction(PTC7);                                 // zmiana wartości logicznej na wyjściu PTC7 powoduje zmianę kieruneku obrotów
 DigitalOut enable_driver(PTE2);                                // zezwolenie na start
 DigitalOut myled(LED_GREEN);                                // dioda zielona sygnalizuje zmianę kierunku obrotów
-AnalogIn analog_IN_0(PTB0);                                 // odczyt napięcia z wejścia analogowego 0 (kąt obrotu kolumny)
-                                                            // PTB1 - sygnał odwrócony
-AnalogIn analog_IN_1(PTB2);                                 // odczyt napięcia z wejścia analogowego 1 (kąt obrotu ciała swobodnego)
+AnalogIn analog_IN_0(PTB0);  //PTB0                               // odczyt napięcia z wejścia analogowego 0 (kąt obrotu kolumny)
+AnalogIn analog_IN_1(PTB1);  //PTB1
+AnalogIn analog_IN_2(PTB2);  //PTB2                                                            // PTB1 - sygnał odwrócony
+AnalogIn analog_IN_3(PTB3);  //PTB3
+AnalogIn analog_IN_4(PTC2);  //PTC2
+AnalogIn analog_IN_5(PTC1);  //PTC1                               // odczyt napięcia z wejścia analogowego 1 (kąt obrotu ciała swobodnego)
                                                             // PTB3 - sygnał odwrócony
 PwmOut motor(PTA5);                                         // sygnał PWM do sterowania sterownikiem silnika krokowego
 //Serial pc(USBTX,USBRX);                                     // komunikacja z PC
@@ -46,6 +63,17 @@
 float get_voltage_in(AnalogIn analog_in, float zero_analog_in) {
     return (analog_in.read() - zero_analog_in) * 2.9035;    // przesunięcie do zera i skalowanie napiecia do zakresu
 }
+
+float temperatura_K(AnalogIn analog){
+    float t=1.65-analog;    //1,65 połowa zakresu VREF
+    t= t/analog;
+    t= log(t);
+    t=t + beta/T0+ 0,23;    //0,23 - log R/R0
+    t=beta/t;
+    return t;
+}
+    
+
 void task1() { 
         myled = !myled;
         direction = !direction;
@@ -56,12 +84,18 @@
     //get_voltage_in(analog_IN_0, zero_analog_IN_0);
     //get_voltage_in(analog_IN_1, zero_analog_IN_1);    
     //pc.printf("%.2f\t%.2f\t%.2f\n\r", timet, get_voltage_in(analog_IN_1, zero_analog_IN_1), get_voltage_in(analog_IN_0, zero_analog_IN_0));
-    //pc.printf("%.2f\n%.2f\n%.2f\n", timet, get_voltage_in(analog_IN_1, zero_analog_IN_1), get_voltage_in(analog_IN_0, zero_analog_IN_0));
+    //pc.printf("%.2f %.2f %.2f\n\r", timet, get_voltage_in(analog_IN_1, zero_analog_IN_1), get_voltage_in(analog_IN_0, zero_analog_IN_0));
     
-    sprintf((char*)buffer, "%.2f %.2f\n",  get_voltage_in(analog_IN_1, zero_analog_IN_1), get_voltage_in(analog_IN_0, zero_analog_IN_0));    
+    sprintf((char*)buffer, "%.2f %.2f %.2f %.2f %.2f %.2f\n\r",get_voltage_in(analog_IN_5, zero_analog_IN_5), get_voltage_in(analog_IN_4, zero_analog_IN_4),
+    get_voltage_in(analog_IN_3, zero_analog_IN_3), get_voltage_in(analog_IN_2, zero_analog_IN_2),
+    get_voltage_in(analog_IN_1, zero_analog_IN_1), get_voltage_in(analog_IN_0, zero_analog_IN_0));    
     pc.printf(buffer);
 
-
+    //sprintf((char*)buffer, " %.2f %.2f\n\r",temperatura_K(analog_IN_1), get_voltage_in(analog_IN_0, zero_analog_IN_0));    
+    //pc.printf(buffer);
+    
+    //pc.printf("%.2f", t);
+    
     timet += sampling_time;
 }