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
Solve ST2000 fluxgate compass problem using PyPilot?
#1
Hi folks,

First time poster here. Great to find this community.

I'm looking for some advice regarding my ST2000 and the poor performance of the device going downwind with substantial quartering seas on the stern. What I observed is that as the wave begins to overtake the sailboat and lift the stern, the AP initially steers in the wrong direction, sometimes going all the way over, even though the boat heading was not yet affected much. Then, as the wave starts to yaw the stern, now the AP reacts by pushing the tiller over in the other direction (the correct direction). Under the right (wrong?) conditions the boat sometimes will then round up into the wind, which of course is not good. My suspicion is that the compass is being adversely affected by the pitch of the boat (stern getting lifted by the wave) so that it thinks there is a change in heading when actually there is none.

To address this, what I think I might like to do, is replace the compass with an external IMU/controller, possibly using the PyPilot.

The questions I have been so far unable to answer definitively:

Can I use the ST2000 as just a dumb actuator, and control it from a device like the TinyPilot?

  https://pypilot.org/store/index.php?rt=p...ry&path=71

Can the TinyPilot control the ST2000 such that heading information is taken from the IMU and used to steer the boat?

Do the ST2000 and PyPilot support the necessary NMEA 0183 sentences? What sentences would be used for this purpose?

Thanks for any comment.
Reply
#2
(2020-10-15, 04:11 PM)madhatter101 Wrote: Hi folks,

First time poster here. Great to find this community.

I'm looking for some advice regarding my ST2000 and the poor performance of the device going downwind with substantial quartering seas on the stern. What I observed is that as the wave begins to overtake the sailboat and lift the stern, the AP initially steers in the wrong direction, sometimes going all the way over, even though the boat heading was not yet affected much. Then, as the wave starts to yaw the stern, now the AP reacts by pushing the tiller over in the other direction (the correct direction). Under the right (wrong?) conditions the boat sometimes will then round up into the wind, which of course is not good. My suspicion is that the compass is being adversely affected by the pitch of the boat (stern getting lifted by the wave) so that it thinks there is a change in heading when actually there is none.

To address this, what I think I might like to do, is replace the compass with an external IMU/controller, possibly using the PyPilot.

The questions I have been so far unable to answer definitively:

Can I use the ST2000 as just a dumb actuator, and control it from a device like the TinyPilot?

  https://pypilot.org/store/index.php?rt=p...ry&path=71

Can the TinyPilot control the ST2000 such that heading information is taken from the IMU and used to steer the boat?

Do the ST2000 and PyPilot support the necessary NMEA 0183 sentences? What sentences would be used for this purpose?

Thanks for any comment.

I am also going to do this.

The  ST2000 Motor will need to be wired to the Pypilot Controller. You will be able to use 2 of the wires in the raymarine wire harness, connector, and plug, the rest will be unused. Unless you want to use a limit switch.

I think the Pypilot supports NMEA 0183 for wind and waypoint data.
Reply
#3
You cannot reuse the electronics of the st2000 unless you are really clever and can hack the circuit board.

The simplest way is to connect the dc motor directly to the pypilot motor controller.
Reply
#4
(2020-10-20, 04:03 PM)seandepagnier Wrote: You cannot reuse the electronics of the st2000 unless you are really clever and can hack the circuit board.

The simplest way is to connect the dc motor directly to the pypilot motor controller.

@madhatter101, if you are looking to do everything yourself, you might be interested in seeing my bare bones build.  I drive a Autohelm 3000 motor (not ST3000).

  https://forum.openmarine.net/showthread.php?tid=2228

If you're looking to get something proven and supported, @seandepagnier's units might suit you.
Reply
#5
There is a joystick mode in att least some of the autohelm pilots.
I have not found the seatalk command for this.

If the command is found you could theoretically driver the autohelm in joystick mode from THE pypilot.

This would greatly increase the user base as No hardware modifikation is necessary for old working autohelm systems.
Reply
#6
sure find a way to translate the commands and anything can control it.
Reply
#7
Thanks for all the replies.

Personally, I'm reluctant to modify a working ST2000 AP, which functions reasonably well and is very useful as is. So what I am looking to do is improve it's performance without any hardware modification to the AP itself.

On perusing the Seatalk protocol (http://www.thomasknauf.de/rap/seatalk2.htm), I see:

89 U2 VW XY 2Z Compass heading sent by ST40 compass instrument
(it is read as a compass heading by the ST1000(+) or ST2000(+) autopilot)
Compass heading in degrees:
The two lower bits of U * 90 +
the six lower bits of VW * 2 +
the two higher bits of U / 2 =
(U & 0x3) * 90 + (VW & 0x3F) * 2 + (U & 0xC) / 8
Locked stear reference (only send by the ST40 compass):
The two higher bits of V * 90 + XY / 2
Z & 0x2 = 0 : St40 in Standby mode
Z & 0x2 = 2 : St40 in Locked stear mode
Corresponding NMEA sentences: HDM, HDG, HDT, VHW

So my question shifts somewhat. Can PyPilot send Seatalk compass heading messages derived from the IMU?
Reply
#8
what you are proposing would not make much sense to me, because using only compass heading will not steer very well. The tiller pilots like st1000 or st2000 will use about half as much power and steer better if you use only the motor with pypilot electronics.

Most of the needed corrections are based on the gyro, and autopilots that don't have this sensor are differentiating it from the compass which gives a poor result. I'm not sure how you will get this data to the st2000 or if it can even accept it, and although the compass HDM output is based on both compass and gyros, there is data loss from not having the gyro reading.

pypilot does output HDM, but not at the full rate it normally runs at since it's intended for display purposes. There is a lag of up to a few hundred milliseconds which will degrade performance slightly as well, especially on a small or light boat.

So doing this you would basically just be using an st2000 as before with , only getting the compass heading from pypilot which may be an improvement but you would still be using an st2000 for the control loops.

I would recommend installing a switch on the motor so you can try both ways hardware, or just leave the st2000 alone and build another actuator for pypilot, but in any case if you get something working let us know, but please don't claim you are using pypilot for anything more than compass input.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)