{"id":245,"date":"2019-11-17T13:18:45","date_gmt":"2019-11-17T13:18:45","guid":{"rendered":"https:\/\/dieter.dimo4u.de\/?page_id=245"},"modified":"2022-05-19T10:20:15","modified_gmt":"2022-05-19T09:20:15","slug":"weihnachtspyramide-dimmen","status":"publish","type":"page","link":"https:\/\/dieter.dimo4u.de\/?page_id=245","title":{"rendered":"Weihnachtspyramide dimmen"},"content":{"rendered":"<figure id=\"attachment_106\" aria-describedby=\"caption-attachment-106\" style=\"width: 225px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-106 size-medium\" src=\"https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-225x300.jpg\" alt=\"\" width=\"225\" height=\"300\" srcset=\"https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-225x300.jpg 225w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-768x1024.jpg 768w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-1152x1536.jpg 1152w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-1536x2048.jpg 1536w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-540x720.jpg 540w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-1080x1440.jpg 1080w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-1980x2640.jpg 1980w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0522-scaled.jpg 1920w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><figcaption id=\"caption-attachment-106\" class=\"wp-caption-text\">Testaufbau mit externen 400Hz-Generator<\/figcaption><\/figure>\n<p>Das ist mein erstes Projekt nach dem Rentenstart. Die mit viel Engagement von den Kollegen gebaute Pyramide war einfach zu hell f\u00fcr die gem\u00fctliche Weihnachtsstimmung. <a href=\"https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/12\/IMG_0709.mov\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-105 size-medium\" src=\"https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-225x300.jpg\" alt=\"\" width=\"225\" height=\"300\" srcset=\"https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-225x300.jpg 225w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-768x1024.jpg 768w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-1152x1536.jpg 1152w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-1536x2048.jpg 1536w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-540x720.jpg 540w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-1080x1440.jpg 1080w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-1980x2640.jpg 1980w, https:\/\/dieter.dimo4u.de\/wp-content\/uploads\/2019\/11\/IMG_0521-scaled.jpg 1920w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><\/a>Da kam sofort die Idee, die LED-Lampen zu dimmen. Problem der Lampen ist nur, das da drin nur ein Vorschaltkondensator und die Gleichrichterbr\u00fccke ist. Also mu\u00df die Netzspannung runtergeregelt werden. Wenn man aber sich den Strom durch die LED&#8217;s anschaut, sieht man sofort, da\u00df die dann flimmern m\u00fcssen, weil nur noch in den Sinusspitzen Strom flie\u00dft.<\/p>\n<h5>L\u00f6sung von mir:<\/h5>\n<p>mit Atmelcontroller ATTiny25 einen kleinen Sinusgenerator f\u00fcr 400Hz bauen, NF-Verst\u00e4rker (von Amazon 35W Digitalverst\u00e4rker) nachschalten und das Ausgangssignal an einen Netztrafo sekund\u00e4rseitig anschlie\u00dfen. Als Extra dann noch: ein Poti am Eingang vom NF-Verst\u00e4rker und schon ist die regelbare Sinusspannung 80 &#8211; 150V \/ 400Hz da. Stromversorgung aus den vorhandenen 24V-Schaltnetzteil.<br>Der Sinusgenerator erh\u00e4lt noch einen RC-Ausgangsfilter, damit es nicht soviel Oberwellen gibt (EMV).<br>Code von Sinusgenerator:<\/p>\n\n<pre class=\"wp-block-code has-secondary-color has-buttons-text-background-color has-text-color has-background\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-code-table shcb-line-numbers shcb-wrap-lines\"><span class='shcb-loc'><span><span class=\"hljs-comment\">\/*<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> * main.c<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> *<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> *  Created on: 05.11.2018<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> *      Author: Dieter<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\"> *\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/*<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Fuse set: Clock_div_8 aus (8MHz RC-Clock), Rest auf Standard-Einstellungen<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Pin 1\t\tReset (PB5)<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Pin 2\t\tPB3<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Pin 3\t\tPB4<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Pin 4\t\tGND<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Pin 5\t\tPB0<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Pin 6\t\tPB1<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Pin 7\t\tPB2<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">Pin 8\t\tVCC<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">#define F_CPU 8000000UL<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">#include &lt;avr\/pgmspace.h&gt;<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">#include &lt;avr\/io.h&gt;<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">#include &lt;stdint.h&gt;<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">#include &lt;util\/delay.h&gt;<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">#include &lt;math.h&gt;<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>uint8_t idx = <span class=\"hljs-number\">0<\/span>;\n<\/span><\/span><span class='shcb-loc'><span>uint8_t sine&#091;<span class=\"hljs-number\">128<\/span>];\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>int main(void) {\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/ Fill Sinus-Table<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">for<\/span> (uint8_t i = <span class=\"hljs-number\">0<\/span>; i &lt; <span class=\"hljs-number\">128<\/span>; i++) \n<\/span><\/span><span class='shcb-loc'><span>        {\n<\/span><\/span><span class='shcb-loc'><span>           sine&#091;i] = (uint8_t) (sin(i * <span class=\"hljs-number\">2<\/span> * <span class=\"hljs-number\">3.1415<\/span> \/ <span class=\"hljs-number\">128<\/span>) * <span class=\"hljs-number\">127<\/span> + <span class=\"hljs-number\">128<\/span>);\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>\tPORTB = <span class=\"hljs-number\">0b00000000<\/span>;\n<\/span><\/span><span class='shcb-loc'><span>\tDDRB = (<span class=\"hljs-number\">1<\/span> &lt;&lt; PB1) | (<span class=\"hljs-number\">1<\/span> &lt;&lt; PB4);\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\tPLLCSR |= (<span class=\"hljs-number\">1<\/span> &lt;&lt; PLLE);\t\t<span class=\"hljs-comment\">\/\/ PLL starten<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/wait for PLL Lock<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">while<\/span> (!(PLLCSR &amp; (<span class=\"hljs-number\">1<\/span> &lt;&lt; PLOCK)))\n<\/span><\/span><span class='shcb-loc'><span>\t;\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\tPLLCSR |= (<span class=\"hljs-number\">1<\/span> &lt;&lt; PCKE);\t\t\t<span class=\"hljs-comment\">\/\/ PLL_Clock = 64MHz<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\n<\/span><\/span><span class='shcb-loc'><span>\tOCR1B = sine&#091;idx &amp; <span class=\"hljs-number\">0x7f<\/span>];\n<\/span><\/span><span class='shcb-loc'><span>\tOCR1A = sine&#091;(idx + <span class=\"hljs-number\">32<\/span>) &amp; <span class=\"hljs-number\">0x7f<\/span>];\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/Timer1 \/2 PWM 1A\t\tTimer1_Clock = 32MHz; PWM-Takt = 125KHz<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/ Enable PWM on PB1 (Pin 6)<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\tTCCR1 = (<span class=\"hljs-number\">1<\/span> &lt;&lt; CS10) | (<span class=\"hljs-number\">1<\/span> &lt;&lt; PWM1A) | (<span class=\"hljs-number\">1<\/span> &lt;&lt; COM1A1);\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/Enable PWM on PB4 (Pin 3)<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\tGTCCR = (<span class=\"hljs-number\">1<\/span> &lt;&lt; PWM1B) | (<span class=\"hljs-number\">1<\/span> &lt;&lt; COM1B1);\n<\/span><\/span><span class='shcb-loc'><span>\t_delay_us(<span class=\"hljs-number\">500<\/span>);\t\t<span class=\"hljs-comment\">\/\/ 500\u00b5s warten, damit sich Ausgangsfilter einschwingen<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/ Schleife f\u00fcr 128 Punkte der Sinuskurve in PWM programmieren\t<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">while<\/span> (<span class=\"hljs-number\">1<\/span>) \n<\/span><\/span><span class='shcb-loc'><span>\t{\n<\/span><\/span><span class='shcb-loc'><span>\tOCR1B = sine&#091;idx &amp; <span class=\"hljs-number\">0x7f<\/span>];\n<\/span><\/span><span class='shcb-loc'><span>\tOCR1A = sine&#091;(idx + <span class=\"hljs-number\">32<\/span>) &amp; <span class=\"hljs-number\">0x7f<\/span>];\n<\/span><\/span><span class='shcb-loc'><span>\tidx++;\n<\/span><\/span><span class='shcb-loc'><span>\t_delay_us(<span class=\"hljs-number\">16<\/span>);\t\t\t<span class=\"hljs-comment\">\/\/ 400Hz<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/\t_delay_us(500);\t\t\t\/\/ 15Hz<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/\t_delay_us(151);\t\t\t\/\/ 50Hz<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/\tohne delay\t\t\t\/\/ 2.2KHz<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/\tohne delay\tund OCR1A\t\/\/ 3.8KHz<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>}\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>","protected":false},"excerpt":{"rendered":"<p>Das ist mein erstes Projekt nach dem Rentenstart. Die mit viel Engagement von den Kollegen gebaute Pyramide war einfach zu hell f\u00fcr die gem\u00fctliche Weihnachtsstimmung. Da kam sofort&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-full-width.php","meta":{"footnotes":""},"class_list":["post-245","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/pages\/245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=245"}],"version-history":[{"count":29,"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/pages\/245\/revisions"}],"predecessor-version":[{"id":548,"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/pages\/245\/revisions\/548"}],"wp:attachment":[{"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}