在Arduino上调试16x2 LCD显示


9

我有一个16×2的标准LCD显示器(我相信这是日立HD44780兼容-见下文总结和说明书),使用4个数据引脚钩住一个Arduino乌诺,如所描述这里,虽然我已经添加并联2×220ohm电阻器(即,一个110欧姆电阻)接在第16针(背光地)上,并用静态电阻替换电位器以在Vo上产生4V电压。

简而言之,RW接地,RS,Enable和Data4-7连接到Arduino引脚,而Data 0-3悬空。

我还有其他东西(传感器,带有光电隔离SSR的晶体管和市电继电器,一些按钮)连接到Arduino的不同引脚。我使用的代码每秒将文本写入显示器多次,并且通常情况下,显示器可以正常工作。

但是,当继电器闭合时(大约需要10ma,并由一个由Arduino引脚之一控制的晶体管控制),有时LCD会出现乱码。通常会一直显示乱码,直到继电器下次关闭,但有时继电器断开时,或者在打开/关闭几圈后复位。乱码总是在继电器打开或关闭的同时开始和停止。

“乱码”的意思是,每次我写乱码之后,它都会变成乱码,而不是写英文字符,而是得到一串字符,这些字符通常在数据表中无法识别(尽管有些可以)。当我在LCD上写新文本时,这串乱码倾向于在屏幕上向左移动。

我有信心这不是Arduino本身引起的困惑,因为我同时将相同的文本写入串行监视器,并且不会出现乱码。

此后,我尝试将RW引脚连接到Arduino输出,并将Data0-3接地,但这没有帮助。我已经用9V电池或USB为整个设备供电,但无济于事。我已经更换了电池……没有变化。

似乎唯一可行的方法是没有将任何负载插入继电器,但这违背了目的:-)

我没有信号分析仪或比万用表,笔记本电脑和arduino还要复杂的任何东西……有人能帮我调试一下吗?

LCD摘要表:http//oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf

LCD规格:http : //oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf

乱码示例: 乱码


1
尝试在电源轨上添加至少1 uF的电容器,该电容器的一端连接至Vcc,另一端连接至GND。如果电容器是电解电容器,请小心电容器的方向:)
abdullah kahraman 2012年

1
这真的很奇怪。您不是在直接驱动那个大继电器,您购买的继电器盒实际上有一个很小的DIP SSR,它可以切换大继电器的电源,并且大继电器从AC线中流出。因此,继电器致动产生的反电动势实际上不应该进入电路。
康纳·沃尔夫

这闻起来像是接地/去耦问题。面包板上的电源导轨上有多少电容?
康纳·沃尔夫

另外,继电器箱与面包板电路的距离有多近?您能在继电器盒和电路的其余部分之间放几英尺的电线吗?那将消除任何磁耦合的可能性。
康纳·沃尔夫

感谢您的答复。您是正确的,继电器已与SSR和其他各种组件分离。我确实尝试了一个二极管,后来又在LCD附近的电源轨上的5V和GND之间尝试了一个220uF的电解电容。这些似乎都不起作用。我还没有尝试过两者。
理查德·罗素

Answers:


5

继电器两端是否有二极管?否则,关闭/打开时的感应尖峰可能会引起问题。

例如,当您停止流经继电器的电流时,它会试图保持电流流动,如果没有放电路径,则会产生较大的电压(本质上,它将一直上升直到找到路径)。
具体而言,公式为V = L(dI / dT)。这意味着电感器会通过在电感器两端产生与电流变化成比例的电压来抵抗通过它的电流变化

尝试在继电器上放置一个二极管,使其方向与正常电流相反。

编辑-检查产品页面,它似乎是在已添加外围设备的盒子中的“就绪”继电器,因此不太可能是上述情况。即使这样,我还是会尝试将二极管跨接至继电器的电源。
另外,请确保您的货源经过过滤,如评论中所述。在IC和LCD旁边放置至少1uF的几个电容器,并在> 100uF的电容上放置一个电容(均从电源到地)


查看数据表中的“继电器”。继电器的输入实际上正在驱动一个微小的SSR,它将实际功率切换到继电器本身。由于继电器组件的输入是SSR输入,因此我看不到二极管确实在做任何事情。
康纳·沃尔夫2012年

我看了一眼(以前找不到),我同意,这只是“无法伤害”的建议而没有更多信息。希望我们会尽快添加去耦功能的最新进展。
奥利·格拉泽

感谢您的回复。您是正确的,继电器已与SSR和其他各种组件分离。我确实尝试了二极管,后来又在LCD附近的电源轨上的5V和GND之间尝试了一个220uF电解电容。我还没有尝试过两者。
理查德·罗素

我还尝试着有意识地将交流电路从5V电路移开一英尺,仅留下5V继电器信号线连接它们,但这无济于事。在我的实验中,我发现继电器的较小负载(85W卤素灯)似乎对显示屏没有太大影响,但是如果负载较大(2000W水壶),则很可能会引起错误。我很少见到这种灯的问题,尽管很少见。
理查德·罗素

大约1uF的陶瓷帽对于瞬变会更好,请在220uF上并联一个。尝试在继电器线附近的+ 5V和GND两端再增加一个或两个> 100uF的电容。您能向我们展示一下您的设置吗?
奥利·格拉泽

1

当Arduino同时控制SainSmart光电隔离继电器板时,我对16x4 LCD显示器也遇到了同样的问题。继电器触点未连接时,一切正常。但是,当继电器切换感性负载(24 VAC电源继电器)时,显示会出现乱码。没有大量的电源隔离和滤波电容器帮助。

解决该问题的是SainSmart继电器触点之间的缓冲器(电容器和电阻器串联)。我使用了预先包装的康奈尔(Cornell)Dubilier EMI / RFI 滤波器,以保持整洁,但串联一个带有47欧姆电阻的花园式0.1 ufd电容器也可能同样有效。


我可以看一下如何将电容器和电阻器与继电器串联的电路图。谢谢
Jam Ville

1

我一直在想为什么我的LCD出现“乱码”,事实证明我还没有将Arduino GND连接到面包板上(如果这对某人有所帮助)。问候


这不会对现有评论增加太多。
David

-1

在输出端使用屏蔽电缆并将其接地。它为我解决了问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.