Quantcast
Channel: Arduino-Hannover
Viewing all 43 articles
Browse latest View live

Der Arduino Sketch zur Class-E Teslaspule – Teil III

$
0
0

In Teil I und Teil II hatte ich bereits einige meiner ersten Erfahrungen mit dem Aufbau eines Bausatzes einer SSTC Teslaspule sowie einige Funktionserweiterungen dazu beschrieben. In diesem Teil III konzentriere ich mich weitgehend auf die Ideen rund um den Arduino Sketch. Im Wesentlichen besteht der Wunsch den Betrieb der Teslaspule so betriebssicher wie möglich zu machen.

Vorab noch der inzwischen übliche Sicherheitshinweis. Bitte unbedingt beachten! Es ist kein Spaß!

Der Betrieb einer Teslaspule ist und bleibt gefährlich!

Es besteht dabei immer die Gefahr schmerzhafter oder gar tödlicher Verletzungen. Bei Experimenten mit hochfrequenter Hochspannung können andere elektrische Geräte gestört oder beschädigt werden. Durch die Entladungen entstehen Ozon und Stickoxide. Ozon ist ein Reizgas, das Kopfschmerzen, Übelkeit, Augenreizungen und vieles mehr hervorruft. Entstehende UV-Strahlung kann Netzhautschäden verursachen, um nur einige wenige der potentiellen Gefahrenquellen zu nennen.

Ich übernehme keinerlei Haftung für Sach- oder Personenschäden.

Aufgabenstellung

Zur Überwachung und Steuerung des HF-Leistungsgenerators der Teslaspule habe ich einen Arduino Pro Micro verbaut, der im Grunde zum jetzigen Zeitpunkt erst einmal nur einfache Überwachungs- und Steuerungsaufgaben übernimmt. Zur Benutzerführung ist inzwischen noch ein kleines 2-zeiliges LCD mit je 16 Zeichen dazugekommen. Neben dem Arduino Pro Micro sollte auch jedes andere Arduino Derivat funktionieren.

Zu überwachen sind folgende Parameter:

  • Stromaufnahme der TeslaspuleTeslaspulenbausatz_9_Lüftermontage_CIMG3846R
  • Temperatur des MOSFET Kühlkörpers
  • Temperatur der Teslaspule

Aktionen in Abhängigkeit der Ereignisse:

  • Kühlung des Kühlkörpers über einen Lüfter mit Drehzahlsteuerung per PWM
  • Kühlung der Teslaspule über einen separate PWM-Lüfter
  • Notabschaltung bei zu hoher Temperatur an Teslaspule oder Kühlkörper
  • Notabschaltung bei zu hoher Stromaufnahme
  • Anzeige des Betriebs- und Fehlerzustandes auf einem LCD

Verdrahtung der Sensoren und Aktoren

Teslaspulenbausatz_10_SensorHeatSink_CIMG3847RAls Temperaturfühler kommen kleine LM35 Sensoren im TO92 Gehäuse zum Einsatz, die ich jeweils in die Teslaspule und an die Unterseite des Kühlkörpers mit Sekundenkleber geklebt und mit Tape zusätzlich fixiert habe. Die Kühlung erfolgt über 2 der im PC üblichen 4-pol. PWM-Lüfter. Die Anschlussfolge der Peripherie ist nachfolgend aufgeführt. Zu beachten ist noch, die externen Sensoren möglichst über abgeschirmte Kabel mit den Sensoreingängen des Controllers zu verbinden. Ansonsten strahlt die Teslaspule ihre HF über die als Antenne wirkenden Verbindungskabel direkt in die Eingänge des AD-Wandlers. Mit Temperaturmessung hat das dann nicht mehr viel zu tun. Zumindest sollten die Anschlussleitungen ordentlich verdrillt und über ein RC-Tiefpass 10k/0,1uF mit dem Analogeingang des Controllers verbunden werden. Gleichzeitig bildet das RC-Glied eine hoffentlich wirksame ESD Schutzmaßnahme falls doch einmal mit der Hochspannung ein ungeplantes Malheur passieren sollte.

  • Arduino Pin  – Sensor / Ausgang
  • A0                – LM35 Vout pin (5V Vout GND) for heat sink
  • A1                – LM35 Vout pin (5V Vout GND) for coil
  • A2                – Over-current measurement pin
  • 3                  – PWM for heat sink fan
  • 5                  – PWM for coil fan
  • 4                  – Tesla coil generator power on/off
  • Arduino Pin – LCD Anschluss
  • 12               – RS (Register Select)
  • 11               – E (Enable)
  • 10               – D4
  • 9                 – D5
  • 8                 – D6
  • 7                 – D7Teslaspulenbausatz_11_Motherboard_CIMG3848R

Auf dem nachfolgenden Foto ist eine Ansicht des Prototypenaufbaus zu sehen. Die anfangs noch externe Messbereichsumschaltung für das analoge Zappelmeter ist inzwischen auch mit auf dem Motherboard gelandet um den Verkabelungsaufwand etwas zu reduzieren. Interruptor und SSTC werden anschließend noch direkt mit dem Motherboard verbunden und über Abstandsbolzen fest miteinander verschraubt.

Der Deklarationsteil mit den globalen Konstanten und Variablen im Arduino Sketch

Zum debuggen ist der serielle Monitor nicht perfekt aber durchaus hilfreich. Hier wird die Baudrate festgelegt.

const unsigned int BAUDRATE = 9600;               // Baud rate for the serial monitor

Anschließend wird die LCD Library eingebunden und mit den verbundenen Pins initialisiert.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 9, 8, 7);                    // RS, E, D4, D5, D6, D7

Die weiteren verwendeten Ein- und Ausgänge werden hier nun festgelegt.

#define HEATSINKFAN 3                                     // Pin to connect heat sink fan

#define COILFAN 5                                               // Pin to connect coil fan

#define TESLAPOWER 4                                     // Pin to switch on/off Tesla power

#define TEMPHEATSINKSENSOR A0                // Connect LM35 for heat sink fan control

#define TEMPCOILSENSOR A1                          // Connect LM35 for Tesla coil fan

Den Alarmpegel der Kühlkörpertemperatur habe ich erst einmal auf 60°C festgelegt und den der Teslaspule auf 50°C. Ggf. müssen die Abschaltwerte später noch etwas angepasst werden. Um noch zu verhindern, dass der Teslagenerator mit Überschreiten eines Grenzwertes anfängt zu pumpen, ist eine Hysterese vorgesehen. Das ermöglicht der Anlage sich wieder etwas abzukühlen.

#define HEATSINKALARMLEVEL 60                  // Switch off power at 60°C heat sink

#define COILALARMLEVEL 50                            // Switch off power at 50°C coil temp

#define HYSTERESYS 1                                      // 1°C hysteresys, time to cool down

Um Messfehler zu eliminieren, werden erst 20 Messungen zur Mittelwertbildung durchgeführt und die Ergbnisse in die jeweiligen Temperaturvariablen tempHeatSink und tempCoil abgelegt.

const uint8_t measureCycles = 20;                     // Build average on some measure cycles

uint32_t tempHeatSink = 0;                                  // Stores the actual heat sink temperature

uint32_t tempCoil = 0;                                           // Stores the actual Tesla coil temperature

Zu guter Letzt wird über den Analogeingang ja auch noch die Stromaufnahme über einen 0,1R Shunt gemessen. Die Notabschaltung erfolgt hier bei mehr als 3,5A. In der Variablen alarmFlag ist der Auslöser der Notabschaltung gespeichert.

#define CURRENTMEASUREMENTPIN A2      // Pin to measure current

#define CURRENTALARMLEVEL 3500              // Switch of at 3500mA current

uint32_t current = 0;                                              // Stores the actual current

uint8_t alarmFlag = 0;                                           // Stores the kind of alarm

Das Arduino Setup

Die void setup() Routine ist noch weniger spektakulär. Nachfolgend die wesentlichen Elemente dafür.

Initialisierung der seriellen Schnittstelle mit der oben unter BAUDRATE definierten Übertragungsrate.

Serial.begin(BAUDRATE);

Der LCD Library wird hier mitgeteilt welches Display angeschlossen ist und gestartet.

lcd.begin(16, 2);                                                    // Number of columns and rows

Wer möchte kann vor der Zeile mit dem Löschen des LCD Speicherinhaltes einen Text ausgeben über lcd.print(„My Tesla Coil“); Wichtig wäre dann noch ein kurzes delay (1000); oder auch länger folgen zu lassen, sonst wird die Ausgabe auf dem LCD sofort wieder gelöscht!

lcd.setCursor(0, 0);                                               // Position cursor top left

lcd.clear();                                                             // Clear LCD

Der Arduino Ausgang für die Notabschaltung des Teslagenerators wird hier initialisiert und die Teslaspule auch gleich eingeschaltet. Da direkt im Anschluss hier die void loop() abgearbeitet wird, sind die Schutzmaßnahmen umgehend aktiv und lösen im Fehlerfall sofort aus.

pinMode(TESLAPOWER, OUTPUT);

digitalWrite(TESLAPOWER, HIGH);                   // Switch on power for Tesla coil

Die Arduino Loop

Die void loop() ist noch unspektakulärer, da sie sich einiger Hilfsroutinen bedient und ansonsten nur Textausgaben über den seriellen Monitor und das LCD ausgibt.

In dieser Helferroutine hier werden die Analogeingänge mit ihren Sensorwerten abgefragt und konditioniert.

analogValues();                                                     // Catch the actual temp and current

Im Falle der Überschreitung der vorgegebenen Grenzwerte wird die Versorgungsspannung der Teslaspule sofort über einen Power MOSFET abgeschaltet.

emergencyPowerOff();                                          // Emergency power off

Über die ermittelte Temperatur wird anschließend noch die Drehzahl der beiden Lüfter geregelt.

fanControlPWM();

Auch die Hilfsfunktionen selber sind alle entsprechend einfach und überschaubar ohne Schnörkel programmiert. Die Kommentare im Sketch sollten die jeweilige Funktion weitgehend erklären und verstehen helfen.

That’s it! Es gibt durchaus noch das eine oder andere Verbesserungspotential um die Betriebssicherheit der Class-E SSTC weiter zu erhöhen. Zum Beispiel könnte die Hysterese bei der Notabschaltung durch den Strom deutlich vergrößert werden. Auch eine generelle Verzögerung von einigen Sekunden vor dem Wiedereinschalten ist eine durchaus sinnvolle Option. Über einen Count Down im LCD könnte noch der Wiedereinschaltzeitpunkt visualisiert werden. An einigen weiteren Ergänzungen und Optimierungen arbeite ich zur Zeit noch. Dazu gehört auch die zeitliche Abfolge in der Loop um eine Priorisierung der Schutzmaßnahmen zu erreichen, insbesondere direkt nach dem Hochfahren. In einem separaten Beitrag zu gegebener Zeit mehr dazu.

Über das Community Logo des Arduino Hannover Treffpunktes kann die derzeitige Version des Sketches heruntergeladen werden.

UnserCommunityLogo


Unser Projekt ist euer Projekt. Wir auf der MakerFaire

$
0
0

Die letzten beiden Male waren wir schon mit auf der MakerFaire Hannover als Aussteller. Viele nette Gespräche, interessierte aus allen Altersbereichen und einige Gesichter, die wir bei unseren monatlichen Treffen immer wieder sehen. Viele fragten auch, wie dieses oder jenes geht. Aber wieso viele Worte verlieren, wenn es doch so einfach ist? Deswegen bieten wir euch dieses Mal einen gleich zwei Workshops auf der MakerFaire zum Selbstkostenpreis an, bei dem ihr selbst die Grundlagen erlernen und das Ergebnis am Ende selber hacken könnt.

Licht ist immer was tolles, es fasziniert uns einfach. Und jetzt kommt eure Chance selber etwas blinkendes selber zu schaffen. Wir zeigen euch, wie ihr richtig lötet, was da für Technik hinter steckt und das Programm dahinter. Doch bis zum fertigen Produkt seid ihr selbst gefragt.

Projekt 1: LED-Chaser

Urs hat seine magischen Fähigkeiten eingesetzt, um eine Platine zu gestalten. Auf dieser Platine ist Platz für einen Arduino Nano, 10 LEDs, die zugehörigen Widerstände einen Taster und ein Potentiometer. Blaue und rote LEDs waren bisher in meiner Schatzkiste, auf Urs Anweisung hin sind diese aber um grün, weiß, orange und sogar pink erweitert worden. Ihr habt also die Wahl, wie euer Projekt erstrahlen soll. Im Kreis angeordnet können viele Spielereien damit gemacht werden.
Nicht nur die Farbe der LEDs entscheidet ihr, sondern auch das, was das kleine Teil später mal damit macht. Ein Beispielprogramm wird sich bereits darauf befinden, aber ein wirklich eigenes Projekt wird es erst mit der Programmierung. Wir zeigen euch kurz, wie man die Programme schreibt und „installiert“. Alles Weitere ist dann euch überlassen.

Projekt 2: LED Würfel

Kurzerhand haben wir – in dem Falle Urs und ich anstatt alle zusammen – uns noch entschieden ein zweites Projekt mit aufzutischen. Er war von meinem Würfel so fasziniert, dass er den auch noch mit umsetzten wollte. Platinen sind gerade noch in der Gestaltung, in der Zwischenzeit haben wir einen schnelleren und trotzdem günstigen Hersteller gefunden, von dem wir dann die Tage einen Satz ordern werden. Akkus, ATtinys und Ladegeräte sind auch bestellt – ein Haufen Widerstände ebenso, damit die LEDs euch nicht um die Ohren fliegen. Beim Würfel könnt ihr ebenso die Farben auswählen, wie ihr es gerne hättet. Das Ladegerät wird direkt auf die Platine gelötet, sodass ihr den Würfel – wenn er irgendwann leer sein sollte – ohne Probleme laden könnt. Aber bis es soweit ist, wird einiges an Zeit vergehen.
Allerdings wird der Würfel nur einmalig programmiert und fest eingelötet. Zum Einen ist etwas schwieriger einen ATtiny zu programmieren – das benötigt erst einmal Grundwissen. Zum Anderen ist der Tiny mit seinen 5 nutzbaren Pins auch nicht allzu vielseitig, besonders da alle mit den LEDs bzw. dem Schüttelsensor verbunden sind. Ich habe meinen auch nicht weiter umprogrammiert – immer wenn ich daran vorbei komme schüttel ich ihn aber. Aufmerksamkeit bringt er auf jeden Fall.

Da wir nur limitierte Stückzahl der Platinen und Arduinos haben, achtet darauf, dass ihr nicht zu spät da seid. Wir wünschen euch viel Spaß bei unseren Workshops und auf der MakerFaire!

Heute nicht im Edelstall

$
0
0

Bevor ihr euch nachher zum Edelstall aufmacht, beachtet bitte, dass wir heute in Die Werke sind! Auch seid ihr eingeladen bereits um 18:00 an der Rundführung teilzunehmen.

Bis nachher!

Vorsicht bei Real Time Clocks mit CR2032

$
0
0

Viele RTCs werden leider nur mit einer CR2032 ausgeliefert anstatt mit einer wiederaufladbaren LIR2032 (Li-Ion Rechargeable). Wobei dieses „leider“ schnell in „gefährlich“ ausarten kann.

Hintergrund ist, dass die RTCs – egal welchen Typs – meist eine Ladeschaltung besitzen. Erkennen könnt ihr die Schaltung an einer Diode (meist ein liegender roter Zylinder) mit einem vorgeschalteten Widerstand zwischen VCC und der Batterie. Die Module benötigen selbst keine Diode, also wenn ihr eine Diode auf der Platine habt, kann es sich eigentlich nur um diese Schaltung handeln.

Folge der Ladeschaltung: Batterien können nur Strom abgeben, für eine Aufnahme sind sie nicht ausgelegt. Bei der Zufuhr werden im inneren Gase gebildet, die dazu führen, dass sich die Batterie aufbläht und zerstört wird. Dabei kann tritt die Batteriesäure austreten, die Verätzungen hervorrufen kann wird, wenn man damit in Kontakt kommt. Da es sich bei dem Kürzel CR um Lithium Batterien handelt, ist es wahrscheinlich, dass die Knopfzellen explodieren!

Lösung:

  • Wenn die RTC noch nicht im Betrieb ist: Diode entfernen – entweder auslöten, notfalls mit Seitenschneider zerstören, sodass der Stromkreis unterbrochen ist.
  • Wenn die RTC im Betrieb war: BATTERIE ENTFERNEN! Danach die Diode auslöten und neue Batterie einsetzen.
  • CR2032 durch LIR2032 ersetzen und die Batterie fachgerecht entsorgen.

Solltet ihr ein Modul mit einer Batterie erhalten haben, so informiert bitte umgehend den Händler über diesen Umstand. Bei der Bestellung in China achtet im Voraus darauf. Wenn ihr trotzdem welche mit CR2032 erhaltet, lasst euch eine Erstattung von 100% geben. Die Akkus sind preislich etwa gleichauf mit den Modulen selbst.

Die tönende Teslaspule – Musik aus dem Blitz

$
0
0

Sicherheitshinweis

Warnsymbol HochspannungEs werden extrem hohe Spannungen erzeugt, die lebensgefährlich sind. Daher ist die Berührung der Anlage im Betrieb zu vermeiden. Ein Sicherheitsabstand von mindestens 50cm einschließlich der Stromversorgungszuleitung muss daher unbedingt eingehalten werden!

Herr Nikola Tesla

Zu Herrn Tesla (10.07.1856 – 07.01.1943), einem Visionär und Erfinder ist im Internet viel an Material zu finden. Eine seiner vielen Erfindungen ist neben dem Wechselstrommotor die nach ihm benannte Teslaspule.

Die Teslaspule (Quelle der Abbildung: Wikipedia)

Der Resonanzkreis besteht hier aus einer stabilen Primärspule mit wenigen Windungen Kupferdraht und einem parallel zum Schalttransistor liegenden spannungsfesten Kondensator. Durch Quelle-Wikipedia-Teslatrafo-Aufbaudiesen Parallelschwingkreis wird ein kräftiger Wechselstrom auf der Resonanzfrequenz des Primärkreises mit mehreren Ampere geschickt. Der sekundäre Teil der Teslaspule dagegen besteht üblicherweise aus rund 1000 Windungen säuberlich nebeneinandergewickeltem sehr dünnen Kupferlackdraht. Für eine gute Teslaspule ist es entscheidend keine Überlappungen der Windungen zu wickeln. Jede Windung der Spule ist Teil der Gesamtinduktivität wie auch jede einzelne Windung der Spule genauso eine Kapazität zur jeweils benachbarten Windung bildet. Die Teslaspule hat daher in erhöhtem Maße nicht nur eine Induktivität sondern auch eine von Windung zu Windung bedeutende gleichbleibende Kapazität. Dadurch bildet jede Windung einen eigenen Schwingkreis. Sind diese Windungen entsprechend gleichmäßig durchgeführt, ist die ResonTeslaspule_Fertiggerät_CIMG3874anzfrequenz jeder Windung wiederum nahezu identisch. Dadurch ergibt sich eine Spule hoher Güte mit einer ausgeprägten Resonanz. Der Trick ist nun beide Schwingkreise auf der gleichen Resonanzfrequenz abzustimmen, damit es zu den gewünschten Spannungsüberhöhungen einer Teslaspule kommt.

Der Klasse-E SSTC-Verstärker

SSTC ist das Synonym für Solid State Tesla Coil, also einer Halbleiter Teslaspule. Der Klasse-E Verstärker ist eine Teilmenge aus Mischung der Klasse-D und Klasse-C Verstärkertechnik. Im einfachsten Fall eine Schaltstufe, die einen Schwingkreis auf der sehr schmalbandigen Resonanzfrequenz damit sehr effizient treibt. Ähnlich den aus früherer Zeit bekannten Phasenanschnittsteuerschaltungen mit Thyristoren oder Triacs bzw. den in der Elektrotechnik besser bekannten Gebrauchsform in Form der etwas teureren Dimmer, schaltet der Transistor, heutzutage üblicherweise ein Power-MOSFET, hier nur im Nulldurchgang der Wechselspannung und verringert dadurch Schaltverluste und Störspannungen. Im richtigen Arbeitspunkt betrieben, ist der Class-E Verstärker eine hocheffiziente Schaltung.

Digital Audio

Durch Tastung (Ein- und Ausschalten) der durch die SSTC erzeugten hochfrequenten Hochspannung von etwa 1MHz über ein im hörbaren Bereich liegendes niederfrequentes Signal, wird die Hochspannung rhythmisch ein- und ausgeschaltet. Die Lautstärke kann hier nicht direkt beeinflusst werden. Es ist jedoch ein sehr triviales Verfahren um ein monophones NF-Signal (Niederfrequenz) mit dem Teslagenerator akustisch zu generieren. Die technischen Zusammenhänge hierzu werden weiter unten beschrieben.

Analog Audio

Bei der Einspeisung eines analogen Audiosignales, z. B. über einen handelsüblichen MP3 Player, weicht das benötigte Verfahren dazu deutlich von obigem ab und ist auch wesentlich aufwändiger. Es wird nun ein Dauerträger der HF benötigt, hier in Form der sichtbareFrequenzmodulationn Hochspannung. Der Träger wird jetzt in der Frequenz durch das Audiosignal manipuliert. Das Verfahren ist vom UKW-Rundfunk bestens bekannt und heißt dort FM oder auch Frequenzmodulation. In diesem Beispiel hier wird der Teslagenerator dazu minimal außerhalb des optimalen Arbeitspunktes betrieben und über den intern verwendeten VCO (Voltage Controlled Oscillator) dazu etwas neben der eigentlichen Resonanzfrequenz betrieben. Über den Steuereingang des VCOs wird das Audiosignal eingespeist und manipuliert darüber die Ausgangsfrequenz der hochfrequenten Hochspannung. Durch die leichte Fehlabstimmung des Teslagenerators ist die erzeugte Hochspannung etwas geringer als im rein digitalen Betrieb und die Wärmentwicklung deutlicher höher. Der Wirkungsgrad verschlechtert sich damit natürlich auch, wie sich auch die erzeugte Lautstärke verringert.

Streamer

Der Kopfpunkt der Teslaspule bildet mit ihrer Dachkapazität einen wichtigen Teil der sekundären Gesamtkapazität des Schwingkreises. Ohne diese Kapazität ist die Teslaspule nicht optimal auf ihrer Resonanzfrequenz abgestimmt und wird nicht ordentlich funktionieren. Die Form des Kopfpunktes dagegen ist unerheblich und eher Geschmacksfrage. Oftmals sind am Kopfpunkt auch noch ein oder mehrere „Breakout“ Punkte vorgesehen. An diesen Spitzen wird die Koronaentladung bei entsprechend hoher Wechselspannung forciert. Es bilden sich Streamer. Als grobe Daumenregel kann bei einer Punkt- zu- Punkt-Entladung der Hochspannung etwa 1kV je 1mm Funkenlänge angenommen werden. Mit dieser Anlage können derzeit etwa 30kV erzeugt werden also 30.000Volt.

Der Plasmalautsprecher

Die umgebende Luft bildet die eigentliche Lausprechermembran. Der Teslagenerator erzeugt dazu ein hochfrequentes Wechselfeld mit Hochspannung. Ist dieses Feld kräftig genug, kommt es zu Ionisierungen und wie beim Blitz auch zu kleineren Entladungen. Diese Koronaentladungen erwärmen die direkt umgebende Luft deutlich. Erwärmte Luft dehnt sich aus und bedingt eine lokale Luftdruckänderung. Diese kleinen Luftdruckänderungen dehnen sich wellenförmig aus und entsprechen im akustischen Bereich den Schallwellen, welche wir hören können. Im Extremfall kommt es übrigens zu einem enormen Knall wie bei dem einem Blitz folgenden Donner.

Die Wirtschaftlichkeit des Projektes

Ein wirtschaftlicher Nutzen durch die Verwendung der Teslaspule als Plasmalautsprecher ist heutzutage nicht gegeben. Mit einer Eingangsleistung von 100W und mehr lässt sich gerade mal Zimmerlautstärke erreichen. Ich sehe es aber als nette technische und etwas mystische Spielerei.

 

 

 

Arduino ärgere dich nicht

$
0
0

Im Supermarkt erblickte ich ein Spielfeld für Mensch ärgere dich nicht mit Kronkorken eines hamburger Softdrink-Produzenten. Das könnte auch was zum basteln sein! Warum klassisch, wenn es auch mit LEDs geht?

Die Spielweise ist allerdings ganz bodenständig. Anfangs wählt man mit dem großen Zahnrad (drehen) die Anzahl der Spieler aus, bestätigt dann mit einem Druck auf das kleinere. Damit es keinen Streit gibt: für jeden Spieler die gewünschte Farbe aus dem Farbrad mit dem Großen wählen und wieder bestätigen. Der aktive Spieler wird immer hell hervorgehoben.
Soweit alles fertig? Dann den Würfel in die Hand nehmen und schütteln. Dabei die Infrarotdiode auf der Unterseite nicht verdecken. Sie teilt dem Spielfeld mit, welche Zahl gewürfelt wurde. Blinken die Spieler kurz auf, bedeutet das, dass kein Zug mit den Würfelaugen möglich ist. Sollte sich keine Figur auf dem Feld befinden, so ist das Würfeln drei Mal gewährt. Bei einer 6 natürlich noch einmal mehr. Nach dem Rauskommen mit einer 6 muss das Startfeld (sofern möglich) geräumt werden. Ansonsten kann man seine Spielfiguren durch Drehen frei wählen und mit dem kleinen Zahnrad auswählen. Schlagzwang besteht nicht, auch kann im Zielfeld übersprungen werden. Bis auf Tricks mit Infrarot kann bei dieser Version immerhin nicht getrickst werden und es gibt keine Unstimmigkeiten über Regeln 😉 Beim Ärgern bitte maximal den Strom ziehen, drauf hauen wäre etwas unschön.
Angetrieben wird das Ganze von einem Arduino Pro Mini an 5V. WS2812B LEDs auf Platinen, verbunden durch 1mm Schweißdraht.

Achtung: Kozeptionsfehler! Entweder man setzt das Zuhause in die Ecke wie beim Original oder macht es wie ich im zweiten Anlauf. Sollte man sie rechts von der Startposition anbringen, so wird es schnell politisch unkorrekt und ein komisches Gefühl beim Spielen.

NEIN! So nicht! Spielfeld im Rohbau. Wird eventuell noch überarbeitet. Bei Nacht immer noch guter Überblick. Pink kommt gut voran.

Photos zur MakerFaire Hannover 2015

$
0
0

Dieses Jahr fand die dritte MakerFaire Hannover statt. Auch die Arduino-Gruppe Hannover war wieder dabei und hat diverse Exponate ausgestellt, z.B.: Türtris, Spielautomat, Lichtsäule, singende Tesla-Spule, Nixie-Uhr, Hexapod und diverse andere Dinge.

noch ist auf dem Stand nicht viel zu sehen

noch ist auf dem Stand nicht viel zu sehen

Luca repariert die Videowand

Luca repariert die Videowand

Löt-Workshop ist vorbereitet

Löt-Workshop ist vorbereitet

Olafs Steampunk-Lampe

Olafs Steampunk-Lampe

Detail von Olafs Steampunk-Lampe

Detail von Olafs Steampunk-Lampe

Der Stand von Arduino Hannover

Der Stand von Arduino Hannover

Joachims Hexapod

Joachims Hexapod

Huberts Lichtsäule

Huberts Lichtsäule

NDR auf unserem Stand

NDR auf unserem Stand

noch ein paar Impressionen anderer Aussteller

Guerilla-Häkeln

Guerilla-Häkeln

Feen-Skelett, gefunden in England

Feen-Skelett, gefunden in England

Ein Silent Runner unterwegs

Ein Silent Runner unterwegs

Lrry mit Herrchen

Lrry mit Herrchen

Der Kopf von Lrry

Der Kopf von Lrry

E-Bike

E-Bike

 

Der Arduino Treffpunkt Hannover auf der Maker Faire

$
0
0

Zum 3. Mal bereits in Folge hatte der Arduino Treffpunkt Hannover einen eigenen Stand auf der Maker Faire in Hannover Anfang Juni 2015. Mit 9 * 3 Metern dieses Mal noch größer, noch vielfältiger und noch interessanter. Neben den unterschiedlichsten Exponaten unserer Maker zum Staunen, Mitmachen und Anfassen, veranstalteten wir dieses Mal auch Workshops zum Löten und Programmieren. An beiden Tagen waren unsere Workshops schneller ausgebucht als die Lötkolben heiß wurden. Wer leider keinen Platz mehr ergattern konnte aber trotzdem noch einen der Bausätze möchte – LED-Chaser oder Würfel – kann uns gern ansprechen.

Die erste Minute des NDR Beitrages „Hallo Niedersachsen“ vom 06. Juni gewährt einen kleinen Einblick in die Aktivitäten unserer Gruppe.

Einen großen Dank all den vielen Besuchern und Makern, die diesen tollen Erfolg erst ermöglichten. Wer nun etwas neugierig geworden ist und bei uns ebenfalls mitmachen möchte, schaut einfach mal vorbei. Der Arduino Treffpunkt Hannover freut sich auf euch.


Make: AVR Programming

$
0
0

Make: AVR Programming by Elliot Williams (MAKE).
Copyright 2014 Elliot Williams
978-1-4493-5578-4

To boldly go where no Arduinista has gone before. (naja – fast kein Arduinista)

Mit einem Arduino lässt sich schon eine Menge anfangen, doch irgendwann gerät ein Projekt an die Grenzen. Oder der Bastler möchte mehr zu den Hintergründen des Arduino wissen. Oder der Arduino ist einfach zu groß fürs Projekt. Oder der Arduinista hat das Bitbanging für sich entdeckt. Oder…

Für alle diese Maker gibt es das Buch „Make: AVR Programming“ von Elliot Williams, erschienen bei Maker Media. Hier wird von Grund auf beschrieben, wie ein Mikrocontroller programmiert wird. Als Grundlage dient der Atmel TMega168, der auch im Arduino zum Einsatz kommt. Der Arduinista bewegt sich also auf bekanntem Gebiet. Unbekannt ist ihm vermutlich jedoch, wie die einzelnen Ports konfiguriert und angesprochen werden. Dies erklärt Elliot Williams ausführlich und sehr nachvollziehbar.

Zu Beginn beschreibt Williams, wie ein Mikrocontroller über einen ISP angeschlossen wird, so dass er programmiert werden kann. Wer auf seinen Arduino nicht verzichten möchte, kann ihn hier als ISP verwenden. Nach den ersten einfachen Programmen erklärt Williams die etwas trockene, aber sehr wichtige Behandlung einzelner Bits im C-Quellcode („Though not a particularly sexy chapter, it’s fundamentally important“). In den weiteren Kapiteln werden ADC, PWM, Timer, Interrupts, Servos, Motoren, SPI, I2C und EEPROM erläutert.

All diese Kapitel sind auch für Arduinistas, die ein wenig unter die Haube schauen möchten sehr informativ. Als Beispiel sei hier das Kapitel über Motoransteuerung genannt. Wie baut eine H-Brücke? Wie baut man eine H-Brücke richtig? Was muss man tun, um Gleichstrommotoren anzusteuern? Was muss man tun um Schrittmotoren anzusteuern.

Die Programmlistings sind ausführlich erklärt; der Aufbau der Schaltungen sauber dokumentiert. Auch der Anschluss der Komponenten wird ausführlich beschrieben.

Im letzten Kapitel werden schließlich noch Punkte erwähnt, die im Buch keinen Platz gefunden haben.

Sehr hilfreich sind auch die Fallstricke, über die Williams selbst gestolpert ist ( und immer wieder drüber stolpert). Alles in allem ein interessantes Buch, in einem lockeren, gut lesbaren Stil geschrieben.

Arduino Treffpunkt Hannover beim Glocksee Sommerfest 2015

$
0
0

Am Samstag den 04. Juli hatte der Arduino Treffpunkt Hannover mit einer kleinen Abordnung unseres wachsenden Teams das Leinelab beim Glocksee Sommerfest 2015 unterstützen können.Die offizielle Eröffnung des Festes war von der Glocksee e. V. für Uhr 15:00 vorgesehen. Die Vorbereitungen dafür liefen daher bereits ab 12:00 im Leinelab an. In einigen anderen Gruppen in der Glocksee sogar noch deutlich früher.

Die schlechte Nachricht nun zuerst: Leider lief das Fest auf Grund der extremen hochsommerlichen Temperaturen von nahe an die 40°C nur sehr spärlich an. Nun die gute Nachricht: Auf dem unweit parallel laufenden Schützenfest verirrten sich noch weniger Menschen.

Es war einfach ungewohnt unmenschlich heiß dieses Wochenende. Auch der am

Eingang des Geländes aufgestellte Rasensprenger oder das vom Leinelab bereitgestellte Kinderplanschbecken brachten nur sehr kurzzeitig ein wenig Abkühlung.

Am späten Nachmttag erst füllte sich daher ganz langsam das historische Gelände des ehemaligen Fuhramtsgebäudes. Trotz des schleppenden Anlaufes des Festes hatten wir im Laufe des Tages noch viele interessante Gespräche. Auch unser Löt-Workshop wurde am späteren Nachmittag vermehrt gebucht. Ein elektronischer Würfel mit einem ATTiny85 konnte an unserem Stand unter fachkundiger Anleitung von Mathias M. zusammengelötet werden. Da der abgespeckte Arduino Controller von uns bereits vorprogrammiert war und nur mit bedrahteten Bauelementen zu bestücken war, konnten sogar ungeübtere Menschen schnell zu ihrem Erfolgserlebnis gelangen.

Nachfolgend eine kleine Bildergalerie vom Aufbau vor dem Leinelab.

Glocksee Sommerfest 2015 Leinelab 1Glocksee Sommerfest 2015 Leinelab 4

 

 

 

Glocksee Sommerfest 2015 Leinelab 2Glocksee Sommerfest 2015 Leinelab 10Glocksee Sommerfest 2015 Leinelab 8

 

 

 

Und noch einige weitere Fotos vom Gelände während der Aufbauphase.

Glocksee Sommerfest 2015 Leinelab 5Glocksee Sommerfest 2015 Leinelab 6

 

 

 

Glocksee Sommerfest 2015 Leinelab 7Glocksee Sommerfest 2015 Leinelab 11

 

 

 

 

ESPuino

$
0
0

Bereits mehrere Projekte Projekte haben wir mit dem ESP8266 realisiert. Sei es eine Uhr, die sich über das WLAN stellen lässt, einen Briefkasten, der benachrichtigt, wenn Post da ist oder andere. Die Möglichkeiten sind unendlich. Aber das Problem bisher war immer – wie bekomme ich den Chip vernünftig programmiert und mit Arduino-Shields zusammen?

Viele bieten Platinen an, auf denen ein ATmega und ein ESP verbaut ist. Der ESP wird dabei als Slave mit AT-Kommandos betrieben und der ATmega muss die ganze Arbeit übernehmen. Wirklich sinnvoll und kosteneffizient ist das nicht, zumal der ATmega deutlich weniger Speicher und MHz hat. Deswegen habe ich mir vorgenommen, eine Platine zu entwerfen, die den ESP als Hauptprozessor nutzt und dabei größtenteils kompatibel mit Shields ist. Dabei sollte sie ebenso universell, wie der Arduino UNO sein, dessen Chip man auswechseln und den fertig Programmierten dann auf einer anderen Platine verbauen kann.

Beim Pinlayout war es ein schweres Unterfangen, die Pins der ESPs vernünftig anzuordnen. Einige sind nonfunktional für den Alltag, Die SPI-Pins sind wie beim ATmega32u4 beispielsweise nicht auf 11-13, von einem Pin 16 hat man beim UNO nie etwas gehört. Auch hat der Prozessor nur einen analogen Eingang und der misst nur Werte bis 1V. Wo also anfangen?

Insgesamt waren 11 digitale und 1 analoger Pin zur Verfügung – beim UNO sind es 14 und 6. Ein ATtinyX4 hat ausreichend Pins, um die Fehlenden zu kompensieren. Per I2C angesprochen bildet er den Co/Slave-Prozessor und bietet neben den 5 fehlenden Analog- und 3 Digitaleingängen (A1-A5, D6-D8) auch 3 PWM-Pins (D8, A4, A5). Er kann auch komplett unabhängig vom ESP programmiert werden und sich somit um ganz andere Logiken kümmern. Angebunden ist die I2C-Schnittstelle am ESP über die Pins 0 (SDA) und 2 (SCL). Die I2C Pins sind frei wählbar, standard wäre 4 und 5. Aber warum habe ich 0/2 genommen?

Der ESPuino hat keinen ESP fest verbaut. Er soll aber noch vielseitiger sein, als es ein Arduino UNO ist. Es gibt eine Vielzahl von Ausführungen, ESP-01, -03, bis hin zu -201. Warum also nur auf einen beschränken? Der ESP-01 ist die kleinste Variante mit Pinheader und nutzbaren Pins. Hier sind nur 8 Pins vorhanden, davon 2 für Strom, 1 Reset und einen zum aktivieren. Bleiben also 2 Pins und die serielle Schnittstelle zur Nutzung. Sofern man keine Mini-Projekte, wie eine IR-Fernbedienung im WLAN oder einen einfachen Server vor hat, wäre es doch schön, mehr damit zu machen. Jetzt auch die Erklärung für meine Wahl der I2C-Pins: Pin 0 und 2 sind die einzigen Pins am -01, können auch I2C sprechen und bieten sich daher an, mit dem ATtiny zu kommunizieren. Besonders interessant, wenn man nur ein paar analoge Werte lesen will oder eh I2C-ICs einsetzen will.
Neben der „Mini“-Ausführung lässt sich auch der große Bruder -201 aufstecken. 26 Pins gucken einem hier entgegen, woher die 201 rührt, weiß ich nicht. Seine Pins sind komplett mit den Steckleisten an der Seite verbunden. Wenn man den ESPuino als Dauerinstallation nutzen möchte, wie etwa einen UNO SMD, so kann man alternativ die günstigeren Varianten -12 (PCB-Antenne, FCC) oder -07 (Keramik und Sockel) auflöten (etwa 60ct – macht bei den Preisen schon knapp 25% aus – günstiger). Sollte man allerdings den Prozessor verbraten muss man ihn mühsam entlöten. Es hat alles seine Vor- und Nachteile 😉

Zurück zu den Pins:
Rx (1) und Tx (3) sind wie beim UNO die ersten beiden Pins, ebenso I2C direkt nachfolgend, jedoch umgedreht, 2 und 0. 4 und 5 reihen sich dann der normalen Nummerierung nach wieder ein. 6, 7 und 8 übernimmt dann der ATtiny. Pin 16 (nur Ausgang) steht an Stelle der 9, 15 als Slave Select mit 12 MISO, 13 MOSI und 14 SCK bilden dann die Hardware SPI-Pins an der gleichen Position, wie beim UNO. Ansonsten folgt das Layout der Revision 3 Release: extra Pins für I2C und IORef sind vorhanden. Auf dem ISP-Header liegt in Version 1 noch der ISP vom ATtiny, der ist in Version 2 aber vorne zu SDA/SCL gewandert (vgl. ISP für den ATmega16u2 beim UNO), hinten liegt dann komplett Rev. 3 kompatibel SPI des ESP.

Aktuell übernehmen Low-Dropout-Regler die Spannungsversorgung, ein CH340 die USB-Serial Wandlung.

Schnellübersicht:

  • USB-B (V1) / Micro USB
  • Revision 3 kompatibel
  • Für ESP-01, -07, -12 und -201
  • Reset-Taster, Programmieren-Raster und DIP-Schalter für Autoreset/-program
  • ATtiny24 Co-Prozessor
  • 500mA Sicherung (rücksetzbar)
  • 3v3-Regler
  • CH340 USB-Serial
  • Pin-15 (SCK) LED (V2)

Meine WS2812 RGB-LED Uhr

$
0
0

Als bekennender Fan der WS2812 RGB LED-Streifen, war es nur eine Frage der Zeit bis zur Realisierung einer entsprechenden Uhr. Über die 60 RGB LEDs WS2812_RTC_Clock_CIMG3876_resizedlassen sich hier nun bequem die gewünschten Zeitinformationen anzeigen und wie bei einer Bahnhofsuhr schon von weitem ablesen. Die Helligkeit der LEDs wird über einen Fotosensor angepasst.

Da ich noch ein kleines I2C OLED über hatte, lasse ich darüber nun auch noch Datum, Kalenderwoche, Sommerzeit und mehr anzeigen. Die verwendete I2C RTC wird einmalig mit dem Hochladen des Sketches gestellt und sollte über viele Jahre bis zum nächsten Batteriewechsel die Zeit auf die Minute genau halten können. Schaltjahre werden von der RTC bis zum Jahr 2100 korrekt berechnet. Etwas Speicher für zukünftige Ideen zur Funktionserweiterung wäre auch noch vorhanden.

Mein „Magischer Spiegel“

$
0
0

Spätestens seit Harry Potter faszinieren mich auch kleinere Zaubertricks immer wieder. Hier ist die erste Version meines „Magischen Spiegels“ zu sehen. Handwerklich noch minimal verbesserungsfähig, aber sinngemäß ist bereits recht gut zu erkennen, was unter einem „Magischen Spiegel“ zu verstehen ist. Der durch die Rückwand nach hinten hindurchführende 3D-Tiefeneffekt ist selbst auf den Fotos hier bereits sehr gut zu erkennen.

MagicMirror_Red_CIMG3909_resizedMagicMirror_Green_CIMG3910_resizedÜber eine State-Maschine lässt der Arduino Pro Micro Controller auf Leonardo Basis die unterschiedlichsten Lichteffekte zur Illumination zyklisch ablaufen. Die Helligkeit ist so gewählt, dass der „Magische Spiegel“ sowohl über ein einfaches 5V Steckernetzteil mit Micro-USB Anschluss als auch über ein herkömmliches Micro-USB 2.0 Kabel direkt von einem Rechner aus mit Strom versorgt werden kann. Im Sketch wird die Stromaufnahme dazu auf etwa 500mA bei 5V begrenzt. Sofern notwendig, wird dadurch einfach die Helligkeit der LEDs kaum merklich etwas abgesenkt.

Wird der „Magische Spiegel“ bzw. „Magic Mirror“ dauerhaft an einem deutlich leistungsfähigeren 5V Netzteil mit mindestens 4A betrieben, so kann die Strombegrenzung softwareseitig entsprechend angepasst werden. Die Helligkeit der LEDs ist dann beträchtlich und für den Wohnzimmereinsatz vermutlich nicht mehr unbedingt geeignet.

Update v. 14.06.15

Gestern habe ich den neuen Spiegel vom Glaser abholen und diesen heute früh endlich gegen die bisherige Scheibe tauschen können. Das Ergebnis spricht für sich, meine ich. Damit könnte ich dieses Projekt nun durchaus auch als „Infinity Mirror“ beschreiben. Der Spaß war leider nicht ganz preiswert, bin aber trotzdem sehr zufrieden mit dem Ergebnis.

Enhanced Magic Mirror 1Enhanced Magic Mirror 2Enhanced Magic Mirror 3

Steampunk Beacon

$
0
0

Immer mal wieder gern schlendere ich über die Flohmärkte im Großraum. Bei einem der SteampunkBeacon_CIMG3915_resizedRundgänge ist mir eine Petroleum-Schiffslampe aus Messing aufgefallen. Umgehend entwickelten sich gleich mehrere Ideen diese als Basis für ein Steampunk Projekt zu verwenden. Nachdem ich mit dem Verkäufer endlich handelseinig geworden war, dauerte es aber noch mehrere Monate mit vielen Rückschlägen bis zur Fertigstellung der heute hier vorgestellten Arbeit eines Steampunk Leuchtfeuers.

Verehrte Nicht-Steampunker und hochgeschätzte Steampunker,

Dampf ist bekanntlich der Energielieferant der Steampunk Aera. Daher musste ich viele Mühen auf mich nehmen und erst einmal einen solch kompakten und leistungsfähigen Dampfgenerator für diesen Zwecke hier erfinden. SteampunkBeacon_Detail_CIMG3915_resizedZentrale Schaltstelle dafür ist ein modifizierter Steamduino. Sobald der Generator anläuft und etwas Dampf erzeugt, klappert und rasselt es und auch das Feuer zum AnheizeSteampunkBeacon_Green_CIMG3916_resizedn des Kessels ist dabei nicht immer vollständig unter Kontrolle. Über Dampfleitungen wird die Energie zum Lichtgenerator für das Leuchtfeuer tranportiert, alsbald genügend Energie verfügbar gemacht werden kann wenn der Dampfgenerator warm gelaufen ist.

Mit diesem hochleistungsfähigen und wandelbarem Steampunk Beacon steht einer sicher beleuchteten Ausfahrt nun nichts mehr im Wege. Allzeit gutes Gelingen.

Maker Faire Berlin 2015 – auch wir sind da!

$
0
0

Was wäre eine MakerFaire ohne Arduino Hannover?

Wir sind mit Workshops und Exponaten natürlich auch in zwei Wochen in der Bundeshauptstadt Berlin dabei. Tag der deutschen Einheit mal anders: 3. und 4.10. im Postbahnhof Berlin (am Ostbahnhof), wobei wir uns draußen im Zelt an Stand 114 die Hände am Lötkolben warm halten. Falls eure Bratwurst noch nicht ganz durch ist, könnt ihr sie an der 1kW Teslaspule rösten, eine Runde Arduino-Ärgere-Dich-Nicht am überarbeiteten Brett spielen oder an unseren Lötworkshops teilnehmen. Eine neue Charge LED-Chaser sind eingetroffen, einige Würfel haben wir noch und für fortgeschrittene den ESPuino.

Wir wünschen euch viel Spaß!


Programmierung – Erweiterte Grundlagen

$
0
0

Arduino ist da, um schnell einen Einstieg zu haben. Ohne Studium, ohne Ausbildung, ohne Vorkenntnisse. Vieles ist schnell im Internet zusammenkopiert, einiges versteht man, das andere nimmt man als gegeben hin. Daraus baut man seinen Wissen langsam auf, vieles wird auch noch nach Jahren gleich gemacht, obwohl es viel einfachere Möglichkeiten gibt. Ich möchte hier ein paar Basics aus allen Schichten aufgreifen, die in vielen Programmiersprachen ebenfalls so oder ähnlich sind.

Besonders häufig sehe ich Konstrukte, die grundlegend okay, aber eigentlich unnötig sind. Ein Beispiel mit vielen Verbesserungsmöglichkeiten:
long i = 0;
double j;
void interruptHandler {
i = i+1;
if (i == 8) {
i = 0;
}
j = i / 2;
}

Zu allererst, i = i+1; kann man eliminieren. Man kann vor das Gleichzeichen einen der Operatoren * / + - << >> | & ^ % setzen, sodass in diesem Fall i += 1; angebracht wäre. Es gilt i = i o j → i o= j Allerdings geht das beim De- oder Inkrementieren um 1 noch leichter. Mit der Schreibweise i++; passiert selbiges mit deutlich weniger Zeichen.

Exkurs i++/++i

Der ternäre Operator (ternär = drei Grundeinheiten) ist ein dreiteiliger Ausdruck, der die if-Abfragen auch zum Einzeiler reduzieren können. i += i < 8 ? 1 : -8; entspricht einer Funktion, die einen Integer zurück gibt (kann auch String, double oder anderes sein), basierend auf dem vorangestellten Ausdruck:
int ternary() {
if (i < 8) {
return 1;
} else {
return -8;
}
}
/*************/
if (i < 8) {
i += 1;
} else {
i += -8;
}

Ist jetzt hier nicht unbedingt das beste Beispiel, aber als Erklärung genügt es.

Rechnen mit Rest ist Grundschul-Spielkram. Komisch, ich benutze sie jeden Tag. Denn der sogenannte Modulo gibt immer den Rest der Division zurück und ist in vielerlei Hinsicht hilfreich. Auch bei obigem Beispiel, denn so viele Zeichen und Logik, wie beim ternären Operator sind gar nicht nötig: i %= 8;. Was passiert hier? Simple Mathematik, in vielen Augen aber Hokus-Pokus. Für die Zahlen 0-7 bleibt alles beim Alten, 0 durch 8 geteilt ist bekanntlich 0, 6 durch 8 sind 0,75 oder bei der Division mit Rest 0 Rest 6. Da der Rest in die Variable geschrieben wird, bleiben hier die 6 stehen. Bei 8 kippt es allerdings: 8/8 = 1 Rest 0, also i = 0.

Exkurs: Modulo für Ziffern in z.B. Datumsanzeigen
Exkurs: Modulo statt for-Schleife mit delay
Dass ich nun ausgerechnet 8 im Beispiel gewählt habe, kommt nicht von ungefähr. Mit ein Lieblingswerkzeug von mir sind Bit-Operationen. Man betrachtet die Zahlen nicht mehr als Dezimalzahl, sondern als Binärzahl und führt darauf Modifikationen aus. Modulo und Bit-Operation sind in diesem Fall gleichviel Schreibaufwand für den Programmierer, die Bit-Operation nimmt allerdings deutlich weniger Zyklen in Anspruch. Mag bei 16 MHz und simplen Programmen nicht schwer in’s Gewicht fallen, kann einem später aber bei komplexen, Laufzeitintensiven Programmen zum Verhängnis werden.
i &= 7 agiert ähnlich, wie i %= 8, dahinter steckt allerdings eine andere Macht. Nehmen wir an, i wäre aktuell 3, also 0b11:
0b00011 //3
& 0b111 //7
= 0b011 //3

Die Alternative mit i = 12, also 0b1010:
0b01100 //12
& 0b111 //7
= 0b100 //4

Die Werte sind identisch zu % 8. Es wird durch das Muster 0b111 sozusagen in eine leere Schale gesiebt, eine 1 stellt ein Loch dar, wo ein Bit durchfallen kann, eine 0 ist geschlossen, dort kann kein Bit passieren. Zwischen 0b (definition der Zahl durch Bitfolge, statt Dezimalzahl) und der ersten 1 stehen unendlich (eigentlich nur max. so viele, wie der Datentyp groß ist, für dieses Beispiel aber egal) nullen. Die erste 1 prallt also ab, danach folgt eine 0, fällt durch das Sieb. Die 1 und 0 fallen ebenfalls durch.
Anders läuft es bei | (oder), hier werden die beiden Zahlen ohne Sieb übereinander gelegt. Nur Bits, die bei beiden null sind, bleiben null.
Das Gegenteil bewirkt ^ (exklusives oder). Nur unterschiedliche Bits werden hier übernommen, also 0^0 = 0, 1^1 = 0, 1^0=1, 0^1=1.
Die Variable j bekommt i/2 zugewiesen. In weniger Zyklen geht es auch, indem wir das niedrigste Bit löschen und die ganze Zahl nach rechts rutscht. j = i >> 1 macht aus 0b100 (4) 0b10 (2), also durch zwei geteilt. Dieses lässt sich mit jeglichen Zweierpotenzen machen: x/2n = x >> n. Auch in die andere Richtung geht es mittels <<.
Exkurs: Datenspeicherung als Muster
Im Beispiel sind allerdings auch noch weitere Fehler.
Zum einen: j ist als double, also Dezimalzahl, wird aber nie Nachkommastellen besitzen, die von .0 abweichen. Also statt einer reellen Zahl werden wir immer eine natürliche Zahl bekommen. Das ist dem geschuldet, dass wir durch die natürliche Zahl 2 teilen. Geben wir diese hingegen als 2.0 an, so wird j auch etwa 1.5 annehmen. Je nach Kompiler wird dieses aber auch ignoriert. Double ist bei allen 8-Bit AVRs in Arduino jedoch identisch mit float, welche mit 5-6 Bit Genauigkeit arbeitet. Würde in unserem Fall ausreichen, bei anderen Anwendungen ärgert man sich schnell darüber. Besonders, weil teilweise Ergebnisse heraus kommen, die mathematisch nicht stimmen (etwa 6.0/3.0=1.9999). Beim Due (und wohl anderen 32-Bit Arduinos) werden doubles als 64bit große Zahl abgelegt, haben dann bis zu 15 Bit Genauigkeit.
Auch wird der Speicher teilweise eng, da sollte man sich Gedanken über die Datentypen machen, die man einsetzt. long ist in diesem Fall komplett überdimensioniert, da wir nur Werte zwischen 0 und 7 haben, nie jedoch zwei Milliarden, geschweige etwas negatives. Dass man den negativen Wertebereich nicht benötigt drückt man durch unsigned datentyp aus. Wir benutzen nur 4 Byte, einen Datentyp in der Größe gibt es nicht, also nehmen wir den nächst größeren. char ist meist 1 Byte groß, kann jedoch auch bis zu 4 Byte in Anspruch nehmen, um etwa UTF-8 zu unterstützen. Um das Dilemma nicht zu haben, gibt es bei Arduino sogenannte typedefs, die einen Datentyp-Alias erstellen:
Datentyp Minimum Maximum
boolean 0 1
int8_t, char -128 127
uint8_t, unsigned char 0 255
int16_t, short, int -32768 32767
uint16_t, unsigned short, unsigned int 0 65535
int32_t, long, teilweise auch int -2147483648 2147483647
uint32_t, unsigned long, teilweise auch unsigned int 0 4294967295

Apropos Speicher:
Einige Programme stürzen ab, weil der RAM voll ist. Besonders bei Strings füllt sich der RAM schnell, hier ist es von Vorteil, wenn man die Texte im Flash mittels
#include <avr/pgmspace.h>
const datentyp name PROGMEM = …

ablegt. Die Werte sind durch const dann nicht mehr veränderbar, um Strings für Funktionen wieder verwertbar zu machen, ist statt nur der Variable allein das Konstrukt F(name) vonnöten.

Da wir es hier symbolisch mit einem Interrupt zu tun haben, kann es vorkommen, dass im Hauptprogramm manchmal veraltete Werte ausgeworfen werden. Der Prozessor hat die Variable bereits in ein Register geladen, dann wird sie durch den Interrupt verändert, im weiteren Programm wird die Variable wieder verwertet. Sofern das Register noch nicht anderweitig überschrieben wurde, so denkt der Prozessor, dass die Variable darin weiterhin bestand hat. Mit dem Schlüsselwort volatile vor der Variablendeklaration wird klar gemacht, dass diese Variable jedes mal neu geladen werden sollen. Egal, ob das Register unverändert geblieben ist (push/pop, etwa durch Funktionsaufrufe, von dem man in C eh nichts mitbekommt gilt als unverändert), es wird überschrieben.

Platinenfertigung

$
0
0

Nach unserem Workshop zum Schaltplan- und Platinenlayout stellt sich nun die Frage, wie und wo produziere ich Platinen? Es muss ja nicht gleich eine Massenproduktion von ein paar tausend Stück sein. Aber für einen Prototypen gleich eine Chemikalienkiste zusammen suchen und sich eine Platine ätzen? Fräse kaufen oder selber bauen? Muss alles nicht sein.

Okay, zugegeben: hier im Hause steht unter anderem auch für diese Zwecke eine CNC. Für vieles hätte es bestimmt auch eine Ständerbohrmaschine und eine vernünftige Schablone getan und bei den Kosten für die CNC auch die Platinenfirma wenige Kilometer weiter. Aber selbst dort gibt es verglichen mit anderen Anbietern relativ wenig für das Geld und nicht mal herausragende Lieferzeiten. Allerdings persönlichen Kontakt, Vertrauen, Arbeitsstandards und eventuell auch mehr Flexibilität. Doch man kann die Nachbarschaft verteidigen, wie man will. In China ist es am Ende doch günstiger und sogar manchmal schneller.

Um die Ecke: eine Platine 160x100mm, 12 Tage = 49€ brutto (inkl. Einrichtung).
In China: Mindestabnahme 5 Platinen, 2-3 Tage Fertigung + 3-7 Tage DHL, nach Standardrabatten 59$ + Zoll.
Macht 12 zu maximal 10 Tagen bei 1 zu 5 Platinen jedoch mit 49€ gegenüber 59$, was nach aktuellem Kurs (13.10.’15) etwa 52€ netto, knapp 62€ brutto entspricht. Da kann man noch abwägen, ob man wirklich nur eine braucht, eine zitterige Hand hat und eh eine oder zwei Platinen wohl verbrät oder es einem bis zu einer Woche weniger Warten die 13€ Mehrkosten wert sind.

Sollte man eine Großserie anstreben ist es selbst vom Nachbarn über Asien bestellt und noch mit Aufschlag der Handelspauschalen, etc. 5.000 bleifreien Platinen 100x100mm mit freier Farbwahl kosten dann 1,12€ brutto, je Platine, exkl. Einrichtungskosten, 15 Tage+. Macht also mindestens 5.600€, allerdings ist das kostenpflichtige UL-Logo inklusive. Direkt mit gleicher Ausführung bestellt? 4324$, etwa 3.800€, 4.522€ brutto – verhandelbar. Selbst nach Einfuhrumsatzsteuer (ohne sonstige Zollgebühren) läge der Preis für Goldkontakte statt HAL bei gut 5550€. Lieferzeiten: 7-8 Tage Fertigung + 5-7 Tage Transport, macht maximal 15 Tage. Bis es soweit ist, macht man sich aber doch ein paar mehr Gedanken zum Thema.

Viel Details für eine Aussage, die wir ja schon kennen: direkt in Asien zu bestellen ist die günstigste Methode und in diesem Fall wirklich die schnellste.

Für meine erste Platine bestellte ich bei iTead – 19.90$ + Versand für bis zu 10x10cm. Allerdings die günstigste Variante mit China Post, also um die 30 Tage Transportzeit. Wer es gemütlich mag, kann hier zugreifen, für DHL fallen deutlich höhere Kosten an.
Allerdings muss man anmerken, dass der Bestellprozess nicht unbedingt der intuitivste ist, alles etwas verworren. Man legt mit der Bestellung ein Kundenkonto an, tätigt direkt die Zahlung, kann dann erst Dateien hochladen. Bei mir gestaltete es sich zusätzlich schwierig:
Ich hatte mich bei der Eingabe der E-Mail vertippt. Man wird im Anschluss an die Bezahlung via PayPal nicht direkt eingeloggt, sondern muss hier die eben eingetippten Daten wiederholen. Nach einigen Versuchen mit vielerlei Variationen der Adresse gab ich es auf und schrieb eine Nachricht an den Support. Immerhin ist PayPal-Transaktion mit dem Vorgang verknüpft und man kann damit seine Identität bestätigen. Irgendwie habe ich es dann hin bekommen. Inzwischen gibt es auch die Möglichkeit eines Gast-Accounts, ob das die Sache dann einfacher macht, kann ich nicht abschätzen. Am Ende landete ich bei etwa 29$ mit Versand. Ob es wirklich ein E-Test war, kann ich schwer überprüfen.
Der E-Test stellt grob fest, ob alle Kontakte auch richtig (vorhanden) sind, Leiterbahnen keine Brüche haben (durchkontaktiert sind) oder womöglich mit anderen verbunden sind. In meinem Fall waren zwar Striche an 5 der Boards (hatte 50% ausgewählt, was vor einem Jahr noch möglich war), auch einige Kratzer waren zu erkennen. Ob diese nun von den Nadeln stammen, die zum Testen eingesetzt werden, ist die andere Frage, daher lassen wir diese Frage offen. Notfalls hat man immer noch 9 Boards in Reserve, die hoffentlich richtig sind. In meinem Fall funktionierten alle, was nicht wirklich funktionierte war eine andere Auswahl. Bei der Bestellung kann man auswählen, dass sein Platinen-Layout Open Source ist, irgendwo eventuell zur Verfügung gestellt und weiter benutzt wird, man im Gegenzug 2 Platinen extra (müssen nicht unbedingt die eigenen sein, auch andere Projekte möglich) bekommt. Da ich sowieso ein Open Source Projekt in Auftrag gab, war mir das nur recht, wobei ich eigentlich statt 12 nur eine wirklich benötigte. Statt 12 kamen aber auch nur 10, auf Nachfrage hieß es, dass die „2 More Additional Boards“ nur bei ausreichend frei-Volumen mit produziert werden. Da die Maschinen 24/7 laufen und die Nutzen der Hoffnung nach hoch optimiert sind, gibt es da wohl keine freie Fläche. Allerdings haben andere Kunden teilweise diese Platinen erhalten, also irgendwas muss an dieser Option dran sein. Es gibt auch noch Seeed Studio, allerdings haben die die gleiche Produktionsstätte und Varianten, wie iTead.

Unser LEDChaser Die Platine von iTead in der Nahaufnahme. Breite des Bildes: 4,2mm Sieht alles glatt und vernünftig aus. Breite des Bildes: 1mm

Gemischte Meinung über diese Plattform, es gibt ja auch noch andere. PCBway nennt sich ein anderer Laden. Ebenfalls in China verortet, allerdings anders aufgestellt. Während bei iTead/iMall auch weitere (Fertig-)Produkte angeboten werden, konzentriert sich hier alles auf die Platinenfertigung. Der Bestellprozess ist hier sehr intuitiv, die Produktionsschritte sehr detailliert nachvollziehbar.
Fangen wir vorne an. Manchmal hat Werbung doch seine guten Seiten. Denn durch eine Google-Anzeige, auf die ich doch ausnahmsweise mal klickte, bin ich auf dieses Unternehmen gestoßen. Überrascht von den günstigen Preisen und Versand per DHL teilte ich die Seite bei der nächsten Nachfrage bezüglich Platinenproduktion in der Gruppe als Anregung. Allerdings wollte keiner das als erster austesten. Nun, irgendwann kam dann der Würfel, Platinen mussten her und da es mein Projekt war, konnte ich darüber entscheiden, woher. Ich verglich Preise und Leistungen, hier war PCBway eindeutig die beste Wahl, zumindest was die Unternehmen versprachen. Also warum nicht versuchen, wenn man es den anderen schon vorgeschlagen hat?

Zunächst gibt man wie bei jedem Anbieter die Größe und Anzahl der (gleichen) Platinen ein, wählt aus den verschiedenen Optionen. Da wäre die Platinendicke, 0,4mm erfordert aufpreispflichtige Goldkontakte, 2mm und mehr kosten ebenfalls mehr, die Lackfarbe, weiß und schwarz sind die einzigen mit Aufpreis, Silkscreen ist nur bei weißem Lötstopplack in schwarz möglich, erspart einem aber keinen Cent, wenn man irgendeine der beiden letzten Optionen weg lässt. Dann wäre da noch die Kontaktveredelung. Wie gesagt zur Auswahl ein Goldbad, was zur günstigsten Option je nach Menge sogar mehr als das dreifache im Preis bedeuten kann. Die standard RoHS-kompatible Variante HASL-bleifrei, was auch schon 40% Steigerung ausmachen kann. In absoluten Zahlen allerdings harmloser: ausgehend von 12$ zu 17$ noch verkraftbar, der relative Abstand wird da schnell kleiner. Die günstigste Auswahl ist das bleihaltige HASL. Für Privatprojekte okay, kommerziell darf jedoch nicht RoHS-konforme, also unter Anderem bleihaltige Elektronik nur in Ausnahmefällen noch vertrieben werden, aber auch dieses wird bereits eingeschränkt. Die Spezifikationen, die für die Produktion bei PCBway einzuhalten sind, finden sich im Reiter Capabilities.
Nachdem man sich über seine Wünsche im klaren ist, kann man die Platine zum Warenkorb hinzufügen. Schon dann wird man aufgefordert einen Account zu erstellen und nachfolgend seine Gerber-Daten hochzuladen. Die Dateien werden zunächst von den Mitarbeitern geprüft, ob die Platinen so überhaupt gefertigt werden können, man falsche Maße angegeben hat, etc. Ist das abgeschlossen (innerhalb 24h) kann man den finalen Betrag mit PayPal bezahlen. Ab jetzt liegt es in den Händen des Herstellers, man wird aber sehr detailliert über die einzelnen Arbeitsschritte informiert, sofern man regelmäßig auf der Seite vorbei schaut. Aber auch hier ist nicht alles 100% toll, wobei sie selbst für diesen Umstand nichts können.
DHL hat es bisher nicht geschafft die Sendungen richtig zu importieren und zu verzollen. Beim ersten Mal waren die Versandkosten mit ausgewiesen, trotzdem wurden mit für einen Zollwert (Warenwert+Versandkosten) von 49$/43€ eine Einfuhrumsatzsteuer (19% MwSt) von 23,79€ berechnet worden (mehr als 50%?!). Beim zweiten Mal dann ohne ausgewiesene Versandkosten (irgendwie mal so, mal so deklariert?), nach Tabelle müssten das 87€ Versandkosten gewesen sein, meint DHL und besteuert dann diese Summe. Nach Diskussionen mit DHL oder auch dem Zoll direkt gibt es aber dafür Erstattungen. DHL erhebt im Normalfall (manchmal auch nicht) mindestens (bei so kleinen Beträgen bleibt es aber dabei) 10€ netto, dass sie gegenüber dem Zoll in Vorkasse treten und am Morgen der Auslieferung an der Haustür in Bar das Geld einstreichen.

Kommunikation ist ansonsten aber super. Per E-Mail in kurzer Zeit eine Antwort, ansonsten auch per Skype erreichbar und das fast 24/7. Das hat bisher sonst keines der Unternehmen geschafft.

50 PCBway Platinen mit rotem Lötstopplack Durch Lagerung bei mir bereits etwas angekratzt Allgemein aber sehr rund, ohne größere Unebenheiten

Was am Ende wichtig ist: man hat funktionstüchtige Platinen in hübscher Optik in den Händen, was zumindest vom Hersteller aus sehr unkompliziert war. Lieferzeiten halten sich wie eingangs erwähnt sehr im Rahmen, bei mir war es bisher eine Woche (6-7 Kalendertage), die ich ab Bezahlung gewartet habe. Also insgesamt ist PCBway außerordentlich zu empfehlen, wer sein gutes Gewissen dabei haben möchte, geht dann doch zum lokalen Hersteller. Dieser Beitrag deckt nur von mir getestete Anbieter ab.
Für iTead und PCBway finden sich im GitHub die CAM-Jobs, ebenso die Design Rule für PCBway. Diese können einfach in Eagle geladen werden, allerdings keine Gewähr auf Vollständigkeit und deren Richtigkeit/Aktualität.

Fast alle Anbieter betreiben auch einen Bestückungsdienst – dabei ist allerdings zu beachten, dass viele die Teile geliefert haben wollen. PCBway kann jedoch auch selber bestellen, sodass man sich selbst darum nicht kümmern muss.

 

Viel Spaß nun mit euren eigenen Platinen!

Der Arduino Treffpunkt Hannover auf der 1. MakerFaire in Berlin

$
0
0

Nach 3 Events in Folge auf der Maker Faire in Hannover ging es am 03. und 04. Oktober 2015 dieses Mal mit einer kleineren Abordnung unserer Gruppe nach Berlin! Aufgrund unserer späten Anmeldung war der Postbahnhof selber bereits belegt und wir sind nur noch in einem der beiden zusätzlich aufgestellten Zelte untergekommen. Neben unseren ausgewählten Exponaten waren wir deshalb auch mit dicken Socken, Pullovern und einem Heizlüfter angereist. Die letzten 3 Artikel waren allerdings nicht notwendig. Bei nahezu wolkenlosem Himmel und 18°C über beide Tage hatten wir äußerst angenehme Temperaturen nicht nur im Zelt.

Da wir nur mit einem kleinen Team unserer engagierten Maker angereist waren und damit einen mit unseren vielen Exponaten relativ überbordenden Stand zu betreuen hatten, gab es kaum Luft sich einmal auf dem restlichen Gelände umzuschauen. Luca Z. hat in unermüdlicher Ruhe den oftmals überfüllten Löt-Workshop geleitet. Andreas D. hat sich um unseren eigentlichen Hauptstand mit unseren Exponaten gekümmert sofern er nicht gerade abkömmlich war und auf Fotosafari ging. Ich durfte mich im Wesentlichen um mein derzeitiges aktuelles Lieblingsspielzeug, meiner musizierenden 1 kW Teslaspule in einem aus Sicherheitsgründen separaten abgesperrten Bereich neben unserem Hauptstand kümmern.

Trotz des relativen personellen Engpasses konnten wir sehr viele interessante Gespräche bis hin zu Mitarbeitern aus den USA von Hackaday führen und natürlich jede Menge weiterer neuer toller Kontakte knüpfen. Besonderes Interesse fand in den vielen Gesprächen auch immer wieder Lucas „Mensch ärgere dich nicht“ Spiel mit einem Arduino, einer Nixieröhre und einem Haufen WS2812 LEDs.

Erfreut euch daher nun der nachfolgenden Bildergalerie. Wir haben auf jeden Fall auch unseren Spaß gehabt!

Am 28. und 29. Mai 2016 findet die nächste Maker Faire wieder in Hannover statt. Mein Vorschlag: einfach schon mal vormerken!

Text: Olaf Meier, Photos: Andreas Dunker

DSC_4442

DSC_4443 DSC_4445 DSC_4446 DSC_4448 DSC_4449 DSC_4450 DSC_4452 DSC_4453 DSC_4454 DSC_4455 DSC_4457 DSC_4459 DSC_4460 DSC_4461 DSC_4463 DSC_4466 DSC_4467 DSC_4468 DSC_4470 DSC_4472 DSC_4473 DSC_4474 DSC_4475 DSC_4476 DSC_4479 DSC_4481 DSC_4484 DSC_4485 DSC_4486 DSC_4487 DSC_4489 DSC_4491 DSC_4493 DSC_4494 DSC_4496 DSC_4497 DSC_4517 DSC_4519 DSC_4525 DSC_4533 DSC_4534 DSC_4545 DSC_4546 DSC_4547 DSC_4550 DSC_4552 DSC_4554 DSC_4555 DSC_4556 DSC_4557 DSC_4561 DSC_4569 DSC_4572 DSC_4578 DSC_4584 DSC_4588 DSC_4590 DSC_4594 DSC_4596 DSC_4602 DSC_4604 DSC_4608 DSC_4614 DSC_4618

Der Arduino Treffpunkt Hannover auf der letzten hannoverschen Interradio

$
0
0

Während der Maker Faire in Berlin Anfang Oktober konnten wir eine Reihe sehr interessanter Gespräche führen und dabei auch einige völlig unerwartete Kontakte knüpfen.

Unter anderem sind wir auch vom DARC dem Deutschen Amateur-Radio-Club e. V.

additional graphic
angesprochen worden. Der Funkamateur „Karlo“ mit Rufzeichen DD7OI vom DARC-Distrikt Niedersachsen OV H47, verantwortlich für neue Medien beim DARC und Mitorganisator der 34. und leider letzten Funk- und Elektronikfachmarktausstellung Interradio in Hannover, war von unseren mitgebrachten Exponaten begeistert. In dem folgenden Fachgespräch stellte sich schnell nebenbei heraus, dass für die bevorstehende Interradio noch besondere und aussergewöhnliche Highlights von Interesse sind. Die von uns nach Berlin mitgebrachte Teslaspule würde auf so einem Event zumindest den Amateurfunkverkehr der Funkamateure in den unteren Bändern im Großraum deutlich beeinträchtigen können. Ein interessanter Aspekt. Vermutlich auch deshalb unsere schnelle Zusage den DARC mit unserer 1kW Teslaspule über 150kV Streamer musikalisch während der Abschlussveranstaltung am Nachmittag aktiv zu unterstützen.

Am 24.10.2015 fand nun also diese letzte Interradio auf dem Messegelände in Hannover in der Halle 2 am Nordeingang statt. Der Aufbau der Teslaspule und die Installation des Equipments mit den notwendigen Tests erfolgte bereits am frühen Samstagmorgen, um so wenig Funkamateure wie möglich bei ihrem Hobby zu stören.  Ab der Mittagszeit etwa startete im Halbstundentakt der wenige Minuten andauernde noch zaghafte Probebetrieb der Teslaspule mit jeweils 1-2 Musikstücken im MIDI-Format. Mit etwa der halben möglichen Maximalleistung der Teslaspule konnte doch eine ansehnliche Lautstärke und damit Aufmerksamkeit in der recht großen Messehalle 2 errreicht werden.
Während und nach diesen Vorführungen wurden unermüdlich alle Fragen zur Teslaspule beantwortet. Die häufigsten Fragen bezogen sich darauf zu verstehen, wo denn überhaupt die Musik herkam! Hierzu ist auch der schon etwas ältere Beitrag zu einer deutlich kleineren Teslaspule empfehlenswert. Ergänzend zu erwähnen ist dazu aber auch noch, dass diese neue 1kW Teslaspule derzeit ausschließlich rein digital im Interruptermode mittels MIDI-Signale angesteuert wird. Die Analogspeisung mit Frequenzmodulation der über die Teslaspule generierten HF im Bereich um die 500kHz befindet sich derzeit noch in Entwicklung. Vielleicht mehr dazu zur nächsten Maker Faire im Sommer 2016.
Vielen Dank an dieser Stelle den vielen Funkamateuren auf der Interradio und die zuvorkommende Unterstützung und Betreuung während der Veranstaltung. Wir sehen uns hoffentlich alle gesund wieder zur nächsten Maker Faire in Hannover am 28. und 29. Mai 2016!
Roehrenpruefgeraet_resized Telefon 2_resized Telefon 1_resized  Roehre_resizedHistorische Korbspulen_resized Arduino Hannover Teslaspule_resized Arduino Hannover Olaf 1_resized

Mein Paket…… ein IPM-165 Radarsensor

$
0
0

Heute kam mein Paket…

mit einem IPM-165 Radarsensor 24GHz Low Cost Mono CW K-Band Transceiver inklusive Verstärker 40-73dB an. Dieses Modul hatte ich inklusive des einstellbaren Verstärkers direkt über den Shop der Weidmann Elektronik bestellt.

IPM165Back_R

Rückseite IPM-165 Radarsensor

(IPM-165 Radarsensor inkl. Verstärkung 73dB für 22,99 € zuzüglich 3,57 € Versand).

Der Versand des Moduls erfolgte sicher verpackt in einem stabilen Karton und praktischerweise in einer ESD Schutztüte. Das Modul ist laut Hersteller InnoSenT sehr empfindlich gegenüber elektrostatischen Entladungen! Ein entsprechend umsichtiger und ESD-gerechter Umgang mit dem Modul ist daher wichtig um die empfindliche Mischerdiode nicht vorschnell zu zerstören.

Beschreibung des Radarsensors

Der Low Cost Transceiver IPM-165 Radarsensor ist zur Detektion bewegter Objekte geeignet. Ruhende Gegenstände werden dagegen nicht erkannt. Ebenso wenig kann die Bewegungsrichtung, der Abstand oder Winkel detektiert werden. Die Messung von Geschwindigkeiten in einem weiten Bereich von etwa 1km/h bis zu 200km/h ist dagegen laut Hersteller durchführbar. Die Bewegung von Objekten in der Größenordnung eines Menschen können bis zu einer Entfernung von 15m erkannt werden.

Die Sendefrequenz beträgt typ. 24,125GHz. Im CW-Betrieb benötigt der Sensor bei 5V max. 40mA.

Inbetriebnahme

Arduino_IPM165

Aufbau Arduino Uno mit IPM-165 Radarsensor

Unter Beachtung der allgemein bekannten ESD-Schutzmaßnahmen ist der Radarsensor schnell auf einem Steckbrett mit einem Arduino zusammengestöpselt. Da es hier jetzt erst einmal nur um einen kurzen Funktionstest geht, wird der Radarsensor entgegen der Empfehlung des Herstellers hier noch über den USB-Anschluss mit Spannung versorgt. Um gleich auch noch ein Gefühl für die Funktionsweise zu bekommen, nachfolgend noch 2 Screenshots. Eines mit dem Ruhesignal des Analogausganges um die 2,5V sowie ein weiteres bei erkannter Bewegung. Die Frequenz des Rechtecksignales ist abhängig von der Geschwindigkeit der detektierten Bewegung.

ScreenshotIPM165Ruhe

IPM-165 Radarsensor im Ruhezustand

ScreenshotIPM165Signal

IPM-165 Radarsensor detektiert Bewegung

Der Testsketch

Der Arduino Sketch für den ersten Test lehnt sich sehr stark dem Beispielsketch der Weidmann Elektronik an. Der Analogausgang des IPM165 Radarsensors wird mit dem Analogeingang A5 des Arduinos verbunden. Über die Variable threshold kann die Schaltschwelle beeinflusst werden. Da im Ruhezustand die Ausgangsspannung des Sensors etwa 2,5V beträgt und bei Bewegungserkennung +1V des positiven Rechtecksignalanteils hinzukommen, ist hier ein Wert zwischen 600 und 700 entsprechend etwa 2,9V bis 3,4V ein guter Kompromiss. Wird ein Wert oberhalb dieser Schaltschwelle erkannt, wird die eingebaute LED an Pin 13 für 10ms eingeschaltet. Dieser Wert kann auch weitgehend beliebig verändert werden.

/******************************************************************************/
/* IPM165_Radar_Bewegungsmelder - Sehr empfindlicher Bewegungsmelder mit 
 * einem 24GHz Doppler-Radarsensor inkl. 73dB Verstärker Modul von InnoSenT. 
 * Die analoge Ausgangsspannung ohne Bewegung beträgt etwa 2,5V.
 *
 *                       !Achtung!
 * Das Modul darf keinesfalls verpolt angeschlossen werden! Auch ist der Sensor
 * laut Hersteller InnoSenT extrem ESD-empfindlich! Aufgrund der hohen 
 * Verstärkung benötigt der Radarsensor unbedingt auch eine sehr stabile 
 * 5V Spannungsversorgung!
 *
 * Getestet mit:         Arduino Uno
 *                       Arduino IDE 1.63 / 1.64
 *
 * Referenz:             Weidmann Elektronik GmbH
 *
 * Original Autor:       Dr. Ing. Wolfgang Weidmann
 *                       
 * Autor:                Weidmann Elektronik GmbH
 *                       Dr. Ing. Wolfgang Weidmann
 *
 * Modifiziert von:      http://arduino-hannover.de/?utm_source=rss&utm_medium=rss
 *                       Arduino Treffpunkt Hannover
 * Autor:                Olaf Meier
 *                       https://electronicfreakblog.wordpress.com/?utm_source=rss&utm_medium=rss
 *
 * Hardware Verbindung:  Ardu  -  IPM165 Doppler-Radarsensormodul mit Amp.
 *                       +5V   -  Vcc
 *                       A5    -  Sout
 *                       GND   -  GND
 *
 * Ergänzungen:          -
 *
 */
/******************************************************************************/
/******************************************************************************/
/***   Deklaration globaler Konstanten, Variablen, Import von Bibliotheken  ***/
/******************************************************************************/
/***  Software Version und Datum  ***/
const char* sketchname            =  "IPM165Bewegung";
const char* revision              =  "R.1.0";
const char* author                =  "Olaf Meier";
const char* date                  =  "2015/11/14";

/******************************************************************************/
/***  Deklariere Konstanten und Variablen für diesen Sketch  ***/
const byte radarPin               =  A5;           // Signalpin Sout
const byte ledPin                 =  13;           // Kontroll-LED
int sensorValue                   =  0;            // Sensorwert
int threshold                     =  650;          // Schaltschwelle 575-750

/******************************************************************************/
/******************************************************************************/
void setup() {
  pinMode(radarPin, INPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
}                                                  // Ende Setup (Einmalig)
/******************************************************************************/
/******************************************************************************/
void loop() {
  sensorValue = analogRead(radarPin);
  if (sensorValue > threshold)
  {
    digitalWrite(ledPin, HIGH);
    delay(10);                                     // Verbesserung der Anzeige
  }
  else
    digitalWrite(ledPin, LOW);
}                                                  // Ende Loop (Endlos)
/******************************************************************************/
/******************************************************************************/
/***  Optionale Funktion:   ***/

/******************************************************************************/
/******************************************************************************/

Der Sketch steht im Github auch zum Download bereit.

Technische Daten in Kurzform

  • Betriebsspannung: min. 4,75V bis max. 5,25V
  • Stromaufnahme:    max. 40mA
  • Sendefrequenz:     min. 24,00GHz, typ. 24,125GHz, max. 24,250GHz
  • Verstärkung:          40dB bis 73dB
  • Bandbreite:            60Hz bis 11kHz (1km/h bis 200km/h)
  • Reichweite:            min. 10m bis max. 15m

Hier meine Zusammenfassung

Bauteil: Radarsensor IPM-165 inklusive Verstärker

Verkäufer:              Weidmann Elektronik
Preis:                     22,99 €
Lieferzeit:              1 Woche
Versandkosten:     3,57€
Sonstiges:             –
Bewertung: bin sehr zufrieden, der Sensor entspricht absolut meinen Erwartungen

Agenda zur Bewertung
*=Ganz Mies **=Mies ***=Akzeptabel ****=Gut *****=Sehr gut
Verkäufer:              *****
Produkt:                 *****

Olaf Meier
Arduino Hannover http://Arduino-Hannover.de?utm_source=rss&utm_medium=rss
.                             http://electronicfreakblog.wordpress.com/?utm_source=rss&utm_medium=rss

Der Beitrag Mein Paket… … ein IPM-165 Radarsensor erschien zuerst auf Arduino-Hannover.

Viewing all 43 articles
Browse latest View live