Advanced Search

Search Results (Searched for: raspberry pi 3)

09 Oct 2024 01:04

My Cable Robot CNC Foam Cutter is running!

Category: Show Your Stuff

Hey kind folks,

I thought I’d share a quick video showing the status of our Linux CNC foam-cutter project. I’m brand new to LinuxCNC and basically just took this on as a fun project to learn a bit. 

photos.app.goo.gl/ksw5mnEoJEibSiqs5

The drive drums are custom designed 3D printed hypocycloidal drives running a pair of cables to a hot wire knife.  The 3D printed drives are a bit janky but actually work surprisingly well.  Not sure how durable they’d be in the long term. 

While this test-bed is quite small, the objective is to be able to mount the drum modules on a wall some 12 feet apart and in doing so be able to cut shapes out of large foam sheets. The objective is to be able to build an ultra-low cost CNC foam cutter for less than $200.  I could then manually stack the cut sheets together like a loaf of bread and build very large 3D printed objects ala a huge FDM (albiet with 2” thick layers).

Given the lower speed we’re running the unit on a Raspberry Pi.  I’m sure the latency is a mess but it appears to be tracking.  The forward and inverse kinematics functions were the majority of the challenge - I made life much more difficult by running the cables tangential to the drums instead of through a fixed ferrule but I was eventually able to solve the kinematics.  The inverse kinematics were just trig but the forward kinematics required numerical methods (Newton-Raphson) which I only sort of understand but seem to work.

More to come to make this more useful. If there is any interest I’ll likely open-source the whole thing when it’s a bit more stable and refined.

Thanks to all of you who helped on here through my rough patches. 
08 Oct 2024 20:59

Linuxcnc 2.9.2 and 2.93 images for Raspberry Pi 4b & 5

Category: Installing LinuxCNC

Can you tell me how can I rotate the touch part of the screen too?

Try this, otherwise it is a mess to sift through endless posts on several forums to get the right answer, been there and done that, twice.
gist.github.com/mildmojo/48e9025070a2ba40795c
08 Oct 2024 19:00

Linuxcnc 2.9.2 and 2.93 images for Raspberry Pi 4b & 5

Category: Installing LinuxCNC

THANK YOU VERRY MUCH!!!!

It looks great!
Finally i can rotate the screen! Also there is sound on the mini HDMI monitor .
Can you tell me how can I rotate the touch part of the screen too?
 
08 Oct 2024 08:36 - 08 Oct 2024 08:40

LitexCNC: firmware and driver for 5A-75B and 5A-75E

Category: Driver Boards

Hi everybody, 

many thanks for the great work you are puting into this Project. 

I have some issues, maybe somebody can guide me into debugging it. 

I bought a 5A-75B V8.2 and managed to flash it without issues using a Raspberry Pi 4. The JSON used was the example from the documentation , 5a-75b_v8.0_i12o14p6s6e6 . I have not made any changes to it yet, as I just wanted to test the whole process first and see if I get into issues down the road. Now, I don't know if using the json for version 8.0 is causing the issues that I have. 

The board is pingable over network, and can also be loaded into halrun: 

halcmd: loadrt litexcnc connections="eth:10.0.0.10"Note: Using POSIX realtimelitexcnc: Loading Litex CNC driver version 1.2.4
litexcnc: Loading and registering default modules:
litexcnc: Registered module gpio
litexcnc: Registered module pwm
litexcnc: Registered module encoder
litexcnc: Registered module step
litexcnc: Setting up board drivers:
litexcnc: Registered driver eth
LitexCNC-eth: connected to board on '10.0.0.10:1234'
litexcnc: Setting up modules...
litexcnc: Reading 36 bytes
litexcnc:  - Watchdog
litexcnc:  - Wallclock
litexcnc:  - gpio ... done!
litexcnc:  - pwm ... done!
litexcnc:  - encoder ... done!
litexcnc:  - step ... done!
litexcnc: Creating read and write buffers...
litexcnc: Base addresses: init: 00000000, reset: 00000044, config: 00000048, write: 0000004C, read: 000000C8
litexcnc:  - Write buffer: 124 bytes
litexcnc:  - Read buffer: 116 bytes
litexcnc: Exporting functions...

Show Pin works : 


halcmd: show pin
Component Pins:
Owner   Type  Dir         Value  Name
     4  s32   OUT             0  5A-75B:V8.0.encoder.00.counts
     4  bit   IN          FALSE  5A-75B:V8.0.encoder.00.index-enable
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.00.index-pulse
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.00.overflow-occurred
     4  float OUT             0  5A-75B:V8.0.encoder.00.position
     4  s32   OUT             0  5A-75B:V8.0.encoder.00.raw-counts
     4  bit   I/O         FALSE  5A-75B:V8.0.encoder.00.reset
     4  float OUT             0  5A-75B:V8.0.encoder.00.velocity
     4  float OUT             0  5A-75B:V8.0.encoder.00.velocity-rpm
     4  s32   OUT             0  5A-75B:V8.0.encoder.01.counts
     4  bit   IN          FALSE  5A-75B:V8.0.encoder.01.index-enable
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.01.index-pulse
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.01.overflow-occurred
     4  float OUT             0  5A-75B:V8.0.encoder.01.position
     4  s32   OUT             0  5A-75B:V8.0.encoder.01.raw-counts
     4  bit   I/O         FALSE  5A-75B:V8.0.encoder.01.reset
     4  float OUT             0  5A-75B:V8.0.encoder.01.velocity
     4  float OUT             0  5A-75B:V8.0.encoder.01.velocity-rpm
     4  s32   OUT             0  5A-75B:V8.0.encoder.02.counts
     4  bit   IN          FALSE  5A-75B:V8.0.encoder.02.index-enable
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.02.index-pulse
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.02.overflow-occurred
     4  float OUT             0  5A-75B:V8.0.encoder.02.position
     4  s32   OUT             0  5A-75B:V8.0.encoder.02.raw-counts
     4  bit   I/O         FALSE  5A-75B:V8.0.encoder.02.reset
     4  float OUT             0  5A-75B:V8.0.encoder.02.velocity
     4  float OUT             0  5A-75B:V8.0.encoder.02.velocity-rpm
     4  s32   OUT             0  5A-75B:V8.0.encoder.03.counts
     4  bit   IN          FALSE  5A-75B:V8.0.encoder.03.index-enable
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.03.index-pulse
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.03.overflow-occurred
     4  float OUT             0  5A-75B:V8.0.encoder.03.position
     4  s32   OUT             0  5A-75B:V8.0.encoder.03.raw-counts
     4  bit   I/O         FALSE  5A-75B:V8.0.encoder.03.reset
     4  float OUT             0  5A-75B:V8.0.encoder.03.velocity
     4  float OUT             0  5A-75B:V8.0.encoder.03.velocity-rpm
     4  s32   OUT             0  5A-75B:V8.0.encoder.04.counts
     4  bit   IN          FALSE  5A-75B:V8.0.encoder.04.index-enable
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.04.index-pulse
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.04.overflow-occurred
     4  float OUT             0  5A-75B:V8.0.encoder.04.position
     4  s32   OUT             0  5A-75B:V8.0.encoder.04.raw-counts
     4  bit   I/O         FALSE  5A-75B:V8.0.encoder.04.reset
     4  float OUT             0  5A-75B:V8.0.encoder.04.velocity
     4  float OUT             0  5A-75B:V8.0.encoder.04.velocity-rpm
     4  s32   OUT             0  5A-75B:V8.0.encoder.05.counts
     4  bit   IN          FALSE  5A-75B:V8.0.encoder.05.index-enable
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.05.index-pulse
     4  bit   OUT         FALSE  5A-75B:V8.0.encoder.05.overflow-occurred
     4  float OUT             0  5A-75B:V8.0.encoder.05.position
     4  s32   OUT             0  5A-75B:V8.0.encoder.05.raw-counts
     4  bit   I/O         FALSE  5A-75B:V8.0.encoder.05.reset
     4  float OUT             0  5A-75B:V8.0.encoder.05.velocity
     4  float OUT             0  5A-75B:V8.0.encoder.05.velocity-rpm
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.00.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.01.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.02.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.03.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.04.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.05.out
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.06.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.06.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.07.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.07.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.08.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.08.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.09.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.09.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.10.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.10.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.11.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.11.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.12.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.12.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.13.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.13.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.14.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.14.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.15.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.15.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.16.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.16.in-not
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.17.in
     4  bit   OUT         FALSE  5A-75B:V8.0.gpio.17.in-not
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.18.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.19.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.20.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.21.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.22.out
     4  bit   IN          FALSE  5A-75B:V8.0.gpio.23.out
     4  float OUT             0  5A-75B:V8.0.pwm.00.curr_dc
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.00.curr_period
     4  float OUT             0  5A-75B:V8.0.pwm.00.curr_pwm_freq
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.00.curr_width
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.00.dither_pwm
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.00.enable
     4  float IN              1  5A-75B:V8.0.pwm.00.max_dc
     4  float IN              0  5A-75B:V8.0.pwm.00.min_dc
     4  float IN              0  5A-75B:V8.0.pwm.00.offset
     4  float IN         100000  5A-75B:V8.0.pwm.00.pwm_freq
     4  float IN              1  5A-75B:V8.0.pwm.00.scale
     4  float IN              0  5A-75B:V8.0.pwm.00.value
     4  float OUT             0  5A-75B:V8.0.pwm.01.curr_dc
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.01.curr_period
     4  float OUT             0  5A-75B:V8.0.pwm.01.curr_pwm_freq
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.01.curr_width
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.01.dither_pwm
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.01.enable
     4  float IN              1  5A-75B:V8.0.pwm.01.max_dc
     4  float IN              0  5A-75B:V8.0.pwm.01.min_dc
     4  float IN              0  5A-75B:V8.0.pwm.01.offset
     4  float IN         100000  5A-75B:V8.0.pwm.01.pwm_freq
     4  float IN              1  5A-75B:V8.0.pwm.01.scale
     4  float IN              0  5A-75B:V8.0.pwm.01.value
     4  float OUT             0  5A-75B:V8.0.pwm.02.curr_dc
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.02.curr_period
     4  float OUT             0  5A-75B:V8.0.pwm.02.curr_pwm_freq
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.02.curr_width
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.02.dither_pwm
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.02.enable
     4  float IN              1  5A-75B:V8.0.pwm.02.max_dc
     4  float IN              0  5A-75B:V8.0.pwm.02.min_dc
     4  float IN              0  5A-75B:V8.0.pwm.02.offset
     4  float IN         100000  5A-75B:V8.0.pwm.02.pwm_freq
     4  float IN              1  5A-75B:V8.0.pwm.02.scale
     4  float IN              0  5A-75B:V8.0.pwm.02.value
     4  float OUT             0  5A-75B:V8.0.pwm.03.curr_dc
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.03.curr_period
     4  float OUT             0  5A-75B:V8.0.pwm.03.curr_pwm_freq
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.03.curr_width
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.03.dither_pwm
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.03.enable
     4  float IN              1  5A-75B:V8.0.pwm.03.max_dc
     4  float IN              0  5A-75B:V8.0.pwm.03.min_dc
     4  float IN              0  5A-75B:V8.0.pwm.03.offset
     4  float IN         100000  5A-75B:V8.0.pwm.03.pwm_freq
     4  float IN              1  5A-75B:V8.0.pwm.03.scale
     4  float IN              0  5A-75B:V8.0.pwm.03.value
     4  float OUT             0  5A-75B:V8.0.pwm.04.curr_dc
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.04.curr_period
     4  float OUT             0  5A-75B:V8.0.pwm.04.curr_pwm_freq
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.04.curr_width
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.04.dither_pwm
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.04.enable
     4  float IN              1  5A-75B:V8.0.pwm.04.max_dc
     4  float IN              0  5A-75B:V8.0.pwm.04.min_dc
     4  float IN              0  5A-75B:V8.0.pwm.04.offset
     4  float IN         100000  5A-75B:V8.0.pwm.04.pwm_freq
     4  float IN              1  5A-75B:V8.0.pwm.04.scale
     4  float IN              0  5A-75B:V8.0.pwm.04.value
     4  float OUT             0  5A-75B:V8.0.pwm.05.curr_dc
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.05.curr_period
     4  float OUT             0  5A-75B:V8.0.pwm.05.curr_pwm_freq
     4  u32   OUT    0x00000000  5A-75B:V8.0.pwm.05.curr_width
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.05.dither_pwm
     4  bit   IN          FALSE  5A-75B:V8.0.pwm.05.enable
     4  float IN              1  5A-75B:V8.0.pwm.05.max_dc
     4  float IN              0  5A-75B:V8.0.pwm.05.min_dc
     4  float IN              0  5A-75B:V8.0.pwm.05.offset
     4  float IN         100000  5A-75B:V8.0.pwm.05.pwm_freq
     4  float IN              1  5A-75B:V8.0.pwm.05.scale
     4  float IN              0  5A-75B:V8.0.pwm.05.value
     4  s32   OUT             0  5A-75B:V8.0.read.time
     4  float IN              0  5A-75B:V8.0.stepgen.00.acceleration-cmd
     4  u32   OUT    0x00000000  5A-75B:V8.0.stepgen.00.counts
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.00.debug
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.00.enable
     4  float IN              0  5A-75B:V8.0.stepgen.00.position-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.00.position-feedback
     4  float OUT             0  5A-75B:V8.0.stepgen.00.position-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.00.velocity-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.00.velocity-feedback
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.00.velocity-mode
     4  float OUT             0  5A-75B:V8.0.stepgen.00.velocity-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.01.acceleration-cmd
     4  u32   OUT    0x00000000  5A-75B:V8.0.stepgen.01.counts
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.01.debug
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.01.enable
     4  float IN              0  5A-75B:V8.0.stepgen.01.position-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.01.position-feedback
     4  float OUT             0  5A-75B:V8.0.stepgen.01.position-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.01.velocity-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.01.velocity-feedback
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.01.velocity-mode
     4  float OUT             0  5A-75B:V8.0.stepgen.01.velocity-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.02.acceleration-cmd
     4  u32   OUT    0x00000000  5A-75B:V8.0.stepgen.02.counts
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.02.debug
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.02.enable
     4  float IN              0  5A-75B:V8.0.stepgen.02.position-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.02.position-feedback
     4  float OUT             0  5A-75B:V8.0.stepgen.02.position-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.02.velocity-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.02.velocity-feedback
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.02.velocity-mode
     4  float OUT             0  5A-75B:V8.0.stepgen.02.velocity-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.03.acceleration-cmd
     4  u32   OUT    0x00000000  5A-75B:V8.0.stepgen.03.counts
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.03.debug
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.03.enable
     4  float IN              0  5A-75B:V8.0.stepgen.03.position-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.03.position-feedback
     4  float OUT             0  5A-75B:V8.0.stepgen.03.position-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.03.velocity-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.03.velocity-feedback
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.03.velocity-mode
     4  float OUT             0  5A-75B:V8.0.stepgen.03.velocity-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.04.acceleration-cmd
     4  u32   OUT    0x00000000  5A-75B:V8.0.stepgen.04.counts
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.04.debug
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.04.enable
     4  float IN              0  5A-75B:V8.0.stepgen.04.position-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.04.position-feedback
     4  float OUT             0  5A-75B:V8.0.stepgen.04.position-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.04.velocity-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.04.velocity-feedback
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.04.velocity-mode
     4  float OUT             0  5A-75B:V8.0.stepgen.04.velocity-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.05.acceleration-cmd
     4  u32   OUT    0x00000000  5A-75B:V8.0.stepgen.05.counts
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.05.debug
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.05.enable
     4  float IN              0  5A-75B:V8.0.stepgen.05.position-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.05.position-feedback
     4  float OUT             0  5A-75B:V8.0.stepgen.05.position-prediction
     4  float IN              0  5A-75B:V8.0.stepgen.05.velocity-cmd
     4  float OUT             0  5A-75B:V8.0.stepgen.05.velocity-feedback
     4  bit   IN          FALSE  5A-75B:V8.0.stepgen.05.velocity-mode
     4  float OUT             0  5A-75B:V8.0.stepgen.05.velocity-prediction
     4  u32   I/O    0x00000000  5A-75B:V8.0.wallclock.ticks_lsb
     4  u32   OUT    0x00000000  5A-75B:V8.0.wallclock.ticks_msb
     4  bit   I/O         FALSE  5A-75B:V8.0.watchdog.has_bitten
     4  s32   OUT             0  5A-75B:V8.0.write.time

and also Show Param: 

halcmd: show param
Parameters:
Owner   Type  Dir         Value  Name
     4  bit   RW          FALSE  5A-75B:V8.0.debug
     4  float RW              0  5A-75B:V8.0.encoder.00.position-scale
     4  bit   RW          FALSE  5A-75B:V8.0.encoder.00.x4-mode
     4  float RW              0  5A-75B:V8.0.encoder.01.position-scale
     4  bit   RW          FALSE  5A-75B:V8.0.encoder.01.x4-mode
     4  float RW              0  5A-75B:V8.0.encoder.02.position-scale
     4  bit   RW          FALSE  5A-75B:V8.0.encoder.02.x4-mode
     4  float RW              0  5A-75B:V8.0.encoder.03.position-scale
     4  bit   RW          FALSE  5A-75B:V8.0.encoder.03.x4-mode
     4  float RW              0  5A-75B:V8.0.encoder.04.position-scale
     4  bit   RW          FALSE  5A-75B:V8.0.encoder.04.x4-mode
     4  float RW              0  5A-75B:V8.0.encoder.05.position-scale
     4  bit   RW          FALSE  5A-75B:V8.0.encoder.05.x4-mode
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.00.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.01.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.02.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.03.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.04.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.05.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.18.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.19.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.20.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.21.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.22.invert_output
     4  bit   RW          FALSE  5A-75B:V8.0.gpio.23.invert_output
     4  s32   RW              0  5A-75B:V8.0.read.tmax
     4  bit   RO          FALSE  5A-75B:V8.0.read.tmax-increased
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.00.dir-hold-time
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.00.dir-setup-time
     4  float RO              0  5A-75B:V8.0.stepgen.00.frequency
     4  float RW              0  5A-75B:V8.0.stepgen.00.max-acceleration
     4  float RW              0  5A-75B:V8.0.stepgen.00.max-velocity
     4  float RW              0  5A-75B:V8.0.stepgen.00.position-scale
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.00.steplen
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.00.stepspace
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.01.dir-hold-time
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.01.dir-setup-time
     4  float RO              0  5A-75B:V8.0.stepgen.01.frequency
     4  float RW              0  5A-75B:V8.0.stepgen.01.max-acceleration
     4  float RW              0  5A-75B:V8.0.stepgen.01.max-velocity
     4  float RW              0  5A-75B:V8.0.stepgen.01.position-scale
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.01.steplen
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.01.stepspace
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.02.dir-hold-time
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.02.dir-setup-time
     4  float RO              0  5A-75B:V8.0.stepgen.02.frequency
     4  float RW              0  5A-75B:V8.0.stepgen.02.max-acceleration
     4  float RW              0  5A-75B:V8.0.stepgen.02.max-velocity
     4  float RW              0  5A-75B:V8.0.stepgen.02.position-scale
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.02.steplen
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.02.stepspace
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.03.dir-hold-time
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.03.dir-setup-time
     4  float RO              0  5A-75B:V8.0.stepgen.03.frequency
     4  float RW              0  5A-75B:V8.0.stepgen.03.max-acceleration
     4  float RW              0  5A-75B:V8.0.stepgen.03.max-velocity
     4  float RW              0  5A-75B:V8.0.stepgen.03.position-scale
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.03.steplen
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.03.stepspace
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.04.dir-hold-time
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.04.dir-setup-time
     4  float RO              0  5A-75B:V8.0.stepgen.04.frequency
     4  float RW              0  5A-75B:V8.0.stepgen.04.max-acceleration
     4  float RW              0  5A-75B:V8.0.stepgen.04.max-velocity
     4  float RW              0  5A-75B:V8.0.stepgen.04.position-scale
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.04.steplen
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.04.stepspace
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.05.dir-hold-time
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.05.dir-setup-time
     4  float RO              0  5A-75B:V8.0.stepgen.05.frequency
     4  float RW              0  5A-75B:V8.0.stepgen.05.max-acceleration
     4  float RW              0  5A-75B:V8.0.stepgen.05.max-velocity
     4  float RW              0  5A-75B:V8.0.stepgen.05.position-scale
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.05.steplen
     4  u32   RW     0x00000000  5A-75B:V8.0.stepgen.05.stepspace
     4  u32   RO     0x00000000  5A-75B:V8.0.watchdog.timeout_cycles
     4  u32   RW     0x00000000  5A-75B:V8.0.watchdog.timeout_ns
     4  s32   RW              0  5A-75B:V8.0.write.tmax
     4  bit   RO          FALSE  5A-75B:V8.0.write.tmax-increased


But no matter which out pin I set to enable with setp command,, there are no changes measured on the board, and I measured ALL pins. 
The 5A-75B:V8.0.watchdog.has_bitten is FALSE.

halcmd: setp 5A-75B:V8.0.gpio.00.out 1
halcmd: getp 5A-75B:V8.0.gpio.00.out
TRUE


Thanks again for your help.  
05 Oct 2024 10:59 - 05 Oct 2024 11:02

NativeCam on LinuxCNC 2.9.3

Category: NativeCAM

Now NativeCAM is running with Python3 and Gtk "without" problems, at least as standalone.
There are some problems and Gtk deprecations to fix. but it works.
On my Raspberry Pi machine it runs enbedded in LinuxCNC too.
I think all of you could run it as embedded configuring paths etc...

Regards
Giovanni
05 Oct 2024 10:24 - 05 Oct 2024 10:26

Linuxcnc 2.9.2 and 2.93 images for Raspberry Pi 4b & 5

Category: Installing LinuxCNC

2.93 seems to work great on my pi5. No network manager is a bit hard for my brain but we'll get there.

Blazing fast compared to the img I had loaded up earlier, lcnc boots up faster than I thought was possible

​​​​​​I wish PiClone was already on there because no Ethernet in the garage and the pi is a pain to remove from the cnc haha 
03 Oct 2024 16:39 - 03 Oct 2024 16:44

NativeCam on LinuxCNC 2.9.3

Category: NativeCAM

I have seen those problems. When I'll have some spare time, I'll try to fix them.

Since at this moment I have no much time I attach a text I have found recently.
Maybe the author is Fernand.
You have a standalone version of NativeCAM working, so I think you have only to made changes to embed it in LinuxCNC.
And I suppose you can run ncam from any place in the terminal simply by typing ncam.

You could follow that guide in the first 4 points to try to have NativeCAM in a LinuxCNC tab.
Remember to verify your paths.
In my case they were different respect those writtten in the guide and I had to adjust them.
One of the differences is the path:
/usr/share/pyshared/gladevcp
on my Raspberry is:
/usr/lib/python3/dists-packages/gladevcp

You can firstly verify the situation listing the directories.
If you write down the changes you make (I haven't... ) the guide could be written by you.

Regards
Giovanni
30 Sep 2024 19:15 - 30 Sep 2024 19:21

NativeCam on LinuxCNC 2.9.3

Category: NativeCAM

Hello,
I am happy to ear that my little fixes are useful to someone.
To me is useful your feedback and I think it would be useful to test NativeCAM on various computers.
I have a question for you real users: if you input numbers in the fields by doing calculations, is the result correct or a huge number is given?

I ask you that because I am testing NativeCAM on two machines: standalone on a iMac and embedded in LinuxCNC on a Raspberry Pi (the real LinuxCNC machine).
Calculations on the Mac are correct, but on Raspberry Pi are wrong.

I am not a Python or a NativeCAM expert (I am learning Python while trying to fix Native CAM), but I hope to be able to fix some problem.

Regards
Giovanni
28 Sep 2024 08:50

Getting LinuxCNC as an option to RPi Imager

Category: Installing LinuxCNC

I asked the RPi foundation about this a few years ago, and they said that they were trying to reduce the number of special purpose installations, rather than increase them.
That policy might have changed in the meantime.

16th September 2020:

"Andy

Thank you for your interest in Raspberry Pi.

We're currently not adding many external OSes to the Imager, but please add your suggestion to the github issues and we'll decide what we do about third party OSes. github.com/raspberrypi/rpi-imager/issues

Regards"
26 Sep 2024 08:44

Struggling with custom kinematics...

Category: Advanced Configuration

Never the less - I believe I have correctly ascertained the math necessary to compute the left and right drum rotation (from home position of 0,0) to achieve a desired X,Y location for the truncation of the two cables. I believe these are inverse kinematics, correct?

correct

I honestly don't really understand what a hal pin is and whether these are required. I'm running my code on a Raspberry pi if it matters.

hal pins are used to connect signals in the hal layer. If your kinematic does do not need real time information from hal (eg tool length) then you do not need to add any pins.

I don't have any feedback in my device so what does LinuxCNC do with the Forward kinematics?

I believe in your case the forward kinematic is only used until the machine is homed. (ie to calculate the initial XY position) But I might be wrong about that.

Note: Looks like it is possible to also run either inverse / forward kinematics only (but I have never used that or seen it used):
linuxcnc.org/docs/devel/html/motion/kine...rward-transformation
    KINEMATICS_IDENTITY (each joint number corresponds to an axis letter)
    KINEMATICS_BOTH (forward and inverse kinematics functions are provided)
    KINEMATICS_FORWARD_ONLY
    KINEMATICS_INVERSE_ONLY

My inverse kinematics routine computes the drum rotations FROM HOME to a desired X,Y. Is this correct?

That is correct, for HOME = (0,0) and provided you have not built any offsets into your model (eg a tool-offset)

My CableKins.comp file is attached. I'm basically breaking out of the forward kinematics since that was erroring out but I'm not getting expected results. If you see any glaring issues I'd appreciate any guidance.

So what is the error you are getting?
25 Sep 2024 23:10 - 25 Sep 2024 23:15

Struggling with custom kinematics...

Category: Advanced Configuration

Hey kind folks,  

LinuxCNC newby here - please be gentle... I'm clearly over my head here... 

I am trying to learn to use LinuxCNC to run a 2-axis cable robot - each joint features a "drum" of known diameter.  The cables from two drums truncate at a single point.  

Eventually I hope to turn this into a low-cost hot-wire foam cutter that would allow you to use G-code to cut out shapes from large sheets of foam. Here is my crude prototype (not working in cartesian coordinates yet). 

photos.app.goo.gl/z3gUimXLRd3yP33W6


I have my mechanism up and running using "trivial" kinematics and if I simply hang a weight from the left drum (mapped to the X axis in trivial kinematics)  and instruct it to move 10mm, the drum will indeed wrap up enough cable to move the weight up 10mm - so I believe I have correctly computed the parameters to account for the various gear reductions, drum diameter, etc.  

So my understanding is that I need to use a custom kinematics file to provide the kinematics / math needed to translate from the desired cartesian coordinates to the resulting joint rotations.  The math is a bit complicated because the cables wrap around the drum and I need to account for both the length of the tangent line as well as the part of the cable wrapped around the drum. 

Never the less - I believe I have correctly ascertained the math necessary to compute the left and right drum rotation (from home position of 0,0) to achieve a desired X,Y location for the truncation of the two cables. I believe these are inverse kinematics, correct? 

Beyond this, I understand LinuxCNC is looking for the "Forward" kinematics -  (given a left and right cable length, what is the resulting X,Y location.  This math is a bit more complicated and required numerical methods (Newton Raphison - basically "guess and check").

I believe I have "solve" both forward and inverse kinematics conceptually - I have verified that my math is basically working - I wrote a simple program using Processing and I can feed in a desired X,Y location and my Processing program will  correctly spit back the change in cable length from home of 0,0.  Likewise, I have confirmed that my Forward kinematics seem to be working - I can input the change in cable lengths (from home) and my processing program will output the resulting X,Y. 

My custom kinematics (attached) will compile but It's not working yet but I have some conceptual blocks that I could use some assistance on that might help me debug.

the man file states:   3) If required, add hal pins following examples in
the template code

I honestly don't really understand what a hal pin is and whether these are required. I'm running my code on a Raspberry pi if it matters.

I don't really understand why LinuxCNC requires Forward kinematics (even though I think I've solved them). I will be feeding this program G-Code with desired cartesian coordinates and relying on LinuxCNC and my kinematics to resolve these to the desired drum rotations (Inverse kinematics, right?). I don't have any feedback in my device so what does LinuxCNC do with the Forward kinematics?

My inverse kinematics routine computes the drum rotations FROM HOME to a desired X,Y. Is this correct?

I'm not sure how all of this works with "homing" With a conventional CNC I understand you would use limit switches to "home" each of the axis but I don't really have that option since there is no physical "home" for either drum (both of which turn multiple turns). My general approach was going to be to manually "drive" the two drums to the known 0,0 and then manually "home" . Is this viable? Any advice?

My CableKins.comp file is attached. I'm basically breaking out of the forward kinematics since that was erroring out but I'm not getting expected results. If you see any glaring issues I'd appreciate any guidance.

Thanks for any nudges in the right direction!
24 Sep 2024 12:29

I need your experience for my new setup. Mesa, Beckhoff or Raspberry pi?

Category: Driver Boards

I gave up working with ethercat because my setup needs to be cheap.
It gets expensive when the step driving involved...

I'm going to work with other two options...

Do you have any opinion about raspberry pi's gpio pins? Will I have any problems while working with 5 stepper motors?
24 Sep 2024 12:09
No 7c81 board found was created by uzairk

No 7c81 board found

Category: General LinuxCNC Questions

Hello, I am an final year Electrical Engineering student of NEDUET Karachi Pakistan. I'm building a 5-axis simultaneous CNC machine as my final year project. When I'm connecting Linux CNC with Mesa 7c81board using raspberry pi 4, there is an error found "No 7c81 board found". Can anyone please help me in this? Well I connected raspberry pi-4 with Mesa 7c81 by IDC40 pin only. Should mesa 7c81 need external power supply for power up? Is this problem occuring due to hardware connection?. 
22 Sep 2024 07:47

Notes from installation of ethercat on Raspberry Pi 4

Category: EtherCAT

Hello,
Thank you for this image, it works very well. Unfortunately it is impossible to update my system & therefore impossible to install additional packages, which is a big inconvenience. I just bought a Mesa 7i96s and I need to update my system.

Do you have a solution?

Thanks for your help
21 Sep 2024 23:48

Linuxcnc 2.9.2 and 2.93 images for Raspberry Pi 4b & 5

Category: Installing LinuxCNC

2.93 image working just fine with Raspberry Pi 4B 8GB and Mesa 7C80 - right from scratch - great!
Displaying 76 - 90 out of 944 results.
Time to create page: 0.789 seconds
Powered by Kunena Forum