Sz_Insper / Mbed 2 deprecated Leitura_Velocidade_Akyama

Dependencies:   mbed

Committer:
Marcelocostanzo
Date:
Thu Aug 06 16:53:38 2020 +0000
Revision:
0:c665d23a7e36
primeira versao

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marcelocostanzo 0:c665d23a7e36 1 /*****************************************************************
Marcelocostanzo 0:c665d23a7e36 2 * Projeto para leitura da rotação do motor Akyama ak360/25PL12S3500S
Marcelocostanzo 0:c665d23a7e36 3 *
Marcelocostanzo 0:c665d23a7e36 4 *
Marcelocostanzo 0:c665d23a7e36 5 *
Marcelocostanzo 0:c665d23a7e36 6 * Insper instituto e pesquisa
Marcelocostanzo 0:c665d23a7e36 7 *
Marcelocostanzo 0:c665d23a7e36 8 * Autor: Marcelo Costanzo Miranda
Marcelocostanzo 0:c665d23a7e36 9 * Data: 06/08/2020
Marcelocostanzo 0:c665d23a7e36 10 **************************************************************/
Marcelocostanzo 0:c665d23a7e36 11
Marcelocostanzo 0:c665d23a7e36 12 #include "mbed.h"
Marcelocostanzo 0:c665d23a7e36 13
Marcelocostanzo 0:c665d23a7e36 14 //------------------Pino para o sinal de rotação-----------------------------
Marcelocostanzo 0:c665d23a7e36 15 InterruptIn pulse(D7);
Marcelocostanzo 0:c665d23a7e36 16
Marcelocostanzo 0:c665d23a7e36 17 //----------------Timers para amostragem ------------------------------------
Marcelocostanzo 0:c665d23a7e36 18 Ticker calc_rpm;
Marcelocostanzo 0:c665d23a7e36 19 Ticker send_serial;
Marcelocostanzo 0:c665d23a7e36 20
Marcelocostanzo 0:c665d23a7e36 21 //----------------Comunicação----------------------------------------
Marcelocostanzo 0:c665d23a7e36 22 Serial pc(USBTX, USBRX); // tx, rx
Marcelocostanzo 0:c665d23a7e36 23
Marcelocostanzo 0:c665d23a7e36 24 //----------------Variaveis----------------------------------------
Marcelocostanzo 0:c665d23a7e36 25 int tooth_counter = 0;
Marcelocostanzo 0:c665d23a7e36 26 int RPM = 0;
Marcelocostanzo 0:c665d23a7e36 27 //float RPS = 0;
Marcelocostanzo 0:c665d23a7e36 28 //float tooth_period = 0;
Marcelocostanzo 0:c665d23a7e36 29
Marcelocostanzo 0:c665d23a7e36 30 //----------------Interrupçao de pulso----------------------------------------
Marcelocostanzo 0:c665d23a7e36 31 void pulse_read()
Marcelocostanzo 0:c665d23a7e36 32 {
Marcelocostanzo 0:c665d23a7e36 33 tooth_counter++;
Marcelocostanzo 0:c665d23a7e36 34 }
Marcelocostanzo 0:c665d23a7e36 35
Marcelocostanzo 0:c665d23a7e36 36 //----------------Calcula a rotação a 40Hz----------------------------------------
Marcelocostanzo 0:c665d23a7e36 37 void rpm_counter()
Marcelocostanzo 0:c665d23a7e36 38 {
Marcelocostanzo 0:c665d23a7e36 39 RPM = tooth_counter * 40;
Marcelocostanzo 0:c665d23a7e36 40 //tooth_period = 25000 / tooth_counter;
Marcelocostanzo 0:c665d23a7e36 41 //RPS = RPM / 60;
Marcelocostanzo 0:c665d23a7e36 42 tooth_counter = 0;
Marcelocostanzo 0:c665d23a7e36 43 }
Marcelocostanzo 0:c665d23a7e36 44
Marcelocostanzo 0:c665d23a7e36 45 //----------------Envia a rotação a 1Hz----------------------------------------
Marcelocostanzo 0:c665d23a7e36 46 void send_rpm()
Marcelocostanzo 0:c665d23a7e36 47 {
Marcelocostanzo 0:c665d23a7e36 48 pc.printf("%i\r\n",RPM);
Marcelocostanzo 0:c665d23a7e36 49 }
Marcelocostanzo 0:c665d23a7e36 50
Marcelocostanzo 0:c665d23a7e36 51 int main()
Marcelocostanzo 0:c665d23a7e36 52 {
Marcelocostanzo 0:c665d23a7e36 53 pc.baud(38400);// ajusta o baudrate
Marcelocostanzo 0:c665d23a7e36 54
Marcelocostanzo 0:c665d23a7e36 55 pulse.rise(&pulse_read);//habilita a interrupção por borda de subida
Marcelocostanzo 0:c665d23a7e36 56
Marcelocostanzo 0:c665d23a7e36 57 calc_rpm.attach_us(&rpm_counter, 25000);//habilita a chamada a 40Hz para calculo da rotaçao
Marcelocostanzo 0:c665d23a7e36 58
Marcelocostanzo 0:c665d23a7e36 59 send_serial.attach(&send_rpm, 1.0f);//habilita a chamada a 1Hz para envio da rotaçao
Marcelocostanzo 0:c665d23a7e36 60
Marcelocostanzo 0:c665d23a7e36 61 while(1)
Marcelocostanzo 0:c665d23a7e36 62 {
Marcelocostanzo 0:c665d23a7e36 63 }
Marcelocostanzo 0:c665d23a7e36 64 }