Controlling a ducted fan

Post here about your Arduino projects, get help - for Adafruit customers!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Controlling a ducted fan

Post by ewokkillah »

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]

User avatar
adafruit_support_bill
 
Posts: 88093
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

Post by adafruit_support_bill »

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

ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

Post by ewokkillah »

thanks for your reply. That's the original sketch it works to sweep the motor speed up and down.
this is my modification

Code: Select all

#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);
}
It turns the motor on full speed then off, but no button functionality.
thanks.

User avatar
adafruit_support_bill
 
Posts: 88093
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

Post by adafruit_support_bill »

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

ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

Post by ewokkillah »

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...

User avatar
adafruit_support_bill
 
Posts: 88093
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

Post by adafruit_support_bill »

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

ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

Post by ewokkillah »

Yes a 10k pull down resistor on the ground

User avatar
adafruit_support_bill
 
Posts: 88093
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

Post by adafruit_support_bill »

Code: Select all

    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

ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

Post by ewokkillah »

That did the trick :D
Thanks.

ewokkillah
 
Posts: 9
Joined: Fri Nov 16, 2012 2:32 am

Re: Controlling a ducted fan

Post by ewokkillah »

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

User avatar
adafruit_support_bill
 
Posts: 88093
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling a ducted fan

Post by adafruit_support_bill »

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

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino”