Página 1 de 1

control de crucero con arduino

MensajePublicado:05 Abr 2013, 11:16
por caballeroalba
hola!, supongo que esto os interesara, me lleve un montón de tiempo sin poder acceder por que la función de recuperar contraseña o registrarse daba error en la base de datos y no podía ni postear ni na, ahora mismo le tengo puesto al 106 un control de velocidad de crucero echo en arduino, aunque el código no lo he comentado por pereza, no tengo fotos por que estoy liado con exámenes y vaya, cuando acabe prometo un tutorial en condiciones.



Para que veáis el vídeo, OJO, el vídeo es una puerta mierda, no se por que youtube me lo ha puesto así (la culpa es mía por grabarlo en vertical...) había civiles de por medio y hasta el segundo 40 no se ve mas o menos como funciona, pero bueno, la cosa es que va bien.

Es una prueba de concepto, esa cajita que veis, es un prototipo, cuando tenga tiempo la pasare a un circuito impreso en condiciones y se controlará por bluetooh a través del móvil, también esta implementada que pare cuando se pulsa el freno o se desactiva mediante interruptor. No me demoro mas:





aqui el codigo:
Código: Seleccionar todo
// Saved by Simulator for Arduino V0.98.C.1 refer to vitronics.com.au
#include <Servo.h>


Servo servo;

int Pues=180; //posicion del servo
int pinMas=8;
int pinMenos=7;
 boolean activo=false;
int pinOn=6;

void setup(){
  attachInterrupt(0,apagar,FALLING);
 
 servo.attach(9); 
 pinMode(pinMas,INPUT);
 pinMode(pinMenos,INPUT);
 digitalWrite(pinMas,HIGH);
 digitalWrite(pinMenos,HIGH);
 pinMode(pinOn,INPUT);
 digitalWrite(pinOn,HIGH);
}


void loop(){
  servo.write(180);
  while(true){
    if(digitalRead(pinOn)==LOW){
     activo=true; 
    }
    while(activo){
     
        if(digitalRead(pinOn)==HIGH){
         activo=false;
         Pues=180;
         servo.write(Pues);
         
        }
       if(digitalRead(pinMas)==LOW){
        aumentar();
        
       } if(digitalRead(pinMenos)==LOW){
        disminuir();
       } 
       
    }
      
  

    
    
    
 
  
  
  
}
}


void aumentar(){
  
 Pues=Pues-3;
  delay(100);  
}

void disminuir(){
 
 Pues=Pues+3;
delay(100);
  
}
void apagar(){
 Pues=180;
servo.write(Pues);
activo=false;
  
}


la posición de 180º es por que el servo esta montado del revés, no os asustéis.


ala, a ver que os parece

Saludos!!

Re: control de crucero con arduino

MensajePublicado:05 Abr 2013, 14:52
por yam
acojonante tio jejejej

Re: control de crucero con arduino

MensajePublicado:05 Abr 2013, 18:17
por Rosendo_HDI
UPS pero no lleva control de bucle cerrado¡¡¡¡ En una cuesta abajo sale disparao.
Puedes coger del sensor de la caja la señal y leerla digitalmente midiendo el tiempo de fase,no deja de ser un tren de impulsos.
Yo soy mas de PIC a muerte,pero ahora estan de moda los cacharrillos estos del arduino.

Re: control de crucero con arduino

MensajePublicado:05 Abr 2013, 19:03
por caballeroalba
Rosendo_HDI escribió:UPS pero no lleva control de bucle cerrado¡¡¡¡ En una cuesta abajo sale disparao.
Puedes coger del sensor de la caja la señal y leerla digitalmente midiendo el tiempo de fase,no deja de ser un tren de impulsos.
Yo soy mas de PIC a muerte,pero ahora estan de moda los cacharrillos estos del arduino.

tranquilo, esta a modo de prototipo, no tengo ni idea de sacar la velocidad (en la version diesel al menos)


la pillare del gps del movil(android) para nivelar el servo, y control de bucle infinito tambien

Re: control de crucero con arduino

MensajePublicado:05 Abr 2013, 19:04
por caballeroalba
y bueno para pic, soy un negao para el emsamblador, aurdino proporciona un lenguaje de alto nivel y muchas librerias asi que es muy facil programarlo


igualmente mirate para los pic el lenguaje JAL

Re: control de crucero con arduino

MensajePublicado:05 Abr 2013, 21:52
por Rosendo_HDI
Velocidad desde la caja de cambios,hay una pieza que con un par de resistencas iria directo a una entrada digital del arduino.Una interrupcion para medir el tiempo y pista.
Lo del ensamblador no es asi..Desde hace muchos años los PIC se programan en C y hay librerias para todo.Antes aun que arduino.Te hablo que empece a programarlos en C hace 8 años y ya era viejo el entorno que usaba.
Lo ultimo que estoy diseñando es un quemador de caldera que lleva control de velocidad de un motor monofasico por correccion de fase con deteccion de pase por 0,pantalla tft 3,2" con tactil,sensores One Wire ,varias entradas analogicas salida de PWM para un infrarrojo ,encoder giratorio con codigo grey 2 bits,calendario externo RTC ..y de todo hay librerias.
Eso si,estoy haciendo malabarismos con los pines porque tiene 44 y estoy empezando a pensar ya en meter 2 pics.
Un ejemplo para que veas la similitud con arduino,el mas sencillo posible del tipico led parpadeando.
Código: Seleccionar todo
#include <16f877a.h>  //PIC utilizado         
#fuses XT,NOWDT,NOPROTECT,PUT  //Configuramos los fuses
#use delay (clock=4000000)     //Oscilador a 4Mhz
#use fast_io(b)   //Optimizamos E/S del PORTB
//------Programa principal-----
void main(void)
{
   set_tris_b(0xFE);   //Salida RB0 como salida, el resto como entrada.
   disable_interrupts(GLOBAL);   //todas las interrupciones desactivadas
   do{   
      output_low(PIN_B0);   //Apago el LED
      delay_ms(500);        //Espero 500ms.    
      output_high(PIN_B0);  //Enciendo el LED
      delay_ms(500);        //Espero 500ms. 
   }while(TRUE);            //Repito el bucle
}
Si te sirve de pista para hacerlo con el movil hay un programa que convierte la velocidad de un gps android en audio la cual se puede medir.O..por bluetooth como bien dices,un modulo bluetooth pal arduino,vale unos 5€ yo tengo un monton por aqui tiraos porque el quemador que estoy haciendo da como opcion programar los parametros desde el movil android.

Re: control de crucero con arduino

MensajePublicado:06 Abr 2013, 17:39
por caballeroalba
Rosendo_HDI escribió:Velocidad desde la caja de cambios,hay una pieza que con un par de resistencas iria directo a una entrada digital del arduino.Una interrupcion para medir el tiempo y pista.
Lo del ensamblador no es asi..Desde hace muchos años los PIC se programan en C y hay librerias para todo.Antes aun que arduino.Te hablo que empece a programarlos en C hace 8 años y ya era viejo el entorno que usaba.
Lo ultimo que estoy diseñando es un quemador de caldera que lleva control de velocidad de un motor monofasico por correccion de fase con deteccion de pase por 0,pantalla tft 3,2" con tactil,sensores One Wire ,varias entradas analogicas salida de PWM para un infrarrojo ,encoder giratorio con codigo grey 2 bits,calendario externo RTC ..y de todo hay librerias.
Eso si,estoy haciendo malabarismos con los pines porque tiene 44 y estoy empezando a pensar ya en meter 2 pics.
Un ejemplo para que veas la similitud con arduino,el mas sencillo posible del tipico led parpadeando.
Código: Seleccionar todo
#include <16f877a.h>  //PIC utilizado         
#fuses XT,NOWDT,NOPROTECT,PUT  //Configuramos los fuses
#use delay (clock=4000000)     //Oscilador a 4Mhz
#use fast_io(b)   //Optimizamos E/S del PORTB
//------Programa principal-----
void main(void)
{
   set_tris_b(0xFE);   //Salida RB0 como salida, el resto como entrada.
   disable_interrupts(GLOBAL);   //todas las interrupciones desactivadas
   do{   
      output_low(PIN_B0);   //Apago el LED
      delay_ms(500);        //Espero 500ms.    
      output_high(PIN_B0);  //Enciendo el LED
      delay_ms(500);        //Espero 500ms. 
   }while(TRUE);            //Repito el bucle
}
Si te sirve de pista para hacerlo con el movil hay un programa que convierte la velocidad de un gps android en audio la cual se puede medir.O..por bluetooth como bien dices,un modulo bluetooth pal arduino,vale unos 5€ yo tengo un monton por aqui tiraos porque el quemador que estoy haciendo da como opcion programar los parametros desde el movil android.

podrias usar un decodificador para aumentar el numero de pines digitales poipu3