further organized files
[physical.git] / misc / Portable stereo active speaker / index.html
1 <!doctype html>
2 <html lang="en">
3 <head>
4 <title>Portable stereo speaker</title>
5 <!-- 2020-04-12 P 23:58 -->
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width, initial-scale=1">
8 <meta name="generator" content="Org-mode">
9 <meta name="author" content="Svjatoslav Agejenko">
10 <link href="https://bootswatch.com/3/darkly/bootstrap.min.css" rel="stylesheet">
11 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
12 <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
13 <style type="text/css">
14 footer {background-color: #111 !important;}
15 pre {background-color: #111; color: #ccc;}
16 </style>
17 <style type="text/css">
18 /* org mode styles on top of twbs */
19
20 html {
21     position: relative;
22     min-height: 100%;
23 }
24
25 body {
26     font-size: 18px;
27     margin-bottom: 105px;
28 }
29
30 footer {
31     position: absolute;
32     bottom: 0;
33     width: 100%;
34     height: 101px;
35     background-color: #f5f5f5;
36 }
37
38 footer > div {
39     padding: 10px;
40 }
41
42 footer p {
43     margin: 0 0 5px;
44     text-align: center;
45     font-size: 16px;
46 }
47
48 #table-of-contents {
49     margin-top: 20px;
50     margin-bottom: 20px;
51 }
52
53 blockquote p {
54     font-size: 18px;
55 }
56
57 pre {
58     font-size: 16px;
59 }
60
61 .footpara {
62     display: inline-block;
63 }
64
65 figcaption {
66   font-size: 16px;
67   color: #666;
68   font-style: italic;
69   padding-bottom: 15px;
70 }
71
72 /* from twbs docs */
73
74 .bs-docs-sidebar.affix {
75     position: static;
76 }
77 @media (min-width: 768px) {
78     .bs-docs-sidebar {
79         padding-left: 20px;
80     }
81 }
82
83 /* All levels of nav */
84 .bs-docs-sidebar .nav > li > a {
85     display: block;
86     padding: 4px 20px;
87     font-size: 14px;
88     font-weight: 500;
89     color: #999;
90 }
91 .bs-docs-sidebar .nav > li > a:hover,
92 .bs-docs-sidebar .nav > li > a:focus {
93     padding-left: 19px;
94     color: #A1283B;
95     text-decoration: none;
96     background-color: transparent;
97     border-left: 1px solid #A1283B;
98 }
99 .bs-docs-sidebar .nav > .active > a,
100 .bs-docs-sidebar .nav > .active:hover > a,
101 .bs-docs-sidebar .nav > .active:focus > a {
102     padding-left: 18px;
103     font-weight: bold;
104     color: #A1283B;
105     background-color: transparent;
106     border-left: 2px solid #A1283B;
107 }
108
109 /* Nav: second level (shown on .active) */
110 .bs-docs-sidebar .nav .nav {
111     display: none; /* Hide by default, but at >768px, show it */
112     padding-bottom: 10px;
113 }
114 .bs-docs-sidebar .nav .nav > li > a {
115     padding-top: 1px;
116     padding-bottom: 1px;
117     padding-left: 30px;
118     font-size: 12px;
119     font-weight: normal;
120 }
121 .bs-docs-sidebar .nav .nav > li > a:hover,
122 .bs-docs-sidebar .nav .nav > li > a:focus {
123     padding-left: 29px;
124 }
125 .bs-docs-sidebar .nav .nav > .active > a,
126 .bs-docs-sidebar .nav .nav > .active:hover > a,
127 .bs-docs-sidebar .nav .nav > .active:focus > a {
128     padding-left: 28px;
129     font-weight: 500;
130 }
131
132 /* Nav: third level (shown on .active) */
133 .bs-docs-sidebar .nav .nav .nav {
134     padding-bottom: 10px;
135 }
136 .bs-docs-sidebar .nav .nav .nav > li > a {
137     padding-top: 1px;
138     padding-bottom: 1px;
139     padding-left: 40px;
140     font-size: 12px;
141     font-weight: normal;
142 }
143 .bs-docs-sidebar .nav .nav .nav > li > a:hover,
144 .bs-docs-sidebar .nav .nav .nav > li > a:focus {
145     padding-left: 39px;
146 }
147 .bs-docs-sidebar .nav .nav .nav > .active > a,
148 .bs-docs-sidebar .nav .nav .nav > .active:hover > a,
149 .bs-docs-sidebar .nav .nav .nav > .active:focus > a {
150     padding-left: 38px;
151     font-weight: 500;
152 }
153
154 /* Show and affix the side nav when space allows it */
155 @media (min-width: 992px) {
156     .bs-docs-sidebar .nav > .active > ul {
157         display: block;
158     }
159     /* Widen the fixed sidebar */
160     .bs-docs-sidebar.affix,
161     .bs-docs-sidebar.affix-bottom {
162         width: 213px;
163     }
164     .bs-docs-sidebar.affix {
165         position: fixed; /* Undo the static from mobile first approach */
166         top: 20px;
167     }
168     .bs-docs-sidebar.affix-bottom {
169         position: absolute; /* Undo the static from mobile first approach */
170     }
171     .bs-docs-sidebar.affix .bs-docs-sidenav,.bs-docs-sidebar.affix-bottom .bs-docs-sidenav {
172         margin-top: 0;
173         margin-bottom: 0
174     }
175 }
176 @media (min-width: 1200px) {
177     /* Widen the fixed sidebar again */
178     .bs-docs-sidebar.affix-bottom,
179     .bs-docs-sidebar.affix {
180         width: 263px;
181     }
182 }
183 </style>
184 <script type="text/javascript">
185 $(function() {
186     'use strict';
187
188     $('.bs-docs-sidebar li').first().addClass('active');
189
190     $(document.body).scrollspy({target: '.bs-docs-sidebar'});
191
192     $('.bs-docs-sidebar').affix();
193 });
194 </script>
195 </head>
196 <body>
197 <div id="content" class="container">
198 <div class="row"><div class="col-md-9"><h1 class="title">Portable stereo speaker</h1>
199
200 <div id="outline-container-sec-1" class="outline-2">
201 <h2 id="sec-1"><span class="section-number-2">1</span> General</h2>
202 <div class="outline-text-2" id="text-1">
203 <ul class="org-ul">
204 <li>DISCLAIMER: I DO ELECTRONICS AND 3D DESIGN SOLELY AS A HOBBY. THERE
205 COULD BE ERRORS THAT CAN RESULT IN ALL KINDS OF DAMAGE. USE THESE
206 DESIGNS AT YOUR OWN RISK.
207 </li>
208
209 <li>This design is released under Creative Commons Zero (CC0) license.
210 </li>
211
212 <li>Author:
213 <ul class="org-ul">
214 <li>Svjatoslav Agejenko
215 </li>
216 <li>Homepage: <a href="https://svjatoslav.eu">https://svjatoslav.eu</a>
217 </li>
218 <li>Email: <a href="mailto://svjatoslav@svjatoslav.eu">svjatoslav@svjatoslav.eu</a>
219 </li>
220 </ul>
221 </li>
222
223 <li>See also:
224 <ul class="org-ul">
225 <li><a href="../../index.html">Other physical projects in this repository</a>
226 </li>
227 <li><a href="https://www.svjatoslav.eu/projects/">Other projects hosted at svjatoslav.eu</a>
228 </li>
229 </ul>
230 </li>
231 </ul>
232 </div>
233 </div>
234
235 <div id="outline-container-sec-2" class="outline-2">
236 <h2 id="sec-2"><span class="section-number-2">2</span> Project description</h2>
237 <div class="outline-text-2" id="text-2">
238 <p>
239 I had pair of good compact stereo speakers lying uselessly around as
240 well as secondhand TDA2030 Chinese knockoff audio amplifier chips.
241 Also I wanted to test modular construction approach: motherboard with
242 shared bus and functionality realized via pluggable modules. So I
243 built stereo speaker:
244 </p>
245
246
247 <figure>
248 <p><img src="make.png" class="img-responsive" alt="make.png">
249 </p>
250 </figure>
251
252 <p>
253 Indicator on the front panel shows available power within the
254 system. Ideally it should be at the maximum. It drops when batteries
255 run empty or when consumed power (too loud music) is greater than
256 onboard power supply or batteries can handle. It has on/off switch and
257 stereo audio input. Audio input impedance is about 100 ohms.
258 </p>
259
260
261 <figure>
262 <p><img src="make,%20side.png" class="img-responsive" alt="make,%20side.png">
263 </p>
264 </figure>
265
266 <p>
267 Idea for the holes on the top and smaller ones on the bottom back is
268 to enable air flow for passive cooling.
269 </p>
270
271
272 <figure>
273 <p><img src="make,%20back.png" class="img-responsive" alt="make,%20back.png">
274 </p>
275 </figure>
276
277 <p>
278 Entire construction is made of parts, no larger than
279 120x120x120mm. Maximum for my printer.
280 </p>
281 </div>
282 </div>
283
284 <div id="outline-container-sec-3" class="outline-2">
285 <h2 id="sec-3"><span class="section-number-2">3</span> Battery holder</h2>
286 <div class="outline-text-2" id="text-3">
287 <p>
288 Device is powered by 4 times AA NiMH batteries (1.2V each).
289 </p>
290
291
292 <figure>
293 <p><img src="battery%20holder/schematic.png" class="img-responsive" alt="schematic.png">
294 </p>
295 </figure>
296
297 <p>
298 I happened to have AA battery adapters lying around with different
299 bottom hole configurations. Therefore this weird hole design:
300 </p>
301
302
303 <figure>
304 <p><img src="battery%20holder/battery%20holder.png" class="img-responsive" alt="battery%20holder.png">
305 </p>
306 </figure>
307
308 <p>
309 Download:
310 </p>
311 <ul class="org-ul">
312 <li><a href="battery%20holder/battery%20holder.FCStd">FreeCAD file</a>
313 </li>
314 <li><a href="battery%20holder/battery%20holder.stl">STL file</a>
315 </li>
316 </ul>
317
318 <p>
319 Result:
320 <img src="battery%20holder/make.png" class="img-responsive" alt="make.png">
321 </p>
322
323 <p>
324 Attaches to the back of the body:
325 <img src="battery%20holder/mounted%20on%20the%20back.png" class="img-responsive" alt="mounted%20on%20the%20back.png">
326 </p>
327 </div>
328 </div>
329
330 <div id="outline-container-sec-4" class="outline-2">
331 <h2 id="sec-4"><span class="section-number-2">4</span> 20V up-step module</h2>
332 <div class="outline-text-2" id="text-4">
333 <p>
334 Battery pack voltage is routed through main on/off switch on the front
335 panel, and then it goes to the 20V up-step module.
336 </p>
337
338
339 <figure>
340 <p><img src="20V%20upstep%20module/schematic.png" class="img-responsive" alt="schematic.png">
341 </p>
342 </figure>
343
344 <p>
345 It uses ready made upstep module, but adds extra voltage filtering via
346 inductor and capacitors.
347 </p>
348
349
350 <figure>
351 <p><img src="20V%20upstep%20module/make.png" class="img-responsive" alt="make.png">
352 </p>
353 </figure>
354 </div>
355 </div>
356
357 <div id="outline-container-sec-5" class="outline-2">
358 <h2 id="sec-5"><span class="section-number-2">5</span> Main board</h2>
359 <div class="outline-text-2" id="text-5">
360 <p>
361 Voltage upstep above sits on top of main board (motherboard). It has
362 uniform central bus that spans all connectors.
363 </p>
364
365
366 <figure>
367 <p><img src="main%20board/internal%20bus.png" class="img-responsive" alt="internal%20bus.png">
368 </p>
369 </figure>
370
371
372 <figure>
373 <p><img src="main%20board/bus%20on%20the%20bottom,%202.png" class="img-responsive" alt="bus%20on%20the%20bottom,%202.png">
374 </p>
375 </figure>
376
377 <p>
378 First row of the main board is special IO terminal (for connecting
379 speakers, front panel, etc..)
380 </p>
381
382
383 <figure>
384 <p><img src="main%20board/IO%20terminal.png" class="img-responsive" alt="IO%20terminal.png">
385 </p>
386 </figure>
387
388 <p>
389 Remaining rows are for connecting boards:
390 </p>
391
392
393 <figure>
394 <p><img src="main%20board/1.png" class="img-responsive" alt="1.png">
395 </p>
396 </figure>
397
398 <p>
399 To provide structural support, main board is attached to frame:
400 </p>
401
402
403 <figure>
404 <p><img src="main%20board/board%20fixator%20body.png" class="img-responsive" alt="board%20fixator%20body.png">
405 </p>
406 </figure>
407
408 <p>
409 Download:
410 </p>
411 <ul class="org-ul">
412 <li><a href="main%20board/board%20fixator%20body.FCStd">FreeCAD file</a>
413 </li>
414 <li><a href="main%20board/board%20fixator%20body.stl">STL file</a>
415 </li>
416 </ul>
417
418 <p>
419 And boards plugged into main board are fixed at the top, using clip:
420 </p>
421
422
423 <figure>
424 <p><img src="main%20board/board%20fixator%20top%20clip.png" class="img-responsive" alt="board%20fixator%20top%20clip.png">
425 </p>
426 </figure>
427
428 <p>
429 Download:
430 </p>
431 <ul class="org-ul">
432 <li><a href="main%20board/board%20fixator%20top%20clip.FCStd">FreeCAD file</a>
433 </li>
434 <li><a href="main%20board/board%20fixator%20top%20clip.stl">STL file</a>
435 </li>
436 </ul>
437
438 <p>
439 Result:
440 </p>
441
442
443 <figure>
444 <p><img src="main%20board/bus%20on%20the%20bottom,%201.png" class="img-responsive" alt="bus%20on%20the%20bottom,%201.png">
445 </p>
446 </figure>
447
448
449 <figure>
450 <p><img src="main%20board/board%20fixator.png" class="img-responsive" alt="board%20fixator.png">
451 </p>
452 </figure>
453 </div>
454 </div>
455
456 <div id="outline-container-sec-6" class="outline-2">
457 <h2 id="sec-6"><span class="section-number-2">6</span> Mono audio amplifier module</h2>
458 <div class="outline-text-2" id="text-6">
459 <p>
460 Design uses scavenged secondhand Chinese TDA2030 audio amp
461 clones. Each chip is mono audio amplifier. Therefore 2 almost
462 identical audio amp modules had to be built, one for left speaker, one
463 for right.
464 </p>
465
466
467 <figure>
468 <p><img src="mono%20audio%20amp%20module/schematic.png" class="img-responsive" alt="schematic.png">
469 </p>
470 </figure>
471
472 <p>
473 I like to build on top of prototype PCBs. Gives results much faster
474 for one-off projects. Before soldering, I solve component layout on
475 paper:
476 </p>
477
478
479 <figure>
480 <p><img src="mono%20audio%20amp%20module/PCB%20layout.png" class="img-responsive" alt="PCB%20layout.png">
481 </p>
482 </figure>
483
484 <p>
485 Result - front:
486 </p>
487
488
489 <figure>
490 <p><img src="mono%20audio%20amp%20module/assembled%20front.png" class="img-responsive" alt="assembled%20front.png">
491 </p>
492 </figure>
493
494 <p>
495 Result - back:
496 </p>
497
498
499 <figure>
500 <p><img src="mono%20audio%20amp%20module/assembled%20back.png" class="img-responsive" alt="assembled%20back.png">
501 </p>
502 </figure>
503
504 <p>
505 Here copper tape is used as improvised heatsink.
506 </p>
507 </div>
508 </div>
509
510 <div id="outline-container-sec-7" class="outline-2">
511 <h2 id="sec-7"><span class="section-number-2">7</span> Speakers</h2>
512 <div class="outline-text-2" id="text-7">
513 <p>
514 High frequency small speaker and medium frequency bigger speaker are
515 combined.
516 </p>
517
518
519 <figure>
520 <p><img src="speakers/schematic.png" class="img-responsive" alt="schematic.png">
521 </p>
522 </figure>
523
524 <p>
525 Capacitor acts as high-pass filter on top of tiny PCB:
526 </p>
527
528
529 <figure>
530 <p><img src="speakers/PCB%20layout.png" class="img-responsive" alt="PCB%20layout.png">
531 </p>
532 </figure>
533
534 <p>
535 Speaker enclosure:
536 </p>
537
538
539 <figure>
540 <p><img src="speakers/speaker%20enclosure.png" class="img-responsive" alt="speaker%20enclosure.png">
541 </p>
542 </figure>
543
544 <p>
545 Download:
546 </p>
547 <ul class="org-ul">
548 <li><a href="speakers/speaker%20enclosure.FCStd">FreeCAD file</a>
549 </li>
550 <li><a href="speakers/speaker%20enclosure.stl">STL file</a>
551 </li>
552 </ul>
553
554 <p>
555 Speaker enclosure cover:
556 </p>
557
558
559 <figure>
560 <p><img src="speakers/speaker%20enclosure%20cover.png" class="img-responsive" alt="speaker%20enclosure%20cover.png">
561 </p>
562 </figure>
563
564 <p>
565 Download:
566 </p>
567 <ul class="org-ul">
568 <li><a href="speakers/speaker%20enclosure%20cover.FCStd">FreeCAD file</a>
569 </li>
570 <li><a href="speakers/speaker%20enclosure%20cover.stl">STL file</a>
571 </li>
572 </ul>
573
574 <p>
575 Result:
576 </p>
577
578
579 <figure>
580 <p><img src="speakers/make.png" class="img-responsive" alt="make.png">
581 </p>
582 </figure>
583 </div>
584 </div>
585
586 <div id="outline-container-sec-8" class="outline-2">
587 <h2 id="sec-8"><span class="section-number-2">8</span> Front panel</h2>
588 <div class="outline-text-2" id="text-8">
589 <p>
590 Initial idea was really simple panel:
591 </p>
592 <ul class="org-ul">
593 <li>on/off switch
594 </li>
595 <li>system power indicator
596 </li>
597 <li>stereo audio input
598 </li>
599 </ul>
600
601 <p>
602 But, since I'm using "agile" approach, during load-testing, it become
603 clear that active fan based cooling would be nice (when playing loud
604 music). I found tiny cooler fan that needs 5 volts to operate. Also I
605 need to power backlight for power indicator. For both of these cases,
606 I decided to add another voltage up-step module (target voltage output
607 set to 6V). This time directly on the front panel.
608 </p>
609
610
611 <figure>
612 <p><img src="front%20panel/schematic.png" class="img-responsive" alt="schematic.png">
613 </p>
614 </figure>
615
616 <p>
617 Front panel case:
618 </p>
619
620
621 <figure>
622 <p><img src="front%20panel/front%20panel,%20front.png" class="img-responsive" alt="front%20panel,%20front.png">
623 </p>
624 </figure>
625
626
627 <figure>
628 <p><img src="front%20panel/front%20panel,%20back.png" class="img-responsive" alt="front%20panel,%20back.png">
629 </p>
630 </figure>
631
632 <p>
633 Electronics fits inside:
634 </p>
635
636
637 <figure>
638 <p><img src="front%20panel/front%20panel,%20back,%20make.png" class="img-responsive" alt="front%20panel,%20back,%20make.png">
639 </p>
640 </figure>
641
642 <p>
643 Front view:
644 </p>
645
646
647 <figure>
648 <p><img src="front%20panel/front%20panel,%20front,%20make.png" class="img-responsive" alt="front%20panel,%20front,%20make.png">
649 </p>
650 </figure>
651
652 <p>
653 And attaches to the remaining components:
654 </p>
655
656
657 <figure>
658 <p><img src="front%20panel/attachment.png" class="img-responsive" alt="attachment.png">
659 </p>
660 </figure>
661 </div>
662 </div>
663
664
665 <div id="outline-container-sec-9" class="outline-2">
666 <h2 id="sec-9"><span class="section-number-2">9</span> Extra capacitors</h2>
667 <div class="outline-text-2" id="text-9">
668 <p>
669 Another thing that become clear during load-testing: output
670 power/volume can be further enhanced by adding high power capacitors
671 to even out load on primary 20V up-step module.
672 </p>
673
674
675 <figure>
676 <p><img src="extra%20capacitors/extra%20caps.png" class="img-responsive" alt="extra%20caps.png">
677 </p>
678 </figure>
679
680 <p>
681 Download:
682 </p>
683 <ul class="org-ul">
684 <li><a href="extra%20capacitors/extra%20caps.FCStd">FreeCAD project</a>
685 </li>
686 <li><a href="extra%20capacitors/extra%20caps.stl">STL file</a>
687 </li>
688 </ul>
689
690 <p>
691 Extra caps are mounted on top of the speaker and electrically attached
692 to the main board.
693 </p>
694
695
696 <figure>
697 <p><img src="extra%20capacitors/make.png" class="img-responsive" alt="make.png">
698 </p>
699 </figure>
700 </div>
701 </div>
702
703 <div id="outline-container-sec-10" class="outline-2">
704 <h2 id="sec-10"><span class="section-number-2">10</span> Center box</h2>
705 <div class="outline-text-2" id="text-10">
706 <p>
707 Last physical part, to attach it all together: central body.
708 </p>
709
710 <p>
711 Front:
712 <img src="center%20box/front.png" class="img-responsive" alt="front.png">
713 </p>
714
715 <p>
716 Back:
717 <img src="center%20box/back.png" class="img-responsive" alt="back.png">
718 </p>
719
720 <p>
721 Download:
722 </p>
723 <ul class="org-ul">
724 <li><a href="center%20box/center%20box.FCStd">FreeCAD file</a>
725 </li>
726 <li><a href="center%20box/center%20box.stl">STL file</a>
727 </li>
728 </ul>
729 </div>
730 </div>
731
732
733 <div id="outline-container-sec-11" class="outline-2">
734 <h2 id="sec-11"><span class="section-number-2">11</span> Conclusions / TODO</h2>
735 <div class="outline-text-2" id="text-11">
736 <p>
737 These things could be done better:
738 </p>
739
740 <ul class="org-ul">
741 <li>Instead of using undersized heatsinks on the audio amplifiers and
742 need for active cooling as a consequence, it would be better to try
743 to mount audio amplifier chip on top of speaker metallic body. It
744 would provide plenty of cooling and reduces power losses within
745 cable, since amplifier would be as close to the speaker as possible.
746 </li>
747
748 <li>I used agile design. That is, implemented functionality ad-hoc. If I
749 had done design in advance, then I could have had smarter connector
750 layout between main board and front panel. That is: Instead of
751 multiple smaller cables, one wide (multi connector) cable.
752 </li>
753
754 <li>Screw holes are too close to the edges on the front panel.
755 </li>
756
757 <li>It would be better if screw heads were slightly buried within
758 construction body.
759 </li>
760 </ul>
761
762
763 <p>
764 Overall, it was good learning experience and I was able to test
765 various ideas on it. Will add cooler later :)
766 </p>
767
768
769 <p>
770 Photo of initial PSU + audio amp test:
771 </p>
772
773
774 <figure>
775 <p><img src="initial%20test.png" class="img-responsive" alt="initial%20test.png">
776 </p>
777 </figure>
778 </div>
779 </div>
780 </div><div class="col-md-3"><nav id="table-of-contents">
781 <div id="text-table-of-contents" class="bs-docs-sidebar">
782 <ul class="nav">
783 <li><a href="#sec-1">1. General</a></li>
784 <li><a href="#sec-2">2. Project description</a></li>
785 <li><a href="#sec-3">3. Battery holder</a></li>
786 <li><a href="#sec-4">4. 20V up-step module</a></li>
787 <li><a href="#sec-5">5. Main board</a></li>
788 <li><a href="#sec-6">6. Mono audio amplifier module</a></li>
789 <li><a href="#sec-7">7. Speakers</a></li>
790 <li><a href="#sec-8">8. Front panel</a></li>
791 <li><a href="#sec-9">9. Extra capacitors</a></li>
792 <li><a href="#sec-10">10. Center box</a></li>
793 <li><a href="#sec-11">11. Conclusions / TODO</a></li>
794 </ul>
795 </div>
796 </nav>
797 </div></div></div>
798 <footer id="postamble" class="">
799 <div><p class="author">Author: Svjatoslav Agejenko</p>
800 <p class="date">Created: 2020-04-12 P 23:58</p>
801 <p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 26.1 (<a href="http://orgmode.org">Org-mode</a> 9.1.9)</p>
802 </div>
803 </footer>
804 </body>
805 </html>