Go Down

Topic: CAN/CANopen (Read 9924 times) previous topic - next topic


Hello all..

Ok, I'm starting a project to test some devices that use either CAN or CANopen technologies.

These devices are used in the medical field to operate tables or parts of a X-Ray arm for movement.

It has switches and leds.

I have broken down the connections of the plug to show power, CanH and CanL with some other items.

I have the Mega 2560 and know I would need a interface of some type.

I know I will need to step thru speeds and watch for data has a button or switch is activated.  I will worry about the LED's later.

I'm reading on CAN bus technology now to understand how that functions.

I hope to create a screen showing which switch is active when press.

Thank you for your help..



Thank you for your help..

You don't ask a question, so maybe it's a help for you to point you to a shield that handles the hardware layer:


Devices intended for use in medical environments have EXTREMELY stringent
safety requirements, and are closely regulated by governments. If I were you,
I'd look into this before proceeding much further.


oric_dan(333) is correct. If these devices are not "patient connected" you will have far less safety requirements than if they are. In either case you will have to probably deal with testing agencies ( which are expensive ) before you can produce a product for use in a medical facility.


Stay out of this.  Medical devices should be:

  • designed by people who are skilled in the art,

  • extensively tested, and

  • listed for the purpose.

My take is that you can't accomplish any of these.  Even if you're not controlling the x-ray beam itself, you're still moving things around that might be in contact with or close to a patient.  Everyone who's tried to control something of that size will tell you that there's a real possibility that the devices, and their movement, will get away from you, and be out of control. The result would be a patient bashed in the head with a c-arm, or dumped onto the floor.  Both are bad.

Maybe you have some surplus junk that you intend to use in a low-budget remake of "Frankenstein."  If that's the case, have fun.  But, if you ever want this gizmo to operate in the presence of a live patient, stop thinking about it.


Ok, I need to clarify my project.

My company is in the medical field. We refurbish C-arms and other items in the field.

I have designed a test system for the TSO's used on some of the CT/C-arms in the industry.  The problem is, to test the TSO, you need a system.

We have a system to test the older TSO's, but, it takes 4 mins to shut off the system, and 8 mins for to come up in a run condition.  If you need to test repaired 10 units after they are repaired, it becomes time intensive.
Thus the test box/unit allows the tech to test all functions of the TSO before it is placed on the system.

Now the new TSO's..

They work on CANopen.  A TSO has LED's to indicate a feature selected, and buttons and switches to control table and maybe collimation of the X-Ray beam.  They do not produce X-rays.\
The TSO's have been designed by the company of the system.
For me, I just need to confirm via a simple program to see if I can fire the led's and test the switches (other than an ohm meter)

TSO means Table Side Operation unit. 

I have figured out some of the signals from the system (seq to light LED's)
But I need to get speed and info of the output functions of the switches of the unit.

There are various types of TSO's so I need to make a matrix of the switch signals. 

My company is ISO 900x and IEC 60601.. certified. (can not remember all of this stuff..)
I'm involved in all aspects of Design, Operation of the current other 2 projects for manufacturing.

My problem is I just need a pointer of how to and what to use to talk CAN via the mega board and the shield that was pointed out earlier.

All the TSO's I have are exchanges, so to say they are from working systems.  Just we are now in need of refurbishing these units and having them ready for exchanges.


Ok, a bit of heads up..

I did get the SparkFun CAN-BUS and ended up getting the UNO board (Mega did not work due to pin assignments) and have started my tests. 
Using a simple SEND/ RECV software from elsewhere, I'm able to see button values as they are pressed.

This is working pretty good so far.

I have LED's to light as well too.

So I now have a slight idea how this works on this unit, so happens not all units use same plug configurations..  But this is the learning curve..


OK, Basically all done..

I have the the Uno board running on a serial port sending the code via serial.  I then use ThinBasic to grab the serial code (testing by case select) and display an active button on the screen.

This is working for both a contact type switch and a joystick type that uses hall-effect IC's (changing code values)

I might not try to light an LED since they do 2 test during booting.

I can attach both code's (ThinBasic will be of a smaller size one) if anyone is interested.



So did you do this via CANOpen?  I am about to start a learning project where I would like to do almost the exact same thing that you just did.  Can you share your code?

Thanks for doing this!


There are a number of AVR's with CAN support built in and you can program them with Arduino.
Just so you know.

CAN is also used in the Automotive industry. There are AVR projects/devices to diagnose modern cars.

Nick Gammon on multitasking Arduinos:
1) http://gammon.com.au/blink
2) http://gammon.com.au/serial
3) http://gammon.com.au/interrupts

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131