Paso 7: programación
Después de que montado el primer cargador, comencé a desarrollar el código para que funcione.
Empecé definiendo todos los pines de I/O y entonces la prueba para asegurarse de que tenía cada cosa definida correctamente. Siguiente paso fue definir el nivel de voltaje de la batería que rigen las máquinas de estado.
A partir de ahí empecé a encender la máquina de Estado Código de sudo que tenía en la página anterior en el código real.
la máquina de estado trabajó bien pero había un gran problema causando problemas que tuve que abordar antes de mover más. Los niveles de voltaje analógico fueron por todo el lugar. Cuando las pilas se carga la tensión cedió lanzar significativamente de las mediciones de voltaje de la célula. Las baterías de Li-ion necesitan ser carga a + - 0. 05V exactitud ya cebada podría mantenerlo a +-0.25V con la referencia de tensión de defecto Arduino. Antes de aparejado un un regulador externo para usar como referencia, me topé con este https://code.google.com/p/tinkerit/wiki/SecretVolt...
Al parecer se puede utilizar la 1.1V interna referencia revisar el Vin. Después de jugar con esto porque un poco he podido rastrear el voltaje de entrada y ajuste de los factores de conversión para obtener mayor precisión células las mediciones de voltaje. Esto todavía no era suficiente... Me di cuenta estaba flotando la tensión de entrada +-0,2 v todo lo leído mi voltímetro. Calculé mi convertidor del buck barato eBay probablemente no estaba proporcionando el voltaje más limpio y mi metro barato fue un promedio de esta salida. Voy a mirar esto con mi alcance para ver qué está pasando realmente, pero poner 660uF a través de la tensión de entrada reduce el ripple de voltaje muy bajo 0. 05V. En teoría debería ser la sensibilidad de la lectura de la ADC Arduino sobre 0.005V pero que es difícil de obtener en la práctica. Tengo algunas ideas que me ayuden a conseguir mucho más cerca de que sensibilidad teórica si hago cada vez más conseguir tableros más hechos.
La calibración de voltaje de entrada tomar unos 140us además un retraso pude reducir a 500us lo así que el límite inferior de la 750us período a cerca de la interrupción. Yo no he perfilado todavía pero la máquina del estado tiene menos 1ms entonces a ejecutar, para configurar la frecuencia de interrupción del temporizador 1000 Hz. 1000Hz es uno de los pocos número redondo agradable usted puede salir de los temporizadores y facilita el cálculo de la capacidad.
Al final hice arreglos para cada variable utilizada por la máquina de estado e implementada como una función que toma el número de celular como la entrada de índice todos los arreglos de discos. La función devuelve el estado siguiente. Hay otra matriz que mantienen el estado actual de cada célula.
Actualización 24 de octubre de 2015:
Yo he publicado algunos código he estado jugando con él calcula la capacidad continua en el sub de interrupción encaminamiento independientemente del estado funciona bastante bien pero el ruido en la causa de la línea de ADC a fluctuaciones de sobre +-1mAh mientras que en un lugar fresco abajo y carga dice que no es demasiado malo.
No hay registro en el arduino. He estado usando masilla de terminal para registrar la salida en un archivo csv puedo hasta cargar importación en excel. El principal problema con registro en el arduino es que tarda aproximadamente 2 ms para almacenar un flotador o largo la eeprom que es una eternidad en comparación con el < 1ms requerida por las funciones de la interrupción. No hay suficiente tiempo de CPU para hacer cualquier registro en la eeprom más allá tal vez almacenar las capacidades.
Podría buscar int utilizando el psoc4 (http://www.cypress.com/file/141306/download) en la próxima versión del analizador, tengo algunos de ellos colocación alrededor y yo hemos sido significado para hacer un proyecto con ellos. Que sería un nuevo instructivo.