Browse Source

Added YASAVUM page

Thomas Buck 8 years ago
parent
commit
786129dbc6

+ 79
- 0
input/blog/2016/2016_05_03_yasavum.md View File

@@ -0,0 +1,79 @@
1
+title: Blog
2
+post: YASAVUM - Yet another simple Arduino VU meter
3
+date: 2016-05-03
4
+comments: true
5
+flattr: true
6
+github: https://github.com/xythobuz/YASAVUM
7
+parent: projects
8
+position: 70
9
+---
10
+
11
+## {{ page["post"] }}
12
+<!--%
13
+from datetime import datetime
14
+date = datetime.strptime(page["date"], "%Y-%m-%d").strftime("%B %d, %Y")
15
+print "*Posted at %s.*" % date
16
+%-->
17
+
18
+This is a simple VU meter using an [Arduino Mega](https://www.arduino.cc/en/Main/ArduinoBoardMega2560) with two [MSGEQ7](https://www.sparkfun.com/products/10468) ICs and a multiplexed PWM controlled LED display with 14 by 10 "pixels", in my case made up of two LEDs each, with adds up to 280 LEDs.
19
+
20
+<div class="lightgallery">
21
+    <a href="https://www.youtube.com/watch?v=-yFCkL4iYBA">
22
+        <img src="img/yasavum_video.png" alt="VU meter in action">
23
+    </a>
24
+    <a href="img/yasavum1.jpg">
25
+        <img src="img/yasavum1_small.jpg" alt="Backside of display panel">
26
+    </a>
27
+    <a href="img/yasavum2.jpg">
28
+        <img src="img/yasavum2_small.jpg" alt="Front of display panel">
29
+    </a>
30
+    <a href="img/yasavum3.jpg">
31
+        <img src="img/yasavum3_small.jpg" alt="Display panel wired">
32
+    </a>
33
+    <a href="img/yasavum4.jpg">
34
+        <img src="img/yasavum4_small.jpg" alt="Display panel wired">
35
+    </a>
36
+    <a href="img/yasavum6.jpg">
37
+        <img src="img/yasavum6_small.jpg" alt="Finished device">
38
+    </a>
39
+</div>
40
+
41
+### Hardware
42
+
43
+The Hardware, as well as the Software, basically consists of two parts: the MSGEQ7 stereo `spectrum analyzer` and the LED display.
44
+
45
+#### MSGEQ7
46
+
47
+MSGEQ7 is a nifty little IC that can split an analog signal into different frequency bands. It will then put out the average amplitude for seven different bands in the audible range. The basic circuitry from [the datasheet](https://www.sparkfun.com/datasheets/Components/General/MSGEQ7.pdf) is more than enough. Simply build it up two times, connecting the Strobe and Reset lines of both ICs together, so you have two inputs (Strobe and Reset) and two outputs (Left and Right). You can connect any kind of line level audio connector, I've used cinch but you can also use 3.5mm headphone connectors.
48
+
49
+<div class="lightgallery">
50
+    <a href="img/yasavum_msgeq7.png">
51
+        <img src="img/yasavum_msgeq7_small.png" alt="Basic MSGEQ7 circuitry">
52
+    </a>
53
+    <a href="img/yasavum5.jpg">
54
+        <img src="img/yasavum5_small.jpg" alt="Arduino Mega added">
55
+    </a>
56
+</div>
57
+
58
+#### LED Display
59
+
60
+I'm using two LEDs per 'pixel' and trying to achieve maximum brightness, so I've decided to drive each pixel with 20mA, which is the maximum the Arduino Mega can provide on each of its pins. The anodes of all LEDs in a horizontal row are connected together and, over a single resistor, go directly to the Arduino. The display is split in the middle, so each half has 10 connections to the Arduino, resulting in 20 pins used for the rows alone. The resistor value depends on the amount and type of LEDs used. For my orange and red rows, I've used 50 Ohms and for the green rows I've used 10 Ohm.
61
+
62
+The cathodes of each vertical column are connected together, and to ground over a N-Channel MOSFET. I've used the [2N7000](https://en.wikipedia.org/wiki/2N7000), as it is able to be driven from the Arduino pins without any additional components. I'm using 14 of these, one for each frequency band on each channel, but one Arduino pin is connected to two MOSFETs at the same time, for each channel. This means there are 7 pins used on the Arduino for these.
63
+
64
+### Software
65
+
66
+[Get the current version of this Arduino Sketch from the YASAVUM GitHub Repository!](https://github.com/xythobuz/YASAVUM/blob/master/YASAVUM.ino)
67
+
68
+You should be able to read and understand this Sketch from top-to-bottom without much problems. It begins with the `Configuration` section. Here you can set the display refresh rate, timing parameters and enable or disable features like PWM control, the maximum bar and the noise filter.
69
+
70
+You can add zero, one or two analog potis and assign them as brightness or gain control.
71
+
72
+At first I simply controlled the MOSFETs using digital I/O. Later I've added PWM control to be able to set the brightness. This is using all available Timers in the Arduino Mega. They run at full speed, which seems to be plenty to provide full 8bit brightness control.
73
+
74
+The code for reading the MSGEQ7s has been taken without much modifications from [my LED-Cube project](https://github.com/xythobuz/LED-Cube/blob/master/AudioFirmware/eq.c).
75
+
76
+### Licensing
77
+
78
+YASAVUM is released under the [Creative Commons Attribution Share-Alike](http://creativecommons.org/licenses/by-sa/4.0/) license.
79
+

BIN
static/img/yasavum1.jpg View File


BIN
static/img/yasavum1_small.jpg View File


BIN
static/img/yasavum2.jpg View File


BIN
static/img/yasavum2_small.jpg View File


BIN
static/img/yasavum3.jpg View File


BIN
static/img/yasavum3_small.jpg View File


BIN
static/img/yasavum4.jpg View File


BIN
static/img/yasavum4_small.jpg View File


BIN
static/img/yasavum5.jpg View File


BIN
static/img/yasavum5_small.jpg View File


BIN
static/img/yasavum6.jpg View File


BIN
static/img/yasavum6_small.jpg View File


BIN
static/img/yasavum_msgeq7.png View File


BIN
static/img/yasavum_msgeq7_small.png View File


BIN
static/img/yasavum_video.png View File


Loading…
Cancel
Save