Controla un motor DC vidireccional y lee los pulsos del encoder. Gira el motor al derecho hasta llegar a un recorrido especifico y luego lo gira al reves hasta llegar al punto inicial.

Dependencies:   Motor QEI mbed

Committer:
javierjsp
Date:
Tue Apr 11 19:56:19 2017 +0000
Revision:
0:6d89fbfb2082
Child:
2:481289ca3336
first version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
javierjsp 0:6d89fbfb2082 1 #include "mbed.h"
javierjsp 0:6d89fbfb2082 2 #include "Motor.h"
javierjsp 0:6d89fbfb2082 3 #include "QEI.h"
javierjsp 0:6d89fbfb2082 4
javierjsp 0:6d89fbfb2082 5 QEI encoder1(PE_11, PE_9, NC, 6, QEI::X4_ENCODING); // (A, B, indice, PulsosPorRev, TipoDeEncoder)
javierjsp 0:6d89fbfb2082 6 Motor motor1(PE_13, PF_15, PG_14); // (pwm, derecho, inverso)
javierjsp 0:6d89fbfb2082 7 Serial bt(PE_8, PE_7); // tx, rx (serial 5)
javierjsp 0:6d89fbfb2082 8 DigitalOut led1(LED1); // definimos la salida del LED
javierjsp 0:6d89fbfb2082 9
javierjsp 0:6d89fbfb2082 10 int main()
javierjsp 0:6d89fbfb2082 11 {
javierjsp 0:6d89fbfb2082 12 motor1.period(0.00005); // establece el periodo del PWM, equivalente a una frecuencia de 20KHz.
javierjsp 0:6d89fbfb2082 13 bt.baud(9600); // velocidad de transmision del bluetooth a 9600 baudios
javierjsp 0:6d89fbfb2082 14 int pulsos = 0; // numero de pulsos recorridos
javierjsp 0:6d89fbfb2082 15 int recorrido = 240; // pulsos que queremos que recorra (modificaremos este valor hasta saber cuantos pulsos corresponden a una vuelta)
javierjsp 0:6d89fbfb2082 16 bt.printf(pulsos); // envia el valor de "pulsos" por bluetooth
javierjsp 0:6d89fbfb2082 17
javierjsp 0:6d89fbfb2082 18 led1 = 1; // encendemos un led de la placa durante 1s para asegurarnos de que el programa se esta ejecutando correctamente
javierjsp 0:6d89fbfb2082 19 wait(1);
javierjsp 0:6d89fbfb2082 20 led1 = 0;
javierjsp 0:6d89fbfb2082 21
javierjsp 0:6d89fbfb2082 22 while(pulsos<recorrido) // gira el motor al derecho hasta que los pulsos sean los del recorrido asignado
javierjsp 0:6d89fbfb2082 23 {
javierjsp 0:6d89fbfb2082 24 motor1.speed(0.4);
javierjsp 0:6d89fbfb2082 25 pulsos= encoder1.getPulses();
javierjsp 0:6d89fbfb2082 26 bt.printf(pulsos); // envia el valor de "pulsos" por bluetooth
javierjsp 0:6d89fbfb2082 27 }
javierjsp 0:6d89fbfb2082 28
javierjsp 0:6d89fbfb2082 29 motor1.brake(); // frena el motor y enciende un led 1s para saber que hemos llegado al punto deseado
javierjsp 0:6d89fbfb2082 30 led1 = 1;
javierjsp 0:6d89fbfb2082 31 wait(1);
javierjsp 0:6d89fbfb2082 32 led1 = 0;
javierjsp 0:6d89fbfb2082 33 wait(1);
javierjsp 0:6d89fbfb2082 34
javierjsp 0:6d89fbfb2082 35 while(pulsos>0) // gira el motor al inverso hasta que los pulsos sean 0
javierjsp 0:6d89fbfb2082 36 {
javierjsp 0:6d89fbfb2082 37 motor1.speed(-0.4);
javierjsp 0:6d89fbfb2082 38 pulsos= encoder1.getPulses();
javierjsp 0:6d89fbfb2082 39 }
javierjsp 0:6d89fbfb2082 40
javierjsp 0:6d89fbfb2082 41 motor1.brake(); // frena el motor y deja encendido un led para saber que hemos llegado al punto deseado
javierjsp 0:6d89fbfb2082 42 led1 = 1;
javierjsp 0:6d89fbfb2082 43
javierjsp 0:6d89fbfb2082 44 }