Uneven throttle on MultiWii

Uneven throttle is probably caused by differently calibrated ESCs. You might find strange need to trim your copter heavily.

Few tips if you have uneven throttle or strange banking or flipping when giving throttle:

– New copter: clean EEPROM (Arduino example eeprom_clear: change the value 512->1024)
– New copter:add line “#define MOTOR_STOP” to config.h
– New copter: always calibrate the ESC’s using the define ESC_CALIB_CANNOT_FLY (REMOVE PROPELLERS!)
– Now upload, run calibration, remove ESC_CALIB_CANNOT_FLY and upload again
– Use MultiWiiConf: calibrate ACC (and MAG too..)
– Check trims: ROLL, PITCH, YAW should all be 1500 when sticks in neutral
– Check functionality without propeller’s
– Remember: SimonK ESC’s CAN be calibrated to different throttle range

I’m using:
#define MINTHROTTLE 1064
#define MOTOR_STOP
#define MAXTHROTTLE 1850
#define MINCOMMAND 1000

Quadcopter MultiWii Mongoose board pin mapping

Quadcopter pins:

front left		front right
Arduino=3		Arduino=10
PD3			PB2
Mong: 3			Mong=10

rear left		rear right
Arduino=11		Arduino=9
PB3			PB1
Mong: MOSI		Mong=9

When programming pins facing forwards:

  #define GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[PITCH] = -Y; imu.gyroADC[ROLL] =  -X; imu.gyroADC[YAW] = -Z;}
  #define ACC_ORIENTATION(Y, X, Z)  {imu.accADC[PITCH]  =  Y; imu.accADC[ROLL]  =  -X; imu.accADC[YAW]  =  Z;}
  #define MAG_ORIENTATION(X, Y, Z)  {imu.magADC[PITCH]  = -X; imu.magADC[ROLL]  = Y; imu.magADC[YAW]  = -Z;}

Auto eject on Ultimaker 1

Here’s my g-code that pushes the stretchy bracelet off from building platform:
G1 X130 ; little bit to the right so that the fan hits the object
G1 Y195 ; Brings the bed all the way forward – so the ram is behind the part
G1 Z0.2 ; Lift the nozzle slightly so it doesn’t scrape along the bed during the ramming movement
G1 Y0 F6000 ; Sends the bed moving backwards, print impacts ram and is pushed off front of bed onto paper chute

Howto: Arduino Due as MIDI HID device

1) Get the HIDUINO code from: https://github.com/ddiakopoulos/hiduino

2) Get the MIDI library for Arduino at http://sourceforge.net/projects/arduinomidilib/

3) Program the 16u2 chip with ICSP programmer:

../bin/avrdude -C avrdude.conf -c avrispmkII -p m16u2 -P usb -U flash:w:/Users/jouni/Downloads/hiduino-master/Compiled\ Firmwares/HIDUINO_MIDI.hex

To RECOVER I wrote on OS X:

cd /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/sam/firmwares/atmega16u2

/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -c usbasp -p m16u2 -U flash:w:Arduino-DUE-usbserial.hex

4) Edit the arduino midi library file MIDI.h and comment row sayin “typedef uint16_t word;” to get rid off compiler error (if occurs).

5) Upload for example the following code to Due:

#include <MIDI.h>
/*
Basic I/O MIDI tutorial
by Franky
28/07/2009
*/
#define LED 13   // LED pin on Arduino board
void setup() {
pinMode(LED, OUTPUT);
MIDI.begin(4);            	// Launch MIDI with default options
// input channel is set to 4
}
void loop() {
digitalWrite(LED,HIGH);     // Blink the LED
MIDI.sendNoteOn(42,127,1);  // Send a Note (pitch 42, velo 127 on channel 1)
delay(1000);	 // Wait for a second
MIDI.sendNoteOff(42,0,1);   // Stop the note
digitalWrite(LED,LOW);
}
#include <MIDI.h>/*  Basic I/O MIDI tutorial  by Franky  28/07/2009*/
#define LED 13   // LED pin on Arduino board
void setup() {  pinMode(LED, OUTPUT);  MIDI.begin(4);            	// Launch MIDI with default options	 // input channel is set to 4}
void loop() {
digitalWrite(LED,HIGH);     // Blink the LED    MIDI.sendNoteOn(42,127,1);  // Send a Note (pitch 42, velo 127 on channel 1)    delay(1000);	 // Wait for a second    MIDI.sendNoteOff(42,0,1);   // Stop the note    digitalWrite(LED,LOW);

}

Technology snippets