Autor Tema: Problemas con picos de tension en un 16f84A  (Leído 3323 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Problemas con picos de tension en un 16f84A
« en: 14 de Agosto de 2009, 21:39:07 »
Buenas de nuevo compañeros!

Acudo de nuevo a vosotros con la esperanza de ke me ayudeis con un problema ke tengo ke no se bien como solventarlo. Estoy usando mosfets BS170 a las salidas de un 16f84. Todo funciona correctamente, los problemas son dos: el primero ke este trt me lo vendieron en la tienda, asesorado por el vendedor y poco me imaginaba yo ke se activarian al reves de lo esperado. Logicamente la solucion es tan sencilla como invertir las salidas del pic mediante soft y se acabo el problema. El segundo problema y este si, mas serio, es ke al activar la alimentacion del pic se encienden durante un parpadeo todos los leds ke vayan controlados por dichos trt's, como si de un pico de voltaje se tratara. Hay alguna manera de solventarlo ya sea mediante hard o soft? es un efecto muy molesto y me gustaria erradicarlo. Gracias de antemano!:-)

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: Problemas con picos de tension en un 16f84A
« Respuesta #1 en: 16 de Agosto de 2009, 10:20:54 »
Nadie me puede echar un cable?? :cry: :cry: :8} :8}

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Problemas con picos de tension en un 16f84A
« Respuesta #2 en: 16 de Agosto de 2009, 11:08:16 »
Hola Madkazuya, bienvenido al foro!  :mrgreen:
Primero que nada... leiste las reglas del foro?, allí se aclára, que en lo posible , no se escriba tipo SMS...  has probado a escribir un programa  como BKF  Klrf...
no funcionaria  :D

En cuanto a tu problema, tendria que ver el programa.... lo primero seria setear las entradas salidas... colocarlas en cero o uno segun corresponda... pues alli se puede producir el pulso que mencionas ok?

coloca el programa asi se analiza

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problemas con picos de tension en un 16f84A
« Respuesta #3 en: 16 de Agosto de 2009, 14:35:14 »
MADKazuya. Los relays son componentes que suelen inyectar ruido en las lineas. Esto puede hacer que el uC se comporte de modo extraño. Prueba utilizando optoacolpadores entre la etapa de potencia y el uC.

Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: Problemas con picos de tension en un 16f84A
« Respuesta #4 en: 17 de Agosto de 2009, 08:11:57 »
MADKazuya. Los relays son componentes que suelen inyectar ruido en las lineas. Esto puede hacer que el uC se comporte de modo extraño. Prueba utilizando optoacolpadores entre la etapa de potencia y el uC.

Saludos

Antetodo, gracias por las respuestas.

BrunoF, estoy usando transistores BS170, supuestamente no tiene los inconvenientes de los relays. No se si cambia mucho.

todopic, procurare evitar las "k", es la costumbre...asi escribo mas rapido  :lol: :mrgreen:

Aqui dejo el codigo del programa, a ver que me podeis recomendar...gracias de antemano!

Código: [Seleccionar]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Autor:Kazu
;
; Fecha:11 agosto 2009
;
; Version:1.0
;
; Titulo:Cluster control
;
; Descripcion:Encendido paulatino de agujas

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


    list      p=16F84A             ; list directive to define processor
    #include <p16F84a.inc>         ; processor specific variable definitions

    __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

; '__CONFIG' directive is used to embed configuration data within .asm file. En el propio datasheet del PIC encontraremos mas informacion al respecto.
; CP= code protection, WDT = watchdog, PWRTE = power delay on turn on, XT = oscillator type (xt quartz cristal)
; The lables following the directive are located in the respective .inc file. Listado disponible en fichero 16f84a.inc en este caso.
; See respective data sheet for additional information on configuration word.

;***** VARIABLE DEFINITIONS

w_temp        EQU       0x0C        ; variable used for context saving. Guarda las constantes importantes en el momento de una interrupcion para ke no se pierda el PC
status_temp   EQU       0x0D        ; variable used for context saving. Igual ke el anterior
STATUS        equ       03h         ; Direccion del registro STATUS
TRISB         equ       86h         ; Direccion del registro triestado para el Puerto B.
PORTB         equ       06h         ; Direccion del Puerto B.
PDel0         equ       0Ch         ; Primer contador para nuestros bucles de retardo.
PDel1         equ       0Dh         ; Segundo contador para nuestros bucles de retardo.
PDel2         equ     0Eh ; Tercer contador para nuestros bucles de retardo.

;**********************************************************************
RESET_VECTOR      CODE    0x0000  ; processor reset vector. Punto de partida del programa si se hace un reset (direccion 0000)
goto    start             ; go to beginning of program


ISR               CODE    0x0004  ; interrupt vector location. Punto de inicio si se produce una interrupcion (direccion 0004)

Interrupt:

        movwf  w_temp             ; save off current W register contents
        movf   STATUS,w           ; move status register into W register
        movwf  status_temp        ; save off contents of STATUS register

;  Place ISR Here

        movf   status_temp,w      ; retrieve copy of STATUS register
        movwf  STATUS             ; restore pre-isr STATUS register contents
        swapf  w_temp,f
        swapf  w_temp,w           ; restore pre-isr W register contents
        retfie                    ; return from interrupt

start:
;
;****Configuracion del Puerto B****

            clrwdt    ; Limpia el watchdog de cualkier intervencion anterior
            bsf       STATUS,5         ; Cambiamos al banco 1Switch to Bank 1
            CLRF      TRISB            ; Configuramos el puerto B como salidas poniendo todos sus bits a 0 (todo salidas)
            bcf       STATUS,5         ; Volvemos al Banco 0.
movlw   b'11111000'    ; Apagamos todas las salidas del puerto B exceptuando la salida 3, ke al haber un trt Nmos ha de estar activada
movwf     PORTB    ; Mandamos al puerto B la informacion arriba descrita (20h)

;****Encendido del LED RB7****

call   Retraso    ; Llama la subrutina retraso y la ejecuta
BCF   PORTB,7    ; Transmitimos una senal alta al bit 7 del puerto B
call   Retraso    ; Llama la subrutina retraso y la ejecuta

;****Encendido del LED RB6****

    BCF   PORTB,6    ; Transmitimos una senal alta al bit 6 del puerto B
    call   Retraso    ; Llama la subrutina retraso y la ejecuta

;****Encendido del LED RB5****

    BCF   PORTB,5    ; Transmitimos una senal alta al bit 5 del puerto B
call   Retraso    ; Llama la subrutina retraso y la ejecuta

;****Encendido del LED RB4****

    BCF   PORTB,4    ; Transmitimos una senal alta al bit 4 del puerto B
call   Retraso    ; Llama la subrutina retraso y la ejecuta

;****Encendido del LED RB3****

  BCF       PORTB,3      ; Apagamos todas las salidas (esto activara el MOSFET y kedaran todos los leds encendidos a traves de el)  
 Bucle
    goto   Bucle
                         
;****Inicio del buble de retardo****
Retraso
movlw     .14       ; 1 set numero de repeticion  (C)
        movwf     PDel0     ; 1 |
PLoop0  movlw     .72       ; 1 set numero de repeticion  (B)
        movwf     PDel1     ; 1 |
PLoop1  movlw     .247      ; 1 set numero de repeticion  (A)
        movwf     PDel2     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        decfsz    PDel2, 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel1,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) es el tiempo 0  ? (C)
        goto      PLoop0    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 ciclos delay
PDelL2  clrwdt              ; 1 ciclo delay
        return              ; 2+2 Fin.
                                       
;****Termina el Programa****

end                        ; Algunos compiladores necesitan esta instruccion.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problemas con picos de tension en un 16f84A
« Respuesta #5 en: 17 de Agosto de 2009, 09:49:47 »
Prueba colocando una resistencia de 10k entre el pin que controla el BS170  y Vcc.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: Problemas con picos de tension en un 16f84A
« Respuesta #6 en: 17 de Agosto de 2009, 20:16:03 »
Me quito el sombrero...poco mas puedo hacer ante un foro que esta yendo mucho mas alla de mis expectativas. La ayuda ofrecida no tiene precio!!!!!

Suky, una vez mas me has ilustrado y ayudado sobremanera!gracias de veras!

Ahora viene la parte en la que me gustaria que me comentases muy por encima el porque de la resistencia, para asi aprender a razonar la proxima vez y procurar espabilarme yo solo la proxima vez :)

Si no me equivoco es una resistencia de pull-up, cierto? ya que el nMOS se activa con un valor bajo de tension, la R pull-up asegura un valor estable de Vdd y evita que este fluctue; me equivoco?

Una cosa mas, tras haberlo probado en la proto, el efecto ha disminuido infinitamente, pero aun puedo apreciar algun leve pico tras encender y apagar varias veces la fuente de alimentacion con la que trabajo. Si se aumenta la R disminuiran aun mas? si es asi, porque entonces hemos usado una de 10k en particular?

Muchiiiiiiiiiiiiisimas gracias...sois de inmensa ayuda :)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problemas con picos de tension en un 16f84A
« Respuesta #7 en: 17 de Agosto de 2009, 20:28:20 »
Jejeje! Lo que has expuesto es correcto. Evita el problema de falta de tensión el instante anterior a la configuración del puerto, que por lo visto su efecto en este caso es apreciable  :mrgreen: O por lo menos esa fue mi idea  :D
El porque de 10k, simplemente para que no tenga efecto en la carga que presente y no se si se podrá obtener un mejor resultado que eso, solo habrá que probar  :mrgreen:

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Problemas con picos de tension en un 16f84A
« Respuesta #8 en: 17 de Agosto de 2009, 20:32:23 »
Me alegra que te sea de ayuda el foro....

Una consulta, los mosfet, activan alguna otra carga, o solo los led?
porque si solo colocas los led, puedes hacerlo directamente al pic, con una r limitadora...


Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: Problemas con picos de tension en un 16f84A
« Respuesta #9 en: 18 de Agosto de 2009, 07:39:40 »
Hare mas pruebas suky. De nuevo, gracias  :mrgreen:

Todopic: solo activa leds, lo que pasa es que usare leds de alta luminosidad tipo SMD PLCC2, que consumen 30 mA cada uno, y quiero conectar unos 15 (5 por pin). Es pues evidente que no puedo conectarlos directamente porque el PIC no puede suministrar semejante demanda. Gracias por el aporte, no obstante! :)


 

anything