ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

728,064

2,088

824

Introduction: ARDUINO SOLAR CHARGE CONTROLLER ( Version 2.0)

About: I am a DIY hobbyist by passion and Power Engineer by profession. Most of my works are related to Solar Energy and Arduino. Apart from Electronics I love 3D printing, Woodworking and to make crafts from used …

[ Play Video ]

One year ago, I began building my own solar system to provide power for my village house. Initially, I made a LM317 based charge controller and an Energy meter for monitoring the system. Finally, I made a PWM charge controller. In April-2014 I posted my PWM solar charge controller designs on the web, it became very popular. Lots of people all over the world have built their own. So many students have made it for their college project by taking help from me. I got several emails every day from people with questions regarding hardware and software modification for different rated solar panel and battery. A very large percentage of the emails are regarding the modification of the charge controller for a 12Volt solar system.

You can find all of my projects on https://www.opengreenenergy.com/

Update on 25.03.2020:

I have upgraded this project and made a custom PCB for it. You can see the full project in the below link:

ARDUINO PWM SOLAR CHARGE CONTROLLER ( V 2.02)

To solve this problem I made this new version charge controller so that anyone can use it without changing the hardware and software. I combine both the energy meter and charge controller in this design.

Specification of version-2 charge controller :


1.Charge controller as well as energy meter

2. Automatic Battery Voltage Selection (6V/12V)

3.PWM charging algorithm with auto charge setpoint according to the battery voltage

4.LED indication for the state of charge and load status

5. 20x4 character LCD display for displaying voltages, current, power, energy, and temperature.

6.Lightning protection

7.Reverse current flow protection

8.Short Circuit and Overload protection

9. Temperature Compensation for Charging


Electrical specifications :

1.Rated Voltage= 6v /12V

2.Maximum current = 10A

3.Maximum load current =10A

4.Open Circuit Voltage = 8-11V for 6V system /15 -25V for 12V system

Step 1: Parts and Tools Required :

Parts:

1.Arduino Nano (Amazon / Banggood)

2.P-MOSFET ( Amazon / IRF 9540 x2 )

3.Power diode ( Amazon / MBR 2045 for 10A and IN5402 for 2A)

4.Buck Converter ( Amazon / Banggood)

5.Temperature Sensor( Amazon / Banggood)

6.Current Sensor ( Amazon / Banggood)

7.TVS diode ( Amazon / P6KE36CA)

8.Transistors ( 2N3904 or Banggood )

9.Resistors ( 100k x 2, 20k x 2,10k x 2,1k x 2, 330ohm x 5) : Banggood

10.Ceramic Capacitors (0.1uF x 2) : Banggood

11.Electrolytic Capacitors ( 100uF and 10uF): Banggood

12. 20x4 I2C LCD ( Amazon / Banggood)

13.RGB LED ( Amazon / Banggood)

14.Bi Color LED ( Amazon )

15.Jumper Wires/Wires(Banggood)

16.Header Pins ( Amazon / Banggood )

17.Heat Sink ( Amazon / Banggood)

18.Fuse Holder and fuses ( Amazon / eBay)

19.Push Button ( Amazon / Banggood )

20.Perforated Board (Amazon / Banggood)

21.Project Enclosure ( Banggood )

22.Screw terminals ( 3x 2pin and 1x6 pin) : Banggood

23.Nuts/Screws/Bolts ( Banggood )

24.Plastic Base

Tools :

1.Soldering Iron ( Amazon )

2.Wire Cutter and Stripper ( Amazon )

3.Screw Driver ( Amazon )

4.Cordless Drill ( Amazon )

5.Dremel ( Amazon )

6.Glue Gun ( Amazon )

7.Hobby Knife ( Amazon )


Step 2: How the Charge Controller Works :

The heart of the charge controller is Arduino nano board. The Arduino MCU senses the solar panel and battery voltages. According to these voltages, it decides how to charge the battery and control the load.

The amount of charging current is determined by the difference between battery voltage and charge setpoint voltages. The controller uses two stages charging algorithm. According to the charging algorithm, it gives a fixed frequency PWM signal to the solar panel side p-MOSFET. The frequency of the PWM signal is 490.20Hz(default frequency for pin-3). The duty cycle 0-100% is adjusted by the error signal.

The controller gives a HIGH or LOW command to the load side p-MOSFET according to the dusk/dawn and battery voltage.

The full schematic is attached below.

You can read my latest article on selecting the right charge controller for your Solar PV System

Step 3: Main Functions of Solar Charge Controller:

The charge controller is designed by taking care of the following points.

1. Prevent Battery Overcharge: To limit the energy supplied to the battery by the solar panel when the battery becomes fully charged. This is implemented in charge_cycle() of my code.

2. Prevent Battery Over discharge: To disconnect the battery from electrical loads when the battery reaches a low state of charge. This is implemented in load_control() of my code.

3. Provide Load Control Functions: To automatically connect and disconnect an electrical load at a specified time. The load will ON when the sunset and OFF when sunrise. This is implemented in load_control() of my code.

4.Monitoring Power and Energy: To monitor the load power and energy and display it.

5. Protect from abnormal Condition: To protect the circuit from the different abnormal situation like lightning, overvoltage, overcurrent and short circuit, etc.

6.Indicating and Displaying: To indicate and display the various parameters

7.Serial Communication: To print various parameters in the serial monitor

Step 4: Sensing Voltages,Current and Temperature :

1.Voltage Sensor:

The voltage sensors are used to sense the voltage of solar panel and battery. It is implemented by using two voltage divider circuits. It consists of two resistors R1=100k and R2=20k for sensing the solar panel voltage and similarly R3=100k and R4=20k for battery voltage. The output from the R1and R2 is connected to Arduino analog pin A0 and output from the R3 and R4 is connected to Arduino analog pin A1.

2.Current Sensor :

The current sensor is used for measuring the load current. later this current is used to calculate the load power and energy. I used a hall effect current sensor (ACS712-20A)

3.Temperature Sensor :

The temperature sensor is used to sense room temperature. I used the LM35 temperature sensor which is rated for −55°C to +150°C Range.

Why Temperature monitoring is Required?

The battery’s chemical reactions change with temperature. As the battery gets warmer, the gassing increases. As the battery gets colder, it becomes more resistant to charging. Depending on how much the battery temperature varies, it is important to adjust the charging for temperature changes. So it is important to adjust charging to account for the temperature effects. The temperature sensor will measure the battery temperature, and the Solar Charge Controller uses this input to adjust the charge set point as required. The compensation value is - 5mv /degC/cell for lead-acid type batteries. (–30mV/ºC for 12V and 15mV/ºC for 6V battery).The negative sign of temperature compensation indicates an increase in temperature requires a reduction in charge setpoint.

For more details on Understanding and Optimizing Battery Temperature Compensation

Step 5: Sensors Callibration

Voltage Sensors :

5V = ADC count 1024

1 ADC count = (5/1024)Volt= 0.0048828Volt

Vout=Vin*R2/(R1+R2)

Vin = Vout*(R1+R2)/R2 R1=100 and R2=20

Vin= ADC count*0.00488*(120/20) Volt

Current Sensor:

As per seller information for ACS 712 current sensor

Sensitivity is =100mV / A =0.100V/A

No test current through the output voltage is VCC / 2= 2.5

ADC count= 1024/5*Vin and Vin=2.5+0.100*I (where I=current)

ADC count= 204.8(2.5+0.1*I) =512+20.48*I

=> 20.48*I = (ADC count-512)

=> I =(ADC count/20.48)- 512/20.48

Current (I) =0.04882*ADC -25

More details on ACS712

Temperature Sensor :

As per data sheet of LM35

Sensitivity=10 mV/°C

Temp in deg C =(5/1024)*ADC count*100

Note : The sensors are calibrated by assuming the arduino Vcc= 5V reference.But in practical it is not 5V always.So there may be chance of getting wrong value from the actual value.It can be solved by following way.

Measure the voltage between Arduino 5V and GND by a multimeter. Use this voltage instead of 5V for Vcc in your code. Hit and try to edit this value until it matches the actual value.

Example: I got 4.47V instead of 5V.So the change should be 4.47/1024=0.0043652 instead of 0.0048828.

Step 6: Charging Algorithm

1.Bulk: At this mode, a preset maximum constant amount of current (amps) is fed into the battery as no PWM is present. As the battery is being charged up, the voltage of the battery increases gradually

2. Absorption: When the battery reaches the bulk charge set voltage, the PWM begins to hold the voltage constant. This is to avoid over-heating and over-gassing the battery. The current will taper down to safe levels as the battery becomes more fully charged.
3. Float: When the battery is fully recharged, the charging voltage is reduced to prevent further heating or gassing of the battery

This is the ideal charging procedure.

The present charge cycle block of code is not implemented 3 stages charging. I use an easier logic in 2 stages. It works well.

I am trying the following logic for implementing the 3 stages charging.

Future Planning for Charging Cycle :

The bulk charge begins when the solar panel voltage is larger than the battery voltage. When the battery voltage reaches 14.4V, absorption charge will be entered. The charging current will be regulated by the PWM signal to maintain the battery voltage at 14.4V for one hour. Float charge will then enter after one hour. The float stage generates a trickle charge to keep the battery voltage at 13.6V. When the battery voltage falls below 13.6V for 10mins, the charging cycle will be repeated.

I request community members to help me for writing the piece of code to implement the above logic.

Step 7: Load Control

To automatically connect and disconnect the load by monitoring dusk/dawn and battery voltage, load control is used.

The primary purpose of load control is to disconnect the load from the battery to protect it from deep discharging. Deep discharging could damage the battery.

The DC load terminal is designed for low power DC load such as street light.

The PV panel itself is used as the light sensor.

Assuming solar panel voltage >5V means dawn and when < 5V dusk.

ON Condition:

In the evening, when the PV voltage level falls below 5V and the battery voltage is higher than LVD setting, the controller will turn on the load and the load green led will glow.

OFF Condition:

The load will cut off in the following two conditions.

1. In the morning when the PV voltage is larger than 5v,

2.When the battery voltage is lower than the LVD setting

The load red led ON indicates that load is cut off.

LVD is referred to as Low Voltage Disconnect

Step 8: Power and Energy

Power :

Power is the product of voltage (volt) and current (Amp)

P=VxI

Unit of power is Watt or KW

Energy:

Energy is the product of power (watt) and time (Hour)

E= Pxt

Unit of Energy is Watt Hour or Kilowatt Hour (kWh)

To monitor the load power and energy above logic is implemented in software and the parameters are displayed in a 20x4 char LCD.

Step 9: Protection

1.Reverse polarity protection for solar panel

2. Overcharge protection

3. Deep discharge protection

4. Short circuit and Overload protection

5.Reverse current protection at night

6.Overvoltage protection at solar panel input

For reverse polarity and reverse current flow protection I used a power diode (MBR2045). Power diode is used to handle a large amount of current. In my earlier design, I used a normal diode(IN4007).

Overcharge and Deep discharge protection are implemented by the software.

Overcurrent and overload protection is implemented by using two fuses ( one at the solar panel side and other at load side).

Temporary overvoltages occur in power systems for a variety of reasons, but lightning causes the most severe overvoltages. This is particularly true with PV systems due to the exposed locations and system connecting cables. In this new design, I used a 600-watt bidirectional TVS diode (P6KE36CA ) to suppress the lightning and overvoltage at the PV terminals. In my earlier design, I used a Zener diode. You can also use a similar TVS diode on the load side.

For selection guide of TVS diode click here

For choosing a right part no for TVS diode click here

Step 10: LED Indication

Battery State Of Charge (SOC) LED:

One important parameter that defines the energy content of the battery is the State of Charge (SOC). This parameter indicates how much charge is available in the battery

An RGB LED is used to indicate the battery state of charge. For connection refer to the above schematic

Battery LED ------------>Battery Status

RED --------------------> Voltage is LOW

GREEN --------------------> Voltage is Healthy

BLUE --------------------> Fully Charged

Load LED :

A bi-color (red/green) led is used for load status indication. Refer the above schematic for connection.

Load LED --------------------->Load Status

GREEN -------------------------> Connected (ON)

RED ---------------------------> Disconnected (OFF)

I include a third led for indicating the solar panel status.

Step 11: LCD Display

To display the voltage, current, power, energy and temperature a 20x4 I2C LCD is used. If you do not want to display the parameter then disable the lcd_display() from the void loop() function. After disable you have indication led to monitoring the battery and load status.

You can refer this instructable for I2C LCD

Download the LiquidCrystal _I2C library from here

Note: In code, you have to change the I2C module address. You can use the address scanner code given in the link.

Step 12: Bread Board Testing

It is always a good idea to test your circuit on a breadboard before soldering it together.

After connecting everything upload the code. The code is attached below.

The entire software is broken into the small functional block for flexibility. Suppose the user is not interested to use an LCD display and happy with the led indication. Then just disable the lcd_display() from the void loop(). That's all.

Similarly, according to the user requirement, he can enable and disable the various functionality.

Download the code from my GitHub Account

ARDUINO-SOLAR-CHARGE-CONTROLLER-V-2

Step 13: Power Supply and Terminals :

Terminals :

Add 3 screw terminals for solar input, battery and load terminal connections. Then solder it. I used the middle screw terminal for battery connection, left to it is for solar panel and the right one is for the load.

Power Supply:

In my previous version, the power supply for Arduino was provided by a 9V battery. In this version, the power is taken from the charging battery itself. The battery voltage is step down to 5V by a voltage regulator(LM7805).

Solder LM7805 voltage regulator near to the battery terminal. Then solder the electrolytic capacitors as per schematic. At this stage connect the battery to the screw terminal and check the voltage between pin 2 and 3 of LM7805. It should be near to 5V.

When I used a 6V battery the LM7805 works perfectly. But for the 12V battery, it heated up after some time. So I request to use a heat sink for it.

Efficient Power supply :

After a few testing, I found that the voltage regulator LM7805 is not the best way to power the Arduino as it wastes lots of power in the form of heat. So I decide to change it by a DC-DC buck converter which is highly efficient. If you plan to make this controller, I advise using a buck converter rather than LM7805 voltage regulator.

Buck Converter Connection:

IN+ -------> BAT+

IN- --------> BAT-

OUT+ -----> 5V

OUT- -----> GND

Refer the above pictures.

You can buy it from eBay

Step 14: Mount the Arduino :

Cut 2 female header strips of 15 pins each. Place the nano board for reference. Insert the two headers according to the nano pin. Check it whether the nano board is perfect to fit into it. Then solder it back side.

Insert two rows of the male header on both sides of the Nano board for external connections. Then join the solder points between Arduino pin and header pins. See the above picture.

Initially, I forgot to add Vcc and GND headers. At this stage, you can put headers with 4 to 5 pins for Vcc and GND.

As you can see I connected the voltage regulator 5V and GND to the nano 5V and GND by red and black wire. Later I removed it and soldered at the back side for a better look of the board.

Step 15: Solder the Components

Before soldering the components make holes at corners for mounting.

Solder all the components as per schematic.

Apply heat sink to two MOSFETs as well as power diode.

Note: The power diode MBR2045 have two anodes and one cathode. So short the two anodes.

I used thick wire for power lines and ground and thin wires for signal.signal. Thick wire is mandatory as the controller is designed for higher current.

Step 16: Connect the Current Sensor

After connecting all the components solder two thick wire to the load MOSFET's drain and upper terminal of load side fuse holder. Then connect these wires to the screw terminal provided in the current sensor( ACS 712).

Step 17: Make the Indication and Temperature Sensor Panel

I have shown two led in my schematic. But I added a third led(bi-color) for indicating the solar panel status in future.

Prepare small size perforated board as shown. Then make two holes (3.5mm) by drill on left and right( for mounting).

Insert the LEDs and solder it to the back side of the board.

Insert a 3 pins female header for the temperature sensor and then solder it.

Solder 10 pins right angle header for external connection.

Now connect the RGB led anode terminal to the temperature sensor Vcc(pin-1).

Solder the cathode terminals of two bi-color led.

Then join the solder points the LEDs terminal to the headers. You can paste a sticker with pin name for easy identifications.

Step 18: ​Connections for Charge Controller

Connect the Charge Controller to the Battery first, because this allows the Charge Controller to get calibrated to whether it is the 6V or 12V system. Connect the negative terminal first and then positive. Connect the solar panel(negative first and then positive) At last connect the load.

The charge controller load terminal is suitable for only the DC load.

How to run an AC Load?

If you want to run AC appliances then you must need an inverter. Connect the inverter directly to the battery. See the above picture.

Step 19: Final Testing :

After making the main board and indication board connect the header with jumper wires(female-female)

Refer to the schematic during this connection. Wrong connection may damage the circuits. So be care full in this stage.

Plug the USB cable to the Arduino and then upload the code. Remove the USB cable. If you want to see the serial monitor then keep it connected.

Fuse Rating: In demo, I have put a 5A fuse in the fuse holder. But in practical use, put a fuse with 120 to 125% of short circuit current.

Example :A 100W solar panel having Isc=6.32A needs a fuse 6.32x1.25 = 7.9 or 8A

How to test?

I used a buck-boost converter and black cloth to test the controller. The converter input terminals are connected to the battery and the output is connected to the charge controller battery terminal.

Battery status :

Rotate the converter potentiometer by a screwdriver to simulate different battery voltages. As the battery voltages change the corresponding led will turn off and turn on.

Note: During this process, Solar panel should be disconnected or covered with a black cloth or cardboard.

Dawn/Dusk: To simulate dawn and dusk using black cloth.

Night: Cover the solar panel entirely.

Day: Remove the cloth from the solar panel.

Transition: slow the remove or cover the cloth to adjust different solar panel voltages.

Load Control: According to the battery condition and dawn/dusk situation the load will turn on and off.

Temperature Compensation :

Hold the temperature sensor to increase the temperature and place any cold things like ice to decrease the temp. It will be immediately displayed on the LCD.

The compensated charge setpoint value can be seen on the serial monitor.

In the next step onward I will describe the making of enclosure for this charge controller.

Step 20: Mounting the Main Board:

Place the main board inside the enclosure. Mark the hole position by a pencil.

Then apply hot glue to the marking position.

Place the plastic base over the glue.

Then place the board over the base and screw the nuts.

Step 21: Make Space for LCD:

Mark the LCD size on the front cover of the enclosure.

Cut out the marked portion by using a Dremel or any other cutting tool. After cutting finish it by using a hobby knife.

Step 22: Drill Holes:

Drill holes for mounting the LCD,Led indication panel,Reset button and external terminals

Step 23: Mount Everything:

After making holes mount the panels, 6 pin screw terminal and reset button.

Step 24: Connect the External 6 Pin Terminal :

For connecting the solar panel, battery and load an external 6pin screw terminal is used.

Connect the external terminal to the corresponding terminal of the main board.

Step 25: Connect the LCD, Indicator Panel and Reset Button :

Connect the indicator panel and LCD to the main board as per the schematic. (Use female-female jumper wires)

One terminal of the reset button goes to RST of Arduino and other goes to GND.

After all connections. Close the front cover and screw it.

Step 26: Ideas and Planning

How to plot real-time graphs?

It is very interesting if you can plot the serial monitor parameters (like battery and solar voltages) on a graph on your laptop screen. It can be done very easily if you know a little bit on Processing.

To know more you can refer to Arduino and Processing ( Graph Example ).

How to save that data?

This can be done easily by using SD card but this includes more complexity and cost. To solve this I searched through the internet and found an easy solution. You can save data in Excel sheets.

For details, you can refer seeing-sensors-how-to-visualize-and-save-arduino-sensed-data

The above pictures downloaded from the web. I attached to understand what I want to do and what you can do.

Future Planning :

1. Remote data logging via Ethernet or WiFi.

2. More powerful charging algorithm and load control

3.Adding a USB charging point for smartphone/tablets

Hope you enjoy my Instructables.

Please suggest any improvements. Raise comments if any mistakes or errors.

Follow me for more updates and new interesting projects.

Thanks :)

Tech Contest

Runner Up in the
Tech Contest

Microcontroller Contest

Runner Up in the
Microcontroller Contest

Formlabs Contest

Participated in the
Formlabs Contest

16 People Made This Project!

Recommendations

  • The 1000th Contest

    The 1000th Contest
  • Battery Powered Contest

    Battery Powered Contest
  • Hand Tools Only Challenge

    Hand Tools Only Challenge

824 Discussions

0
atomic79greg
atomic79greg

Question 26 days ago

do I need a full-blown arduino for this or can I get away with a blue/black-pill STM32 ?
(don't really need the lcd display...also considering being much more old-school/analog:
http://mdpub.com/555Controller/index.html)

0
Roanne13
Roanne13

Question 3 months ago

Sir i would like to ask what app did you use to simulate this?
thank you very much

0
jishnuzeus
jishnuzeus

8 months ago

Can i use this for a 24v system. If not, what all are the modifications required in the design?

0
pisti870424
pisti870424

Reply 6 months ago

Igen de az ellenálásokat érdemes cserélni. Nekem 10k ohm és 1k ohm ellenálások vannak benne. Viszont a fentebb leírt ellenálás értékeket is módosítani kell

R1= 10000;
R2 = 1000;


ertek = analogRead(A0);
vki =(ertek * 5.00) / 1023.00;
voltage = vki / (R2/(R1+R2));


And 24 volt okay

0
janipani
janipani

7 months ago

plz help me anyone how to connect the LCD it is not working plz guyz

cin.png
0
pisti870424
pisti870424

Reply 6 months ago

Szia. Dobj egy mailt. Segítek a kijelző telepítésében.

0
opengreenenergy
opengreenenergy

Reply 7 months ago

The connection will be as follow:
LCD-> Arduino
VCC-> VCC
GND-> GND
SDA-> A4
SCL-> A5

0
merocle
merocle

6 months ago on Step 26

that's great project, thanks for sharing!
just one thing that I want to add is mqtt client for monitoring )

0
fonetainer
fonetainer

2 years ago

aim getting following error while uploading the code to Arduino nano

Arduino: 1.8.5 (Mac OS X), Board: "Arduino Nano, ATmega328P"

V2_Deba_168:91: error: 'POSITIVE' was not declared in this scope

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address // In my case 0x27

^

/Users/paaker/Documents/Arduino/V2_Deba_168/V2_Deba_168.ino: In function 'void setup()':

V2_Deba_168:106: error: no matching function for call to 'LiquidCrystal_I2C::begin(int, int)'

lcd.begin(20, 4); // initialize the lcd for 16 chars 2 lines, turn on backlight

^

/Users/paaker/Documents/Arduino/V2_Deba_168/V2_Deba_168.ino:106:18: note: candidate is:

In file included from /Users/paaker/Documents/Arduino/V2_Deba_168/V2_Deba_168.ino:8:0:

/Users/paaker/Documents/Arduino/libraries/Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.h:76:7: note: void LiquidCrystal_I2C::begin()

void begin();

^

/Users/paaker/Documents/Arduino/libraries/Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided

exit status 1

'POSITIVE' was not declared in this scope

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

Invalid library found in /Users/paaker/Documents/Arduino/libraries/LiquidCrystal_I2C: /Users/paaker/Documents/Arduino/libraries/LiquidCrystal_I2C

Invalid library found in /Users/paaker/Documents/Arduino/libraries/LiquidCrystal_I2C: /Users/paaker/Documents/Arduino/libraries/LiquidCrystal_I2C

This report would have more information with

"Show verbose output during compilation"

option enabled in File -> Preferences.

0
tgray1
tgray1

Reply 1 year ago

I also had a lot of trouble with the LCD using the original code. I removed all of Dutta's libraries but two:
'#include <Wire.h>
#include <LiquidCrystal_I2C.h>
I edited the I2C address as
LiquidCrystal_I2C lcd(0x27, 20, 4); // Set the LCD I2C address for 20 characters and 4 lines
I added the init command at the top of the lcd section in Setup:
lcd.init(); //turn on the display
These changes fixed all my lcd display issues.

0
janipani
janipani

Reply 7 months ago

how to connect the lcd to arduino or which pin should be added

CONTROLLER.png
0
f1l1pp0sk0palas
f1l1pp0sk0palas

Reply 1 year ago

tgray1 THANK YOU!!!!!!!!!!! YOUR COMMENT HELPED ME A LOT.

0
farmerkeith
farmerkeith

Reply 2 years ago

Hi fonetainer, You seem to have a lot of problems with this software upload.

Are you able to upload a simple sketch to your Arduino? eg the Blink example in the standard distribution.

Once that is OK, you need to check what library (if any) you have for the LCD. It should be LiquidCrystal_I2C.h although there are several different versions of this library and some work better than others. You may need to change versions if it will not work with the one you have. However first just getting the loading correct and post your new error messages would be a good step.

Keith

0
fonetainer
fonetainer

Reply 2 years ago

Hi Keith,

after very long fight I found some other codes has lcd address something different. I just copy it and past it. now code updated and I can see it on LCD.

aim still not connect the Arduino to Circuit and on the third row current it show minus values even watts also minus value.

0
mohammads272
mohammads272

Reply 1 year ago

hi fontainer,
i have this problem
please send the new code

0
fonetainer
fonetainer

Reply 2 years ago

Hi Keith,

yes some problem on software or code. I have try several other codes on same Arduino nano. its perfect working the lcd. even the Hello world code is work perfect.

in the original Debate 168 code has like this ,

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address // In my case 0x27

once I try to upload it always say ( POSITIVE was not declared on this scope)

Then I change it to

LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display

after change it I can upload the code to Arduino. app show Success: Done uploading.

but I can't see any difference on LCD. it still show Hello, World!

This is all done with Online Arduino editor.

if i try same code with my Desktop Arduino, aim getting following error,

Arduino: 1.8.5 (Mac OS X), Board: "Arduino Nano, ATmega328P"

/Users/paaker/Documents/Arduino/sketch_aug31c/sketch_aug31c.ino: In function 'void setup()':

sketch_aug31c:106: error: no matching function for call to 'LiquidCrystal_I2C::begin(int, int)'

lcd.begin(20,4); // initialize the lcd for 16 chars 2 lines, turn on backlight

^

/Users/paaker/Documents/Arduino/sketch_aug31c/sketch_aug31c.ino:106:15: note: candidate is:

In file included from /Users/paaker/Documents/Arduino/sketch_aug31c/sketch_aug31c.ino:8:0:

/Users/paaker/Documents/Arduino/libraries/LiquidCrystal-I2C/LiquidCrystal_I2C.h:76:7: note: void LiquidCrystal_I2C::begin()

void begin();

^

/Users/paaker/Documents/Arduino/libraries/LiquidCrystal-I2C/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided

exit status 1

no matching function for call to 'LiquidCrystal_I2C::begin(int, int)'

This report would have more information with

"Show verbose output during compilation"

option enabled in File -> Preferences.

Regards,

Descktop app.png
0
farmerkeith
farmerkeith

Reply 2 years ago

Hi fonetainer, I think the lcd library you are using has a problem. Maybe an error in the file download, or maybe a bad version. I suggest you delete the current one and reinstall it.

You can probably remove the "POSITIVE" from the function call without affecting how it works, but I think this is not your real problem, which is something to do with the library.

Keith

0
janipani
janipani

7 months ago

plz help me in connection of LCD i have print pcb of all circuits but i don't know how to connect LCD with arduino for displaying