Do you think that my pre-use check is not enough,
that I should actually range check every analog read?
Or even break out of the averaging as soon as one unreasonable value is read?
I wasn't aware of this convention.Among PerfectScript writers, preferred form is to write vVariableName
Notation ExampleStandard C / GNU notation mouse_weightHungarian notation iMouseWeightCamel case (or lower Camel case) mouseWeightPascal case (or upper Camel case) MouseWeightAll capitals case MOUSE_WEIGHT
Which (for the new building) has been in the news of late. Was it your stuff that got hacked?
If I discover that I can't explain it, then I know that I'm probably not doing it right.
It combines on one board everything that I have on 3 (MCU + CAN + DC-DC converter),
Does nobody know of an existing simple, well-tested protocol for those applications?
My messages contain at most 4 bytes of data and the other space is used for the bit-wise complements of these.
The board is 1.950 x 1.950 inch², just under 5x5cm².
- The need of a higher level CAN protocol: we all conclude that none of the well-known protocols fits our needs. ... I have difficulties to imagine that no-such protocol exists out there.
- Robs clear example of Arduino analogRead() tells me, that, for a finalised product with serious security constraints, we need to get rid of Arduino software, and do a more secure reimplementation of a subset. But for prototypes and demonstrators, the Arduino approach stays still very attractive. If it was for driving my-self in a wheel-chair, I would probably stay forever with Arduino libraries, in an approach close to the one of John Williamson "wheelchairdriver.com" (and rely just on some amount of testing).
- The appealing idea of a low cost mini "inertial navigation unit" is probably good for outdoor use with sometimes slipping wheels. But inside, you can not rely on the compass sensor used in conjuction with the gyros. Anyway, more different sensors gives better chance to detect abnormal, potentially dangerous situations (as once again slipping wheels).
- The programming through the CAN-bus based on Yellowsky's modification of Fabian Greifs work is coming soon. ..: Yellowsky transformed parts of Fabian's CAN debugger firmware in a simple Arduino sketch that allows us to use as interface between the host PC and the CAN bus : standard Arduinos with CAN shield, your boards or the CANinterfacer. This does not give the full-speed CAN debugging as Fabian's CAN debugger, but it's sufficient for programming devices on the CAN bus.
http://www.ardweenet.com/After all that just a few weeks ago I decided to use CAN as the base level so most of my previous work is out the window I still prefer an RR over a bus but truth is CAN must be very reliable given it's used in vehicles so I'll get over that.So having decided on CAN, and given that the SAM3X has two CAN controllers, it was a natural thing to design a Due-like board to act as the "master" and that's where I am at now, distracted yet again from my network design
NOTE: One particularly important function required right now is to cast a critical eye over the network software design. I have a fairly large document that describes this that I can send to any experienced programmers with an interest, even better if you have this sort of networking experience, IE RS-485 based control networks.NOTE: One particularly important function required right now is to cast a critical eye over the network software design. I have a fairly large document that describes this that I can send to any experienced programmers with an interest, even better if you have this sort of networking experience, IE RS-485 based control networks.
How are you handling power for the (multi-node) system?
, hmmm good point.While it's true I retired 14 years ago at the tender age of 45 I have since learned to appreciate what people mean when they say "I don't know how I found the time to work".I have 25 acres of land to clear of grass that in places is as tall as me. I'm cutting a series of walking tracks around my land which involves a lot of digging and track hardening with logs, I reckon I have 3-4ks of track to make and I've done maybe 400m. Yesterday I chain-sawed 3 fallen trees and moved the logs to my log pile. I'm designing a house made of shipping containers plus landscaping around our existing containers, installing an eco loo in one container and building an office/workshop in the other plus a roof over the two and installing solar panels on top of one.I'm doing some contract circuit and PCB design work for a Brazilian company and likewise for a Russian company, plus designing a Due-like CAN controller board and a monitoring-and-control network for personal use but also hopefully for release as an open source project. I also do a lot of nature photography and until recently wrote photography articles for magazines.Then of course I have to see to my home brew (where it's entirely my responsibility to control production, distribution and consumption), maintain my 6x6 army truck/home and occasionally drive said truck to a new location when we get bored with the view in our current location.After all that I need time to chill out, wind down, watch the wallabies feeding outside my window, listen to music and generally contemplate my life and/or navel.I tell you, retirement ain't what it's cracked up to be.______Rob
iyiyi this thread must get the gold medal for long posts, here's another one.
Not one bad reading, but don't add the bad one to the average, maybe count the bad ones and abort if you get more than 3, if it comes good assume it was noise and start averaging again but the bad readings did not get through.
As you say you do test later but if you were happily cruising at 500 and a wire breaks you will ramp up to 4500 in no time and the current code will think that is OK, it will reset to 2500 but that's still 5x faster than the user expected. By the time your daughter responds she could be down the stairs.
That's a good thing for reliability, connectors are always a weak point.
For most of that time the topology has been async serial over a redundant ring because with an RR you can cut the cable and it has almost no affect on the network traffic.
The CAN frame has a CRC and it is very robust, I think you are wasting half your payload here. With the full 8 bytes you can represent all numeric data types up to float.
There is that TSR 1-2450 switching DC/DC converter on board (6.5 - 36 V input, same as used by Rob on his board). There is no fuse on board, the converter can handle shorts.
It makes me question our perhaps too simple network topology:- How do today's commercial wheelchairs do it? I think they use CAN, don't they? Do they use double CAN cabling? Do they even use ring topology?
My question was too vague. I am using a Recom switching converter because it, or similar, let me use a single push button, few extra components, simple programming and no extra wiring to control power and/or sleep state for the entire network. How are you controlling power across the net? (Aside from this remaining question, I'm handling power in the same way you do.)
Nodes that are critical have two connectors, and if put at the end of an arm must rely on software to shut down the net if there's a fault; all functioning nodes repeatedly send a "here I am" message, and if one doesn't arrive the chair won't start or shuts down.
What do you mean by "controlling"?
What is the second connector for ? ...a separate CAN-bus? ...or just an electrically parallel connector to easy daisy-chained cabling of the single bus ?
I wanted the pushbutton to do three things:(1) turn power ON if it is OFF(2) turn power OFF, with an orderly shutdown of the CAN network, if it is ON and the system is AWAKE(3) interrupt SLEEP if the system is sleeping
For the wheelchair CAN bus, I understand that you should be able to wake up other nodes over the CAN network too. For the moment, I do not understand how you achieve this. Isn't there a need for an extra wire in parallel with the CAN bus, a wake up wire? And if we need that wire anyway, why not having just one central power switch, close to the battery?
(5) To turn the system off rather than just letting it go to sleep, the push button going low tells MASTER to (1) zero Roboteq output, (2) tell AUX to open the relay that powers the Roboteq MCU, (3) put non-MASTER nodes to sleep, (4) pulls down the pin connected to the DC-DC converter control pin.
... and how can the driver switch on again his wheelchair?
How do today's commercial wheelchairs do it? I think they use CAN, don't they? Do they use double CAN cabling? Do they even use ring topology?
I'm interested. Looks like there is a lot to learn from in there.
Perhaps abort when bad instances >= Damping/10.
Imagine if that happened while crossing an intersection.
If a mode goes down, for whatever reason, I want the chair to STOP.
(1) the CRC field is used only to decide whether to send an ack and is not passed into the message buffer,
(2) when the transmitting node gets an ack, it only knows that SOME node has gotten an intact message, not that the INTENDED node has gotten an intact message.