Autor Tema: Proyecto 25 botones controlados por PIC  (Leído 44601 veces)

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado ifcaro

  • PIC10
  • *
  • Mensajes: 8
Re: Proyecto 25 botones controlados por PIC
« Respuesta #150 en: 20 de Junio de 2012, 18:15:19 »
Repito:
El delay no funciona con el USB.

Ok, como dijiste que con un bucle no valía, pensé que el delay valdría. Probaré a hacer el retraso de otra manera.

Probad primero con un led de salida para comprobar si se ha leído un pulsador.

A partir de ahí podéis continuar.

Donde debería ir el led? a la vuelta del pulsador?

Un saludo

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Proyecto 25 botones controlados por PIC
« Respuesta #151 en: 20 de Junio de 2012, 18:18:22 »
Si el USB funciona con interrupciones, entonces vale el delay o un bucle. Si el USB trabaja de forma cooperativa (hay que llamarle con frecuencia), se colgará.


Lo mejor es que conectes una salida libre a una resistencia en serie con un led y a masa.
Si la entrada vale uno, enciendes el led.

Así compruebas que las entradas se leen.


Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Proyecto 25 botones controlados por PIC
« Respuesta #152 en: 20 de Junio de 2012, 18:27:12 »
El retardo se puede hacer con interrupciones:

Una interrupción aumenta el valor de una variable cada milisegundo:

Código: [Seleccionar]
void isr_low_main(void) {

   if (PIR1bits.TMR2IF == 1) {
      PIR1bits.TMR2IF = 0;
      milliseconds++;
   }
}



En tu bucle compruebas que ha aumentado 100 milisegundos de forma cooperativa. Hay que hacerlo con una máquina de estados


Código: [Seleccionar]
  int estado = 0;

   while(1) {     // bucle infinito

      if (estado==0) {     // Reset contador de milisegundos
          milliseconds = 0;
          estado = 1;
      }

      if (estado == 1) {    // Espera que pasen 100 milisegundos
          if (milliseconds>=100)
            estado = 2;
       }

      if (estado == 2) {   // Leer y escribir entradas / salidas
         Leer_entradas();
         Escribir leds();
         estado = 3;
      }
 

      ...  Otras rutinas
      ...


      if (estado == 5) {  // Ultimo estado. Volver al principio
         estado = 0;
      }

      llamar_usb();
   }



Saludos.

Desconectado ifcaro

  • PIC10
  • *
  • Mensajes: 8
Re: Proyecto 25 botones controlados por PIC
« Respuesta #153 en: 20 de Junio de 2012, 20:10:13 »
He puesto un led en RB7 y lo he activado en la condición if(input(PIN_A0)) apagandolo un poco antes y se queda encendido todo el rato. Ademas el proteus cuando esta simulando tiene unos cuadros azules y rojos que indican si el hilo esta a nivel bajo o a nivel alto. Y yo según entiendo (dentro de la poca idea que tengo) el nivel alto no pasa de la primera resistencia y a los botones les llega siempre nivel bajo y al pic le llegan siempre todos los hilos a nivel alto. Yo ya no se si es que yo he dibujado mal el circuito o si la simulación no funciona o que le pasa. Lo mas lejos que he llegado fue cuando conecté los botones directamente al pic que detectaba los valores en algunos casos pero ahora siempre me indica todos pulsados.

Respecto a la interrupción que has comentado antes, ¿como se declara?

Un saludo y gracias por la paciencia que tienes con nosotros  :)

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Proyecto 25 botones controlados por PIC
« Respuesta #154 en: 21 de Junio de 2012, 09:54:55 »
La verdad es que os habéis embarcado en un proyecto bastante ambicioso para ser principiantes.
Cualquiera se puede quedar atascado en un proyecto así. A veces es por un problema muy simple y cuando lo descubres no te explicas como algo tan simple puede haber dado tantos problemas.

Parece que ahora estáis atascados con las entradas. Voy a echar otro vistazo al esquema para comprobar que todo está bien.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Proyecto 25 botones controlados por PIC
« Respuesta #155 en: 21 de Junio de 2012, 17:36:54 »
Parece que el Proteus no puede simular bien los transistores.
Se puede cambiar de la siguiente manera:

   1.- Quitáis los transistores y se sustituye todo por una sola resistencia de 2200 ohmios conectada a la salida RA
   2.- Todas las salidas RA se configuran como entradas excepto una como salida: TRISA = 0b11111110;
   3.- Sólo una salida RA se configura como salida a nivel alto: PORTA = 0b00000001;
   4.- Leer entradas RB


A ver si así os funciona.

Animo que lo estaís haciendo fenomenal.


Saludos.


PD. Creo que en otros mensajes he confundido entradas RB y salidas RA en este está igual que vuestra imagen de PROTEUS. RA=salidas,  RB=entradas
« Última modificación: 21 de Junio de 2012, 17:44:02 por Picuino »

Desconectado ifcaro

  • PIC10
  • *
  • Mensajes: 8
Re: Proyecto 25 botones controlados por PIC
« Respuesta #156 en: 21 de Junio de 2012, 22:54:26 »
Vale acabo de darme cuenta de un error gordaco que tenia. Resulta que tenia las entradas donde las salidas y las salidas donde las entradas por eso no funcionaba nada XD. Al leer tu ultimo post me he dado cuenta.

Ya las he puesto como deberían estar y ahora el circuito funciona, pero igual que antes de ponerle las protecciones. Cuando hay varios botones pulsados, la corriente pasa por donde no tendria que pasar.

He hecho una animación gif de la simulación para explicarlo gráficamente



Saludos

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Proyecto 25 botones controlados por PIC
« Respuesta #157 en: 22 de Junio de 2012, 08:46:14 »
Tienes toda la razón. Normalmente se soluciona con diodos para que los pulsadores sólo conduzcan corriente en un sentido como en el dibujo:




Como el circuito tiene transistores que sólo permiten conducir en un sentido creí que no se daría el problema, pero si que ocurre.

Hay que pensar cual es la configuración que necesita menos diodos y te respondo.


Saludos.

Desconectado ifcaro

  • PIC10
  • *
  • Mensajes: 8
Re: Proyecto 25 botones controlados por PIC
« Respuesta #158 en: 22 de Junio de 2012, 18:26:23 »
Ya me funciona aparentemente  :)

Lo que no se es si es mas sencillo de hacer el circuito con muxes

Un saludo

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Proyecto 25 botones controlados por PIC
« Respuesta #159 en: 23 de Junio de 2012, 04:47:27 »
Puede que si, pero hay que tener en cuenta también que hay que proteger cada entrada del multiplexor y son 22.

Los diodos pueden ser unos 1N4148 en formato smd SM1206. Ocupan muy poco espacio, son baratos y fáciles de soldar.

El problema está en que no se si son capaces de soportar una descarga electrostática.


Saludos.

Desconectado Nanashi

  • PIC12
  • **
  • Mensajes: 69
Re: Proyecto 25 botones controlados por PIC
« Respuesta #160 en: 25 de Junio de 2012, 15:45:14 »
Pues he diseñado la placa con los multiplexores ( Adjunto archivo )
Peero el diseño de picuino me sigue gustando mas, principalmente veo que la de multiplexores necesita 219 componentes y mucho mas espacio, al requeririr un optoacoplador por pulsador. La de picuino son 119 componentes.
Ahora claro es cuestion de ver cual funciona mejor, jejeje.
Mi solucion de momento creo que hare las dos y mirare aver cual va mejor, a menos que me recomendeis otra cosa.
Gracias y un saludo.

EDITO: Adjunto el archivo, jejejeje.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Proyecto 25 botones controlados por PIC
« Respuesta #161 en: 25 de Junio de 2012, 15:56:45 »
Si colocas optoacoplador necesitas además una fuente de alimentación aislada de la placa.
Es una solución complicada y más difícill, pero te aguantará de todo (derivaciones a un cable de tensión de red, descargas electrostáticas, etc)

Mi diseño aguanta descargas electrostáticas y no muy fuertes.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Proyecto 25 botones controlados por PIC
« Respuesta #162 en: 27 de Junio de 2012, 13:58:56 »
Pues he diseñado la placa con los multiplexores ( Adjunto archivo )
Peero el diseño de picuino me sigue gustando mas, principalmente veo que la de multiplexores necesita 219 componentes y mucho mas espacio, al requeririr un optoacoplador por pulsador. La de picuino son 119 componentes.
Ahora claro es cuestion de ver cual funciona mejor, jejeje.
Mi solucion de momento creo que hare las dos y mirare aver cual va mejor, a menos que me recomendeis otra cosa.
Gracias y un saludo.

EDITO: Adjunto el archivo, jejejeje.

Puedes probar a montar una pequeña placa con los dos tipos de entrada, conectadas a un integrado barato como el 70HC00.
Después dale descargas con un mechero electrónico o chispas después de caminar por una moqueta o quitarte un gersey de esos que te dejan electrizado.
A ver cuál aguanta más.
La placa de pruebas la puedes montar con cuatro componentes y un placa pretaladrada barata:







Saludos.