Difference between revisions of "Sail-by-wire"
(→aim) |
(→ADC) |
||
(35 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== aim == | == aim == | ||
− | retrofit engine | + | 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: | ||
− | ** | + | ** 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 | + | *** 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 == | ||
− | === | + | === 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 === | + | |
− | [...] = | + | === protocol layer === |
+ | [...] = 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 | ||
− | * | + | * engine |
** control | ** control | ||
*** NONE | *** NONE | ||
Line 94: | Line 123: | ||
==== Sean's serial ==== | ==== Sean's serial ==== | ||
+ | (just a quick shot, details pending ...) | ||
* rudder | * rudder | ||
− | ** control | + | ** 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 == | ||
+ | * 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
Contents
aim
retrofit propulsion (engine, gearbox) and steering (rudder) with controller based on Sean's work
- https://pypilot.org/schematics/
- https://github.com/pypilot/pypilot/tree/master/arduino/motor
- https://hackaday.io/project/168592-opencpn-chart-plotter-w-autopilot-and-waypoints
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
- angular:
- 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
- autopilot
- pyPilot
- Raymarine EV-2 https://www.raymarine.de/view/index-id=7686.html
- Garmin Steer-by-wire
- remote controller
- Android, iOS, Windows, Linux, ...
- buttons, joysticks, levers, ...
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
- control
- 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
- ...
- /vessels/<RegExp>/steering/autopilot/state
- control
- gear
- control
- /vessels/<RegExp>/propulsion/<RegExp>/transmission/gear[Target]
- feedback
- /vessels/<RegExp>/propulsion/<RegExp>/transmission/gear
- /vessels/<RegExp>/propulsion/<RegExp>/transmission/[controllerState]
- ...
- control
- 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]
- ...
- control
nmea2000
- rudder
- control
- pgn 127237 Heading/Track Control
- feedback
- pgn 127245 Rudder
- control
- gear
- control
- NONE
- feedback
- pgn 127493 Transmission Parameters, Dynamic
- control
- engine
- control
- NONE
- feedback
- pgn 127488 Engine Parameters, Rapid Update
- pgn 127489 Engine Parameters, Dynamic
- control
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
- 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/