Autor Tema: duda principiante I/O con PIC(paso adelante)  (Leído 1770 veces)

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

Desconectado venenodcuba

  • PIC10
  • *
  • Mensajes: 5
duda principiante I/O con PIC(paso adelante)
« en: 26 de Septiembre de 2013, 06:26:01 »
Hola a todos ,,,,,,, estoy super verde con esto de los pic e montado proyectos en el proteus para mas menos cojer la idea y ya dispuesto a realizar el mio desde cero me encuentro con una situacion que se las expongo de la manera mas simple posible ,,,,,, necesito si alguien pudiera dedicar un tiempito conmigo me diga como puedo encender y apagar un led utilizando un switch en una entrada del PIC estando el led conectado a una de sus salidas, al pulsar el switch enciende el led y al dejar de pulsarlo se apaga,,,,,ya se que para eso no hace falta un PIC pero les repito es la forma simple de lo que necesito,,,,,gracias por su tiempo

Edit1: Adaptando la programacion de otro proyecto que vi en este foro pude lograr parte de mi objetivo, jejeje lo que es no saber, esta fue la c=solucion mas simple que pude encontrar:

Código: [Seleccionar]
while(TRUE)
{
   if(input_state(PIN_A0)){
      output_high(PIN_B0);
   }else{
      output_low(PIN_B0);
   }
}
asta aqui todo bien  :-/, ahora unas preguntillas
1-lo que voy a monitoriar casi todo es hay V no hay V de 12v, en el simulador coloque una R de 10k a la entrada del PIC y una de 1k a GND, en el programa no me da problemas, ahora en la vida real puedo trabajar asi o necesito si o si bajar ese V ??

2-tengo 2 señales que van de 0 a 12v por lo que e leido para esas necesito configurar la entrada del pic como analogica y pensaba usar los metodos de construir un voltimetro para procesar esa info, voy bien ?

3-y por ultimo que tambien imagino que si, puedo recivir todas esas señales en un PIC para que se comunique con otro PIC y sea el que muestre los resultados ?

« Última modificación: 26 de Septiembre de 2013, 10:28:30 por venenodcuba »

Desconectado necati67676767

  • PIC10
  • *
  • Mensajes: 2
Re: duda principiante I/O con PIC(paso adelante)
« Respuesta #1 en: 26 de Septiembre de 2013, 20:41:29 »
output_bit(PIN_B0,input_state(PIN_A0));

Desconectado BBMNet

  • PIC12
  • **
  • Mensajes: 91
Re: duda principiante I/O con PIC(paso adelante)
« Respuesta #2 en: 27 de Septiembre de 2013, 12:13:23 »
Temo que no me queda muy claro. Primero, las señales de entrada son analógicas o digitales.

Sin importar el tipo, si el nivel máximo es +12V entonces el divisor está equivocado debido a que el voltaje en la patilla del PIC sería muy bajo con lo que la detección sería errática en el mejor de los casos. Calcula para que a +12V tengas alrededor de +5V en el pin de entrada.

Con respecto a la conversión de señales analógicas no debes tener problemas siempre y cuando sigas los ejemplos para esto.

Para la comunicación tampoco deberías tener problema. Sólo determina el protocolo a utilizar. Esto es indepenciente del hecho de utilizar RS-232, IIC, dos hilos, etc. Incluso probablemente te convenga crear tu propio protocolo de acuerdo a tu necesidad.

Con respecto a las señales que mencionas de prender switches y activar salidas, simplemente lee las entradas y cópialas a la salida. De hecho una vez copiadas puedes hacer lo que quieras con ellas.

En el siguiente ejemplo utilizo un switch conectado a PA0. Ese pin tendría una resistencia de 10K a +5V y el switch a tierra. Utilizo dos registros auxiliares, RIX donde queda la imágen de las entradas y RIY donde queda la imágen de las salidas:

CLRW                    ; Limpia W.
MOVWF RIY            ; Borra RIY.

MOVF PORTA, W     ; Lee las entradas.
MOVWF RIX           ; Guárdalas en RIX.

BTFSS RIX, 0         ; Aquí realizas el proceso lógico de las entradas leídas ajustando los bits de salida como quieras.
BSF RIY, 0              ; En este ejemplo utilizas un switch conectado a PA<0> para encender y apagar complementariamente
BTFSC RIX, 0         ; leds conectados a PB<0> y PB<1>. Me refiero a que cuando uno está encendido el otro estará apagado
BSF RIY, 1             ; siéndo controlados por el mismo switch.

MOVF RIY, W          ; Recupera la imágen de salidas.
MOVWF PORTB       ; Activa las salidas.

Es interesante hacer notar que de hecho esta secuencia es el fundamento de cualquier PLC.

Espero que te sirva.

Un saludo.

Desconectado venenodcuba

  • PIC10
  • *
  • Mensajes: 5
Re: duda principiante I/O con PIC(paso adelante)
« Respuesta #3 en: 27 de Septiembre de 2013, 20:38:03 »
ok, gracias a tdos si lo del divisor ya me lo aclararon, ya esta corecto llegan 12v pasan por el divisor y al pic solo llegan 4,94v y para lo que necesito funciona perfecto, ahora estoy en la parte del que monitorea la senal de 0a12v estoy siguiendo un tuto de un voltimetro pero no logro adaptarlo del todo bien ya que es para 5v, pero bueno sigo con eso

Desconectado BBMNet

  • PIC12
  • **
  • Mensajes: 91
Re: duda principiante I/O con PIC(paso adelante)
« Respuesta #4 en: 28 de Septiembre de 2013, 00:09:23 »
Te vuelvo a recordar que el voltaje máximo en la entrada de los PIC es +5V. Si les conectas más los dañarás.

Esto significa que si por lo que entiendo tu quieres o necesitas que tu señal sea de hasta +12V entonces utiliza el mismo divisor y del valor de la conversión utiliza un multiplicador que te ajuste al valor correcto que deseas.

Para ejemplificar pensemos en un convertidor de 8 bits. Para un rango de 0 a 5 volts tu ADC te dará un valor de 0 para 0V y de 255 para 5V. Esto es 0.0196V por bit.

Utilizando el mismo ADC pero ahora con el rango de 0 a 12V utilizando el divisor de voltaje con resistencias tendrás el valor de 0 para 0V y de 255 para los 12V. Esto te dá el equivalente a 0.0471V por bit. Lo que sucede realmente es que dado el divisor el ADC entrega los mismos 0.0196V por bit pero los multiplicamos por 2.401 para obtener el resultado correcto en el rango que necesitamos, 12V en este caso.

Recuerda que esto es un "truco" ya que en la entrada del ADC seguirás leyendo el mismo rango permitido de voltaje de 0 a 5V.

Espero que esto te aclare el punto.

Un cordial saludo.

Desconectado venenodcuba

  • PIC10
  • *
  • Mensajes: 5
Re: duda principiante I/O con PIC(paso adelante)
« Respuesta #5 en: 28 de Septiembre de 2013, 07:59:29 »
Te vuelvo a recordar que el voltaje máximo en la entrada de los PIC es +5V. Si les conectas más los dañarás.

Esto significa que si por lo que entiendo tu quieres o necesitas que tu señal sea de hasta +12V entonces utiliza el mismo divisor y del valor de la conversión utiliza un multiplicador que te ajuste al valor correcto que deseas.

Para ejemplificar pensemos en un convertidor de 8 bits. Para un rango de 0 a 5 volts tu ADC te dará un valor de 0 para 0V y de 255 para 5V. Esto es 0.0196V por bit.

Utilizando el mismo ADC pero ahora con el rango de 0 a 12V utilizando el divisor de voltaje con resistencias tendrás el valor de 0 para 0V y de 255 para los 12V. Esto te dá el equivalente a 0.0471V por bit. Lo que sucede realmente es que dado el divisor el ADC entrega los mismos 0.0196V por bit pero los multiplicamos por 2.401 para obtener el resultado correcto en el rango que necesitamos, 12V en este caso.

Recuerda que esto es un "truco" ya que en la entrada del ADC seguirás leyendo el mismo rango permitido de voltaje de 0 a 5V.

Espero que esto te aclare el punto.

Un cordial saludo.
ooook bueno te cuento que al fin gracias a tu explicación logre armar el V para 12v,,puse el divisor y me da correctamente los 5v, puse un multímetro para ver el valor real que entra por el sensor(max12v) otro detrás del divisor(curiosidad para ver la caída) y en el prog lo puse asi jejej y funciona perfecto
Código: [Seleccionar]
xadc=read_adc();
xvol=xadc*5/255.0*2.401;

en el lcd me da el valor perfecto pero necesito que solo me muestre el # entero....???
« Última modificación: 28 de Septiembre de 2013, 14:37:22 por venenodcuba »


 

anything