Loadwasher

From DIDEAS Wiki
Jump to: navigation, search

PF Users Navigation:

Edit

support pcb

connections to SC

  • depending on the specific PCA assembly, it is possible to use either one, or both the connections to the SC.
  • if both connections are made, no significant ECOs are needed to the SC, and power for the SC side of the PCA is provided from the SC without local (PCA) support circuitry.

battery dataport connection (1st cable)

  • requires a 5 position, 1.0mm cable, double ended. We can easily build this.
  • to have the loadwasher signal get to the ADCs, no (significant) mods are required to the SC - the load-washer signal is read via the batt-temp input. R102 / C73 would be changed to adjust the cut-off frequency, which is normally 160hz.
    • change C73 from 0.1uF to 1nF
    • remove R232 (10k pullup)
  • if the 2nd cable is not attached, then ~24V is provided to the SC side of the PCA from this cable and requires the battery measurement ECO
    • several regulators need to be populated on the SC side of the PCA

linear spring connection (2nd cable)

  • requires a 5 position, 0.8mm cable, double ended. (we should have some of these - 6" length)
  • this connection uses the SC 3.0V ref to power the SC side of the PCA
  • if not using battery dataport (1st) cable - significant SC ECOs are required to get the loadwasher signal to the ADCs:
    • remove R17
    • Remove R138
    • Change value of C95 from 0.1uF to 10nF
    • Jumper wire from TP72 to TP56
    • both the SC and the MC see the loadwasher signal

other connections

  • DB15? cable is connected to the charge amplifier
  • external 24V is required - this can be shared with other devices. it powers the charge amplifier and some PCA circuity.

assembly status

1

  • will build complete power supplies on page 2 of SCh.
  • used 200k instead of 100k for RA1, etc
  • replace 47 ohm in Vin path w/200 mA fuse

Kisler Contact Charge Amp

  • engineer@kistler.com
  • request command set.
  • Leon Fialkowski
  • Leon.Fialkowski@kistler.com
  • 716 213 5780

Robot Firmware

to enable charge amp over battery port to analog input

  • set dig out 1208 0
  • set dig out 1209 1
  • get an in 1009


special commands

  • 1710 - get SM parameters (in_param = 0 or 1)
  • 1711 - set table size
  • 1712 - read table (in_param = pos)
  • 1713 - write table
  • 1714 - read back EC table (in_param = pos)
  • 1715 - clear params 0:lifefix_init(), 1: lifefix_reset(), 2:lifefix_zero_EC_table()
  • 1716 - stop playback
  • 1717 - start playback
  • 1718 - pause playback
  • 1719 - set force mode (1=table, 2=dc)
  • 1720 - get trigger settings (b_enable, b_rising edge, motor position)
  • 1721 - config trigger (b_enable, b_rising edge, motor position, max_duration)
  • 1723 - force trigger
  • 1724 - get PID parameters (exp notation)
  • 1725 - set PID parameters (kp*10^exp, ki*10^exp, max_i*10^exp, exp)
  • 1726 - get parameters (calb const, vel_gain, torq_vel_gain - in exp format)
  • 1727 - set parameters (param#, value*10^exp, exp) - see list below
  • 1728 - task ISR get (0) and set rate (77 rate)
  • 1729 - zero loadwasher

config

  • LWGAIN : 1727 1 15 -4
  • FF : 1727 5 1 -2
  • PID : 1725 -12000 -2500 120000 -6
  • MAX CURRENT : 1727 6 4 0
  • DC TORQUE OFFSET : 1727 4 -5 -1 for 1 sec, then 1727 4 25 -1 for 1 sec

1710

  param[0] = lf_ctrl.data_length;
  param[1] = lf_ctrl.current_position;
  param[2] = lf_ctrl.b_running;
  param[3] = lf_ctrl.force_mode;

  param[4] = sensors.mc_temperature_sig;
  param[5] = lf_ctrl.lw_adc_offset;

  param[7] = round_float_eng(lf_ctrl.lw_force, &param[6]);
  param[9] = round_float_eng(lf_ctrl.desired_tbl_force, &param[8]);
  param[1] = round_float_eng(lf_ctrl.lw_force, &param[0]);
  param[3] = round_float_eng(lf_ctrl.pid_cmd, &param[2]);
  param[5] = round_float_eng(lf_ctrl.ff_cmd, &param[4]);
  param[7] = round_float_eng(lf_ctrl.motor_torque, &param[6]);
  param[9] = round_float_eng(lf_ctrl.desired_dc_force, &param[8]);

1724

  param[1] = round_float_eng(lf_pid.kp, &param[0]);
  param[3] = round_float_eng(lf_pid.ki, &param[2]);
  param[5] = round_float_eng(lf_pid.max_i_torque, &param[4]);
  param[7] = round_float_eng(lf_pid.i_err, &param[6]);
  param[9] = round_float_eng(lf_pid.pid_sum, &param[8]);

1726

  if (in_param == 0) 
  param[1] = round_float_eng(lf_ctrl.lw_calb_const, &param[0]);
  param[3] = round_float_eng(lf_ctrl.ff_vel_gain, &param[2]);
  param[5] = round_float_eng(lf_ctrl.ff_torq_vel_gain, &param[4]);
  param[7] = round_float_eng(lf_ctrl.desired_dc_force, &param[6]);
  param[9] = round_float_eng(lf_ctrl.ff_force_gain, &param[8]);
else
   param[0] = lf_ctrl.max_pos_motor_current * 10.0;  param[1] = -1;
   param[3] = round_float_eng(lf_ec.gain, &param[2]);

1727

switch(in_param) {
       case 1 :
	 lifefix_set_loadwash_gain(val);

       case 2 :
	 lifefix_set_ff_vel_gain(val);

       case 3 : 
	 lifefix_set_ff_torq_vel_gain(val);

       case 4 : 
	 lifefix_set_desired_dc_force(val);

       case 5 : 
	 lifefix_set_ff_force_gain(val);

       case 6 : 
	 lifefix_set_current_limit(val);
	 out_param = lifefix_get_current_limit(data->param);

       case 7 : 
	 lifefix_set_EC_gain(val);
	 out_param = lifefix_get_EC_gain(data->param);
       }

<math>Insert formula here</math>