FRDM_wahadlo_torsyjne
Dependencies: mbed BufferedSerial
Fork of FRDM_wahadlo_torsyjne by
Revision 19:2012df6b8e56, committed 2019-02-27
- Comitter:
- Lukasz_K
- Date:
- Wed Feb 27 21:13:54 2019 +0000
- Parent:
- 18:97a08a408bc7
- Commit message:
- termistor
Changed in this revision
4Dsystems_uOLED-32028-P1T_LPC1768_KL25Z.lib | Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/4Dsystems_uOLED-32028-P1T_LPC1768_KL25Z.lib Wed Oct 11 08:11:43 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/star297/code/4Dsystems_uOLED-32028-P1T_LPC1768_KL25Z/#8288c7e26de6
--- 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; }