7i76e with 7i85S to control 9 steppers

17 May 2018 00:55 #110799 by cogzoid

I've got a non-machining related robot and we're upgrading our 3 Arduinos running GRBL to a LinuxCNC/Mesa set up. I know it's not a perfect fit, but I'm hoping that I can utilize the LinuxCNC stuff to get us most of the way there. However, I'm new to LinuxCNC and FPGAs in general, and the learning curve is steep.

Here's where I'm at right now. I've got Linux 3.2.0-6-rt-686-pae running on my machine. I've set up the mesa board to be on and can connect to it. I flashed the 7i76e_7i76x1_7i85sx1D.bit bitfile to the board.

However, I'm not sure how to set up the boards using PncConf wizard. I can set up the outputs of XYZAS, but I'm not sure how to set up the 7i85S Dir/Step ports. To be clear, I'm not sure if I should be using PncConf wizard at all.

I used mesaflash --readhmid to look at the ins and outs, and I can see all 9 Pulse/Dir pairs that I'll need. Any want to help point me in the right direction on how to get this all set up?
17 May 2018 02:54 #110804 by PCW
I think I would use pncconf to make a config file set for a standard 7I76e and simple machine (say 3 axis mill)
as a starting point and then add the additional hal/ini file boilerplate for the added axis/joints to the
hal/ini files by copy pasting the existing per axis motion connections and renumbering them
(renumbering stepgens, joint/axis numbers etc etc)
17 May 2018 03:18 #110806 by cogzoid
Great. I'm able to copy/paste. I'll start familiarizing myself with the .hal and .ini files. Thanks.
17 May 2018 08:26 #110810 by rodw
In the hal examples section, I posted a complete working example of a 7i76e config using master branch. Its still on the top of the list of posts. I think from memory I gave up with pncconf and just took a similar working example and coded by hand.

However, this example was built from pncconf and hand edited. I think the changes in master branch where joints are independent from axes might well be useful for your project.

The approach I took when I wrote this was to renumber everything along the lines PCW mentioned so it should be a nice clean starter.
The following user(s) said Thank You: Omnis, cogzoid
17 Oct 2018 22:59 #118965 by cogzoid
Alright, after a multi-month hiatus, I'm back to working on this project. My robot works with three arduinos for now, but I believe that the linuxcnc version will be a big upgrade.

I've got a 7i76e on the bench, wired up to a driver and stepper motor. But I'm having trouble getting signals out from the Mesa card.

I did a mostly default PnCConf session to get .hal and .ini files to edit by hand.

I had changed the IP address to, so updated that in the .hal file. Running the simple 3 axis gui seems to open without errors, but jogging the tool around results in no signals sent to the driver (checked with an o-scope).

One thing I noticed was that the firmware part of the .hal file was pointing to a non-existent file. But there were no errors. I updated it to the proper firmware file, still no errors, but still no movement.

Any clues or things to look for?
18 Oct 2018 00:00 - 18 Oct 2018 00:01 #118966 by PCW
The firmware file in the config line is not used

I would check the direction signals since they are easier to see than short step pulses.

You might verify the firmware with:

mesaflash --device 7i76e --addr --readhmid

Since jogging works in the GUI, you have bidirectional communication with the 7I76E card and the 7I76e thinks its generating step pulses so a couple other possibilities are that you have a wiring/pinout error or you have the step pulses set too short to see.
Last edit: 18 Oct 2018 00:01 by PCW.
18 Oct 2018 00:36 #118967 by cogzoid
Thanks for the help!

I've attached the output of the --readhmid command. It doesn't specify exactly the name of the uploaded firmware, but it's probably the 7i76e_7i76x1_7i85x1D.bit, (hence the 9 Steppers). I'm a little confused by the pinout designations since the numbers don't seem related to the 7i76e board.

As for the wiring, I've got 24V going to the field I/O, as well as pins 22/23 on TB3.
I've got 5V going to the P3 connector.

The only other wires are the Step and Dir pairs attached to TB1 Pin2-5 (X-axis) going to my Stepper Driver (also running off of 24V).

I've also attached the .hal and .ini files in case those might show some stupid error I made.

Thanks again... this stuff has quite a learning curve.
18 Oct 2018 00:55 #118968 by PCW
One fairly obvious thing is that there are very few step drives that will work with a 1 usec step pulse, you might try changing this to 5 usec

Also what type of drives do you have and how exactly are you wiring them?
18 Oct 2018 01:57 #118971 by rodw
Do your steppers have holding torque (eg locked) when the system is powered up? They should be. The stepper enable signal is actually a disable signal so if you connected the 7i76e EN+ and EN- signals to your stepper drivers, you have probably disabled your steppers. If so just unplug the EN+ and EN- wires from your drivers. I got caught with this when I moved from an Arduino to LCNC.
18 Oct 2018 05:15 #118979 by cogzoid
I'll try extending the Step and Direction Pulses, but I thought for sure I'd still be able to see them on the oscilloscope... I had also assumed that the default values would be close.

As for the stepper motor and drivers, they're the one part of the whole system that I have a decent grasp on. I had learned my lesson with the Enable pins pretty early in the process while trying to use Enable as an e-stop solution. The stepper is definitely locked up when it's supposed to be now.

The drivers works great for me in other situations, and the motor is a nema17 stepper just for testing on the bench.

Thanks for all the help, I'll try again tomorrow morning and report back.
Moderators: cmorley
Time to create page: 0.084 seconds
Powered by Kunena Forum