Monday, November 26, 2012

Something new is coming...

I got some extra outputs available... say 6 analog and 12 digital...

Anyone for a 6DOF extension?


Tuesday, November 20, 2012

What's the purpose of AMC644USB?

Many misunderstand the purpose of the AMC644USB board and what exactly it does. 

First of all, the VFD inverters are just speed drivers for the AC motors meaning that they only set the speed and the direction of the motor. They are not intelligent in any way to be able to determine the position of the motor or place the motor to curtain position. Some inverters have feedback from the motor just to verify the correct speed. Even if you connected them to a computer through a RS485 interface the only thing you can do is to adjust their speed.

This is where AMC644USB comes into to fill in that missing link of motion control. The AMC644USB receives the motion data from the computer (positions) in high speeds of 1ms intervals, then creates the proper voltages and signals to set the correct speed and direction needed from the inverters and then reads the position of the motors using the potentiometers or any other encoders attached on the motors as feedback to precisely stop each motor to the desired position. These positioning calculations are performed 5000 times per second that gives fine positioning resolution and very fast reaction times.

Monday, November 19, 2012

Real Breakthrough In Speed (again)


I was looking for a way to make ADC more immune to noise and during this search I managed to increase the speed of the ADC routine to a level that now takes only 26us to sample each ADC channel (before 192us was spend in ADC sampling for each channel). The noise is eliminated now so I had to run some speed tests again to see the overall improvement.

With this improvement now, the total program cycle delay is only 200us average. The firmware now runs 5000 times per second (average) which is 5Khz, while the first release of this firmware was limited only to 1000 times per second (1Khz).

Not to mention that the above readings are with the LCD user menu active, running in realtime along the rest of the code.

This is a capture with a logic analyzer of a serial packet (230kbps) along the program cycle speed.

Wider view of the capture above to get a good idea how fast is the cycle speed now.

So now using ADC as position input feedback for the motors, the total loop is as fast as with digital encoders.

Thanks for reading this,


Wednesday, November 14, 2012

New speed measures on latest firmware 1.2e


It was time to test new higher serial baud rate speeds today. I reached up to 230400bps with no problems. I used a logic analyzer to capture the serial input next to the loop cycle of the firmware.

I got a really good surprised by the results as with the constant improvements, I forgot to check how fast the main loop speed was going.

Just to say that now the refresh rate is 1666 times per second!!! So the main loop is running now in 1.666KHz !!

Also you may notice that since the serial input is not reside on the main loop but in an interrupt, the main loop is actually faster than the 1KHz update rate of the serial data.

Have a look on the capture screens for 115200bps and 230400bps speed.

 115kbps serial speed detail

  115kbps serial speed 


  230kbps serial speed detail

 230kbps serial speed

The above measurements are with ADC inputs as position input.

Now lets see what happens with digital encoder as position inputs:

The average loop cycle of the main program is around 5000 times per second now (5KHz). The variation is because of the extra delay introduced during receiving data packets.

Thanks for looking,