Difference between revisions of "Sail-by-wire"

From wiki.bastelbude.grade.de
Jump to: navigation, search
(protocol)
(ADC)
 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== aim ==
 
== aim ==
retrofit engine (propulsion), gearbox (gear) and steering (rudder) with controller based on Sean's work  
+
retrofit propulsion (engine, gearbox) and steering (rudder) with controller based on Sean's work  
 
* https://pypilot.org/schematics/
 
* https://pypilot.org/schematics/
 
* https://github.com/pypilot/pypilot/tree/master/arduino/motor
 
* https://github.com/pypilot/pypilot/tree/master/arduino/motor
 +
* https://hackaday.io/project/168592-opencpn-chart-plotter-w-autopilot-and-waypoints
 
=== hardware ===
 
=== hardware ===
 
* ESP32 fully featured Microcontroller (< EUR 10,-)
 
* ESP32 fully featured Microcontroller (< EUR 10,-)
 
* IBT-2 BTS7960 based Double-H-Bridge (< EUR 10,-)
 
* IBT-2 BTS7960 based Double-H-Bridge (< EUR 10,-)
 
* sensors:
 
* sensors:
** linear pot
+
** angular:
*** 10k Ohm as suggested by Sean
+
*** 10k Ohm linear pot (as suggested by Sean)
 
*** off-the-shelf rudder angle sensor 0-190 Ohm
 
*** off-the-shelf rudder angle sensor 0-190 Ohm
** end switches
+
*** rotary encoder
 +
** position switches:
 +
*** end stop
 +
*** forward/ neutral / reverse
 
** current sense:
 
** current sense:
 
*** BTS7960 feature
 
*** BTS7960 feature
 
** over temprature:
 
** over temprature:
 
*** BTS7960 feature
 
*** BTS7960 feature
 +
** voltage sense
 
* power-drive:
 
* power-drive:
 
** windshield wiper motor
 
** windshield wiper motor
 
** hydraulic pump
 
** hydraulic pump
 +
** linear drive
 
** ...
 
** ...
  
Line 33: Line 39:
  
 
== communication ==
 
== communication ==
=== conceptual layer ===
+
=== channels ===
 
remote control via
 
remote control via
 
* autopilot
 
* autopilot
Line 43: Line 49:
 
** buttons, joysticks, levers, ...
 
** buttons, joysticks, levers, ...
  
=== physical ===
+
=== physical layer ===
 +
* on-device via web-server
 
* wifi
 
* wifi
 
* ethernet
 
* ethernet
Line 54: Line 61:
 
* infrared
 
* infrared
 
* radio 10kHz
 
* radio 10kHz
 +
 
=== protocol layer ===
 
=== protocol layer ===
[...] = porposed feature
+
[...] = proposed feature
 
==== signalK ====
 
==== signalK ====
 
* rudder
 
* rudder
Line 62: Line 70:
 
** feedback
 
** feedback
 
*** /vessels/<RegExp>/steering/rudderAngle
 
*** /vessels/<RegExp>/steering/rudderAngle
 +
* autopilot
 +
** control
 +
*** /vessels/<RegExp>/steering/autopilot/target/windAngleApparent
 +
*** /vessels/<RegExp>/steering/autopilot/target/headingTrue
 +
*** /vessels/<RegExp>/steering/autopilot/target/headingMagnetic
 +
** feedback
 +
*** /vessels/<RegExp>/steering/autopilot/state
 +
**** [overTemp]
 +
**** [overCurrent]
 +
**** [underVoltage]
 +
**** ....
 +
*** /vessels/<RegExp>/steering/autopilot/mode
 +
*** /vessels/<RegExp>/steering/autopilot/deadZone
 +
*** /vessels/<RegExp>/steering/autopilot/backlash
 +
*** /vessels/<RegExp>/steering/autopilot/gain
 +
*** /vessels/<RegExp>/steering/autopilot/maxDriveCurrent
 +
*** ...
 
* gear
 
* gear
 
** control
 
** control
Line 67: Line 92:
 
** feedback
 
** feedback
 
*** /vessels/<RegExp>/propulsion/<RegExp>/transmission/gear
 
*** /vessels/<RegExp>/propulsion/<RegExp>/transmission/gear
* propulsion
+
*** /vessels/<RegExp>/propulsion/<RegExp>/transmission/[controllerState]
 +
**** ...
 +
* engine
 
** control
 
** control
 
*** /vessels/<RegExp>/propulsion/<RegExp>/revolutions[Target]
 
*** /vessels/<RegExp>/propulsion/<RegExp>/revolutions[Target]
Line 74: Line 101:
 
*** /vessels/<RegExp>/propulsion/<RegExp>/revolutions
 
*** /vessels/<RegExp>/propulsion/<RegExp>/revolutions
 
*** /vessels/<RegExp>/propulsion/<RegExp>/engineLoad
 
*** /vessels/<RegExp>/propulsion/<RegExp>/engineLoad
 +
*** /vessels/<RegExp>/propulsion/<RegExp>/[controllerState]
 +
**** ...
  
 
==== nmea2000 ====  
 
==== nmea2000 ====  
Line 86: Line 115:
 
** feedback
 
** feedback
 
*** pgn 127493 Transmission Parameters, Dynamic
 
*** pgn 127493 Transmission Parameters, Dynamic
* propulsion
+
* engine
 
** control
 
** control
 
*** NONE
 
*** NONE
Line 96: Line 125:
 
(just a quick shot, details pending ...)
 
(just a quick shot, details pending ...)
 
* rudder
 
* rudder
** control
+
** rudder_angle_sense
*** ...
+
** port_endstop_pin
** feedback
+
** starboard_endstop_pin
*** rudder_angle_sense
+
** controller_temperature
*** port_endstop_pin
+
** motor_temperature
*** starboard_endstop_pin
+
** voltage_sense
*** controller_temperature
+
** shunt_sense_pin
*** motor_temperature
+
** low_current_pin
*** voltage_sense
+
** clutch_pin
*** shunt_sense_pin
+
** led_pin
*** low_current_pin
+
** pwm_style_pin
*** clutch_pin
+
** ...
*** led_pin
+
 
*** pwm_style_pin
+
== roadmap ==
*** ...
+
=== angular measurement ===
 +
* 3-wire 10k Ohm linear pot / 2-wire 190 Ohm stock rudder-angle-sensor
 +
==== schematics ====
 +
* ...
 +
==== code ====
 +
* ...
 +
=== position switch readout ===
 +
* endstops / forward / neutral / reverse
 +
==== schematics ====
 +
* ...
 +
==== code ====
 +
* ...
 +
 
 +
=== battery voltage measurement ===
 +
* 12V/ 24V
 +
==== schematics ====
 +
* ...
 +
==== code ====
 +
* ...
 +
=== BTS7960 fault reading ===
 +
* ...
 +
==== schematics ====
 +
* ...
 +
==== code ====
 +
* ...
 +
=== IBT-2 PWM control ===
 +
* ...
 +
==== schematics ====
 +
* ...
 +
==== code ====
 +
* ...
 +
=== ESP32 web-interface ===
 +
* gauges
 +
* control-buttons
 +
==== code ====
 +
* ...
 +
 
 +
== discussion ==
 +
* https://www.segeln-forum.de/board194-boot-technik/board35-elektrik-und-elektronik/board195-open-boat-projects-org/75477-sail-by-wire-esp32-und-ibt-2/ (german)
 +
* https://signalk-dev.slack.com/archives/C02EU366Y/p1586759016008500 (english)
 +
* https://www.facebook.com/groups/1666364153609573/permalink/2634203136825665/ (english)
 +
* http://forum.openmarine.net/showthread.php?tid=2508 (english)
 +
 
 +
== see also ==
 +
=== IBT-2 ===
 +
* https://github.com/custom-build-robots/Motor-Driver-BTS7960B-H-Bridge (Raspi)
 +
* https://electronics.stackexchange.com/questions/458722/how-to-get-right-voltage-output-with-bts7960b-h-bridge (esp32)
 +
* http://wiki.ardumower.de/index.php?title=Ardumower_Gasoline (Arduino)
 +
* http://www.hessmer.org/blog/2013/12/28/ibt-2-h-bridge-with-arduino/ (Arduino)
 +
* https://forum.allaboutcircuits.com/threads/how-to-connect-h-bridge-for-its-protection-features.141724/ (current sense)
 +
* https://www.mouser.de/ProductDetail/Infineon-Technologies/BTS7960B?qs=wK%252BoHS4yu57Y%2Fa%252Bbuozvew%3D%3D
 +
 
 +
=== ADC ===
 +
* https://www.arduinoforum.de/arduino-Thread-Messen-der-eigenen-Betriebsspannung-mit-dem-Arduino
 +
* https://esp32.com/viewtopic.php?f=2&t=4354
 +
* https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/adc.html
 +
* https://bitbucket.org/Blackneron/esp32_adc/src/master/
 +
 
 +
=== protocol ===
 +
* http://forum.openmarine.net/showthread.php?tid=2265&pid=12945
 +
* https://signalk.org/specification/1.5.0/doc/request_response.html
 +
* http://signalk.org/specification/1.5.0/doc/put.html
 +
* https://signalk.org/specification/1.5.0/doc/vesselsBranch.html
 +
* https://signalk.org/2020/12/18/sensesp-1.html
  
 
[[category:Projekte]]
 
[[category:Projekte]]

Latest revision as of 09:28, 3 January 2021

aim

retrofit propulsion (engine, gearbox) and steering (rudder) with controller based on Sean's work

hardware

  • ESP32 fully featured Microcontroller (< EUR 10,-)
  • IBT-2 BTS7960 based Double-H-Bridge (< EUR 10,-)
  • sensors:
    • angular:
      • 10k Ohm linear pot (as suggested by Sean)
      • off-the-shelf rudder angle sensor 0-190 Ohm
      • rotary encoder
    • position switches:
      • end stop
      • forward/ neutral / reverse
    • current sense:
      • BTS7960 feature
    • over temprature:
      • BTS7960 feature
    • voltage sense
  • power-drive:
    • windshield wiper motor
    • hydraulic pump
    • linear drive
    • ...

commercial products

  • ZF Pod Drives
    • DeviceNet ?
  • Volvo† IPS und Volvo Aquamatic
    • J1939 ?
  • Teleflex Optimus 360 Systems
    • DeviceNet ?
  • Yanmar VC10 und JC10 (Joystick) Control Systeme)
    • DebiceNet ?

toDo

  • explore communication protocols

communication

channels

remote control via

physical layer

  • on-device via web-server
  • wifi
  • ethernet
  • can-bus
    • nmea2000
    • ...
  • serial
    • Sean's pyPilot
  • bluetooth
  • infrared
  • radio 10kHz

protocol layer

[...] = proposed feature

signalK

  • rudder
    • control
      • /vessels/<RegExp>/steering/rudderAngleTarget
    • feedback
      • /vessels/<RegExp>/steering/rudderAngle
  • autopilot
    • control
      • /vessels/<RegExp>/steering/autopilot/target/windAngleApparent
      • /vessels/<RegExp>/steering/autopilot/target/headingTrue
      • /vessels/<RegExp>/steering/autopilot/target/headingMagnetic
    • feedback
      • /vessels/<RegExp>/steering/autopilot/state
        • [overTemp]
        • [overCurrent]
        • [underVoltage]
        • ....
      • /vessels/<RegExp>/steering/autopilot/mode
      • /vessels/<RegExp>/steering/autopilot/deadZone
      • /vessels/<RegExp>/steering/autopilot/backlash
      • /vessels/<RegExp>/steering/autopilot/gain
      • /vessels/<RegExp>/steering/autopilot/maxDriveCurrent
      • ...
  • gear
    • control
      • /vessels/<RegExp>/propulsion/<RegExp>/transmission/gear[Target]
    • feedback
      • /vessels/<RegExp>/propulsion/<RegExp>/transmission/gear
      • /vessels/<RegExp>/propulsion/<RegExp>/transmission/[controllerState]
        • ...
  • engine
    • control
      • /vessels/<RegExp>/propulsion/<RegExp>/revolutions[Target]
      • /vessels/<RegExp>/propulsion/<RegExp>/engineLoad[Target]
    • feedback
      • /vessels/<RegExp>/propulsion/<RegExp>/revolutions
      • /vessels/<RegExp>/propulsion/<RegExp>/engineLoad
      • /vessels/<RegExp>/propulsion/<RegExp>/[controllerState]
        • ...

nmea2000

  • rudder
    • control
      • pgn 127237 Heading/Track Control
    • feedback
      • pgn 127245 Rudder
  • gear
    • control
      • NONE
    • feedback
      • pgn 127493 Transmission Parameters, Dynamic
  • engine
    • control
      • NONE
    • feedback
      • pgn 127488 Engine Parameters, Rapid Update
      • pgn 127489 Engine Parameters, Dynamic

Sean's serial

(just a quick shot, details pending ...)

  • rudder
    • rudder_angle_sense
    • port_endstop_pin
    • starboard_endstop_pin
    • controller_temperature
    • motor_temperature
    • voltage_sense
    • shunt_sense_pin
    • low_current_pin
    • clutch_pin
    • led_pin
    • pwm_style_pin
    • ...

roadmap

angular measurement

  • 3-wire 10k Ohm linear pot / 2-wire 190 Ohm stock rudder-angle-sensor

schematics

  • ...

code

  • ...

position switch readout

  • endstops / forward / neutral / reverse

schematics

  • ...

code

  • ...

battery voltage measurement

  • 12V/ 24V

schematics

  • ...

code

  • ...

BTS7960 fault reading

  • ...

schematics

  • ...

code

  • ...

IBT-2 PWM control

  • ...

schematics

  • ...

code

  • ...

ESP32 web-interface

  • gauges
  • control-buttons

code

  • ...

discussion

see also

IBT-2

ADC

protocol