This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Status display for motor controller
#11
What ohm value is your poti? Nee another with 1k for these looong cables. The same with the one Wire sensors. Many on the same bus work better with 2k pullup resistor.

Holger
Reply
#12
I use 5k poties for the job. Seems to do it for now. My concern is the lifetime in this environment as I didn’t use a marine potentiometer.

Do you see a real world impact due to the improved ADC quality?
I would argue that measuring the current of a PWM signal has a huge set of challenges by itself. Most of them are nearly unsolvable due to the inductance of the driven motor. A couple bits will not change that. And since we only send data to PyPilot on request, most of the relevant data is lost anyways.
I don’t know, maybe I don’t see the complete picture. You have spent a lot more time on this than I have.
Reply
#13
I used 10k pot but these have 10,000 cycle rated life which is nothing.

You need long life pots with millions of cycles or magnetic sensors which is what I'm using now.
Reply
#14
Regarding sanity checking: You are right. Most of the stuff get’s sanity checked. I should take that back.
In my version, and I don’t remember if your’s does that same, a steering command still starts to be executed even if min or max is already reached. It stops immediately, but some of the motion is done. In my case, that means the hydraulic pump as well as the hydraulic cylinder runs against a wall and get’s slightly stuck. I can drive put of that, though, but it means an improperly tuned controller runs into the wall all the time.. I want to change that to not allow any motion into an already maxed out direction.
Reply
#15
(2020-02-13, 09:30 PM)McNugget Wrote: Regarding sanity checking: You are right. Most of the stuff get’s sanity checked. I should take that back.
In my version, and I don’t remember if your’s does that same, a steering command still starts to be executed even if min or max is already reached. It stops immediately, but some of the motion is done. In my case, that means the hydraulic pump as well as the hydraulic cylinder runs against a wall and get’s slightly stuck. I can drive put of that, though, but it means an improperly tuned controller runs into the wall all the time.. I want to change that to not allow any motion into an already maxed out direction.

Are you sure it does this?

You are using rudder feedback correct? In this case it must be calibrated and should stop before either rudder feedback or drive absolute rate is actually met so no stalling of the motor.

in process_packet()
Code:
if(value > 2000);
            // unused range, invalid!!!                                                          
            // ignored                                                                          
        else if(flags & (OVERTEMP_FAULT | OVERCURRENT_FAULT | BADVOLTAGE_FAULT));
            // no command because of overtemp or overcurrent or badvoltage                      
        else if((flags & (PORT_PIN_FAULT | MAX_RUDDER_FAULT)) && value > 1000)
            stop();
            // no forward command if port fault                                                  
        else if((flags & (STARBOARD_PIN_FAULT | MIN_RUDDER_FAULT)) && value < 1000)
            stop();
            // no starboard command if port fault                                                
        else {
            command_value = value;
            engage();
        }

If an incoming command arrives and there are end stops or rudder faults or other faults, it should not cause movement.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)