hi there guys
i am hoping there is someone out there who can help me out with a project i am working on.I have a ship that has a 360 degree rotating propeller for steering the vessel ,the old controls for the system are obsolete so am looking to replace the controls .There is a demand encoder at the helm and a position feedback encoder on the propellers direction control leg .It has a port and starboard direction solenoid, to activate the hydraulic steering motor and follow up to the demand position.I have a working system using incremental encoders but it is flawed with problems when the system is powered down. I am now looking to use absolute encoders so if any position changes made when powered down ,will be corrected on power up …can anyone help with this problem ? i am very new to this and would appreciate any help i can get.
many thanks for any pointers
An encoder isn’t going to provide an absolute position. You need something like a potentiometer for that. An alternative would be to have an initialization routine that moves the propeller to a known position (usually determined by moving until a sensor is triggered), then move to the desired position.
I don’t know if you have solved your problem by now but I think you are on the right track if you have reliable absolute encoders (as opposed to incremental / quadrature encoders). These should certainly report a reliable position on power up assuming there is a good linkage between the encoder shafts and the respective demand and feedback mechanisms, and if all parallel connections from the encoders remain intact.
Some encoders may return a Gray code result not a straight forward binary count but the code to convert from Gray to binary is quite straightforward (Google).
If the encoders have the same resolution (say 8 bits or more) then my approach would be to read the inputs into Arduino and convert to a byte ( or word as appropriate) for each of your encoders using the bit to byte block or similar. It should be just a matter of comparing the two values to decide in which direction to move with the steering motor. I am not clear whether this is just a simple on /off control via the solenoids or whether you have some control of the speed / rate of adjustment. If you can control the rate I suggest you would make it proportional to the magnitude of the position error with some gain factor. That is, the bigger the error the faster the adjustment takes place.
Depending on the accuracy you want to achieve and any deadband in the coupling / mechanics this should get you a basic system.
You may want some error checking logic to validate that the encoder signals are always in the expected range etc and that you can detect movement of the feedback encoder when the motor runs.
I hope this is clear, please contact me if I can help further.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.