Signals Output by LinuxCNC to Breakout boards

More
21 Nov 2016 20:57 #83097 by rodw

Also, the program will now most likely be reading data from a USB device, and it is not necessary that my breakout board be able to read the RS232 device. Close timestamp alignment is not critical. I just want my motor to turn relatively smooth at its maximum operating speed (2250 rpm).


Using interrupts, You can get an Arduino to easily pulse 7500 times per second. Any steppers I've played with max out at 400 rpm so you may have a design problem that will need to be fixed with gearing. You could talk to the Arduino via its built in USB to send device number, direction and number of steps in a serial packet.

The parallel port is used for motion control because if you send a byte of data to it (eg. 16 bits), up to 16 separate pins at the end of the cable can be toggled high or low. I made my own breakout board back in the early 1990s to switch a series of 12v electric pumps on and off using opto couplers to use the low voltage logic signals to switch 12v.. To drive a stepper, you send the low voltage signals to a stepper controller which switches the voltage (say 48v) used to drive the stepper motor itself. The PC software generates the pulse stream, the board is a dumb component.
The following user(s) said Thank You: jsimeroth

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

More
21 Nov 2016 23:39 #83104 by jsimeroth
Thank you andypugh. Here is an example of a $28 breakout board that claims to buffer signals:
www.automationtechnologiesinc.com/produc...directional-breakout

My question was "Great, it buffers signals. What signals? What do I send it? a million step and direction pulses? or just one serial packet of info that specifies the speed, direction, and number of steps? or something else?" It sounds like you're saying that I should send step and direction pulses. i.e. I should generate the pulses in my software, e.g. write (in pseudocode):

"pin 1 output = high
wait = 50 us
pin 1 output = low
... "
and repeat for as many pulses as I need.

If that is true, then this question is fully answered.

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

More
21 Nov 2016 23:51 #83105 by andypugh

Thank you andypugh. Here is an example of a $28 breakout board that claims to buffer signals:
www.automationtechnologiesinc.com/produc...directional-breakout


That's a different use of the word "buffer".

The C10 is a simple dumb breakout board. All it does is protect the parallel port pins from external voltages. It's basically just a set of optocouplers.

There are three classes of devices out there:

C10 style. Just optocouplers and current/voltage conversion. Protect the inputs from high voltages, increase the voltage and current capacity of parallel port output pins.

Mesa / Pico FPGA style: Take step-rate commands through a data connection (PCI bus, EPP parallel port _data_, Ethernet) and output step pulses at the specified rate until the next rate-update from the driver on the control PC.

Smoothstepper USB: Basically a complete CNC motion controller on USB-connected board. Takes high-level coordinated motion commands from a G-code interpreter and outputs steps to the drives.

The system in all cases in the conext of a CNC machine has

1) G-code interpreter
2) motion primitives
3) step generator
4) interface hardware
5) stepper drives.

The C10 fits between 4 and 5
The Mesa / Pico cards are 3 and 4
Smoothstepper is 2, 3, 4.
The following user(s) said Thank You: jsimeroth

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

More
21 Nov 2016 23:52 #83106 by rodw

Thank you andypugh. Here is an example of a $28 breakout board that claims to buffer signals:
www.automationtechnologiesinc.com/produc...directional-breakout

My question was "Great, it buffers signals. What signals? What do I send it? a million step and direction pulses? or just one serial packet of info that specifies the speed, direction, and number of steps? or something else?" It sounds like you're saying that I should send step and direction pulses. i.e. I should generate the pulses in my software, e.g. write (in pseudocode):

"pin 1 output = high
wait = 50 us
pin 1 output = low
... "
and repeat for as many pulses as I need.

If that is true, then this question is fully answered.


As I said, it is a dumb device. You need to generate the pulse stream on the PC. The buffering they are talking about is completely different if you read it carefully.
The following user(s) said Thank You: jsimeroth

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

Time to create page: 0.150 seconds
Powered by Kunena Forum