산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

진공 형광 디스플레이 컨트롤러

구성품 및 소모품

Arduino UNO
...또는 8비트 Arduino
× 1
VFD 디스플레이
친구
× 1
CD4094
DIP 집적 회로
× 2
CD4017
DIP 집적 회로
× 2
BC557
...또는 동등한 트랜지스터(2N3906, 2SA733, ecc) 또는 더 높은 전압의 PNP 트랜지스터
× 17
BC547
...또는 동급 트랜지스터(2N3904, 2SC945, ecc)
× 2
PC817
대부분의 스위칭 PSU에서 발견되는 유비쿼터스 광커플러, 결론 부분
× 1
1N4007 – 고전압, 고전류 정격 다이오드
× 4
전해 커패시터
값 및 전압에 대한 회로도 참조
× 4
470nF 커패시터
어떤 유형이든 좋습니다.
× 1
Perfboard
일명:판지, 프로토보드 또는 선호하는 조립 솔루션인 경우
× 1
1/4W 저항기
값에 대한 도식 참조
× 24
듀퐁 점퍼
...또는 선호하는 연결 및 게시물
× 1
와이어
회로 뒷면을 위한 가는 와이어와 디스플레이를 연결하기 위해 핀이 있기 때문에 커넥터를 사용하지 마십시오. 간격이 다양하고 빠른 납땜이 더 쉽습니다.
× 1

필요한 도구 및 기계

납땜 인두(일반)
납땜 와이어
지역 상점에서 구입하세요. 저렴한 제품은 없습니다. 0.5mm가 선호됩니다.
와이어 클리퍼

이 프로젝트 정보

용도는 무엇입니까?

VFD 디스플레이는 몇 가지 분명한 이유로 더 이상 유행하지 않습니다. 유리로 만들어지고("멋져!"), 백열 필라멘트가 있고("정말??") 기본적으로 진공관입니다("흥미로워요!"). 빛이 너무 밝고 때로는 색이 있기 때문에 상단에 어두운 플라스틱이 필요합니다("어, 다시 멋있어!").

일반적으로 em을 구동하려면 전용 칩이 필요합니다. 대부분의 모듈/기기는 이 칩과 함께 제공되며 이 칩은 I2C 또는 SPI를 통해 독립적으로 제어할 수 있습니다. 이러한 칩은 "연결하고 이동"하기가 쉽지 않으므로 해당 칩(일반적으로 SMD 형식으로 제공됨)을 구입하는 것이 이상적입니다. 이 회로는 Arduino와 같은 꽤 괜찮은 인터페이스를 제공하고 부피가 큰 "튜브" 빈티지를 포함하여 모든 VFD를 구동할 수 있지만 세그먼트가 많은 매트릭스 디스플레이는 좋은 생각이 아닙니다. 회로를 확장할 수 있습니다 하지만 수천... 음, 아닐 수도 있습니다.

장단점

장점

<울>
  • 거의 제로 비용(희망)
  • 쉽게 찾을 수 있는 부품
  • 고전압 기능(양극에서 최대 수백 볼트)
  • 독립 그리드 및 양극 전압
  • 3개의 디지털 데이터 라인만 필요
  • 확장 가능(경우에 따라 더 많은 CPU 작업이 필요함)
  • 모든 8비트 Arduino용 코드가 준비되었습니다.
  • 단점

    <울>
  • 다양한 전압과 공급 장치가 필요합니다(VFD에서는 이상하지 않음)
  • 디밍 기능 없음(전압 구동 제외)
  • 두 개의 Arduino 리소스인 SPI 및 timer1 사용
  • 마이크로컨트롤러를 걸 수 없습니다. 그렇지 않으면 그리드에서 스캔이 정지됩니다.
  • 저항과 LED 한 쌍이 아니라 약간의 작업이 필요합니다.
  • 작동 원리

    VFD는 일반적으로 X 및 Y축이 있는 2D 매트릭스와 같이 다중 방식으로 작동합니다. 필라멘트를 가열해야 합니다(음극, 앞에 가는 선이 보입니다). 필라멘트의 접지도 연결해야 합니다. 그리드에 양의 전압(제어 그리드, X축의 한 지점)과 다시 세그먼트 핀(양극, Y축의 한 지점)에 양의 전압, 이 지점에서 세그먼트(단 하나)가 켜집니다. 세그먼트와 조합이 무엇이든 밝히고 주위에 "적은" 와이어를 사용하기 위해 멀티플렉싱은 시간당 하나의 그리드를 선택하고 동시에 양극이 해당 그리드 아래의 해당 세그먼트를 밝히도록 구성합니다. 잠시 후 다른 그리드를 선택합니다. 그리고 해당 세그먼트가 두 번째 그리드 아래에서 올바르게 조명되도록 이번에는 양극을 구성합니다. 이 연속적인 반복 스캔 속도를 높이면 움직임이 너무 빨라서 우리의 눈에서는 한 번에 하나의 그리드를 선택하지 않지만 한 번에 움직이는 것처럼 보이는 것을 POV(Persistence Of Vision)라고 합니다.

    이 회로는 2개의 CD4094와 2개의 CD4017과 같은 동일한 제품군의 집적 회로를 사용합니다. 4094는 양극을 구동하고 4017은 ​​대신 그리드를 구동합니다. 4094는 출력에 high/low 구성을 저장할 수 있으며 양극에 적합합니다. 측면에서 4017은 ​​그리드에 완벽한 10개의 시퀀싱 출력이 있는 클래식 칩입니다. 4094가 순간 양극 구성으로 로드되면 "ok" 신호(스트로브)가 이 설정을 적용하고 동시에 4017을 한 단계씩 전환하여 자동 시퀀싱을 허용합니다.

    전원 부분은 기본적으로 양극에서 더 넓은 전압 스윙을 허용하는 일부 BC557 트랜지스터(또는 동급)일 뿐입니다. 이러한 디스플레이는 Arduino의 5V보다 더 높은 전압을 필요로 하기 때문입니다. 그리드는 4017에 의해 직접 구동되고, PC817 옵토커플러는 4017 주변에서 5V보다 더 큰 전압을 허용하고 CD4094와 다른 전압 레벨을 허용하므로 전체가 많이 단순화됩니다.

    Arduino는 모든 오케스트레이션을 제공해야 합니다. 즉, 모든 세그먼트 구성을 저장하고 모든 그리드 스위치에서 양극 설정으로 회로를 로드해야 합니다. 즉, 사용자 작업을 넘어서 수행하려면 영리한 코드가 필요합니다. 내가 만든 코드는 매 단계마다 4094 칩을 다시 로드하는 타이머 기반 인터럽트를 설정합니다. 실제로 초당 약 1000번이므로 10개의 그리드에 대해 100Hz의 새로 고침 빈도를 제공합니다. 세그먼트 구성을 저장하고 코드 내에서 수정할 수 있는 데이터 배열이 있습니다. 특정 절차나 후속 조치 없이 인터럽트 루틴이 자체적으로 데이터를 업로드합니다.

    전원 공급 장치

    4017 칩의 그리드 전압은 5Vdc ~ 18Vdc 및 최소 50mA의 전류가 될 수 있으므로 조정할 필요가 없습니다. 일반적으로 (내가 본 한) 12V는 모든 상황에 충분하며, 이를 높이면 밝기가 많이 증가하지 않는 것으로 보입니다(진공관인 경우 그리드에 큰 전압이 필요하지 않음).

    애노드 전압은 말 그대로 0V에서 트랜지스터가 견딜 수 있는 모든 것(BC557의 경우 50Vdc)까지일 수 있습니다. 일반적으로 디스플레이가 완벽하다면 20-30Vdc가 완벽하게 작업을 수행하고 조정되지 않은 것이 좋습니다. 정상적인 설정의 경우 50mA의 공급이 충분합니다.

    이러한 유형의 Arduino 또는 MCU(아직 시도하지 않음)의 경우 디지털 전원은 5Vdc 또는 3.3Vdc가 될 수 있습니다. CD4094가 느려지는 경우 코드에서 SPI 클록을 줄일 수 있습니다. 보다 일관된 통신을 위해 첫 번째 4094의 "Q'S" 출력을 사용합니다.

    필라멘트 전원은 최소 5V 200-300mA의 전류를 제공해야 합니다. 이미 DC 소스가 있는 경우 브리지 정류기와 1000uF 커패시터를 피할 수 있지만 Arduino에서 동일한 디지털 전원을 사용할 수는 없습니다. 그다지 크지 않은 가전 디스플레이의 경우 실제 필라멘트는 3V로 작동하며 150mA를 끌어 올 수 있습니다.

    팁 및 참고 사항

    <울>
  • 전선을 연결하기 전에 어떤 핀이 어떤 역할을 하는지 모르는 경우 먼저 디스플레이를 시도하는 것이 좋습니다. 일반적으로 직렬로 연결된 한 쌍의 AA 배터리는 필라멘트에 적합합니다(보통 측면 접촉부). 직렬로 연결된 한 쌍의 9V 배터리는 그리드와 양극 모두에 양극화를 제공합니다. 그리드와 양극은 종종 그룹화됩니다. 좋은 아이디어는 실제 "양극 0"을 찾는 것입니다. 숫자 또는 영숫자 부분의 첫 번째 세그먼트일 가능성이 높기 때문에 모든 그리드에 대해 종종 동일하고 동일한 순서로 전선을 배치합니다. 실수로 역순으로 소프트웨어를 더 서투르게 만들고 그리드 대신 분명히 핀 순서를 따릅니다.
  • 필라멘트 공급을 쉽게 하고, 전류를 조금씩 증가시키고, 어둠 속에 머물다가 필라멘트가 약간 백열되기 시작하는 순간에 약간 감소하고 완료되면 전력 전위차계가 완벽합니다. 오래된 TV지만 요즘은 어렵습니다
  • 그리드와 애노드의 전압을 정상적으로 높이면 인광체가 복구 불가능하게 연소될 수 있으며 회로도 스캐닝을 작동하므로 시스템이 중단되면 단일 그리드 섹션에 지속적으로 너무 많은 전력을 공급할 수 있습니다.
  • 그리드\애노드 전압에 대한 절충안을 가지고 플레이하십시오. 그리드가 약간의 전류를 소모할 수 있다는 점을 염두에 두십시오. 그럴 가치가 없다는 점을 염두에 두시고, 애노드를 더 염두에 두십시오.
  • 전체 프로젝트\설정에 단일 변압기를 사용하는 것이 이상적이며 일부 혼합 솔루션도 사용할 수 있지만 PSU와 특히 접지된 PSU를 전환하면 나쁜 장난이 될 수 있으므로 실험할 때는 항상 클래식을 사용하는 것이 좋습니다. 변압기 공급
  • CD4094 및/또는 CD4017을 추가하여 이 드라이버를 확장할 수 있습니다. 물론 8개 이하의 양극이 필요한 경우 두 번째 4094를 제거할 수 있습니다. 이는 4017과 동일한 시나리오입니다. 최대한 완벽하게
  • 보다시피 양극 트랜지스터의 베이스에는 저항기가 없습니다. 이렇게 하면 초고속 드라이브가 제공되고 부품 목록이 줄어들지만 CD4094가 약간의 전력을 소비하게 되며 거의 가열되지 않지만 일부 칩 표본은 출력이 너무 강할 경우 전류 소비를 확인하십시오. 소비 전력이 허용 가능한 최대 내부에 있기 때문에 칩이 불지 않을 것입니다. 전류는 5V 공급에서 핀당 4mA 범위일 수 있습니다.
  • 오래된 지친 디스플레이는 필라멘트에 약간의 전류 충격을 가하면 재생될 수 있습니다. 디스플레이 전체가 흐릿하고 일부만 탄 부분이 아닌 경우 5번 연속으로 전선을 눈에 띄게 백열등(노란색)으로 가져온다고 합니다. 매번 몇 초 동안 한 번도 시도하지 않았지만 필라멘트의 정격 전압의 두 배가 필요할 수 있습니다. 이렇게하면 청소가되지만 분명히 아주 오래된 \ 골동품에 더 유용합니다 ... 위험합니다. 전구가 아닙니다. 전선을 끊을 수 있습니다
  • <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 작업 루틴이 있는 Arduino 코드
  • 작업 루틴이 있는 Arduino 코드Arduino
    <사전>/* 다목적 VFD 디스플레이 하드웨어 인터페이스 Arduino 프로그램 Copyright (C) 2019 Genny A. Carogna 이 프로그램은 무료 소프트웨어입니다. Software Foundation, 라이선스 버전 3 또는 (귀하의 선택에 따라) 이후 버전. 이 프로그램은 유용하기를 바라며 배포되지만 어떠한 보증도 하지 않습니다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증도 없이. 자세한 내용은 GNU 일반 공중 사용 허가서를 참조하십시오. 이 프로그램과 함께 GNU General Public License 사본을 받았어야 합니다. 그렇지 않은 경우 를 참조하십시오.*//* 이 코드는 Arduino의 리소스를 "비하인드" 방식으로 사용하며 timer1 및 SPI 모듈이 모두 사용되고 사용 중입니다. , 따라서 SPI, SPI 핀 및 timer1을 기반으로 하는 일부 기능을 사용하는 데 큰 문제가 있을 수 있습니다... 제안된 회로에는 온보드 메모리가 없으므로 세그먼트 설정을 모든 그리드에서 100번 연속적으로 "스캔"해야 합니다. 초당 * , Arduino 세그먼트 배열에서 이것은 소위 "오버헤이드(overhaed)" CPU 작업에서도 해석됩니다. 아시다시피, * 마지막에 마이크로를 정기적으로 사용하는 것 이상은 아니며 약 3을 칠 수 있습니다. 점유 시간 측면에서 CPU 작업의 %를 사용할 수도 있습니다. * Arduino의 일반 SPI 도구를 사용하려고 시도할 수도 있지만 출력 및 절차에 대한 심층 분석이 필요합니다. * * 이 코드는 8비트 Arduino와 함께 작동하며 3.3V도 작동해야 합니다. 좋아, CD4094가 함께 전원이 공급되고 "언더볼트"할 수 있다는 점을 고려하면 SCK 주파수를 줄일 수 있습니다. PC) */#define ledLed 13 // led를 led로 연결하는 led 핀입니다. led on은 led 관련 항목을 의미한다는 것을 알 수 있습니다. "strobe" line#define strobeHold 10 // 마이크로초 // 옵토커플러를 전환하는 데 걸리는 시간... 메가헤르츠 빠르지는 않지만 수용 가능// 내 디스플레이용 데이터(비디오 카세트 레코더, 오디오 홀러리 CD 리더 및 소형 스테레오) ... 신경쓰지 말고 삭제하고 "gridAmount" 및 "anodeAmount#define JVC#define mitsubishiGrids 10#define mitsubishiAnodes 9#define marantzGrids 9#define marantzAnodes 14#define JVCGrids 11#define JVCGrids 11#define JVCAnodes 19 define gridAmount mitsubishiGrids#define anodeAmount mitsubishiAnodes#elif defined marantz#define gridAmount marantzGrids#define anodeAmount marantzAnodes#elif defined JVC#define gridAmount JVCGrids#define anodeAmount JVCAnodes#endif// 이 배열, 세그먼트 비트 저장[x] [0]은 그리드 제로를 의미하며, d 최하위 비트는 해당 그리드의 세그먼트 0입니다. // 아무 것도 하지 않고 어디에서나 원하는 대로 이 배열에 액세스하고 수정할 수 있습니다. 효과는 디스플레이에 즉시 표시되며// '비트를 변경하지 마십시오. 그리드 디스플레이당 8개 이상의 세그먼트에 대해 그리드당 16 또는 32비트 컨테이너가 필요합니다. 이는 #define(s) 위#if anodeAmount> 16volatile uint32_t 세그먼트[gridAmount]에서 자동으로 관리됩니다. ={0}; // 그리드당 16개 이상의 세그먼트(32비트 필요)#elif anodeAmount> 8volatile uint16_t segment[gridAmount] ={0}; // 그리드당 8개 이상의 세그먼트(16비트, 트윈 전송)#elsevolatile uint8_t segment[gridAmount] ={0}; // 그리드당 8개 이하의 세그먼트(8비트)#endifvoid setup(){ // 빠른\직접적인 방식으로 SPI 핀과 일부 기능적인 핀을 출력으로 전환합니다. *portModeRegister(digitalPinToPort(PIN_SPI_SS)) |=digitalPinToBitMask(PIN_SPI_SS); *portModeRegister(digitalPinToPort(PIN_SPI_MOSI)) |=digitalPinToBitMask(PIN_SPI_MOSI); *portModeRegister(digitalPinToPort(PIN_SPI_SCK)) |=digitalPinToBitMask(PIN_SPI_SCK); *portModeRegister(digitalPinToPort(strobePin)) |=digitalPinToBitMask(strobePin); *portOutputRegister(digitalPinToPort(strobePin)) &=~digitalPinToBitMask(strobePin); // 낮게 설정 *portModeRegister(digitalPinToPort(ledLed)) |=digitalPinToBitMask(ledLed); *portOutputRegister(digitalPinToPort(ledLed)) &=~digitalPinToBitMask(ledLed); // 낮은 delay(800); // CD4017 리셋이 완료될 때까지 대기하는 데 약간의 지연이 있습니다(4017의 전원을 켠 후 코드를 실행해야 합니다. 이렇게 하면 한 번에 전원을 켤 때 자동으로 됩니다) cli(); // 고양이와 개가 모든 곳에서 탈출하지 않고 일부 항목을 조정할 수 있도록 인터럽트를 비활성화합니다. // timer1 구성, 인터럽트가 초당 "그리드 곱하기 100" 발생하게 합니다... 이것은 100Hz의 총 새로 고침을 제공하므로 괜찮습니다. TCCR1A =0; TCCR1B =0; TCNT1 =0; OCR1A =160000 / 그리드 금액; TCCR1B |=(1 < 24 SPDR =~uint8_t(segments[turn]>> 24); // CD4094에 부정 비트가 필요합니다(트랜지스터 배열의 cos) while (!(SPSR &(1 < 16 SPDR =~uint8_t(segments[turn]>> 16); // CD4094에 부정 비트가 필요합니다(트랜지스터 배열의 cos) while (!(SPSR &(1 < 8 SPDR =~uint8_t(segments[turn]>> 8); // CD4094에 부정 비트가 필요합니다(트랜지스터 배열의 cos) while (!(SPSR &(1 < 2) pos ++; uint16_t 마스크 =0xFF80; uint8_t 숫자[] ={B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00100111, B0111010 B0100111, B011101 switch (pos) { 사례 0:사례 1:사례 4:사례 5:사례 6:사례 7:사례 8:세그먼트[pos] &=마스크; 세그먼트[pos] |=숫자[val]; 부서지다; 경우 2:if (val ==1) 세그먼트[1] |=(1 <<8); 그렇지 않으면 세그먼트[1] &=~(uint16_t(1) <<8); 부서지다; 사례 9:세그먼트[9] &=0xFFF0; if (val ==1) 세그먼트[9] |=3; else if (val ==2) 세그먼트[9] |=B1101; }}// easy peasy 7 세그먼트 번호 시각화void marantzPrintNum(uint8_t val, uint8_t pos) { if (pos> 5) return; 포스 ++; 포스 ++; uint16_t 마스크 =0xFF80; // B0 숫자를 삭제하는 비트마스크 uint8_t numbers[] ={B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B01110011 세그먼트[pos] &=마스크; // 모든 숫자를 삭제합니다. segment[pos] |=numbers[val]; // set digit}// easy peasy 7 세그먼트 번호 시각화void JVCPrintNum(uint8_t val, uint8_t pos) { // 온다 (당신은 정말로 상관하지 않습니다)}//

    회로도

    나는 모든 BC557 트랜지스터를 그리는 것을 피했습니다. 모든 CD4094 출력에 모두 동일하게 연결되어 있기 때문입니다.

    4017 칩에서 구성해야 하는 점퍼 선택기(빨간색 선에서 실행)가 있습니다. 그리드 스캔이 완료되면 두 개의 4017을 재설정합니다. 마지막 그리드 이후에 출력 핀의 플라잉 점퍼를 연결(또는 납땜)해야 합니다. , 따라서 디스플레이에 10개의 그리드가 있는 경우 점퍼는 11번째 출력으로 이동합니다.

    Arduino 연결은 빨간색으로 표시되어 있으며 USB 전원을 사용할 수 있지만 PC와 같이 이미 접지된 전원 공급 장치가 있는 경우 나머지 공급 장치에는 일반 구식 변압기를 사용하는 것이 좋습니다. 이 공급 장치는 필라멘트 공급 장치를 제외하고는 모두 DC여야 합니다. 저전압 2차측이 있는 별도의 변압기가 필요할 수 있기 때문에 일부 다이오드를 추가했습니다. 필라멘트 전력은 일반적으로 약 3V 150mA 범위이며 5V AC 변압기로 충분합니다. "안정기"는 100옴과 같은 유선 전력 전위차계, 고정 저항 또는 전압을 줄이기 위한 일부 1N4007 다이오드가 될 수 있습니다.

    BC557 트랜지스터는 양극을 양극 전압까지 끌어올리고 100kohm 저항은 세그먼트가 꺼져 있을 때 전압 드라이브가 떨어지도록 하는 반면 CD4094는 정상적으로 5V로 유지됩니다.

    CD4017은 ​​그리드 전압으로 전원이 공급되며 추가 트랜지스터가 필요하지 않습니다. 10분의 1초처럼 지속되는 4017에 대한 "빈민가" 리셋 회로가 있습니다. 코드를 실행하기 전에 안정화될 때까지 기다려야 합니다.
    일부 CD4017을 캐스케이딩하기 위한 "원래" 회로도에는 다른 논리 게이트 칩이 필요했습니다. 대신 NPN 트랜지스터와 광커플러 자체를 사용하여 AND 게이트를 복제했습니다. 닫을 때 충분히 빠르므로 작업에 완벽하고 해제할 때는 약간 느립니다. 그러나 특히 4017의 클럭 입력이 슈미트 트리거되고 필요한 속도가 "무서워"하지 않기 때문에 우리는 신경 쓰지 않습니다.

    보시다시피 칩과 물건에 대한 다양한 근거가 있습니다. 잘 살펴보십시오.

    제조공정

    1. Arduino UNO를 사용한 오징어 게임 인형 빌드
    2. ILI9341 TFT 터치스크린 디스플레이 실드의 비트맵 애니메이션
    3. 웹 운영 DMX 컨트롤러
    4. Arduino Pong 게임 - OLED 디스플레이
    5. Arduino 게임 컨트롤러
    6. Unopad - Ableton이 포함된 Arduino MIDI 컨트롤러
    7. Arduino Temp. 3.2 디스플레이가 있는 모니터 및 실시간 시계
    8. Nextion 디스플레이로 재생
    9. Arduino 및 Nokia 5110 디스플레이가 있는 DIY 전압계
    10. Nextion 디스플레이의 BME280 온도, 습도 및 압력