Arduino Control panel

More
19 Sep 2013 03:54 - 19 Sep 2013 15:35 #39005 by RomainM
Hi everybody,


My topic has probably already been addressed in other posts but despite all the reading I've done, I 'm not progressing quickly. So I ask for your help !


I've built a CNC router a year ago. I plan to make a Control panel. It will be equipped with 2 buttons ( a green button that will act as Start Home sequence/ Start Program /Resume ; and a red button that will act as Pause program), 2 rotary encoders to adjust feeds and spindle speed.

http://www.usinages.com/ressources/image/129670


I plan to use an arduino to talk to Hal via an Userspace Module using Pyserial. I did some successful tests according to the tutorial of Colin's blog ckcnc.wordpress.com/basic-arduino-emc-howto/.


My first question is about or2. If I have 2 inputs to trigger 1 output. I wrote 2 things that it seems to me the same things, e.g:


#1
net pause-btn-sig <= pyvcp.pause-btn

net pause-btn-sig <= arduino.pause-btn

net pause-btn-sig => halui.program-pause

#2
net pause-pyvcp-btn-sig  or2.0.in0 <= pyvcp.pause-btn

net pause-arduino-btn-sig or2.0.in1 <= arduino.pause-btn

net pause-sig or2.0.out => halui.program-pause

What is the right syntax ?

My 2nd question is about where is the best place to do test ? It seem that HAL allow to test pins only 2 by 2. But for my project i need to test more than 2 pins in the same time.

For example, if i would like to start a home sequence in pushing the green button, I could make this test:

if ( arduino.green-btn = 1 & halui.joint.0.is-homed =0 & halui.joint.N.is-homed =0 & ....):

halui.all-home=1


Do you think that I should do the test in the Userspace or in the HAL with some logic component like and2 or2 xor2 ?

I hope that my questions are understandable (and my English too).

Thanks

Romain
Last edit: 19 Sep 2013 15:35 by RomainM.

Please Log in or Create an account to join the conversation.

More
19 Sep 2013 14:39 #39013 by ArcEye
Replied by ArcEye on topic Arduino Control panel
Hi

Q1, No2 is correct, No1 will not work because you are connecting 2 OUT pins to a signal
www.linuxcnc.org/docs/devel/html/hal/bas...#_net_a_id_sub_net_a

Q2, HAL does not allow conditional tests, beyond anything contained in components
Some sort of test logic like that will have to be in the component and output a bit value to a pin connected to halui.all-home say
If you simply want a signal to go TRUE if either input does, then the or2 component may be easier

I am not entirely sure what you are after, but the way I test test very often is to start with all the variables in a component declared as pins
Then you can track the values of them through Hal Configuration as you run and debug

regards

Please Log in or Create an account to join the conversation.

More
19 Sep 2013 14:52 #39015 by cncbasher
Replied by cncbasher on topic Arduino Control panel
here's some hal configs i use for similar function
note that i use a mesa 7i43 card so the pins will need to be changed to suit

hope it helps .
Attachments:

Please Log in or Create an account to join the conversation.

More
19 Sep 2013 20:21 - 19 Sep 2013 20:39 #39023 by andypugh
Replied by andypugh on topic Arduino Control panel

My 2nd question is about where is the best place to do test ? It seem that HAL allow to test pins only 2 by 2. But for my project i need to test more than 2 pins in the same time.

For example, if i would like to start a home sequence in pushing the green button, I could make this test:

if ( arduino.green-btn = 1 & halui.joint.0.is-homed =0 & halui.joint.N.is-homed =0 & ....):

halui.all-home=1


The best HAL component for this type of logic is LUT5. It isn't obvious from the name what it does, and it isn't all that obvious from the docs how to use it.
www.linuxcnc.org/docs/html/man/man9/lut5.9.html
However, what it allows you to do is to define an output signal value for every combination of up to 5 input values.
A few ways to figure out the LUT5 setup are here
wiki.linuxcnc.org/cgi-bin/wiki.pl?Lut5
Personally I do write down the full truth-table and then work out the binary number.

I have created a Google Docs spreadsheet that does the calculations for you:
docs.google.com/spreadsheet/ccc?key=0Ahj...fWGtfTEE&usp=sharing
Last edit: 19 Sep 2013 20:39 by andypugh.

Please Log in or Create an account to join the conversation.

More
19 Sep 2013 21:18 #39024 by RomainM
Replied by RomainM on topic Arduino Control panel
thank you very much to all of you. I 'll have a good evening to learn all yours recommendations!

I'll will post my code once it will write .

Please Log in or Create an account to join the conversation.

More
21 Sep 2013 05:23 - 21 Sep 2013 05:29 #39068 by RomainM
Replied by RomainM on topic Arduino Control panel
Hi !

Lut5 component saved me ! My home sequence, start, resume and pause buttons work very well. Hopefully there was the calculator of Andy, because without I would be very lost ...

So thanks !

So I was writting to you, because I didn't get to work the rotary encoder to adjust feed rate. But during my writing I solved my problem.

So, this is attached my files for an arduino with 2 buttons (green for home sequence, start, resume program and red for pause) and a rotaty encoder to adjust feed rate (same job for spindle).

Next step will be talk to Huanyang Inverter with RS482 protocol and add when the Pause button will push a Z retract, stop spindle, jog allow and when resume button will push go back to X Y Pause position, start the spindle, go to Z pause position and go back to mill. If you have ideas I'll be very glad.

Thanks. Romain
Attachments:
Last edit: 21 Sep 2013 05:29 by RomainM.

Please Log in or Create an account to join the conversation.

More
21 Sep 2013 05:49 #39069 by cncbasher
Replied by cncbasher on topic Arduino Control panel
Attached Modbus user component for Hyuang vfd
if you do not already have it
Attachments:

Please Log in or Create an account to join the conversation.

More
26 Sep 2013 03:47 #39194 by RomainM
Hi,

I downloaded the hy_vfd-linuxcnc. I added the lines in my custom.hal, postgui.hal and panel.xml. But I'm not really sure of the way to instal the rest of the files, I done "makefile" then "INSTALL". I think that these operations compile the diferrent files in a "hy_vfd" and copy it in /usr/bin. Am I in the right direction (i'm a begginer in Linux...)?

Whatever, I launched Linuxcnc 2.6.0. Now I can see the Pyvcp. But the modbus com led is red. When I sent a M3 S18000, nothing happen Do you have an idea how debug my problem ?

Some setting will be helful:
vfd: PD001=2, PD002=2, PD163=1, PD164=2 and PD165=3.
custom.hal:
loadusr -Wn spindle-vfd hy_vfd -n spindle-vfd -v -d /dev/ttyS0 -p even -r 19200 -s 1
How I could be sur e that the ttyS0 port is working?

My RS232/485 converter is an ebay model like .
I use a 3 wires cable with shield. I connect A/RS+ (converter) => RS+ (VFD), B/RS- (converter) => RS- (VFD), GND (Converter) => ACM (VFD)

I measure 0V betwenn GND and RS- and +5V beteween GND and RS+

I hope that all of these inspire one of you.

Thanks

Please Log in or Create an account to join the conversation.

More
26 Sep 2013 15:21 #39204 by cncbasher
firstly see if you have a compiled binary in your /usr/bin called hy_vfd
to compile go to the directory hyvfd and in terminal type make && sudo make install

you may also need to make sure that your rs232 port has permissions for ttyS0
and that you have the tty device belonging to the dialout group

a few checks are good here ...
first check that you are a member of the dialout group
in a terminal type groups $(USER)
this will list all groups you are a member of ...
if you are not a member of dialout group then add yourself to the list by

sudo (your password ) --add ${USER} dialout
then logout and back in
The following user(s) said Thank You: RomainM

Please Log in or Create an account to join the conversation.

More
26 Sep 2013 16:09 #39205 by RomainM
Thanks for your advices, I'll check all of that at noon or tonight.

Have a good day !

Please Log in or Create an account to join the conversation.

Time to create page: 0.116 seconds
Powered by Kunena Forum