PRBS signal on Haptic_hid with output signal of position
Dependencies: MODSERIAL USBDevice compensation_tables mbed-dsp mbed
Fork of haptic_hid by
main.h
- Committer:
- vsluiter
- Date:
- 2017-06-19
- Revision:
- 4:9d37f163d64c
- Parent:
- 3:10863117020c
File content as of revision 4:9d37f163d64c:
#ifndef MAIN_H #define MAIN_H // System #define ENABLE_COGGING_COMPENSATION 1 #define ENABLE_POSITION_COMPENSATION 1 #define ENABLE_FRICTION_COMPENSATION 1 // Torque Controller #define TORQUE_CONTROLLER_INTERVAL_US 100 #define TORQUE_CONTROLLER_INTERVAL_INV 10000 #define TORQUE_LIMIT 2.0f #define POSITION_RESOLUTION 8192 #define POSITION_ANTIALIAS 4096 #define ELECTRICAL_POSITION_TO_RAD 0.038349f // 2*pi/(8192/50) // Friction Model #define COULOMB_VELOCITY_CONST 9.0f #define STRIBECK_VELOCITY_CONST 0.5f #define COULOMB_FRICTION 0.058f #define STRIBECK_FRICTION 0.060f #define VISCOUS_FRICTION_COEF_FWD (float)2.65e-3 //2.16561e-3 #define VISCOUS_FRICTION_COEF_REV (float)2.55e-3 //2.16561e-3 #define ENABLE_DITHER 0 #define DITHER_FORCE 0.02f #define DITHER_TICKS 70 // Current Controller #define CURRENT_CONTROLLER_KP 1.0f #define CURRENT_CONTROLLER_KI 7500.0f #define CURRENT_CONTROLLER_I_LIMIT 0.0001f // Function-likes #define GET_POSITION() ((int)(spi.write(0xFFFF) & 0x1FFF)) #define GET_CURRENT_A() (-6.6f*(current_sensor_a.read() - current_sensor_a_offset)) #define GET_CURRENT_B() (-6.6f*(current_sensor_b.read() - current_sensor_b_offset)) #define LOWPASSIIR(v,i,w) v+=w*(i-v) #define SGN(x) (x > 0 ? 1 : (x < 0 ? -1 : 0)) #define ABSPOS() (position - position_ref + 8192*position_offset_count) // dont forget POSITION_RESOLUTION // Speed estimator #define SPEED_ESTIMATOR_FAST_GAIN 50 #define SPEED_ESTIMATOR_DEADBAND 1 #define SPEED_ESTIMATOR_FILTER 0.02f #define SAMPLE_TIME_US 100 #define SAMPLE_TIME_INVERSE_S 10000.0f // Current Controller Variables float current_sensor_a_offset = 0; float current_sensor_b_offset = 0; // Torque Controller Variables float torque = 0; float speed; float acceleration; int32_t position; int position_offset_count = 0; int position_ref; int dither_tick = 0; // Impedance controller variables float ZControl_K = 0; float ZControl_B = 0; float ZControl_I = 0; int ZControl_RefPos = 0; // IO Variables //USBHID hid(16,16); //HID_REPORT send_report; //HID_REPORT recv_report; DigitalIn user_btn(p23); SPI spi(NC, p6, p7); MODSERIAL pc(USBTX, USBRX); AnalogIn current_sensor_a(p15); AnalogIn current_sensor_b(p16); PwmOut driver_1a(p28); PwmOut driver_2a(p27); PwmOut driver_1b(p26); PwmOut driver_2b(p25); DigitalOut driver_enable_a(p34); DigitalOut driver_enable_b(p33); PwmOut driver_vref_ab(p29); DigitalOut info_led_1(LED1); DigitalOut info_led_2(LED2); DigitalOut info_led_3(LED3); DigitalOut info_led_4(LED4); // Ticker Variables Ticker torque_controller; Ticker hid_controller; // Function declarations void calibrate_current_sensor(); void calibrate_position(); void initialize_io(); void torque_control(); void initialiseer_prbs(); //void hid_control(); #endif