Item 0145

DESIGN: ElectrotorPlus ~ MRGA - Gyro - Database

ELECTROTOR - Gyro ~ Database Supporting Information

FORMS:

 

The following is not on the forms; at present.

The maximum Processional Frequency [OmegaZ] = [Max Sector at 15º teeter] / [Interval] = 0.004614 rad / 0.00278 sec = 1.66 rad/sec.

The maximum Processional Frequency [OmegaZ] = Precession [OmegaY] @ Max Torque [QX] / [JmZ] = 460 / 277 = 1.66 rad/sec.

Note that only half the torque generated by the rotorhub will go to the gyro. The other half will go directly to the mast.

Coding:

Module for Gyro form: Insets (tabs) are not transferring from Word to Web page.

Option Compare Database

Option Explicit

 

Private Sub Calculate_Gyro_Data_Click()

On Error GoTo Err_Calculate_Gyro_Data_Click

Dim Sector As Integer 'To step through Sectors in 90-deg about Z-axis.

Dim DegR As Single 'Rotorhub asimuth on Z-axis in degrees.

Dim RadR As Single 'Rotorhub asimuth on Z-axis in radians.

'### Dim DegX As Single 'Teeter on X-axis in degrees.

'### Dim RadX As Single 'Teeter on X-axis in radians.

Dim QX As Single 'Torque about X-axis at each sector.

Dim StartTime As Single 'Accumulative time at start of Sector.

Dim EndTime As Single 'Accumulative time end of Sector.

Dim MidSectorTime As Single 'Time at mid location in a Sector.

Dim PreviousBeta As Single 'Blade flap (in radians) at start of time interval.

Dim StartBeta As Single 'Blade flap (in radians) at time interval.

Dim EndBeta As Single 'Blade flap (in radians) at time interval.

Dim MidSectorBeta As Single 'Blade flap (in radians) at time interval.

Dim BetaDeg2 As Single 'Blade flap (in degrees) at time interval. '### Because BetaDeg is used in form.

Dim OmegaX As Single 'Angular speed about X-axis.

Dim OmegaY As Single 'Angular speed about Y-axis.

Dim AlphaX As Single 'Angular acceleration of precession.

Dim AlphaY As Single 'Angular acceleration of precession.

Dim QY As Single 'Torque about Y-axis at each sector.

Dim LX As Single 'Angular momentum about X-axis at each sector.

Dim LY As Single 'Angular momentum about Y-axis at each sector.

Dim DeltaY As Single 'Incremental change in pitch/roll about Y-axis for 1 rotoation (360-deg) of the rotorhub.

Dim dbs As Database

StartTime = 0 'Set initial accumulative time value to zero.

EndTime = 0 'Set initial accumulative time value to zero.

StartBeta = 0 'Set initial teeter angle to zero.

EndBeta = 0 'Set initial teeter angle to zero.

 

Set dbs = CurrentDb

For Sector = 1 To (SectorsR / 4) Step 1 'Loop through sectors.

EndTime = StartTime + Me!Interval 'Set to the time at the end of the current sector.

MidSectorTime = StartTime + (Me!Interval / 2) 'Set the azimuth of bladeA to the mid position in the current sector.

 

'Post data to [Gyro] table.

'----------- ~ Z-axis ~ -----------------

RadR = (MidSectorTime / 1) * Me!OmegaR

dbs.Execute "UPDATE Gyro SET PsiRrad = " & RadR _

& " WHERE Sector = " & Sector & ";" 'Mid Azimuth of bladeA in current Sector, in degrees.

DegR = convert((RadR), "Radian", "Degree") 'Get angle in first quadrant.

dbs.Execute "UPDATE Gyro SET PsiRdeg = " & DegR _

& " WHERE Sector = " & Sector & ";" 'Mid Azimuth of bladeA in current Sector, in radians.

'----------- ~ X-axis ~ -----------------

MidSectorBeta = Me!BetaRad * Sin(OmegaR * MidSectorTime) 'Agorithim from Wikipedia [Sine wave],The amount of teeter (in radian) in the middle of the current sector.

dbs.Execute "UPDATE Gyro SET Beta = " & MidSectorBeta _

& " WHERE Sector = " & Sector & ";"

BetaDeg2 = MidSectorBeta * 57.278195 'Convert teeter from radians to degrees at the current sector

dbs.Execute "UPDATE Gyro SET BetaDeg = " & BetaDeg2 _

& " WHERE Sector = " & Sector & ";"

QX = Me![CF] * 2 * Sin(-[MidSectorBeta]) * Me![ee] 'Torque from teetering rotorhub.

dbs.Execute "UPDATE Gyro SET QX = " & QX _

& " WHERE Sector = " & Sector & ";"

StartBeta = Me!BetaRad * Sin(OmegaR * StartTime) 'Work out the amount of teeter (in radian) in the middle of the current sector

EndBeta = Me!BetaRad * Sin(OmegaR * EndTime) 'Work out the amount of teeter (in radian) in the middle of the current sector

OmegaX = (EndBeta - StartBeta) / Me!Interval 'Angular velocity about the X-azis.

dbs.Execute "UPDATE Gyro SET OmegaX = " & OmegaX _

& " WHERE Sector = " & Sector & ";"

LX = Me!JmXY * OmegaX 'Angular momentum.

dbs.Execute "UPDATE Gyro SET LX = " & LX _

& " WHERE Sector = " & Sector & ";"

AlphaX = (EndBeta - StartBeta) * Me!Interval ^ 2 'Angular Acceleration.

dbs.Execute "UPDATE Gyro SET AlphaX = " & AlphaX _

& " WHERE Sector = " & Sector & ";"

'----------- ~ Y-axis ~ -----------------

OmegaY = (QX * (Me!SplitQR / 100)) / (Me!JmXY * OmegaX) 'Angular velocity about the Y-axis.

dbs.Execute "UPDATE Gyro SET OmegaY = " & OmegaY _

& " WHERE Sector = " & Sector & ";"

QY = QX '##### THIS IS PROBABLY WRONG. 'Torque.

dbs.Execute "UPDATE Gyro SET QY = " & QY _

& " WHERE Sector = " & Sector & ";"

LY = Me!JmXY * OmegaY 'Angular momentum.

dbs.Execute "UPDATE Gyro SET LY = " & LY _

& " WHERE Sector = " & Sector & ";"

AlphaY = 1234 'Angular Acceleration. '#### THIS HAS NOT YET BEEN CALCULATED

dbs.Execute "UPDATE Gyro SET AlphaY = " & AlphaY _

& " WHERE Sector = " & Sector & ";"

DeltaY = 0.1234 '#### THIS HAS NOT YET BEEN CALCULATED

dbs.Execute "UPDATE Gyro SET DeltaY = " & DeltaY _

& " WHERE Sector = " & Sector & ";"

'----------------------------------------

StartBeta = EndBeta

StartTime = StartTime + Me!Interval

 

Next Sector

Set dbs = Nothing

 

Dim stDocName As String

Dim stLinkCriteria As String

 

stDocName = "Gyro Data"

DoCmd.OpenForm stDocName, , , stLinkCriteria

Forms![Gyro Data].Refresh

Exit_Calculate_Gyro_Data_Click:

Exit Sub

 

Err_Calculate_Gyro_Data_Click:

MsgBox Err.Description

Resume Exit_Calculate_Gyro_Data_Click

End Sub

 

Private Sub View_Gyro_Data_Click()

On Error GoTo Err_View_Gyro_Data_Click

 

Dim stDocName As String

Dim stLinkCriteria As String

 

stDocName = "Gyro Data"

DoCmd.OpenForm stDocName, , , stLinkCriteria

Forms![Gyro Data].Refresh

 

 

Exit_View_Gyro_Data_Click:

Exit Sub

 

Err_View_Gyro_Data_Click:

MsgBox Err.Description

Resume Exit_View_Gyro_Data_Click

End Sub

 

'## This is for later use if there is the desire to vary the number of SectorsR

Public Sub PRELIMINARY()

'This function is for loading table with records

Dim Sector As Integer 'ID of local Sector.

Dim dbs As Database

Dim rst As Recordset

Dim strSQL As String

Dim MomentOfInertia As Single 'Local moment of inertia of blade about flapping hinge (or ctr of rotation). [slug ft2].

Dim FormerRadius As Single 'The radius of the previous Sector.

 

FormerRadius = 0 'Set to center of mast.

On Error GoTo PRELIMINARY_Err

 

Set dbs = CurrentDb

For Sector = 1 To SectorsR Step 1 'Loop through SectorsR

'Construct SQL string.

strSQL = "SELECT mm, rr FROM Sector WHERE Sector = " & Sector & ";"

'Open snapshot-type Recordset object.

Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot)

If (Sector < SectorsR) Then

'Set radius to mid point in Sector.

MomentOfInertia = rst.Fields!mm * ((FormerRadius + rst.Fields!rr) / 2) ^ 2

Else

'Set last Sector to very end since cap and tip weight are large part

'of the weight at this Sector.

MomentOfInertia = rst.Fields!mm * rst.Fields!rr ^ 2

End If

'Post data to [Sector] table.

dbs.Execute "UPDATE Sector SET Ib = " & MomentOfInertia _

& " WHERE Sector = " & Sector & ";"

FormerRadius = rst.Fields!rr 'Move current radius to former radius.

Next Sector

rst.Close

Set dbs = Nothing

 

PRELIMINARY_Exit:

Exit Sub

PRELIMINARY_Err:

MsgBox Err.Description

Resume PRELIMINARY_Exit

End Sub

Symbols:

Sine is opposite over hypotenuse. sin(90º) = 1

Cosine is adjacent over hypotenuse. cos(90º) = 0

Blue is symbol in Web text. Green is symbol in Access database.

Symbols: To be later merged with the above.

Blue is symbol in Web text. Green is symbol in Access database.

 

Precession of Gyroscope:

Forget the below two and use [Source ~ RW p.117] ???

I have asked on Eng-Tips Mechanical engineering other topics

I have a situation where the Angular Momentum of a rotor is known and I wish to apply a sinusoidal force, parallel to the primary axis of rotation, on this ring. The frequency of this force is constant, however the amplitude may vary. The unusual aspect is that the gyroscopic is not allowed to precess. The gyro is to act as a damper on the oscillating force.

Could someone provide the Algorithm or information that is required to calculate the force?

Thanks.

Dave

___________________________

rb1957

the gyro precesses (if that's a word) because the spin imparts an angular momentum on the gyro. Iw would be the moment caused, and the moment to be reacted

____________________________

From zekeman

You will have to explain this better. How is the rotor restrained and where is the sinusoidal force applied relative to the axis of the ring? And what is the rotational axis for the existing angular momentum?
Knowing that,, the moment applied to the ring is equal to the rate of change of angular momentum. Or if the angular momentum vector is changed by the motion then the rate of change of that vector is the induced torque from the motion.
So, a rotation at right angles to the spin axis will induce a torque about the axis normal to the spin axis.

____________________________

To zekeman,

The ring will be turning in the XY-plane. This ring is contained by a 2-axis gimbal. The ring will rotate about the Z-axis. An external oscillating torque will rock the ring about the X-axis, by approximately 30-degrees. However, the ring cannot rock about the Y-axis.

The desire is for the 'frame' to experience, at the Y-axis, the same value of oscillating torque as that which is being applied at X-axis.

I assume (or hope) that a fixed optimal angular momentum of the ring can be calculated and this will allow the 'transfer' of the varying torque and the fixed frequency from about the X-axis to about the non-moving Y-axis. Of course, the amplitude will not be transmitted.

I also hope that this makes sense.

____________________________

From zekeman,

Gyro restrained in the y axis:
From the sinusodial input around x axis, I get
@x=Asin(Wxt)
Distance about X-axis = Radius of Motor's rotor's mass * sin(X-axis angular velocity * time)
@x'=AWxcos(Wxt)
Velocity about X-axis = Radius of Motor's rotor's mass * X-axis angular velocity * cos(X-axis angular velocity * time)
@x"=-A(Wx)^2sin(Wxt)
Acceleration about X-axis = Radius of Motor's rotor's mass * X-axis angular velocity^2 * cos(X-axis angular velocity * time)
The torque around the x axis
Tx=Ix@x"=-IxA(Wx)^2sin(Wxt)
Torque about X-axis = -X-axis angular momentum * Radius of Motor's rotor's mass * X-axis angular velocity^2 * sin(X-axis angular velocity * time)
The torque in the y axis, since motion there is restrained is:
Ty=IzWz@x'=IzWzAWxcos(Wxt)
Torque about Y-axis = Z-axis angular momentum * X-axis angular velocity * Radius of Motor's rotor's mass * X-axis angular velocity * cos(X-axis angular velocity * time)
Wx,Wz =angular velocities x,z axes
Iz,Ix = angular momenta x, z axes
Unfortunately,it looks like the torques are 90 degrees out of phase.

A = k0

_____________________________

Calculations based on zekeman's algorithms

Calculations using zekeman's algorithms for Maximum teeter use 10º = 0.1745 radian and 9th Sector

Distance; @x=Asin(Wxt) = 0.2235 m * sin(0.955 rad/sec * 0.00275 sec) = 0.2235 m * 0.0000458 = 0.00001 m = 0.000403"

Velocity; @x'=AWxcos(Wxt) = 0.2235 m * 0.955 rad/sec * cos(0.955 rad/sec * 0.00275 sec) = 0.2134 m/s

Acceleration; @x"=-A(Wx)^2sin(Wxt) = -0.2235 m * (0.955 rad/sec)2 * sin(0.955 rad/sec * 0.00275 sec) = - 0.0000091 m/s2

The torque around the x axis;

Tx=Ix@x"=-IxA(Wx)^2sin(Wxt) = - 0.245 * 0.2235 m * (0.955 rad/sec)2 * sin(0.955 rad/sec * 0.00275 sec) = 0.000002234 Nm

 The torque in the y axis, since motion there is restrained is:
Ty=IzWz@x'=IzWzAWxcos(Wxt)
= LZ * ωZ @x' = LZ * ωZ * A * ωX * cos(WX * t) =| LZ * ωZ *  0.2235 m * 0.955 rad/sec * cos(0.955 rad/sec * 0.00275 sec) How can this be done when LZ and ωZ  are unknown.

Calculations based upon article 'How a Gyroscope Works'. In metric SI units where force is in Newtons and mass is in kilograms.

Moments on Craft from Teetered Rotors:

The [Gyro Data] form shows that at 15º of rotor teeter the angular distance on the Y-axis is 1.528º in 90ºazimuth about the Z-axis.

Dose this mean that in 2-1/2 revolutions of the rotor the craft will have tipped 15º. ????? I don't think so. Reassess.

Back to top | SynchroLite Home Page | Electrotor Home Page | Dragonfly Home Page | UniCopter Home Page | Nemesis Home Page

Last Revised: May 13, 2007