Autor Tema: Acondicionar señal para medir su periodo con el Pic.  (Leído 1079 veces)

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

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Acondicionar señal para medir su periodo con el Pic.
« en: 24 de Enero de 2021, 19:16:47 »
Hola a todos.

En este caso lo que tengo es un motor de combustión que tiene un estator destinado a producir electricidad para cargar su batería y poco más.

 También tiene un sensor que se llama CKP que es una bobina con un imán que reacciona a una chaveta ferromagnética colocada en el volante magnético lado exterior. Al pasar la chaveta por delante del sensor se genera una señal sinusoidal de unos 50 voltios pico a pico.  La señal apenas dura unos 30º de giro completo del volante y sirve para que la unidad de encendido sepa que el pistón está casi en punto muerto superior y que por tanto tiene que generar el chispazo en la bujía.

   Mi circuito toma esta señal y pretende acondicionarla para medir su periodo y de ahí obtener el régimen de giro en RPM.

    El caso es que la señal esperada sería algo así, ya que de hecho, en otros motores así es:

 

* esperada.png
(6.18 kB, 1224x606 - visto 214 veces)


  Es decir, todo plano y una señal sinusoidal de 50 Vpp cada vez que la chaveta pasa por delante del sensor CKP.

  Para hacer el acondicionamiento de la señal lo que hago es, pasarla primero por un diodo rectificador. Así me quedo solo con media onda positiva de unos 24 voltios de pico descartando la otra media.

  Seguidamente la señal pasa por una resistencia de 47K. En el otro extremo hay un diodo zener de 5V para que los 25 voltios de pico se queden en eso mismo. 5V máximos.

   De esta forma la señal queda en un pico de 5v por vuelta de motor (Cigueñal).

   Ese pico se aplica a la gate de un mosfet muy pequeño. El Drain de ese mosfet está conectado en pullup a VDD del circuito del pic mediante una resistencia de 4K7. su Source va a GND. así obtengo una onda cuadrada a nivel bajo perfecta que filtro mediante un condensador de unos 100 nF y finalmente aplico a un puerto del pic.

  Hasta aquí esto me ha estado funcionando perfectamente. Obtengo el periodo de la señal completa, " toda la señal que generan los 360º de giro " utilizando un timer y la precisión de la medición es muy buena.

 El problema me ha surgido hoy con un motor el cual me daba el triple de lo que debía dar. es decir, a 3000 rpm, me daba 9000.

   Tiene exactamente el mismo sistema. Le conecto el osciloscopio y veo una señal parecida a la siguiente:

 

* real.png
(9.46 kB, 1267x561 - visto 191 veces)



  Como se puede observar, aparte de la señal esperada, hay armónicos (3 ciclos completos por vuelta) que alcanzan 20 Vpp. Mi sistema pues interpreta el fin del periodo tras la primera de ellas. Por eso me daba el triple. Vale, ya he detectado el problema.

  Primero me puse a investiga por donde se inducen esos armónicos siendo el CKP un circuito totalmente independiente del resto.. y al final pareció ser que el volante magnético de este motor es de aluminio. Claro, el aluminio no bloquea la acción de los imanes permanentes destinados a generar electricidad para batería, consumibles, etc..  por lo que la influencia de los imanes afectan un poco al sensor CKP.  Ello parece que a la unidad de encendido de bujía no le afecta. Pero a mi placa sí  :5]

  ¿ Y como bloquear esa señal indeseada?.

  Pues como tiene 20 voltios de pico a pico y yo solo rectifico y me quedo con media onda, pues tengo 10 voltios de pico de esa señal.

   Se me ocurrió utilizar un zenner de 10 Voltios y aplicar la señal después del diodo rectificador al cátodo del zenner. De esta forma, todo lo que supere los 10 voltios pasará este "filtro" mientras que lo que sea inferior a 10v no pasa.

   Eureca. Funciona.   De lujo.

   Pero hay otro problema.  (Ver imagen 2, la medición roja)

   Tengo otro armónico metido en lo que es la señal (pulso) del CKP, y esa ya si que no sé por qué se produce ni por donde viene, pero está ahí y me da problemas de medición por que lo que el pico grande (que es el que quiero) activa el mosfet y genera un flanco de bajada en el pic.

   Luego cuando ese pico llega al cero, inmediatamente remonta otra vez por encima de 15 voltios ( 5v gracias al zener de 10V) por lo que me genera un segundo pulso en el pic. ambos son muy seguidos y me daba problemas de medición.

   Fácilmente lo he solucionado a fuerza bruta mediante software que hace una espera tras el primer flanco rechazando cualquier cambio que haga la señal en un determinado periodo de tiempo controlado.

   Vale, todo esto me está funcionando después de hocicar toda la tarde con ello. Pero, ¿Cual es el problema entonces?.

   Que no estoy del todo conforme. Creo que debería mejorar o rediseñar la etapa de ataque de mi placa para que sea capaz de hacer frente a cualquier armónico que traiga la señal y se quede solo con el pico máximo.

  Creo que poner zenners de mas voltaje para bloquear mas señales que tengan voltajes inferiores no es la solución ideal.

   Por eso expongo todo esto. Por si alguien sugiere otro tipo de filtrado o si sería mejor implementar detección de pico máximo y tomar la acción solo cuando se detecte el mismo.

  Un saludo y gracias de antemano.. 

   



 



« Última modificación: 24 de Enero de 2021, 19:26:19 por remi04 »

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 947
Re:Acondicionar señal para medir su periodo con el Pic.
« Respuesta #1 en: 24 de Enero de 2021, 20:35:58 »
Se te olvida agregar algunos capacitores.   Algo asi:

 

* ruido.jpg
(59.72 kB, 800x544 - visto 203 veces)



Ojo que dí cualquier valor a los capacitores, hay que dimensionarlos acorde a los tiempos que tenés.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Acondicionar señal para medir su periodo con el Pic.
« Respuesta #2 en: 25 de Enero de 2021, 13:31:50 »
Prueba poniendo un condensador en serie. Si lo ajustas bien, solo pasarán las componentes de alta frecuencia (primer y segundo pulso) y no pasarán las demás oscilaciones.

Luego con un condensador en paralelo, se eliminará el segundo pulso y ya te queda solo el primero.

Con un zener te aseguras de que no sobrepase nunca los 5V, pero no debería sobrepasarlos
en condiciones normales.

Código: [Seleccionar]

      D    C1
   --|>|--||---[  R1 ]----o-------o-------o-----
                          |       |       |
                         ---      -       -
                         --- C2   R2      / Dzener
                          |       -      /_\
                          |       |       |
   -----------------------o-------o-------o-----

« Última modificación: 25 de Enero de 2021, 13:43:42 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Acondicionar señal para medir su periodo con el Pic.
« Respuesta #3 en: 25 de Enero de 2021, 13:48:41 »
Algunas indicaciones para calcular los valores:

C2 debería ser unas 4 veces mayor que C1, para hacer un divisor de tensión de 1/4 y que los 24 voltios se conviertan en 6v.

R1 suficientemente pequeño para que de tiempo a cargar a C2 en el ancho del primer pulso
R1 · C2  menor que el ancho del pulso.

R2 debe descargar C2 antes de que llegue el siguiente pulso.
R2 · C2  menor que el mínimo tiempo entre pulsos.

Saludos.
« Última modificación: 25 de Enero de 2021, 13:54:22 por Picuino »

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Acondicionar señal para medir su periodo con el Pic.
« Respuesta #4 en: 26 de Enero de 2021, 06:40:40 »
Gracias a todos por las respuestas.

  Os dejo una captura de la pantalla del osciloscopio con la señal de un giro completo del volante de motor:

 

* IMG_9360.PNG
(174.47 kB, 386x231 - visto 179 veces)

 
 He hecho dos marcas amarillas representando el ancho de un giro completo. 360º.  El osciloscopio está calibrado a 5v/div y 2ms/div.

 

 Se aprecia claramente el pico del sensor CKP que he delimitado entre las líneas azules y además, los tres ciclos completos que producen la influencia de los 6 imanes que tiene el volante. Es la señal que NO debería estar ahí pero que se "cuela" en el sensor CKP por que es un volante de aluminio que NO apantalla los campos magnéticos de los imanes. Normalmente son de material ferromagnético, hierro o aleaciones por lo que la señal es prácticamente limpia y recta con el pulso CKP perfectamente definido y no como en este caso que no puedo ni medir bien su ancho de pulso por que está modulada con la otra señal.

  En este caso el motor giraba a 3.750 rpm. Lo que proporciona un periodo de 16 ms y frecuencia de 62,5 Hz.

   La amplitud de la señal "invasiva" a este régimen presenta apenas 5vpp, pero a 6000 rpm por ejemplo, esa señal crece por encima de los 18 vpp.

 

   El pulso CKP suele ocupar unos 30º de giro que es lo que mide la chaveta ferromagnética que lleva incrustado el volante en el exterior "En el interior como ya expliqué lleva 6 imanes y el estator de 9 bobinas.

   El rango de giro del motor es conocido:

 Mínimo 800 rpm y máximo 9.000 rpm.  No necesito medir ni mas allá ni menos.

  Para el caso de las 800 rpm, la frecuencia sería 13,5 Hz, periodo 75 ms y el ancho del pulso CKP (los dos semiciclos) sería de 6,25 ms.
  Para el caso de las 9000 rpm, la frecuencia sería de 150 Hz, periodo de 6,6 ms y el ancho del pulso CKP (los dos semiciclos) sería de 550 uS.


  Como rectificamos media onda, los anchos de pulso por vuelta que ve el pic son la mitad:

 3125 us para 800 rpm.
 225 us para 9000 rpm.

  Así que nada, me pongo manos a la obra con los cálculos.

  También tengo el agravante de la impedancia. Me interesa presentar una impedancia alta al sensor CKP para no reducir la amplitud de su señal. Sobre todo si ocurre un accidente en el circuito. Por ejemplo, en el circuito de Picuino si el zenner se quedase en corto por lo que sea, si la resistencia R1 es muy baja podría provocar suficiente caida de tensión como para provocar la parada del motor y eso no puede pasar.

  Saludos y gracias de nuevo..


 
 
« Última modificación: 26 de Enero de 2021, 06:53:14 por remi04 »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Acondicionar señal para medir su periodo con el Pic.
« Respuesta #5 en: 26 de Enero de 2021, 11:36:31 »
Código: [Seleccionar]

      D    C1
   --|>|--||---[  R1 ]----o-------o-------o-----
                          |       |       |
                         ---      -       -
                         --- C2   R2      / Dzener
                          |       -      /_\
                          |       |       |
   -----------------------o-------o-------o-----


Prueba con estos valores para empezar y vas ajustando según veas:
R1 = 10k
C1 = 100 nF
C2 = 390 nF
R2 = 15k

« Última modificación: 26 de Enero de 2021, 11:52:43 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Acondicionar señal para medir su periodo con el Pic.
« Respuesta #6 en: 26 de Enero de 2021, 12:58:32 »
Estoy simulándolo y no funciona bien.
Hay que afinarlo más.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Acondicionar señal para medir su periodo con el Pic.
« Respuesta #7 en: 26 de Enero de 2021, 13:11:54 »
Porque no un:

Divisor Resistivo para que esos 50Vpp quede como 5Vpp o aproximado. Y luego rectificar.

El divisor haria que sea mucho mas pequeña la oscilacion que tiene montada y solo pase el pico. El cual puede ser detectado con un comparador.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Acondicionar señal para medir su periodo con el Pic.
« Respuesta #8 en: 26 de Enero de 2021, 13:50:36 »
Prueba con este circuito:

 

* circuito.png
(6.22 kB, 409x298 - visto 175 veces)