Quantcast
Channel: Arduino Forum - Latest topics
Viewing all articles
Browse latest Browse all 15287

Need help with project code

$
0
0

im crerating a power bank for iphone. its 3 solar panels wired to a battery. the battery is connected to the arduino nano every. and the i have a transmitter coil connected to the the nano on pin 9. this is the code

#include <Arduino.h>

// Pin definitions
#define TRANSMITTER_COIL_PIN 9
#define ON_OFF_SWITCH_PIN 6
#define BATTERY_VOLTAGE_PIN A0

// Battery thresholds
#define MIN_BATTERY_VOLTAGE 3.5 // Minimum battery voltage in Volts
#define MAX_BATTERY_VOLTAGE 4.2 // Maximum battery voltage in Volts

// Overvoltage and overcurrent thresholds
#define MAX_INPUT_VOLTAGE 5.5 // Maximum allowable input voltage in Volts
#define MAX_INPUT_CURRENT 2.0 // Maximum allowable input current in Amperes

// PWM settings
const int pwmPin = 9; // PWM output pin
int pwmValue = 128;  // Initial PWM duty cycle (adjustable)

// Function prototypes
void setup();
void loop();
bool isBatteryLow();
bool isBatteryFullyCharged();
bool isInputOvervoltage();
bool isInputOvercurrent();

void setup() {
    // Set PWM pin as output
    pinMode(pwmPin, OUTPUT);

    // Initialize pin modes
    pinMode(TRANSMITTER_COIL_PIN, OUTPUT);
    pinMode(ON_OFF_SWITCH_PIN, INPUT_PULLUP); // Use internal pull-up resistor
}

void loop() {
    // Adjust duty cycle as needed
    // For example:
    // pwmValue = 128; // 50% duty cycle
    // analogWrite(pwmPin, pwmValue); // Update PWM duty cycle

    // Check if the battery is low
    if (isBatteryLow()) {
        // Activate charging circuit (e.g., enable transmitter coil)
        analogWrite(pwmPin, pwmValue);
    } else {
        // Deactivate charging circuit
        digitalWrite(TRANSMITTER_COIL_PIN, LOW);
    }

    // Check if the battery is fully charged
    if (isBatteryFullyCharged()) {
        // Turn off charging circuit
        digitalWrite(TRANSMITTER_COIL_PIN, LOW);
    }

    // Check for overvoltage or overcurrent conditions
    if (isInputOvervoltage() || isInputOvercurrent()) {
        // Handle overvoltage or overcurrent condition (e.g., disable charging)
        digitalWrite(TRANSMITTER_COIL_PIN, LOW);
        // You can also add additional actions like displaying an error message or blinking an LED
    }

    // Delay for stability
    delay(1000); // Adjust delay as needed
}

bool isBatteryLow() {
    // Read battery voltage
    float batteryVoltage = analogRead(BATTERY_VOLTAGE_PIN) * (5.0 / 1023.0); // Convert ADC value to voltage

    // Check if battery voltage is below minimum threshold
    return batteryVoltage < MIN_BATTERY_VOLTAGE;
}

bool isBatteryFullyCharged() {
    // Read battery voltage
    float batteryVoltage = analogRead(BATTERY_VOLTAGE_PIN) * (5.0 / 1023.0); // Convert ADC value to voltage

    // Check if battery voltage is above maximum threshold
    return batteryVoltage >= MAX_BATTERY_VOLTAGE;
}

bool isInputOvervoltage() {
    // Read input voltage
    float inputVoltage = analogRead(A1) * (5.0 / 1023.0); // Example: Read input voltage from A1 pin

    // Check if input voltage exceeds maximum allowable voltage
    return inputVoltage > MAX_INPUT_VOLTAGE;
}

bool isInputOvercurrent() {
    // Read input current
    float inputCurrent = analogRead(A2) * (5.0 / 1023.0); // Example: Read input current from A2 pin

    // Convert input current to Amperes (adjust conversion factor as needed)
    inputCurrent = inputCurrent / 1000.0; // Example: Conversion factor for 5V ADC range

    // Check if input current exceeds maximum allowable current
    return inputCurrent > MAX_INPUT_CURRENT;
}

8 posts - 3 participants

Read full topic


Viewing all articles
Browse latest Browse all 15287

Trending Articles