Delta Battery, CAN_bus, DIO P2P, ROS
Dependencies: mbed mbed-rtos ros_lib_kinetic
Revision 11:6d5307ceb569, committed 2018-10-02
- Comitter:
- WeberYang
- Date:
- Tue Oct 02 00:57:35 2018 +0000
- Parent:
- 10:8b7fce3bba86
- Child:
- 12:ed085acbbde5
- Commit message:
- _0829_demo_version
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri May 25 08:07:15 2018 +0000
+++ b/main.cpp Tue Oct 02 00:57:35 2018 +0000
@@ -45,6 +45,7 @@
#define ACT_MG_OFF 2
#define Check_BMS_ON 3
#define Check_BMS_OFF 4
+#define WAIT_BAT 5
//Serial pc(USBTX,USBRX);
Timer t;
Serial RS232(PA_9, PA_10);
@@ -114,7 +115,7 @@
#define MPU6050_GYRO_FS MPU6050_GYRO_FS_2000
#define MPU6050_ACCEL_FS MPU6050_ACCEL_FS_2
-#define PC_BAUDRATE 115200//38400
+#define PC_BAUDRATE 38400
#define DEG_TO_RAD(x) ( x * 0.01745329 )
#define RAD_TO_DEG(x) ( x * 57.29578 )
@@ -357,7 +358,7 @@
//0xFF for action procedure
if (msg.data == 0x21){
error_code = 99;
- State = ACT_MG_ON;
+ State = WAIT_BAT;//ACT_MG_ON;
}
if (msg.data == 0x20){
@@ -527,7 +528,7 @@
DO_1 = 0;
DO_2 = 0;
DO_3 = 0;
- DO_4 = 0;
+ DO_4 = 1;//for manual turn on the LiBattery, and turn on the main relay to open Load
seq = 0;
nh.initNode();
// nh.advertise(imu_pub);
@@ -539,6 +540,8 @@
nh.advertise(Error_state_pub);
nh.subscribe(cmd_vel_sub);
nh.subscribe(ACT_sub);
+
+ //==========================
/*
mpu.initialize();
if (mpu.testConnection()) {
@@ -597,22 +600,24 @@
DO_1 = 0;
DO_2 = 0;
- //cut off main power
- DO_4 = 1;
- wait_ms(100);
-
-// BMS ON
+ // if Battery is off, then do turn on
+// if (BMS_state == 0){
+ //BMS ON
DO_3 = 1;
- wait(5);
+ wait(4);
DO_3 = 0;
+// }
return 1;
// }
}
else if (state == 2){//MAG_OFF
-// BMS OFF
+ // if Battery is on, then do trun off
+// if (BMS_state == 1){
+ //BMS ON
DO_3 = 1;
- wait(5);
+ wait(4);
DO_3 = 0;
+// }
//unLock triggrt
DO_0 = 0;
@@ -655,6 +660,25 @@
can1.frequency(500000);
wait_ms(50);
+ //Lock triggrt
+ wait_ms(500);
+
+ DO_0 = 0;
+ DO_1 = 0;
+ DO_2 = 0;
+
+ DO_0 = 0;
+ DO_1 = 1;
+ DO_2 = 0;
+
+ wait_ms(500);
+
+ DO_0 = 0;
+ DO_1 = 0;
+ DO_2 = 0;
+
+ wait_ms(500);
+
while(1){
seq++;
motor_seq = seq;
@@ -673,10 +697,21 @@
counter = 0;
break;
+ case WAIT_BAT:
+ if (sensorState == 0){
+ State = ACT_MG_ON;
+ counter = 0;
+ }
+ if (counter>1000){
+ State = IDLE;
+ error_code = Sensor_error;
+ }
+ break;
+
case ACT_MG_ON:
ret = MG_ACT(1);
if (ret){
- DO_4 = 0;
+// DO_4 = 0;
State = Check_BMS_ON;
counter = 0;
}
@@ -692,10 +727,12 @@
break;
case Check_BMS_ON:
-// if (BMS_state == 1){
+ if (BMS_state == 1){
+ // turn on parrel wire to share the UPS current
+ DO_4 = 1;
State = IDLE;
error_code = 0;
-// }
+ }
if (counter>100){
State = IDLE;
error_code = BMS_error;
@@ -708,6 +745,9 @@
break;
case ACT_MG_OFF:
+ // turn off parrel wire to avoid voltage feedback to UPS
+ DO_4 = 0;
+
ret = MG_ACT(2);
if (ret){
State = Check_BMS_OFF;