Tengo un tablero Arduino ProMicro 5V 16MHz de sparkfun.
Tengo un LiPo de 3Cell que alimenta todo el proceso (a través del regulador correspondiente que lo lleva a 5V). Esto es parte de un TriCopter. Presiono el pin positivo de 12 V a través de un dispositivo de selección de voltaje en el pin A1 (si el USB apunta hacia arriba y los pines se alejan de usted, este es el sexto pin de la parte inferior derecha).
¿Cómo me refiero a este pin en mi programa?
A1 es: static const uint8_t A1 = 19U
. Esto lee 0V de mi batería.
Mi código es el siguiente:
/*
* Battery Sensor
* Battery Voltage monitor
*/
const float ReferenceVoltage = 5; //default reference on a 5-volt board
const float R1 = 54350;//49200; //55K2 Ohm resister
const float R2 = 32600;//31000; //32K6 Ohm resister
const float ResistorFactor = 1023.0*(R2/(R1+R2));
const int BatteryPin = A1; // V(out) of Voltage devider circuit is attached to analog pin A1
/// <summary>
/// Reads the current Battery voltage
/// </sumary>
void ReadBatteryVoltage()
{
int Value = analogRead(BatteryPin); //read the value from the Analog Pin
//Serial.println(Value);
float BatteryVoltage = (Value/ResistorFactor)*ReferenceVoltage; //Calculate the ratio
}
Sé que esto es un foro de electrónica y estoy haciendo una pregunta de programación, pero esta es electrónica. Yo apreciaría cualquier puntero. Esto me está volviendo loco.
actualización: Gracias a PeterJ por ayudarme a confirmar lo que sabía sobre qué Pin leer y también por la sintaxis mejorada. Sin embargo, el problema estaba en la línea 8 a continuación:
1: /// <summary>
2: /// Reads the current Battery voltage
3: /// </sumary>
4: void ReadBatteryVoltage()
5: {
6: int Value = analogRead(BATTERY_PIN); //read the value from the Analog Pin
7: //Serial.println(Value);
8: BatteryVoltage = (Value/ResistorFactor)*ReferenceVoltage; //Calculate the ratio
9: }
Esa variable local fue la que se llenó con el voltaje de la batería que se lee desde BATTERY_PIN y deja la variable global de nombre similar, en otra parte de mi aplicación en su estado predeterminado de 0.0;
Acabo de eliminar la declaración de tipo que hizo que usara la variable global como debería y todo funcionó bien.
Este es el tipo de cosa que vuelve locos a los programadores. El hardware es duro ... pfff! El hardware es difícil porque la mayoría del hardware ahora requiere software. ; -) ... que por supuesto está mal creado por wetware.