Paso 4: Integración de Arduino (carga de la batería)
Como se mencionó anteriormente, para que nuestro controlador de carga iniciar la carga de la batería, el botón de inicio debe mantiene pulsado durante tres segundos. Esto es un fastidio tener que explicar a un usuario al azar y también requiere que el controlador de carga y todos sus botones extraños (que teníamos algo al azar de la gente no se líe con) estar accesible para el usuario. En su lugar nos gustaría el Arduino para presionar start una vez que el usuario ha comenzado a pedalear. Esto requiere la piratería en el controlador de carga.
Hacking el controlador de carga:
El controlador de carga es en gran medida una caja negra; en un extremo positivo y negativo del generador DC y una corriente y voltaje limitado salida hacia fuera el otro extremo a la batería. Todo en el medio está fuera del alcance de este Instructable y queda solo. Sin embargo, después de tomar el cuerpo del controlador de carga, fue hada obvio cómo la interfaz de botón trabajado. Los cuatro botones conexión a una cinta de cinco hilos. Cuando se presiona un botón había conectado el cable correspondiente en la cinta al quinto alambre de la «referencia». Decidir que es más fácil trabajar con sin el caso que tomamos la cinta de donde había conectado en la placa y soldar los cables a estas conexiones, adjuntarlos a nuestro escudo con un conector molex. Utilizamos cuatro botones para volver a crear los botones del controlador de carga en caso de que debíamos hacer cambios en la configuración si tuviéramos que y presione "Start" hasta que tuvimos el Arduino conectado.
IMPORTANTE: Si, como nosotros, decide dejar su controlador de carga hackeadas de su carcasa, asegúrese de proporcionar con un adecuado disipador de calor. Nuestro caso de controlador de carga doblado como un disipador de calor y cuando nos llevó esto, fue capaz de sobrecalentamiento después de ciclismo intenso.
Presionar Inicio:
El desafío entonces es obteniendo el Arduino a un botón. Obviamente no puede realmente usar un botón mecánico, por lo que empleamos un relé. Un relé más o menos consiste en un inductor a través de dos pasadores y un interruptor a través de otros dos. Cuando se aplica un voltaje en el inductor se cierra el interruptor que conecta las otras dos clavijas sólo como si fuera un botón empujado. Si conectamos uno de los pines para el cable de arranque y otro para el cable de referencia, podemos tener el Arduino una tensión de salida a través de los otros dos pasadores del relé durante tres segundos en la demanda, así "oprimir" start siempre que le pedimos. Aunque algunos relés tienen diodos en ellos, hemos decidido poner una cautelar a través de pernos de inducción del relé para evitar la actual tratando de fluir hacia los pines de Arduino cuando se establece en bajo.
Medición de la batería y el voltaje del Motor:
¿Esto plantea la pregunta, cuando queremos que el Arduino Presione start? Obviamente queremos el Arduino para presionar start sólo cuando alguien se pedalea, el controlador de carga no tienen en poner en primer lugar. Aunque el controlador de carga a sabiendas no debe sobrecargar la batería, no queremos tentar repetidamente pidiendo cargar la batería cuando estaba lleno. Esto requiere el Arduino hacer un seguimiento de la tensión de salida del generador y la batería. Como cablear estos hasta las entradas analógicas de nuestro Arduino, sólo quieran leer en voltajes entre 0 y 5V, mientras que la batería es la salida en cualquier parte de 11-14V y el generador es la salida en cualquier lugar de 0 a 24V. Para bajar de cada uno de estos voltajes se utilizan divisores del voltaje. En el caso de la batería, utilizamos un divisor de voltaje con la resistencia primera siendo 1 k ohmios y la segunda (conectado a tierra) siendo 2.2 k ohmios. Si la máxima tensión de la batería es de 14V, el máximo voltaje en la resistencia de la segunda, que mediremos es aproximadamente 4.4V (para más información sobre cómo trabajo de divisores de voltaje y las matemáticas detrás de ellos, visite la Página de Wikipedia). Utilizamos resistores de 1 k ohm y 4.7 k ohm respectivamente para el divisor de tensión conectado al generador. Para una tensión de generador de 24V Arduino leería 4.2V. Algunas matemáticas simples en el código de Arduino pueden convertir estas medidas en los valores reales. Obviamente el voltaje de la batería debe ser menos de 14V o riesgo sobrecarga de la batería. Las condiciones para el generador son más flexibles. Mientras el usuario está proporcionando suficiente voltaje para el controlador de carga encender, el controlador de carga puede cargar la batería. Usamos > 5V el generador y < 14V de la batería como nuestras condiciones.
Alimentar el Arduino:
Obviamente el Arduino necesita ser alimentado para "presionar" a los botones (o hacer cualquier cosa realmente). Es razonable tenerlo constantemente conectado a un ordenador. También no queremos utilizar una batería de 9V porque no queremos tener que reemplazarlo si murió. Decidimos usar la batería de 12V para alimentar el Arduino directamente a través de la toma de corriente. Aunque esto debe ser capaz de tomar hasta 12V, decidimos que era más seguro usar un regulador de 5V entre la batería y el Arduino. (Este 5V podría también utilizarse como una fuente de tensión para otros aparatos electrónicos en nuestro circuito si queríamos evitar pin de 5V de Arduino). Luego tomamos uno de los paquetes de batería, corte de la batería real y conectar los cables a la salida de 5V del regulador y la tierra. Reguladores pueden calentarse por lo que es importante poner un disipador de calor en ella.
Código de ejemplo:
código completo al final de este Instructable
motor int = A0; motor/generador de pin en el Arduino
batería int = A1; Pin de batería de 12V
int cc = 8; perno regulador de carga
int espera = 500; retraso en milisegundos
afactor de flotador = 1023.0; Analógicas del Arduino Lea valor máximo
flotador motorV, battV; voltaje del motor y voltaje de la batería
Boolean hasBeenOn = false; recordar si el controlador de carga se ha convertido
void setup() {}
pinMode (motor, entrada);
pinMode (batt, entrada);
pinMode (cc, salida);
}
void loop() {}
motorV = getmotorV(); voltaje de salida motovr/generador
Si (motorV > 1.0 & &! hasBeenOn) {//if nuestro motor DC reparte más de 1V, decimos que está en
digitalWrite (cc, HIGH); la clavija de cc está conectada a un relé
actúa como el botón "Inicio" para el controlador de carga
Delay(3500); nuestro controlador de carga requiere el botón Inicio que se celebrará durante 3 segundos
digitalWrite (cc, LOW); eléctricamente, soltar el botón de inicio
hasBeenOn = true; el controlador de carga debería ser carga de la batería ahora
Delay(Wait); queremos que nuestro Arduino a esperar no para comprobar cada pocos millisec
}
else if (motorV > 1.0 & & hasBeenOn) {}
Delay(Wait); otra vez, no queremos el Arduino para comprobar cada pocos millisec
}
Else {}
hasBeenOn = false; la persona ya no es bicicleta
}
}
escribimos las funciones separadas para que podríamos organizar nuestro código
Float getmotorV() {}
volver (float (analogRead(motor)) / afactor * 5.0); el motor da hacia fuera sobre un máximo de 5V
}
Float getbattV() {}
volver (float(analogRead(batt)) / afactor * 14.0); la batería es técnicamente ~ 13.5V
}