This week I tested my motors with several types of batteries and props. To see which combination runs the most efficient.
So what components are fix
- motor: HK AX-2210N 1000Kv Brushless
- ESC: HK 12A BlueSeries Brushless Speed Controller
And what is tested
- Battery: 2 cell lipo and 3 cell lipo
- Prop: HK Slowfly 9x5, EPP 10x45, GWS HD 10x6
Test Result
For my setup (motor+prop) there is no large difference between these 3 props on a 3 Cell battery. Note that I did not test above 125 watt because it's not save to run this motor over a longer period of time above this value. The 9x5 prop runs the most efficient and the motor is running cool.
Both 10 inch props are oversized when using a 3 cell battery. The motor runs warm even when not on full power and they are less efficient ~2%.
When efficiency is prio 1 then you have to use a 2 cell lipo with this setup. This increases efficiency by ~12 %. But it decreases the maximum thrust so you need to be carefull and do a good calculation on desired thrust and the weight of your multirotor. The efficiency between the different props on this 2cell setup is only ~2%. The maximum thrust for a 9 inch prop or a 10 inch prop on this 2 cell setup is 15%.
QuadroCopter
zondag 16 juni 2013
vrijdag 10 mei 2013
Maiden flight
Today I finaly got my new x-quad setup with arducopter firmware flying. It still needs some pid tuning, but flying well and feels stable and controllable.
So what's this x-quad configuration all about? The current setup is:
- Razor9Dof IMU (raw data output firmware over serial port)
- Seeduino Mega 1280 (arduino compatible)
- DIYDrons Arducopter firmware V2.5.3 (with some custom made changes and imu driver)
- 4Channel Analog FM RC controller
- Lantronix B/G wifi module
So I'm flying the x-quad with a standard RC (40mhz fm) controller. The wifi module provides real time telemetry from the quad and sends it to my laptop where I have the DIYDrons APM Planner software running. Next step is to do some PID tuning and try it outside.
*** UPDATE 28 MAI 13
I did some PID tuning and tested the quad outside. Flying manual with rc controller in stabelize mode.
Now we are ready to integrate the sparkfun sup500f gps and test the arducopter gps functions (loiter, rtl, ...) in the mission planner.
So what's this x-quad configuration all about? The current setup is:
- Razor9Dof IMU (raw data output firmware over serial port)
- Seeduino Mega 1280 (arduino compatible)
- DIYDrons Arducopter firmware V2.5.3 (with some custom made changes and imu driver)
- 4Channel Analog FM RC controller
- Lantronix B/G wifi module
So I'm flying the x-quad with a standard RC (40mhz fm) controller. The wifi module provides real time telemetry from the quad and sends it to my laptop where I have the DIYDrons APM Planner software running. Next step is to do some PID tuning and try it outside.
*** UPDATE 28 MAI 13
I did some PID tuning and tested the quad outside. Flying manual with rc controller in stabelize mode.
Now we are ready to integrate the sparkfun sup500f gps and test the arducopter gps functions (loiter, rtl, ...) in the mission planner.
dinsdag 9 april 2013
arducopter gampad throttle mode
To control my quad I use the joystick feature in the APM planner. But I'm not using a joystick I'm using a gamepad.
As you know gamepads always center there stick and it's hard to get a stick value that is not MIN, MAX or CENTER. It's to sensitive to have a good throttle control.
Now I'm implementing a gamepad throttle mode for my project (in the arducopter v2.5.3 firmware)
A very simple/basic overview of what is happing in the code:
When flying in THROTTLE MANUAL MODE then
-> throttle value = stick position
When flying in THROTTLE GAMPAD MODE then
-> stick posistion = center? do nothing: leave throttle at it's current position
-> stick posistion = down? decrease: throttle value = throttle value - some value
-> stick posistion = up? increase: throttle value = throttle value + some value
This way it's much more easy to control the throttle with a gamepad and to hold it on a fix position. But it also has some disadvantages. Increasing or decreasing to full max or full min will take some time. But if someone would work this out this gampad mode could be tuned with configurable sensitivity values etc to minimize the disadvantages.
concept video, with really basic/raw code just to show the concept
vrijdag 15 februari 2013
Arducopter on the bench!
Finaly I got most components working for this project. The arducopter firmware is ported to my seeeduino mega board and is connect to all my other exothic hardware. Now I'm ready to go for some PID tuning on the testbench.
In the movie you can see the these components
- Seeeduino mega 1280 (loaded with arducopter firmware version 2.5.3, with my personal changes)
- Razor 9dof imu (loaded with my own firmware, raw sensor data output)
- Lantronix B/G wifi module
- voltage regulation board to power the wifi module.
The gps is not mounted because I have no signal inside. I currently have only 2 ESC available. These 2 are my spare parts, the other one's are mounted on my Mini-H-Quad. So currently I'm only driving 2 motors. In the video you will see some basics tests, PID tuning will be for next time.
In the movie you can see the these components
- Seeeduino mega 1280 (loaded with arducopter firmware version 2.5.3, with my personal changes)
- Razor 9dof imu (loaded with my own firmware, raw sensor data output)
- Lantronix B/G wifi module
- voltage regulation board to power the wifi module.
The gps is not mounted because I have no signal inside. I currently have only 2 ESC available. These 2 are my spare parts, the other one's are mounted on my Mini-H-Quad. So currently I'm only driving 2 motors. In the video you will see some basics tests, PID tuning will be for next time.
zaterdag 10 november 2012
Wireless IP telemetry
The goal of this project is to control (fly) my quadcopter as from a normal pc with a usb joystick or gamepad. The APM Planner ground station software from DIYdrones support IP based telemetry via UDP. The arducopter firmware has build in telemetry code and a dedicated serial connection to send and recieve all data. So we just have to add a serial to wifi module.
My choice is the Lantroni MatchPort® b/g module. Because it can handle high data rates, it has a good tx power and you can connect any type of wlan antenna to maximaze tx/rx distance. But these features make it a bit more heavy then other modules. Compared to other modules it consumes a lot more. But if you want speed, power and distance then you have to deal with this.
Some features:
Wired Ethernet-to-wireless bridging
Bulletproof security with IEEE 802.11i-PSK,WPA-PSK, TKIP and optional 256-bit AES end-to-end encryption
Full TCP/IP stack,web server and Windows deployment software
wlan data rates: 1Mbps up to 54Mbps
Two serial channels: up to 921 Kbps data rate
8 real time general I/O configurable pins
3.3V-level signals
Output Power: 14dBm +2.0 dBm
Receive Sensitivity: -91dBm @ 1Mbps
To get this thing to work with the the diydrones ardupilot I configured it this way:
- cpu performance: low -> this is more than enough performance the handle everything it has to do.
- wlan power management: OFF -> default it is ON but this gives laggy/sturring data stream. Working with udp we want a steady smooth data stream. So make sure to set this to OFF
- wlan data tx rate -> 1mbps -> this is more then enough speed, setting it to 1mbps will give you max range.
- serial 1 protocol: RS232 -> note that is will operate at 3.3v TTL level
- serial 1 baud rate: 57600 -> this is the default confiration in the ardupilote firmware
- enable packing -> enabled (gap time 12ms) -> if you do not enable this fuctions the wifi module will tx data only when the MTU data block is full (1400b) and that will cause a hughe lag in our data stream. So enable this function.
- match 2 byte sequence: yes, 0D & 0A -> adding this will force the wifi to tx data when ar CRLF arrives from the serial data comming from ardupilot.
- send frame immediate: yes
documents about this module can be found on the lantronix website or my google drive
My choice is the Lantroni MatchPort® b/g module. Because it can handle high data rates, it has a good tx power and you can connect any type of wlan antenna to maximaze tx/rx distance. But these features make it a bit more heavy then other modules. Compared to other modules it consumes a lot more. But if you want speed, power and distance then you have to deal with this.
Some features:
Wired Ethernet-to-wireless bridging
Bulletproof security with IEEE 802.11i-PSK,WPA-PSK, TKIP and optional 256-bit AES end-to-end encryption
Full TCP/IP stack,web server and Windows deployment software
wlan data rates: 1Mbps up to 54Mbps
Two serial channels: up to 921 Kbps data rate
8 real time general I/O configurable pins
3.3V-level signals
Output Power: 14dBm +2.0 dBm
Receive Sensitivity: -91dBm @ 1Mbps
To get this thing to work with the the diydrones ardupilot I configured it this way:
- cpu performance: low -> this is more than enough performance the handle everything it has to do.
- wlan power management: OFF -> default it is ON but this gives laggy/sturring data stream. Working with udp we want a steady smooth data stream. So make sure to set this to OFF
- wlan data tx rate -> 1mbps -> this is more then enough speed, setting it to 1mbps will give you max range.
- serial 1 protocol: RS232 -> note that is will operate at 3.3v TTL level
- serial 1 baud rate: 57600 -> this is the default confiration in the ardupilote firmware
- enable packing -> enabled (gap time 12ms) -> if you do not enable this fuctions the wifi module will tx data only when the MTU data block is full (1400b) and that will cause a hughe lag in our data stream. So enable this function.
- match 2 byte sequence: yes, 0D & 0A -> adding this will force the wifi to tx data when ar CRLF arrives from the serial data comming from ardupilot.
- send frame immediate: yes
documents about this module can be found on the lantronix website or my google drive
maandag 29 oktober 2012
IP Camera (FPV)
Some time ago I bought an Edimax Wireless IP Camera to use as FPV (first person view) solutions in my quadcopter project. But I noticed that it will be very difficult to control the quad live via the videostream from the wireless IP cam because there is to much lag. The IP cam also has a FOV (field of view) of only 40 degrees. For FPV solutions a FOV of > 90 is adviced. But still I can use the IP cam as live view and recorder.
So I disambled the Wireless IP Camera and made a mounting board to place the cam on the quad. The mounting board is a aluminium plate (1mm) total weight 38 grams. That is less then useing the original houseing of the ipcam itself. At the first try-out I reversed voltage polarity, so I burned the IP Cam. But After some testing I found out that only the voltage regulation cirquit on board of the ip cam if defective and that I can bypass this section by connection a battery (or external voltage regulater) behind this section. So IP Cam fixed!
So I disambled the Wireless IP Camera and made a mounting board to place the cam on the quad. The mounting board is a aluminium plate (1mm) total weight 38 grams. That is less then useing the original houseing of the ipcam itself. At the first try-out I reversed voltage polarity, so I burned the IP Cam. But After some testing I found out that only the voltage regulation cirquit on board of the ip cam if defective and that I can bypass this section by connection a battery (or external voltage regulater) behind this section. So IP Cam fixed!
After mounting the IP Cam to the quad I got a total weight of 1420grams. Adding an external voltageregulator + wiring to power the IP Cam will give me a total weight of 1450 grams. So estimated flight time with extra weight + ip cam consumption, only 5 min.
Weather is bad so currently I can't make/upload a real flight fpv video.
Weather is bad so currently I can't make/upload a real flight fpv video.
(update 2 nov 2012, due to bad weather again a little garage flight)
Labels:
cam,
camera,
first person view,
fpv,
ip,
multicopter,
quadcopter,
wireless
zaterdag 20 oktober 2012
Reducing weight
As told in my previous blogpost the weight of my new frame is currently the only negative factor. I bought some Carbon fiber plates to reduce weight.
-> Carbon Fiber Sheet 1.5mm*300mm*150mm
I just had to cut this sheet in half to get the exact size I needed to fit on my quad. The result looks really nice and it also feels strong.
I also threw away the aluminium battery holder underneath the quad and added a second carbon sheet on top to hold battery and electronics. This sheet is seperated by the same rubbers I use for my motormounts. I did this to hopefully reduce even more vibrations. But that is something I'll test later.
An other thing I did to reduce weight is by using just wires to connect my ecs to the battery. On my prevouis X-Frame I used the powerdistribution board I had created for my first + Frame equiped with arduino. But this board is currently not really needed. So in total I saved up to 130 grams (almost 10%). Current total weight 1270 grams.
Because of the bad weather. Just a little flight test in the garage to see if it still works.
-> Carbon Fiber Sheet 1.5mm*300mm*150mm
I just had to cut this sheet in half to get the exact size I needed to fit on my quad. The result looks really nice and it also feels strong.
I also threw away the aluminium battery holder underneath the quad and added a second carbon sheet on top to hold battery and electronics. This sheet is seperated by the same rubbers I use for my motormounts. I did this to hopefully reduce even more vibrations. But that is something I'll test later.
An other thing I did to reduce weight is by using just wires to connect my ecs to the battery. On my prevouis X-Frame I used the powerdistribution board I had created for my first + Frame equiped with arduino. But this board is currently not really needed. So in total I saved up to 130 grams (almost 10%). Current total weight 1270 grams.
Because of the bad weather. Just a little flight test in the garage to see if it still works.
Labels:
multicopter,
quadcopter,
quadrocopter,
reducing,
weight
dinsdag 25 september 2012
Yaw authority
My new frame came with a new problem. Yaw control is almost zero. My previous quad + frame had good yaw authority this because of the larger prop and the longer distance between the motors. With my new quad x frame I decreased prop size and distance between the motors. This gives me almost no yaw control at all.
But the solution is simple. Just tilt the motors in a angle of 3 to 10 degress. With my homebuild motor mounts this can be achieved very easely. Just add some washers on one side of the motor mount. See the image.
This simple solution gave my new frame a real yaw authority boost. Now it's more stable then my quad + frame on al axis (yaw, roll, pitch) even altitude hold is much better. So if you notice pour instability and bad yaw authority. My advice: tilt your motors!
But the solution is simple. Just tilt the motors in a angle of 3 to 10 degress. With my homebuild motor mounts this can be achieved very easely. Just add some washers on one side of the motor mount. See the image.
This simple solution gave my new frame a real yaw authority boost. Now it's more stable then my quad + frame on al axis (yaw, roll, pitch) even altitude hold is much better. So if you notice pour instability and bad yaw authority. My advice: tilt your motors!
And here is the video of my first flight with my new quad frame and tilted motors.
zondag 9 september 2012
New Quad X-frame
Nowdays I'm learning to fly my quadcopter equiped with a Hobbyking i86L Multi-Rotor Control Board (Lite Edition). It's a very cheap board, quick and easy to install. This is a temporary, but fast solution for me to learn basic flying skills. When autumn arrives I'll focus more on my arducopter port project.
I noticed that my mid section that is holding the arms was not strong enough. Also the motormounts broke on hard landings. So I did a little rebuild of my frame. As the I86L is also multiframe compatible I change my frame from + to X. When mounting a camera (in the future) a quad X frame is a better choice then a quad + frame. My mid section is now made out of 2 large 15cm alu plates. The motor mounts are made out of 60x30x2mm alu plates.
Equipment new quadcopter X-frame:
- Alu Quad X frame 60cm square tube 15x15x1.5mm
(~ 49cm from motor center to oposit motor center)
- 4 x Motors AX-2210N 1000kv from hobbyking
- 4 x SlowFly 9047 props from hobbyking
- 4 x Blueseries ECS 12 amp from hobbyking
- 4 x homemade vibration reduction motor mount (now 2mm alu)
- i86L Multi Rotor Control Board Lite Edition
- 4 Channel Analog RC reciever
- Turnigy 3000mAh 3S 20C Lipo Pack from hobbyking
total weight: ~ 1400 grams
Equipment groundstation:
- 4 Channel Analog 40mhz transmitter
This frame is heavy, but I hope it will now survive my hard landings :)
I noticed that my mid section that is holding the arms was not strong enough. Also the motormounts broke on hard landings. So I did a little rebuild of my frame. As the I86L is also multiframe compatible I change my frame from + to X. When mounting a camera (in the future) a quad X frame is a better choice then a quad + frame. My mid section is now made out of 2 large 15cm alu plates. The motor mounts are made out of 60x30x2mm alu plates.
Equipment new quadcopter X-frame:
- Alu Quad X frame 60cm square tube 15x15x1.5mm
(~ 49cm from motor center to oposit motor center)
- 4 x Motors AX-2210N 1000kv from hobbyking
- 4 x SlowFly 9047 props from hobbyking
- 4 x Blueseries ECS 12 amp from hobbyking
- 4 x homemade vibration reduction motor mount (now 2mm alu)
- i86L Multi Rotor Control Board Lite Edition
- 4 Channel Analog RC reciever
- Turnigy 3000mAh 3S 20C Lipo Pack from hobbyking
total weight: ~ 1400 grams
Equipment groundstation:
- 4 Channel Analog 40mhz transmitter
This frame is heavy, but I hope it will now survive my hard landings :)
zondag 19 augustus 2012
SkyTraq Sup500f GPS module
First of all, I ported the arducopter v2.5.3 code to my seeeduino mega board with succes! But because the code that I currently have is not my final release I'll publish it later when everything is finished.
So in this part I will connect my SkyTraq SUP500F Gps module to the seeeduino and see if arducopter works fine. The SUP500F gps module is a product from sparkfun, but at this moment they don't sell it any more:
65 Channel SUP500F 10Hz GPS Receiver with Smart Antenna
65 Channel GPS L1 C/A Code
Perform 8 million time-frequency hypothesis testing per second
Open sky hot start 1 sec
Open sky cold start 29 sec
Signal detection better than -161dBm
Multipath detection and suppression
Accuracy 2.5m CEP
Maximum update rate 10Hz
Tracking current ~33mA
Datasheets and software are available on the sparkfun website but also on my google docs page.
So first of all I connected this module to my usb ftdi board (see previous blogs). Then you can launch the gps viewer software and see if it works. After some testing it's time to configure the gps to work with the arducopter code.
You can fully configure the gps module via the gps viewer pc software. If you make sure that the gps module has the default firmware settings you don't have to configure a lot.
- Set the serial baud to 38400
- that's it!
Now you have to configure the arducopter software.
Place "#define GPS_PROTOCOL GPS_PROTOCOL_NMEA" in the APM_config.h file. Compile, upload and connect the GPS module to serial 1 on you arduino mega board. It works ! :)
If it should not work or if you would only like to do a simple test, the arducopter GPS library included a simple arduino test sketch. Go to the AP_GPS library folder, locate the NMEA example sketch. Upload and test the GPS.
So in this part I will connect my SkyTraq SUP500F Gps module to the seeeduino and see if arducopter works fine. The SUP500F gps module is a product from sparkfun, but at this moment they don't sell it any more:
65 Channel SUP500F 10Hz GPS Receiver with Smart Antenna
65 Channel GPS L1 C/A Code
Perform 8 million time-frequency hypothesis testing per second
Open sky hot start 1 sec
Open sky cold start 29 sec
Signal detection better than -161dBm
Multipath detection and suppression
Accuracy 2.5m CEP
Maximum update rate 10Hz
Tracking current ~33mA
Datasheets and software are available on the sparkfun website but also on my google docs page.
So first of all I connected this module to my usb ftdi board (see previous blogs). Then you can launch the gps viewer software and see if it works. After some testing it's time to configure the gps to work with the arducopter code.
You can fully configure the gps module via the gps viewer pc software. If you make sure that the gps module has the default firmware settings you don't have to configure a lot.
- Set the serial baud to 38400
- that's it!
Now you have to configure the arducopter software.
Place "#define GPS_PROTOCOL GPS_PROTOCOL_NMEA" in the APM_config.h file. Compile, upload and connect the GPS module to serial 1 on you arduino mega board. It works ! :)
If it should not work or if you would only like to do a simple test, the arducopter GPS library included a simple arduino test sketch. Go to the AP_GPS library folder, locate the NMEA example sketch. Upload and test the GPS.
zondag 12 augustus 2012
Arducopter to Seeeduino Mega
This project isn't finished yet. So what's next?
I'm currently trying to port the ArduCopter uav platform from Diydrones to my hardware. The ArduCopter multirotor uav platform is opensource and arduino compatible. But the guys from DiyDrones build there own hardware boards.
I did choose this road and stop developing my own quadcopter software, because the arducopter project is open source, has a lot of features and has a very nice pc software (ground station). I think porting this project to my own hardware will take less time the continue with programming my own software.
The arducopter firmware I'll try to port is version 2.5.3. After succes I can maybe take a look at v2.6 or 2.7 But the arducopter requirements say that as from version 2.7 there own, but older APM1 board isn't supported anymore. The APM1 board has an atmega 1280 like my seeeduinomega board. The port that I"m going to do is optimezed for the 1280 chip and not the newer 2560 chip that is shipped with the APM2 board.
The arducopter firmware I'll try to port is version 2.5.3. After succes I can maybe take a look at v2.6 or 2.7 But the arducopter requirements say that as from version 2.7 there own, but older APM1 board isn't supported anymore. The APM1 board has an atmega 1280 like my seeeduinomega board. The port that I"m going to do is optimezed for the 1280 chip and not the newer 2560 chip that is shipped with the APM2 board.
A second problem is that the APM1 as well as the APM2 board from diydrones have a extra chip that handles RC input. The data that is recieved from your own RC reciever/transmitter will be read and handled by this second chip. It is clear that on a arduino mega board or on a seeeduino mega board there is only one chip. So for this project I will not be able to fly with a normal RC transmitter. But that is not a problem, because the arducopter PC software can handle joystick input to fly any multicopter. And that is what I already did with my own software :)
in the next blogs I'll give more information and try to give a step by step tutorial.
- first of all you have to download the arducopter firmware
in the next blogs I'll give more information and try to give a step by step tutorial.
- first of all you have to download the arducopter firmware
http://code.google.com/p/arducopter/downloads/list
- you need to place all the libraries in you arduino program. Go to the folder where you installed arduino. Locate the libraries folder and copy all arducopter libraries to this folder.
- as from know your arduino pc software is ready to compile the arducopter platform. I'm using arduino v0.22 and v1.0. But note that we still have to make some changes in the firmware itself.
Labels:
arducopter,
arduino,
diydrones,
port,
seeeduino mega
dinsdag 24 juli 2012
First flight
My project is progressing very slowly. But here it is. Proof of concept. My multicopter can fly.
As you can see, it still needs some PID tuning. And I really need to learn how to fly and land this thing. I got the impression that there is some latency on my control input/uplink. The copter responds to my controls but I feel that I don't really have it under control.
Equipment quadcopter:
- Alu Quad + frame 60cm square tube 15x15x1.5mm (~ 53cm from motor center to oposit motor center)
- 4 x Motors AX-2210N 1000kv from hobbyking
- 4 x EPP 1045 props from lipoly (2xcw & 2xccw)
- 4 x Blueseries ECS 12 amp from hobbyking
- 4 x homemade vibration reduction motor mount (see previous blog)
- Seeeduino Mega v1.1 board (arduino compatible)
- Razor 9DOF IMU from sparkfun
- LantroniX Matchport wifi module
- Turnigy 3000mAh 3S 20C Lipo Pack from hobbyking
total weight: ~ 1200 grams
Equipment groundstation:
- wifi router
- laptop
- usb gamepad
The Seeeduino Mega board has my own custom code (written in arduino). Ok, I did not reinvent fire. I read a lot on the internet. I took the basics and made my own program that controls the quad. The 9DOF imu is equiped with a modified version of the AHRS firmware. Note that it is not the version I upload in one of my previous blogposts. The version I currently use will be uploaded later.
The lantronix B/G wifi module translates wireless ip based UDP/TCP packets to serial uart. I can send commands from my laptop via UDP to the quad copter. The usb gamepad is used to control/fly the quadcopter. The copter sends its data from sensors/batt status/motorspeed/... via the wifi module in realtime back to my laptop. The program on the laptop that controls all this is written in VB.Net (2003)
As you can see, it still needs some PID tuning. And I really need to learn how to fly and land this thing. I got the impression that there is some latency on my control input/uplink. The copter responds to my controls but I feel that I don't really have it under control.
Equipment quadcopter:
- Alu Quad + frame 60cm square tube 15x15x1.5mm (~ 53cm from motor center to oposit motor center)
- 4 x Motors AX-2210N 1000kv from hobbyking
- 4 x EPP 1045 props from lipoly (2xcw & 2xccw)
- 4 x Blueseries ECS 12 amp from hobbyking
- 4 x homemade vibration reduction motor mount (see previous blog)
- Seeeduino Mega v1.1 board (arduino compatible)
- Razor 9DOF IMU from sparkfun
- LantroniX Matchport wifi module
- Turnigy 3000mAh 3S 20C Lipo Pack from hobbyking
total weight: ~ 1200 grams
Equipment groundstation:
- wifi router
- laptop
- usb gamepad
The Seeeduino Mega board has my own custom code (written in arduino). Ok, I did not reinvent fire. I read a lot on the internet. I took the basics and made my own program that controls the quad. The 9DOF imu is equiped with a modified version of the AHRS firmware. Note that it is not the version I upload in one of my previous blogposts. The version I currently use will be uploaded later.
The lantronix B/G wifi module translates wireless ip based UDP/TCP packets to serial uart. I can send commands from my laptop via UDP to the quad copter. The usb gamepad is used to control/fly the quadcopter. The copter sends its data from sensors/batt status/motorspeed/... via the wifi module in realtime back to my laptop. The program on the laptop that controls all this is written in VB.Net (2003)
dinsdag 10 april 2012
vibration reducing motor mount
Here it is. My homemade motor mount. It's easy to build, it's cheap and it has a good result on reducing motor vibrations. The only disatvantage is that motor temperature is a bit higher. If you mount the motors directly on to the aly frame the heat will flow in to the frame causing the motor to be cooler. In this case the motor mount blocks this temperature flow so to motors run warmer.
1) Take some material that you think will be strong enough to hold your motors and make some little plates (in pair). Size: a bit larger then your motor :)
2) 1 one plate you drill the holes you need to mount the motor and rubbers. On the other plate you drill the holes you need to mount this plate to you quadcopter frame and rubbers. In my case I use 6 rubber to hold 1 motor.
3) When pushing the rubbers in to the holes and attach the 2 plates. You will see that there will be no contact from motor to frame. It's that simple. If you have a smaller multicopter with less thrust you can use 4 rubbers. If you have a lager multicopter with more thrust just add some rubbers.
The rubbers I used for this motor mount are in fact computer case fan mounting rubbers. They are really cheap as you can see -> Case Fan Rubbers
I noticed that there exist professionel RC motor mount rubbers. But these are more expensive and hard to get. Maybe they give an even result. But as I said, my setup is really easy to build and it's very cheap.
dinsdag 3 april 2012
Vibration troubles
Indeed, the Razor 9DOF imu is really sensitive to vibrations. Motor vibrations cause that much noise on the sensors that this board really can't be used in a multicopter. But you can fix this with some tips & tricks.
I really have tested everything to reduce vibrations. Nylon spacers/srews, foam, rubbers, rubber band,... just everything you can imagine. The only thing that really helps to reduce vibration noise is to make a motor mount that is completely saperated from the frame by some rubbers. I will give more details on this in my next blog.
With homemade motormount I was able to
- reduce GYRO noise to 1%
- reduce ACC noise with 90%
I noticed that the MAG on this IMU board is sensitive to EMF caused by motors and/or current. When motors spin up the data on the MAG shifts up or down. I'll investigate this later and try to find a fix for this problem. So Currently I can't use the DCM algoritme. But using GYRO and ACC raw data should be enough to get my quadcopter stable.
I also noticed that increasing the ACC update rate increases the noise on the raw data. I currently update my ACC at 12hz to get a good result.
But by using the GYRO (100hz) data and ACC (12hz) data in one formula I still have an output rate at 100hz!
I really have tested everything to reduce vibrations. Nylon spacers/srews, foam, rubbers, rubber band,... just everything you can imagine. The only thing that really helps to reduce vibration noise is to make a motor mount that is completely saperated from the frame by some rubbers. I will give more details on this in my next blog.
With homemade motormount I was able to
- reduce GYRO noise to 1%
- reduce ACC noise with 90%
I noticed that the MAG on this IMU board is sensitive to EMF caused by motors and/or current. When motors spin up the data on the MAG shifts up or down. I'll investigate this later and try to find a fix for this problem. So Currently I can't use the DCM algoritme. But using GYRO and ACC raw data should be enough to get my quadcopter stable.
I also noticed that increasing the ACC update rate increases the noise on the raw data. I currently update my ACC at 12hz to get a good result.
But by using the GYRO (100hz) data and ACC (12hz) data in one formula I still have an output rate at 100hz!
donderdag 2 februari 2012
IMU Source Code
Finaly I have the time to post my current Razor 9DOF IMU 100hz firmeware source code.
Some things you will have to do and also keep in mind before uploading my code to your own IMU:
- use only on the same IMU hardware version or make sure it's compatible to mine.
- use only at your own risc! :)
- make sure your arduino i2c works @ 400kbps. Check this howto. (find twi.h change speed)
- I compiled my sketch with arduino v0.22. Other arduino versions migth give errors while compiling and/or will give less performance (fps).
- after uploading my firmeware to the IMU you can't read the output with arduino serial monitor. So you will have to test the output with another arduino board or a pc application that can handle 250kbps serial communication.
- I have changed the output function to get beter performance to my own needs. Output is DCM Euler angles and Raw Gyro data. Currently in my PID calculations I use DCM euler angles in my P term and use de raw gyro data in my D term.
- Notice that my output is euler_angle*100. When using this value you will first need to divide it by 100. Also consider that maybe you will have to inverse some of my values in your own application.
If you would first like to test my firmware with the arduino serial monitor, you just have to change the serial baud rate to 115200. Then you can read the output string with the arduino serial monitor. Notice that you will not have 100hz (fps) when using the serial on 115kbps.
download the firmware: SF9DOF_AHRS_WIPO.zip
donderdag 12 januari 2012
IMU 100hz Firmware
I finally got my Razor 9D0F IMU running at 100hz. The problem with the 8mhz atmega328p is that DCM calculations take more than 5ms. Knowing that 1 loop cycle can max be 10ms to get a 100hz output it's very hard to get all other things done withing this time. DCM code itself is to much math for me so I'm only able to tune output/input speeds.
The original Razor 9Dof AHRS firmware has a main loop running at 50hz. This main loop contains an subloop running at 10hz for compas readings. All i2c data is read at 100000bps and uart output is at 57600bps. So every 20ms this board pushes an update over the serial.
My own new AHRS firmware has a main loop running at 100hz. So every 10ms my firmware pushes an update over the serial. To achieve the 100hz rate all i2c data comunication is at 400000bps and uart output is at 250000bps! I also tuned the serial output code. The original AHRS output code is simple arduino style, but it is really slow that way. Main loop runs at 100hz and my subloop runs at 50hz. My firmware has a faster update rate and should also be more accurate.
vrijdag 30 december 2011
The Motors that I'll use for my quadrocopter are the HobbyKing AX-2210N 1000kv.
(hobbyking productpage)
As I see, most quadrocopters use low kv motors. They just have to create a good static trust. Because these motors have a low kv they consume less power the high kv motors. Note that a large propellor should be used to get enough thrust.
These motors will be equiped with a 10 inch GWS 1060 prop. My quadrocopter will be around 1.1kg. I hope this will work :)
A good review/test of these motors with several props and voltages can be found on this link. peakeff.com AX-2210N benchmark As you can see on this page. At max power I should get a total thrust of 3kg. The total weigth of a quadrocopter should be maximal 1/2 of the maximal thrust.
practical advice: these motors perform well and are very cheap, but quality is medium. I bought a total of 6 motor. 2 motors had shaft that was not 100% straight. You can't see it with your eyes. But ones they turn with your prop. You will see them dance :). This gives a lot of unwanted vibrations on your quadroframe and noise to your imu. So if you buy these motors, order more than you need :)
(hobbyking productpage)
As I see, most quadrocopters use low kv motors. They just have to create a good static trust. Because these motors have a low kv they consume less power the high kv motors. Note that a large propellor should be used to get enough thrust.
These motors will be equiped with a 10 inch GWS 1060 prop. My quadrocopter will be around 1.1kg. I hope this will work :)
A good review/test of these motors with several props and voltages can be found on this link. peakeff.com AX-2210N benchmark As you can see on this page. At max power I should get a total thrust of 3kg. The total weigth of a quadrocopter should be maximal 1/2 of the maximal thrust.
practical advice: these motors perform well and are very cheap, but quality is medium. I bought a total of 6 motor. 2 motors had shaft that was not 100% straight. You can't see it with your eyes. But ones they turn with your prop. You will see them dance :). This gives a lot of unwanted vibrations on your quadroframe and noise to your imu. So if you buy these motors, order more than you need :)
zondag 27 november 2011
IMU firmware
Today I managed to upload the AHRS firmeware to the Razor 9DOF IMU. To achieve this you need to download the arduino platform software and of course the new firmeware (see link in previeous post). You also need to connect the 9dof IMU to the pc via a usb to serial uart (FTDI) converter.
The converter I use is this one: http://www2.conrad.be/goto.php?artikel=197326. This converter can operate in 3.3v or 5v TTL signal. The razor 9DOF IMU uses a 3.3v signal on the TX and RX pin. To power the IMU board you can connect the vbus pin from this converter to the external powerconnector on the razor imu board. So no need for an external power supply because all boards will be powered by the usb connection (max 100ma for this ftdi board).
More info about uploading the new firmeware to the 9DOF IMU can be found on this step by step tutorial: razor firmaware upload
The converter I use is this one: http://www2.conrad.be/goto.php?artikel=197326. This converter can operate in 3.3v or 5v TTL signal. The razor 9DOF IMU uses a 3.3v signal on the TX and RX pin. To power the IMU board you can connect the vbus pin from this converter to the external powerconnector on the razor imu board. So no need for an external power supply because all boards will be powered by the usb connection (max 100ma for this ftdi board).
More info about uploading the new firmeware to the 9DOF IMU can be found on this step by step tutorial: razor firmaware upload
zaterdag 26 november 2011
Inertial measurement unit (IMU)
To get my quadrocopter stabelized I use the Razor 9 Degrees of Freedom inertial measurement unit. This 9DOF IMU is AHRS (Attitude and heading reference system) compatible. More info about this imu: Razor 9DOF
My first test with this board learned me that the data from the original firmeware is very sensitive for external noise.
A quadrocopter has 4 motors. And that is a lot of vibrations. The original firmeware for this board sends raw data comming from the sensors. When my motors are on > 60% power, this raw data can't be used and the need for a good software filter (algoritme) is essential.
The new AHRS firmeware for this board uses the DCM (Direction Cosine Matrix) algoritme. This should reduce error (noise) in data and eliminate drift. Test result for new firmeware will be posted in next blog. The AHRS firmeware can be downloaded here: Razor 9DOF IMU AHRS code
My first test with this board learned me that the data from the original firmeware is very sensitive for external noise.
A quadrocopter has 4 motors. And that is a lot of vibrations. The original firmeware for this board sends raw data comming from the sensors. When my motors are on > 60% power, this raw data can't be used and the need for a good software filter (algoritme) is essential.
The new AHRS firmeware for this board uses the DCM (Direction Cosine Matrix) algoritme. This should reduce error (noise) in data and eliminate drift. Test result for new firmeware will be posted in next blog. The AHRS firmeware can be downloaded here: Razor 9DOF IMU AHRS code
donderdag 24 november 2011
Mainboard
The Seeeduino Mega will be my choice as main controller. This board is 100% arduino platform compatible. So it's very easy to develop, program and test. The advantage above the original arduino mega is that the Seeeduino Mega is a bit smaller.
Weight: 25.3 grams
ATmega 1280 @ 16MHz
Selectable 5V/3.3V operation
70 Digital IO
16 Analog inputs
14 PWM outputs
4 Hardware serial ports (UART)
More info about the Seeeduino Mega
This litle mainboard will be the central control unit of the quadrocopter. All input sensors and all output control units will be attached to this board.
Weight: 25.3 grams
ATmega 1280 @ 16MHz
Selectable 5V/3.3V operation
70 Digital IO
16 Analog inputs
14 PWM outputs
4 Hardware serial ports (UART)
More info about the Seeeduino Mega
This litle mainboard will be the central control unit of the quadrocopter. All input sensors and all output control units will be attached to this board.
Labels:
arduino,
mainboard,
mega,
quadrocopter,
seeeduino
woensdag 23 november 2011
Blog Startup
Hi,
This is my first post on this blog. On this blog I will post all info about my current project: Building a homemade wifi controlled quadrocopter with gps autonavigation and onboard wifi IP camera. I hope this will work :)
This is my first post on this blog. On this blog I will post all info about my current project: Building a homemade wifi controlled quadrocopter with gps autonavigation and onboard wifi IP camera. I hope this will work :)
Abonneren op:
Posts (Atom)