> From: Chris Albertson [mailto:albertson.ch...@gmail.com]
> On Mon, Jun 24, 2019 at 11:33 PM John Dammeyer
> <jo...@autoartisans.com>
> wrote:
> 
> > I have some CAN bus experience if you have any questions.
> > John Dammeyer
> 
> One thing I don't know is if one transceiver chip works better than
> another.   I can read the spec sheets but have no practical experience.
> I planned to use the MCP2551 in combination with the STM32
> microcontroler's
> built-in CAN controller.    But the TJA1050 seems like it will work too.

Cool project.  

The biggest difference between CAN transceivers out there is some are designed 
for 3.3V systems and others for 5V.  Originally it was 5V so that put CAN_H at 
2.5V and it went up to about 4.V while CAN_L was at 2.5V and dropped to about 
1.0V.

The 3V devices can still pull CAN_L down to 3V but of course can't pull CAN_H 
up any higher than about 3V.  That still makes a 'dominant' signal 2V compared 
to 0V for recessive.  Whereas the 5V devices have more like a 3V dominant 
voltage between signal pins.

Do remember, that CAN is a 3 wire system even though it appears to work with 
only two wires.  It's not truly differential like RS422 or RS485.  For 
differential the current actually changes direction through the termination 
resistors at each end of the bus.  With CAN there is no current flowing during 
the recessive bits and bus idle.    That's so you can have CSMA/CR  (Carrier 
Sense, Multiple Access with Collision Recovery)

And not using a common ground between all nodes means the likelihood of Common 
mode noise or even voltage drops make blow up your transceiver.  Can't stress 
that enough.

> 
> There are many low-cost MCP2515/MCP2551 breakout boars on eBay.   I plan
> to
> use them to prototype but then design a custom PCB for both
> Raspberry Pi and STM32.

I've used the MCP2510 and then MCP2515 in a lot of different projects.  Here's 
an example of bitwise arbitration using my CANRF which used 916.5MHz ON OFF 
KEYING for the bitwise arbitration.  The logic analyzer in this picture was 
connected to the 3 different wireless modules
http://www.autoartisans.com/canrf/images/rf-arb.jpg
This was a test board where the on board MCP2510 was replaced with a Microchip 
Beta Test version of the MCP2515.
http://www.autoartisans.com/canrf/images/MCP2515.JPG
which plugged into this PIC12 series processor module for the yard light 
protocol. 
http://www.autoartisans.com/canrf/images/RFPROJ1.JPG


> 
> This is a motion control system not unlike LinuxEMC.  Our design uses a Pi3
> (now Pi4) as the central motion planner then we have some number,
> perhaps
> as many as 20 STM32 connected by CAN Bus and then these connect to the
> motors.  We will use a mix of steppers, BLDC and PWM controlled DC motors
>  About 24 axis in all.   So We want to run CAN to distribute the data.

My other question, and where I've seen the most failures have to do with which 
High Level  Protocol (HLP)  you are using? 

Or do you plan to roll your own?  

If you plan to roll your own there is only one really serious issue to watch 
out for.  It's absolutely forbidden, with serious consequences if you do, to 
allow different devices to transmit identical CAN IDs onto the bus.
Even with this project:
http://www.autoartisans.com/rings/Barge1a.jpg
Where I rolled my own HLP, the messages transmitted were still unique with over 
150 nodes per each of 10 CAN channels.

I'd look at implementing a subset of CANopen since you can have up to 127 
devices which exceeds the physical drive capability of the bus.  The 
infrastructure for motor control is already in place so you could copy that but 
keep the overall system simple.
John

> 
> This is for a humanoid robot.  The first version models a a person in a
> wheelchair.  The hands will be able to do anything a person seated at a
> table could do.  We are using a pair of prothetic hands that are more
> commonly used for amputees but in this case they are attached to robot
> arms.   There are ten motors in the hand alone, one for each finger
> 
> Here is the overall application.  It is an X-prize contest.
> https://avatar.xprize.org/prizes/avatar
> 
> We do two levels of prototype.  The first with cheap and simple stepper
> motors.  Then later with more powerful BLDC motors running miniaturized
> variable speed transmissions.   A human shoulder has three degrees of
> freedom and needs three motors, six for two shoulders.    The challenge is
> to fit 6 motors and all those bearing in such a small space.   But the
> simple prototype comes first.    I just finished the the basic mechanical
> design and you can see it here https://a360.co/2N2ynIB
> The hand sed for prototype is here https://openbionicslabs.com   The arm
> that conects shoulder to hand comes next.   About 4 years of work remain
> for the team
> 
> If this looks like an interesting project let me know, there is room for
> more.
> 
> How is this related to LinuxCNC?    Obviously there are many parts to be
> made.
> 
> 
> 
> --
> 
> Chris Albertson
> Redondo Beach, California
> 
> _______________________________________________
> Emc-users mailing list
> Emc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-users



_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to