(2017-03-02, 01:54 PM)affinite Wrote: OK answered my own question ...
A bit of experimenting and I have my MCP3208 working in SPI/OP and can see the output in the SignalK diagnostic window.
Now to get my head around SignalK/NodeRed to display the result
If you haven't figured it out already this might help a little, its part of a node red flow I use to display engine temperatures. It uses to dashboard nodes to display - https://flows.nodered.org/node/node-red-dashboard
I put a delay node in as well otherwise there was too much data for the graph.
Hope this might be of use.
PS Ctrl-i opens the nodes import dialog box.
Code:
[{"id":"12d9eb57.4dee05","type":"websocket in","z":"a1ba0b6c.b93d98","name":"SignalK input","server":"58d1334a.a72ecc","client":"","x":75,"y":98,"wires":[["11b86291.f8905d"]]},{"id":"11b86291.f8905d","type":"json","z":"a1ba0b6c.b93d98","name":"","x":96,"y":208,"wires":[["7517c8ee.de2b48","dbc2f1fc.c6e78","bc5087ef.c78118"]]},{"id":"7517c8ee.de2b48","type":"jsonpath","z":"a1ba0b6c.b93d98","expression":"$.updates..values[?(@.path==\"propulsion.Eng.temperature\")]..value","split":true,"name":"EngTemp","x":264,"y":100,"wires":[["29d547b8.f04588"]]},{"id":"29d547b8.f04588","type":"delay","z":"a1ba0b6c.b93d98","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":408,"y":52,"wires":[["7e631a32.8bc014"]]},{"id":"7e631a32.8bc014","type":"function","z":"a1ba0b6c.b93d98","name":"Convert to deg C","func":"var numInput = Number(msg.payload);\nmsg.topic = \"Eng\";\nvar T = numInput-273.15;\nmsg.payload = T.toFixed(0);\nreturn msg;","outputs":1,"noerr":0,"x":592,"y":88,"wires":[["66a37c6d.494d34","d864e825.200108"]]},{"id":"d864e825.200108","type":"ui_chart","z":"a1ba0b6c.b93d98","name":"EngineGraph","group":"67dca234.faad9c","order":0,"width":"23","height":"7","label":"Engine temperature history","chartType":"line","legend":"false","xformat":"%H:%M:%S","interpolate":"linear","nodata":"","ymin":"","ymax":"","removeOlder":"4","removeOlderUnit":"3600","x":829,"y":73,"wires":[[],[]]},{"id":"66a37c6d.494d34","type":"ui_gauge","z":"a1ba0b6c.b93d98","name":"EngTempGauge","group":"8861c889.240108","order":1,"width":"3","height":"3","gtype":"gage","title":"Engine temperature","label":"Deg C","format":"{{value}}","min":0,"max":"120","colors":["#00b500","#e6e600","#ca3838"],"x":911,"y":203,"wires":[]},{"id":"58d1334a.a72ecc","type":"websocket-listener","z":"","path":"ws://localhost:3000/signalk/v1/stream","wholemsg":"false"},{"id":"67dca234.faad9c","type":"ui_group","z":"","name":"Engine/Alt/Exhaust temporature history","tab":"1d99b92f.cedb87","disp":true,"width":"23"},{"id":"8861c889.240108","type":"ui_group","z":"","name":"Temperature gauges","tab":"aeffa403.23f5f8","disp":true,"width":"19"},{"id":"1d99b92f.cedb87","type":"ui_tab","z":"","name":"Graphs","icon":"dashboard","order":2},{"id":"aeffa403.23f5f8","type":"ui_tab","z":"","name":"Gauges","icon":"dashboard","order":1}]
2017-03-08, 11:29 AM (This post was last modified: 2017-03-08, 12:30 PM by affinite.
Edit Reason: add dwgs
)
Thanks in part to PaddyB I now have my tank levels in NodeRed displaying wonderfully.
I do have a problem accurately measuring the input voltage to the MCP3008 ADC and wondered how others had dealt with this.
I am using a simple voltage divider with my 0-190 ohm resistive tank senders to send a measured voltage representing the tank level to the ADC. The problem is that this is susceptible to variations in the supply voltage which can cause inaccurate readings on the ADC.
The second problem is that at a supply voltage of 5v with a (lowest) resistance of 100 ohms each voltage divider is drawing around 50ma. I have 4 tank senders so Im drawing 200mA just for the senders.
Does anyone know a better way of sending the tank levels in a way that is more accurate and draws less current ? I assume Im talking about OpAmp circuits but I'm not capable of designing my own circuits so any help appreciated
Thanks
Steve
(2017-03-16, 05:21 PM)henker Wrote: Affinate, what sensors are you using? Do you have a spec on them.
Hi
Im using DS18B20 1 wire sensors (as specified for OpenPlotter) for temperature
For fuel I'm using a 190ohm resistive float sender by Wema. This was the original fuel sender.
For water etc I plan to use further WEMA senders like this one wema sender
Looks good.
Low current consumption 1.2mA !
I'd be interested to hear how you get on with it.
I notice that it says that it works in oil also. I presume that means it could be used to check the level in a diesel tank. The wire would have to be fixed to something to ensure that it was not swinging around in the tank as the boat moved.
Jodel
(2016-12-28, 11:47 AM)dreuf Wrote: How have you solved adding water and diesel level sensors to your Openplotter?
I want to use the original sensors in my tanks (0-180ohm)...
You can use SensESP and a ESP32 board. It's what I've done and it is working well. I just installed my first one with an external capacitive sensor on my holding tank. Software calculates tank.blackWater.0.currentLevel with a moving average, which helps with the voltage fluctuations. Connects to SignalK over Wifi, so no need to run long wires.
My next one will be for pressure sensors on my fuel filters and I think I'll add the water sensors to that one also, as that seems to be a simple voltage/no voltage scenario to deal with, resulting in sending a binary sentence to SK to trigger an alarm. Easy.