Archiv der Kategorie: Arduino

Hier ist alles zum Arduino zu finden.

Hack einer 16*32 RGB LED Matrix – Teil III Der Sketch

Nachdem im 2. Teil der praktische Aufbau den theoretischen Überlegungen des 1. Teiles folgte, nun die Betrachtung von Softwareseite.

Um den Sketch anfangs möglichst einfach zu gestalten, wird im einfachsten Fall einfach eine statische Adresse an die drei Adresspins A, B und C gelegt. Die beiden RGB Ports werden ebenfalls nur mit statischen Daten über HIGH Pegel bedient. Damit beschränkt sich der Sketch im Wesentlichen auf die for-Schleife zur Taktung des CLK Pins und die Steuerung der Kontrollpins OE und LAT. Da dieser sehr einfache Sketch auf Anhieb seine Funktion erledigte, habe ich diesen sofort erweitert. Auf dem nachfolgenden Bild ist das Ergebnis eines bereits etwas modifizierten Sketches zu sehen, bei dem ein Adresszähler mit implementiert ist. Aber der Reihe nach.

Hack einer 16*32 RGB LED Matrix – Teil III Der Sketch weiterlesen

Hack einer 16*32 RGB LED Matrix – Teil II Die Verdrahtung

Schrittweise Verdrahtung des Panels mit dem Arduino Uno

Im 1. Teil dieses Hackings sind einige theoretische Grundüberlegungen und Annahmen entwickelt worden. In diesem Teil folgt der praktische Aufbau. Bei entsprechenden Kenntnissen der angelsächsischen Sprache ist es am einfachsten dem Adafruit Tutorial zu folgen.

Die 5V Stromversorgung des Panels erfolgt über 2 Schraubklemmen oder eine separate 4-pol. Steckerleiste. Zwei identische Stiftleisten mit Wanne zur Datenübertragung befinden sich auf der Rückseite des Panels. Die Eingangsseite ist mit IN und die Ausgangsseite mit OUT beschriftet.

Pinbelegung 16-pol. Header
Quelle: Adafruit

Leider gibt es auch unterschiedliche Pinbezeichnungen der 16-pol, Stiftleiste. Der Latch-Pin LAT kann beispielsweise auch mit STB (Strobe) gekennzeichnet sein. Die Funktion ist aber offensichtlich identisch. Ähnliches gilt auch für die Farbsteuereingänge R1, G1, B1 und R2, G2, B2 welche auch als R0, G0, B0 und R1, G1, B1 bezeichnet sein können. header_beschriftungInnerhalb dieser Dokumentation wird aber weiterhin nur die Bezeichnung synonym zu RGB0 und RGB1 bzw. RGB Port 0 oder 1 verwendet.

Die sukzessive Verkabelung dieser Stiftleiste gelingt mit dem beigefügten header_masse_1Flachbandkabel am einfachsten und sichersten über die 4 mit GND bezeichneten Masseleitungen. Diese können sehr einfach mit einem Ohmmeter eindeutig ausgemessen werden. Alle 4 Leitungen werden mit GND des Arduinos verbunden. Auf dem nebenstehenden Foto sind dieses die vier blauen Leitungen.

Als nächstes lassen sich die sechs RGB Steuereingänge recht gut zuordnen uheader_rgbnd mit den Arduino Uno Pins 2 bis 6 verbinden. Aus Ermangelung an weiteren blauen Kabeln, sind die beiden Steuereingänge B0 und B1 für die blauen LEDs mit gelben Leitungen verkabelt. Für LEDs der Farben Rot und Grün kamen jedoch synonyme Farben zur Anwendung.

header_abc_adresseIm nun folgenden Schritt werden die 3 Adressleitungen A, B, C an die Arduino Kontakte A0 bis A2 angeschlossen. Wie eingangs bereits beschrieben, besteht das Display aus 8 Sektionen; jeweils 2 Zeilen werden immer parallel angesteuert, so dass hier 8 * 2 = 16 Zeilen adressiert werden können.header_clk_oe_

Im letzten Schritt werden die 3 verbleibenden Leitungen CLK und OE mit den Pins 8 und 9 verbunden und zu guter Letzt der LAT (STB) Pin mit Pin 10 des Arduino Uno, hier im Bild noch nicht verdrahtet.

Debugging des Panels

Die in Teil I unter Zusammenfassung beschriebene mögliche Vorgehensweise soll nun im nächsten Teil sukzessive mit Hilfe eines Arduino Sketches erprobt und die bisherigen Vermutungen ggf. korrigiert und ergänzt werden.

Hack einer 16*32 RGB LED Matrix – Teil I Die Vorüberlegungen

Das Adafruit oder ähnliche 16*32 RGB LED Matrix Panels bestehen aus 16 Zeilen mit 32 Spalten ziemlich heller RGB LEDs. In Summe also 512 RGB LEDs pro Panel, die irgendwie auch angesteuert werden wollen. Das Panel hat leider keine PWM Steuereingänge, die Farbkanäle lassen sich nur digital Ein- und Ausschalten! Eine Helligkeits- bzw. Farbsteuerung muss daher manuell durchgeführt werden. Mit Einschalten aller RGB LEDs ergibt sich eine gleichmäßig weiße Ausleuchtung. Die Panels sind elektrisch kaskadierbar, ein Arduino Uno mit der Adafruit Bibliothek jedoch nur eingeschränkt dazu in der Lage.

Es werden 12 Arduino Pins und 800 Byte RAM bei Verwendung der Library benötigt um ein 12-bit Farbimage zu speichern. Die Adafruit Bibliothek unterstützt ausschließlich den Uno oder den Mega. Der Arduino Leonardo oder andere Arduino Mikrocontroller werden derzeit nicht unterstützt.

Ein sehr gutes Tutorial ist bei der Lady Ada zu finden. Die beiden später ggf. noch notwendigen Bibliotheken RGB-Matrix-Panel sowie die Adafruit-GFX-Library können über das jeweilige Adafruit GitHub Repository durch Klick auf den Button „Download Zip“ heruntergeladen werden.

Stromversorgung

Die Stromversorgung des LED Panels darf keinesfalls über den Arduino erfolgen, da dieser nicht genügend Leistung liefern kann und zerstört werden würde! Das 16*32 RGB LED Display darf daher nur über ein separates Netzteil mit 5V und mindestens 2,5A betrieben werden. Werden Panels kaskadiert, vervielfacht sich entsprechend der Strombedarf und ein entsprechend leistungsstärkeres Netzteil ist notwendig!

Hardware Hacking des Panels

Um überhaupt erst einmal eine grobe Idee über die grundsätzliche Funktionsweise des Panels zu entwickeln, ist es durchaus sinnvoll auch einmal die Schaltung nebst Datenblätter dazu anzuschauen. Ein konkretes Schaltbild konnte ich jedoch bisher nicht ausfindig machen. Deshalb habe ich erst einmal festgehalten, welche ICs überhaupt verbaut worden sind, da außer bei Adafruit ansonsten nichts verwendbares an Informationen zu finden war. Jedoch selbst bei der bereits recht ausführlichen Beschreibung von Adafruit fehlen immer noch diverse Details.

Hack einer 16*32 RGB LED Matrix – Teil I Die Vorüberlegungen weiterlesen

Einige Ideen zur Erweiterung des Funktionsumfanges eines Class-E Teslaspulenbausatzes – Teil II

Im 1. Teil konnte ich bereits meine Erfahrungen mit dem Aufbau des Class-E SSTC Bausatzes beschreiben. Nachfolgend nun noch die Schilderung einiger weiterer Ideen und Erfahrungen. Auch hier möchte ich jedoch erst wieder mit einem Warnhinweis beginnen.

Teslaspulen sind kein Spielzeug mit dem unbedarft umgegangen werden kann. Schmerzhafte oder auch tödliche Verletzungen sind durchaus im Bereich des Möglichen. Ich kann keinerlei Verantwortung für entstandene Schäden übernehmen!

Optionale Erweiterungsideen

Nun ist so ein „Projekt Teslaspule“ ein durchaus faszinierendes Objekt und auch eine ideale Spielwiese zur Verwirklichung weiterer Ideen. In den nächsten Ausbaustufen sollen durch einige Einstell- und Überwachungsmöglichkeiten der sichere Dauerbetrieb erhöht werden. Eine visuelle Spannungs- und Stromüberwachung mittels einer analogen Anzeige Teslaspulenbausatz_6_CIMG3833_resizederschien mir dazu sinnvoll. Mit einem zusätzlichen Lüfter sollen lt. Manual 3A bei 30V im Dauerbetrieb machbar sein. Die SSTC Baugruppe selber kann bis maximal 35V Versorgungsspannung betrieben werden. Im Wesentlichen sollten dafür die beiden Elkos C2 und C4 mit jeweils 2200uF/35V verantwortlich sein wie aber auch der begrenzte Eingangsspannungsbereich des 12V Stabis. Der Austausch gegen 50V LOW ESR Kondensatoren sollte in diesem Bereich zumindest die Grenzen deutlich nach oben verschieben. Über einen 2. spannungsfesten Längsregler kann diese zu hohe Eingangsspannung vorm 12V Stabi auf ungefährliche Werte unterhalb von 35V begrenzt werden. Eine weitere Alternative wäre auch den 12V Stabi ggf. durch die Hochvoltausführung eines LM317HV zu ersetzen. Die Krönung wäre dann noch eine einstellbare Stromversorgung der SSTC Baugruppe über einen relativ weiten Bereich von vielleicht 24V bis 48V. Ebenfalls eine interessante Option ist noch eine einstellbare Strombegrenzung von 1A bis max. 5A einzubauen.

Einige Ideen zur Erweiterung des Funktionsumfanges eines Class-E Teslaspulenbausatzes – Teil II weiterlesen

Digispark Minitimer mit einem Atmel Attiny 85 – Das kleine Digispark Kochbuch

Vor einigen Tagen sprach mich ein Freund an, ob ich ihm testweise mit einem meiner Arduinos eine simple zeitgesteuerte Ein-/Aus-Schaltung einer kleinen Spülpumpe programmieren könnte. Auf meine Frage, warum denn dafür keine Schaltuhr aus dem Baumarkt funktioniert, bekam ich folgende Antwort: Die üblichen mechanischen Schaltuhren aus dem Baumarkt haben Schaltreiter mit 30 Minuten Auflösung. Die Pumpe soll aber alle 12 Stunden nur für 10 Sekunden laufen, eine Leitung spülen und dann gleich wieder abgeschaltet werden. Außerdem soll die Bedienung so einfach und vor allem auch so robust wie möglich sein.

Digispark_Minitimer_BaugruppeAlso programmierte ich einen kleinen Sketch und steckte auf dem Steckbrett die beiden LEDs und die Relaissteuerung passend zusammen. Es funktionierte alles einwandfrei. Allerdings widerstrebte es mir für so eine simple Aufgabe am Ende einen vollständigen Arduino Uno oder Leonardo zu verwenden. Einen Barebone mit einem ATmega328P zusammenzulöten erschien mir ebenfalls immer noch zu aufwändig. Nach einigen weiteren Überlegungen eDigispark_Attiny85ntschied ich mich im Laufe des Projektes ein deutlich kleineres Arduino Derivat mit einem kleineren Microcontroller zu verwenden. Ein Digispark sollte hier die Lösung werden. Nebenbei entstand dazu gleich noch ein kleines Digispark Kochbuch.

Digispark Minitimer mit einem Atmel Attiny 85 – Das kleine Digispark Kochbuch weiterlesen

Das SIM900 GSM/GPRS Shield und der Leonardo

Im Blog Arduino-Hannover.de hatte ich bereits meine ersten Erfahrungen mit dem SIM900 Shield beschrieben. Bei den weiteren Untersuchungen und Vorbereitungen für das eigentliche Projekt, bin ich dann auf einige Ungereimtheiten gestoßen. Ich brachte es partout nicht zustande auch einmal eine SMS zu empfangen. Im nächsten Supermarkt habe ich mir dann erst einmal eine neue Prepaid SIM Karte beschafft. Nach einigen Vorrecherchen war ich mir sicher, dass der Provider klarmobil.de meinen technischen Anforderungen entspricht. Ich habe jetzt 5 € bezahlt und dafür eine SIM mit 10 € Startguthaben erhalten. Die Anmeldung der SIM-Karte erfolgt recht komfortabel über das Internet. Man muss nur darauf achten, sich nicht weitere und damit teurere Tarife unterjubeln zu lassen und natürlich keinesfalls eine Kontonummer anzugeben!

Selbstverständlich kann ich keinerlei Verantwortung bei Verwendung der Information aus diesem Beitrag übernehmen, weder für die SIM, die AT-Kommandos oder für den Sketch! Bei einem Fehlverhalten kann es zum Beispiel schnell passieren, dass das Guthaben auf der SIM-Karte umgehend aufgebraucht ist.

Aber auch mit der neuen SIM-Karte konnte ich immer noch keine SMS empfangen! Was nun?

Das SIM900 GSM/GPRS Shield und der Leonardo weiterlesen

Das Stroboskop II – oder wie ich mich mit den Arduino Einschränkungen arrangiere

Im Arduino Hannover Blog http://arduino-hannover.de/2014/03/15/mein-paket-ein10w-power-led-modul/#more-842 hatte ich bereits meine ersten Erfahrungen mit meinem LED-Stroboskop zur Verfügung gestellt. Die ersten Schritte im Bereich von relativ langsamen Millisekunden und länger sind hier noch recht simpel nachvollziehbar und funktionieren alle wunderbar. Wenn jedoch bei höheren Frequenzen die Anforderungen in den Mikrosekundenbereich hinein steigen, erscheinen recht schnell diverse Fragezeichen. Der Sketch verhält sich nicht wie erwartet. Um das nicht nachvollziehbare Timingverhalten besser analysieren zu können, habe ich angefangen ganz einfache Sketche zu schreiben und die Ergebnisse dann mit einem Oscilloscope untersucht und nachfolgend dokumentiert. Das Stroboskop II – oder wie ich mich mit den Arduino Einschränkungen arrangiere weiterlesen

Digitale Spannungsregelung mit MOSFET und Arduino über PWM (Teil 3)

Nach den theoretischen Grundsatzüberlegungen im 2. Teil erfolgt nun der praktische Aufbau im 3. Teil, allerdings verbunden mit weiteren theoretischen Grundlagen. Digitale Spannungsregelung mit SpannungsteilerHier nun erst einmal die veränderte Hardware und eine wichtige Warnung gleich noch mit dazu! Die Spannung an allen Pins des Arduino darf die Versorgungsspannung keinesfalls (typ. 5V oder auch 3,3V je nach Board) überschreiten! Mir sind während des Aufbaues und der ersten Versuche nacheinander gleich 2 Analogeingänge meines Atmega 328 wegen versehentlicher Überspannung durch Unachtsamkeit abgeraucht. Aus verständlichen Gründen kann ich grundsätzlich keine Haftung übernehmen! Ich kann grundsätzlich auch nicht garantieren, dass die Hardware oder die Software einwandfrei funktioniert. Auch dieser Teil ist als Nachbauanleitung nicht geeignet und soll hauptsächlich zur Diskussion anregen und Grundlagen vermitteln. Das interessante Kopfbild zum Beitrag habe ich übrigens hier gefunden. Hier lässt sich sich recht gut erkennen, wie sich durch Veränderung der Pulsbreite der mittlere Gleichspannungsanteil ebenfalls verändern lässt.

Digitale Spannungsregelung mit MOSFET und Arduino über PWM (Teil 3) weiterlesen

Die Zeit – im Sommer und im Winter

Als ich angefangen habe mich mit dem Thema Zeitumstellung zur Sommer- und Winterzeit zu beschäftigen, bin ich von einigen wenigen Zeilen Code mit der einen oder anderen if-Abfrage ausgegangen, die so nebenbei mal eben vorm Frühstück geschrieben werden. Erst nach und nach ist mir erst bewusst geworden, dass die Umstellung zur Sommer- und Winterzeit doch etwas komplexer ist. Aber der Reihe nach.

Im Rahmen eines Uhrenprojektes stellte sich mir die Frage, ob ich einen einfachen freilaufenden, per Interrupt gesteuerten Sekundentaktgenerator aufbaue, einen DCF77 Empfänger verwende oder eine RTC (Real Time Clock) auch Echtzeituhr genannt einbaue.

Der DCF77-Empfänger war anfangs favorisiert, schied aber nach einigen ersten Versuchen bereits aus, da die Empfangsantenne in direkter Nähe einer gemultiplexten LED-Anzeige untergebracht werden musste. Das Störfeld der Anzeige lies einfach keinen zuverlässigen Empfang des Zeitzeichensenders in Mainflingen bei Frankfurt zu.

Am einfachsten zu realisieren ist eine freilaufende Uhr über einen Interruptgesteuerten Sekundentaktgenerator, sofern Schaltjahr und Sommerzeitumstellung keine Berücksichtigung finden müssen. Aus einem anderen Uhrenprojekt wusste ich, dass die Genauigkeit für dieses neue Uhrenprojekt von mir grundsätzlich ebenfalls völlig ausreichend sein würde, da die Abweichung bei Zimmertemperatur deutlich unter einer Minute im Jahr liegt. Eine weitere Hürde ergab sich jedoch bei Stromausfall, da die Uhr keine Bedienelemente haben sollte. Das Stellen der Uhrzeit hätte in dem Fall über einen PC stattfinden müssen, was jedoch eher nicht DAU-tauglich ist.

Die Zeit – im Sommer und im Winter weiterlesen

DDS Signalgenerator mit AD9850

Die „Direkte Digitale Synthese“ (kurz DDS) ist ein beliebtes Verfahren zur Erzeugung periodischer Signale beliebiger Kurvenform mit theoretisch unbegrenzter Frequenzauflösung. Mit dem hier verwendeten DDS-Chip AD9850 von Analog Devices können von nahezu 0Hz bis max. 40MHz sinusförmige Signale erzeugt werden. Das Sinussignal ist in digitaler Form auf dem Chip hinterlegt und wird über einen schnellen 10-bit DA-Wandler kontinuierlich ausgegeben. Je nach Aufbau verändern sich oberhalb der 30MHz Grenze allerdings die Kurvenform und Amplitude deutlich. Bis etwa 40MHz lassen sich aber durchaus akzeptable Ergebnisse erzielen. Bei 40MHz halbiert sich jedoch bereits die unbelastete Ausgangsspannung auf etwa 500mVss. Bei 50MHz sindAD9850_Frontseite es gerade mal noch etwa 400mVss! Ein geregelter 50Ohm Pufferverstärker könnte an dieser Stelle daher noch Sinn machen. Darüber hinaus können theoretisch bis zu 62,5MHz erzeugt werden; das Signal ist dann allerdings weit weg von einer Sinusform, außerdem nimmt die Amplitude rapide weiter ab. DDS Signalgenerator mit AD9850 weiterlesen