I need to create a closed loop brake controller that will supply very accurately and precisely a voltage output from 0-10VDC.
I am reading (analog input) from a load cell. I need to calibrate that reading so I can equate it to an actual load and save the table as a reference. The load cell will read from zero to 150 pounds.
I also have an optical encoder with index (quadrature output) that I'm reading as I rotate an arm. The arm can be rotated CW or CCW.
My goal is to be able to set the brake (the controller for the break works on 0-10VDC) to adjust the amount of torque the brake outputs. I want to be able to send the controller a table of 360 degrees CW and 360 degrees CCW the corresponding desired load cell reading for each degree (and naturally between each degree as the encoder is much more accurate than measuring each degree - currently 1000 resolution).
A key factor is that we need to take into consideration the direction the person is trying to rotate the shaft because if the torque in one direction is high the user might not be able to overcome that torque when changing directions. This means there won't be any encoder ticks so we need to change the resistance because we know from the load cell that the person has tried going in the other direction.
Lastly, we need to take into consideration that, when the torque is very low the load cell will have some "bounce" which will make the controller think the user has tried to change direction and apply the desired voltage for the other direction at that location when the user has not actually changed direction. This will happen only at low torques. We need to add a "delta" of the amount of fluctuation at this low torque and take into consideration both position and load cell reading to do this.
What I want to do is give the controller the positional torque information for the 360 degrees CCW and CW and then let the controller do its magic until we send it new values.
I will also want to recoder the data of position, set load, actual load, direction of rotation as the arm is rotated.
Can anyone help make this happen using an Arduino? I'll make my user interface in Visual Studio and am most familiar with Visual Basic.