![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
FRDM_wahadlo_torsyjne
Dependencies: mbed BufferedSerial
Fork of FRDM_wahadlo_torsyjne by
main.cpp@8:434d613f0929, 2014-06-10 (annotated)
- Committer:
- Pawel_13
- Date:
- Tue Jun 10 15:32:03 2014 +0000
- Revision:
- 8:434d613f0929
- Parent:
- 6:9414a292d7f2
- Child:
- 9:3540ad710232
Pozosta?my do jutra przy tej wersji. Przy tej szybko?ci pomiaru zapis do portu szeregowego spowalnia jej wykonanie (trwa zbyt d?ugo).
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wojtekmir | 1:a4f9276a0f35 | 1 | #include "mbed.h" |
Pawel_13 | 8:434d613f0929 | 2 | #include "TSISensor.h" |
wojtekmir | 1:a4f9276a0f35 | 3 | |
Pawel_13 | 8:434d613f0929 | 4 | int motor_PWM_period_us = 100; //okres sygnału PWM (w mikrosekundach) wyzwalającego kolejny krok silnika |
wojtekmir | 1:a4f9276a0f35 | 5 | |
Pawel_13 | 8:434d613f0929 | 6 | DigitalOut direction(PTC7); //zmiana wartości logicznej na wyjściu PTC7 powoduje zmianę kieruneku obrotów |
Pawel_13 | 8:434d613f0929 | 7 | DigitalOut myled(LED_GREEN); //dioda zielona sygnalizuje zmianę kierunku obrotów |
Pawel_13 | 8:434d613f0929 | 8 | |
Pawel_13 | 8:434d613f0929 | 9 | AnalogIn analog_IN_0(PTB0); //odczyt napięć z wejść analogowych (kąty obrotu) |
Pawel_13 | 8:434d613f0929 | 10 | AnalogIn analog_IN_1(PTB1); |
Pawel_13 | 3:2ba53b9a499a | 11 | |
wojtekmir | 2:78a032749524 | 12 | PwmOut motor(PTA5); //sygnał PWM do sterowania sterownikiem silnika krokowego |
Pawel_13 | 8:434d613f0929 | 13 | Serial pc(USBTX,USBRX); //komunikacja z PC |
wojtekmir | 1:a4f9276a0f35 | 14 | |
Pawel_13 | 8:434d613f0929 | 15 | TSISensor tsi; |
Pawel_13 | 8:434d613f0929 | 16 | |
Pawel_13 | 8:434d613f0929 | 17 | float get_voltage_in(AnalogIn analog_in, float zero_analog_in) { |
Pawel_13 | 8:434d613f0929 | 18 | return (analog_in.read() - zero_analog_in) * 2.9035; // przesunięcie do zera i skalowanie napiecia do zakresu |
Pawel_13 | 3:2ba53b9a499a | 19 | } |
Pawel_13 | 3:2ba53b9a499a | 20 | |
Pawel_13 | 8:434d613f0929 | 21 | |
Pawel_13 | 8:434d613f0929 | 22 | int main() { |
Pawel_13 | 6:9414a292d7f2 | 23 | motor.period_us(motor_PWM_period_us); |
Pawel_13 | 8:434d613f0929 | 24 | motor = 0.0; |
Pawel_13 | 8:434d613f0929 | 25 | pc.baud(19200); // największa szybkość standardowa, jaką można zadać |
Pawel_13 | 5:1e2e73ac4bed | 26 | |
Pawel_13 | 3:2ba53b9a499a | 27 | int i_start = 0; |
Pawel_13 | 8:434d613f0929 | 28 | int EXC_angle = 3200/3; //360 stopni / 1 |
Pawel_13 | 8:434d613f0929 | 29 | int DIR_switched = 0; |
Pawel_13 | 8:434d613f0929 | 30 | int SWITCH_DIR = EXC_angle; |
Pawel_13 | 8:434d613f0929 | 31 | |
Pawel_13 | 8:434d613f0929 | 32 | wait(15); //czas na ustawienia początkowe 15 sek. |
wojtekmir | 1:a4f9276a0f35 | 33 | |
Pawel_13 | 8:434d613f0929 | 34 | int zero_analog_IN_0 = analog_IN_0.read(); |
Pawel_13 | 8:434d613f0929 | 35 | int zero_analog_IN_1 = analog_IN_1.read(); |
Pawel_13 | 8:434d613f0929 | 36 | |
Pawel_13 | 8:434d613f0929 | 37 | while (true) { |
Pawel_13 | 8:434d613f0929 | 38 | if (tsi.readPercentage() < 0.5) |
Pawel_13 | 8:434d613f0929 | 39 | motor = 0.5; |
Pawel_13 | 8:434d613f0929 | 40 | else motor = 0.0; // silnik zatrzyma się po dotknięciu prawej strony potencjometru |
Pawel_13 | 8:434d613f0929 | 41 | |
Pawel_13 | 8:434d613f0929 | 42 | // pc.printf("%.2f\n", get_voltage_in(analog_IN_0, zero_analog_IN_0)); // zbyt długo wstrzymuje procedurę |
Pawel_13 | 3:2ba53b9a499a | 43 | |
Pawel_13 | 5:1e2e73ac4bed | 44 | i_start += 1; |
Pawel_13 | 3:2ba53b9a499a | 45 | if (i_start == SWITCH_DIR) { |
Pawel_13 | 5:1e2e73ac4bed | 46 | i_start = 0; |
Pawel_13 | 3:2ba53b9a499a | 47 | myled = !myled; |
Pawel_13 | 5:1e2e73ac4bed | 48 | direction = !direction; |
Pawel_13 | 8:434d613f0929 | 49 | if (DIR_switched == 0) { |
Pawel_13 | 8:434d613f0929 | 50 | if (SWITCH_DIR == EXC_angle) { |
Pawel_13 | 8:434d613f0929 | 51 | SWITCH_DIR = 2*EXC_angle; |
Pawel_13 | 8:434d613f0929 | 52 | DIR_switched = 1; |
Pawel_13 | 8:434d613f0929 | 53 | } |
Pawel_13 | 3:2ba53b9a499a | 54 | } |
Pawel_13 | 8:434d613f0929 | 55 | } |
Pawel_13 | 8:434d613f0929 | 56 | wait_us(motor_PWM_period_us); |
wojtekmir | 1:a4f9276a0f35 | 57 | } |
Pawel_13 | 8:434d613f0929 | 58 | } |