author
6Instructables22,330Views166CommentsAustraliaJoined June 3rd, 2015
I am a retired professional engineer, now farmer. Taking an interest in all things technological and in building devices useful on the farm.

Achievements

100+ Comments Earned a bronze medal
10K+ Views Earned a bronze medal
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi mgbena0007, I suggest you have a look at the zopinter comment above re his XL4016 based solution. Also have a look at the SZBK07 module and this design that uses it: https://github.com/farmerkeith/SolarChargerSZBK07...If you can use a 24V battery and if you can figure out a way to combine 4 SZBK07 modules, you can get to 2 kW.

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi tytower, the purpose of measuring the battery voltage is to decide the charging rate, so as to avoid overcharging. The battery voltage rises when under charge, but that does not invalidate the decision making process.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi dhv007, your method of parallelling the capacitors and MOSFETs is correct. However you should be aware there are some problems with the circuit. a) the reverse current flow prevention does not work because some part of the battery voltage gets through the the gate of Q1 (Q1 and Q1*2 in your circuit). I think the easiest way to solve this is to replace that part of the circuit with a MOSFET diode. You can find information on that at my Github repository https://github.com/farmerkeith/circuits/blob/maste... You won't need to double this component for panel currents under 8 amps.There are other solutions of course if you don't want to change MOSFET type. You can find one at https://github.com/farmerkeith/SolarChargerTwoAmp...b) when you double the switching MOSFETs, gate capacitance al...

    see more »

    Hi dhv007, your method of parallelling the capacitors and MOSFETs is correct. However you should be aware there are some problems with the circuit. a) the reverse current flow prevention does not work because some part of the battery voltage gets through the the gate of Q1 (Q1 and Q1*2 in your circuit). I think the easiest way to solve this is to replace that part of the circuit with a MOSFET diode. You can find information on that at my Github repository https://github.com/farmerkeith/circuits/blob/maste... You won't need to double this component for panel currents under 8 amps.There are other solutions of course if you don't want to change MOSFET type. You can find one at https://github.com/farmerkeith/SolarChargerTwoAmp...b) when you double the switching MOSFETs, gate capacitance also doubles which means that the switching time doubles unless you do something about it. In this circuit using the IR2104 driver the switching speed is already a problem. My suggestion is that you use a different driver, IR2184 which has a much higher drive current capacity; and also that you use two of them, one for Q2 and Q3, and the other one for Q2*2 and Q3*2.You should be aware that although the functionality of IR2184 is the same as IR2104, the pinout is different so you need to change your wiring plan or PCB.You can drive the two IN pins and two SD\ pins together, each through its own resistor, from the same output pin on the Arduino. c) I also recommend you move the SD pin from D8 to D10 on the Arduino. That is because with D10 it is possible to do PWM co-ordinated with D9. It is a long story and beyond what can explain here; but it is relatively easy to change early in the process, much harder later.d) I notice that you are connecting Vcc of your driver IC (IR2104 or IR2184) to the panel voltage. You can expect that to exceed the voltage rating of the driver, which has a maximum Vcc of 20 Volts. You should connect it to the battery voltage, which will not go over 15 Volts - or if it will you need to create a 12 volt or so supply for the driver IC. e) one of the main limitations in this circuit is the inductor. According to my modelling it has a temperature rise of 54 C at a current of 5 Amps.If you are interested in higher capacity solar chargers, I suggest you have a look at some other designs that use commercial DC-DC converters. https://github.com/farmerkeith/SolarChargerSZBK07M...https://github.com/farmerkeith/Solar-charger-XL401...Good luck and happy Making. .Keith

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hello NorthC2, There is not really any V3.1 project to follow. If you want something that actually works right now, please look at the comments from zopinter and all the replies to it.The original schematics were created using Eagle. I am now using KiCad for my schematics.

    Hi pawel2357, the charging process for a LiFePO4 battery is a bit different than a lead acid battery. The usual process is first constant current until the battery hits 4.1 volts/cell, and then constant voltage at 4.1 volts. There may also be a need for cell balancing, to make sure the voltage in each cell never goes over 4.1 volts.

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi TeddyGG, I am sorry to hear you have some problems. I don't know for sure but I think it is likely that the little buck converter (just to the right of the Nano) is responsible for your measurement of 68 K instead of 100 K. Another possibility is that, with the Nano removed from its socket, that the D2 and D3 pins are floating and may get a little bit of current from thermal noise and allow a few electrons to flow through R6 and/or R8. I don't think this is your main problem. It is not really possible to check your connections from the photos, even though they are quite clear. I think you need to do the following:a) check your wiring with a multimeter to make sure that nothing is shorted to ground that should not be. b) with the Arduino Nano out of its socket and the ACS712 disconnec...

    see more »

    Hi TeddyGG, I am sorry to hear you have some problems. I don't know for sure but I think it is likely that the little buck converter (just to the right of the Nano) is responsible for your measurement of 68 K instead of 100 K. Another possibility is that, with the Nano removed from its socket, that the D2 and D3 pins are floating and may get a little bit of current from thermal noise and allow a few electrons to flow through R6 and/or R8. I don't think this is your main problem. It is not really possible to check your connections from the photos, even though they are quite clear. I think you need to do the following:a) check your wiring with a multimeter to make sure that nothing is shorted to ground that should not be. b) with the Arduino Nano out of its socket and the ACS712 disconnected, connect the batery to the battery terminals and check that its 12V appears in the right places. Also check that the buck converter is putting out 5V, and adjust it if not. It may be worth while also pulling out the fuses, checking the voltages on the fuse terminals, then replacing the fuses. c) you can also check the functioning of transistor T2 by connecting the driver terminal D2 to ground (to turn the transistor off) and +5V (to turn the transistor on). If you have a 12V light bulb you can connect to the load terminals that may help your testing. d) if all the above tests are OK, it should be safe to put in a working ACS712. e) if that is all OK, you should measure the voltages on all the Arduino pins, to make sure they make sense. Then you should be OK to put in your (working) Arduino. I hope you can find the problem.

    View Instructable »
  • farmerkeith's instructable Controlling DC Converter Modules's weekly stats: 19 days ago
    • Controlling DC Converter Modules
      201 views
      10 favorites
      0 comments
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi victory282,I understand you want to calculate and display on the LCD the estimated time to the battery being fully charged (when it is being charged) and the estimated time to the battery being fully discharged (when it is being discharged). These things are possible, at least as an approximation, but are not just a matter of software.Hardware: In the schematic v2.0 the current meter module (ACS712) is in the path between the load control MOSFET and the output fuse. In this position it can measure the load (discharge) current but not the charging current. This means that you can get an estimate of discharge time to empty, but not charge time to full. Either you have to add a second current meter module to measure the charging current, or move the existing one into the path to and fro...

    see more »

    Hi victory282,I understand you want to calculate and display on the LCD the estimated time to the battery being fully charged (when it is being charged) and the estimated time to the battery being fully discharged (when it is being discharged). These things are possible, at least as an approximation, but are not just a matter of software.Hardware: In the schematic v2.0 the current meter module (ACS712) is in the path between the load control MOSFET and the output fuse. In this position it can measure the load (discharge) current but not the charging current. This means that you can get an estimate of discharge time to empty, but not charge time to full. Either you have to add a second current meter module to measure the charging current, or move the existing one into the path to and from the battery. If you move it to this position, it can give you positive current for charging, or negative current for discharging. That seems to me to be the best approach. Software: Quite a few things need to be added. You need a function that calculates battery state of charge (SOC) based on the battery voltage and the current into or out of the battery. Then you need a constant for the capacity of the battery in amp-hours (AH), and (probably) a SOC value that you will consider to be "fully discharged". This is because if you discharge thte battery below about 30% SOC it is likely to affect its life, so you could consider something like the 30% discharge point as being fully discharged. This is a matter of how you want to use the displayed value. Given these things, the time to full charge when charging is (100%-SOC%)*AH/100/Current (result in hours)Similarly, the time to full discharge when discharging is(SOC%-30%)*AH/100/(-Current) (result in hours)Finally, you need to figure out what the LCD display should look like. The existing software uses all the spaces on the display, so you will need to give up something, or alternate between different display modes. If you want to alternate, you could do it using a timer, or you could add a button to switch between the alternatives (another hardware change). I hope this gives you an idea of what is involved. If you want to do it, I can give you support with any problems you may encounter. Please let me know what you decide to do.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi, I received 2 of these modules in the mail a couple of days ago. These modules. coded SZBK07 and rated at 20 Amps, are slightly different to control than the XL4016 8 amp modules. I wrote an Instructable to explain how to do it. You can find it here:https://www.instructables.com/id/Controlling-DC-Co...

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi ashks, It should work with a Uno. I think there is some connection problem with your ACS712 for measuring the load current. Use your multimeter to check that you have +5v and Ground connected to the correct pins on the ACS712. Then check that you have 2.5V on the data pin, and also on pin A2 of your Uno.

    Hi victory282, I find your question a bit hard to understand. The answer will depend on exactly what you want to do. In the software you will see there are calculations of amp hours and watt hours, and the watt hours are displayed on the LCD and also on the serial monitor when connected. Can you clarify what you want to display, and where?

    View Instructable »
  • 1602 LCD Keypad Shield Module With I2C Backpack

    Hi Sara_6, We are progressing but slowly. The link to your lcd keypad module has a photo that clearly shows it is the DFRobot module. Hence I think the button values will be the same as mine. The photo of your real time clock module shows that it is NOT a DS1307, but is a DS1302. This runs a different protocol than the DS1307, and is not I2C. We will have to use different pins for this module, and different software. I found a link to a site that probably will provide a solution, here:https://playground.arduino.cc/Main/DS1302I have not tried it, because i don't have a DS1302 module. I think you should connect your module to some spare pins on your Uno, download his software and try it as is. The compilation error you have been getting - I get it also when I use MenuBackend.h version 1.6...

    see more »

    Hi Sara_6, We are progressing but slowly. The link to your lcd keypad module has a photo that clearly shows it is the DFRobot module. Hence I think the button values will be the same as mine. The photo of your real time clock module shows that it is NOT a DS1307, but is a DS1302. This runs a different protocol than the DS1307, and is not I2C. We will have to use different pins for this module, and different software. I found a link to a site that probably will provide a solution, here:https://playground.arduino.cc/Main/DS1302I have not tried it, because i don't have a DS1302 module. I think you should connect your module to some spare pins on your Uno, download his software and try it as is. The compilation error you have been getting - I get it also when I use MenuBackend.h version 1.6 (which is the one you sent me). It does not occur with MenuBackend.h version 1.5. I am attaching that so you can use it. This is not a very satisfactory situation, because usually a later version of a library should not make earlier code fail. However we can proceed with Version 1.5 at least for the moment.I am also attaching an updated version of your software. It includes changes that I think will work for you. There are some lines with comments that say "//works for KH" and the next line says "//works for Sara". I have commented out the KH lines and left in the Sara lines. You may need to swap some of them around. If you open it up and load it to your Uno with the serial monitor running you should be able to see the results of button presses on the serial monitor, and at least some of them will show up on the LCD screen. Maybe you can figure out if it is doing what you want. If it is OK as it is, the main job remaining will be to get the DS1302 going (as per suggestions above). Good luck,Keith

    Sara_6, this is not your parts list. Instead of Sparkfun Real Time Module (1x) it should say DS1302 real time moduleInstead of LCD Keypad Shield (1x) it should say DFRobot LCD Keypad shield.I suspect that the item that says i2c actually means I2C serial backpack for LCD module. By itself, i2c is meaningless.Being specific about the parts you are using helps a lot in working out how to help you. Keith

    Hi Sara_6, I am not sure about whether you want to change the LCD to serial, or leave it directly connected. Either way is possible and I think I have given you the information you need to do either. The only other thing I found was that on my version of the LCD keypad (which the DFRobot type) I had to change the threshold values for key recognition. The adjusted code, with relevant comments, is copied below here. if (adc_key_in > 1000) return btnNONE; if (adc_key_in < 50) return btnRIGHT; // was 50; R button returns 0 if (adc_key_in < 180) return btnUP; // was 250; U button returns 100 if (adc_key_in < 333) return btnDOWN; // was 450; D button returns 257 if (adc_key_in < 524) return btnLEFT; // was 650; L button returns 410 if (adc_key_in < 820) return btnSE...

    see more »

    Hi Sara_6, I am not sure about whether you want to change the LCD to serial, or leave it directly connected. Either way is possible and I think I have given you the information you need to do either. The only other thing I found was that on my version of the LCD keypad (which the DFRobot type) I had to change the threshold values for key recognition. The adjusted code, with relevant comments, is copied below here. if (adc_key_in > 1000) return btnNONE; if (adc_key_in < 50) return btnRIGHT; // was 50; R button returns 0 if (adc_key_in < 180) return btnUP; // was 250; U button returns 100 if (adc_key_in < 333) return btnDOWN; // was 450; D button returns 257 if (adc_key_in < 524) return btnLEFT; // was 650; L button returns 410 if (adc_key_in < 820) return btnSELECT; // was 850; S button returns 639 return btnNONE;The other change that you said you wanted to do was to add a buzzer. I think you should get the basic unit working on the existing code first, and then add the buzzer afterwards. Adding the buzzer will be quite simple if you know what you want it to do. Please let me know how you get on.Keith

    View Instructable »
  • 1602 LCD Keypad Shield Module With I2C Backpack

    Hi Sara_6, With your software which I have changed a little bit, I now have the LCD displaying "Take 1 pill(s)" on line 1 and "every 1 hours" on line 2. Progress. The changes I made to your software are:in the "includes" section, add#include <LCD.h>#include <LiquidCrystal_I2C.h>and delete #include <LiquidCrystal.h>This is because you need the library for the LCd that accesses it via I2C.Not far below that, replace LiquidCrystal lcd(8, 9, 4, 5, 6, 7);with LiquidCrystal_I2C lcd(0x27, 2,1,0, 4, 5, 6, 7);This is to tell the I2C library the address and what pins to use.Also (this is not essential but it helps) just after the lineSerial.begin(9600); add a new lineSerial.println("\n Starting pillReminder ");Can you please tell me the ex...

    see more »

    Hi Sara_6, With your software which I have changed a little bit, I now have the LCD displaying "Take 1 pill(s)" on line 1 and "every 1 hours" on line 2. Progress. The changes I made to your software are:in the "includes" section, add#include <LCD.h>#include <LiquidCrystal_I2C.h>and delete #include <LiquidCrystal.h>This is because you need the library for the LCd that accesses it via I2C.Not far below that, replace LiquidCrystal lcd(8, 9, 4, 5, 6, 7);with LiquidCrystal_I2C lcd(0x27, 2,1,0, 4, 5, 6, 7);This is to tell the I2C library the address and what pins to use.Also (this is not essential but it helps) just after the lineSerial.begin(9600); add a new lineSerial.println("\n Starting pillReminder ");Can you please tell me the exact modules that you are using?In particular, are using the DFRobot keypad LCD or the Sainsmart one?Are you using the Sparkfun real time clock module, or the TinyRTC module?Which Arduino board are you using (I am using a Nano)?Please let me know how you go with these suggestions.Keith

    Hi Sara_6, I had another look at this. I found a solution on the internet that allowed me to compile the example. The errors I get with your code is just one, which appears twice. It is on line 103 and line 431 of your code, where the code says "menu.toRoot();" which the compiler rejects since there is no "toRoot" in the class definition, or anywhere else in the MenuBackend.h file. Did you copy this from somewhere? Do you know what it is supposed to achieve? Keith

    Hi Sara_6, I realised soon after I sent this that you don't need any of these last changes. I think you are using direct connection between your Arduino and the LCD keypad unit. So you don't need the serial library after all. I had assumed that you were using serial, because that is what this Instructable is mainly about. I am looking forward to your answers to my questions still. Keith

    Hi Sara_6, I think we are making progress. I can now get your software to compile. To achieve this, you need to add a couple of lines to the Version 1.4 MenuBackend.h library. It is quite simple. Find the MenuBackend.h file and open it in a text editor such as Mousepad. It should be version 1.4 (the version number is in line 4). Go to line 195, and just before the line that says private: add the following:void toRoot(){ setCurrent(&getRoot()); }Then save the file. Once you have done that, your software should compile without errors. After that, you can start working on making it do what you want it to do.

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi KaustubK, there is no Printed Circuit Board (PCB) for this project. It is built on a prototype circuit board, which you can see in the photos - eg Step 24 shows how the components are arranged on the board.

    Hello ramones1995, You may have more than one problem, and the photos are not very clear. First I think you need to check the connections carefully against the circuit diagram. The high battery voltage reading you see on the LCD (16.10V) may be due to the voltage divider resistors being different from the 100K and 20 K specified. For example if the divider you have used is 100K and 30K it would explain what you are seeing. You can adjust the value in the software. It is on line 157, where it saysbat_volt = read_adc(BAT_ADC)*0.00488*(120/20);You can change the 120/20 to (say) 130/30 and see if the LCD becomes the same as your multimeter. Try different numbers until the multimeter and the LCD show the same value. As for the 2 to 5 volts you see on the LCD with "nothing" connec...

    see more »

    Hello ramones1995, You may have more than one problem, and the photos are not very clear. First I think you need to check the connections carefully against the circuit diagram. The high battery voltage reading you see on the LCD (16.10V) may be due to the voltage divider resistors being different from the 100K and 20 K specified. For example if the divider you have used is 100K and 30K it would explain what you are seeing. You can adjust the value in the software. It is on line 157, where it saysbat_volt = read_adc(BAT_ADC)*0.00488*(120/20);You can change the 120/20 to (say) 130/30 and see if the LCD becomes the same as your multimeter. Try different numbers until the multimeter and the LCD show the same value. As for the 2 to 5 volts you see on the LCD with "nothing" connected (is that correct?) I think you must have your Arduino Nano connected to the USB on your computer, in which case 5V from the USB goes to the BAT+ terminal and from there goes through the body diode of Q1, which explains the battery voltage reading on the LCD. Diode D1 should stop that getting to the panel voltage divider, but you are seeing the same reading there. Is it possible you have the diode installe back to front? Please check.

    Hi av1483110, your comment is a bit puzzling. In the circuit there are 2 MOSFETs IRF9504 and one power diode MBR2045. They all have a function, which I can explain if that is your question.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 4 weeks ago
    Solar Powered WiFi Weather Station

    Hi mauber, I think that the only real solution is to separate the solar panel and the temperature sensor physically. For example, put the solar panel away from the enclosure, connected by wires. If you just put the complete enclosure, with solar panel, in a shady place, you may get enough light to charge the battery provided you have the sleep time long enough.

    Hi JohnG591, Yes you are missing the library wire.h. Normally it is included by default in your IDE, but there is a different version needed for the ESP8266 which you can get from here:https://github.com/esp8266/Arduino

    View Instructable »
  • 1602 LCD Keypad Shield Module With I2C Backpack

    I found another version of MenuBackend.h at http://www.arduino.cc/playground/uploads/Profiles/...At least it compiles as a valid library, but neither the example nor your sketch will compile with it. They both fail with errors. So I think help is still needed from the experts on this menu management system.

    Hi Sara_6, I am glad to hear that your LCD problem is solved and it now works. I put your software into an Arduino sketch and pressed the button for verify. It returns "Error compiling for board Arduino Nano" and (among other things, and after copying in MenuBackend.h from github) "Invalid library found in ... /Arduino/libraries/Wiring:" So I think your problem is with using that library. It is new to me, I have not used Wiring. I think your options are to use some other pathway to achieve your programming goals; or seek help from the Wiring community who may be able to give you guidance on getting this library installed and working.If you want to go forward without using the Wiring framework, I expect I can help you with any problems you may encounter.I am sorry I...

    see more »

    Hi Sara_6, I am glad to hear that your LCD problem is solved and it now works. I put your software into an Arduino sketch and pressed the button for verify. It returns "Error compiling for board Arduino Nano" and (among other things, and after copying in MenuBackend.h from github) "Invalid library found in ... /Arduino/libraries/Wiring:" So I think your problem is with using that library. It is new to me, I have not used Wiring. I think your options are to use some other pathway to achieve your programming goals; or seek help from the Wiring community who may be able to give you guidance on getting this library installed and working.If you want to go forward without using the Wiring framework, I expect I can help you with any problems you may encounter.I am sorry I can't be more help. Keith

    View Instructable »
  • 1602 LCD Keypad Shield Module With I2C Backpack

    Hi Sara_6,Have you tried adjusting the contrast pot on the DFRobot LCD shield? It is a multi-turn pot at the top left corner of the shield. Try winding it clockwise for several turns (up to 10) and see if you start to see the pixels on the LCD display. Please let me know if that solves your problem. Keith

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi محمدح25 , It looks to me as if the current sensor ACS712 is not connected properly. I suggest you check whether the +5V and GND are there (measure the voltages with your multimeter) and also whether there is 2.5V on pin A2 of your Arduino when there is no current flowing.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 5 weeks ago
    Solar Powered WiFi Weather Station

    Hi JohnG591, I believe you need to install the Wire library. In your Arduino IDE, in the sketch menu click on Include Library then Manage Libraries. You can get the version for the ESP82666 here: https://github.com/esp8266/Arduino/tree/master/lib...

    Hi Flexomat, I think you need to figure out where the problem is. Two suggestions to get started:a) in the setup() section, just after Serial.begin(9600) line, add a new line such as:Serial.println("\n Solar Powered Weather Station");This will tell you whether the software is getting to that point, or getting stuck before that. b) In the early part of the software, there is a line that looks like this:// #define BLYNK_PRINT Serial // debug printing from library enabledJust delete the first two characters (the //) which will make the line active and give you some print outs of how the Blynk connection is proceeding. It seems likely to me that this is where your problem is. Please report back with the results. Keith

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Yes of course I will share any information that I find. I have ordered 2, due to arrive early May 2018.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Yes I agree these look promising. Do you have any more information about them? Presumably the control of output voltage will be similar to the XL4016 module.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    This is an addition to my comment A) above, about shorting out the current sense resistor. I was wrong to say "Shorting out that resistor has the effect of disabling the current limit protection built into the buck converter, so its current can increase to the limit of capacity of the supply (solar panel) depending on the PWM settings." The XL4016 has the current limiting function internally. Shorting out that resistor only disables the current regulation fuction of the buck converter module, which enables the current limit to be controlled by a pot. The 8Amp limit, as well as the thermal protection, will still work even if that current sense resistor is shorted.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi AndreasT33, I think the main difference is that the Due is a 3.3 Volt microcontroller, so you need a feed resistor with a lower value than for the 5V controllers. For example, in my posting a few days ago, I calculated the feed resistor for a maximum of 15 Volts (set by the pot) and 10V (with 100% PWM) which gave 2572 Ohms for a 5 Volt controller, If the controller is 3.3Volt, that resistor would need to be 1226 Ohms. zopinter has answered the other parts of your question.

    Thanks Zoltan. I was struggling a bit to understand the current limiting function of the coverter using the schematic diagram above. It seemed there were some connections missing. Then I discovered the attached schematic, which supplies the missing information, and makes the current limiting work. FYI.I got it from http://www.cientificosaficionados.com/foros/viewto...Thank you to them.Keith

    Hi Zoltan, a few points here. A) from a functional point of view, there is no need to short out the current sense resistor on the buck converter. Shorting it out WILL increase the efficiency, since (eg) at 8 Amps it will dissipate 0.64 Watts, out of a total loss of about 8 Watts. Leaving the resistor in place effectively increases the output impedance of the buck converter by 0.01 Ohms, but really has no other effect. The voltage measured at the battery will still be the battery voltage. Shorting out that resistor has the effect of disabling the current limit protection built into the buck converter, so its current can increase to the limit of capacity of the supply (solar panel) depending on the PWM settings. Especially for anyone using a high capacity solar panel, I would recommend le...

    see more »

    Hi Zoltan, a few points here. A) from a functional point of view, there is no need to short out the current sense resistor on the buck converter. Shorting it out WILL increase the efficiency, since (eg) at 8 Amps it will dissipate 0.64 Watts, out of a total loss of about 8 Watts. Leaving the resistor in place effectively increases the output impedance of the buck converter by 0.01 Ohms, but really has no other effect. The voltage measured at the battery will still be the battery voltage. Shorting out that resistor has the effect of disabling the current limit protection built into the buck converter, so its current can increase to the limit of capacity of the supply (solar panel) depending on the PWM settings. Especially for anyone using a high capacity solar panel, I would recommend leaving the current sense resistor in the circuit.B) about the switching circuit using 2 MOSFETs and a bipolar transistor. As you say, this can be used to control the output of the buck converter using a PWM signal on the resistor to the base of the transistor. However the circuit as drawn has a few issues:B1) the MOSFETS are type ZXM61P03F which have a reverse breakdown voltage of 30V and a rated current capacity of 1.1 Amps. That rating is well below the capability of the XL4016 buck converter, so different MOSFETs may be needed in practice. B2) Thie circuit has a fast turn-on, slow turn-off characteristic, since the transistor when it turns on will rapidly charge the gate capacitance of the 2 MOSFETs, but their discharge when the transistor turns off will be acording to the RC time constant of the 2 MOSFETs in parallel and the 470K gate resistor. Wth the ZXM61P03F MOSFETs, which have an input capacitance of 140 pF (each) this gives a time constant of about 130 microseconds. With other more capable MOSFETs it can be expected to be slower. If the PWM frequency is about 1 kHz (as for the default AnalogWrite in the Arduino world) even if the microcontroller is set to a low duty cycle (say 1%) the minimum duty cycle will be of the order of 13% (130us / 1000 us). So you really cannot achieve very low current flow, as you can with the PWM control of the ZX4016 SB pin. B3) This circuit does not prevent reverse current flow except when fully OFF. As you pointed out earlier, the XL4016 may be damaged by applying battery voltage to its output with nothing on the input. Hence it becomes a software responsibility to keep it turned off until there is enough voltage on the solar panel side.B4) putting points B1 and B2 above together, to make a circuit that matches the capability of the XL4016 buck converter, we can use MOSFETs type IRF9540 ("13 Amps") or IRF4905 ("50 Amps"). The IRF9540 has an input capacitance of 1400 pf, so the gate resistor in the circuit needs to be reduced to 47 K ohms to get the same performance. The IRF4905 has an input capacitance of 3400 pF, so the resistor has to go down to 20 K ohms for the same performance. Other options are slowing the PWM frequency and/or adding an active pull-up circuit for the MOSFET gates. B5) Yet another option is to separate the control of the 2 MOSFET gates, so that one (on the left in the diagram) acts as a diode, and the other (on the right in the diagram) is controlled by the PWM from the microcontroller. This would have the effect of halving the RC time constant at its gate (a good thing) and ensuring the current can never flow backwards into the buck converter. The disadvantage is that it makes the circuit more complicated. Regards,Keith

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi PrakashC19, I have had a good look at your photos. It is a bit hard to be sure, but I suspect there are some wrong connections. Also you say in your message "first power mosfet (MBR9540)". The connection from the solar panel goes from the fuse, to the power diode MBR2045, and then to the mosfet IRF9540. There is no such thing as MBR9540. From the fuse the connection goes to the MBR2045 pins 1 and 3. Then from the MBR2045 pin 2 the connection goes to Pin 3 of the IRF9540. Looking at the IRF9540 with the tab to the back, the source is the right-most pin. The collector of T1 goes to the Gate, which is the left-most pin of the IRF9540. I hope this helps. Good luck. Please post again with results of your checking.

    Hi KentG26, The charger should work with a windmill just the same as for a solar panel.

    Hi skyler78, The most likely hypothesis I can offer is that you have put your IRF9540 in back to front, with source and drain reversed. Please check it carefully against the data sheet. However even this may not explain what you are seeing.If you look at the circuit diagram, the connection from the solar panel comes through the fuse and D1 to the Source of Q1. Resistor R6 holds the Gate of Q1 at the same voltage as the Source, unless the bipolar transistor T1 is turned on. So with T1 off, Q1 will be off. Then the Arduino turns T1 on, its collector voltage goes to ground (nearly) and so does the gate of Q1, which then is negative with respect to the positive voltage on its Source, so it turns ON. To answer your questions directly (that is, the question: Why is that we use a PMOS? Can we ...

    see more »

    Hi skyler78, The most likely hypothesis I can offer is that you have put your IRF9540 in back to front, with source and drain reversed. Please check it carefully against the data sheet. However even this may not explain what you are seeing.If you look at the circuit diagram, the connection from the solar panel comes through the fuse and D1 to the Source of Q1. Resistor R6 holds the Gate of Q1 at the same voltage as the Source, unless the bipolar transistor T1 is turned on. So with T1 off, Q1 will be off. Then the Arduino turns T1 on, its collector voltage goes to ground (nearly) and so does the gate of Q1, which then is negative with respect to the positive voltage on its Source, so it turns ON. To answer your questions directly (that is, the question: Why is that we use a PMOS? Can we not just use an NMOS ...?) the answer is to do with the polarity of the gate voltage relative to the source of the MOSFET. With a P-channel MOSFET, and the Source connected to the solar panel voltage, it can be turned ON by bringing its Gate voltage to ground. If we had an N-channel MOSFET and the same Source connection, to turn it on we would need to raise its Gate voltage to a value higher than the solar panel voltage. This can be done but it usually involves a charge pump of some sort, to generate the above-solar-voltage. The circuit gets a lot more compliated, so using a P-channel MOSFET is simpler. Good luck with the project and please report back, espeially if you continue to have problems.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 6 weeks ago
    Solar Powered WiFi Weather Station

    Hi allesreiniger, I do not think it is useful to add a DC-DC step down between the solar panel and the TP4056. I think you need to check the voltage on your battery both in full sun and in shade. If the battery is working well, it should be at least 3.7V. On my implementation, I am using Blynk and sleep mode with the WeMos waking up every 10 minutes to send a report, and then going badk to sleep. The WeMos is reporting the battery voltage as well as the temperature and pressure. The battery voltage rises to a maximum of 4.1 Volts during the morning, then drops over night to a minimum up 3.8V. If the sleep part of the cycle is too short, the battery discharges too much, the panel cannot recharge it during the day, and the battery is likely to fail.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    (Previous post continued)The previous equation for total current can be solved for Vout with given values of R11, R21 and pwm. It becomesVout= 1.25 + 3.48mA * R11 – 3.25V * R11/R21 * pwm/255 (for pwm < pwm limit)Here is a chart that shows the behaviour of Vout with R11 set to 10K and R21 of 150 and 935 Ohms. Also a second chart with R11 set to 5K and R21 of 150 and 1000 OhmsIt can be seen that the useful range of pwm values us quite limited. When charging a 12V battery, the charging voltage should never be above 15Volts, nor below 10Volts. Therefore R11 could be adjusted to give a maximum Vout of 15 Volts, and then R21 chosen to give a minimum Vout of 10 volts. Putting numbers to this, Vout max= 1.25 + 3.475mA * R11For Vout max = 15V, R11 = (15-1.25)/3.475 = 3956 Ohms, set by...

    see more »

    (Previous post continued)The previous equation for total current can be solved for Vout with given values of R11, R21 and pwm. It becomesVout= 1.25 + 3.48mA * R11 – 3.25V * R11/R21 * pwm/255 (for pwm < pwm limit)Here is a chart that shows the behaviour of Vout with R11 set to 10K and R21 of 150 and 935 Ohms. Also a second chart with R11 set to 5K and R21 of 150 and 1000 OhmsIt can be seen that the useful range of pwm values us quite limited. When charging a 12V battery, the charging voltage should never be above 15Volts, nor below 10Volts. Therefore R11 could be adjusted to give a maximum Vout of 15 Volts, and then R21 chosen to give a minimum Vout of 10 volts. Putting numbers to this, Vout max= 1.25 + 3.475mA * R11For Vout max = 15V, R11 = (15-1.25)/3.475 = 3956 Ohms, set by adjusting the pot with pwm=0 until Vout = 15VNow we can calculate R21 needed to get Vout=10V.For Vout=10V, current in R11 will be (10-1.25)/R11 = 2.212 mA.The remainder of the 3.475 mA required is in R21, so its current is 1.263 mA. Value of R21 = (5-1.25-0.5)/required current = 2572 Ohms. With these values we can chart the response to pwm:As you can see this gives us a gentler slope and smaller voltage steps for each pwm change. Whether this makes a practical difference is unclear to me. It should mean that the excursions around the maximum power point of the panel should be smaller than if each pwm step has a larger voltage change.I think this is getting me closer to understanding how this charger works. Regards,Keith

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Thanks Zoltan. That clarifies quite a few things. Putting the LTC4412 on the battery side of the buck converter means it is not subject to the solar panel voltage, which could easily exceed its voltage rating. Your sketch schematic does not identify the MOSFET you are using. I guess an IRF4905 or similar would be suitable. Do you have an estimate of the resistance of the two resistors (one fixed, one variable) on the buck converter? AND what are the upper and lower output voltage limits you get with the 1N5819 and 150 ohm resistor to the feedback pin? Thanks,Keith

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Thanks for quick reply Zoltan. Regards.Keith

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi zopinter, can you please clarify about the PWM input that controls the buck converter you got from Ebay. There are several vendors for these, they all say the output voltage can be adjusted by a pot, not by an input voltage. I think you have identified the pin that is controlled by the pot, and connected that to the pwm output of the arduino. Is that correct? Did you remove the pot, or is it still in the circuit?thanks, Keith

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi skyler78, have a look at Step 6, where there is a logic flow chart for the control of the charging pwm. You will see Ep, which is the Error Percentage, in the middle of the chart. I think you can work out from the chart how it is used.

    Hi haffizi1995, the MBR2045 used in this project is actually MBR2045CT. It has 2 diodes, with a common cathode on pin 2 and anodes for the 2 separate diodes on pin 1 and pin 3. It is in the instructions in step 15, to connect the 2 anodes together. The anodes connect to the load side of the fuse F1 and the cathode connects to the Source of MOSFET Q1, as per the schematic diagram.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 7 weeks ago
    Solar Powered WiFi Weather Station

    Hi ПреславВ , Yes it is possible but there are a few issues. That project uses an Aduino Uno and two input pins, one digital and one analog. The WeMos D1 mini pro has only one analog input pin, which in my implementation has been used to measure the battery voltage. If you are not using the analog input pin for something else, you can use it for the davis anemometer wind direction input. If your WeMos analog input pin is not available, you can add an external analog input using for example an ADS1115 module. The required digital input is no problem, you can choose any one.I am not sure about the software, in particular the interrupt handling software on the ESP8266 is likely to be different from the AVR of the UNO. The interrupt handling appears to be used for de-bouncing the wind speed...

    see more »

    Hi ПреславВ , Yes it is possible but there are a few issues. That project uses an Aduino Uno and two input pins, one digital and one analog. The WeMos D1 mini pro has only one analog input pin, which in my implementation has been used to measure the battery voltage. If you are not using the analog input pin for something else, you can use it for the davis anemometer wind direction input. If your WeMos analog input pin is not available, you can add an external analog input using for example an ADS1115 module. The required digital input is no problem, you can choose any one.I am not sure about the software, in particular the interrupt handling software on the ESP8266 is likely to be different from the AVR of the UNO. The interrupt handling appears to be used for de-bouncing the wind speed input. An alternative would be to use the bounce2 library which is available on Github and which I have used and know works with ESP8266. These are the only issues I can see, so I think you will have some work to do but nothing insurmountable. I have not tried it myself so there are no guarantees. Please report back so that other people can learn from your experiences.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi LexenZ, This is a puzzle to me, maybe we are losing something in the translation. I feel I should remind you that this project as published has problems. Neither the author nor I were able to get it to work properly. The current and direction of current should be a function of the panel voltage Vpp, the battery voltage Vbb, the inductor resistance RL and the PWM duty cycle. The PWM duty cycle is controlled by the software. The period Tt is fixed at 20 microseconds. The "on" part of the duty cycle Tp comes from the counter/timer1 in the Arduino, which for the software provided in this project can be varied in steps of 2. My analysis of the inductor in the project description gives RL=0.06 Ohms.Relevant examples are:Vpp=18V, Vbb=12V, Tt=20us Tp=214 clocks = 13.375us, Average ...

    see more »

    Hi LexenZ, This is a puzzle to me, maybe we are losing something in the translation. I feel I should remind you that this project as published has problems. Neither the author nor I were able to get it to work properly. The current and direction of current should be a function of the panel voltage Vpp, the battery voltage Vbb, the inductor resistance RL and the PWM duty cycle. The PWM duty cycle is controlled by the software. The period Tt is fixed at 20 microseconds. The "on" part of the duty cycle Tp comes from the counter/timer1 in the Arduino, which for the software provided in this project can be varied in steps of 2. My analysis of the inductor in the project description gives RL=0.06 Ohms.Relevant examples are:Vpp=18V, Vbb=12V, Tt=20us Tp=214 clocks = 13.375us, Average Current = 0.0375V/0.06=0.625Amps. Tp=212 clocks = 13.25us, Average Current = -0.075V/0.06=-1.25Amps.So, if the On part of the PWM cycle is reduced to or below 212 clock cycles, the current should flow from the battery and its voltage should reflect that by being lower than the no-load voltage.Does this make senst to you and how does it relate to what you are seeing?Keith

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi LexenZ, an MPPT solar charger is really an MPPT-capable solar charger. It will not spend all of its time in MPPT mode. Sometimes it will be OFF (eg at night time). Other times the battery will be fully charged and should not/ can not be given any more charge. For this, a constant voltage mode is needed, which maintains the battery voltage at a level that just compensates for any load current (which may be zero or non-zero). This is the "float" voltage. In both MPPT mode and Float mode, the amount of charging current is controlled through the PWM duty cycle. If this is not clear, please feel free to ask again. Regards,Keith

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi PrakashC19, No you cannot use IRFZ44N MOSFETs, because the design requires a P-channel MOSFET and the IRFZ44N is an N-channel device. If you are looking for an alternative to the IRF9540, I suggest using IRF4905 which is a better device for this job anyway since it has a lower ON resistance than the IRF9540.

    Hi PrakashC19, Sorry the last part of that answer was wrong, the load current DOES flow through the current sensor. Please see my answer to the other question you posted on this subject.

    Hi PrakashC19, I think the component list is a mistake, 10uF is sufficient for both C3 and C4. But you can use 100 uF for either of these capacitors if that is what you have. Probably it is better to use the 100uF for C4.

    Hi PrakashC19, The connection of the ACS712 current sensor is shown in the circuit diagram with the symbols I+ and I- between MOSFET Q2 and fuse F2 (in the right hand top part of the diagram). The ACS712 comes in 3 different types, optimised for currents of 5A, 20A and 30A. they have different sensitivities but as far as I know this is the only difference between them. This project specifies the 20A version, but you can actually use any of the 3 types provided you adjust the calibration in the software.I suggest you check your wiring carefully (you can do it using a multimeter, which is an essential tool for this type of project). I can give you more suggestions about testing if you ask.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi LexenZ, I am sorry that you are having troubles with the UNO. I have had several Arduino Nano boards fail with these symptoms and no obvious reason for the failure. All I can suggest is that you disconnect your UNO from everything, then plug in the USB cable from your computer and see if you can load sofware to it. I have never used a UNO, they are bigger and more expensive than the Nano and do not have pins A6 and A7. I usually set up my hardware so I can plug the Nano into female headers on the project board, so it can be easily replaced if necessary. Further to the LCD strategy, your options are not only a) direct connection (which I mentioned before) and b) serial backpack (which is similar to the 16-bit expander you mention but has specific circuitry to support the contrast con...

    see more »

    Hi LexenZ, I am sorry that you are having troubles with the UNO. I have had several Arduino Nano boards fail with these symptoms and no obvious reason for the failure. All I can suggest is that you disconnect your UNO from everything, then plug in the USB cable from your computer and see if you can load sofware to it. I have never used a UNO, they are bigger and more expensive than the Nano and do not have pins A6 and A7. I usually set up my hardware so I can plug the Nano into female headers on the project board, so it can be easily replaced if necessary. Further to the LCD strategy, your options are not only a) direct connection (which I mentioned before) and b) serial backpack (which is similar to the 16-bit expander you mention but has specific circuitry to support the contrast control function of the LCD display and a pin layout that makes the connection very easy)but also c) purchase a new LCD with serial backpack included; or d) use a general purpose I2C to parallel interface board (which you have referred to above). As for a), direct connection: if you are working on THIS project (ie deba168 solar charger version 3.0) then there are enough pins available to achieve direct connection of the LCD provided you are using a Nano and not a UNO. To get 7 pins for your LCD you need to use A6 and A7, which are not available on the UNO.I don't have experience with general purpose I2C to parallel interface boards (d above). I expect they are less convenient to use than the serial backpack which is designed to make connection easy. Good luck!

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 2 months ago
    Solar Powered WiFi Weather Station

    Hello PitrP, I had similar problems myself. Are you using sleep mode for the WeMos board? If not, I think that the solar panel may not be able to keep up with the power consumption of the WeMos. For a start, I think you should try plugging in a USB cable with mains power into the TP4056 and leave it for at least a few hours (maybe a day). That should get your battery fully charged. It would be worth while to measure the battery voltage as well as the output voltage of the solar panel.I have been running my implementation with a 10 minute sleep cycle for several months now with no battery problems. I found that with a 1 minute sleep cycle the panel could not keep up with the power usage. I have not tried periods in between 1 and 10 minutes.I am also using the WeMos to measure its own Vcc...

    see more »

    Hello PitrP, I had similar problems myself. Are you using sleep mode for the WeMos board? If not, I think that the solar panel may not be able to keep up with the power consumption of the WeMos. For a start, I think you should try plugging in a USB cable with mains power into the TP4056 and leave it for at least a few hours (maybe a day). That should get your battery fully charged. It would be worth while to measure the battery voltage as well as the output voltage of the solar panel.I have been running my implementation with a 10 minute sleep cycle for several months now with no battery problems. I found that with a 1 minute sleep cycle the panel could not keep up with the power usage. I have not tried periods in between 1 and 10 minutes.I am also using the WeMos to measure its own Vcc (effectvely the battery voltage) and reporting that to Blynk, so that I can see how the voltage varies through the day. Typically the daily cycle goes from 3.8V early in the morning to 4.1V when the full sun is on the panel.

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi haffizi1995, yes you can use a 6W, 12V solar panel.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi LexenZ. These connections are between the Arduino and the 20 * 4 LCD with serial backpack as specified in the components list. There is no need for any additional hardware. The LCD unit comes from the supplier with the serial backpack module fitted to it, so you can just connect them together and expect it to work. You may need to adjust the contrast potentiometer on the serial backpack.If you are having trouble, you should try I2C address search software. Also you could have a look at this Instructable https://www.instructables.com/id/1602-LCD-Keypad-S...One of the possibilities, which you can see in the comments to this Instructable, is that your backlight is not being turned on. There is some advice there on fixing that.

    Hi LexenZ,If your LCD does not come with serial backpack, your options are either to connect it directly to your Arduino, or to buy a serial backpack module and use the I2C interface. To connect directly you need more pins on your Arduino - from memory, I think it is 7. Depending on your project, you may not have enough pins, in which case the serial backpack is really your only option. The serial backpack modules are readily available and quite inexpensive. Here is an example: https://www.ebay.com.au/itm/10pcs-I2C-Serial-Inter...I could not find a vendor selling a single module, depending on your needs you may want to look more.

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi PrakashC19, The LCD unit is a "generic" 2004 display (20 characters wide by 4 rows), as per the links in the components list. The LCD unit comes with the I2C interface installed, so there is no separate driver IC. You just need to make the connections for ground, power (+5V) and the 2 I2C wires SDA and SCL, which go to Arduino pins A4 and A5.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 2 months ago
    Solar Powered WiFi Weather Station

    Hi borsvv1, I am sorry about the delay I must have missed your reply.Do you mean, the serial monitor is blank (no content at all) or do you mean there is nothing useful there? If it is showing nothing at all, it is probably because its settings are different from the software. If it is showing something, anything at all, please post it in your reply.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    H LexenZ/John, I don't think the working / non-working has anything to do with capacitors being polarized or non-polarized. I am not sure what you mean by "your overall schematics", but the main schematic (shown in step 10) has 3 polarized capacitors, C1, C2 and C5. Of course they need to be installed the right way around. The problems in this circuit as it stands are two: a) reverse current flow protection does not work well (when the panel is in darkness current still flows from the battery back into the panel, wasting the battery charge); and b) PWM connections do not support a managed startup phase, which requires a short pulse on LO before the main charging phase starts. I am building simulation and physical models of my solutions to these problems and do not want to publ...

    see more »

    H LexenZ/John, I don't think the working / non-working has anything to do with capacitors being polarized or non-polarized. I am not sure what you mean by "your overall schematics", but the main schematic (shown in step 10) has 3 polarized capacitors, C1, C2 and C5. Of course they need to be installed the right way around. The problems in this circuit as it stands are two: a) reverse current flow protection does not work well (when the panel is in darkness current still flows from the battery back into the panel, wasting the battery charge); and b) PWM connections do not support a managed startup phase, which requires a short pulse on LO before the main charging phase starts. I am building simulation and physical models of my solutions to these problems and do not want to publish them before I am confident they will work reliably.

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi spmbk, You are right that when the MOSFET is ON, the panel voltage and battery voltage will be nearly the same - but not exactly the same. The battery voltage is only slightly affected by the charging current, and can still be used for the decision about when to terminate the maximum charge rate and transition to the float charge rate. The panel voltage is only used to detect whether the panel is putting out enough voltage to charge the battery, or not. If the panel voltage is less than the battery voltage, the charger turns off. To turn on, the panel voltage needs to be at least 0.5 volts higher than the battery voltage.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi LexenZ, I understand a bit more about your question now. First of all, the inverter, with a power capability of 230W, will draw up to about 20 Amps from the battery. As for the buck-boost converter described in the Instructable you have referenced (by GreatScottLab) I am very doubtful that you can use it as the basis for a solar charger. The reasons come down to a) capacity b) efficiency c) processor capability. There may be more. a) capacity is quoted as 1 - 2 amps, I have not done any analysis of the specific design details but my expectation is that you will get quite high temperature rise even at 1 amp (ie 12 Watts with a 12 Volt battery).b) efficiency is stated to be around 80% (in the video). For a MPPT solar charger used with a 12V battery and a panel with an 18V maximum power...

    see more »

    Hi LexenZ, I understand a bit more about your question now. First of all, the inverter, with a power capability of 230W, will draw up to about 20 Amps from the battery. As for the buck-boost converter described in the Instructable you have referenced (by GreatScottLab) I am very doubtful that you can use it as the basis for a solar charger. The reasons come down to a) capacity b) efficiency c) processor capability. There may be more. a) capacity is quoted as 1 - 2 amps, I have not done any analysis of the specific design details but my expectation is that you will get quite high temperature rise even at 1 amp (ie 12 Watts with a 12 Volt battery).b) efficiency is stated to be around 80% (in the video). For a MPPT solar charger used with a 12V battery and a panel with an 18V maximum power point, the power gain is ((18V/12V)*efficiency-1). That is, for 100% efficiency the power gain is 50%; but for 80% efficiency the power gain is only 20%. More than half of the potential benefit of building an MPPT charger has been lost. These figures are relative to using a much simpler PWM solar charger, such as the Version 2.0 in this series of Instructables. c) This buck-boost converter uses an ATTiny85 microcontroller, which has only 8-bit pwm and only 8kbytes of program memory. I do not think it is possible to add appropriate battery management and MPPT functionality within this program memory space. The granularity of the 8-bit PWM is also likely to be a problem. As to your question about whether V3.0 and V3.1 in this Instructable are working, the answer is currently NO. Not working. At the very least, the circuts need some modification to allow them to work. Even with these modifications, the capacity limit is rather low. I am working on a design which will deliver higher capacity, and hope to publish something soon.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi LexenZ, As I understand your question, you have built a buck-boost converter (one unit) and an inverter (another unit) and you want to combine them in some way. An inverter usually means a device that draws enerty from a battery as a DC voltage and current (eg 12 Volts) and delivers AC voltage and current (eg 230 Volts at 50 Hz). The inverter will have a power limit, possibly somewhere between 200 Watts and 1,200 Watts. Is this what you have built, and what are the voltages and power levels for your inverter? A buck-boost converter usually means a DC-DC converter that takes in one DC voltage and delivers a different DC voltage. In an MPPT solar charge controller (such as in this project) the input DC voltage comes from a solar panel (15 - 25 V), and the delivered DC voltage goes to ...

    see more »

    Hi LexenZ, As I understand your question, you have built a buck-boost converter (one unit) and an inverter (another unit) and you want to combine them in some way. An inverter usually means a device that draws enerty from a battery as a DC voltage and current (eg 12 Volts) and delivers AC voltage and current (eg 230 Volts at 50 Hz). The inverter will have a power limit, possibly somewhere between 200 Watts and 1,200 Watts. Is this what you have built, and what are the voltages and power levels for your inverter? A buck-boost converter usually means a DC-DC converter that takes in one DC voltage and delivers a different DC voltage. In an MPPT solar charge controller (such as in this project) the input DC voltage comes from a solar panel (15 - 25 V), and the delivered DC voltage goes to a battery (11 - 14V). The MPPT solar charge controller also has control functions for tracking the maximum power point of the solar panel, and to manage the battery to achieve full charging while preventing over-charging. Does this describe the buck-boost converter that you have built, and does it have the MPPT and battery management functions?

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi LexenZ, it depends on what you mean by "integrate". Usually inverters are designed to draw very large currents from the battery, which means that direct connection is usually used. If you can explain what you would like to do, maybe you can get some useful advice.

    View Instructable »
  • farmerkeith commented on farmerkeith's instructable DIY Linear Actuator3 months ago
    DIY Linear Actuator

    Thanks clothier_bruce. Yes getting something actually completed is always a challenge, there is a continual flow of new projects. Choice of motor is a matter of matching speed and force requirements of the job with motor capabilities and the available gearing. The motor I chose is performing well within its limits. I agree that re-use of a cordless drill motor is interesting, and may be a good choice for this job. I planned to build something similar using a cordless drill motor, but it has not hit the "today" list yet. I suspect there are extra challenges to do with the mounting arrangements. As for limit switches, "awful" or otherwise - I understand the principle of measuring the current draw, which is proportional to motor torque, and using that to decide when the...

    see more »

    Thanks clothier_bruce. Yes getting something actually completed is always a challenge, there is a continual flow of new projects. Choice of motor is a matter of matching speed and force requirements of the job with motor capabilities and the available gearing. The motor I chose is performing well within its limits. I agree that re-use of a cordless drill motor is interesting, and may be a good choice for this job. I planned to build something similar using a cordless drill motor, but it has not hit the "today" list yet. I suspect there are extra challenges to do with the mounting arrangements. As for limit switches, "awful" or otherwise - I understand the principle of measuring the current draw, which is proportional to motor torque, and using that to decide when the travel is at the end. However this method does not allow for operation of multiple actuators in a daisy chain from the same controller, which can be done with the limit switches. I covered this in the Instructable and it was one of my requirements. If your requirement does not include the daisy chain capability, then you have the choice of limit switches or current sensing. It becomes a question of where you want the extra complexity. Thanks again for your comment. Keith

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Tommy, Neither V3 nor V3.1 is successful at the moment. At the minimum the circuit needs some modification; and also the capacity is very limited even with the minimum modification. I am working on a design to solve these problems.

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    AjR34, you can find the software in step 12, both as a download and as a link to GitHub.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 3 months ago
    Solar Powered WiFi Weather Station

    Hi mrkrash, the main function of the TP4056 is to protect the battery from being overcharged. The versions with OUT+- also have over-discharge protection. although this is very desirable, it is not essential to make the project work. You can connect the WeMos D1 min pro directly to the Bat +- terminals.

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi Nikhil ChakravarthyC , yes you should be able to use a 10W, 12V solar panel with this project.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 3 months ago
    Solar Powered WiFi Weather Station

    I have been getting about 50 metres with the external antenna and about 20 metres with the built-in antena. It depends a lot on the local conditions, including the base station that you are using and obstacles in between the base and your project hardware.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 4 months ago
    Solar Powered WiFi Weather Station

    Hi brosvv1, Maybe I can help you best with the Blynk version. I think you should try removing the comment-out slashes in line 28, so as to enable serial printing from the Blynk library. So this line will now read#define BLYNK_PRINT Serial // Comment this out to disable prints and save spaceIf you can't work out what is the problem, please post the output from the serial monitor here so that I can look at it, and may be able to give further advice.

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 4 months ago
    Solar Powered WiFi Weather Station

    Hi Rengatharu,If you do not have another WeMos already, then you need to purchase another one. When it arrives, try to upload a sketch to it before you solder any pins, that way you will be sure you have not damaged it in any way (not that soldering the pins is likely to damage it).

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 4 months ago
    Solar Powered WiFi Weather Station

    Hi jfmateos,If you want to understand more about the power connections, please look at my reply to EdithAndLucas from 7 months ago. It may be that you will get more energy from your battery by making the connection to 3.3V instead of 5V, although I think the difference is probably quite small. You also run the risk of causing your WeMos to fail due to over voltage, although I think that is also a low risk in this situation.

    Hi Rengatharu,I think the first thing you should do is unplug the WeMos from the circuit board and try the upload to it, without anything connected to its pins. If that fails as above, you almost certainly have a faulty WeMos. Try the same thing with another WeMos - that is, upload not plugged in to anything. If that fails as well, you may need to try different hardware combinations - eg a different USB cable, a different USB port on your computer. For example, here is what I see in the bottom window of my IDE (v1.8.5) when I open a brand new (blank) sketch and upload it to a WeMos D1 mini pro. The big different occurs on about line 8 of what you sent, including the word "failed". Good luck!KeithArchiving built core (caching) in: /tmp/arduino_cache_624375/core/core_esp8266_es...

    see more »

    Hi Rengatharu,I think the first thing you should do is unplug the WeMos from the circuit board and try the upload to it, without anything connected to its pins. If that fails as above, you almost certainly have a faulty WeMos. Try the same thing with another WeMos - that is, upload not plugged in to anything. If that fails as well, you may need to try different hardware combinations - eg a different USB cable, a different USB port on your computer. For example, here is what I see in the bottom window of my IDE (v1.8.5) when I open a brand new (blank) sketch and upload it to a WeMos D1 mini pro. The big different occurs on about line 8 of what you sent, including the word "failed". Good luck!KeithArchiving built core (caching) in: /tmp/arduino_cache_624375/core/core_esp8266_esp8266_d1_mini_CpuFrequency_80,UploadSpeed_921600,FlashSize_4M3M_5599fd7b37e9acceacc41dbccdf043b5.aSketch uses 221919 bytes (21%) of program storage space. Maximum is 1044464 bytes.Global variables use 31484 bytes (38%) of dynamic memory, leaving 50436 bytes for local variables. Maximum is 81920 bytes./home/guy/.arduino15/packages/esp8266/tools/esptool/0.4.9/esptool -vv -cd nodemcu -cb 921600 -cp /dev/ttyUSB0 -ca 0x00000 -cf /tmp/arduino_build_451683/sketch_jan13a.ino.bin esptool v0.4.9 - (c) 2014 Ch. Klippel <ck@atelier-klippel.de> setting board to nodemcu setting baudrate from 115200 to 921600 setting port from /dev/ttyUSB0 to /dev/ttyUSB0 setting address from 0x00000000 to 0x00000000 espcomm_upload_file espcomm_upload_memopening port /dev/ttyUSB0 at 921600 tcgetattr tcsetattr serial openopening bootloaderresetting boardtrying to connect espcomm_send_command: sending command header espcomm_send_command: sending command payloadtrying to connect espcomm_send_command: sending command header espcomm_send_command: sending command payload espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of data espcomm_send_command: receiving 2 bytes of dataUploading 226064 bytes from /tmp/arduino_build_451683/sketch_jan13a.ino.bin to flash at 0x00000000 erasing flash size: 037310 address: 000000 first_sector_index: 0 total_sector_count: 56 head_sector_count: 16 adjusted_sector_count: 40 erase_size: 028000 espcomm_send_command: sending command header espcomm_send_command: sending command payload setting timeout 15000 setting timeout 100 espcomm_send_command: receiving 2 bytes of data writing flash................................................................................ [ 36% ]................................................................................ [ 72% ]............................................................. [ 100% ]starting app without reboot espcomm_send_command: sending command header espcomm_send_command: sending command payload espcomm_send_command: receiving 2 bytes of dataclosing bootloader

    View Instructable »
  • farmerkeith commented on farmerkeith's instructable DIY Logging Thermometer4 months ago
    DIY Logging Thermometer

    SzymonW7 has had problems with the EEprom not working due to device address mismatch. Szymon is using a DS3231 module whereas I used a DS1307 module. The DS3231 module is slightly different from the DS1307. Both of them have 3 sets of link pads that can be used to set the address of the AT24C32 EEprom. The DS1307 module comes from the supplier with all 3 links in place, which gives the I2C address for the EEprom of 0x50. The DS3231 module comes from the supplier with no links in place, which gives the I2C address for the EEprom of 0x57.Changing these links allows the I2C address to be set to any value from 0x50 to 0x57 by joining different combinations of the link pads, which can give 8 different combinations to the AT24C32 EEprom chip. To adapt to the DS3231 module default value of 0x...

    see more »

    SzymonW7 has had problems with the EEprom not working due to device address mismatch. Szymon is using a DS3231 module whereas I used a DS1307 module. The DS3231 module is slightly different from the DS1307. Both of them have 3 sets of link pads that can be used to set the address of the AT24C32 EEprom. The DS1307 module comes from the supplier with all 3 links in place, which gives the I2C address for the EEprom of 0x50. The DS3231 module comes from the supplier with no links in place, which gives the I2C address for the EEprom of 0x57.Changing these links allows the I2C address to be set to any value from 0x50 to 0x57 by joining different combinations of the link pads, which can give 8 different combinations to the AT24C32 EEprom chip. To adapt to the DS3231 module default value of 0x57, the software has to be changed slightly from the original code. Once Szymon has confirmed that the changes work, I will post the updated code. Keith

    View Instructable »
  • farmerkeith made the instructable DIY Logging Thermometer4 months ago
    DIY Logging Thermometer

    Hi SzymonW7, here is a new version of the software, v3.01, with some of the problems fixed, or at least responded to. I think there is a bit more to do to make it more robust in the face of errors. Keith

    View Instructable »
  • farmerkeith commented on farmerkeith's instructable DIY Logging Thermometer4 months ago
    DIY Logging Thermometer

    SzymonW7, another thing to do, if your EEprom is responding with the correct address.In the logging thermometer v3 software, comment out the following lines (which are all Serial.Print statements that put a lot of lines to the serial monitor that obscure what is going on with the EEprom and SD card:comment out lines 177, 178, 179, 301, 302, 303, 304, 342, 346, 363-369also remove comment-out from line 433. With these changes, the Serial monitor just reports SD card and EEprom activity, which makes it feasible to see what is going on. Then you could post an extract from the serial monitor for me to check. Regards,Keith

    Hi SzymonW7, I have been looking at this on my own hardware, and have been experiencing similar problems (but not identical I think). It turns out that in my hardware the EEprom is not responding. Perhaps you should check yours. Just run the I2C address scanner that came with the project. I2C_Scanner.ino. If the EEprom is working you should see 2 addresses, )x68 for the RTC and 0x50 for the EEprom. It makes me realise that a test tool for the EEprom is needed, and also the response of the logging thermometer software to EEprom failure could be improved. I will look into those things a bit more. In the meantime can you use I2C_Scanner.ino and let me know what you see?Thanks,Keith

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 4 months ago
    Solar Powered WiFi Weather Station

    Hi Rengatharu, Can you post a more complete version of the output, going from the time compilation is finished to the end?Have you tried uploading your sketch multiple times and it fails every time?What are the settings you are using in the Tools menu?I hope we can help you. Keith

    View Instructable »
  • farmerkeith commented on farmerkeith's instructable DIY Logging Thermometer4 months ago
    DIY Logging Thermometer

    Hi SzymonW7, I am thinking about what might be causing this. Is the hardware you are using identical to what I listed in the project? And are there any changes you have made to the software? If you can give me these details, I will get out my hardware and look so see what can be done to find the source of this problem. I will be happy to work with you until we find this problem.Regards, Keith

    Hi Szymon, There are 3 versions of my software for this project, the latest version is V3 and is in the companion project "DIY Logging Thermometer with 2 sensors". Can I suggest you try this software, unchanged, with your hardware and let me know the result? I think the first thing is to get the logging working without the DHT11. From memory, the V3 software will work with either 1 or 2 temperature sensors, so it should be OK with your hardware. If it still does not work for you, can I suggest you post an extract from the serial monitor with the offending events in it, so I can look at what is going on, please?Good luck! Keith

    View Instructable »
  • ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

    Hi PhilC99, I have not compiled this myself so I am not sure about the answer. The I2C library I am using uses the "POSITIVE" language and compiles without any problems. Are you using the New Liquid Crystal library by fmalpartida that I reference above? You also have the option of deleting the last two parameters in this setup line. That is, delete the 3, POSITIVE so it becomes just LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);It may also work with the backlight pin parameter included but without the "POSITIVE". "POSITIVE" seems to be the default setting in the library, so it may not be necessary anyway.Good luck. Keith

    View Instructable »
  • farmerkeith commented on deba168's instructable Solar Powered WiFi Weather Station 4 months ago
    Solar Powered WiFi Weather Station

    brosvv1, I have in the past, and commonly still do, experience failures of this type. It seems to be random, and if you repeat the upload it usually succeeds on the 2nd or 3rd try. Maybe you need to change the hardware or maybe de-power and re-power it, but in my experience usually just a simple retry works.

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi WeslleyJ,Thanks for quick response. When you have multiple panels I think it often makes good sense to have separate charge controllers for each panel independently, since they may have different conditions - shadowing or orientation, etc. My normal email is keith.hungerford@gmail.com if you want to use that. Keith

    Good morning WeslleyJ. It is Christmas morning here and very quiet at the moment. I hope you will have a joyous and relaxing Christmas. As for the solar charger project or projects, this is quite a challenge, especially for very high current levels. I have been working on this subject for some time, and I believe I am making progress towards a usable DIY design. I have limited the scope of my design work to 12 Volt lead acid batteries and "grid connect" type solar panels - that is solar panels with 60 cells in series that produce about 30 volts at their maximum power point. The largest panels available today are about 250 Watts when in full sun, which translates to about 20 amps into a 12 Volt battery. Therefore my design work has focussed on solar chargers for these voltages ...

    see more »

    Good morning WeslleyJ. It is Christmas morning here and very quiet at the moment. I hope you will have a joyous and relaxing Christmas. As for the solar charger project or projects, this is quite a challenge, especially for very high current levels. I have been working on this subject for some time, and I believe I am making progress towards a usable DIY design. I have limited the scope of my design work to 12 Volt lead acid batteries and "grid connect" type solar panels - that is solar panels with 60 cells in series that produce about 30 volts at their maximum power point. The largest panels available today are about 250 Watts when in full sun, which translates to about 20 amps into a 12 Volt battery. Therefore my design work has focussed on solar chargers for these voltages and up to 20 amps. Because the 20 Amp design has a lot of challenges, I am working on smaller designs also (which may become part of the final version) for 5, 7 and 10 amps. I am always open to assistance or suggestions. Noting your original question about 60 Amps, and then you mention 30 and 40 (I assume you mean 30 and 40 Amps, not Amp Hours) I am interested in your reasoning for using those values. Also your thoughts on my explanation above.Wishing you a good Chrismas again. Keith.

    View Instructable »
  • farmerkeith commented on farmerkeith's instructable Small Current Circuit Breaker5 months ago
    Small Current Circuit Breaker

    Good morning Col68. What a nice Christmas present, to get a greeting from you. it is Christmas day morning here, very quiet for us at the moment. We will be having a family get together later in the day and expect a day of quiet joy. I hope you have the same. Keith

    View Instructable »
  • ARDUINO MPPT SOLAR CHARGE CONTROLLER (Version-3.0)

    Hi WeslleyJ. If you want to achieve a solar charger for 60 Amps you will need not only different components but a different design. If you want to post more details of what you are trying to achieve, I may be able to give you some suggestions.

    View Instructable »
  • More Activities