Banco de pruebas RPM

Dependencies:   ESC HX711 Servo mbed-rtos mbed

Committer:
AlanHuchin
Date:
Tue Jun 26 18:48:08 2018 +0000
Revision:
0:e1046eeaefdb
RPM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AlanHuchin 0:e1046eeaefdb 1 #include "mbed.h"
AlanHuchin 0:e1046eeaefdb 2 //#include "esc.h"
AlanHuchin 0:e1046eeaefdb 3 #include "Servo.h"
AlanHuchin 0:e1046eeaefdb 4 #include "HX711.h"
AlanHuchin 0:e1046eeaefdb 5 #include "rtos.h"
AlanHuchin 0:e1046eeaefdb 6
AlanHuchin 0:e1046eeaefdb 7 Serial pc(USBTX, USBRX);
AlanHuchin 0:e1046eeaefdb 8 DigitalOut myled(LED1);
AlanHuchin 0:e1046eeaefdb 9 //ESC esc1(p24);
AlanHuchin 0:e1046eeaefdb 10
AlanHuchin 0:e1046eeaefdb 11 Servo esc1(p23);
AlanHuchin 0:e1046eeaefdb 12 HX711 scale(p29, p30);
AlanHuchin 0:e1046eeaefdb 13 InterruptIn pb1(p21);
AlanHuchin 0:e1046eeaefdb 14 InterruptIn pb2(p22);
AlanHuchin 0:e1046eeaefdb 15 Timer t;
AlanHuchin 0:e1046eeaefdb 16 Thread thread1;
AlanHuchin 0:e1046eeaefdb 17 Thread thread2;
AlanHuchin 0:e1046eeaefdb 18
AlanHuchin 0:e1046eeaefdb 19 float cnt = 0.025;
AlanHuchin 0:e1046eeaefdb 20 float weight = 0.0;
AlanHuchin 0:e1046eeaefdb 21 int x = 0;
AlanHuchin 0:e1046eeaefdb 22
AlanHuchin 0:e1046eeaefdb 23
AlanHuchin 0:e1046eeaefdb 24 float calibration_factor = -112650.0;; //-7050 worked for my 440lb max scale setup
AlanHuchin 0:e1046eeaefdb 25 int averageSamples = 100;
AlanHuchin 0:e1046eeaefdb 26
AlanHuchin 0:e1046eeaefdb 27 void flip_pb1();
AlanHuchin 0:e1046eeaefdb 28 void flip_pb2();
AlanHuchin 0:e1046eeaefdb 29 void rpm_fun();
AlanHuchin 0:e1046eeaefdb 30 void extract_data();
AlanHuchin 0:e1046eeaefdb 31 void ON_OFF();
AlanHuchin 0:e1046eeaefdb 32
AlanHuchin 0:e1046eeaefdb 33 int main() {
AlanHuchin 0:e1046eeaefdb 34
AlanHuchin 0:e1046eeaefdb 35 pc.baud(115200);
AlanHuchin 0:e1046eeaefdb 36 pc.printf("-------------------------------------------------- \n\r");
AlanHuchin 0:e1046eeaefdb 37
AlanHuchin 0:e1046eeaefdb 38 scale.setScale(0);
AlanHuchin 0:e1046eeaefdb 39 scale.tare(); //Reset the scale to 0
AlanHuchin 0:e1046eeaefdb 40 long zero_factor = scale.averageValue(averageSamples);
AlanHuchin 0:e1046eeaefdb 41 pc.printf("Zero factor: %.4f\n\r" , zero_factor);
AlanHuchin 0:e1046eeaefdb 42 scale.setScale(calibration_factor);
AlanHuchin 0:e1046eeaefdb 43 pc.printf("Sensor de Peso Calibrado\n\r" );
AlanHuchin 0:e1046eeaefdb 44 wait(2.0);
AlanHuchin 0:e1046eeaefdb 45 esc1 = 1.0;
AlanHuchin 0:e1046eeaefdb 46 wait(6.0);
AlanHuchin 0:e1046eeaefdb 47 esc1 = 0.0;
AlanHuchin 0:e1046eeaefdb 48 wait(2.0);
AlanHuchin 0:e1046eeaefdb 49 pc.printf("Motores Activados\n\r" );
AlanHuchin 0:e1046eeaefdb 50 pc.printf("Todo Listo...\n\r" );
AlanHuchin 0:e1046eeaefdb 51 wait(2.0);
AlanHuchin 0:e1046eeaefdb 52
AlanHuchin 0:e1046eeaefdb 53 pb1.rise(&flip_pb1);
AlanHuchin 0:e1046eeaefdb 54 pb2.rise(&flip_pb2);
AlanHuchin 0:e1046eeaefdb 55
AlanHuchin 0:e1046eeaefdb 56
AlanHuchin 0:e1046eeaefdb 57 thread1.start(extract_data);
AlanHuchin 0:e1046eeaefdb 58 thread2.start( ON_OFF);
AlanHuchin 0:e1046eeaefdb 59
AlanHuchin 0:e1046eeaefdb 60
AlanHuchin 0:e1046eeaefdb 61 //F3 = 0.8584*PWM3-0.1502;
AlanHuchin 0:e1046eeaefdb 62
AlanHuchin 0:e1046eeaefdb 63 while(1) {
AlanHuchin 0:e1046eeaefdb 64
AlanHuchin 0:e1046eeaefdb 65 esc1 = cnt;
AlanHuchin 0:e1046eeaefdb 66 Thread::wait(20);
AlanHuchin 0:e1046eeaefdb 67
AlanHuchin 0:e1046eeaefdb 68 }
AlanHuchin 0:e1046eeaefdb 69 }
AlanHuchin 0:e1046eeaefdb 70
AlanHuchin 0:e1046eeaefdb 71 void rpm_fun()
AlanHuchin 0:e1046eeaefdb 72 {
AlanHuchin 0:e1046eeaefdb 73
AlanHuchin 0:e1046eeaefdb 74 }
AlanHuchin 0:e1046eeaefdb 75
AlanHuchin 0:e1046eeaefdb 76 void extract_data(){
AlanHuchin 0:e1046eeaefdb 77 while(true){
AlanHuchin 0:e1046eeaefdb 78
AlanHuchin 0:e1046eeaefdb 79 Thread::wait(10);
AlanHuchin 0:e1046eeaefdb 80 }
AlanHuchin 0:e1046eeaefdb 81 }
AlanHuchin 0:e1046eeaefdb 82
AlanHuchin 0:e1046eeaefdb 83
AlanHuchin 0:e1046eeaefdb 84 void ON_OFF(){
AlanHuchin 0:e1046eeaefdb 85 while(true){
AlanHuchin 0:e1046eeaefdb 86
AlanHuchin 0:e1046eeaefdb 87 if(x == 1){
AlanHuchin 0:e1046eeaefdb 88 weight = scale.getGram();
AlanHuchin 0:e1046eeaefdb 89 pc.printf("%f %.4f %f \n\r",t.read(),weight*1000,cnt);
AlanHuchin 0:e1046eeaefdb 90 cnt = cnt + 0.025;
AlanHuchin 0:e1046eeaefdb 91 }
AlanHuchin 0:e1046eeaefdb 92
AlanHuchin 0:e1046eeaefdb 93 if(cnt > 0.95){
AlanHuchin 0:e1046eeaefdb 94 t.reset();
AlanHuchin 0:e1046eeaefdb 95 t.stop();
AlanHuchin 0:e1046eeaefdb 96 cnt = 0.0;
AlanHuchin 0:e1046eeaefdb 97 x = 0;
AlanHuchin 0:e1046eeaefdb 98 }
AlanHuchin 0:e1046eeaefdb 99
AlanHuchin 0:e1046eeaefdb 100 Thread::wait(4000);
AlanHuchin 0:e1046eeaefdb 101 }
AlanHuchin 0:e1046eeaefdb 102 }
AlanHuchin 0:e1046eeaefdb 103
AlanHuchin 0:e1046eeaefdb 104 void flip_pb1() {
AlanHuchin 0:e1046eeaefdb 105 wait_ms(10);
AlanHuchin 0:e1046eeaefdb 106 t.start();
AlanHuchin 0:e1046eeaefdb 107 x = 1;
AlanHuchin 0:e1046eeaefdb 108 }
AlanHuchin 0:e1046eeaefdb 109
AlanHuchin 0:e1046eeaefdb 110
AlanHuchin 0:e1046eeaefdb 111 void flip_pb2() {
AlanHuchin 0:e1046eeaefdb 112 wait_ms(10);
AlanHuchin 0:e1046eeaefdb 113
AlanHuchin 0:e1046eeaefdb 114 }