Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

03/08/2016 #1


Se cuelga la placa Arduino
Hola.

Pues ese es mi problema. Es un diseño para controlar y frenar un motor DC, y cuando pulso de manera repetitiva y rápida el interruptor de freno, se bloquea el circuito.
Pienso que es el programa, pero yo no consigo ver el error.
Si alguien puede darme una idea lo agradeceré enormemente, adjunto el programa.
Código PHP:
// ENTRADAS
int FONDO 13;//entrada gas fondo poste
int C1    =  2;//entrada curva 1
int C2    =  4;//entrada curva 2
int C3    =  3;//entrada curva 3
int BRAKE =  1;//entrada freno INTERRUPTOR
int HALL  A5;//entrada sensor hall
int MINIM A4;//entrada ajuste minimo
int PFET  A1;//entrada pfet antispin ajuste
int NFET  A0;//entrada ajuste freno
//SALIDAS
int PULso    11;//salida pwm en pin 3 transistor
int FETfondo 10;//salida pwm en pin 10 fondo
int FREno    9;//salida pwm nfet freno
//VARIABLES
int VC     0;//variable curva
int VC1    0;//
int VC2    0;//
int VC3    0;//
int ancho  0;//variable ancho pulso transistor de potencia
int minimo 0;//variable de minimo o salida
int afondo 0;//variable gas fondo solo para encender el led y fet
int pfet   0;//variable pulso fet de fondo
int nfet   0;//variable pulso fet de freno
int vfreno 0;//variable entrada freno
int aspin  0;//variable ajuste antispin
unsigned long timer 0;//variable timer antispin

void setup() 

{
  
TCCR2B = (TCCR2B 0b11111000) | 0x01;
  
  
pinMode(FONDO,INPUT);     //configuramos pin 0 como entrada poste fondo
  
pinMode(FREno,OUTPUT);    //configuramoa pin 9 como salida pwm fet-freno
  
pinMode(PULso,OUTPUT);    //configuramos pin 5 como salida pwm fuente pre transistor
  
pinMode(FETfondo,OUTPUT); //configuramos pin 10 como salida pwm fet-fondo
}


void loop() 

{
  
nfet analogRead(NFET); // leemos mando ajuste freno
  
nfet map(nfet010230255); // mapeamos el rango del ajuste del freno
  
vfreno digitalRead(BRAKE); // leemos interuptor de freno
  
if (vfreno == HIGH)
  {
    
analogWrite(PULso0); 
    
analogWrite(FETfondo0); 
    
analogWrite(FREnonfet); 
  }
  else
  {
  
analogWrite(FREno0); //apagamos fet de freno
  
VC1 digitalRead(C1);
  
VC2 digitalRead(C2);
  
VC3 digitalRead(C3);
  if (
VC1 == HIGH)
  {
    
VC 249;
  }
  else if (
VC2 == HIGH)
  {
    
VC 243;
  }
  else if (
VC3 == HIGH)
  {
    
VC 237;
  }
  else
  {
    
VC 255;
  }
  
aspin analogRead(PFET); //leemos ajuste antispin
  
aspin map(aspin0102308); //mapeamos el rango del ajuste del antispin
  
afondo digitalRead(FONDO); //leemos si vamos afondo
  
  
if (afondo == HIGH)
  {
    
analogWrite(FETfondopfet);
    if (
pfet == 0)
    {
      
timer millis(); pfet++; // asignamos los ms actuales al timer y sumamos inicio pfet
    
}
    if (
pfet 255)
    { 
      if (
millis() - timer aspin// comprobamos si han pasado los milisegundos ajustados
      
{
        
pfet++; timer millis();
      } 
    }
    else
    {
      
analogWrite(FETfondo255);
    }
  }
  else
  {
    
pfet 0
    
analogWrite(FETfondopfet);
  }     
  
minimo analogRead(MINIM); //leemos el ajuste de minimo para transistor
  
minimo map(minimo010238115); // mapeamos el punto de salida
  
ancho analogRead(HALL); //leemos el sensor magnetico
  
ancho map(ancho320795VCminimo); // mapeado inverso del rango del ancho de pulso controlando el minimo ajustable
  
analogWrite(PULsoancho); // damos al pulso la anchura necesaria segun referencia
}} 
04/08/2016 #2


Hola.

En tu código el freno aparece como output, dices que "pulsas de manera repetitiva" pero no hay un pin que reciba ningún pulso de freno.

Por otro lado si tu Arduino se bloquea justo cuando el motor se activa, es probable que esté recibiendo EMI y puede se que no está bien aislado o acoplado el circuito inductivo del motor con el pin de arduino.

Muestra las conexiones y un plano de ese circuito.

Saludos

Enviado desde mi Nexus 5 mediante Tapatalk
04/08/2016 #3


Diodos de Clamping en la fuente y conmutador y capacitor de 0.1uF en las terminales del motor.
05/08/2016 #4


Solucionado

Gracias por las respuestas. Todo era generado por el driver para los Mosfets.......de la casa IXYS, lo he substituido por otro del fabricant I.R., y fin del problema.

Gracias de nuevo y un cordial saludo
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.