![]() The remaining two functions (User interface and Timer) are built into the Finite State Machine (FSM) that is also executed each time through loop(). The segment patterns used for displaying the LED segments are stored in look up tables and include all the digits and the alpha characters needed for this project. A circuit is created by setting the digit selection I/O HIGH (or LOW, depending on whether common anode or cathode) and the corresponding segments to the opposite setting if they are on – the voltage difference then allows current to flow between the common and the segments. For each digit, the LED segments representing the current time, or message, are illuminated for a very short time. The LED display is multiplexed and all digits are refreshed every time through the loop() function. The software needs to take care of 3 major functions – running the LED display, managing the user interface and executing the timer. My relay seemed to work well off the Arduino output, further reducing component count. I have existing (and much used) libraries for these simple devices, so integrating them into the system was straightforward.įinally, the output relay needs a single output to toggle it on/off. The rotary encoder and the selection switch are also wired directly to Arduino inputs, using the built-in pull-up resistors to stabilize the signals. This also led me to decide I could get away without current limiting resistors for each display segment, as the average power through each segment is quite low, further reducing the component count. Subsequently, some thinking allowed me to free up enough I/O to enable me to use direct connections between the Arduino I/O and the display, removing the need for the 595. This makes it look like the digits are illuminated when in fact they spend most of the time turned off.Īs the first pass of the design I included a 74HC595 serial to parallel buffer to drive the segments as I thought there would not be enough spare digital I/O to run the display directly (the first implementation of the software uses the 595 and SPI). To minimize the number of components, I decided to use the Mini Pro to drive the display directly, multiplexing each digit every time through loop() to create a Persistence of Vision (POV) effect. With the basic kit of parts identified, time to work out how they will hang together – a system block diagram – that will help in the software design and putting it all together later. A 12V 3A power supply that was rescued from the dump sometime in the past.A small plastic box to house the project and a couple of 2.1mm DC power jack sockets.The model I have is good for up to 2A, which is plenty for the display and processor. This takes in up to 24V DC and converts it to 5V output. ![]() Buck Converter used to power the Arduino Mini Pro and the display.Basically it is triggered on/off by the Arduino software and needs to be able to switch the voltage and current that you expect to be controlling. These are also very common, and I had one left over from a previous experiment. I also had a plastic knob to fit the encoder. ![]() These from ICStation are similar, sold as modules. These are commonly available – mine are component-only encoders from eBay. Any similar type will do, including common anode, as the software can be made to compensate for any differences. Mine was a common cathode model from Tayda Electronics. As this was going to fit in a small box I needed a small form factor, but basically any Arduino should be able to run the software. Arduino Pro Mini as the brains of the operation.Looking through my workshop supplies I settled on an assortment of modules and components: I wanted to minimize the number of components to make this project and use what I had at hand. It turned out to be quite functional, so I decided to document the build in case someone else finds this useful. ![]() Rather than buy one I decided to build my own from electronic bits and pieces that were on hand in my workshop, wrote some software for a ‘spare’ Arduino Pro Mini that was lying around and packaged it all up in a small box. As part of a bigger project, I needed to make a timer that would activate a relay for a set time to switch power on/off to another device. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |