retrasos independientes de 1 seg para el cargador de 4 x NiMH

1

Quiero hacer un cargador de NiMH unicelular 4x. utilizando la familia DIP pic 18F4550 utilizando MPLAB y C18

Q1. Necesito 4 temporizadores independientes de 1 segundo.

Aquí me topé con mi falta de conocimiento sobre la forma en que se comparten las entrañas de 18 F para tareas paralelas.  Por supuesto, podría usar una resistencia de 1Meg de 4 x series con 10 uF en cualquier pin de puerto.

Cuando se inserta una celda para cargar un pin de puerto, irá alto aplicando 5 V como voltaje de activación.

Usando un pin de entrada analógica, tal vez AN0, se puede detectar el punto del 63% y hacer que el pin del puerto de conducción vuelva a cero.  Como hay cuatro celdas, requerirán cuatro pines de entrada analógica, suena un poco inútil para pines analógicos.

También pensé en usar cuatro pines de entrada digital para cambiar de bajo a alto, ya que es un chip de cmos y se voltean a 2/2 Vdd.

El conmutador tendrá lugar cuando haya transcurrido 1 segundo a un voltaje de carga del 63%.

Pero realmente quiero usar los temporizadores digitales a bordo, llevándome de vuelta a mi pregunta inicial P1

Ayuda por favor

Fred

    
pregunta Fred Mah

4 respuestas

1

A menos que la parte en particular que tiene en mente tenga cuatro temporizadores de hardware adecuados, no podrá hacerlo 'en paralelo', sin embargo, casi todo no está perdido. Lo más probable es que para un cargador de batería de casi 1 segundo y casi en paralelo esté bien.

Por ejemplo, configure una interrupción periódica de 5 ms y reduzca cuatro registros de 8 bits dentro de la ISR (rutina de servicio de interrupción) hasta que se conviertan en cero.

Ahora puede escribir una rutina que establezca cada uno de los registros en 200 y espere hasta que se prueben como cero para los retrasos de 1 segundo +/- 5 ms.

En el uso de C, asegúrese de usar la palabra clave volatile para las cosas que se cambian en el ISR y se usan en otros lugares ... y más complejidad se alza cuando los registros son más anchos que el 8- palabra PIC de bit (digamos que querías una resolución de 1 ms), pero todo es muy factible.

    
respondido por el Spehro Pefhany
0

El PIC18F4550 tiene 4 temporizadores de hardware independientes, pero dependiendo de la frecuencia de reloj del sistema, es posible que no todos puedan cronometrar un segundo completo. De todos modos solo necesitas 1 temporizador. El problema se convierte entonces en "¿Cómo puedo compartir 1 temporizador entre 4 tareas?".

La siguiente pregunta es '¿cómo puede el PIC realizar varias tareas en paralelo?'. La CPU solo puede ejecutar 1 instrucción a la vez, por lo que para realizar múltiples tareas debe hacer lo mismo que un humano: un poco de una tarea, un poco de la siguiente, etc. en un bucle para que todos obtengan una participación igual de es la hora.

El temporizador también se puede compartir entre tareas de la misma manera que lo haría usted si solo tuviera un solo reloj para leer. Hay varias formas de hacer esto: -

  1. Configure el temporizador para que se desborde a una velocidad alta, por ej. 50 veces por segundo (periodo de 20ms). Ahora, asigne a cada tarea su propio contador, que se incrementa en cada 'tic' del desbordamiento del temporizador. Cuando se inserta una celda, encienda la alimentación y restablezca su contador a cero. Cuando el contador llegue a 50, apague la alimentación, etc.

El desbordamiento del temporizador se puede capturar en una interrupción que luego incrementa cada contador de tareas (y vuelve a cargar el temporizador si es necesario), o simplemente puede sondear el temporizador y esperar a que se desborde al inicio del ciclo de tareas múltiples. El uso de las interrupciones puede ser más preciso si necesita volver a cargar el temporizador para obtener el tiempo de "tachado" requerido, pero debe recordar que, en lo que respecta a cada tarea, su contador podría cambiar en cualquier momento .

  1. Configure el temporizador para que se desborde mucho más lento que 1 segundo. Cuando se inserta una celda, la tarea lee la hora actual y la almacena. En las lecturas subsiguientes, resta el tiempo almacenado de la hora actual, y cuando la diferencia llega a 1 segundo, se apaga, etc.

¿Pero qué pasa si el temporizador se desborda entre lecturas? Luego, la tarea hace lo que haría con un reloj de pared de 12 horas: si el resultado de la resta es negativo, agregue el tiempo necesario para que el temporizador se desborde (igual que agregaría 12 horas a la hora del reloj de pared). / p>

  1. Configure el temporizador para que se desborde una vez por segundo y ejecute cada tarea a la misma velocidad. Cuando una tarea detecta que se ha insertado una celda, se enciende la alimentación, a menos que esté ya activada, en cuyo caso se apaga la alimentación, etc.

Por supuesto, se puede insertar una celda en cualquier momento dentro del período de 1 segundo, por lo que el tiempo de carga inicial será un período aleatorio de menos de 1 segundo. Sin embargo, cada período de carga posterior se bloqueará en el ciclo de 1 segundo. Como las celdas de NiMH tardan mucho tiempo en cargar, esto no debería ser un problema (tengo un cargador comercial de 4 celdas que usa esta técnica, ¡funciona perfectamente!).

    
respondido por el Bruce Abbott
0

Primero muchas gracias a las buenas personas que se tomaron el tiempo de leer mi pregunta.

Estoy completamente de acuerdo en que explicar las soluciones analógicas realmente nubla la pregunta básica ... Q1. Necesito cargar 4 celdas de NiMH 2AH de manera independiente, terminando con el aumento de voltaje al final de la carga. Deseo muestrear cada segundo APROXIMADO, para esta aplicación de carga de Celdas.

Lo siento por una pregunta demasiado lanuda ;-)

Fred

    
respondido por el Fred Mah
0

Me disculpé por no haber formulado la pregunta correctamente. Lo que deseo hacer cuando se inserta una celda es para ver si está: - a) muerta y no se cargará; b) se descargó a cero pero responderá a la carga de recuperación; c) se ha descargado al mínimo recomendado por el fabricante, aprox. 0.9V .... luego, supervise cada celda para el aumento de final de carga y desconecte. En su C / 5 recomendado, si se carga correctamente en aproximadamente 6 horas hasta que esté completamente cargado ... Así que, en realidad, el cargador de murciélagos se trata de un largo período de tiempo. muchas gracias Fred

    
respondido por el Fred Mah

Lea otras preguntas en las etiquetas