Arduino에서 16x2 LCD 디스플레이 디버깅


9

표준 16x2 LCD 디스플레이 (히타치 HD44780 호환-아래 요약 및 사양 참조)가 여기 에 설명 된 것처럼 4 개의 데이터 핀을 사용하여 Arduino Uno에 연결되어 있지만 2x 220ohm 저항을 병렬로 추가했지만 핀 16 (백라이트 접지)에서 110ohm 저항)을 사용하고 Pot을 정적 저항으로 교체하여 Vo에서 4V를 생성합니다.

요컨대, RW는 접지에 연결되고 RS, Enable 및 Data4-7은 Arduino 핀에 연결되고 Data 0-3은 플로팅됩니다.

Arduino의 다른 핀에 연결된 다른 것들 (센서, 광 절연 SSR이있는 트랜지스터 및 전원 릴레이, 일부 버튼)이 있습니다. 내가 사용하는 코드는 1 초에 여러 번 텍스트를 디스플레이에 작성하며 일반적으로 디스플레이가 완벽하게 작동합니다.

그러나 릴레이 가 닫히면 (약 10ma가 걸리고, Arduino 핀 중 하나에서 제어되는 트랜지스터로 제어 됨) 때때로 LCD가 깨질 수 있습니다. 일반적으로 다음에 릴레이가 닫힐 때까지, 또는 때때로 릴레이가 열릴 때 또는 리셋을 위해 몇 번의 열기 / 닫기주기 후에 깨진 상태로 유지됩니다. 계전기는 항상 릴레이가 열리거나 닫힐 때 동시에 시작 및 중지됩니다.

"garbled"는 영어 문자를 쓰지 않고 문자가 깨져서 쓰러 질 때마다 데이터 시트에서 식별 할 수없는 문자열을 얻습니다 (일부는 가능하지만). 이 잘못된 문자들은 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에 추가하십시오. 이 전해 :) 인 경우 커패시터의 방향에주의
압둘라 kahraman

1
이것은 정말 기이합니다. 큰 릴레이를 직접 구동하지 않고 구입 한 릴레이 박스에는 실제로 작은 DIP SSR이있어 큰 릴레이로 전원을 전환하고 큰 릴레이는 AC 라인에서 떨어집니다. 따라서 릴레이 작동에 의해 생성 된 역기전력이 회로에 들어가는 방법이 없어야합니다.
코너 울프

접지 / 디커플링 문제가 발생합니다. 브레드 보드의 파워 레일에 많은 정전 용량이 있습니까?
코너 울프

또한 릴레이 박스가 브레드 보드 회로에 얼마나 가까이 있습니까? 릴레이 박스와 나머지 회로 사이에 몇 피트의 전선을 넣을 수 있습니까? 그것은 어떤 자기 커플 링의 가능성을 제거 할 것입니다.
코너 울프

답변 주셔서 감사합니다. 릴레이가 SSR 및 기타 다양한 구성 요소와 분리되어 있는지 확인하십시오. 나는 다이오드를 시험해 보았고 나중에 LCD 근처의 파워 레일에서 5V와 GND 사이의 220uF 전해 커패시터를 시도했다. 이들 중 어느 것도 효과가없는 것 같습니다. 나는 (아직) 두 가지를 함께 시도하지 않았습니다.
Richard Russell

답변:


5

릴레이에 다이오드가 있습니까? 그렇지 않으면 닫힘 / 열림시 유도 스파이크가 문제를 일으킬 수 있습니다.

예를 들어 계전기를 통해 흐르는 전류를 중지하면 계속 유지하려고 시도합니다. 방전 경로가 없으면 큰 전압이 생성됩니다 (실제로 경로를 찾을 때까지 계속 상승합니다).
구체적으로, 공식은 V = L (dI / dT)이다. 이는 인덕터가 전류 변화율에 비례하여 전압을 개발함으로써이를 통해 전류 변화에 반대한다는 것을 의미합니다 .

정상 전류 흐름과 반대되는 방향으로 릴레이에 다이오드를 배치하십시오.

편집-제품 페이지를 확인하면 주변 구성 요소가 추가 된 상자에 "준비된 롤"릴레이 인 것 같으므로 위와 같지 않을 수 있습니다. 그럼에도 불구하고 릴레이의 전원을 통해 다이오드를 배치하려고합니다.
또한 의견에 언급 된대로 공급품이 잘 필터링되어 있는지 확인하십시오. IC 및 LCD 옆에 최소 1uF의 커패시터 몇 개를 배치하고 어딘가 (전원에서 접지까지)> 100uF의 벌크 캡을 배치하십시오.


"릴레이"에 대한 데이터 시트를 확인하십시오. 릴레이 입력은 실제로 작은 SSR을 구동하여 실제 전력을 릴레이 자체로 전환합니다. 릴레이에 대한 입력, 즉 SSR 입력이기 때문에 다이오드가 실제로 아무것도하지 않는 것 같습니다.
코너 울프

나는 모양을 가졌고 (이전에 찾을 수 없었 음) 나는 더 많은 정보없이 단지 "다치게 할 수없는"제안 유형이라고 동의한다. 디커플링이 추가 된 방식에 대한 업데이트가 곧 제공 될 것입니다.
Oli Glaser 2018 년

답변 주셔서 감사합니다. 릴레이가 SSR 및 기타 여러 구성 요소와 분리되어 있는지 확인하십시오. 나는 다이오드를 시험해 보았고 나중에 LCD 근처의 파워 레일에서 5V와 GND 사이의 220uF 전해 커패시터를 시도했다. 나는 (아직) 두 가지를 함께 시도하지 않았습니다.
Richard Russell

또한 5V 회로에서 1 피트 정도 떨어진 곳에 AC 회로를 의식적으로 이동 시키려고했지만 5V 릴레이 신호선 만 연결해 두었지만 도움이되지 않았습니다. 실험에서 릴레이에 작은 부하 (85W 할로겐 램프)가 디스플레이에 큰 영향을 미치지 않는 것으로 나타 났지만 큰 부하 (2000W 주전자)를 사용하면 오류가 발생할 가능성이 더 큽니다. 드물 긴하지만 램프에서이 문제를 더 일찍 보았습니다.
Richard Russell

1uF 정도의 세라믹 캡은 과도 전류에 더 좋을 것입니다. 릴레이 와이어 근처의 + 5V 및 GND에서 또 하나 또는 두 개의> 100uF 캡을 추가하십시오. 설정에 대한 더 나은 그림을 보여 주시겠습니까?
Oli Glaser 2018 년

1

Arduino가 SainSmart 옵토 절연 릴레이 보드를 제어 할 때 16x4 LCD 디스플레이와 동일한 문제가있었습니다 . 릴레이 접점이 연결되지 않은 상태에서 모든 것이 제대로 작동했습니다. 그러나 릴레이가 유도 부하 (24 VAC 전원 릴레이)를 전환하면 디스플레이가 깨졌습니다. 전력 절연 및 필터 커패시터는 도움이되지 않았습니다.

이 문제를 해결 한 것은 SainSmart 릴레이 접점의 스 너버 (캐패시터 및 저항 직렬)였습니다. 깔끔한 포장을 위해 사전 포장 된 Cornell Dubilier EMI / RFI 필터 를 사용했지만 47 옴 저항과 직렬로 연결된 정원 다양한 0.1 ufd 커패시터도 잘 작동 할 것입니다.


커패시터와 저항을 계전기와 직렬화하는 방법에 대한 회로도를 볼 수 있습니다. 감사합니다
Jam Ville

1

나는 왜 LCD가 깨지는 지에 대해 머리를 두드리고 있었고 Arduino GND를 브레드 보드에 연결하지 않은 것으로 밝혀졌습니다 (이것이 누군가에게 도움이된다면). 문안 인사


기존 주석에는 그다지 추가되지 않습니다.
David

-1

출력에 차폐 케이블을 사용하고 접지하십시오. 그것은 나를 위해 문제를 해결했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.