Memorial day is 05/25/2015 – Orders will ship out on May 26th. There will not be any deliveries or shipping on Monday. Any order placed after 11am ET on Friday May 22nd will not start to ship out until Tuesday May 26th.

Controlling a ducted fan
Moderators: adafruit_support_bill, adafruit

Controlling a ducted fan

by ewokkillah on Wed Feb 06, 2013 4:31 pm

Hi There,
I'm trying to control a ducted fan with a brushless motor. What I want to have it do is when i press a button have it go full speed. I tryed modifying an existing sketch that sweeps the speed of the motor up and down, but I cant seem to get it to work. so any help or advice would be greatly appreciated.
Thanks
This is a copy of the sketch I'm working from:

[code#] include <Servo.h>

Servo myservo;

void arm(){
// arm the speed controller, modify as necessary for your ESC
Serial.println("arming");
setSpeed(30);
delay(2000);
setSpeed(90);
delay(2000);
Serial.println("armed");
setSpeed(30);
delay(2000);
}

void setSpeed(int speed){
// speed is from 0 to 100 where 0 is off and 100 is maximum speed
//the following maps speed values of 0-100 to angles from 0-180,
int angle = map(speed, 0, 100, 0, 180);
myservo.write(angle);
}

void setup()
{
Serial.begin(115200);
myservo.attach(9);
arm();
}

void loop()
{
int speed;

Serial.println("Sweeping up");
for(speed = 37; speed <= 90; speed += 1) {
setSpeed(speed);
Serial.println(speed);
delay(100);
}
setSpeed(30);
delay(1000);
Serial.println("Sweeping down");
for(speed = 90; speed > 37; speed -= 1) {
setSpeed(speed);
Serial.println(speed);
delay(100);
}
Serial.println("30 halting...");
setSpeed(30);
delay(5000);
} [/code]
ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

by adafruit_support_bill on Wed Feb 06, 2013 7:17 pm

Does the sweep sketch work? I don't see any button code. What have you tried that didn't work.

adafruit_support_bill
 
Posts: 37497
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

by ewokkillah on Wed Feb 06, 2013 8:31 pm

thanks for your reply. That's the original sketch it works to sweep the motor speed up and down.
this is my modification
[code:banned]
#include <Servo.h>

Servo myservo;

int switchPin = 8;

void arm(){
// arm the speed controller, modify as necessary for your ESC
Serial.println("arming");
setSpeed(30);
delay(2000);
setSpeed(90);
delay(2000);
Serial.println("armed");
setSpeed(30);
delay(2000);
}

void setSpeed(int speed){
// speed is from 0 to 100 where 0 is off and 100 is maximum speed
//the following maps speed values of 0-100 to angles from 0-180,
int angle = map(speed, 0, 100, 0, 180);
myservo.write(angle);
}

void setup()
{
Serial.begin(115200);
myservo.attach(9);
pinMode(switchPin, INPUT);
arm();
}

void loop()
{
int speed;

Serial.println("GO");
if (digitalRead(switchPin) == HIGH);
{
setSpeed(90);
Serial.println(speed);
delay(4000);
}

Serial.println("STOP");
if (digitalRead(switchPin) == LOW);
{
setSpeed(0);
Serial.println(speed);
delay(100);
}
Serial.println("30 halting...");
setSpeed(30);
delay(5000);
}
[/code:banned]
It turns the motor on full speed then off, but no button functionality.
thanks.
ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

by adafruit_support_bill on Wed Feb 06, 2013 10:22 pm

What do you see in the serial monitor? Post the output.

adafruit_support_bill
 
Posts: 37497
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

by ewokkillah on Thu Feb 07, 2013 6:06 pm

arming
armed
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
GO
0
STOP
0
30 halting...
ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

by adafruit_support_bill on Thu Feb 07, 2013 7:43 pm

How do you have your switch wired? Are you using a pullup or pulldown resistor?

adafruit_support_bill
 
Posts: 37497
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

by ewokkillah on Thu Feb 07, 2013 11:28 pm

Yes a 10k pull down resistor on the ground
ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

by adafruit_support_bill on Fri Feb 08, 2013 7:09 am

Code: Select all | TOGGLE FULL SIZE
    if (digitalRead(switchPin) == HIGH);


Get rid of the semicolons at the end of your 'if' statements. Those are statement 'terminators' so the code after the 'if' is not conditional.

http://arduino.cc/en/Reference/If

adafruit_support_bill
 
Posts: 37497
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

by ewokkillah on Sat Feb 09, 2013 4:16 am

That did the trick :D
Thanks.
ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

by ewokkillah on Sun Feb 10, 2013 1:01 am

i think I jumped the gun a little. There still seems to be a bug somewhere it doesn't work consistently. Sometimes I press the button the fan turns on, and sometimes no.
any Ideas?
Thanks
ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

by adafruit_support_bill on Sun Feb 10, 2013 8:13 am

You have a lot of delays in your code. If you press the button during a delay, it won't be seen.

adafruit_support_bill
 
Posts: 37497
Joined: Sat Feb 07, 2009 10:11 am