Hi Malte, Thanks for sharing! I'm also working on a similar setup as yours. However in my case we also build the lathe! :D My father does all the mechanics and me the electronic&control system with Machinekit.
The project is still underway.. maybe about half way now. I made some video to show the current progress: https://youtu.be/bn6DsqG35MU I designed a 35 IO buffer interface cape to protect the Beaglebone Black. Each IO can be configured as input or output by a solder jumper. Then I have also designed opto-isolation modules to fully protect the BBB and have a voltage range of 5-15V on all IO (I use 12V in my setup). The output can deliver up to ~50mA which allows to directly drive small relay. I also want to write some page/blog (and why not on Machinekit blog) to share my work when I will find time for it. What encoder do you have on the spindle? I'm asking because I haven't figured out yet what could suit my need. As we plan to leave an empty diameter of ~40mm for workpieces, we cannot use a small encoder so I was thinking of making some disk myself. However it might be difficult to make since I also would like to have a good accuracy (at least 500-1000cpr) to do turning with spindle control positioning. Regards, /Damien Le mardi 5 février 2019 08:16:50 UTC+1, Schooner a écrit : > > Hi Malte > > Thanks for that it looks comprehensive. > > I'll leave a couple of days for 'peer reviews by people who actually know > about the BBB, > > in case they have an input. > > Then I will 'cut and paste' with a suitable header etc into the > machinekit blog > > (If I can remember how :-)) > > regards > > > On 2/4/2019 7:54 PM, Malte Schmidt wrote: > > Dear all, > > first of all I would like to say a big THANK YOU to all the contributors > of machinekit and linuxcnc. I do really value the effort you all put into > this ! > > When setting up my machine I realized that, while all needed information > was available somewhere, the information was somewhat scattered around and > it took some time to figure out what was relevant and what was not. > I therefore collected some notes and thought about posting this somewhere > (blog) to help others. I have some background in Linux and Linuxcnc (PC) as > user and did therefore not note down line for line but rather tried to > capture the overall process of getting machinekit to work on a BBB. > > My notes are below and I wonder if this would be good content for the > machinekit blog. If yes, how can I post this there? > > BR, > Malte > > > > This document was written in December 2018/Januar 2019 > > The challenge: > Automate a lathe with 2 steppers, limit switches > Allow for manual turning using encoder input for x, z > Provide glass scales input for manual turning (this may be considered > gold plating but my initial plan was to use this lathe in CNC or manual > mode) > Obviously have spindle feedback and control the lathe motor > Ideally controlled via touchscreen. > > My leanings: > > I considered the following approaches: > With the amount of inputs required a > - parallel port solution would only be feasible if multiple parallel > ports are used. -> decided against it > - MESA card solution requires two cards -> expensive, decided against > it > - A beagle bone based solution with GPIO and PRUs -> my tentatively > selected approach. Downside of this is the poor graphic performance > > Linux on the Beagle Bone Black: > Three different options exist for Realtime in the Linux Kernel > - RTAI > - RT_PREEMPT > - Xenomai > > All are patches to the vanilla Linux kernel. > - RTAI is old and seems to be superseded by... > - RT_PREEMPT which will be adapted by main Linux kernel > - Xenomai is commercial > > My takeaway is that RT_PREEMPT would be ideal but Xenomai is a > possible option. > > Two different Debian Linux distributions have been considered: > - Strech > - Jessie > > To get a Debian distribution and one of the realtime kernels on the > beagle board three approaches have been explored: > 1) Putting it toggelter by hand ( > https://machinekoder.com/machinekit-debian-stretch-beaglebone-black/) > 2) Getting Strech + RT_PREEMPT from eLinux ( > http://www.machinekit.io/docs/getting-started/machinekit-images/ and > https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#BBW.2FBBB_.28All_Revs.29_Machinekit > ) > 3) Getting Jessie + Xenomai from eLinux (see links above) > > Findings > - Current RT_PREEMPT + Strech combinations 1) and 2) above have long > boot times of 2-4 minutes. > - The blog post in 1) is a good read in any case to perform some steps > to get the system up to date and further improve boot times > > Flashing > - I was not able to flash using the procedures described in most > online places. I booted from SD and than used the approach outlined ( > https://stackoverflow.com/questions/33930747/how-to-flash-beaglebone-black-emmc-with-debian-8-2-image > ) > cd /opt/scripts/tools/eMMC/ > sudo ./init-eMMC-flasher-v3.sh > > I'm currently using Jessie and Preempt_RT because I'm lazy. There is > some background here on the boot time issue which will hopefully be > resolved in the future: > https://groups.google.com/forum/#!topic/machinekit/sOWj5I7fVpo > > Cape support > - No commercially available cape was suitable to be used with my > requirements. So I decided to go with a Sparkfun prototype cape and wire up > things from there. > > The name of the board coded in the EEPROM will tell which device tree > overlay file to load. The device tree overlay file declares the pins we can > use with this cape. > (cf https://github.com/jbdatko/eeprom_tutorial/blob/master/eeprom.md) > > With different Linux versions different approaches exist how this is > achieved. > Linux 3.8 / Xenomai + Jessie uses capemanager > Linux 4.4 / Preempt_RT + Strech uses U-boot overlays > > Most resources in the internet are about capemanager. > > We need two things for loading the cape during boot: > -- EEPROM > -- Device Tree overlay file > > - The easiest way to get through this is using existing device tree > overlay files. (https://github.com/cdsteinkuehler/beaglebone-universal-io) > - This means that the eeprom needs to be coded such that those are > loaded. > Use https://github.com/picoflamingo/BBCape_EEPROM to write e.g. > cape-universal in both the board name and revision field (I don't know > which field is actually used) > > - For the Sparkfun Prototype cape it may be good to know that the > sparkfun prototype cape addr is 0x57 > > Checking if cape is recognized > capemanager: > - Check that the cape is recognized (e.g. > http://azkeller.com/blog/?p=62) > U-Boot overlays > - Check that cat /proc/cmdline shows overlay file handed over to > kernel > > - Also worth to note: > https://groups.google.com/forum/#!topic/machinekit/SF9xA8sdpB0 and > http://derekmolloy.ie/gpios-on-the-beaglebone-black-using-device-tree-overlays/ > > > My board stopped booting from eMMC at this point when the cape was > connected. It's unclear why > > > Machinekit setups > Get this tool: https://github.com/machinekoder/BBIOConfig/releases > (bbioconfig_v1.1-7_windows_x86.zip) > https://github.com/machinekoder/BBIOConfig > To create a BBIO file that actually contains the pins and settings you > intend to use > > Get and modify run.py from one of the different configurations (e.g. > from > https://github.com/machinekit/machinekit/blob/master/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py > ) > > I created a "standard" Axis UI configuration (i.e. the selection that > comes up when starting machinekit) and copied the .ini file from there. I > also copied GUI related stuff (postgui.hal and xml files) > I used the cramps hal file as starting point for my specific stuff: > https://github.com/machinekit/machinekit/blob/master/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal > > My takeaways > - Make sure to understand the constraints: > - Pin usage and dependencies are error prone. The same output may > be routed to different pins > - You can use only one PRU (machinekit driver restriction) > > > Adding hardware inputs and outputs to my custom cape > A fairly straightforward thing. I used HW-399 Optocoupler Modules to > isolate all inputs. They are based on a TLP-281 chip. All powered from the > beagle board. > The outputs are generated by a 4 channel (BiDirectional - although > this is not used) logic level converter module. There are integrated and > discrete solutions for this on the market. > I used a discrete version here to provide the required current (afaik > <15mAh) for the optocouplers in the stepper drivers. The integrted drivers > available in the market are not as capable in this regard. > > Overall 16 inputs and 4 outputs are generated this way. > > The hardware design is not as nice but good enough for me. I mounted > the logic lvel converter and one optocoupler on the proto cape. > The other parts are mounted on 3D printed holder together with the BBB > > The "real" User interface > As stated in the beginning it was clear that the BBB would not deliver > a good graphics performance and I looked into different options how to deal > with this > > a) Axis with remote X server > This was too slow. And also not did not meet the desire to use a > touchscreen. I also did not see a way to work around this. > > b) QtQuickVCP with Cetus or a to be developed UI (for touch) > This seems to be somwhat work in progress. The UI responsiveness was > good but there were two things that I considered as downsides. The main > thing was that > the UI requires a number of user interactions to actually load. The > developement effort for a touch UI was another downside. > > c) Machinetalk with Browser based UI (WebVCP) > This would have been a possible option to work around the different > user interactions with QtQuickVCP. But I did not get this to work within > reasonable time > The development effort was also clearly a downside here > > d) Touchy > Touchy delivered a reasonable graphics performance when using this > with a remote X server. I therefore investigated this further and realized > that this is actually > fast enough with X running on the BBB itself. I assume this is because > touchy will not create a preview. Since I'm running a lathe which is 2D > only this is actually good enough. > > My learnings: > - Touchy is what I will be evaluate / use further. If my > requirements would have included a working preview I would have continued > with QtQuickVCP. > > X Display system + touchsceen. > - I'm using a waveshare 7" touchsceen. My first attempts to get this > to work failed (touch was not working). > It started to work after I installed lxdm but likely this was because > some tools got installed in this process. I did not figure out the details > here. > > Autologin > follow these steps to automaically log to the terminal: > https://unix.stackexchange.com/questions/401759/automatically-login-on-debian-9-2-1-command-line > and add startx [run.py] to your .bashrc > > -- > website: http://www.machinekit.io blog: http://blog.machinekit.io github: > https://github.com/machinekit > --- > You received this message because you are subscribed to the Google Groups > "Machinekit" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:>. > Visit this group at https://groups.google.com/group/machinekit. > For more options, visit https://groups.google.com/d/optout. > > -- website: http://www.machinekit.io blog: http://blog.machinekit.io github: https://github.com/machinekit --- You received this message because you are subscribed to the Google Groups "Machinekit" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. Visit this group at https://groups.google.com/group/machinekit. For more options, visit https://groups.google.com/d/optout.
