ถามเรื่องการ drive lcd segmentหน่อยครับ

Started by kanking1150, April 29, 2020, 10:55:07 PM

Previous topic - Next topic

kanking1150

พอดีผมไปแกะเอา lcd มาจากอีกวงจรนึงเป็น custom lcd segment ครับจอพวกนี้ผมลองไล่ๆหา datasheet ดูส่วนใหญ่เหมือนต้องใช้ไฟ ac ให้ทำงานผมเลยลองใช้ dc ปกติทีได้จากซัพพลายคอมผมใช้ 3.3V ต่อแล้วภาพจะติดซักพักแล้วหายไปเอง อย่างถ้าผมจั้ม com0 seg8 ตัวsegment ที่ตรงตามตำแหน่งก็จะแสดงแล้วซักพักก็จะจางหายไปไวมากๆ ต้องจิ้มใหม่
-->เราสามารถใช้ dc pulse ให้มันทำงานแทนได้ไมครับ
-->อยากจะขอคำแนะนำการทำวงจรไดฟหน่อยครับเป็นตัวอย่างวงจร 4 digit หรือ 7 digit ก็ได้
-->ผมไม่มีฟังชั่นเจ็นมาทดลองด้วยนี่แหละ เลยอยากรู้ว่าถ้ามันใช้ dc pulse แล้วมันจะได้รึเปล่าจะได้ลองทำ pwm จาก arduino ซักขานึงมาไล่ดูว่า seg ไหน com ไหน คือรูปอะไรตัวอักษรอะไร ที่ผมยังไม่ลองทำอะไรเพราะเจอ video ของ evvblog เขาอธิบายว่าการ drive dc โดยตรงไม่เป็นผลดีผมเลยหยุดทดลองต่อแล้วเข้ามาถาม
-->ลองพยามหาชิป lcd drive แล้วแต่ชิปนานมากกว่าจะได้แถมที่ค้นๆหาดูใน mouser,rs-online จำนวน pattern มันได้ไม่เท่าจอเพราะจากที่ลองนับดูก่อนหยุดมือไปน่าจะ 32seg * 4 com รวมๆ 128pattern ในmouser,rs-onlineผมหาเจอแต่ 112 กับ 80 ที่ได้มากสุด




kanking1150

ผมลองคลำๆเทสๆดูดยลองเขียนเอา arduino ให้มันจ่ายตามรูป FIG2 ที่เป็นรูปที่อยู่ในลิ้งที่ให้มาแบบEnergizedเพราะเห็นเป็นแถบดำๆน่าจะเป็น segติดแหละแล้วไล่จิ้มขาคอมกับขาอื่นทีละขาดู ปรากฎว่าบางขาขึ้นทีเดียว 4 segเลยบางขาก็ขึ้น 1 seg ตรงตามที่เราเข้าใจก็เลยงงเอ๋อๆเลยทีเดียวแล้วก็มีพวกที่ขึ้นๆมาจางๆด้วยครับ และคิดว่าที่เข้าใจน่าจะไม่ใช่ละเพราะยังเหลือคอมอีกตั้งสามขามันไม่น่าจะขึ้นพร้อมกันทั้ง 4 segสิ หรือมันต้องมีอะไรมากกว่านั้น ตอนแรกเข้าใจนึกว่าจะเหมือน 7 segmentหรือพวก multi7segmentปรากฎว่าทำความเข้าใจยากกว่ามากเลย
https://youtu.be/o_Y6XG7uzk0
ภาพมันจะเอียงๆหน่อยผมหมุนจอโทรศัพถายสองรอบมันก็ยังเจ็นออกลายเดิม

array pinยาวๆไม่ต้องสนใจมากครับผลพวงจากการพยามไดหลายๆคอลั่มรวมๆกันแต่ไม่เวิคแต่ 1com ไล่จิ้มทีละขาเวิคเลยเซ็ตไว้ที่ [0,0]
//ATMEGA 2560
#define SEG_NUM 32
#define COM_NUM 4
uint8_t Seg_pin[SEG_NUM] = {2,3,4,5,6,7,8,14,15,16,17,18,19,20,21,22,23,24,25,26,27};
uint8_t Com_pin[COM_NUM]={9,10,11,12};
void driveSeg(byte com,byte seg)
{
  digitalWrite(Seg_pin[seg], HIGH);
  digitalWrite(Com_pin[com], LOW);   
  delay(1);
  digitalWrite(Seg_pin[seg], LOW);
  digitalWrite(Com_pin[com], HIGH);
  delay(1);
}
void setup() {
  for(uint8_t i = 0; i < SEG_NUM; i++)
  {
    pinMode(Seg_pin[i], OUTPUT);
  }
  /* Set the common pin as output */
  for(uint8_t i = 0; i < COM_NUM; i++)
  {
    pinMode(Com_pin[i], OUTPUT);
  }
    //all LOW
  for(int i=0;i<SEG_NUM;i++)
     digitalWrite(Seg_pin[i], LOW);
  for(int i=0;i<COM_NUM;i++)
     digitalWrite(Com_pin[i], LOW);
}
void loop() {
  driveSeg(0,0);
  delay(10);
}

moneyp1000


kanking1150

ตอนนี้ตัดสินใจใช้ drive แล้วครับแต่ว่าก็ยังพยามทำอยู่ ค่อยๆอ่านไป แต่สงสัยอย่างหนึงครับจอ lcd ผมมันแสดงผลจางมากหลังจากใช้ drive ครับ  จางขนาดว่าถ้าผมถอดจอแยกไปลองกับโค้ดข้างบนจั้มทีละขาเพื่อดูว่า segไหนสว่างยังสว่างกว่ามากเลยทั้งๆที่ผมสั่ง drive ให้แสดงผล seg เดียวกันยังสว่างไม่เท่าเลยครับ หรือต่อกราวแล้วเอามือจับยังชัดปกติทุก seg แต่พอใช้ drive จางมากๆ



kanking1150

Quote from: vbaserv on May 13, 2020, 08:52:28 AM
หวังว่ารายละเอียดที่นี่น่าจะพอช่วยได้
https://www.circuitvalley.com/2012/02/pic16f917pic16f1907-7segmentlcddriverex.html
http://awawa.hariko.com/avr_lcd_drive_en.html
ขอบคุณครับลิ้งสองผมกำลังทำตามอยู่ครับค่อยๆเล่นไป แต่ก็ยังเจอปัญหาเดิมๆกับ drive ทั้งๆที่ทำตามดาต้าชีททุกอย่างก็ยังไม่ชัดเลยลองเปลี่ยนชิปก็แล้วรอบหนึ่งก็เหมือนเดิมบางครึ้งก็เข้มแล้วก็กลับมาจางเหมือนเดิม เคยคิดว่าไฟไม่พอก็ลองถอดมาต่อสวิทชิ่งก็เหมือนเดิม