Hi Jason I am having trouble with updating the board from the ground station program. I have to admit I've changed one thing with the ground station source so it will see COM17 (My Hoverfly board) and because I have multiple Propellers
connected to my system, here is what I changed -
[FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]public
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] MainForm()[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] {
InitializeComponent();
tabControl1.TabPages.Remove( tabPage3 );
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000]// (Level Computation) for now....[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] }
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]private[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] MainForm_Load( [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]object[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] sender, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]EventArgs[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] e )[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] {
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]string[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][] names = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]SerialPort[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].GetPortNames();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]List[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]<[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]string[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]> Ports = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]List[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]<[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]string[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]>();[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]foreach[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]string[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] name [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]in[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] names)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] {
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2](name != [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"COM1"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] && name != [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"COM2"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] && name != [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"COM3"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] && name != [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"COM4"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2])[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] Ports.Add( name );
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2](Ports.Count > 0)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] {
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000]// Open the serial port COM8 at 115200 baud, no parity, 8 bits, one stop bit[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] comm =
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]SerialPort[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]( [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"COM17"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2], 115200, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Parity[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].None, 8, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]StopBits[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].One ); [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000]//my hover port!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] comm.Open();
Active =
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] }
tickTimer.Enabled =
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] statsTimer.Enabled =
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0][FONT=Consolas][SIZE=2][COLOR=#020fc0]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] }
[/SIZE][/FONT][/SIZE][/FONT]
As you can see from the pixs posted I have a connection. The left front motor seems to be slowly shutting down after a few seconds. What I would like to know is the proper gyro configuration for the Hoverfly board 0?
Edit: I have tried all 3 configurations in the Propeller source and also have reloaded the Hoverfly sport program to verify everything is ok.
The gyro in the middle (the default code setting) is the right one to use for the sport. I'm pretty sure the gyro orientation setting is totally ignored by the Sport version anyway. Have you tried just programming the sport from the Prop tool and not changing anything through the ground station? It's possible there's a bug there because I haven't re-tested that code recently.
If you program from the Prop tool it should just work immediately. I assume you have no trims set on your radio or anything?
When you say the motor is shutting down, slowly just spinning to a stop? If the gyro is moved during arming it would have a false zero value which could lead to that, but your gyro readings as posted look fine. How long does it take to happen? It could be trying to tilt if you're spinning the props but not actually lifting off, and trying to correct harder when that does nothing. If you hold it above ground at arms length and spin it up does it still do it?
Jason the first problem I ran into was the ESC's still beeping after power up and couldn't get the unmodified ground station to connect with the Prop. So I only modified the one line I have commented above then I could see everything. I did originally try everything unmodified. Since then I have changed the ThrottleStartUpTime from 0 to 1 in the Prop code to keep the ESC's from continueing to beep after powerup. Even though I see active gyro readings, whenever I click apply settings on the second screen it returns in less than 1/2 second with the message "Eeprom write succeeded - rebooting". When I rev all 4 motors up to about hover speed it takes ~20 - 30 seconds before it slowly winds down to a complete stop and the platform is not being moved at all during startup.
Edit: Don't worry Jason this will give me a challenge! I will wait and see if somebody else tries this.
That's very odd. My ESCs are set to use about 1.1ms to 1.9ms as their curve, and I have the code set to allow 1.0ms to 2.0ms. Can you tell me what you have your throttle end-point range set to on your radio? Have you done the throttle range set up on your ESCs, or did you just use them "as is"?
I think I have some down-trim set on my throttle, which might also be an issue. Try this: Program yours using the Prop tool, then if the ESCs are beeping on power up, try adding some down trim into your throttle channel and see if they stop. I think mine is set to about 1/4 of its range, maybe a little less. If you can get them to stop beeping by doing this I may have to change the throttle range in the code a little.
Any changes you make write all the program changes to the quad, so if the bug is in the programming itself, that could be causing your weird behavior. (So far everything you've said starts with "So I programmed it with the ground-station and..." which is making me wonder if I botched that) If you look at the bottom of the file "Main - Hoverfly-Sport.spin", you'll see all the settings there. If you want to change your throttle startup without using the ground station, set the number in the file to the number of 10ths of a second you'd like it to hold full throttle on startup for.
Is it responding properly if you twist or tilt it while the motors are spinning? And I checked the code - The one-line mod you did to the GroundStation is fine.
My throttle endpoints are set to 100% and I am getting 1106us throttledown signal. I have done the throttle range and programmed all the ESC's. It won't hover as it leans toward the front left. When holding by hand it feels like it is trying to correct properly but the front left. As I said in the email I replaced that motor last night so I think that is where my problem lies. But the Hoverfly sport code works.
I could understand it tilting a little bit, but if over time it's spinning down and stopping completely that doesn't make any sense. I can't think of any reason that the code would be outputting radically different values for that one motor. If the motor was bad it'd spin slower, but it wouldn't eventually stop like you've said it does. Is your battery low? If that one ESC has a higher low-voltage cutoff, it could cause that. (I don't think that's it, but again, trying to get the obvious ones first..)
In the code, there's a line that tests the gain channel, and if it's < 0, enables the filter. Try changing that statement to be just "if (TRUE)" or "if(FALSE)" and see if that makes any difference. It's possible that your setup is noisier than mine, which could cause issues. Enabling the filter might help.
When I get home from work I'm going to go re-flash mine from the zip file and make sure it works, just on the off chance that I messed something up while packaging the code.
You know the motor and brackets I replaced still worked and would fly but I could tell the prop adapter was a little bent and the motor (after the propeller was off) you could feel a slight wobble. So I replaced it to cut down on vibration. Just my luck to have the very thing I replaced giving me problems with your new code! Also I have trimmed the centers of the sticks to < 3us each, went to try that and my battery needs a recharge! So I might be in luck unless you find a problem. Battery is on the charger now so by tommorow I will get another chance.
One of the modifications I made to the original design when I built my ELEV-8 was to change the way the Hoverfly board is mounted. Boards that use MEMS gyros are particularly sensitive to vibration. It's a good thing that they are so sensitive, but it's a real challenge in software to sort out the real movements from the vibration. After looking at the way the board was mounted, it seemed to me that some significant improvement might be made. Although the board comes with some nice anti-vibration grommets, I think the way they are being used probably detracts significantly from their performance.
During my build, I made a lot of changes to the ELEV-8. Throughout the process, I made a big effort to utilize the items provided and avoid making changes that required special parts or fancy equipment. My mounting of the board is the one step where I really couldn't figure out a good way to do it without making a special part. Hopefully, if this modification proves to make a significant difference, we can find a way to make parts available. This item would best be made on a CNC lathe, but those of you who have manual lathes should be able to make it without much difficulty. Making one manually, like I did these prototypes, is especially easy if you start with a commercial 1/4" aluminum standoff. The ones I used were 1" long and I turned a part on both ends. Using the standoff costs about thirty five cents and saves you all the drilling and tapping of the 4-40 holes. I am including a drawing of what I made for those that want to give it a go.
I want to mention a couple details that might be helpful in making this mod. The hole through the grommet is actually .160", but you'll notice that I have made the grommet ares in my standoff .150". That's not much of a difference, but it allows for a tiny bit of misalignment of the mounting holes. The standoff needs to every so lightly contact the ribs on the grommet for it to function correctly. Any significant misalignment of the holes results in compression of the ribs and impacts vibration performance. You will notice in one of the pictures that I have used flat head screws on the bottom rather than the pan heads that were supplied. This is a nice improvement, because the pan heads were slowly trying to eat a hole in my LiPo's. Countersinking the screws eliminates this problem completely. BUT... It is critical that if you countersink the holes you be absolutely certain you are perfectly centered on the existing hole. The position of a flat head screw is dependent on the countersink and not the hole! I did mine in a mill so I know they are right. If you don't have a reliable way to maintain precision, I suggest you don't use the flat head screws. In that case, it would help significantly to switch from pan head to button head. You could even countersink the low profile button heads a little and make it as good as the flat heads. Button heads should be a lot more LiPo friendly. :-) Don't forget to squirt a little blue loctite into the standoffs when you put the screws in.
Lastly, when you get the board installed on your fancy new standoffs, don't harness your wiring down so well that the board is no longer floating. If there is no service loop at all in the wiring or if you tie everything down so well that the board can't float a little, then all this effort is for not. One word of CAUTION: The standoff design is such that it captures the grommet. There is a radius on the top to help you insert it into the grommet, but there is a sharp edge that keeps it from coming back off. If you pull the board off the standoffs, the grommet will probably be damaged. (McMaster has them)
Sorry to be so long winded here. I made a lot of modifications during my build and took lots of pictures. I will eventually post them all for your consideration. This particular change addressed what I think is a significant problem so I'm posting it now. I'd be interested in feedback from anyone that does this mod. It's not going to eliminate the vibration problem, but hopefully it will help to some extent. At least I think the grommets will be working better than they were!
Yes the vibration has been a concern of mine as well. I like your method and I will get some of these to try out. Did you notice any flight difference between the two mounting methods?
@Jason - this morning I tried your unmodified spin code w/ a freshly charged battery and I was able to get it off the ground in my room for a second yay! I have to take it to the park to really fly it, but I am going to reprogram the
ESC's and make sure the cut off voltage is set properly. Since I've programmed them in the beginning I now use a lipo battery alarm to give me indication it's time to recharge. But the problem I was having with the new front left motor I
just replaced wasn't the motor it was the ESC cutoff voltage set too high (for NiMh) and the battery charge was a little to low. As soon as I get a chance to take it to the park and get it in the air I will report back. It looks as the
balance problem is gone thanks to your help in post#820. Could you possibly give us your method of tuning the PID's (maybe it's hit and miss?) as I still can't get the ground station to write any changes to the Prop. Thanks Jason.
Edit: I know that doesn't make sense because the ESC should have acted up w/ the hoverfly code but this morning w/ recharged battery it seems to work.
One of the modifications I made to the original design when I built my ELEV-8 was to change the way the Hoverfly board is mounted.
...Tiger
Until I read your post I honestly wasn't sure how those anti-vibration grommets were supposed to be used. I'll take the suggestions Tiger and turn a few standoffs on my manual lathe. It makes all kinds of sense to me the way you've mounted them, especially with the flathead screws.
Since you had that lathe set up, did you think about making a few hundred of these? I know some people who would have bought them
Tiger, Ken,
I would love a set of those standoffs.
Roy
Roy, I'll see what I can do to set ya up! Tiger is a real troublemaker. I was having a perfectly productive morning and then I found myself in front of my lathe. I don't have the perfect cutting tools to mimic the exact style that he machined so I made it out of two parts - we'll see what he says about my solution and whether or not it would also be a functional vibration-reducer.
@Jason I haven't taking it out to the park to fly it yet but in the small space in my backyard I was able to get it to hover easier than with the Hoverfly code! Great job!
Edit: thats with the endpoint for the Hoverfly board set 20% and 50%.
I think it was coincidence, my battery was discharged somewhat from trying the code back and forth and the last thing I tried (trying to 0 the sticks) when I plugged in my battery w/ the battery alarm attached as soon as I started to try to hover the red lights came on and you had just posted about making sure the battery was charged. So with a fresh battery your code works and I think I just needed to have the proper voltage cutoff settings in the ESC for NiMi. I know that doesn't explain why the low battery would work w/ Hoverfly's code. Maybe that ESC was set differently, I still can't get the ground station code to write to the propeller (it just seems to wipe it - the green light shuts off and doesn't come back on). It really doesn't matter though as I can make changes directly to your code. By the way before I take it out to fly it at the park I notice you have the PitchRollControlScale and the YawControlScale set to 6 would I be better off setting it to 1(beginner) as I am a total beginner?
I think you might find setting it to 1 would be too low. A value of 2 or 3 would probably be ok. If you go too low it ends up being an issue of not being able to move it fast enough. If you're easy on the sticks I think 2 to 4 would be fine, and having some exponential set will help too. On the other hand, if you were already able to hover it with no problems, the current setting is probably ok. Lower control values are generally good for beginners because they tend to move the sticks too far, like over-steering a car.
I'll take a look at the programming code when I get home tonight. I know it's worked before, but I made some changes to the memory layout.. Maybe I botched something in there.
And I'm very relieved to hear that there wasn't anything wrong with the flight code. I couldn't understand how mine was so plug & play and yet you were having so much trouble with the same code. (phew!)
As soon as I can get my brother to come with me to the park I will see if I can get some video of my Elev-8 flying with your code. Probably after some practice flights!
Warm is ok, hot might be a problem for the lipo, but not the board. If you are discharging the lipo below 10v, or getting the temperature above 130 (f) you can damage it. Below that temp and above that voltage is ok. The HoverFly board will be ok well beyond that range.
Comments
Second that statement, with emphasis!
Ken Gracey
connected to my system, here is what I changed - As you can see from the pixs posted I have a connection. The left front motor seems to be slowly shutting down after a few seconds. What I would like to know is the proper gyro configuration for the Hoverfly board 0?
Edit: I have tried all 3 configurations in the Propeller source and also have reloaded the Hoverfly sport program to verify everything is ok.
If you program from the Prop tool it should just work immediately. I assume you have no trims set on your radio or anything?
When you say the motor is shutting down, slowly just spinning to a stop? If the gyro is moved during arming it would have a false zero value which could lead to that, but your gyro readings as posted look fine. How long does it take to happen? It could be trying to tilt if you're spinning the props but not actually lifting off, and trying to correct harder when that does nothing. If you hold it above ground at arms length and spin it up does it still do it?
Edit: Don't worry Jason this will give me a challenge! I will wait and see if somebody else tries this.
I think I have some down-trim set on my throttle, which might also be an issue. Try this: Program yours using the Prop tool, then if the ESCs are beeping on power up, try adding some down trim into your throttle channel and see if they stop. I think mine is set to about 1/4 of its range, maybe a little less. If you can get them to stop beeping by doing this I may have to change the throttle range in the code a little.
Any changes you make write all the program changes to the quad, so if the bug is in the programming itself, that could be causing your weird behavior. (So far everything you've said starts with "So I programmed it with the ground-station and..." which is making me wonder if I botched that) If you look at the bottom of the file "Main - Hoverfly-Sport.spin", you'll see all the settings there. If you want to change your throttle startup without using the ground station, set the number in the file to the number of 10ths of a second you'd like it to hold full throttle on startup for.
Is it responding properly if you twist or tilt it while the motors are spinning? And I checked the code - The one-line mod you did to the GroundStation is fine.
In the code, there's a line that tests the gain channel, and if it's < 0, enables the filter. Try changing that statement to be just "if (TRUE)" or "if(FALSE)" and see if that makes any difference. It's possible that your setup is noisier than mine, which could cause issues. Enabling the filter might help.
When I get home from work I'm going to go re-flash mine from the zip file and make sure it works, just on the off chance that I messed something up while packaging the code.
During my build, I made a lot of changes to the ELEV-8. Throughout the process, I made a big effort to utilize the items provided and avoid making changes that required special parts or fancy equipment. My mounting of the board is the one step where I really couldn't figure out a good way to do it without making a special part. Hopefully, if this modification proves to make a significant difference, we can find a way to make parts available. This item would best be made on a CNC lathe, but those of you who have manual lathes should be able to make it without much difficulty. Making one manually, like I did these prototypes, is especially easy if you start with a commercial 1/4" aluminum standoff. The ones I used were 1" long and I turned a part on both ends. Using the standoff costs about thirty five cents and saves you all the drilling and tapping of the 4-40 holes. I am including a drawing of what I made for those that want to give it a go.
I want to mention a couple details that might be helpful in making this mod. The hole through the grommet is actually .160", but you'll notice that I have made the grommet ares in my standoff .150". That's not much of a difference, but it allows for a tiny bit of misalignment of the mounting holes. The standoff needs to every so lightly contact the ribs on the grommet for it to function correctly. Any significant misalignment of the holes results in compression of the ribs and impacts vibration performance. You will notice in one of the pictures that I have used flat head screws on the bottom rather than the pan heads that were supplied. This is a nice improvement, because the pan heads were slowly trying to eat a hole in my LiPo's. Countersinking the screws eliminates this problem completely. BUT... It is critical that if you countersink the holes you be absolutely certain you are perfectly centered on the existing hole. The position of a flat head screw is dependent on the countersink and not the hole! I did mine in a mill so I know they are right. If you don't have a reliable way to maintain precision, I suggest you don't use the flat head screws. In that case, it would help significantly to switch from pan head to button head. You could even countersink the low profile button heads a little and make it as good as the flat heads. Button heads should be a lot more LiPo friendly. :-) Don't forget to squirt a little blue loctite into the standoffs when you put the screws in.
Lastly, when you get the board installed on your fancy new standoffs, don't harness your wiring down so well that the board is no longer floating. If there is no service loop at all in the wiring or if you tie everything down so well that the board can't float a little, then all this effort is for not. One word of CAUTION: The standoff design is such that it captures the grommet. There is a radius on the top to help you insert it into the grommet, but there is a sharp edge that keeps it from coming back off. If you pull the board off the standoffs, the grommet will probably be damaged. (McMaster has them)
Sorry to be so long winded here. I made a lot of modifications during my build and took lots of pictures. I will eventually post them all for your consideration. This particular change addressed what I think is a significant problem so I'm posting it now. I'd be interested in feedback from anyone that does this mod. It's not going to eliminate the vibration problem, but hopefully it will help to some extent. At least I think the grommets will be working better than they were!
...Tiger
ESC's and make sure the cut off voltage is set properly. Since I've programmed them in the beginning I now use a lipo battery alarm to give me indication it's time to recharge. But the problem I was having with the new front left motor I
just replaced wasn't the motor it was the ESC cutoff voltage set too high (for NiMh) and the battery charge was a little to low. As soon as I get a chance to take it to the park and get it in the air I will report back. It looks as the
balance problem is gone thanks to your help in post#820. Could you possibly give us your method of tuning the PID's (maybe it's hit and miss?) as I still can't get the ground station to write any changes to the Prop. Thanks Jason.
Edit: I know that doesn't make sense because the ESC should have acted up w/ the hoverfly code but this morning w/ recharged battery it seems to work.
Until I read your post I honestly wasn't sure how those anti-vibration grommets were supposed to be used. I'll take the suggestions Tiger and turn a few standoffs on my manual lathe. It makes all kinds of sense to me the way you've mounted them, especially with the flathead screws.
Since you had that lathe set up, did you think about making a few hundred of these? I know some people who would have bought them
Ken Gracey
I would love a set of those standoffs.
Roy
Roy, I'll see what I can do to set ya up! Tiger is a real troublemaker. I was having a perfectly productive morning and then I found myself in front of my lathe. I don't have the perfect cutting tools to mimic the exact style that he machined so I made it out of two parts - we'll see what he says about my solution and whether or not it would also be a functional vibration-reducer.
Thanks! You rock.
Also, darn it, now I need to add lathe to my list of machines I must own in the future.
I'll make ya a set. No problem. Tiger has the Haas CNC lathe, though. We need to talk him into a production run.
As long as you don't tighten the screws too hard they work quite well with 2.5mm screws. They're too small for use with the HoverFly board though.
Edit: thats with the endpoint for the Hoverfly board set 20% and 50%.
I'll take a look at the programming code when I get home tonight. I know it's worked before, but I made some changes to the memory layout.. Maybe I botched something in there.
I put my lipo just under the Hoverfly card, it is easy. Just enough space.
But at the end of flight the lipo is ever a bit hot.
Perhaps it is not good for the Hoverfly card.
What do you think about that ?
Jean Paul