Custom Electron Solar Panel Connection

I have a solar panel that I would like to connect to the Electron. Can I simply just connect the ‘power’ wire to the VIN pin and the ‘ground’ wire to the Ground pin? The block diagram below seems to indicate this should be fine, I’d just like to be sure before I have my PCB printed.

Solar Panel Specs:

  • 7V - 500mA
  • Dimensions: 234 x 160 x 17 mm

Although you can do that since +7V is below the maximum rating of +12V for the VIN pin, it is not advisable as the power supplied by the solar panel will not be optimal.

A solar panel is often used with charge controller to maximize the power output before feeding it to the application (electron in this case)

:particle: has a Solar kit but i am not sure what’s included in that. Something you can consider :slight_smile:

I know they have a solar kit but I’d prefer to not stack three shields on top of each other.

It seems as though the PMIC will do what a charge controller would do normally. So I’m not sure what would be suboptimal. Especially if the charging will continue to occur when the Electron is asleep.
[PMIC Datasheet][1]
[1]: http://www.ti.com/lit/ds/symlink/bq24195.pdf

I have to agree with this. Looking at the BQ234195, I don’t see what the solar shield gains you…
From the docs:
The Electron can be powered via the VIN (3.9V-12VDC) pin, the USB Micro B connector or a LiPo battery.

1 Like

I’d like to route my PCB and this is the only issue I’m unsure of. With that being said, I’m hoping someone at Particle can provide feedback, such as @BDub. Thanks in advance! :smile:

Edit:
I’m planning to place a bypass capacitor between the VIN and GND for my solar Panel Connection. I haven’t decided on a size but most likely 10-25V and 1-100uF.

I can’t find it now, but at some point I saw that the main reason for powering from the PMIC + LiPo was due to high current spikes when the cell modem is in use. The spikes are generally more than a typical 500mA USB port will allow, but the LiPos can handle those spikes. A large value capacitor across VIN/GND will likely work, just not sure what size.

Disclaimer: I’m not an EE by any stretch of the imagination. I’m just regurgitating what I’ve seen elsewhere with the sincerest of hopes that it helps, even just a little. :wink:

2 Likes

Hi @knoose,

It sounds like the setup you describe will work. Let us know what you learn when you set this up, especially around how steady the voltage out of your solar panel.

Thank you @jvanier for the feedback and I will definitely let you know. Is there any chance you could comment on what the RTC is doing on your solar shield? Thank you.

It is so that the Electron can go into a deep sleep mode and be woken up at intervals by the external circuit. We're planning on having a library that makes it easy to use that functionality from the user application.

2 Likes

Can I ask a dumb question about this? (Yes, OK, every question I have is dumb…)

I was getting ready to park my Electron outside to start testing how self-sufficient it can be without AC power. I planned on using it with an Adafruit MCP73871 and Voltaic 3.5 Watt, 6 Volt Solar Panel, but if I understand this correctly I could forgo the MCP73871 all together?

Thank you.

1 Like

The BQ24195 is not optimised for charging a LiPo battery from a low-current source but it should still be able to charge a battery from a solar panel as long as the current is >= 100mA @5VDC. For the battery to be able to charge properly at such low currents, you’ll need to make sure that the Electron remains in sleep mode for the majority of the duration.

So long answer short, is it possible? YES . Is it optimal, probably not.

@knoose Would love to hear more about your experience here.

3 Likes

@mohit My electron will mostly be asleep. The plan is to wake up 4 times per hour to read a pressure sensor. Other than that, the electron should remain asleep. Thank you the input!!!

I also added a 20V 47µF Tantalum capacitor between VIN and GND to act as a bypass capacitor.

I will definitely post more when my PCB arrives. I’m ordering it today.

1 Like

@knoose I’d suggest using an input capacitor rated at upwards of 4700uF at VIN and since the voltage rating of the solar panel is 7V, you could use a capacitor rated even at 10V or 15VDC (to reduce the overall size)

1 Like

Awesome!

For my Kiosk project it’d be sleeping most likely from 5pm til 5am, and the solar panels I’m trying right now are above 500mA at 5V.

1 Like

@mohit
So over the past month I’ve had a 500mA 7V Solar Panel connected to the VIN/GND of my Electron with a 47uF bypass capacitor. I’m using a 6600mAh Lipo Battery in place of the 2200mAh that comes with the Electron. Additionally, my Electron is waking up every 15minutes to take a reading and communicate with the cloud. The chart below is the state of the battery over this period (4/30 - 6/17). Let me know if you have any questions!

4 Likes

Hi @knoose, I see that we share the same goal, I am also starting to build a device which is measuring waterpressure (to get the waterlevel of a pond) every 15 minutes or so, or maybe just when the waterlevel has changed a considerable amount and upload it to the web using particle.publish(), and in between it is supposed to sleep and consume as little power as possible and also keep the data usage below the 1MB limit per month, I know that few months ago there was a problem with the sleep function of the electron because when it “woke” up from sleep it did consume a lot of data usage when connecting back to the mobile system. If I understand your graph right it is showing percentage of charge of the 6600mAh 3,7V battery? where 100% is 4,2V (I guess). Would you mind sharing details of your setup with me? how much was your data usage per month during your test? and do you know your average current consumption, or the sleep consumption and how long time does it take for the Electron to wake up, communicate to the cloud and sleep again? (just fyi, I have been experimenting with some prototypes for measuring this pond, started 10 years ago with walkie talkies sending morse code and now I am using a “LoRa motino” from www.lowpowerlab.com sending measurements from the intake pond to a Wi-fi connected Photon which uploaded the data to the cloud, and using ultrasonic sensor to sense the waterlevel)

Hey @Mquist, Thanks for the interest in my project. I really wish I had my website/documentation completed as it could be super useful to you. I’ll do my best to answer your questions and if you have anything additional, feel free to continue posting or send me a private message.

First off, the graph above is the output from the fuel.SoC() function. This reading is taken every 15 minutes for 49 days continuously. (except when webhooks have not been working properly). The percentage is the state of the charge for the 3.7V 6600mAh Lipo battery. That maximum value I’ve gotten from this function is 91.488%. I still have to do some of my own tests to see how accurate this value is. I just received an additional supply of Electrons, so I will be testing that shortly.

My setup is for a Rain Gauge, which measure precipitation. The Electron is in a waterproof housing which is contained within the Rain Gauge we designed. We’re using waterproof RJ45 Connectors made by CONEC to communicate with our I2C Differential Pressure Transducer (1PSI). I also designed a simplistic PCB (printed Circuit Board) for the Solar panel/I2C connection.

As for data usage, you’re in luck. I just requested that information from Particle. See the image below:

If you would like to see the time intervals, I’d be happy to share the CSV data file with you. I forget the exact amount of time my code sketch takes to run, but its somewhere between 5-10second. The Electron sleeps for 15 minutes and wakes up to take a reading from the pressure sensor. As we add more nodes, I may have my server message each device every fifteen minutes to wake up and read. I know this is possible, but it’s something that hasn’t transcended the idea phase yet.

Unfortunately, I do not have any specific measurements for power consumption. Once we conduct more lab testing I will have a better idea. Our data is coming from a proof of concept which is in the field some distance away from us. As I work on updating the firmware/ building out our website/server I can share more detailed documentation if you’re interested.

Best of luck!

2 Likes

thanks alot for the info @knoose I will definitely be in contact later, so you managed to send message every 15 Minutes and stay around 200kB per month during May, that is nice to know :slight_smile: … did not know about the fuel.SOC() funtion, thanks for telling me also I did not know that it would be possible to wake up the devices from sleep from a server, would be interested to know if you could manage that :wink: … would you mind sharing your code with me? I don’t need all your code, just would like to see your procedure of waking up --> taking a measurement --> publishing it --> sleeping for 15 minutes, it would give me a great headstart, I am most interested in the “sleep part”, because after reading some posts on the forum it seems to me like it matters a lot how/what sleep procedure you use so it will not need to reconnect and spend “lots” of data each time the electron wakes up. I will then do some LAB testing on the powerconsumption. if you don’t mind please send me your code or a part of it in private message.

@Mquist sorry it’s taken me a few days to respond, I’ve been a bit busy this week.

Waking up the devices is possible, but I don’t think anyone has implemented it. I asked the question previously and it can be found here: Waking up an Electron remotely
Here’s the my main loop of the code where Output is a std::vector and Sleeptime = 900 (for 15 minutes)
Code loop:

void loop(){
  char batt[7];
  delay(5000);
  // Collect data and publish
  if (collectData(I2C_ADDRESS2)){
    float2string(fuel.getSoC(),batt,3);
    Output.push_back(batt);
    Particle.publish("RG", Output[0] + "," + Output[1] + "," + Output[2]);
    Output.clear();
  }
  //sleep
  delay(500);
  // System.sleep(SLEEP_MODE_DEEP,sleepTime,SLEEP_NETWORK_STANDBY); //Uses lots of data
  System.sleep(D3, RISING, sleepTime, SLEEP_NETWORK_STANDBY);
  Wire.begin();
  delay(500);
}

I had the same worries as you and created a post on that as well: Electron Sleep Mode Clarification

Let me know if you have any other questions or need any help. I’d be happy to help.

@knoose This thread has been just what I’ve needed to get through a block on my project - thank you! I have one, really dumb question: what exactly does the capacitor do when placed across Vin - GND alongside a solar input? And, I have a capacitor rated up to 100 uF and 25V - based on what you used, I think I’m going to try that out. Am I about to lose some eyebrows?

Thanks!