/* * L12a - program calibrare servo directie , tractiune, sensori linie. Servo conectat la P0.3 Boot Kit cu XMC1100. Driver BLDC - P0.4 IR sensori linie: L - P1.4 C - P0.0 R - P0.1 * Servo necesita semnal de comanda cu perioada de 20 milisecunde * Factorul de umplere reprezinta jumatate din durata in 1 a semnalului generat, * in microsecunde. * PWM_SetDutyCycle(&PWM_0,500 ); // 100 --- 200 microsecunde // 50 --- 100 microsecunde // 25 --- 50 microsecunde // 1 --- 2 microsecunde // 500 --- 1000 microsecunde Valorile limita sunt obtinute experimental pentru servo model FUTABA S3010. * */ #include uint32_t i,j,a; // pt.delay void delay() { for(i = 0;i <0xfffff;i++); } int main(void) { DAVE_Init(); PWM_Init (&PWM_0); // initializare modul PWM directie PWM_Init (&PWM_1); // tractiune PWM_SetFreq(&PWM_0,50); // perioada 20 milisecunde PWM_SetFreq(&PWM_1,50); PWM_SetDutyCycle(&PWM_0,0); // nu genereaza semnal PWM_SetDutyCycle(&PWM_1,0); PWM_Start(&PWM_0); // porneste pwm cu factor zero PWM_Start(&PWM_1); // Secventa initializare ESC (Electronic Speed Controller) PWM_SetDutyCycle(&PWM_1,1000); //setare 2000 microsec vit. maxima delay(); delay(); delay();delay();delay(); // pe aici se conecteaza alimentarea delay(); delay(); delay();delay();delay(); // trebuie identificat wait 5secunde. PWM_SetDutyCycle(&PWM_1,400); // setare viteza minima delay(); delay(); delay();delay();delay(); delay(); delay(); delay();delay();delay();// wait 5 secunde // sfarsit initializare // La initializare corecta emite sunet la intervale de aprox. 1 secunda // Acum se pot emite comenzi PWM_SetDutyCycle(&PWM_1,700); // viteza mica while(1) { a=BUS_IO_Read (&BUS_IO_0); // pt. test sensori // PWM_SetDutyCycle(&PWM_0,1140); // calibrare servo limita stanga - 0 PWM_SetDutyCycle(&PWM_0,650); // directie stanga max delay(); delay(); // PWM_SetDutyCycle(&PWM_0,700); // calibrare servo mijloc - 90 // delay(); delay(); // PWM_SetDutyCycle(&PWM_0,900); // directie drept // delay();delay(); // PWM_SetDutyCycle(&PWM_0,220); // calibrare servo limita drepata -180 // delay();delay(); PWM_SetDutyCycle(&PWM_0,1050); delay(); delay(); // directie dreapta max // PWM_SetDutyCycle(&PWM_0,700); // calibrare servo mijloc - 90 // PWM_SetDutyCycle(&PWM_0,900); // directie drept // delay();delay(); } return 0; }