
FRDM_wahadlo_torsyjne
Dependencies: mbed BufferedSerial
Fork of FRDM_wahadlo_torsyjne by
Diff: main.cpp
- 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