![]() |
Originally Posted by GerryH
(Post 15555456)
Actually the ESC would have to add a lot of advance. You didn't mention what motor you have. But let's assume the minimum mechanical timing on the motor is 30 degrees. Running in reverse that's now 30 degrees of retardation not advance. So if you wanted 40 or 50 degrees of total advance, the ESC would have to add 70-80 degrees. I'm not aware of any ESC that will provide that much because it's completely outside the bounds of "normal".
You might be able to modify your sensor board to physically rotate it in the other direction, which when you're running in reverse would be adding advance. Some sensor boards just have tabs that control the range. But, you'd be much better off finding an ESC that has the ABC posts in CBA order. My Tekin RS's have the C on the left which would make it really easy to wire as you want. |
Just curious, did you just switch the 3 sensor wires or all 6? Here's the pinout of the sensor cable, just in case...
https://cimg6.ibsrv.net/gimg/www.rct...af9a1ab25b.jpg |
Originally Posted by anthonyscardina
(Post 15555682)
Just curious, did you just switch the 3 sensor wires or all 6? Here's the pinout of the sensor cable, just in case...
https://cimg6.ibsrv.net/gimg/www.rct...af9a1ab25b.jpg |
Pretty sure the reason it's not working is because of mechanical retardation you've created. For simplicity sake let's just assume normal operation and a rotation of ABC, but you'll see what the problem is. When the rotor is at sensor A it's rotationally before phase A because of mechanical advance. The ESC fires phase A on the stator pulling the rotor towards A. And then it would repeat for B then C and repeat.
Because you have mechanical retardation, when the rotor is at sensor A, it's beyond phase A, so when it fires, the rotor wants to be pulled backwards, past phase A and now the rotor is at sensor C but the ESC says "hey, I'm opposed to be at B because I go ABC. I have not idea what's going on here so I'm going to do nothing." I honestly think you have no way of fixing this unless you can modify the sensor board on your motor to change the timing so it would be negative on the can (but positive because you're running in reverse) |
You have to shift all sensors. Sensor A is normally located before coil A but in the other direction it will be before coil C. And so you can see it with sensor B and C as well
|
What do you have? 6 events and 3 sensors? You can probably move the wires. Call b phase a and b sensor a and use the end bell but lose manual timing below 20-30 degrees (if the end bell starts at 20 and ends at 60)? Never did it but if you run the motor in reverse just setup the wires so that b is a, a is c, and c is b at the coils and sensor wires. Set the end bell to 60 and it would be 0. My math works out doesnt it? 360/6 is 60 degrees per coil and if b is a you retard timing on the end bell to increase the delay.
The esc is probably just looking for the b sensor to follow the a and the c sensor to follow the b. The esc only know which coil is firing by seeing the sensors come in in sequence. If you change the coils to rotate in the opposite direction just change the wire order to retain the sequence and run the manual timing in reverse. It will appear normal to the esc. That works out logically doesnt it? you get 2 sensors on between phases and those should sequence properly too. |
Originally Posted by Bry195
(Post 15557158)
My math works out doesnt it? 360/6 is 60 degrees per coil and if b is a you retard timing on the end bell to increase the delay..
60 degrees of advance on the can would still be 60 degrees swapping the sensors, but I don't know many motors that run very well with that much timing. So to get mechanical timing somewhat in the ballpark, you'd need to get 70 degrees on the can. |
https://cimg6.ibsrv.net/gimg/www.rct...6791ad7b8.jpeg
Start by looking at the binary code for rotor position. Its not 1 sensor per phase. Rotor position comes from 1 or 2 sensors on or off. It gives more resolution. Then look at 1 mech revolution of a single phase. Push and pull 2 poles. 111 is 7 but you never get all bits on. ABC is the sensor logic. This is just enough bits to see the leading and following edge of each field and the center per phase. if the sensors come in CBA and the esc can deal with CBA all is well. If it cant then rearange the phases and sensors so it comes in acb. |
Originally Posted by Bry195
(Post 15558499)
https://cimg6.ibsrv.net/gimg/www.rct...6791ad7b8.jpeg
Start by looking at the binary code for rotor position. Its not 1 sensor per phase. Rotor position comes from 1 or 2 sensors on or off. It gives more resolution. Then look at 1 mech revolution of a single phase. Push and pull 2 poles. 111 is 7 but you never get all bits on. ABC is the sensor logic. This is just enough bits to see the leading and following edge of each field and the center per phase. A A + B B B + C C C + A There's still 120 degrees between phases. |
Originally Posted by gigaplex
(Post 15558505)
There are 6 "positions", but they boil down to this sequence:
A A + B B B + C C C + A There's still 120 degrees between phases. |
Originally Posted by Bry195
(Post 15558506)
and you get 1/2 a rev.
The sequence is: 1. A 2. A + B 3. B 4. B + C 5. C 6. C + A To move this sequence 60 degrees, you'd need to do: 1. A + B 2. B 3. B + C 4. C 5. C + A 6. A You can't do that just by swapping the definition of A, B, and C by swapping wires. |
i understand the sequence but Im not getting your point. lets confirm and simplify so that I can follow you. I havent put it on paper so its possible im missing something in my laziness.
You understand my point about 60 degrees of adjustment right? Your telling me the sensor sequence is more complicated.true but its more complicated than what you describe. All 3 sensors are providing rotor position data.off is a state just like on. 3 sensors is 3 bits of data. Least to most significant values. 1,2,4. That’s 7 but you never have all 3 on so a max value of 6. Think of it like this. Direction is determined by the order. 2 on and 1 off is a discrete value. The beginning and the end of the phase. The center of the phase is different than the rising or falling edge. 3 phases with 3 different centerpoints is easy to follow. You need to start a timer when you see the rising edge to trigger and a timer to drop the trigger when you see the centerpoint. lets just say the sequence is just abc and uvw for clockwise. so u=a, v=b, and w=c. to reverse direction you want uwv but the sequence still needs to come in abc cuz your esc is dumb. why cant you reorder the sensors to come in abc with uwv? An energized coil doesnt fire the hall sensor the passing rotor does. As long as it comes in ABC the transitions will be right (for the little thought ive given it) and the timers will process and act on the timing. The phase check logic will see a before b and be before c and everything in between. You just have the problem of the manual adjustment that 0 would now be 60. It feels like im restating myself and im not trying to. I appreciate you thinking about this and potentially providing some clarity. Im just thinking maybe i wasnt communicating well. It is a little complicated. |
Originally Posted by Bry195
(Post 15558994)
i understand the sequence but Im not getting your point. lets confirm and simplify so that I can follow you. I havent put it on paper so its possible im missing something in my laziness.
You understand my point about 60 degrees of adjustment right? Your telling me the sensor sequence is more complicated.true but its more complicated than what you describe. All 3 sensors are providing rotor position data.off is a state just like on. 3 sensors is 3 bits of data. Least to most significant values. 1,2,4. That’s 7 but you never have all 3 on so a max value of 6. Think of it like this. Direction is determined by the order. 2 on and 1 off is a discrete value. The beginning and the end of the phase. The center of the phase is different than the rising or falling edge. 3 phases with 3 different centerpoints is easy to follow. You need to start a timer when you see the rising edge to trigger and a timer to drop the trigger when you see the centerpoint. lets just say the sequence is just abc and uvw for clockwise. so u=a, v=b, and w=c. to reverse direction you want uwv but the sequence still needs to come in abc cuz your esc is dumb. why cant you reorder the sensors to come in abc with uwv? An energized coil doesnt fire the hall sensor the passing rotor does. As long as it comes in ABC the transitions will be right (for the little thought ive given it) and the timers will process and act on the timing. The phase check logic will see a before b and be before c and everything in between. You just have the problem of the manual adjustment that 0 would now be 60. It feels like im restating myself and im not trying to. I appreciate you thinking about this and potentially providing some clarity. Im just thinking maybe i wasnt communicating well. It is a little complicated. A A + B to X + Y Y Swapping wires around to turn A into X, C into Y etc, won't change the fact that the "X + Y" state is the rotor aligning to mid way between two sensors, and an "A" state is the rotor aligning to a single sensor. Swapping wires won't let you change a single signal into a double signal or vice versa. |
Originally Posted by gigaplex
(Post 15559060)
If you need the sequence to go from:
A A + B to X + Y Y Swapping wires around to turn A into X, C into Y etc, won't change the fact that the "X + Y" state is the rotor aligning to mid way between two sensors, and an "A" state is the rotor aligning to a single sensor. Swapping wires won't let you change a single signal into a double signal or vice versa. |
It just hit me. what i described does get the center point of the waveform aligned to the sensor. you can re-order and do as i described. what you cannot do is retain the relationship between rising and falling edge sensor. Alright im with you and nobody gave me a clue.
there is an error routine to check the phasing based on the direction the sensors come in to the esc. direction is usually just a routine that says something like a before b and b before c if false error react. I cant guarantee that someone didnt do the extra work to check direction with the transitions but most of the checks are just based on the logic that tells the esc the direction. not the logic that starts the timers for the transistors. you have a processor that needs to manage triggers in microseconds for moving the rotor, controlling the torque, a handful of errors, sensor loss and a dozen or so other things. I wouldnt write the code to check the transitions but im not everyone. I’ll bet it will rotate the motor but its going to do it badly. |
| All times are GMT -7. It is currently 02:27 AM. |
Powered By: vBulletin v3.9.3.9 Patch Level 3
Copyright © 2026 MH Sub I, LLC dba Internet Brands. All rights reserved. Use of this site indicates your consent to the Terms of Use.