mbrossett's Content - Netduino Forums
   
Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.

mbrossett's Content

There have been 46 items by mbrossett (Search limited from 29-March 23)


By content type

See this member's


Sort by                Order  

#57485 Help on I2C

Posted by mbrossett on 11 April 2014 - 05:34 PM in Netduino 2 (and Netduino 1)

Looking at the Netduino schematics I think it should more than capable of providing the LCD power without a large voltage drop...that being said let's figure out what is causing your 0.4V voltage drop and then we should be able to fix it. Please measure the following voltages...

1) VIN_PROTECTED (U1 pin 3 on Netduino)
2) +5.0V (U1 pin 4 on Netduino)
3) +5V_HEADER (at the connector on Netduino)
4) VDD (at the LCD input connector)
5) SDA/SCL (idle voltage)

Make these measurements with your 1500mA power supply connected to the Netduino and the LCD power, ground, SDA, and SCL pins connected to the Netduino connector.



#57491 Help on I2C

Posted by mbrossett on 12 April 2014 - 04:35 AM in Netduino 2 (and Netduino 1)

This is strange. Out of curiosity is the USB cable disconnected while taking these measurements?

So what we need to measure is the (1) input to the 5V regulator (should be about 8.7V), (2) the output of the 5V regulator (should be 5V when not powered by USB), (3) the voltage on the output side of the MOSFET load switch for the 5V header (should be around 4.95V), and (5) the voltage at the LCD (should be around 4.9V or more if you have proper cabling). When making these measurements your reference should be the power supply input negative terminal at the input barrel connector.

I'm surprised that the voltage output of the 5V regulator is so low.



#57467 Help on I2C

Posted by mbrossett on 11 April 2014 - 04:08 AM in Netduino 2 (and Netduino 1)

Are you making any progress Frank?




#57442 Help on I2C

Posted by mbrossett on 08 April 2014 - 11:54 PM in Netduino 2 (and Netduino 1)

Yeah, the voltage may still be too low. You should power it up from its own supply. Also make sure you are checking the return value of the I2C execute commands...that will tell you if the LCD is acknowledging the commands.



#57434 Help on I2C

Posted by mbrossett on 08 April 2014 - 02:08 PM in Netduino 2 (and Netduino 1)

Also if you do not have the right sized barrel on the power supply, you could wire it up to VIN and GND pins of the Netduino connector. Make sure the voltage of the supply is between 7.5VDC and 9VDC, though.




#57510 Help on I2C

Posted by mbrossett on 12 April 2014 - 09:44 PM in Netduino 2 (and Netduino 1)

I live in the US. I think you will learn more by me walking you through the steps of troubleshooting the hardware. Even if you are only interested in software. A software person with good hardware skills is very desirable.

 

Anyway, let me do some testing on my Netduino Plus 2 tomorrow and I will get back to you with some things to try.




#57545 Help on I2C

Posted by mbrossett on 14 April 2014 - 02:07 AM in Netduino 2 (and Netduino 1)

Frank,I measured the 5V railed and 5V header on my Netduino Plus 2 this evening running from a 9V, 1A power supply. The outputs were both right at 5V (with no load on the 5V header). I am putting something together for you to help your test and troubleshoot your hardware. I will send it to you tomorrow when I finish it up.

when i only connect the powersupply and nothing else the voltage on the 5V DC is 4.81 VDC ?
on both my Netduino's ? So what could be wrong then ?


When you say nothing else connected, does that mean the LCD is disconnected?



#57640 Help on I2C

Posted by mbrossett on 18 April 2014 - 08:57 PM in Netduino 2 (and Netduino 1)

No I don't think you need to buy a new one...yet. I have been on travel but should be able to send you something this weekend to help you troubleshoot.



#57601 Help on I2C

Posted by mbrossett on 17 April 2014 - 01:00 AM in Netduino 2 (and Netduino 1)

Yes. You can disconnect all wires from the 3 pin connector on the left.




#57584 Help on I2C

Posted by mbrossett on 15 April 2014 - 12:15 PM in Netduino 2 (and Netduino 1)

Remove the RED wire connected to P1.1 of the display. You shouldn't have 5V tied to the RX pin. Actually since you aren't using the UART interface, you can leave P1 completely disconnected (VDD and VSS connections are already made on P2). After doing this remeasure the voltages and ensure you are getting the proper 5V to the display.




#57546 Help on I2C

Posted by mbrossett on 14 April 2014 - 02:13 AM in Netduino 2 (and Netduino 1)

Also if you could send some good pics of your setup that would help, too. And are you using a good DMM to make your measurements (I.e. Are you confident with its readings)?



#57433 Help on I2C

Posted by mbrossett on 08 April 2014 - 02:05 PM in Netduino 2 (and Netduino 1)

If you use an external power supply for the Netduino (such as the one below) you will only need to use USB for debugging as you have stated. The power supply should be connected to the barrel input jack. Be sure to ensure that the power supply has a positive center barrel (this is most common type).

 

http://www.mouser.co...bXAYafurk4XukHd




#57418 Help on I2C

Posted by mbrossett on 07 April 2014 - 09:51 PM in Netduino 2 (and Netduino 1)

I guess it just occurred to me that you are probably powering your Netduino from USB. That being said, if you have a power supply around (+7.5 to +9V DC, >500mA output) you could power your Netduino from that and may not need to wire up the LCD separate. If you have a power supply around that would be a quick test.




#57117 Help on I2C

Posted by mbrossett on 25 March 2014 - 08:32 PM in Netduino 2 (and Netduino 1)

Btw, there are pull-up resistors (10k) installed on the LCD so you shouldn't need them, but you may want to put a little stronger pull-ups on the bus (4.7k, 3.3k, or 2.2k) just in case.




#57124 Help on I2C

Posted by mbrossett on 25 March 2014 - 11:56 PM in Netduino 2 (and Netduino 1)

As promised here is your driver and test code for the Newhaven Display I2C serial displays. Enjoy and keep us posted on the progress.

using System;
using System.Text;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

namespace NewhavenDisplay
{
    // For use with newhaven I2C displays
    // I2C protocol:
    // To enter the I2C mode, place a jumper on R1.  
    // SDA and SDK have pull?up resistors (10K Ohm) on R7 and R8.
    // The default I2C address is 80 (50 hex).  The I2C address can be changed to any 8?bit value by command function, with
    // the exception that the LSB (least significant bit) must always be ‘0’.  Once the I2C address has been changed, it will be
    // saved in the system memory, and it will revert back to the default address if either RS232 or SPI protocol is selected.
    // The I2C interface is capable of receiving data at up to 100KHz?clock rate.
    // See http://www.newhavendisplay.com/specs/NHD-0216K3Z-FL-GBW.pdf

    public class SerialLCD
    {
        private static I2CDevice.Configuration _config = new I2CDevice.Configuration(0x50 >> 1, 100); 

        public SerialLCD()
        {
        }

        public void Write(I2CDevice device, string sText)
        {
            device.Config = _config;
            var xActions = new I2CDevice.I2CTransaction[1];
            byte[] buf = Encoding.UTF8.GetBytes(sText);                 // Convert the string to array
            xActions[0] = I2CDevice.CreateWriteTransaction(buf);
            device.Execute(xActions, 1000);
        }

        public void DisplayOn(I2CDevice device)
        {
            device.Config = _config;
            var xActions = new I2CDevice.I2CTransaction[1];
            xActions[0] = I2CDevice.CreateWriteTransaction(new byte[] { 0xFE, 0x41 });
            device.Execute(xActions, 1000);
        }

        public void DisplayOff(I2CDevice device)
        {
            device.Config = _config;
            var xActions = new I2CDevice.I2CTransaction[1];
            xActions[0] = I2CDevice.CreateWriteTransaction(new byte[] { 0xFE, 0x42 });
            device.Execute(xActions, 1000);
        }

        public void SetCursor(I2CDevice device, byte Position)
        {   // 0x00 = line 1 column 1
            // 0x40 = line 2 column 1
            device.Config = _config;
            var xActions = new I2CDevice.I2CTransaction[1];
            xActions[0] = I2CDevice.CreateWriteTransaction(new byte[] { 0xFE, 0x45, Position });
            device.Execute(xActions, 1000);
        }

        public void Clear(I2CDevice device)
        {
            device.Config = _config;
            var xActions = new I2CDevice.I2CTransaction[1];
            xActions[0] = I2CDevice.CreateWriteTransaction(new byte[] { 0xFE, 0x51 });
            device.Execute(xActions, 1000);
        }

        public void SetContrast(I2CDevice device, byte ContrastLevel)
        {   // Value between 0 and 50, default is 40
            device.Config = _config;
            var xActions = new I2CDevice.I2CTransaction[1];
            xActions[0] = I2CDevice.CreateWriteTransaction(new byte[] { 0xFE, 0x52, ContrastLevel });
            device.Execute(xActions, 1000);
        }

        public void SetBrightness(I2CDevice device, byte BrightnessLevel)
        {   // Value between 1 to 8 
            device.Config = _config;
            var xActions = new I2CDevice.I2CTransaction[1];
            xActions[0] = I2CDevice.CreateWriteTransaction(new byte[] { 0xFE, 0x53, BrightnessLevel });
            device.Execute(xActions, 1000);
        }

        public void Firmware(I2CDevice device)
        {
            device.Config = _config;
            var xActions = new I2CDevice.I2CTransaction[1];
            xActions[0] = I2CDevice.CreateWriteTransaction(new byte[] { 0xFE, 0x70 });
            device.Execute(xActions, 1000);
        }

    }
}
using System;
using System.Threading;

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

using NewhavenDisplay;

namespace Serial_Display_Test
{
    public class Program
    {
        public static void Main()
        {
            // Create an I2C device with no device configuration
            I2CDevice i2cDevice = new I2CDevice(null);

            SerialLCD display = new SerialLCD();

            display.DisplayOn(i2cDevice);

            // Write to display
            display.Clear(i2cDevice);
            display.SetCursor(i2cDevice, 0x00);
            display.Write(i2cDevice, "Hello");

            // Wait indefinitely
            Thread.Sleep(Timeout.Infinite);
        }
    }
}



#57116 Help on I2C

Posted by mbrossett on 25 March 2014 - 08:29 PM in Netduino 2 (and Netduino 1)

These are 5V displays, too. Therefore, you will need 5V pull-ups on the I2C lines. When you get the display you will need to solder a 0 Ohm resistor or something (piece of wire or bridge it with solder like I do) across R1, see page 4 of the datasheet...

 

http://www.newhavend...Z-FL-GBW-V3.pdf

 

And yes I will post some code tonight for this display. I have a driver for it on my PC at home. Will post it tonight.




#57101 Help on I2C

Posted by mbrossett on 25 March 2014 - 02:52 PM in Netduino 2 (and Netduino 1)

Ok, I looked at that display for a bit and it uses a parallel type display with a I2C gpio expander. Also, it is a 5V display so you would need to ensure that you are powering it from 5V and that the I2C pull-ups are to 5V. If you are new to METMF and Netduino I would suggest going with a true I2C serial display such as one of these...

 

http://www.newhavend...lays-c-253.html

 

Although the Arduino library can be ported to NETMF, you will be better off going with one of the displays I have pointed you to. With NETMF not being a real-time environment you might run into issues with the timing on this display anyway, especially in a multi-threaded application, but I'm not for sure. Another option is to use an Arduino instead of a Netduino. Sorry I couldn't be more helpful, maybe someone with a little more free time and ambition will come by and port it over for you.




#57097 Help on I2C

Posted by mbrossett on 25 March 2014 - 01:51 PM in Netduino 2 (and Netduino 1)

I cannot find that display. Can you send me a link to the website you bought it from?




#57273 Help on I2C

Posted by mbrossett on 01 April 2014 - 05:34 PM in Netduino 2 (and Netduino 1)

Yes, pin 1 of each connector is marked with a square solder pad, as opposed to the round pad.




#57408 Help on I2C

Posted by mbrossett on 07 April 2014 - 08:48 PM in Netduino 2 (and Netduino 1)

Here's a few things to check...

 

1) Is there a jumper / short across R1? (R2 should be left open)

2) Measure the voltages of SDA and SCL while the bus is idle...are they pulled up to 5V?

3) Try adding a delay at the beginning of your code to ensure LCD is up and configure ("Thread.Sleep(1000);")

4) Step through the code using the debugger and ensure the "device.Execute(...);" functions are returning a non-zero value. You will need to change the code slightly... "int ret = device.Execute(...);"

5) Try setting the brightness and contrast..."display.SetBrightness(0x07);" ... "display.SetContrast(0x30);"

 

The Netduino should be capable of providing the 250mA to the display, but you can verify this by measuring the voltage at the display when it is plugged in. If the voltage is above 4.7V it is fine.




#57417 Help on I2C

Posted by mbrossett on 07 April 2014 - 09:42 PM in Netduino 2 (and Netduino 1)

Yes...you will have the power supply V+/V- wired up to VDD and VSS of the LCD, and the Netduino will need have SCL, SDA, and GND wired to the LCD.




#57415 Help on I2C

Posted by mbrossett on 07 April 2014 - 09:29 PM in Netduino 2 (and Netduino 1)

So to make sure I understand you correctly, when you measure the 5V output of the Netduino without the LCD connected, the voltage is 4.68V...and with the LCD connected it is 4.23V?

 

If this is true, you must supply the LCD with its own 5V power supply. Do you have an old USB cell phone charge? If so, cut the connector off and wire it up to the LCD for 5V supply.




#57413 Help on I2C

Posted by mbrossett on 07 April 2014 - 09:24 PM in Netduino 2 (and Netduino 1)

For the [latest versions of] Netduino 2 and 2 Plus you should connect the I2C lines to "SC" and "SD" as you are doing. What is the voltage to the LCD?




#57410 Help on I2C

Posted by mbrossett on 07 April 2014 - 09:15 PM in Netduino 2 (and Netduino 1)

Since the "device.Execute(...)" is returning zero, that tells you the LCD is not acknowledging the I2C commands. Double check that the SCL and SDA lines aren't crossed. Also verify that the power to the LCD from the Netduino is greater than 4.7V. If it is not you will need to power the LCD from its own supply/regulator.




#57066 Help on I2C

Posted by mbrossett on 25 March 2014 - 01:45 AM in Netduino 2 (and Netduino 1)

What is the part number of the LCD you are using. This may help us help you. If it is a Newhaven Display serial LCD then you need to install an on-board jumper to configure it in I2C mode. Your fix probably isn't that easy but just thought I'd throw that out there. Also, if you give me the part number I could write you a simple piece of test code.




home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.