Banco de pruebas RPM
Dependencies: ESC HX711 Servo mbed-rtos mbed
main.cpp@0:e1046eeaefdb, 2018-06-26 (annotated)
- Committer:
- AlanHuchin
- Date:
- Tue Jun 26 18:48:08 2018 +0000
- Revision:
- 0:e1046eeaefdb
RPM
Who changed what in which revision?
User | Revision | Line number | New 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 | } |