FRDM_wahadlo_torsyjne

Dependencies:   mbed BufferedSerial

Fork of FRDM_wahadlo_torsyjne by Wojciech M

Revision:
16:b2f8fef7be1c
Parent:
15:fa12498ab984
Child:
17:a929d0ed1dbf
--- a/main.cpp	Wed Jun 18 21:04:09 2014 +0000
+++ b/main.cpp	Thu Jun 19 13:56:44 2014 +0000
@@ -1,5 +1,5 @@
-//Program zmodyfikowany. Instrukcja obsługi:
-//Po włączeniu zasilania sterownika SMC (26V) i podłączeniu przewodu USB silnik zostaje zablokowany (ciężko go ruszyć)
+// Program zmodyfikowany. Instrukcja obsługi:
+// Po włączeniu zasilania sterownika SMC (26V) i podłączeniu przewodu USB silnik zostaje zablokowany (ciężko go ruszyć)
 // w celu ustawienia punktu początkowego trzymamy przycisk RESET na płytce FRDM (silnik obraca się łatwo)
 // po ustawieniu punktu początkowego puszczamy przycisk RESET
 // sterownik inicjalizuje program, zapisuje położenia zerowe czujników
@@ -15,20 +15,23 @@
 
 #include "mbed.h"
 
-Ticker triger1;                                             //przerwanie sterowania silnikiem
-Ticker triger2;                                             //przerwanie wysyłania danych
+Ticker triger1;                                             // przerwanie sterowania silnikiem
+Ticker triger2;                                             // przerwanie wysyłania danych
 
-int motor_PWM_period_us = 200;                              //okres sygnału PWM (w mikrosekundach) wyzwalającego kolejny krok silnika
-int EXC_angle = 3200/4;                                     //360 stopni to 3200 krok. przy mkrok. = 1.8/16
+int motor_PWM_period_us = 200;                              // okres sygnału PWM (w mikrosekundach) wyzwalającego kolejny krok silnika
+int EXC_angle = 3200/4;                                     // 360 stopni to 3200 krok. przy mkrok. = 1.8/16
 float switch_dir_time=(float)((float)EXC_angle/500.0)*((float)motor_PWM_period_us/1000.0);  
-int zero_analog_IN_0 = 0;
-int zero_analog_IN_1 = 0;
- 
+int zero_analog_IN_0 = 0;                                   // położenie zerowe górnego czujnika kanał A
+int zero_analog_IN_1 = 0;                                   // położenie zerowe górnego czujnika kanał B
+int zero_analog_IN_2 = 0;                                   // położenie zerowe dolnego czujnika kanał A
+int zero_analog_IN_3 = 0;                                   // położenie zerowe dolnego czujnika kanał B
 DigitalOut direction(PTC7);                                 // zmiana wartości logicznej na wyjściu PTC7 powoduje zmianę kieruneku obrotów
 DigitalOut zezwolenie(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)
-AnalogIn analog_IN_1(PTB1);                                 // odczyt napięcia z wejścia analogowego 1 (kąt obrotu ciała swobodnego)
+AnalogIn analog_IN_0(PTB0);                                 // odczyt napięcia z wejścia analogowego 0 (kąt obrotu kolumny kanał A)
+AnalogIn analog_IN_1(PTB1);                                 // odczyt napięcia z wejścia analogowego 1 (kąt obrotu kolumny kanał B)
+AnalogIn analog_IN_2(PTB2);                                 // odczyt napięcia z wejścia analogowego 2 (kąt obrotu ciała swobodnego kanał A)
+AnalogIn analog_IN_3(PTB3);                                 // odczyt napięcia z wejścia analogowego 3 (kąt obrotu ciała swobodnego kanał B)
 PwmOut motor(PTA5);                                         // sygnał PWM do sterowania sterownikiem silnika krokowego
 Serial pc(USBTX,USBRX);                                     // komunikacja z PC
 
@@ -43,17 +46,22 @@
 void task2() { 
     get_voltage_in(analog_IN_0, zero_analog_IN_0);
     get_voltage_in(analog_IN_1, zero_analog_IN_1);
-    pc.printf("%.3f\t%.3f\n", get_voltage_in(analog_IN_0, zero_analog_IN_0), get_voltage_in(analog_IN_1, zero_analog_IN_1));
+    get_voltage_in(analog_IN_2, zero_analog_IN_2);
+    get_voltage_in(analog_IN_3, zero_analog_IN_3);
+    pc.printf("%.3f\t%.3f\t%.3f\t%.3f\n", get_voltage_in(analog_IN_0, zero_analog_IN_0), 
+                                        get_voltage_in(analog_IN_1, zero_analog_IN_1), 
+                                        get_voltage_in(analog_IN_2, zero_analog_IN_2), 
+                                        get_voltage_in(analog_IN_3, zero_analog_IN_3));
 } 
 
 int main() {    
-    pc.baud(115200);                                        // największa szybkość standardowa, jaką można zadać to 19200 
-                                                            // im większa prędkość transmisji tym mniejsze czasy wysyłania- więcej niż 115200 nie osiągalne 
-                                                            // dla 115200 mamy mniejsze czasy wysyłania (możemy wysyłać częściej- co 10ms)
-    zezwolenie = 1;                                         //zezwolenie na start sterownika silnika krokowego                                                        
+    pc.baud(115200);                                        // ustawienie szykości transmisji z PC
+    zezwolenie = 1;                                         // zezwolenie na start sterownika silnika krokowego                                                        
     zero_analog_IN_0 = analog_IN_0.read();
     zero_analog_IN_1 = analog_IN_1.read();
-    wait(5);                                                //czas na ustawienia początkowe 5 sek.   
+    zero_analog_IN_2 = analog_IN_2.read();
+    zero_analog_IN_3 = analog_IN_3.read();
+    wait(5);                                                // czas na ustawienia początkowe 5 sek.   
     motor.period_us(motor_PWM_period_us);
     motor = 0.5;                                            // wypełnienie PWM sygnału CLK