Go Down

Topic: Control de motor ac con dimmer (Read 1 time) previous topic - next topic

roni101

Dec 14, 2017, 11:11 pm Last Edit: Dec 14, 2017, 11:38 pm by roni101
hola buenas a todos , soy un aficionado a la electronica y estoy empezando con arduino , mi primer proyecto seria controlar la potencia de un motor , para ello he comprado un dimer ac para arduino :



lo que quiero hacer es controlar un motor para que se quede fijo a una potencia por ejemplo al 20 porciento de potencia y poder cambiarlo al 50 o al  70 .

el motor que voy a utilizar va a ser este :




el codigo que me ha mandado el vendedor ha sido este , es para una luz . el outb no se cual es , lo he conectado todo menos ese y se queda fijo en una potencia yo diria que casi al maximo , la verdad que no entiendo nada de programación y me he puesto a cambiar numeros y no he conseguido cambiar el funcionamiento del motor .


Code: [Select]


// VCC -- 5V.
// GND -- GND.
//Z-c  -- D2.
//PWM  -- D3.
//outB -- A0.



#define pwm_Pin 3
#define blink_Pin 13
//#define timer 5
static bool state =HIGH;
static bool flag =false;
static bool stopbit =true;
//static byte level=8;
int count=1;
void setup()
{
  pinMode(A0,INPUT);
  pinMode(pwm_Pin,OUTPUT);
  digitalWrite(pwm_Pin,LOW);
  pinMode(blink_Pin,OUTPUT);
  attachInterrupt(0,control,RISING);
  
}

void loop()
{
 if(flag)
 {
  //delayMicroseconds(i*50);
  delayMicroseconds(analogRead(A0)*5);
  digitalWrite(pwm_Pin,HIGH);
  flag=false;
 }
}

void control()
{
  digitalWrite(pwm_Pin,LOW);
  flag=true;
  count++;
  if(count>100) count=1;
}

/*
 TCCR1A=0x00;
  TCCR1B=0x13;//div 64,CTC mode;
  TIMSK1 |= (1 << OCIE1A);
  OCR1A=2000-1;// 5ms;
  TCNT1=0; //counter init 0;
  
  //TCCR1B &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12));// clears all clock selects bits;

*/


















que parte seria para poder seleccionar la pootencia?
lo mismo este dimmer ac no es valido para un motor ?
la verdad que estoy muy perdido con todo esto , alguna idea ?
le agradeceria mucho a alguien que me pudiese echar un cable con esto.
muchas gracias

noter

#1
Dec 15, 2017, 12:07 am Last Edit: Dec 15, 2017, 12:08 am by noter
Supongo que la potencia se controle mediante un potenciómetro conectado a A0.
Prueba a sustituir la línea
  delayMicroseconds(analogRead(A0)*5);

por valores fijos, por ejemplo
  delayMicroseconds(1500);

a ver si así reduce la potencia.

roni101

#2
Dec 15, 2017, 01:19 am Last Edit: Dec 15, 2017, 01:46 am by roni101
Supongo que la potencia se controle mediante un potenciómetro conectado a A0.
Prueba a sustituir la línea
  delayMicroseconds(analogRead(A0)*5);

por valores fijos, por ejemplo
  delayMicroseconds(1500);

a ver si así reduce la potencia.
buenas noches, muchas gracias por tu rápida y acertada respuesta , he probado valores y del 5000 al 8000 me va variando la potencia del motor , asi que mil gracias de verdad tendre que ir jugando con los valores  ,
bueno mil gracias y buenas noches

roni101

ahora esoy intentando usar este codigo para aumenta la velocidad segun el tiempo

la idea seria que hasta el minuto 1 valla en una velocidad fijada y desde el minuto 1 se quedde en otra velocidad , la velocidad la controlo poniendo un valor fijo como me dijo el compañero,
el codigo lo he modificado pero no lo consigo me da error al compilar:
Code: [Select]


// VCC -- 5V.
// GND -- GND.
//Z-c  -- D2.
//PWM  -- D3.
//outB -- A0.

long previousMillis = 0;
long interval = 60000;
long interva2 = 180000;


#define pwm_Pin 3
#define blink_Pin 13
//#define timer 5
static bool state =HIGH;
static bool flag =false;
static bool stopbit =true;
//static byte level=8;
int count=1;
void setup()
{
  pinMode(A0,INPUT);
  pinMode(pwm_Pin,OUTPUT);
  digitalWrite(pwm_Pin,LOW);
  pinMode(blink_Pin,OUTPUT);
  attachInterrupt(0,control,RISING);
 
}

void loop()
{
unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval)


{
     if(flag)
 {
  //delayMicroseconds(i*50);
  delayMicroseconds(8000);
  digitalWrite(pwm_Pin,HIGH);
  flag=false;
 }
}
{
unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interva2)


{
     if(flag)
 {
  //delayMicroseconds(i*50);
  delayMicroseconds(6000);
  digitalWrite(pwm_Pin,HIGH);
  flag=false;
 }
}

void control()
{
  digitalWrite(pwm_Pin,LOW);
  flag=true;
  count++;
  if(count>100) count=1;
}

/*
 TCCR1A=0x00;
  TCCR1B=0x13;//div 64,CTC mode;
  TIMSK1 |= (1 << OCIE1A);
  OCR1A=2000-1;// 5ms;
  TCNT1=0; //counter init 0;
 
  //TCCR1B &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12));// clears all clock selects bits;

*/

Oscar_Emmanuel

Hola , disculpen soy nuevo en arduino y quería ver si me.podían ayudar con proyecto este código que compartieron. Se puede poner la luminosidad dependiendo de la temperatura? Es decir que se establezca la intensidad de un foco con la temperatura

Go Up