- Posts: 461
- Thank you received: 0
AX58100
1 year 10 months ago #315774
by Hakan
@COFHAL: You didn't get it to work? I'll try to connect up one as I haven't tested it on this board. It may take a few days though.
@SOLD: Where do you need that extra speed in the Ethercat client? Anyways, it should work with the existing soes library. Check SPI settings, reset line pin, and the SYNC0 pin.
@SOLD: Where do you need that extra speed in the Ethercat client? Anyways, it should work with the existing soes library. Check SPI settings, reset line pin, and the SYNC0 pin.
Please Log in to join the conversation.
1 year 10 months ago #315778
by Hakan
Well, I had it right here on the table.
Add encoder_config() to setup() like this
Also, in the call to the constructor, change the Index_Z pin to PA3 according to the schematics. I didn't check that, leave it to you to check that the callback is triggered when the encoder passes the index slot
Add encoder_config() to setup() like this
Code:
// Compute this scale factor only once
input_freq = FrequencyTimer->getTimerClkFreq() / FrequencyTimer->getPrescaleFactor();
encoder_config(); // Needed by encoder, possibly breaks some timers.
ecat_slv_init(&config);
attachInterrupt(digitalPinToInterrupt(PC0), globalInt, RISING); // For testing, should go into Enable_interrupt later on
}
Also, in the call to the constructor, change the Index_Z pin to PA3 according to the schematics. I didn't check that, leave it to you to check that the callback is triggered when the encoder passes the index slot
Code:
MyEncoder Encoder1(TIM2, PA3, indexPulseEncoderCB1);
Please Log in to join the conversation.
1 year 10 months ago #315861
by SOLD
I followed your advice.
and enable
Create new esi, connect pdo
Create a new config and find the pin command inside Hal.
I get response in encfrequenry when I spin the motor
And there is response in encpos but not perfect. When I don't set scale, the encpos number will change up and down but not much.
When I set scale, the encpos value will become decimal as shown in the picture.
What should I do next?
Attachment not found
Attachment not found
and enable
Attachment not found
Create new esi, connect pdo
Attachment not found
Create a new config and find the pin command inside Hal.
Attachment not found
I get response in encfrequenry when I spin the motor
And there is response in encpos but not perfect. When I don't set scale, the encpos number will change up and down but not much.
When I set scale, the encpos value will become decimal as shown in the picture.
What should I do next?
Please Log in to join the conversation.
1 year 10 months ago #315869
by Hakan
You should enter problem-solving mode and try to solve it
First, verify that the encoder as such works and gives the right values.
Check schematics and hardware setup since you use your own pcb. A and B must go in to PA0 and PA1. They electric signal must be NPN open collector. Use interface circuitry if needed.
Check that it counts up and down using the debugger.
Add a line first in loop()
Use this a breakpoint and watch that pos changes value as you rotate the encoder shaft.
Read up on debugger usage if you haven't used it before. But it is basically just to start it with Run -> Start debugging and then single step into or single step over and watch values in the left column.
First, verify that the encoder as such works and gives the right values.
Check schematics and hardware setup since you use your own pcb. A and B must go in to PA0 and PA1. They electric signal must be NPN open collector. Use interface circuitry if needed.
Check that it counts up and down using the debugger.
Add a line first in loop()
Code:
double pos =Encoder1.currentPos();
Read up on debugger usage if you haven't used it before. But it is basically just to start it with Run -> Start debugging and then single step into or single step over and watch values in the left column.
Please Log in to join the conversation.
1 year 10 months ago #315872
by SOLD
I think so too. For the circuit I designed AB, I am PA0 PA1, will check the signal to be NPN again.
Is this part enabled correct?
Is this setScale value to be enabled or not? Or use the value from RXPDO 0x7000 "Scale"
Attachment not found
Is this part enabled correct?
Code:
#if 1 Obj.IndexStatus = Encoder1.indexHappened(); Obj.EncPos = Encoder1.currentPos(); Obj.EncFrequency = Encoder1.frequency(longTime.extendTime(micros())); Obj.IndexByte = Encoder1.getIndexState();
Is this setScale value to be enabled or not? Or use the value from RXPDO 0x7000 "Scale"
Code:
//Encoder1.setScale(2000);
Please Log in to join the conversation.
1 year 10 months ago #315874
by Hakan
But don't work in linuxcnc when there is a problem. First, work in the MCU so you eliminate many steps that can be wrong. And use the debugger.
Leave the scale statement commented out. It is set to 1.0 in the class as default.
When you set it to 2000, there are 2000 per revolution, or 500 pulses. One revolution is 1.0. Set scale to 1.0 to see every step more easily.
If it does count up and down, it works, doesn't it. What exactly doesn't work?
Leave the scale statement commented out. It is set to 1.0 in the class as default.
When you set it to 2000, there are 2000 per revolution, or 500 pulses. One revolution is 1.0. Set scale to 1.0 to see every step more easily.
If it does count up and down, it works, doesn't it. What exactly doesn't work?
Please Log in to join the conversation.
1 year 10 months ago #315886
by SOLD
Now I unplug the TXS0108EPWR and connect it directly to mcu with R1.5k pull up to 5V. it work
I can find the counting up when the motor shaft is rotated, but sometimes when I let go of the rotation the numbers will continue to count until the shaft is rotated again.
Another problem is that the numbers will only count one way even when the motor is rotated in reverse direction. This may be due to a faulty Z phase for the index. I am investigating further.
I can find the counting up when the motor shaft is rotated, but sometimes when I let go of the rotation the numbers will continue to count until the shaft is rotated again.
Another problem is that the numbers will only count one way even when the motor is rotated in reverse direction. This may be due to a faulty Z phase for the index. I am investigating further.
Attachment not found
Please Log in to join the conversation.
Time to create page: 0.141 seconds
