eLab Team / Mbed OS DcMotorTest
Committer:
elab
Date:
Thu Jan 28 15:51:12 2021 +0000
Revision:
1:77096ac47e7a
Parent:
0:708b17957be1
Child:
2:72952132894a
tets;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elab 0:708b17957be1 1 #include "mbed.h"
elab 0:708b17957be1 2 #include "stdio.h"
elab 0:708b17957be1 3
elab 0:708b17957be1 4 DigitalOut gpo(D10);
elab 0:708b17957be1 5 DigitalOut led(LED1);
elab 0:708b17957be1 6
elab 0:708b17957be1 7 Serial pc(USBTX, USBRX);
elab 0:708b17957be1 8 DigitalIn my_button(USER_BUTTON); // Use the user button to switch from dc motor to servo motor and vice versa
elab 0:708b17957be1 9 DigitalIn end_stop(D2); // relais fin de course
elab 0:708b17957be1 10
elab 1:77096ac47e7a 11 PwmOut l1_dc_motor_en(D0);
elab 1:77096ac47e7a 12 DigitalOut l1_dc_motor_cw(D1);
elab 1:77096ac47e7a 13 DigitalOut l1_dc_motor_ccw(D2);
elab 1:77096ac47e7a 14
elab 1:77096ac47e7a 15 PwmOut l1_servo_en(D5);
elab 1:77096ac47e7a 16 DigitalOut l1_servo_cw(D3);
elab 1:77096ac47e7a 17 DigitalOut l1_servo_ccw(D4);
elab 1:77096ac47e7a 18
elab 0:708b17957be1 19
elab 1:77096ac47e7a 20 PwmOut l2_dc_motor_en(D6);
elab 1:77096ac47e7a 21 DigitalOut l2_dc_motor_cw(D7);
elab 1:77096ac47e7a 22 DigitalOut l2_dc_motor_ccw(D8);
elab 1:77096ac47e7a 23
elab 1:77096ac47e7a 24 PwmOut l2_servo_en(D11);
elab 1:77096ac47e7a 25 DigitalOut l2_servo_cw(D9);
elab 1:77096ac47e7a 26 DigitalOut l2_servo_ccw(D10);
elab 1:77096ac47e7a 27
elab 0:708b17957be1 28
elab 0:708b17957be1 29 void run_l1_dc_motor_cw(void){
elab 0:708b17957be1 30 l1_dc_motor_en.period_ms(20); // shoul be 20 ms (490 Hz) and 10 ms for the servo (980 Hz)
elab 0:708b17957be1 31 l1_dc_motor_en.pulsewidth_us(3000);
elab 0:708b17957be1 32 l1_dc_motor_cw=0;
elab 0:708b17957be1 33 l1_dc_motor_ccw=1;
elab 0:708b17957be1 34 }
elab 0:708b17957be1 35 void run_l1_dc_motor_ccw(void){
elab 0:708b17957be1 36 l1_dc_motor_en.period_ms(20); // shoul be 20 ms (490 Hz) and 10 ms for the servo (980 Hz)
elab 0:708b17957be1 37 l1_dc_motor_en.pulsewidth_us(3000);
elab 0:708b17957be1 38 l1_dc_motor_cw=1;
elab 0:708b17957be1 39 l1_dc_motor_ccw=0;
elab 0:708b17957be1 40 }
elab 1:77096ac47e7a 41 void run_l2_dc_motor_cw(void){
elab 1:77096ac47e7a 42 l2_dc_motor_en.period_ms(20); // shoul be 20 ms (490 Hz) and 10 ms for the servo (980 Hz)
elab 1:77096ac47e7a 43 l2_dc_motor_en.pulsewidth_us(3000);
elab 1:77096ac47e7a 44 l2_dc_motor_cw=0;
elab 1:77096ac47e7a 45 l2_dc_motor_ccw=1;
elab 1:77096ac47e7a 46 }
elab 1:77096ac47e7a 47 void run_l2_dc_motor_ccw(void){
elab 1:77096ac47e7a 48 l2_dc_motor_en.period_ms(20); // shoul be 20 ms (490 Hz) and 10 ms for the servo (980 Hz)
elab 1:77096ac47e7a 49 l2_dc_motor_en.pulsewidth_us(3000);
elab 1:77096ac47e7a 50 l2_dc_motor_cw=1;
elab 1:77096ac47e7a 51 l2_dc_motor_ccw=0;
elab 1:77096ac47e7a 52 }
elab 1:77096ac47e7a 53
elab 1:77096ac47e7a 54
elab 0:708b17957be1 55 void stop_dc_motor(void){
elab 0:708b17957be1 56 l1_dc_motor_cw=0;
elab 0:708b17957be1 57 l1_dc_motor_ccw=0;
elab 1:77096ac47e7a 58 l2_dc_motor_cw=0;
elab 1:77096ac47e7a 59 l2_dc_motor_ccw=0;
elab 1:77096ac47e7a 60
elab 0:708b17957be1 61 }
elab 0:708b17957be1 62
elab 0:708b17957be1 63 void run_l1_servo_cw(void){
elab 0:708b17957be1 64 l1_servo_cw=1;
elab 0:708b17957be1 65 l1_servo_ccw=0;
elab 0:708b17957be1 66 l1_servo_en.period_us(870);
elab 0:708b17957be1 67 l1_servo_en.pulsewidth_ms(870);
elab 0:708b17957be1 68 }
elab 0:708b17957be1 69 void run_l1_servo_ccw(void){
elab 0:708b17957be1 70 l1_servo_cw=0;
elab 0:708b17957be1 71 l1_servo_ccw=1;
elab 0:708b17957be1 72 l1_servo_en.period_us(870);
elab 0:708b17957be1 73 l1_servo_en.pulsewidth_ms(870);
elab 0:708b17957be1 74 }
elab 0:708b17957be1 75 void stop_servo(void){
elab 0:708b17957be1 76 l1_servo_cw=0;
elab 0:708b17957be1 77 l1_servo_ccw=0;
elab 0:708b17957be1 78 }
elab 0:708b17957be1 79
elab 0:708b17957be1 80
elab 0:708b17957be1 81 void test_limite(void){
elab 0:708b17957be1 82 end_stop.mode(PullDown);
elab 0:708b17957be1 83 while(1){
elab 0:708b17957be1 84 printf("lim=%d\n", end_stop.read());
elab 0:708b17957be1 85
elab 0:708b17957be1 86 if(end_stop.read()==1){
elab 0:708b17957be1 87 stop_dc_motor();
elab 0:708b17957be1 88 led=0;
elab 0:708b17957be1 89 printf("stop_dc_motor\n");
elab 0:708b17957be1 90 }
elab 0:708b17957be1 91 else{
elab 0:708b17957be1 92 run_l1_dc_motor_ccw();
elab 0:708b17957be1 93 printf("motor runs\n");
elab 0:708b17957be1 94 led=1;
elab 0:708b17957be1 95 }
elab 0:708b17957be1 96 }
elab 0:708b17957be1 97
elab 0:708b17957be1 98 }
elab 0:708b17957be1 99
elab 0:708b17957be1 100
elab 0:708b17957be1 101 int main()
elab 0:708b17957be1 102 {
elab 0:708b17957be1 103 unsigned char cmd=0;
elab 0:708b17957be1 104
elab 0:708b17957be1 105 while (true) {
elab 0:708b17957be1 106 scanf("%c", &cmd);
elab 0:708b17957be1 107 if(cmd == '1')
elab 0:708b17957be1 108 {
elab 0:708b17957be1 109 cmd = 0;
elab 0:708b17957be1 110 stop_dc_motor();
elab 0:708b17957be1 111 printf("stop_dc_motor\r\n");
elab 0:708b17957be1 112 }
elab 0:708b17957be1 113 if(cmd == '2')
elab 0:708b17957be1 114 {
elab 0:708b17957be1 115 cmd = 0;
elab 0:708b17957be1 116 run_l1_dc_motor_cw();
elab 0:708b17957be1 117 printf("run_l1_dc_motor_cw\r\n");
elab 0:708b17957be1 118 }
elab 0:708b17957be1 119 if(cmd == '3')
elab 0:708b17957be1 120 {
elab 0:708b17957be1 121 cmd = 0;
elab 0:708b17957be1 122 run_l1_dc_motor_ccw();
elab 0:708b17957be1 123 printf("run_l1_dc_motor_ccw\r\n");
elab 0:708b17957be1 124 }
elab 0:708b17957be1 125 if(cmd == '4')
elab 0:708b17957be1 126 {
elab 0:708b17957be1 127 cmd = 0;
elab 0:708b17957be1 128 run_l1_servo_cw();
elab 0:708b17957be1 129 wait(1);
elab 0:708b17957be1 130 stop_servo();
elab 0:708b17957be1 131 printf("run_l1_servo_cw\r\n");
elab 0:708b17957be1 132 }
elab 0:708b17957be1 133 if(cmd == '5')
elab 0:708b17957be1 134 {
elab 0:708b17957be1 135 cmd = 0;
elab 0:708b17957be1 136 run_l1_servo_ccw();
elab 0:708b17957be1 137 wait(1);
elab 0:708b17957be1 138 stop_servo();
elab 0:708b17957be1 139 printf("run_l1_servo_ccw\r\n");
elab 0:708b17957be1 140 }
elab 1:77096ac47e7a 141 if(cmd == '6')
elab 1:77096ac47e7a 142 {
elab 1:77096ac47e7a 143 cmd = 0;
elab 1:77096ac47e7a 144 run_l2_dc_motor_cw();
elab 1:77096ac47e7a 145 printf("run_l2_dc_motor_cw\r\n");
elab 1:77096ac47e7a 146 }
elab 1:77096ac47e7a 147 if(cmd == '7')
elab 1:77096ac47e7a 148 {
elab 1:77096ac47e7a 149 cmd = 0;
elab 1:77096ac47e7a 150 run_l2_dc_motor_ccw();
elab 1:77096ac47e7a 151 printf("run_l2_dc_motor_ccw\r\n");
elab 1:77096ac47e7a 152 }
elab 1:77096ac47e7a 153
elab 1:77096ac47e7a 154
elab 1:77096ac47e7a 155
elab 0:708b17957be1 156 if(cmd == 'h')
elab 0:708b17957be1 157 {
elab 0:708b17957be1 158 cmd=0;
elab 1:77096ac47e7a 159 printf("1=stop_dc_motor; 2=run_l1_dc_motor_cw; 3=run_l1_dc_motor_ccw; 4=run_l1_servo_cw; 5=run_l1_servo_ccw, 6=run_l1_dc_motor_cw; 7=run_l1_dc_motor_ccw\n");
elab 0:708b17957be1 160 }
elab 0:708b17957be1 161 }
elab 0:708b17957be1 162
elab 0:708b17957be1 163 }