Skip to content

Pakue95/VFD_Watch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VFD Watch Project

This project was originally inspired by Johngineer's ChronodeVFD project. However no concrete design information were available therefore this project was born.

The goal was to create a mobile driver circuit for the common IVL2-5/7 vacuum fluorescent display, that is powered by a single cell battery. The datasheet of the display can be found on the Loststreak blog.

Circuit elements

Microcontroller

An ESP32 WROOM-32 module is used as a microcontroller for the display and wireless communication. It is interfaced fo r programming via a FT231XS USB-Serial converter.

Battery voltage regulation

The choice for the battery driver IC fell on the MP3120 single cell 1.2A step up module as it can handle very low battery voltages and still start up. If wireless communication is used during the power up of the display the step-up module won't be able to supply enough power from a normal Alkaline cell to the ESP32 and a brownout reset will occur. Primary lithium cells, 2 Alkaline batteries or LiIon should be sufficient to power all functions at the same time.

Schematic of the 3.3V supply

VFD driver

The display is driven by a 24V rail from a MCP1663 step-up converter and high-side switches (TBD62783A) to power the segments. The filament is driven from the 3.3V rail and pulse-modulated from a motor H-bridge driver (DRV8837C) to achieve an equivalent to the 2.4V @ 60mA power conditions described in the datasheet. The H-bridge design allows an equal brightness of the characters without the use of a complex center-tapped AC circuit.

Schematic of the 24V supply

Software

Functions

void begin(uint8_t dutyCycle, uint32_t freqMultiplex, uint32_t freqHeat)
  • dutyCycle sets the PWM duty cycle of the heating filament. 0-255; typical 120.
  • freqMultiplex sets the rate at which the characters are cycled though (1kHz -> 200Hz total refresh of the display). The timing is controlled in the background by an interrupt function that calls for an update of the currently displayed character. This process runs on core 0 of the ESP32, therefore during WiFi use the display can flicker a bit.
  • freqHeat sets the frequency of the heating filament PWM. The value should be in the kHz range.
void deactivate()

Turns of the heating filament and the 24V rail to preserve power.

void activate()

Turns the display back on after a deactivate().

void setHours(uint8_t hours)

Sets the first two digits. Range 0-99.

void setMinutes(uint8_t minutes)

Sets the last two digits. Range 0-99.

void setCharacter(char character, int pos)

Displays a char (a-z; 0-9; '-') at position pos (0-3)

void print(char* text)

Similar to setCharacter() but it displays the first 4 chars of the array.

void setSegment(uint8_t segments, uint8_t pos);

Sets specific segments of a digit through the use of a byte mask (least to most significant bit). E.g. 0b00101000 would set segments d & f. pos declares the digit to be changed (0-3).

About

Portable VFD based on IVL2-7/5 and ESP32

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published