RC plane motor questions

I've been interested in small brushless motors for some time and it seems like the ones made for RC use are plentiful and cheap. Bujt I'm having a hard time getting my questions answered about these things. My uses will not be in some type of RC toy, but "toys" that I want to make for myself. I know I will need to get an ESC to drive the motor. But what kind of signal does the ESC need? The same type of signal that RC servos use? Do I need to get a programming card for the ESC? And how is the rpm/volt detrermined? I'm thinking that I should get a kit motor to learn about them but I also want to get some regular motors to compare. It looks like Hobby King might be the best place to buy the motors from but I don't know. Any help would be greatly appreciated. Thanks, Eric

Reply to
etpm
Loading thread data ...

A plain, normal ESC will use the same signal a servo uses. It connects to the receiver just like a servo. There are also special ESCs that are controlled by SPI or similar. These are used where very quick response times are needed.

It depends. Some higher-end ESCs allow you to tune their parameters, but they come preconfigured to working defaults, so will work fine in most applications. Some ESCs are programmed using the throttle stick in connection with beeps emitted through the motor, some need a programming card, while others are connected to a PC. Some controllers cannot be reconfigured at all.

It is determined by a number of factors, such as magnet strength, number of windings, number of poles, physical size, and more.

I've never built my own motor, so I can't help you there.

I have not (yet) dealt with them, but I have heard from numerous happy customers, so they seem to be a decent outfit.

Reply to
Robert Roland

I can't help with your questions, but let me chime in RE: Electronic Speed Controllers. Cooling is really

*really* important. At least one popular model:
formatting link
...uses a heat sink which only makes contact with a select few of the transistors it is meant to cool:
formatting link
is a grid of 3 x 5 = 15 transistors with only 7 survivors after a hot run with low batteries.

--Winston

Reply to
Winston

I'm not sure what you're making, but the power to weight of those brushless motors is quite impressive.

There's a catch though, if you're not using them to just run a fan, which is all they're good for.

they lack position sensors, so you can't just spin them back and forth like a regular motor unless you have some sort of really awesome motor controller.

They seem to now have brushless RC car motors and controllers. I'm not sure how those work though.

Reply to
Cydrome Leader

I believe the brushless car motors have hall sensors for commutation, the same as an industrial servo brushless would.

Reply to
Tim Wescott

That's pretty much what I would say. The only exception is that the stuff Hobby King sells can have quality problems, both the kind that causes infant mortality, and issues with long-term reliability and robustness. If you really want it to last, particularly if you're stressing the bearings in any way, Hobby King's products may not be the best.

AXI, eFlight, Scorpion, Castle Creations, and Plettenberg are all better (1st tier, or almost so) motor brands that I know. But they're more spendy -- use the Hobby King stuff to get your feet wet, then go from there.

Reply to
Tim Wescott

Thanks Rob, Winston, Cy and Tim, I knew there would be someone here who would be familiar with these things. I have two projects in mind. The first is a gyroscopic stabiliser for a digital camera. I built a prototype with brass flywheels and pager motors. It worked OK but the life of the pager motors is low. And they were a little noisy. So I'm thinking that maybe one of these new fangled three phase brushless motors used with good bearings might work. I seem to remember downloading a circuit built around a 555 timer that puts out the pulses used by servos. So with a cheap ESC, LiPo battery, and brushless motor I might be able to make a lightweight gyro stabiliser. The other project that I've been working on is a spinning wheel with a brake on it. The idea is that when the brake is slowly released the wheel will start to spin, with less braking leading to faster spinning. So I need a motor that can remain stalled without overheating. With a stalled brushed motor the energy delivered is not shared equally by all the windings and so maybe it will overheat. I don't know if the three phase brushless motor drives keep energising windings in sequence when the motor is stalled. This something I want to find out. Eric

Reply to
etpm

How are you dynamically balancing your rotors? Have been looking for a small dynamic balancer that could be built by an individual without bankruptcy staring me in the face. Would be of interest for doing a bunch of projects involving high-speed revolving parts. Think model turbojets...

As far as stalled rotors, a friction clutch is the usual solution, motor doesn't see a real current spike that way. Just have to replace the clutch if you wear it out from stalling too frequently.

Stan

Reply to
stans4

The rc car's "electronic speed control" (ESC) support both sensor and sensor less brushless motors. You can program into the handheld transmitter throttle and braking endpoints and curves, linier or otherwise. The speed controlls can deliver lots of power. My Emaxx 1/10 scale rc truck will pull

300 amps acceleration and 180 amps on braking at 16.8 volts. With motors pulling lots of power things can get hot in a hurry. Spektrum transmitter's and receivers are what I prefer. The "2.4Ghz" units eliminate interference and channel crystal changing when near other units. They will automatically switch up to 80 channels/units in the same location. You program failsafe throttle and other servo positions in case of signal loss. Check your local rc racing club. They usually have a web site with help and buy/sell forums
Reply to
CNC Solutions

Greetings Stan, I'm trying to avoid slip ctutches. For a couple reasons. First, they wear out, and second they tend to have higher breakaway friction than running friction. I can buy special clutches that do not exhibit this stick/slip problem but they are expensive. If anything the breakaway friction should be lower than running friction. I'm hoping that I can run a motor at a much lower current than it is rated for and so can keep it stalled indefinitely. I didn't balance my rotors for the gyro. They were machined carefully and all at once except for a facing cut after being parted off. The parallelism was better than .0001" and concentricity was basically perfect because all diameters were machined at the same time. Cheers, Eric

Reply to
etpm

For serious applications:

formatting link
jsw

Reply to
Jim Wilkins

R/C sends pulses to the servos or speed controls, they get a pulse about every 20mS or so. The pulse for neutral for a servo, or half speed for an ESC is approximately 1.5mS. The pulse width range is from 1mS to 2mS plus/minus a little fudging on the trim, etc. So, if you want to experiment you can use something like 555 timer IC's or I would suggest something like a Basic Stamp or Arduino. I prefer the Arduino because they are cheaper and much more powerful.

I don't know exactly how the R/C brushless motors and speed controls work, they may be something like sensorless vector ac drives. Anyway, I'm not sure exactly but they probably work a lot like 3 phase motors with AC variable speed drives.

I think some modern speed controls sense the pulse and automatically program themselves to work properly, the pulse they receive on power up is the OFF and then going the other way increases speed. For example, if they are powered up receiving 1ms pulses, that is off and 2ms pulses would be full throttle. Likewise if they are powered up receiving 2ms pulses then 1ms pulses would be full throttle.

Hope this helps

RogerN

Reply to
RogerN

You might want to check out the gyroscopes used in R/C helicopters to stabilize them, they are real gyroscopes except they use vibration to sense rotation instead of spinning a flywheel. The vibrating crystal resists rotation just like a flywheel or pendulum would, it's called the corollis or similar (from memory) effect. These electronic gyros are used in r/c helicopters and also things like the steady-shot in digital cameras. I bought a couple of Murata gyroscopes several years ago but haven't done much with them yet, future project though....

RogerN

Reply to
RogerN

Back in the late 1970s, when living in the US, I saw IIRC mil surplus gyroscopes for stabilising binoculars on sale in some magazine, can't remember which but they may still be around. At the time I was involved in archery and using a 95 lb long bow and took the piss out of the target archers and their pulleys and stabilisers and such and suggested they fit some. It wasn't long after I saw someone doing just that. It was about the same time I realised the mental side of any target sport as shooting at a standard size archery target would result in a given group then placing the likes of a bottle cap in the middle of the target would result in a consistently and significantly smaller group, the smaller target resulting in greater focus.

Reply to
David Billington

Instead of screwing around with 555 circuits, you really ought to consider a microcontroller. Making servo pulses with an AVR is super- simple, maybe ten lines of code to get it set up, and from there, you just change a register value to pick a new speed. With one of the AtTiny parts, you'd actueally have fewer components than you would with a 555.

Reply to
rangerssuck

Since Roger is suggesting a roll-yer-own approach I thought I'd offer an example of a software only servo driver.

- written for a 16 Mhz AT (way back last century)...

32K of MASM source code Assembles to a 3k executable file. :)

There is some pretty cool code in there. Table driven keyboard parser, default parameter cloning, automatic servo ramp back and forth.

The table driven key parser equalizes the overhead a lot better than a long list of "IF key = ???" tests. More readable too.

Since it's Assembly, it's pretty straight forward to port to any micro.

But trimmed down here of all the support stuff, DOS keys, printing, number formatting, screen stuff, etc.

The heart of the servo driver is located at K9: and calls a software delay loop at Dlay_Ax

Basic bit fiddling... Set the bit high, count on fingers and toes as directed, set the bit low. That makes the PWM signal that goes to the servo (or ESC).

Just below Start: is the key loop... wait for a key translate it to a (possible) key handler do the handler (change position, set a parameter, clone the program, etc) send another pulse loop back to do it all over again.

There are 4 delay parameters used in this program: I would think these would be common to any software only servo driver.

PT is the delay between pulse trains. This is a single channel driver, so this part simulates the time an 8 channel system would spend servicing the other 7 channels.

LD is a 1 msec lead in delay.

SD is a short delay to make the pulse width happen. (SD = 00h is left, SD = 80h is centered, SD = FFh is right) This delay will vary from 0 to 1 msec to make the PWM data pulse vary from 1 to 2 msec. Or in other words, this is the PWM DATA part.

PD is the time delay between pulses in a pulse train.

At a later time and faster computer (33 Mhz 386) I had eight channels running via a single printer port using the system timer. Those were fun days...

I think it would be easier to port to a PIC, Stamp, or Propeller than to get this running on my 2.6 GIG hz Windows machine. (getting ANY Real Time Controls running on a Windows machine is a pain)

Well, anyway, presented here just to dig the C-hags... :)

page ,132

LPT1 EQU 0278H ' IO port addresses LPT2 EQU 0378H

;----------------------------------------------------;

CSEG SEGMENT 'CODE' ASSUME CS:CSEG, DS:CSEG, ES:CSEG ORG 100H ; FOR .COM FILE

SERVO PROC FAR

JMP START db cr,' ', cr,lf db tab,tab,tab,'Direct Control Servo Driver',cr,lf db tab,tab,tab,'Copyright Richard Lamb 1993', cr,lf db tab,tab,tab,'Demo: January 25, 1993', cr,lf db 26 ;================================================= ; PROGRAM DATA AREA ;=================================================

org servo+70h

; ---------------------------------------------------- ; these parameters are updated via clone proceedure | ; | PT DW 0300H ; PULSE TRAIN DELAY | LD DW 013DH ; LEAD-IN DELAY (1 MSEC) | SD DW 0007H ; SHORT DELAY TO MAKE PULSES | PD DW 0400H ; DELAY BETWEEN PULSES | PC DB 0AH ; PULSE TRAIN COUNT | PORT DB 2 ; which printer port | RAMPFLAG DB 00H ; 0 = on, non-zero = off | RAMPDIR DB 00H ; 0 = one way, 1 = the other | SRV DB 01H ; SERVO CHANNEL NUMBER | POS DB 80H ; ATTEMPTED POSITION | ; | ; ----------------------------------------------------

LPT dw 00 ; LPT1 I/O ADDRESS

F_NAME db 'SERVO.COM',0 ; for clone routing f_hand dw 0

X_ROW DB 0 ; CURSOR ROW FOR LOC_XY X_COL DB 0 ; CURSOR COLUMN FOR LOC_XY X_CSR DW 0 ; CURSOR SIZE

CRT_HGT DB 24h ; bottom line (0 based) CRT_WID DB 79 ; rightmost column (0 based) COLOR DB 1FH ; COLOR ATTRIBUTE FOR CLS

M_open db tab,tab,'Error Locating File ',bell, '$' M_move db tab,tab,'Error Locating Data',bell, '$' M_writ db tab,tab,'Error Writing Data ',bell, '$' M_clos db tab,tab,'Error Closing File ',bell, '$' m_good db tab,tab,'SERVO.COM Defaults Updated ',bell,'$' M_Key db tab, ' [ Press a key to resume.. ]$' m_blank db tab,tab, 39 dup(' '),'$' m_lpt1 db 'LPT1$' M_LPT2 db 'LPT2$'

SCRTXT DB ' SERVO.COM Servo Timing Parameters Demo',cr,lf DB ' Direct Drive Method Copyright R. Lamb 1993',cr,lf db lf SCRW DB tab,' t - Train Delay T + Train Delay PT ',cr,lf SCRL DB tab,' l - Long Delay L + Long delay LD ',cr,lf SCRS DB tab,' s - Short delay S + Short Delay SD ',cr,lf SCRP DB tab,' p - Position P + Position POS',cr,lf DB tab,' r Ramp OFF R Ramp ON ',cr,lf DB cr,lf db lf DB tab,tab,' 1 2 Select servo channel 1 or 2',cr,lf db tab,tab,' 0 3 Turn OFF servos, or run BOTH ',cr,lf db tab,tab,' F1 F2 Select printer port 1 OR 2',cr,lf DB tab,tab,' X move to Right limit ', cr, lf DB tab,tab,' Y move to Left limit', cr, lf DB tab,tab,' Z move to Zero (centered) ',cr,lf db tab,tab,' Arrow keys - Top row = fast',cr,lf db tab,tab,' Mid row = medium',cr,lf db tab,tab,' Bot row = slow',cr,lf db tab,tab,' ~ to clone new defaults ',cr,lf DB tab,tab,' ESC to terminate program ',cr,lf db '$'

M_ON db 'On $' M_OFF db 'Off $' M_Left db 'Left $' M_RIGHT db 'Right$'

P_F1 DB 'F1 $' P_F2 DB 'F2 $' P_F3 DB 'F3 $' P_F4 DB 'F4 $' P_F5 DB 'F5 $' P_F6 DB 'F6 $' P_F7 DB 'F7 $' P_F8 DB 'F8 $' P_F9 DB 'F9 $' P_F10 DB 'F10$'

FUN_TAB: ;-------------------------------; ; LIST OF KEY CODES TO LOOK FOR ; ;-------------------------------;

DB '12' db '30' DB 'tT' DB 'pP' DB 'zZ' DB 'lL' DB 'sS' DB 'xX' DB 'yY' DB 'rR' db '~~'

DB 71, 72, 73 ; 7 8 9 KEYPAD KEYS DB 75, 5, 77 ; 4 5 6 (ARROWS) DB 79, 80, 81 ; 1 2 3

DB 59, 60, 61 ; F: 1 2 3 FUNCTION KEYS DB 62, 63, 64 ; F: 4 5 6 DB 65, 66, 67 ; F: 7 8 9 DB 68 ; F: 10

DB 0 ; ARNOLD

FUN_ADDR: ;-------------------------------; ; JUMP TABLE FOR HANDLER CODE ; ;-------------------------------;

DW chan1, chan2 dw chan3, chan0 DW decT, incT DW decP, incP DW zero, zero DW decL, incL DW decS, incS DW left, left DW right, right DW rampoff, rampon dw clone, clone

DW KHOME, KUARR, KPGUP DW KLARR, KEY5, KRARR DW KEND, KDARR, KPGDN

DW KFUN1, KFUN2, KFUN3 DW KFUN4, KFUN5, KFUN6 DW KFUN7, KFUN8, KFUN9 DW KFUN10

DW 0

;=======================

START: mov bx, lpt1 cmp port, 1 jz P1

mov bx, lpt2

P1: mov lpt, bx

call Get_Rows_N_Cols CALL CLS CALL Screen

MOV DX, LPT ; SET DX TO POINT TO PRINTER PORT MOV AL, 0 OUT DX, AL ; SET ALL BITS LOW TO START

KEYLUP: CALL INKEY CALL UCASE

KESC: CMP AL, 27 ; ESCAPE KEY ? JNZ K1

QUIT: MOV ax, 1700h CALL loc_AX MOV AH,04CH ; MILLER TIME! MOV AL, 0 ; RETURN CODE INT 21H

;-------------------------------------------------

K1: MOV SI, OFFSET FUN_TAB ; SEARCH FUN_TABLE FOR KEY IN AL MOV BX, 0 ; CLEAR TABLE INDEX K3: CMP BYTE PTR [SI+BX], AL ; FIND HIM? JE K4 ; GOT HIM ! Jump to dispatcher... INC BX ; POINT TO NEXT BYTE CMP BYTE PTR [SI+BX], 0 ; CHECK END OF TABLE ? JE K0 ; END OF TABLE ! DON'T BOTHER. JMP SHORT K3 ; NO, KEEP LOOKIN...

;------------------------------------------------- K4: ; OK, AL HAS THE KEY - AND IT WAS IN THE LIST. ; BX HAS AN OFFSET COUNT (0 TO ?) BY ONESIES...

MOV AX, BX ; INDEX COUNT LEA BX, FUN_ADDR ; TABLE OF HANDLER ADDRESSES ADD AX, AX ; X2 ADD BX, AX ; OFFSET OF MATCHING HANDLER MOV BX, [BX] CALL BX ; DO HANDLER ROUTINE...

;--------------------------------------------------------- ;---------------------------------------------------------

K0: CMP rampflag, 0ffh ; no ramp if FF JZ k9 R0: CMP rampdir, 0 ; 0 is decrement JNZ r1 ; bif increment

CMP pos, 1 ; decrement pos JA r2

MOV rampdir, 1 ; change direction JMP r0 ;-------------

R2:

DEC pos ; decrememt pos call sho_pos JMP k8 ; doit

R1: CMP pos, 0ffh JB r3

MOV rampdir, 0 ; change dir JMP r0 ;-------------

R3: INC pos call sho_pos JMP k8 k8: MOV AX, 083BH ; show direction CALL LOC_AX ; locate screen row, col

lea dx, M_Right cmp rampdir, 0 jz k81

lea dx, M_Left k81: call print$

K9: ; test table driven pulse routine ================

MOV AL, POS ; DESIRED SERVO POSITION MOV BL, AL ; KEEP POSITION CODE IN BL

MOV DX, LPT ; ACTIVE PRINTER PORT MOV AL, SRV ; SELECT SERVO CHANNEL NUMBER

OUT DX, AL ; START OF THE PULSE ****

K10: MOV CX, LD ; lead-in delay (1 mSec)

K10B: NOP ; 3 clock cycles NOP LOOP K10B

MOV CH,0 ; 2ND HALF; MOV CL,BL ; BL HAS POSITION CODE FROM TABLE

K12: PUSH CX MOV CX, SD ; short delay (1mSec/# of table positions) K12B: NOP LOOP K12B

NOP NOP

POP CX LOOP K12

MOV AL,0 ; TURN BITS OFF OUT DX, AL ; END OF THIS PULSE ****

; end of pulse routine ===========================

MOV AX, PT ; delay between pulses CALL DLAY_AX JMP KEYLUP ; ROLL ANOTHER ONE.....

;--------------------------------------------------------- ;---------------------------------------------------------

SERVO ENDP

;--------------------------------------------------------- ;=========================================================

DLAY_AX PROC NEAR ; LONG DELAY - AX HAS TICK ITERATIONS PUBLIC DLAY_AX, LD_1, LD_2

PUSH CX PUSH AX LD_1: MOV CX, 0FH ; LONG 'NUF ? LD_2: LOOP LD_2 DEC AX CMP AX, 0 JNZ LD_1 POP AX POP CX RET

DLAY_AX ENDP

;=========================================================

;=========================================================

;=========================================================

;=========================================================

CSEG ENDS

END SERVO

Reply to
CaveLamb

Back about 1985 I wrote a PC-AT assembly driver for an H bridge motor controller to test open-loop stepper damping schemes for a printer carriage drive. I don't have the code but IIRC it was only 10 - 20 lines, OUT instructions separated by fixed countdown loops to time the pulses.

jsw

Reply to
Jim Wilkins

Why control motor speed with a brake when you can control it actively? Get an ESC that has a helicopter mode, program it right, and it'll give you a specific RPM at the motor for a specific pulse width at the input.

Reply to
Tim Wescott

Note, too, that most ESC's won't just start up and go -- they need to see the command at idle for a while, then they'll recognize a command for a higher speed. This is a safety feature, to keep that great big pair of steak knives you have mounted on the front of your plane from starting to spin if you forgot to set the throttle on your transmitter to idle before you plugged in the battery in the plane.

Reply to
Tim Wescott

The damage was a result of a malfunction caused by water intrusion. I will add an update to that thread soon.

Reply to
Robert Roland

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.