Elektronikprojekte auf Arduino Plattform
Willkommen in der Mk-Community › Foren › Hardware › Bastelecke › Elektronikprojekte auf Arduino Plattform
- Dieses Thema hat 428 Antworten und 31 Teilnehmer, und wurde zuletzt aktualisiert vor 10 Jahren von Apus_Apus.
-
AutorBeiträge
-
-
19. Juni 2011 um 13:06 Uhr #499351spokekillerTeilnehmer
Hallo,immer wieder bin ich hier im MK-Forum mal auf kleinere Projekte gestoßen, die zu Microcontrollern der ATMega Serie geführt haben.Bestes Beispiel ist das wunderschöne Plexi-Case von “Hering Home Projects” (user overclocked aka F. Hering) mit LC Display Controller und einer Art “Ambilight” je nach Musik. Nicht zu reden von keiangs legendärer Regelung fur Pumpen und Kühler.MCs sind nun aber beileibe nicht jedermanns Sache und nicht jeder will so richtig tief einsteigen. Wie ich dann kürzlich auf Linuxundich.de wieder einen Artikel in die entsprechende Richtung sah, wurde ich dort auf “Arduino” aufmerksam. Das ist ein Open-Source Projekt, dass es bereits einige Jahre gibt und dass Hardware und Software als CC Lizenz freigibt.Der große Vorteil dabei ist der: es gibt eine recht stabile, leicht nachzubauende oder zu erwerbende Hardware Plattform und eine recht gut erlernbare “Hochsprache”, mit der man ein(en) Arduino programmieren kann.Man kommt also sehr schnell zum Ziel. Dafür investiert man noch dazu nicht allzuviel für einen ‘Schnupperkurs’.Natürlich gibt es genug Leute, die zum Teil berechtigte Kritik an Arduino üben. Nichtsdestotrotz hat eben nicht jeder soviel Zeit eine MC Programmierung zu erlernen und sich das womöglich später wenig gebrauchte Tiefenwissen anzueignen. Noch dazu braucht es das ja auch manchmal gar nicht für die Umsetzung des eigenen Projektes oder nur dem Testen einer Idee.Alles wesentliche über Arduino findet sich auf “Arduino.cc”. Leider, wie bei Open-Source so oft, ist einiges an Wichtigem zu gut versteckt oder verstreut. Geduld ist wichtig und die Bereitschaft und Offenheit, vorhandenes auch kritisch zu hinterfragen. Die dort vorgestellten Codes enthalten nicht selten grobe Fehler.Ziel dieser Thread-Eröffnung ist, meine eigenen ersten Schritte zu dokumentieren und anderen Anregung zu geben, diese in ihre Mess/Steuer/Regel/Beleuchtungs -Projekte einzubinden. Nicht alles, was ich hier schreiben werde ist selbst von mir “erfunden”, teils trage ich nur Bestehendes nach erfolgreichem Test oder Adaption zusammen. Wie auch immer, was ich hier vorstelle habe ich selbst getestet und weiß, dass es [zumindest bei mir] funktioniert hat.Warum im MK Forum, und nicht in einem Blog…? Naja, ich möchte gerne in dieser Gemeinschaft schreiben, weil ich denke die Arduino oder MC Plattformen eignen sich hervorragend für Modder und Wasserkühler, um ihren Projekten noch etwas hinzuzufügen. Außerdem kann ich hier im MK-F besser mit der zu erwartenden Kritik umgehen.Demnächst kommen die ersten Bilder, die ersten Schaltungen. Als erstes stelle ich eine OneWire Temperaturmessung für mehrere Sensoren vor und erkläre daran auch einige Basics. Danach kommen einfache LC Display Ausgaben (mir fehlen noch massenhaft Teile, die sollten bis in einer Woche da sein). Außerdem geplant ein Aufbau zum Regeln von induktiven Lasten bis 60V/3A. In einem weiteren Schritt möchte ich das zusammenführen.Außerdem auf der Roadmap so ziemlich alles, was mir in die Quere kommt. Meine Mittel zum Basteln sind (momentan) ein wenig beschränkt. :roll:Abschließend: wer sich gut mit Elektronik auskennt, der sollte bitte hier mit konstruktiver Kritik mitwirken. Ich bin beileibe kein guter Elektroniker und ich eigne mir eine Menge alten Wissens von vor 20 Jahren wieder neu an. Wenn also Kritik, dann solche, die mich (und andere) zur richtigen Lösung führt.Ich hoffe, dass das gut ankommen wird 😀Nachtrag: Inhaltsverzeichnis[spoiler]Sprungpunkte direkt zu den Tuts#1 — Temperaturen messen mit dem DS18B20http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post461922#2 — Temperaturen messen und einfache Anzeigehttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post462116#3 — Einfache Ausgaben auf einem LCDhttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post462840#4 — Temperaturen messen und anzeigen auf dem LCDhttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post462865#5 — Digitalausgänge “verlängern” mit Schieberegisternhttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post464679#6 — induktive Lasten ansteuern / schalten (mit Tip-120) Nachträge zur Freilaufdiode beachten!http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post467573#7 — Einsatz eines 16 Kanal Muxers (Output Demo)http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post467890#8 — Wahlschalter (wichtige Grundlagen)http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-2.html#post472365#9 — Arduino spricht RS232http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-2.html#post472601Infos zum MosFet berechnen (von Hallo1001)http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-2.html#post472895http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-3.html#post472951Programmer-Tutorial von Hallo1001http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-3.html#post472969#10 – wir fummeln mit I2C herumhttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-4.html#post486050#11 – Interrupts mal ganz einfachhttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-4.html#post486245#12 – “smarter Fancontroller”http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-post493422.html#13 – Mit dem Arduino ins Netz… der Arduino Uno und der Ethernet-Shieldhttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-6.html#post502515#14.1 – Schalten über Ethernethttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-6.html#post502516#14.2 – Vorstellung ETH Shield und Wake-On-Lan#15 – Voraussichtlich zur Ansteuerung von 7-Segment-Anzeigen#16 – Voraussichtlich zum Thema einfache serielle Datenkommunikation zwischen zwei Arduino an einem Beispiel#17 – Eventuell zum Thema “MyDuino”, oder wie man seine Projekte auf eine Lochrasterplatine bringt ohne dabei sein Prototyping Board zu opfern[/spoiler]
-
19. Juni 2011 um 14:06 Uhr #895082spokekillerTeilnehmer
[SIZE=”3″]Erste Schritte oder Ardu-Waaas?[/SIZE]
Um ganz grundsätzliche Infos über Arduino zu bekommen schaut bitte auf deren offizielle Seite. Es gibt viele Arduinos, von denen ich mich für einen Arduino Uno entschieden habe. Er trägt glücklicherweise die Sockel-Version des ATMega 328P. Vorteil ist, dass man den Arduino dann auch als Programmer nutzen kann (später mehr) und den Chip bei Tod leicht tauschen kann (auch dazu später mehr).
Arduino Uno R2 – Quelle: selbstDie Details dazu finden sich ebenso auf arduino.cc in der Kategorie Hardware.
Wichtig:
Die Aus- und Eingänge des ATMega MC sind direkt auf die Pfostenbuchsen verbunden und sind praktisch ungeschützt. Wer hier zuviel Strom zieht oder zu viel draufgibt, der tötet schnell und effizient. 😥
Bitte unbedingt das ohmsche Gesetz (R=U/I) nicht aus den Augen verlieren. Als Richtwert nutze ich für I maximal 40mA auf den Ausgängen.Beschaltung
Der Arduino kann auf drei Arten mit Strom versorgt werden: Über die USB Buchse (5V/500mA max) oder die Hohlbuchse (dann mindestens 7V und max 18-20V).
Es macht wenig Sinn, mehr als ca 9V auf die Hohlbuchse zu geben, da der Überschuß über 5V vom Spannungsregler auf dem Board “verbrannt” wird. Der Drop beträgt wohl ca 2V, deshalb mindestens 7V eingeben. Schade, aber an der Hohlbuchse sind 5V Netzteilchen fehl am Platz.
Wer dennoch mit deutlich mehr als 12V arbeitet, muß damit rechnen, das entsprechende Abwärme entsteht, was bei Einbauten in kleine Gehäuse wiederum interessant wird.
Als dritte Möglichkeit kann man die linke Pfostenbuchse unten im Bild nutzen. Davon sind die beiden rechten für eine Versorgung mit +5V vorgesehen.Die USB Buchse dient nicht nur zur Stromversorgung, sondern auch zur Übermittlung des Codes, der in Form sogen. “Sketches” in der IDE entworfen wird. Danach kann der Arduino autark laufen und über einen der drei obigen Wege seinen “Saft” bekommen. Soweit ich weiß erkennt er dabei, ob Spannung an der Hohlbuchse oder USB anliegt und nimmt dann den USB Port…
Es gibt Beschreibungen im Web, laut denen kleinere Projekte mit LiPoly oder NimH Akkus nahezu ewig laufen.Interessant dürfte das Thema Spannungsversorgung werden, wenn es dann zur Ansteuerung von Lüftern oder Motoren kommt. Die stemmt der Arduino dann natürlich nicht alleine. Üblicherweise wird man da dann auf eine 12V Quelle o.ä. ausweichen, die beide Teile dann versorgt. Wie gesagt sind die Ausgänge direkt mit dem ATMega beschaltet und taugen nur als “Trigger” oder eben als PWM Ausgang.
Die Buchsen im obigen Bild dienen auch zur Aufnahme von Huckepack-Platinen, sogen. “Shields”. Ich selbst habe mir gleich noch einen Ethernet Shield besorgt und konnte via Netz dann einige LEDs schalten. Praktisch meine ersten kleineren Erfolge. 😀
Die Anzahl Ausgänge dürfte auf den ersten Blick kaum jemand vom Hocker reissen. Aber das ist natürlich eine Frage der Herangehensweise. Es gibt schöne Möglichkeiten die Ein/Ausgänge zu Multiplexen oder mittels Schieberegistern (Shifting ICs) große LED Matritzen anzusteuern. Sobald meine Bauteile da sind und freie Zeit ist kommt das hier natürlich.
-
19. Juni 2011 um 16:06 Uhr #895096spokekillerTeilnehmer
[SIZE=”3″]Software[/SIZE]Auch hier der Verweis auf Arduino.cc. Vorweggenommen wird so ziemlich einiges unterstützt. Ich nutze die Arduino IDE unter Ubuntu 10.04.2 mit einem Sun Java. Die Einrichtung ist easy. Java installieren (3rd party repos), von arduino.cc die IDE ausgeladen und ausgepackt, fertig. :d:Unter Linux interessant: für den Nutzer wird im Home ein “sketchbook” angelegt, welches ich mir sogleich mittels symlink auf meine Dropbox umgebogen habe. Nach Anpassung der anderen Rechner ist so der Code auf jedem meiner Rechner aktuell und verfügbar. :banana:Eine kleine “Warnung” zu den fertigen sketches in den “Examples”. Manche sind buggy und beim schnellen Austesten kommt dann auch schnell der Frust, weil nichts tut. Einfach nochmal den Aufbau checken, und den Code zumindest überfliegen. Gelegentlich wird dann im Code ein anderer Pin angesteurt als in der Kommentarzeile steht. :devil:Unter Linux wird bei mir ein tty-device eingerichtet, unter dem man den Arduino als serielles Gerät ansprechen kann. Die IDE bietet einen “seriellen Kanal”, über den man Ausgaben sehen kann, wenn man bspw noch kein LCD angeschlossen hat (oder generell nur debugging machen möchte). Das ist in der Ver 0022 das Icon ganz rechts.Probleme hatte ich mit USB3, an einem Lenovo W520. Da hat sich der Arduino gerne mal vom Controller oder Kernel rauskicken lassen. USB3 unter Ubuntu ist ja generell eine Zumutung und für die paar kB maximale Sketch-Größe brauchts nicht mal USB1.1. :p[SIZE=”3″]Tutorial #1 – Temperaturen messen mit dem DS18B20(+)[/SIZE]Dazu brauchen wir:
- zwei Sensoren DS18B20 (drei sind noch besser, siehe Erweiterung)
- den Arduino
- Widerstand größer gleich 4,7 kOhm
- USB Kabel und unseren Rechner
- optional ein Breadboard (Laborsteckbrett)
- optional ein paar Käbelchen
Warum den DS18B20? Naja, ich mag keine NTCs und ich bin kein Freund vom langwierigen Umrechnen der individuellen Kennlinien. Für knapp 2€ bekommt man den DS18, der seine Daten nicht nur digital ausgibt, sondern Geschwister der gleichen Bauart am gleichen seriellen Bus erkennt und es ermöglicht, dass man über einen Eingang viele viele DS18 mehr oder minder gleichzeitig auslesen kann.Daneben ist er nur unwesentlich größer, in einem TO-92 Gehäuse verfügbar, hat eine Genauigkeit von 0.5°C und erlaubt den Betrieb im “vampiric power mode”, bei dem sich die Zahl der zu führenden Kabel auf 2 reduziert. Schaltbild für einen DS18B20:Pin 1 an Arduino GND (Leiste der Digitaleingänge im obigen Bild oben links)Pin 2 an Arduino Digitaleingang #2Pin 3 an Arduino 5V (im Bild unten links, Mitte)Dazu einen 4,7k Widerstand zwischen Pin2 und Pin3 des DS18.Zuvor noch schnell die Beschaltung im “vampiric/parasitic mode”:Hier ein Bild eines entsprechenden Versuchsaufbaus:Den besonders Aufmerksamen wird sicherlich auffallen, dass mein Widerstand deutlich größer ist. Das ist egal, wie ich herausfinden konnte. Ich hatte schlicht keinen kleineren, und so lernte ich nochmal, was ein Pull-Up widerstand ist :)Die Kabel laufen so: rot auf +5V, schwarz auf GND, gelb auf Digitalpin (#3, bitte ggf im Code die ersten paar Zeilen beachten)Und die Ausgabe über den SerialMonitor in der IDE:[CODE]Dallas Temperature IC Control Library DemoLocating devices…Found 1 devices.Parasite power is: ONFound device 0 with address: 2830481E030000EDSetting resolution to 9Resolution actually set to: 9Requesting temperatures…DONETemperature for device: 0Temp C: 24.50 Temp F: 76.10Requesting temperatures…DONETemperature for device: 0Temp C: 24.50 Temp F: 76.10Requesting temperatures…DONETemperature for device: 0Temp C: 24.50 Temp F: 76.10Requesting temperatures…DONETemperature for device: 0Temp C: 24.50 Temp F: 76.10[/CODE]Der Code ist im Anhang verfügbar und ist offen im Sinne CC 3.0. Ich glaube er basiert ohnehin auf der Demo die Dallas für den Chip mitgibt oder der OneWire Library. Ehrlich gesagt bin ich über soviele Sketches gestolpert, dass ich nicht mehr genau weiss woher exakt DIESER Sketch kam.So, nächster Schritt und jetzt wird es eigentlich erst interessant. Nehmen wir doch einfach einen zweiten DS18B20 und schalten den parallel zum ersten. Dann sieht das so aus:Theoretisch hätte ich meine linken grünen Drahtbrücken anders setzen müssen. Da ich aber keine so kurzen hatte und noch nicht rumlöten wollte hab ich das so gelöst, was elektrisch gesehen identisch ist. Nur kommt der “OneWire” Gedanke damit nicht sofort rüber… [-(Und der Code (den man nicht mal neu flashen muss) zeigt dann:[CODE]Dallas Temperature IC Control Library DemoLocating devices…Found 2 devices.Parasite power is: ONFound device 0 with address: 2850341E03000062Setting resolution to 9Resolution actually set to: 9Found device 1 with address: 2830481E030000EDSetting resolution to 9Resolution actually set to: 9Requesting temperatures…DONETemperature for device: 0Temp C: 25.00 Temp F: 77.00Temperature for device: 1Temp C: 24.50 Temp F: 76.10Requesting temperatures…DONETemperature for device: 0Temp C: 25.00 Temp F: 77.00Temperature for device: 1[/CODE]So kann man also relativ einfach an einem “Stern” eine Vielzahl an Sensoren nach diesem Muster oben an einem Kanal individuell abfragen:Wenn mein LCD da ist wird der Code umgebaut und wir lesen die Zustände am LCD aus und verändern in einem zweiten Schritt die Ausgabe per Knopfdruck an einem der Digitaleingänge.**Edit**Die Kabel zu den Sensoren können relativ lang sein. Im schlimmsten Fall kommt beim Arduino ein so stark gedämpftes oder verzerrtes Signal an, dass er es nicht mehr sauber lesen kann und dann erhält man bspw -127°C. Einzelne Leute berichten von Kabellängen über 10-20m ohne Probleme (normales gedrehtes Telefonkabel).Bei Verdrahtung auf die Ferne würde man den Widerstand beim Arduino halten und zwei Adern zu einem sogen. Breakout Board (Zwischenplatine) führen. Von dort wiederum kann man dann seinen Stern an Sensoren legen. Das Datenblatt ist u.a. bei Reichelt oder über unseren Big Brotha Google erhältlich.**Edit #2**Eine info zu den Adressen der DS18. Die chips sind in der Lage ein sogenanntes MicroLan(TM) aufzuspannen und haben daher 64bittige Adressen, die durch diese große Größe praktisch unique sind. Die einmal festgestellte Adresse eines DS18 läßt sich also später auch zum gezielten Unterscheiden und/oder Ansprechen nutzen.
-
19. Juni 2011 um 21:06 Uhr #895137ThaRippaAdministrator
Will da auch demnächst einsteigen. Weitermachen! Toll, dass das mal einer so detailliert beschreibt.
-
20. Juni 2011 um 8:06 Uhr #895158spokekillerTeilnehmer
ThaRippa;461967 said:
Will da auch demnächst einsteigen. Weitermachen! Toll, dass das mal einer so detailliert beschreibt.Vielen Dank für den Zuspruch, den kann ich brauchen. Soll ja kein Monolog werden. Witzigerweise war es auch die Erwähnung Deinerseits beim Monolith-Projekt, die mich dazu anregt hier eine Art Arduino Tagebuch zu schreiben.
Noch eine technische Ergänzung: ich habe mittlerweile natürlcih auch mal danach geschaut, ob es gute Anleitungen für den Bau eines Arduino gibt, der billiger kommt. Nicht jeder möchte das oben gezeigte Board irgendwo fest verbauen. Dafür ist es mE zu schade.
Außerdem sind Teile der Komponenten dann meist unnötig (was etwa die linken 20-30% des Boards ausmachen dürfte.
Sobald ich ein wenig fortgeschrittener bin werde ich auch das zeigen.Und noch ein Aspekt für Wasserkühler… neben der Wassertemperatur oder die anderer Komponenten können natürlich auch digitale oder analoge Durchflussmesser ausgewertet werden. \D/
Ich muss dazu allerdings sagen, dass ich selbst keine WK habe und dahingehend recht wenig selber testen kann. #-o -
20. Juni 2011 um 13:06 Uhr #895185ThaRippaAdministrator
Naja aber genau sowas will ich ja. Ich habe noch ein 4-Zeilen-VFD von Noritake, das soll da dran. Und dann soll mir der Arduino da die WaKü-Daten anzeigen. Dazu musser dann noch alle 10 Minuten meinen digitalen Schlüsselanhänger resetten, weil der nicht direkt hackbar ist…ach ja und ich möchte gern nen induktiven Taster für den Auswurf meines optischen LW. Der könnte den PC, so der grad aus ist, dann auch starten. Bissel Logik, drei Kabel, und die Doppelbelegung ist kein Problem.Das mit dem Selberbauen ist bei einem ePay-Preis von unter 30€ aber echt…nunja. Ich bin ja sparwütig…aber wenn man da nicht mit der Hälfte hin käm, würd ich mir da eher die Mühe sparen. Vielleicht später, aber gerade als Anfänger will amn sicher sein, dass man selber, und nicht etwa die Hardware Schuld ist 😉
-
20. Juni 2011 um 13:06 Uhr #895188spokekillerTeilnehmer
Also der Board-Nachbau ist nicht unbedingt wegen des Sparwillens. Es ist wohl eher der Drang dazu, das selber zu können und auch ein wenig Spieltrieb.
Mein Uno hat bei einem deutschen Versender keine 28€ gekostet, wenn ich mich recht erinnere. Das ist für große Projekte nicht zu schade, das ist schon richtig.Meine Einschränkung bei der WaKü war dahingehend gemeint, dass ich es nicht selber testen kann — wenn sich aber Experimentierfreudige hier einfinden, dann bin ich zu fast jedem Blödsinn bereit.
Nur Arduino-gesteuerte Paintballwaffen und Pseudo-Robbis kann ich nimmer sehen. 🙁:d:
-
20. Juni 2011 um 13:06 Uhr #895191spokekillerTeilnehmer
psahgks;462021 said:
Wow, das sieht nach einem tollen Thread aus. :d::d:Ich denke er ist es wert, dass du die Bilder in ein Foreneigenes Album hochlaedsts, dann muss man sich nicht immer die Werbung des Fremdhosters antun und die Bilder bleiben auf jeden Fall solange bestehen wie das Forum auch. 😉
Hi, Danke für die Vorschußlorbeeren. Ich will mich bemühen den Erwartungen gerecht zu werden. 😯
Die Bilder kann ich bei der nächsten, größeren Überarbeitung umhängen. Die Werbung sehe ich dank Adblock+ nicht, daher ist es mir nicht aufgefallen… [meine RS-Prüfung sollte ich mal aktivieren ist mir aufgefallen :D]
Aber wenn das so für Dich okay ist, dann werde ich ein internes Album nutzen. Gibts da Größenbeschränkungen?!? Ich spiel mal damit.
Cheers, Micha
-
20. Juni 2011 um 13:06 Uhr #895189psahgksTeilnehmer
Wow, das sieht nach einem tollen Thread aus. :d::d:
Ich denke er ist es wert, dass du die Bilder in ein Foreneigenes Album hochlaedsts, dann muss man sich nicht immer die Werbung des Fremdhosters antun und die Bilder bleiben auf jeden Fall solange bestehen wie das Forum auch. 😉
-
20. Juni 2011 um 14:06 Uhr #895198psahgksTeilnehmer
Meine Erwartungen sind nicht sonderlich hoch, ich kenne mich mit dieser Materie auch nicht besonders aus.
Der Thread macht aber einen aufgeraeumten Eindruck und die Beschreibungen scheinen auch fuer mich Laie leicht nachzuvollziehen und verstaendlich zu sein. Dadurch ist er schonmal viel Wert, vor allem fuer Leute, die z.B. ueber Google in ein paar Jahren auf ihn stoßen. Wenn dann die Bilder nichtmehr zu sehen sind waere es doch schade drum.Die hochzuladenden Bilder werden vom System auf 600 x 800 Pixel verkleinert, sofern sie es nicht schon sind.
Dadurch kannst du sie dann auch direkt in das Posting einbinden. 😉
So, jetzt aber BTT. ^ ^
-
20. Juni 2011 um 22:06 Uhr #895281spokekillerTeilnehmer
[SIZE=”3″]Tutorial #2 — Temperaturen messen und einfache Anzeige[/SIZE]So, jetzt wäre es natürlich gähnend langweilig immer nur am PC sehen zu können was da an Temperaturen gemessen wird. In Ermangelung eines LCDs (kommt bald :roll:) und dem gleichzeitigen Ausbruchs des Programmier-Spieltriebs dachte ich mir: “Alter Sack, hast doch ne Menge LEDs übrig, ein paar Widerständle sind auch noch da. Mach eben was einfaches!”Gesagt – getan. Die IDE angeworfen und den folgenden Code reingehämmert. Nicht schön, aber er tut was er soll.Zunächst habe ich den doch recht komplexen Temperaturcode aus der Dallas Demo gestrichen und eigentlich nur eine Funktion aus der Dallas Lib genutzt. Das macht den Code als Beispiel vieeeel ansehnlicher.Darüberhinaus habe ich Euch jetzt ein Beispiel mitgebracht, dass den eingelesenen Wert in Form eines – na sagen wir mal LED Grafen – anzeigt.Das macht er zwar nicht besonders schön, aber es geht mir ja auch drum zu zeigen, wie die Ausgabe an den Digitalpins im 0/1 Modus (also ohne PWM) funktioniert.** edit: okay, zugegeben, PWM ist ja an sich nix anderes. Was ich meinte war eben schlichtes Ein und Ausschalten, ohne pulsen **Also, nicht zu genau hinschauen, der Code ist wirklich ein wenig gräßlich.Code:[SPOILER][CODE]#include
#include // Code assembled for http://www.meisterkuehler.de// written for educational purposes FOR USE WITH A SINGLE SENSOR ONLY// use as you wish// no liability, no fees, no warranties, use at own risk// Data wire of DS18xxx is plugged into pin 2 on the Arduino#define ONE_WIRE_BUS 2// Setup a oneWire instance to communicate with any OneWire devices not just Maxim/Dallas temperature ICsOneWire oneWire(ONE_WIRE_BUS);// Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire);//store temperature for a single runint tmpTemp;void setup(void){ // start serial port (for output) Serial.begin(9600); Serial.println(“Dallas Temperature IC Control Library Demo”); // Start up the DallasTemperature library sensors.begin(); // LED output setup // initialize the digital pin as an output. // set pins 3-7 to output for attached LED pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); }void loop(void){ /* uncomment this for a LED test cylce in case something were wrong // run a testcycle, fire up each LED and then put them out again // so you can see if all is connected properly Serial.println(“Starting LED test cycle”); for(int i=3;i<9; i++) { digitalWrite(i, HIGH); // set the LED on delay(500); // wait for a second } delay(2000); for(int i=8;i>2; i–) { digitalWrite(i, LOW); // set the LED on delay(500); // wait for a second } Serial.println(“Endinging LED test cycle”); delay(3000); */ // call sensors.requestTemperatures() to issue a global temperature // request to all devices on the bus Serial.print(“Requesting temperatures…”); sensors.requestTemperatures(); // Send the command to get temperatures Serial.println(“DONE”); // we KNOW we only want to check the first sensor on the MicroLan Bus Serial.print(“Temperature for Device is: “); Serial.println(sensors.getTempCByIndex(0)); // Why “byIndex”? You can have more than one IC on the same bus. 0 refers to the first IC on the wire // as we do only have 6 LEDs we will show the temps between 20-30 degrees C in 2C steps // i.e. 1 LED lit = 20, 2->22, 3->24, 4->26, 5->28, 6->30 tmpTemp = sensors.getTempCByIndex(0); // remember .. per default all LED pins are LOW now, meaning off // i hate this quick and dirty coding, but switch case did not help me and I just wanted a result fast if (tmpTemp >= 30) { for(int i=3;i<9; i++) { digitalWrite(i, HIGH); // set the LED on } } else if (tmpTemp >= 28) { for(int i=3;i<8; i++) { digitalWrite(i, HIGH); // set the LED on } } else if (tmpTemp >= 26) { for(int i=3;i<7; i++) { digitalWrite(i, HIGH); // set the LED on } } else if (tmpTemp >= 24) { for(int i=3;i<6; i++) { digitalWrite(i, HIGH); // set the LED on } } else if (tmpTemp >= 22) { for(int i=3;i<5; i++) { digitalWrite(i, HIGH); // set the LED on } } else if (tmpTemp >= 20) { digitalWrite(3, HIGH); // set the LED on } // wait a little before next update delay (500); // set all to low before we start over for(int i=8;i>2; i–) { digitalWrite(i, LOW); // set the LEDs off } }[/CODE][/SPOILER]Aufbau:Im Wesentlichen besteht er aus dem obigen Tutorial. Dazu gesellen sich auf der linken Seite eine Batterie an Drahtbrücken und Vorwiderständen (was gerade so da war, 200 Ohm — eigentlich bissl zu wenig) und natürlich eine handvoll+1 LEDs.Am Vorwiderstand fällt die überschüssige Spannung ab (*hust*) bzw wird der Strom begrenzt. Kurzfristig geht es auch ohne, aber man soll solche Dinge nicht einreissen lassen und es geht ja nicht nur um die LEDs und deren Gesundheit, sondern vor allem um die Ausgänge des Arduino. Vorsicht ist besser als dumm aus der Wäsche gucken.VerkabelungDie LEDs hängen mit ihrer Kathode auf der im Bild unten zu sehenden GND/- Schiene und diese am Arduino GND wie oben auch. Pluspol analog.Die Vorwiderstände hängen an der Anode und sind wiederum über den Wust an bunten Kabeln mit den Digitalausgängen 3-8 verbunden. Wir erinnern uns, an Pin 2 hängt der Datenkanal des DS18.Wie gehts?Naja, wie gesagt ist das sehr einfach gehalten. Die Temperatur wird gemessen und an der seriellen Schnittstelle ausgegeben. Gleichzeitig werden die Temperaturen in 2er Schritten ab 20 °C abgebildet, und zwar so:1 LED an -> unter 22 °C2 LED an -> unter 24, aber größer-gleich 223 LED an -> unter 26, aber größer-gleich 24….AblaufZunächst werden die Digi Ausgänge auf Output programmiert, und die Library eingebunden. Da ich keine eigenen Funktionen nutze (noch nicht), muss ich alles im “Body” machen, also in “void loop”.Dazu wird die Temp ausgelesen, die Umsetzung auf LED gemacht und dann alles wieder auf Null gesetzt. Würde ich den letzten Schritt nicht machen, würde sich meine IF-Schleife ziemlich aufblähen oder die Anzeige bei Temperaturabfall immer noch die höherwertigen LEDs leuchten lassen.Der Nachteil ist, dass man einen delay einfügen muß, weil der Wechsel zwischen Reset auf Null und neue Belegung so schnell ist, dass man nur ein sanftes Schimmern wahrnimmt. MIT dem edlay aber nimmt man das Leuchten und aber auch die Aus-Zeit besser wahr. Nicht schön, aber funktionell.Nochmal: es ist ja nur ein einfaches Tutorial. Aber so seht ihr nun, wie relativ einfach man eine Umsetzung von Eingang auf Ausgang anstellen kann. Im Prinzip kann man auch ganz andere Dinge machen.Nehmen wir an, Ihr meßt die Temperatur zweier Sensoren und entscheidet dann im Code anhand einer Vorgabe die zu Eurer Wakü paßt, ob ein Kanal auf HIGH geht, der einen Buzzer auslöst, oder einen Ventilator über Relais oder Darlington-Transistor einschaltet….. oder eben einfach nur eine rote LED angeht. Oder alles zusammen. Das ist eben das Schöne dran… man kommt relativ leicht zu ersten Ergebnissen und baut darauf weiter auf.Natürlich muss man sich nicht nur auf 0/1 Ausgaben beschränken. Mittels der PWM Ausgänge kann man ganz vorzüglich Drehzahlen regeln und bspw Motoren oder Lüfter regeln. ABER! Um Gottes Willen nicht direkt anhängen, okay? Wenn meine Leistungstransis endlich kommen :roll:, zeig ich Euch auch das.Jetzt gibts noch ein Bild.. es waren dann wohl irgendwo zwischen 24 und 26 Grad … erstaunlich bei dem Sch…wetter momentan -
21. Juni 2011 um 18:06 Uhr #895366orw.AnonymousTeilnehmer
ich verstehe zwar derzeit weitgehend bahnhof, aber das ist mein persönliches problem und ich sehe hier starkes bildungspotental für mich. 😀
ganz toller thread, weiter so! thread ist abboniert. 🙂
-
22. Juni 2011 um 8:06 Uhr #895416spokekillerTeilnehmer
2SRonin;462208 said:
ich verstehe zwar derzeit weitgehend bahnhof, aber das ist mein persönliches problem und ich sehe hier starkes bildungspotental für mich. 😀ganz toller thread, weiter so! thread ist abboniert. 🙂
Vielen Dank erstmal 🙂
Das mit dem Bahnhof ist irgendwie verständlich. Arduino ist bisher für mich eine starke “learning by doing” Sache. Es wäre toll, wenn die Tuts dem Einen oder Anderen bei der Entscheidung helfen könnten, sein System oder irgendwas damit zu erweitern.Mit Arduino kann man an sich eine Unmenge an Aufgaben erledigen. Die Ausmaße — und das ist eben das tolle, wie ich finde — bestimmt man relativ leicht selbst. Und wenn es zunächst durch mangelnde Erfahrung sei.
Es geht mir ja nicht unbedingt anders. Ich programmiere zwar gelegentlich beruflich Shellscripts und mal ein bissl php oder was eben so anfällt, aber mir fehlt die fortwährende Tiefe. Und die Tage in denen ich selber mal eine Schaltung nachgelötet habe, sind 20 Jahre vorbei. (Jaja, der gute Spoke rollt gnadenlos auf die vierzig zu.:cry:)
Umso schöner der (Wieder-) Lerneffekt.:d: Mir machts Spaß, und es wird sicher dazu führen, dass ich ein Projekt im PC fest verbaue. Das war ja schließlich auch der ursprüngliche Motivator.
Statt Schwellenwertschalter usw dachte ich irgendwann an Mehrpunkt-Temperaturmessung, optische Wiedergabe und “Cooling-on-demand”.Naja, genug Gesülze. Das Päckchen mit meinen Shifting-ICs, den Darlington-Transis und ner Menge Kleinkram ist wohl schon raus, aber bis gestern abend ist nix angekommen.
Ich denke der nächste Schritt wird sein, zunächst mal zu zeigen, wie man einen Elektromotor (=Fan, Pumpe, Eiswürfelmaschine) ansteuert. In der Erweiterung koppeln wir das dann einfach mit der Temperaturmessung und der optischen Anzeige. Das machen wir dann mal geregelt via PWM, mal schlicht ein-aus. 😎
Letztlich sollen die Tutorials also dazu führen, dass man in die Lage versetzt wird, aus den einzelnen Elementen etwas Nützliches für die Maschine zuhause zusammenzufummeln. Und ich habe so schnell keine Absicht, das hier einschlafen zu lassen. [-X
❓ Achso, eines wollte ich noch fragen. Sind die Pumpen in den Wasserkühlungen generell “variabel”, also ändern sie Ihre Pumpleistung? Geht das ggf über die Betriebsspannung?
Haben wir hier im Forum so ne Art Grundlagenthread mit diesen Details dazu? -
22. Juni 2011 um 10:06 Uhr #895435
-
26. Juni 2011 um 13:06 Uhr #895970spokekillerTeilnehmer
[SIZE=”3″]Tutorial #3 — Einfache Ausgaben auf einem LCD[/SIZE]Was wir benötigen:* das Übliche, wie Drahtbrücken, Breadboard* Ein HD44780-kompatibles LCD für 5V Betriebsspannung* je nach Display einen 10k Trimmer oder 1K Widerstand* optional Piezo-Buzzer und Vorwiderstand (siehe Text)Zielsetzung:Wir verbinden das LCD mit 4 Digitalausgängen des Arduino und steuern über die “LiquidCrystal” library die Textausgabe. Besonderheit dabei ist, dass hierfür nur 4 pins für die Nutzdaten notwendig sind. Das war bei älteren Libs anders.Als Text soll nur ein statischer Text und die Uptime des Arduino in Sekunden ausgegeben werden.Aufbau:Das Display, das ich verwende hat keinen seriellen Bus und ist daher mit ca 8€ bei 16×2 Zeichen sehr preisgünstig. Der Nachteil ist eben, das man sich auf 4 Datenleitungen und zwei Steuerleitungen einlassen muss. Im Wesentlichen solltet Ihr beim Kauf einfach darafu achten, dass eine Kompatibilität zu Hitachis 44780 Serie besteht. Achja, und es muß mit 5V laufen!!Mein Display, ein DEM16216 benötigte noch eine Stiftleiste an seinen 16 Pins. Da diese alle in einer Reihe liegen ist die Verwendung mit einem Breadboard extrem einfach. Schnell aufgelötet…Was die Anschlüsse angeht sollte man das Datenblatt zu seinem Display lesen. Die Belegung scheint weitgehend standardisiert. In meinem Fall hat es exakt zum Demoaufbau für die LiquidCrystal Lib gepaßt.Im Demoaufbau außer Acht blieb das LED Backlight, welches ich zusätzlich angeschlossen habe (LCD Pins 15 & 16). Bei einem Festeinbau würde ich hier einen Taster oder Schalter verplanen. Nicht alle billigen Displays haben eines.Was gibt es sonst zu beachten…Ich bin zunächst arg erschrocken, weil mein Display keinen Mucks machte. 🙁 Erst später wurde mir klar, dass ich im Datenblatt gelesen hatte, dass der LCD Driver etwa 4.5 V braucht. Das heißt mein Widerstand (der o.a. Trimmer) mußte recht klein sein. Später ausgemessen reichten bei mir schon 1k. War es mehr, verschwand die Anzeige. Ergo: ein kleinerer dürfte auch reichen und die Abstimmung vereinfachen. Verdrahtungsschema (erstellt mit Fritzing)Aufbau auf dem Breadboard:Erläuterungen zum Bild
- Links oben ein 10K Trimmer/Poti, welches NUR den Kontrast der Schrift regelt. Zwingend notwendig gewesen, sonst sieht man NIX. 😥 Siehe oben
- das blaue und braune Kabel zum Arduino sind für die allgemeine LCD Ansteuerung
- die 4 gelben Kabel sind reine Datenverbindungen (4bit parallel, also 4 Kabel)
- die am Display liegenden grünen und gelben Brücken sind für die Spannungsversorgung der LCD Teile
Der CodeDer Code zieht sich zunächst die LiquidCrystal Library und konfiguriert die entsprechenden Pins des Arduino.Danach wird die Library “gestartet”, für ein 16×2 Display eingerichtet und die Ausgabe beginnt. Die Anweisung für die erste LCD-Zeile bleibt dabei im Teil [void setup] und ist daher statisch. Die zweite Zeile dagegen ist im Teil [void loop] und wird daher zyklisch mit neuen Werten erstellt. Sie zeigt schlicht die Controller-Uptime in Sekunden.Die Zeilen kann man buchstabengenau ansteuern mittels des SetCursor Befehls und einfacher x,y Koordinaten. Ein Element (Buchstabe) das geschrieben wurde, bleibt solange bestehen, bis es entweder überschrieben oder gezielt gelöscht wurde. Darauf muß man beim Ausgeben ein wenig achten, sonst bleiben “unschöne Reste”.Den Code laden wir über die IDE hoch und schon gleich nach dem Auto-Reset legt der Arduino los. Der angehängte Code basiert dabei auf der Demo für die LiquidCrystal Lib aus dem Arduino Paket und steht daher unter CC-BY 3.0. (Ich glaube ich bin verpflichtet, das zu schreiben).Um dem Ganzen noch ein wenig Kick zu geben habe ich einen Piezo Buzzer über einen kleinen 200 Ohm Widerstand angeschlossen, um damit die tone-Funktionen zu testen. Bei jedem Laufzyklus wird ein kurzer Piep ausgegeben. Zugegeben, nach längerer Zeit ein wenig nervig. Hat man keinen Buzzer kann man einen kleinen 8 Ohm Lautsprecher über den Widerstand anschließen. Ggf den Vorwiderstand anpassen (größer wählen).Erfahrungswerte
- Mögliche Bug-Quellen sind vor allem die Verkabelung des LCD. Zeit lassen und lieber zweimal prüfen, bevor man richtig loslegt. Ein Kurzer ist auf den Breadboards schnell passiert.
- Der Trimmerteil ist in manchen Tutorials nicht so gelöst worden. Ziehe ich bei mir die kleine orangene Drahtbrücke ganz oben links, die 5V+ mit dem schwarzen Kabel des Trimmers (Außenpin) verbindet, dann läßt sich mein Schriftkontrast viel besser steuern, will sagen über einen weiteren Regelbereich des Trimmers. Da dürft ihr ein wenig spielen. In einem finalen Aufbau würde ich die kleine Brücke weglassen.
- Außerdem denke ich mittlerweile, es ist besser den Code hochzuladen und den vorigen Programmcode zu überschreiben, BEVOR man sein neues Projekt verkabelt, denn man kann ja nicht wissen, ob die vorige Konfiguration einen Schaden an den Komponenten hervorrufen kann. Danach ist es an sich egal.
- Für einen Einsatz in einem Rechner würde ich außerdem ein Display mit entweder 16×4 oder 20×4 bevorzugen. 16 Buchstaben sind schnell verbraucht. Aber für Bastelzwecke oder einfachere Ausgaben ist das jetzige echt okay.
- Die Bilder zeigen ausnahmsweise mal den ausgeschalteten Zustand, aber ich denke Ihr könnt mir glauben. Grund ist der, dass ich schon bei der Erweiterung war, als ich die Bilder machte.
Dieses Tut macht Sinn, denn wir verwenden es jetzt gleich im nächsten Tutorial für unser LCD Thermometer!!!PS: bitte seht über meine mangelhafte Zeichensetzung und Rechtschreibung hinweg. Diese Tuts entstehen meist unter Zeitdruck. 😀
-
26. Juni 2011 um 16:06 Uhr #895992spokekillerTeilnehmer
Sodele, und den Thread lassen wir erst gar nicht kalt werden und gehen gleich zu …
[SIZE=”3″]Tutorial #4 — Temperaturen messen und anzeigen auf dem LCD[/SIZE]
Im Wesentlichen kombinieren wir jetzt zwei Schaltungen. Nämlich die von gerade eben, als wir auf dem LCD einfache Zeichenketten ausgegeben haben und die Dallas 18 Schaltung von oben, zum Messen von Temperaturen.
Wer also jetzt noch den funktionierenden Aufbau von eben hat, der reißt einfach mal den Buzzer und seinen Vorwiderstand raus. Beides brauchen wir jetzt nimmer.
Dafür bauen wir im rechten Teil des Breadboards die Anordnung für zwei DS18 wieder auf. Den Datenpin (Mitte) legen wir auf Pin 8 Digital des Arduino. Der Pin kann im Code geändert werden. Ansonsten bleibt alles wie zuvor.
Aufbau auf dem Board
Das Ganze sieht dann so aus:
Man sieht im rechten Teil, dass ich etwas konsequenter bei der Auslegung des One-Wire Gedankens geworden bin und Pin 1 und 3 der DS18 jetzt jeweils mit kleinen Drahtbrücken verbunden habe. Nur für die, die sich wundern wo die linken grünen DB hin sind.
Wichtig:
Zunächst hat meine Sensoranzeige gar nichts gezeigt. Dachte ich zuerst noch an Softwarefehler, so hat ein Testlauf mit dem Code von oben ganz schnell gezeigt, dass die Dallas Library keine Sensoren finden konnte (Temp = -127 oder 0).
Der Grund war dann ganz einfach. Aus der vorigen Verkabelung war GND auf dem Steckbrett noch mit GND auf der Seite der Analogeingänge [im Bild “oben] verbunden. Dadurch kommt der Pull-Up Widerstand aber nicht zur Geltung.
In diesem Beispiel MUSS GND also mit Arduino-GND der Seite der Digitalpins verbunden werden!!! Der 5V Pin kann gleich bleiben.Erläuterungen zum Code
Den Code habe ich mal wieder schnell zusammengefummelt. Der Ablauf ist etwa wie folgt:
* Libraries ziehen
* Onewire setup auf Pin 8
* zwei temporäre Variablen definieren
* LCD pin definition für die LCD Lib
* LCD setup auf 16×2 und starten
* Sensor Lib starten (das hatte ich mal verpennt und ca 30 Minuten den Fehler gesucht! Grundsätzlich muss man alle Libs auch starten)
* Loop (Positionen anfahren, Strings schreiben und Sensoren abfragen und schreiben)Die Delays habe ich eingefügt, damit man das Ganze etwas besser lesen kann. Der Refreshcycle ist dadurch etwas niedriger.
Besonders nützlich sind die lcd.clear Befehle. Die stellen sicher, dass das Display leer ist und der Cursor auf 0,0 also dem ersten Zeichen steht.
Dadurch, dass ich integer als Datentyp für die Temperaturen gewählt habe sind nur ganzzahlige Werte zu sehen.
Der Code bietet reichlich Spielraum zu variieren und kann Basis für alle möglichen Anwendungen sein, wie bspw einen Temperaturalarm. Viel mehr Code brauchts dazu gar nicht.
Finger drauf, kurz warten und schon geht die Temp-Anzeige mit
In Verbindung mit einem der nächsten Tutorials, der Steuerung induktiver Lasten (Fans, Pumpen) ist die Grundlage für einen individuellen Controller für den PC gegeben.
Ich könnte mir vorstellen dieses Projekt so auszubauen, dass ich es hier der Allgemeinheit als Bausatz oder Modul zur Verfügung stelle. Vor allem für diejenigen, die keine Lust oder Zeit haben sich mit dem Arduino zu beschäftigen.
Ich muß mal noch ein wenig spielen. Schließlich bleiben ne Menge Analog-Eingänge und dann gefällt mir nicht, dass der Code ausgerechnet drei der PWM Pins des Arduino belegt. M.E. braucht er die nicht wirklich für die Übertragung der Nutzdaten.
Vorstellbar wäre ein Kontroll und Steuerzentrum im Eigenbau — mehrere Tempsensoren, 3-5 regelbare Lasten, LCD und LED Anzeige…… Sicher, gibts alles schon fertig, aber ich seh’ das auch wie die Modelleisenbahner… selber gemacht ist halt doch schöner.
Bleibt außerdem noch der Aspekt der optischen Verschönerung im Moddingsinn. Statt konkreter Schaltaktionen kann man ja RGB LEDs leuchten lassen.
Naja, mal sehen. Aus einigen Threads ist mir jetzt ersichtlich geworden, dass es schon genug Leute gibt, die solche Dinge bauen und die das noch dazu viel besser können als ich. -
5. Juli 2011 um 9:07 Uhr #897221spokekillerTeilnehmer
Kurzes Update. Die nächsten Tage werden die Updates ausgesetzt, da ich zuviel andere Dinge um den Kopf hab. Ich habe die vergangene Woche mit Schieberegistern (74HC595) und LEDs gespielt. Das ist eher interessant für optische Mods, aber ich denke ich werde auch das noch vorstellen, einfach um die Prinzipien zu erklären. Interessant für Regelungen ist das mE eher weniger, da der “Aufwand” den man betreiben muß, um gezielt einzelne Endgeräte anzusteuern zu groß ist.Wenn am WE die Zeit reicht will ich mir mal die Multiplexer ansehen, das dürfte in einiger Hinsicht interessanter sein, sowohl für LEDs (PWM durchreichen für Fader-Effekte) und auch für Regelung.Außerdem liegen die TIP-120 hier noch rum, mit denen ich die Ansteuerung von Lüftern zeigen wollte. Das dürfte ein interessanteres Thema für die meisten Besucher hier sein.CU soon
-
6. Juli 2011 um 0:07 Uhr #897317ThaRippaAdministrator
Weiter so. Nicht dass du denkst das liest keiner. Ich warte gespannt auf deine Updates. Ich bekomm Lust endlich auch loszulegen.
-
6. Juli 2011 um 8:07 Uhr #897331spokekillerTeilnehmer
ThaRippa;464263 said:
Weiter so. Nicht dass du denkst das liest keiner. Ich warte gespannt auf deine Updates. Ich bekomm Lust endlich auch loszulegen.Danke Dir. Nein, fallen lassen werde ich das sicher nicht. Ich möchte definitiv eine komplette Steuerung (so sinnig oder nur hübsch sie denn sein wird) für meinen Dauerlauf/Internet/NAS Rechner machen. Und wenn schon, dann richtig — richtig heftig. :)Ich habe die Tage in der C’T einen Bericht über die alternativen Boards (MAX32 usw) von Digilent gelesen. So begeisternswert das ist, dass man teilweise noch mehr Kanäle hat und vor allem doppelt soviel RAM und erheblich mehr CPU Power (auch mehr Register, 32bit Prozi statt Atmels 8), so muß ich doch sagen, der besondere Charme beim Arduino liegt für mich darin, dass es schon genug Erprobtes gibt und er leicht zu adaptieren ist. Will sagen ich bleibe der Arduino Schiene erstmal treu. Für mich ist hier “weniger mehr”.Ansonsten… naja, ich hab noch ein Programmierbeispiel gesehen, dass es einem ermöglicht, Werte über die serielle Schnittstelle zu empfangen. Denkbar wäre also auch, dem Arduino über seriell eine Auswertung des Diskspace zu schicken und er reagiert dementsprechend. So bspw eine optische Füllstandsanzeige. Das sollte recht simpel sein. Wie gesagt, nachdem meine anderen Umbauten an der Pico usw ein wenig ins Stocken geraten sind, werde ich mich jetzt wie schon angedeutet im nächsten Schritt um die Ansteuerung induktiver Lasten kümmern. Von Relais bin ich dabei vollständig abgekommen. Die will ich eigentlich nur in der Not nehmen, aber dazu später mehr. Wenn ich es schaffe, dokumentiere ich am Freitag den Aufbau der LED-Steuerung mit den Shifties.Arduino, klein– aber rockt voll. 😀
-
9. Juli 2011 um 13:07 Uhr #897708spokekillerTeilnehmer
[SIZE=”3″]Tutorial #5 — Digitalausgänge “verlängern” mit Schieberegistern[/SIZE]
Da die Anzahl der verfügbaren Ausgänge des Arduino begrenzt sind, wird die Frage nach einer “Verlängerung” derselbigen irgendwann mal interessant. Bei der Suche nach Informationen über Arduino bin ich über die Möglichkeiten zum Einsatz von sogenannten “Schieberegistern” oder Shifting ICs gestolpert.
Nachfolgend beziehe ich mich auf den Einsatz des Schieberegister ICs 74HC595, welches für um die 35ct zu haben ist. Also nicht wirklich teuer und wird von mir im Text kurz “shifty” genannt.Ansatz
Wir werden einen Digitalausgang des Arduino damit “verlängern”. Man könnte auch “verbreitern” dazu sagen, was es aber mE nicht so wirklich trifft. Näheres dazu bei der Funktionsweise des Shifty.
Der Shifty wird uns helfen mit nur einem Ausgang des Arduino, die Zustände von bis zu 8 LEDs (o.ä.) festzulegen. Allerdings nur digital, also Ein/Aus. PWM durchzureichen ist damit mW nicht möglich.Funktionsweise
Man stelle sich ein Schieberegister vor, wie eine Längs-Anordung von 8 Fächern auf einer gleitfähigen Unterlage. Diese Fächer kann man der Länge nach um jeweils eine Position verschieben. Schiebt man zuvorderst ein neues Fach ein, fällt das letzte Fach in der Reihe herunter und verfällt.Die Fächer haben Zustände von 0 oder 1 (aus oder ein), die sie solange halten, bis sie am Ende herunterfallen. Wird kein neues Fach zuvorderst eingeschoben, verfällt nichts. Falls doch, schiebt es eben nur die Zustände der Fächer eine Position weiter.
Man kann mit jedem Schiebevorgang nur EINE Position schieben, das aber beliebig oft wiederholen. Den Zustand des ersten Fachs (0/1) bestimmt man beim Einschiebevorgang. Deshalb auch meine Bezeichnung als Verlängerung, nicht als Verbreiterung.
Ein Beispiel:
Nehmen wir an, unsere Fächer (=Register) sind alle auf Null. Wir schieben ein Fach mit Zustand 1 ein, damit sieht unser Muster so aus: 10000000
Wir nehmen einen weiteren Schiebevorgang vor und setzen dabei 0 und wiederholen dann den Vorgang nochmal mit 1. Unser Muster sieht jetzt so aus: 1010000
Würden wir jetzt viermal mit 0 shiften (schieben/schalten), dann sähe unser Muster so aus: 00001010
Um jetzt also alles auf Null zu setzen, müßten wir noch viermal mit 0 schieben/shiften.Das Wesentliche zu erkennen ist hier wichtig: Ich kann keine Position direkt beeinflussen und ich muss praktisch immer in kompletten oder komplementären (ergänzenden) Mustern denken.
Noch ein Beispiel:
Wir wollen die Anzeige 10101010 invertieren. Relativ leicht; wir müssen nur das erste Register anfassen. Wir shiften einmal ein neues Register mit 0. Damit schiebt es alle nach rechts und fügt zuvorderst eine Null ein -> 010101010 Aber, da wir nur 8 Register haben, verfällt das letzte Fach (Bit, Register) und wir landen bei 01010101Wollte man eine LED also als Lauflicht schalten, dann setzt man eben einfach nur ein Fach auf 1 an erster Stelle und Shiftet dann 8 mal mit 0. Ist man am Ende durch, fängt man von vorne an.
Aus meiner Sicht unbequem sind alle Operationen von rechts aus gesehen. Elektrisch bleibt einem immer nur der Weg von “links” und somit muß man wohl bei den meisten Lösungen in Mustern von links denken für einen Effekt von rechts. Oder man dreht einfach seine LED-Anordung um, 😆
Genaugenommen besitzt das Shifty zwei Registerbereiche. Einen als Datenpuffer (praktisch der Vorbereitungsraum) und einen aktiven Bereich, in dem die aktuellen, aktiven Zustände stehen. Aus eben diesem Grund benötigt man leider nicht nur einen Digitalpin des Arduino.
Beschaltung / Aufbau
Auf den Bildern zu sehen sind 7 gelbe Adern, die über Vorwiderstände von den Q-Pins (siehe Datenblattauszüge) über Vorwiderstände an LEDs gehen. Bitte das Datenblatt beachten, die Ausgänge leisten maximal 35mA!!!
Die grünen und blauen Brücken sind zur Stromversorgung (das 74HC595 akzeptiert dabei alles zwischen 2 und 6V, da sind die 5V des Arduino gerade gut).
Roter, orangener und blauer Draht sind jeweils die Pins die …
* den Schiebevorgang vornehmen
* den Umschaltevorgang zwischen Speicherregister und “Anzeigeregister” vornehmen
* den Zustand (0/1) des neu “eingeschobenen” Registers bestimmen
Grün/Weiss -> Spannungsversorgung
Orange: SI / IC pin 14 >>> an Arduino 8
Rot: RCK / IC pin 12 >>> an Arduino 9
Blau: SCK / IC pin 11 >>> an Arduino 10
Bei der Berechnung der Vorwiderstände bitte die geringe Ausgangsleistung der Q-Ausgänge des Shifty berücksichtigen!
Ich denke ich werde mir ausnahmsweise nicht die Mühe machen, ein Fritzing zu erstellen. Das IC findet auch bei arduino.cc im Playground Erwähnung. Darüberhinaus kann man die Shifties relativ leicht kaskadieren, auf was ich nur eingehen würde, wenn Ihr mich fragen würdet. So interessant ist dass nämlich dann für mich hier auch nicht, ehrlich gesagt. Ich denke mittlerweile, dass PWM Multiplexer viel spaßiger sein dürften.
Aber wie gesagt, ich helfe natürlich gerne.Ergänzend sei auch noch erwähnt, dass man auch andere Lasten steuern kann, sofern die Optokoppler, Darlington ICs oder Transistoren, die man dazu an die Ausgänge hängen müßte, bis 35mA schon schalten.
Code
Noch ein Wort zum Code und zur Wirkungsweise. Man MUSS zur Anzeige-Änderung auf das Speicherregister zurück, deshalb die vielen Schaltvorgänge im Code. Man kann also nicht “live” durchschalten.
Der Code ist diesmal gänzlich von mir. Ein wenig wirr an der einen oder anderen Stelle, weil ich Optionen und Demo-Prozeduren eingebaut habe, die man auskommentieren kann. Aber er funktioniert. Mal sehen, vielleicht kann ich noch ein Video einstellen.
Die Software macht einen einzelnen Durchlauf und einen Endlos, wenn ich mich richtig erinnere.. 😀 Der Code bietet genug Spielraum und zeigt deutlich genug, wie man zwischen den beiden Bereichen umschalten muss und wann.Beschaltung 74HC595 (Quelle SGS Thompson Datenblatt)
Wer sich ernsthaft mit der Anschaffung auseinandersetzt und noch “Angst” haben sollte, der darf versichert sein, dass ich gerne auch bei individuellen Problemen helfe, soweit es mir eben möglich ist.
Viel Spaß, :banana:
Spoke -
11. Juli 2011 um 10:07 Uhr #897864spokekillerTeilnehmer
Einige Anmerkungen noch zum letzten Tutorial.* In meinem Fall hatte ich nur 7 LEDs mangels Bauteilen genutzt. Das Beispiel funktioniert natürlich auch gut mit 8 Stück.* Mir ist beim biken komischerweise noch so eingefallen, wozu man das bequem nutzen kann. Wenn man nämlich die Muster, die man benötigt vorher in konstanten Arrays definiert und die dann einfach durchläuft. Vorstellbar wäre eine Lastanzeige, ähnlich einem VU-Meter für alles mögliche… Diskspace, CPU, Netzwerkbandbreite. Die Werte könnte man ggf über die serielle Schnittstelle füttern.AusblickeIch habe mir am Samstag Zeit genommen, die TIP-120 Darlingtontransis mal zu testen. Der Aufbau ist unglaublich trivial und wird noch detailliert beschrieben.Ich hatte einen PWM Kanal genutzt um über diesen und den TIP einen 12V Lüfter zu steuern. Allerdings kam da recht schnell Ernüchterung. Bei einem recht alten Lüfter konnte man sehr deutlich das durch die PWM erzeugte Pfeifen hören. Bei einem etwas aktuelleren Xcilence dagegen verschwand das Geräusch nahezu gänzlich. Ich könnte mir diese Lösung gut vorstellen für die Praxis. Der TIP-120 ist hoch belastbar, könnte also auch mehrere Lüfter parallel treiben.Dann hatte ich die Basis des TIP mal zu einem der normalen Analog-Ausgänge geschaltet und da funktioniert er dann eben wie ein Relais. Ich dachte immer, dass man in einem gewissen Bereich auch über die Basis den Kollektorstrom in seiner Größe regeln kann. Argh, da läßt mich die Theorie jetzt im Stich. Ich muß das nochmal nachlesen.Als Relais-Ersatz finde ich es allerdings auch nicht schlecht und auch nicht unhandlich. Galvanisch getrennt ist aber halt was Anderes.Der Ethernet-shield wartet ja auch noch auf ein Tut…. Irgendwelche Präferenzen, was Ihr als nächstes sehen wollt?**Edit ** ich habs gefunden… ich Blödmann hatte bei meinem nicht-PWM Versuch aus Versehen wieder einen Digitalkanal belegt, keinen Analog-Ausgang… Peinlich — naja, im Eifer des Gefechts
-
11. Juli 2011 um 15:07 Uhr #897885einballTeilnehmer
Hey spokekiller!Ich bin auch Bastler in dieser Richtung, allerdings nicht mit dem Arduino: Ich mache alles selbst (Atmega32 usw.).Woher hast du die tollen Kabel, mit denen du die Steckbretter verbindest? Ich mache mir die immer selbst, aber das ist eine riesen Arbeit, auf die ich so langsam ehrlich gesagt keine Lust mehr habe. eine halbe Stunde für 6-7 Kabel ist schon eine Hausmarke! 🙁
-
11. Juli 2011 um 18:07 Uhr #897913spokekillerTeilnehmer
einball;464864 said:
Hey spokekiller!Ich bin auch Bastler in dieser Richtung, allerdings nicht mit dem Arduino: Ich mache alles selbst (Atmega32 usw.).Woher hast du die tollen Kabel, mit denen du die Steckbretter verbindest? Ich mache mir die immer selbst, aber das ist eine riesen Arbeit, auf die ich so langsam ehrlich gesagt keine Lust mehr habe. eine halbe Stunde für 6-7 Kabel ist schon eine Hausmarke! 🙁Hi einball, ja ich glaube schon was von Dir in Verbindung mit den ATMegas gelesen zu haben… kann das sein?Die Kabel sind recht günstig zu bekommen bei watterott.com. Die Versandkosten sind niedrig (ab 2€ per UPS) und die haben ein Sortiment, das speziell auf verschiedene MC-Plattformen ausgelegt ist. Mein LCD stammt auch von dort. Schau mal hier: http://www.watterott.com/de/Boards-Kits/Zubehoer/Jumper-WiresCheers
-
11. Juli 2011 um 19:07 Uhr #897917einballTeilnehmer
Vielen Dank für den Link! Der ist gleich mal gebookmarkt worden!
Ja, das kann sein. Wenn du auf Kaltmacher.de liest hast du sicher von mir gelesen. Ich war mal ein knappes Jahr Administrator dort. Mittlerweile bin ich aber eher in den Hintergrund gerückt, um meine Projekte weiter zu basteln, ganz ungestört. Vllt kennst du “SCAR”, bzw hat in diesem Zusammenhang von mir gehört. Ein schief gegangenes Projekt, in das ich bereits viel Geld investiert (>1000) habe und es ist noch nicht einmal der Rahmen fertig.
Momentan bin ich dabei, eine USB Bluetooth Brücke zu basteln, die mir eine serielle Verbindung herstellt. Im Prinzip nur ein FT232RL und ein BTM222 mit Levelshifter. Dennoch kostet das fertigen lassen einer Platine knappe 50 Euro, was ich nicht zahlen kann und will (Praktikum momentan -> Weeenig Geld :)). Daher liegt das auf Eis. Was ich zzt bastle (die Brücke ist nur die “Kommunikation” zum µC, da ich keine Lust habe, wieder an tausenden von Kabeln dran zu hängen.) ist ein Sensorkopf mit Drucksensoren (respektive Tiefensensor), Licht, Beschleunigungssensor, usw …
-
11. Juli 2011 um 19:07 Uhr #897806spokekillerTeilnehmer
spokekiller;464843 said:
Einige Anmerkungen noch zum letzten Tutorial.
Ausblicke
…. Dann hatte ich die Basis des TIP mal zu einem der normalen Analog-Ausgänge geschaltet und da funktioniert er dann eben wie ein Relais. ……..
….
**Edit ** ich habs gefunden… ich Blödmann hatte bei meinem nicht-PWM Versuch aus Versehen wieder einen Digitalkanal belegt, keinen Analog-Ausgang… Peinlich — naja, im Eifer des GefechtsAlsoooooo… manchmal, ne? [-( Wenn man Mist daherredet, dann gleich richtig.
Ich hab zunächst mal natürlich KEINEN Analogausgang genutzt, weil der Arduino Uno die gar nicht hat. Ich meinte ich hatte einen Digitalausgang ohne PWM Support nutzen wollen.
Warum das dann mit dem TIP nicht funktioniert hat ist relativ einfach. An diese normalen Ausgänge kann man keine “analogen” Werte schicken, d.h. es geht softwaretechnisch aber eben hart gehts nicht. Deshalb auch bei mir der sofortige Ausschlag von 0 auf 12V am Lüfter.
Beim Nachlesen der Specs und der Referenz für die Befehle ist es mir dann gerade eben aufgefallen. Ich hab den Aufbau nochmal gemacht und denke dass das Pfeifen subjektiv bei moderneren Lüftern verschmerzbar ist. Lärm ist ja aber bekanntlich eine subjektive Empfindung.Sodele, “Sorry” für die ganze Verwirrung, aber so kommts eben manchmal mit den schnellen Gedanken. 8-[
-
1. August 2011 um 9:08 Uhr #899562spokekillerTeilnehmer
Hallo….keine Angst, der Thread ist nicht tot, ich bin nur aktuell an den WEs und unter der Woche mit einer Menge “Real Life” beschäftigt.Habt Ihr gesehen, es gibt neue Arduinos, jetzt bspw einen mit integriertem Ethernetshield. http://arduino.cc/blog/2011/07/13/arduino-ethernet-adk-available-for-purchase/Nachdem man mit dem Ethernetshield auch so feine Dinge machen kann wie NTP-Abfragen, Mails verschicken, Wake-On-Lan Packets schicken und natürlich über Ethernet Rechner oder andere Verbraucher ein und auszuschalten oder zu regeln ein cooles Angebot. Außerdem zumindest auf dem Papier billiger als beide Komponenten einzeln zu erwerben. Ansonsten habe ich mit Signalmultiplexern gespielt und will demnächst noch einen Weg zeigen wie man direkt über RS232 (nicht mehr so oft an neueren Boards, ich weiß) Kommandos an den Arduino schicken und auswerten kann. Ach, und dann wäre ja noch der Backlog für den Tip-120. Cheers und bis hoffentlich demnächst
-
1. August 2011 um 9:08 Uhr #899567spokekillerTeilnehmer
littledevil;466755 said:
spokekiller;466751 said:
… und natürlich über Ethernet Rechner oder andere Verbraucher ein und auszuschalten oder zu regeln ein cooles Angebot.Wieviel muß man für eine funktioneirende Lösung rechnen? Ist das nur für Programmiercracks zu handeln?
Programmiercracks? Nein, ich bin sicher alles andere und man kann dank der realtiv simplen Sprache sehr schnell eine eigene Lösung entwerfen. Siehst du ja hier anhand meiner Beispiele.
Die Kosten… hmm…. also ein kleiner Arduino und der Ethernet Shield kommen bspw auf ca. 50 €. Kleinteile wären dann noch zu berücksichtigen (Relais, Optokoppler). Es geht noch billiger, aber so hast Du alles als Modul fertig und getestet und benötigst keine weiteren Kenntnisse und vor allem nicht soviel Zeit.
Man kann sich den Arduino auch in einer abgespeckten Version selber bauen (bspw ohne die USB-Brücke), aber das würde ich nur im Ausnahmefall machen.Der neue Arduino mit integriertem Ethernet-Shield ist ein wenig billiger… schau mal auf der offiziellen Seite.
Je nachdem WAS Du umsetzen möchtest kann ich Dir gerne helfen. Ich bin keine Elektronikgröße, aber zur Not fragen wir dann einfach noch ulv oder einball. 🙂
Ich spiele aktuell mit dem Gedanken, den Internetrechner zuhause über den Arduino hochzufahren, bspw über eine URL ein Magic Packet zu schicken. Danach kann der Arduino per pings checken, ob die Kiste da ist (oder via Signale über Seriell). Außerdem kann man den harten Resetschalter verdrahten (wobei sich meine Kiste unter Ubuntu noch NIE aufgehängt hat). Daneben kann der Arduino dann noch Temperaturen messen etc..
Außerdem will ich unbedingt mal so eine Disk-Kapazitätsanzeige austesten, mit LCD oder farbigen LEDs. Spielerei, sieht aber sicher geil aus. :banana: -
1. August 2011 um 9:08 Uhr #899566littledevilTeilnehmer
spokekiller;466751 said:
… und natürlich über Ethernet Rechner oder andere Verbraucher ein und auszuschalten oder zu regeln ein cooles Angebot.Wieviel muß man für eine funktioneirende Lösung rechnen? Ist das nur für Programmiercracks zu handeln?
-
1. August 2011 um 10:08 Uhr #899571ThaRippaAdministrator
Damn! Da WOL bei meinem Hauptrechner irgendwie nicht will (Fritzbox kann soowas senden) wäre das echt nett…aber ich wollte maximal 25€ ausgeben für den alten Duemillanove…mal schauen.
-
1. August 2011 um 11:08 Uhr #899576spokekillerTeilnehmer
ThaRippa;466760 said:
Damn! Da WOL bei meinem Hauptrechner irgendwie nicht will (Fritzbox kann soowas senden) wäre das echt nett…aber ich wollte maximal 25€ ausgeben für den alten Duemillanove…mal schauen.Den Duemilanove gibts ja durchaus in einigen Shops um gerade 22-25 Euro… Leider kosten die Ethernetchips von WIZ schon einzeln so an die 15€, sodass man selbst mit Lowcost Lösung die 25€ locker knackt.
Siehs mal so: kannst Du 15-20€ in einem Jahr dadurch an Stromkosten sparen?Falls ja, dann lass doch den alten Duemilanove und nimm Dir das hier:
http://arduino.cc/en/Main/ArduinoBoardEthernet
http://store.arduino.cc/eu/index.php?main_page=product_info&cPath=11&products_id=141Wie klingt das…? Superkompakt und alles beieienander und noch genug Pins um dem Rechner nen individuellen LED-Touch zu geben 😀
-
1. August 2011 um 12:08 Uhr #899581littledevilTeilnehmer
Konkret würde mir dabei z.b. das einschalten von webcam/Netzwerkcams einfallen. Da könnt eich dann mal kurz schaune, ob noch alles ok ist.
-
1. August 2011 um 12:08 Uhr #899577ThaRippaAdministrator
Strom sparen…ach naja…an sich ist das nur Luxus. Ich möchte den Rechner unterwegs einschalten können, um sagen wir mal…Urlaubsvideos von dort herunterladen zu können. Jeder kennt das, man sitzt bei Freunden, Kilometerweit von zu Hause und unterhält sich über…Sachen die man eventuell auch im Internet bekäme aber schon zuhause hat. Oder Sachen die man nicht mehr bekommt. Richtige Perlen. Dann denkt man: hab ich zuhause, müsst ich ihm mal brennen oder so…Und wegen sowas will ich den Rechner nicht an lassen – kommt ja schließlich nicht oft vor. Ich überlege mir irgendwann nen NAS-Rechner mit Router-Zweitjob zu basteln, aber sowas kostet noch mehr. Bis dahin “spart” der Arduino nur das Geld was ich verbrauchen würde, wäre mein Rechner immer an. Aber egal wie, anschaffen werd ich mir so ein Ding.
-
1. August 2011 um 13:08 Uhr #899586spokekillerTeilnehmer
littledevil;466771 said:
Konkret würde mir dabei z.b. das einschalten von webcam/Netzwerkcams einfallen. Da könnt eich dann mal kurz schaune, ob noch alles ok ist.Kein Thema, das ist gaaaanz einfach :o. Ich bastel Dir mal was zusammen.
Nee, ehrlich. Ich denk mir was aus. Im Prinzip hatte ich sowas als Testaufbau fertig. Du kannst dabei über eine URL gezielt Digitalausgänge des Arduino schalten. An diee klemmen wir dann kleine Relais, die die Betriebsspannung der Webcams unterbrechen.Ich denk ich kann vielleicht bis Sonntag was kleines hier vorstellen. Der Aufwand ist recht gering und die Umsetzung flexibel genug. Ok für Dich, kleiner Teufel :D?
-
1. August 2011 um 13:08 Uhr #899587spokekillerTeilnehmer
ThaRippa;466767 said:
Strom sparen…ach naja…an sich ist das nur Luxus. Ich möchte den Rechner unterwegs einschalten können, um sagen wir mal…Urlaubsvideos von dort herunterladen zu können. Jeder kennt das, man sitzt bei Freunden, Kilometerweit von zu Hause und unterhält sich über…Sachen die man eventuell auch im Internet bekäme aber schon zuhause hat. Oder Sachen die man nicht mehr bekommt. Richtige Perlen. Dann denkt man: hab ich zuhause, müsst ich ihm mal brennen oder so…Und wegen sowas will ich den Rechner nicht an lassen – kommt ja schließlich nicht oft vor. Ich überlege mir irgendwann nen NAS-Rechner mit Router-Zweitjob zu basteln, aber sowas kostet noch mehr. Bis dahin “spart” der Arduino nur das Geld was ich verbrauchen würde, wäre mein Rechner immer an. Aber egal wie, anschaffen werd ich mir so ein Ding.Na dann mach das doch so und nimm dir den Ethernet-Duino… der wäre ja genau das Richtige. Dann legst Du schlicht einen der Digi-ausgänge auf einen Optokoppler oder ein Relais und schaltest das parallel zu Deinem Soft-Off/On Schalter am PC. Wenn die Kiste ne Pico hat wirds noch direkter, dann kannst die Versorgung zur Pico damit schalten. An 220/230V will ich persönlich nicht ran, dafür gibts aber auch fertige Lösungen.Das wird im Prinzip das gleiche wie ich jetzt für den kleinen Teufel designen werde. Einfach, leicht umzusetzen, und noch relativ geringe Kosten.
-
1. August 2011 um 16:08 Uhr #899606littledevilTeilnehmer
Könnte man sich da langfristig auch an ne Easy SBS dran hänge bzw. diese ergänzen?
Ich werde darübe eh einige Sachen schaltbar machen.
Dann könnte man den Herd noch vom urlaub aus auschalten 😆
-
12. August 2011 um 21:08 Uhr #900299spokekillerTeilnehmer
Tutorial #6 — induktive Lasten ansteuern / schaltenACHTUNG: Korrektur / Nachtrag #2.Die u.a. Schaltung funktioniert zwar (auch ohne Schäden soweit ich sagen konnte), ist aber etwas unorthodox, bzw unpassend aufgebaut. Baut sie bitte nicht so nach, sondern zieht die Diode ab und setzt diese anstatt dessen parallel zum Lüfter, sodass die Kathode (Ring) zum Pluspol und die Anode zu Masse zeigt.Korrekter Teilaufbau ist u.a. erkennbar aus: http://de.wikipedia.org/wiki/Relais#Schalten_von_Relais_mit_TransistorenIch entschuldige mich für diesen Fehler. Ich hatte mich durch ein Beschaltungsbeispiel für den tip120 und eine falsche Erläuterung fehlleiten lassen.Wer genauer nachliest, wird feststellen, dass der Tip120 intern bereits eine Diode über der “falschen” Position hat. Die Erklärung dafür :
The flyback diode in the transistor is connected across the transistor and protects it against negative voltages between the collector and emitter. When switching a relay, you need a flyback diode across the relay coil, to protect the transistor against high positive voltages between the collector and emitter.
Sodele, wieder was gelern. Vielen Dank an phil68 für den guten Hinweis!Ende Nachtrag #2AnsatzDie Ausgänge des Arduino bzw des ATMega können ja nur geringfügige Ströme bei 5V maximalem Pegel zur Verfügung stellen. Nun gibt es natürlich genug Relais, die man damit zur Arbeit bewegen kann, idR dürfte aber “ein wenig mehr Bumms” vonnöten sein.Darüberhinaus ist es natürlich auch nicht möglich ein PWM-Signal über ein Relais an den Empfänger durchzureichen.Deshalb bedienen wir uns eines Leistungs- oder Darlington-Transistors, der unseren Arduino vor der hohen Last schützt und uns das Schalten erheblich höherer Spannungen und Ströme ermöglicht.Nachfolgender Aufbau ist wie immer zu Lehrzwecken gedacht, kann aber wohl unbedenklich so übernommen werden. Dennoch müßt Ihr vorher selber prüfen, ob die Schaltung Euren Ansprüchen genügt.FunktionsweiseIch hefte diesmal keinen Code an, denn die paar Zeilen lohnen sich kaum. Im Prinzip kann man einfach ein PWM Signal an einem der entsprechenden Pins erzeugen. In den Bildern kann man die Beschaltung dazu gut erkennen.Der Arduino gibt eine gewisse Spannung auf die Basis des TIP-120, den ich als Darlingtontransi ausgewählt hatte. Der ist für dieses Beispiel übrigens mächtig überdimensioniert, reicht er doch bis 60V, 5A.Der DT verstärkt das Eingangssignal sozusagen und “macht” aus den ebenfalls an ihm anliegenden 12V (siehe Schaltbild) die Versorgungsspannung für den Lüfter. Zur Funktionsweise eines DT am besten Wikipedia zu Rate ziehen.Beschaltung / Aufbau* Die Basis (linker Pin auf meinen Bildern) des Tip 120 an den Arduino (PWM Pin nehmen) über einen 2,2 kOhm Widerstand* Den Kollektor (mittlerer Pin) an die Massezuleitung des Lüfters* Den Emitter an die gemeinsame Masse des Arduino und der Versorgungsspannung des Lüfters (d.h. die Massen des extra Netzteils für die 12V des Lüfters und die Masse vom Arduino sind durchgeschleift)* Der Pluspol des Lüfters geht direkt auf Plus des 12V NT~ detaillierter Schaltplan kommt noch nach~ Ein wichtiges Detail bleibt zu erwähnen: die sogenannte Freilaufdiode zwischen Kollektor und Emitter (Kathode am Kollektor, siehe Bilder). Ich hatte eine 1N4005 über, deren Belastungsgrenze ebenso weit über dem liegt, was wir hier brauchen.Warum diese “Freilaufdiode”? Wie die meisten noch aus dem Physikunterricht wissen dürften, erzeugen induktive Lasten (Spulen) B-Felder, die wiederum zu Selbstinduktion führen. Im Klartext: würde solche Selbstinduktion hier stattfinden [bspw beim Stop des Lüfters] und die Spannungen auf den Arduino durchschlagen wäre er Toast. Um eben das zu verhindern, wird die Diode benutzt, um den “Rückschlag” zu unterbinden. Das ist echt wichtig. Bei allem was eine Spule hat (Motoren und Relais), ist diese Diode notwendig. Ich würde es mir zur guten Angewohnheit machen, diese immer zu verbauen. Der Drop ist gering und so bleibt die Schaltung flexibel.Was wir mit diesem Aufbau nun machen ist entweder schlicht den Digi-Pin des Arduino auf High legen und damit 12V voll durchreichen oder ein PWM Signal erzeugen, sodaß der Tip120 das PWM mit entsprechend höherem Pegel durchreicht. Die Bilder sagen denke ich genug. Der Code dafür ist ein einfacher 5-10 Zeiler, das bekommt jeder in den ersten Stunden Arduino hin.Wie ich weiter oben schrieb, konnte ich bei einem alten Lüfter das hochfrequente PWM-Pfeifen sehr deutlich hören, aber bei dem ebenfalls abgelichteten roten Xilence Lüfter nahezu gar nicht mehr.Details der Beschaltung, Pins des Tip-120 hier B-C-EGroßansicht, rechts der fliegende Aufbau für den Anschluß eines 12V Netzteils (SW:Masse, RT:plus), USB Kabel für 5V-Versorgung des ArduinoGroßansicht, mit Spannungsabgriff am Lüfter (PWM-Signal)Ausblicke / ModifikationenNun, man ersetze den TIP120 durch einen etwas geringer dimensionierten DT und nehme ein fettes Relais, dann kann man damit simpel ein-/Ausschalten. Würde man damit die Versorgungsspannung der o.a. Webcam kappen oder die Versorgungsleitungen des USB Kabels, dann wäre ein Szenario erfüllt wie Littledevil schrieb. Kombinieren wir das ganze mit dem EthernetShield (kommt wohl als Nächstes), dann haben wir unseren “Remote-per http steuer-Apparat”.Die o.a. Schaltung kann übrigens auch mehrere Lüfter parallel ansteuern, soviel wie eben das Netzteil hergibt, bis max 5A sollte der Tip120 nicht schlapp machen, müßte aber dann wohl passiv gekühlt werden. Was man schaltet ist letzlich egal. Ob UV-Kathoden, Pumpen, Lüfter. Je nach Transistor und separater Spannungsquelle scheint erstaunlich viel zu gehen. Im Bereich ab 50~60V würde ich persönlich aber dringend dazu raten, sich das aus versicherungstechnischen Gründen gut zu überlegen. Es gibt reichlich gute und noch günstige Schaltboxen über Ethernet. Besser so, man hat schon Buden abbrennen sehen wegen “narrensicherer” Eigenbauprojekte.Kombinieren wir das Ganze mit einer Temperaturmessungen von oben, bauen wir uns einen schicken Regelkreis. Mit Alarm und Display dazu… Der Kick wäre, wenn man das PWM Signal des Arduino direkt an den Lüfter geben könnte und dann PWM-Lüfter einsetzen. Irgendwie ahtte ich aber in Erinnerung, dass die PWM-Frequenzen unterschiedlich sind und der Aufwand damit zu hoch wäre.Als Nächstes sollte ich dann wohl endlich mal zeigen, wie man den Ethernetshield für solche Zwecke nutzt.Ansonsten wäre nur noch erwähnenswert, dass man mit den auf dem Konsum-Markt vorhandenen Mini-Optokopplern den Arduino auch noch vom Rest der Schaltung abtrennen kann. Ich hatte allerdings keine da und halte es ehrlich gesagt für Schaltungen wie diese bis 12~18V und der verbauten Freilaufdiode nicht für nötig.Ich hoffe ich hab jetzt alles richtig erklärt und konnte mal wieder Appetit machen.**Nachtrag 1 **Der Vollständigkeit halber sei erwähnt, dass für kleinere Relais ein kleiner DT wie der 2N3904 (40V, 0,2A, TO92 Gehäuse) und eine 1N4148 (100V, 015A) gut reichen sollten. Beide Bauteile kosten unter 10ct!Die Werte des Tip-120 hatte ich falsch, sind jetzt korrigiert.
-
13. August 2011 um 12:08 Uhr #900321HawkTeilnehmer
Cooles Projekt :d:Hab mich bis jetzt nur mal an einen Tiny2313 versucht :fresse:http://www.mikrocontroller.net/topic/156729Bilder und Video:http://www.mikrocontroller.net/topic/156729#1750601
-
13. August 2011 um 15:08 Uhr #900336spokekillerTeilnehmer
Hawk;467596 said:
Cooles Projekt :d:Hab mich bis jetzt nur mal an einen Tiny2313 versucht :fresse:http://www.mikrocontroller.net/topic/156729Bilder und Video:http://www.mikrocontroller.net/topic/156729#1750601Danke Dir Hawk,ich schau mir Deine Sachen mal an. Ich weiß nicht mehr genau wie ich zu Arduino als Grundlage meiner kleinen Experimente kam, aber ich kann mich noch erinnern, dass mir der Aufwand für direkte MC Programmierung einfach zu hoch war. Ich finde immer noch, dass für n00bs und ex-Hobby-Elektroniker die ganze Plattform extrem geeignet ist.Die Kosten sind überschaubar, man kann unglaublich viele Beispiele finden, und wie ich so schön mal gelesen haben “there is no problem an AVR can’t solve”.Das besonders Schöne für mich ist, wieviel altes Wissen ich wieder auffrischen kann und wie zügig man zu Ergebnissen kommt, ohne massenweise Tiefenwissen zu lernen. Für Leute mit begrenzter Zeit eine tolle Sache.Gruß
-
18. August 2011 um 15:08 Uhr #900585spokekillerTeilnehmer
Tutorial #7 — Einsatz eines 16 Kanal Muxers (Output Demo)AnsatzIn diesem Beispiel werden wir uns konkret darum kümmern, wie man mittels eines Multiplexer ICs aus einem Arduino-Pin “mehrere” machen kann.Wir nutzen dazu das günstige IC CD74HC4067 (auch nur 74HC4067) das in meinem Fall von ti (Texas Instruments) hergestellt wird. Es gibt das IC baugleich aber wohl auch von PHI (Phillips Semicon).Normalerweise macht es mehr Sinn, den Multiplexer (Muxer) für das Auslesen einer Vielzahl von Sensoren zu nutzen, der große Vorteil ist aber, dass diese IC Serie das Muxen in beide Richtungen erlaubt. Dazu aber später mehr. Zunächst nutzen wir den Muxer nur um Ausgabe zu multiplexen.FunktionsweiseDer Muxer stellt eine Vielzahl an Pins bereit. Davon sind alle für uns interessant.Wir nutzen vor allem die Sn Eingänge und die Yn Muxerports. An Z legen wir unser Eingangssignal an. Y1-Y16 sind die Muxerports, die in unserem Fall wie Ausgänge arbeiten werden und an denen wir als Showeffekt LEDs anklemmen werden. Die S0-S3 Signalpins sind für uns besonders wichtig. Wir werden sie nutzen, um dem Muxer mitzuteilen, welcher der Y-Pins denn nun der aktive Ausgang sein soll. Warum braucht man da 4 Pins? Recht simpel. Wir befinden uns in der Digital-Welt, daher müssen wir die Zahlen der Ausgänge in Binär umrechnen und so unsere S-Pins schalten, um den entsprechenden Ausgang zu aktivieren.Rechenbeispiel:4 dezimal = 0100 (0³+2²+0¹+0⁰)6 dezimal = 0110Wollen wir also Y6 aktivieren, müssen wir die Signalpins so schalten, dass S0 und S3 LOW sind, aber S1 und S2 HIGH. Keine Angst, der Beispiel-Code erledigt das alles für Euch, wenngleich mein Array von hinten zu lesen ist. Beschaltung / AufbauWir legen also Vcc auf +5V, GND wie immer auf Masse, ziehen Enable (E invertiert) auch auf Masse und dann klemmen wir die Anode der LEDs über kleine Vorwiderstände (ich hab 100er genommen) an und hängen wiederum die Kathodenseiten der LEDs auf Masse(-).Das geht sogar ohne Schaltplan, wenn Ihr Euch das Pinout gut anschaut und meine Bilder. Auf meinen Bildern ist die Kerbe des Muxers LINKS, also Pin 1 links unten und Pin 13 rechts oben!Ich hatte nur 10 LEDs angeschlossen, und daher müßtet Ihr im Code den LED-Zähler ganz am Anfang auf die von Euch verwendete Zahl einstellen. Ansonsten werden ggf zu wenige LEDs angesteuert.CodeDer von mir geschriebene Beispielcode macht folgendes. Er definiert zwei Arrays. Einer wird für die S-Pins genutzt, deren physische Nummern auf dem Arduino dort hinterlegt sind.Der andere enthält die Steuermuster, also die Umsetzung Y-Pin zu binärem Steuerwert für die S-Pins.Der Rest ist in der Main Loop eine Schleife die über alle Kanäle weggeht (1 bis max LED), und in der wiederum dann über die zweite Schleife darin der Binärwert umgesetzt wird auf die S-Pins.Eine while-Schleife gibt dann ein 4-mal loopendes PWM Signal auf den Signalpin – bei mir Arduino #3. Dies wird dann am jeweiligen Muxerkanal ausgegeben. Modifikationsmöglichkeiten habt Ihr viele. Ihr könnt z.B. die PWM-Schleife rausnehmen und nur einmal ein anschwellendes LED Signal ausgeben, das sieht “schöner” aus.Bilder – so siehts bei mir ausVollaufbau, diesmal autark, mit Akkus ohne PCBraun -> Ausgang Muxer zu LEDsBlau -> S-Pins (setzen des Ausgangs)Orange -> Ausgabesignal (PWM)grün/rot -> SpannungsversorgungDetailaufnahmen Was ein Gewurschdl…So sieht die Kathodenseite der LEDs aus, wenn man zu wenig einheitliche Drahtbrücken hatAusblicke / ModifikationenGrundsätzlich kann man natürlich jetzt alles ausgeben, was man will. Man kann z.B. kein PWM Signal ausgeben, sondern bspw ein Relais ein oder ausschalten. Das wäre zum kaskadierten Einschalten von Verbrauchern interessant, oder wenn man einen Rechnerpark resetten möchte 😀 Siehe Super BOINC FredWas natürlich auch geht ist, Multiplexer-Y-Pins EINzulesen. Dafür modifiziert man den Code entsprechend und programmiert den Signalpin (#3, wir erinnern uns) auf einen Analog-Input. Dann kann man z.B. auch einige Potis einlesen.Man kann mit einer solchen Lösung auch den Seriell-ausgang des Arduino auf verschiedene Gegenstellen klemmen. Ob man die Muxer kaskadieren kann, weiss ich aktuell nicht, es sollte aber gehen. Es wäre auch eine Kombination aus Schieberegister und Muxern denkbar.Denkt aber dran, dass beim Muxer immer nur EIN Kanal zur selben Zeit das Signal führen kann. Viel Spaß beim Nachbauen.
-
19. August 2011 um 23:08 Uhr #900661orw.AnonymousTeilnehmer
sry icnr: :fresse: [YT]rOm61C3zpic&feature=related[/YT]
-
20. August 2011 um 15:08 Uhr #900678spokekillerTeilnehmer
2SRonin;467970 said:
sry icnr: :fresse:Erinnerte mich stark an “DriveMusic” zu 64er Zeiten, wo man die Schreib-Leseköpfe der 1541er Floppydrives auch vibrieren lassen konnte um Musik zu machen.
Immer wieder nett. 😡
-
24. August 2011 um 0:08 Uhr #900849ThaRippaAdministrator
So…gerade hab ich meinen Arduino bestellt. Für etwa 16€ aus China…mal sehen on welchem Monat der ankommt. Bald sind wir zu zweit. Dann darfst du mich hier supporten, freust du dich schon? :devil:
-
24. August 2011 um 9:08 Uhr #900861spokekillerTeilnehmer
ThaRippa;468174 said:
So…gerade hab ich meinen Arduino bestellt. Für etwa 16€ aus China…mal sehen on welchem Monat der ankommt. Bald sind wir zu zweit. Dann darfst du mich hier supporten, freust du dich schon? :devil:Ja aber klar doch, wir bilden dann die Arduino-Freak-Ecke hier. 😀
Sag mal woher genau Du Deinen besorgt hast, wahrscheinlich ebay, wie ich vermute? Und welches Modell hast bestellt?
Laß Dir doch nicht alle Würmer aus der virtuellen Nase ziehen. 😆
-
24. August 2011 um 20:08 Uhr #900917
-
8. September 2011 um 16:09 Uhr #901961ThaRippaAdministrator
Heute ist er angekommen, und er kann schon mit seiner LED im Sekundentakt blinken :DMal sehen wann ich dazu komme, mehr zu machen. Erste Frage in den Raum: Ich möchte alle…sagen wir 10 Sekunden einen Impuls auf einen digitalen Pin haben. Wie mach ich das, wenn nebenher noch zig andere Sachen gemacht werden? Delay() entfällt ja…Wunschliste an Funktionen, die ich mit meinem Duemillanove nach und nachabdecken möchte:- Impuls für den digitalen Schlüsselanhänger- Wassertemperatur messen- Lüfterdrehzahl messen- Lüfter der Radiatoren nach der Wassertemperatur regeln (wenn lautlos möglich mit PWM), möglichst intelligent. Das heißt PID tut nicht Not, träge wie das System ist, aber ich möchte dass der das Wasser versucht auf sagen wir mal 35°C zu halten, dabei aber nicht über 900u/min auf die Lüfter gibt.- Temperatur, Drehzahl, und später mehr auf meinem Noritake-VFD anzeigen- LEDs Testweise per PWM bestromen, Verhalten bei gepulster Überspannung (wie in KFZ-Rückleuchten) erforschen- LEDs der Gravur (siehe Avatar) per PWM in der Helligkeit regeln – hier wird oben erforschtes wohl eher nicht gebraucht…aber wer weiß?
-
10. September 2011 um 22:09 Uhr #902091spokekillerTeilnehmer
ThaRippa;469390 said:
Heute ist er angekommen, und er kann schon mit seiner LED im Sekundentakt blinken 😀Mal sehen wann ich dazu komme, mehr zu machen. Erste Frage in den Raum: Ich möchte alle…sagen wir 10 Sekunden einen Impuls auf einen digitalen Pin haben. Wie mach ich das, wenn nebenher noch zig andere Sachen gemacht werden? Delay() entfällt ja…
Hi, aufgrund abgekratzter Linuxinstallation und bissl anderen Real Life Sachen bin ich diese Woche mal wieder zu nix gekommen.
Die Frage von oben kann ich so leider auch noch nicht beantworten. Das System beherrscht durchaus Interrupts, aber ist ja ansonsten durch die main-loop definiert. Auch wenn man Prozeduren/Funktionen einsetzt kommt man ja nicht wirklich weiter… Ich müßt auch mal nach nem Beispiel suchen, denn zwecks Aufbau einer Sirene mit Blaulichtern für meinen Neffen (6 Jahre) wäre das auch interessant.
-
10. September 2011 um 22:09 Uhr #902092spokekillerTeilnehmer
Doppelpost, wußte doch ich hab erst letztens zu dem Thema die Basics irgendwo gesehen :Dhttp://www.arduino.cc/en/Tutorial/BlinkWithoutDelayDie AVRs sind per se Multitasking-fähig. Sind also schon mal gute Voraussetzungen.
-
14. September 2011 um 13:09 Uhr #902323spokekillerTeilnehmer
Hallo an alle, die hier eben mal reinschnuppern oder auch regelmäßig mitlesen.Ich bin momentan mit anderen Sachen ausgelastet und komme leider nur selten zum Basteln mit dem kleinen Arduino. Es kann durchaus sein, dass es das nächste Update erst wieder Mitte Oktober geben wird.Der Thread ist nicht tot, und mein Interesse am Arduino nicht geringer geworden. Ich will erst ein paar andere Sachen aufarbeiten und plane auch noch ein Revival der Shift ICs, denn ein gewisser Matt hat eine sehr interessant wirkende Lib zur Verfügung gestellt, mit der der Nutzen von Shifting ICs für Modder extrem steigt!Außerdem muß ich mir wohl mehr Gedanken ums Multitasking machen und das Thema “Remote Controller” für Renovation liegt ja auch noch hier rum. Langweilig ist was anderes… :DWenn was wäre, einfach hier posten oder PM’en. Wenn ich nicht grade außer Landes bin beantworte ich alles innerhalb 24h.Liebe Grüße,Spoke
-
14. September 2011 um 14:09 Uhr #902325ThaRippaAdministrator
Dann übernehme ich mal. Ich habe gestern begonnen, Mein VFD anzuklemmen, und hatte seriell ein wenig Erfolg (Buchstabensalat, besser als nix). Will es heute mal parallel probieren, denn dafür gibts schon Code, wo die Steuersignale für Noritake-Displays stimmen. Den will ich dann wenns geht auf seriell ummünzen, denn ich brauch keinen großen Zeichendurchsatz, und will ungern 4-6 Digitalausgänge verwenden, wenns auch mit einem geht. Ich aktualisiere bei Erfolg diesen Post.
-
16. September 2011 um 12:09 Uhr #902416einballTeilnehmer
Diese Library .. Sprichst du zufällig von der Hardcore “Wir steuern mal 600 LEDs farbwechselnd an” Library? :)Ich bekomme demnächst auch einen Arduino. Mittlerweile bin ich überzeugt, dass sich das einfach nicht lohnt, immer von ganz von vorne anzufangen. Vor allem nicht, wenn man nur solche kleineren Projekte macht. Dann kommt von mir auch noch ein bisschen.http://hackaday.com/2011/07/20/output-up-to-768-pwm-signals-from-one-arduino/
-
16. September 2011 um 14:09 Uhr #902419ThaRippaAdministrator
Meinst du mich? Ich hab gar nix von ner Library gesagt? Mein VFD gibt jetzt menschenlesbares aus, allerdings stellt es die steuersignale (setcursor z.b.) als kryptische Zeichen dar, statt sie auszuführen. Hab das erstmal aufgegeben, bis ich Leute hab, die mir da weiterhelfen. Immerhin weiß ich noch recht wenig über die ganze Coderei. Werd als nächstes die Sache mit dem Schlüsselanhänger baun – möglichst ohne delay.
-
16. September 2011 um 16:09 Uhr #902426spokekillerTeilnehmer
einball;469894 said:
Diese Library .. Sprichst du zufällig von der Hardcore “Wir steuern mal 600 LEDs farbwechselnd an” Library? :)Ich bekomme demnächst auch einen Arduino. Mittlerweile bin ich überzeugt, dass sich das einfach nicht lohnt, immer von ganz von vorne anzufangen. Vor allem nicht, wenn man nur solche kleineren Projekte macht. Dann kommt von mir auch noch ein bisschen.http://hackaday.com/2011/07/20/output-up-to-768-pwm-signals-from-one-arduino/@ThaRippa -> Nee, nee… einball hatte mich gemeint.Die kannte ich noch nicht. Mir gefällt die Idee. Nicht, dass ich das bräuchte, aber cool ist es allemal.Ich hatte auch den Namen verdreht. Adam, so der Name, von bildr hatte eine Lib geschrieben, die das Ansprechen einzelner Positionen auf den Shifties einfacher macht. Die wollte ich mir nochmal näher ansehen. Das könnte uU interessant werden, wenn des Neffen Kettcar zwei Polizeiblitzer nach vorne “bräuchte” … harrrrr.Andere Frage: wie bekommt der denn das PWM Signal über die Shifties? Das sind doch keine Multiplexer… hat jemand einen Schaltplan gesehen? Ich finde nix. So sehr ich hackaday mag aber die Seite ist brutal unübersichtlich.Würde mich schon interessieren, was er genau da macht. Vielleicht steh ich auch grad wieder auf der Leitung und denk in die falsche Richtung…Und nochmal zu einballs Aussage: das ist es, was mir eben am Arduino so gefällt: schnell mal ne Idee einfachst umsetzen und viel Möglichkeiten auch für Leute ohne tiefes Wissen.Jetzt schau ich nochmal nach dem Zeugs von Elco Dingsbums…EDIT: habs gefunden, hab mich mal wieder Irre führen lassen…Auch nach Schnellstudium des Forums ist mir schleierhaft, wie er genau die software-ige PWM Simulation macht, sodass er eine einzelne LED HINTER einem Shiftoutput pulsieren lassen kann….
-
16. September 2011 um 17:09 Uhr #902430HorstelinTeilnehmer
hätte jetzt gedacht dass du nur auf PIC/Atmel setzt 😛
-
16. September 2011 um 20:09 Uhr #902448phil68Teilnehmer
Sehr interessant :d: Ich verfolge das schon eine Weile und muss sagen, dass macht Lust auf mehr!
Andere Frage: wie bekommt der denn das PWM Signal über die Shifties? Das sind doch keine Multiplexer… hat jemand einen Schaltplan gesehen? Ich finde nix. So sehr ich hackaday mag aber die Seite ist brutal unübersichtlich.
Ich denke mal auf den Seiten sollte alles dabei sein:
…hier der Schaltplan:
Grüße DirkEDIT: Link korrigiert 😉
-
16. September 2011 um 22:09 Uhr #902456spokekillerTeilnehmer
Hallo Dirk, Danke nochmal für die Hinweise… ich habe mir das zwischenzeitlich mal genauer angesehen. Soweit ich das erkenne nutzt er ein relativ komplexes Verfahren, um die Shift-Register Ausgänge oszillieren zu lassen.Im Prinzip eine faszinierende Idee. Üblicherweise (so würde ich jetzt mal sagen) denkt man bei den SR ja erst mal nur an eine rein digitale Ausgabe, also LED an oder aus und dazu dann eben an die “Musterbildung”.Sieht man ja recht gut in meinem Beitrag etwas weiter oben.So irre schön diese Sachen mit LEDs ja immer sind, so wenig wirklichen praktischen Nutzen ziehe ich dann für mich auch wieder daraus. Wenn man nicht grade wie unser Freund ThaRippa einen Yin-Yan zu beleuchten hat oder sowas… :DAber nochmal: die Umsetzung und alleine die Idee von elco ist sensationell. Die Beschaltung entspricht der meinen, aber eben kasakadiert. Man kann das ja auf seinen Fotos schon gut sehen und in seiner Beschreibung erläutert er – wenn auch erstmal nur vage – dass er mit einem zeitkritischen Vorgang arbeitet und die PWM komplett in Software löst.Eine ähnliche Vorgehensweise wäre es, Muxer zu nehmen, dann könnte man das PWM-Signal in so schneller Folge durchreichen, dass das menschliche Auge (bzw Hirn) keine “Trennung” mehr erkennt. Nur der Gedanke ist zu kurz angelegt, weil man nur mit den Muxern ja aufgrund des hohen Bedarfs an Controlpins nicht weit kommt. Den Preisunterschied find ich dabei noch vernachlässigbar, wenn man solche nimmt wie ich zuvor.Ich werd demnächst unbedingt eine Mini-Version des Arduino für einen kompakten Einbau umsetzen müssen. Ich bin mal neugierig wie mir das gelingen wird. Ist an sich nicht neu, findet man in verschiedenen Versionen im Web (je nach Generation des Arduino auch). Vorstellen werd ich es auch wieder, und wenn nur um andere aus meinen Anfängerfehlern lernen zu lassen.Die nächsten Tage haben wir Besuch aus Japan, ich werd also wohl eher nicht so oft reinschauen können.In diesem Sinn また、ね。^_^/
-
19. September 2011 um 15:09 Uhr #902589phil68Teilnehmer
Mittlerweile bin ich, nach ausgiebigem Studium des Themas, nicht drumherum gekommen ein Arduino zu bestellen. Für mein nächstes Projekt hast du eigentlich in deinen Tutorials schon fast alles drin, was mir so vorschwebt :d:
Sollte ich Probleme(mit Sicherheit) und Fragen zum Programmieren haben, werde ich mich vertrauensvoll an dich wenden 😀 Bin schon auf dein nächstes Tutorial gespannt!Ich werd demnächst unbedingt eine Mini-Version des Arduino für einen kompakten Einbau umsetzen müssen.
Das sollte nicht zu schwer sein! Wenn man auf die Spannungsregler und USB verzichten kann, sind das gerade mal 6 Bauteile…
Für Anfänger wie mich sind dies hier recht interessante Seiten:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?board=deutsch
http://www.freeduino.de/
http://www.arduino-tutorial.de/Grüße Dirk
-
24. September 2011 um 11:09 Uhr #902862spokekillerTeilnehmer
phil68;470088 said:
Mittlerweile bin ich, nach ausgiebigem Studium des Themas, nicht drumherum gekommen ein Arduino zu bestellen. Für mein nächstes Projekt hast du eigentlich in deinen Tutorials schon fast alles drin, was mir so vorschwebt :d:Gut! Noch einer mehr in der Clique mit “Hand am Gerät” 😀 …. find ich Klasse. Und Danke für das Lob … freut mich sehr dass ich die Geschmäcker bisher getroffen habe.
phil68;470088 said:
Sollte ich Probleme(mit Sicherheit) und Fragen zum Programmieren haben, werde ich mich vertrauensvoll an dich wenden 😀 Bin schon auf dein nächstes Tutorial gespannt!Ochjo, ganz ehrlich Phil, nachdem was ich von Dir im SuperBoinc Thread sehe bist Du sicher keiner von den unbedarften Jungs mit zwei linken Händen. :respekt:
Aber ich helf natürlich immer gerne (wenn ich es selber raffe)…Und der abgespeckte Duino ist auch easy, das stimmt. Den FTDI USB-seriell Umsetzer lass ich weg und werde mir wohl demnächst noch den Universalprogger von fischl holen http://www.fischl.de/usbasp/. Dann progg ich das Baby über ISP ooooder, aber das muss ich noch austesten, direkt über die seriell-Pins (jetzt weiss ich nur nicht mehr exakt jetzt, ob diese Pins womöglich am Wandler hängen).
Was mich jetzt noch interessieren würde…. wer hier ätzt seine Platinen selber und würde mir ein Layout, wie das angehängte mal in einer gewissen Auflage anfertigen wollen und können. Ich würde das dann als Material für die Community nehmen, und dann könnte man durch Erhebung eines geringen Obulus die Produktionskosten gegenhalten. Ich würde dem “Ätzer” das im Voraus entrichten.
Der Vorteil wäre, dass die Arduino-Freaks hier für kleine feste Projekte für einen deutlich geringeren Preis ihre Eigenentwicklungen fest in Betrieb nehmen können, und die teurere Arduino-Platine für das Prototyping bleiben kann.
Das Layout ist fremd erstellt und das einzige was ich als Gößenreferenz sagen kann ist, dass das Pin-Spacing des IC Sockels 2,54mm hat. Unter Umständen muß ich das alles mit Target 3001 nochmal erstellen und dann könnte man die Boards fertig auch bei Conrads Leiterplattenservice bestellen…
Das Bild ist spiegelverkehrt und diente dem Autor zur Nutzung der Bügeleisen-Methode (Tonertransfer auf Kupfer)…Ich bin die nächsten Tage bis fast Mitte Oktober noch oft unterwegs und komm wohl wirklich nicht zu einem Tut mit Gehalt, also lass ich es… nicht weglaufen, ich komm wieder, keine Frage 😀
Cheers
Das Layout (zu groß um es anzuhängen): http://www.megaupload.com/?d=GBIC86PM
-
24. September 2011 um 12:09 Uhr #902863phil68Teilnehmer
Hi spokekiller,
Dann progg ich das Baby über ISP ooooder, aber das muss ich noch austesten, direkt über die seriell-Pins (jetzt weiss ich nur nicht mehr exakt jetzt, ob diese Pins womöglich am Wandler hängen).
Hier findest du die Beschaltung um den Atmel mit dem Arduino zu programmieren.
Was mich jetzt noch interessieren würde…. wer hier ätzt seine Platinen selber…
Ich 😉 Allerdings arbeite ich mit Lackstift und “Freihand”. Bei der Menge, die du vor hast lohnt es sich einen Platinen Service zu bemühen. (Da ich das sowieso vorhatte und wenn du möchtest, kann ich dir aber 2 Platinen mit anfertigen.)
Hast du noch den Bestückungsplan für die Platine? Soweit ist das eigentlich recht übersichtlich… es fehlt wohl nur die Diode zum Schutz gegen Verpolung, bzw. wurde darauf verzichtet.Der Vorteil wäre, dass die Arduino-Freaks hier für kleine feste Projekte für einen deutlich geringeren Preis ihre Eigenentwicklungen fest in Betrieb nehmen können, und die teurere Arduino-Platine für das Prototyping bleiben kann.
Prima Idee, ich hatte auch schon an so etwas gedacht :d:
…und Danke für’s Lob 🙂
Grüße Dirk
-
27. September 2011 um 21:09 Uhr #903002spokekillerTeilnehmer
Hallo,nur eben schnell für die ständigen Gäste. Die Beschaltung der Freilaufdiode in http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-post467573.html ist falsch.Phil68 hatte mich eben drauf hingewiesen. Bitte beachtet die zusätzlichen Hinweise am Beginn des Tutorials.Sorry für die Verwirrung, falls Ihr dennoch Probleme damit habt, fragt einfach hier nach.Bis bald,spoke
-
29. September 2011 um 15:09 Uhr #901592phil68Teilnehmer
Hier mal mein Test-Aufbau für die temperaturgeregelte Lüftersteuerung(incl. Not-Aus) für mein nächstes Bastelprojekt. Leider ist mein Breadboard(unwesentlich :D) kleiner als spokes, daher ist von den 3 Tempsensoren(1xCPU, 1xGPU, 1xGehäuse) der LED(simuliert Not-Aus) und dem MOSFET zur Ansteuerung des oder der Lüfters, nicht viel zu sehen. Jetzt fehlt eigentlich nur noch die Auswertung des Durchflusssensors und ich habe alles was ich brauch. Die gesammte Schaltug kommt dann auf eine neue Platine und wandert in meinen A05. (ich suche noch ein matx Tray O:-))
Dank des sehr gut beschriebenen Tutorials von spokekiller, konnte ich erste Erfolge erzielen :d: Mit ein wenig Einarbeitung lassen sich so, selbst von Noobs wie mir, eigene kleinere Programme schreiben.
Ein Barebones-Arduino(incl. Spannungsregler 6-12V) hab ich heute fertig gestellt und dieses hat seinen Funktionstest erfolgreich bestanden. Es fehlen nur noch die beiden Keramik Kondensatoren, die ich ebenso falsch bestellt habe, wie die Stiftleisten. Das Layout werde ich noch etwas optimieren.
Grüße Dirk
-
29. September 2011 um 17:09 Uhr #903071RenovatioTeilnehmer
Sieht echt stark aus.
-
7. Oktober 2011 um 11:10 Uhr #903615phil68Teilnehmer
Ich hab nochmal eine etwas kleinere Version(Abmaße Streichholzschachtel) entworfen, leider wieder nicht an die Breite des IC Sockels gedacht…
phil68 said:
Jetzt fehlt eigentlich nur noch die Auswertung des Durchflusssensors und ich habe alles was ich brauch.Die Auswertung des Sensors ist integriert 🙂 und funktioniert recht gut. Den Code werde ich hier noch einfügen. Sicher kann den ein Experte noch optimieren oder hilfreiche Tipps dazu geben, wie man das Ganze besser umsetzen könnte.
Grüße Dirk
-
7. Oktober 2011 um 14:10 Uhr #903627spokekillerTeilnehmer
phil68;471205 said:
Ich hab nochmal eine etwas kleinere Version(Abmaße Streichholzschachtel) entworfen, leider wieder nicht an die Breite des IC Sockels gedacht…Sieht doch aber insgesamt ganz prima aus. Ich versteh allerdings nicht ganz das Sockelproblem. Paßt er denn nicht auf die vorgesehenen Bohrungen? Irgendwie sehe ich es nicht richtig.
phil68 said:
Jetzt fehlt eigentlich nur noch die Auswertung des Durchflusssensors und ich habe alles was ich brauch.Die Auswertung des Sensors ist integriert 🙂 und funktioniert recht gut. Den Code werde ich hier noch einfügen. Sicher kann den ein Experte noch optimieren oder hilfreiche Tipps dazu geben, wie man das Ganze besser umsetzen könnte.Grüße DirkWeißt, so einige Monate nach den ersten Schritten kommt mir oft der Gedanke “hier könnte man noch…” und dann verwerf ich es meist doch wieder. Warum groß optimieren, wenn doch alles so funktioniert wie es soll. Wenn ich Deine Platinen jetzt so betrachte, dann bist du ja nicht weit weg vom MK-duino. Die Frage wäre für mich, ob es dann überhaupt noch Sinn macht, mit Target ein eigenes Layout zu entwerfen. Sollte ich allerdings Conrads Service wählen, dann komm ich nicht drumrum.Insgesamt ist das jetzt alles wunderbar kompakt geworden. :respekt:Ich freu mich noch auf die Details zu der MOSFET-basierten Schaltung.Achja, und ich bin wieder zuhause 😀
-
7. Oktober 2011 um 15:10 Uhr #670930braeterTeilnehmer
Sehr Geil, hier macht sich auch jemand mit dem Arduino ans Werk.
Ich hab ne Steuerung nachgebaut bei der man zuerst auf das Arduino Duemilanove gesetzt hat,
jetzt aber auf das Seeeduino Mega, dem grösseren Speicher und der grösseren Zahl an Eingängen, wechselt.https://code.google.com/p/multidisplay/wiki/Build_a_Kit
http://mdforum.designer2k2.at/index.phpIch baue die Anzeige mit Ladedrucksteuerung mittlerweile zum dritten mal nach. Die Löterei gefällt mir.
Ich hab den Thread jetzt nur kurz angelesen, bin aber gespannt was Ihr da auf die Beine stellt. Heut Abend geb ich mir den ganzen Thread. Ich werds auf jedenfall nachbaun :d:
-
7. Oktober 2011 um 17:10 Uhr #620390phil68Teilnehmer
Sieht doch aber insgesamt ganz prima aus. Ich versteh allerdings nicht ganz das Sockelproblem. Paßt er denn nicht auf die vorgesehenen Bohrungen? Irgendwie sehe ich es nicht richtig.
Bei einigen Bauteilen ging mir der Platz aus ;)…hat aber noch gerade so gereicht.
und dann verwerf ich es meist doch wieder. Warum groß optimieren, wenn doch alles so funktioniert wie es soll.
…stimmt auch wieder!
Wenn ich Deine Platinen jetzt so betrachte, dann bist du ja nicht weit weg vom MK-duino. Die Frage wäre für mich, ob es dann überhaupt noch Sinn macht, mit Target ein eigenes Layout zu entwerfen.
Solange wir keine 50 Stück brauchen, könnt ich die auch so anfertigen.
Wenn ich es auf die Reihe bringe, schick ich dir die 2 Versionen am Montag zu.
Ich baue die Anzeige mit Ladedrucksteuerung mittlerweile zum dritten mal nach. Die Löterei gefällt mir.
Ja, irgendwie hat mich jetzt, durch den Arduino, auch wieder der Bastelwahn gepackt 😀
Grüße Dirk
-
7. Oktober 2011 um 20:10 Uhr #668892spokekillerTeilnehmer
Solange wir keine 50 Stück brauchen, könnt ich die auch so anfertigen.
COOL. Nein, ich denke so viele werden es nicht sein müssen. Mal sehen, wer von den Mitlesern noch mit aufspringt….
Wenn ich es auf die Reihe bringe, schick ich dir die 2 Versionen am Montag zu.
Ich bin begeistert! Ich muß mal sehen, wie es die nächsten Wochen so läuft. Ist ja einiges aufgelaufen an Vorstellungsmaterial und konkreter Umsetzung. Außerdem könnte meine Internetbox nen Umbau und ein “Pimping” mit nem Arduino für die Lüfterkontrolle in Abhängigkeit von der Pico Temperatur etcpp.
Ich baue die Anzeige mit Ladedrucksteuerung mittlerweile zum dritten mal nach. Die Löterei gefällt mir.
Ja, irgendwie hat mich jetzt, durch den Arduino, auch wieder der Bastelwahn gepackt 😀
Das ist ja das, was ich zwischendurch mal erwähnt hatte. Weil es so unfaßbar simpel ist, schnell zu einem konkreten Ergebnis zu kommen, macht es soviel Spaß. Wenn man dann erst mal Hand anlegt möchte man plötzlich jeden Mist mit einem Arduino aufmotzen… 😀
Das Ladedruckprojekt hatte ich ganz zu Anfang meiner Arduinozeit mal gestreift, v.a. auf der Suche nach Infos zu Sensorik und LCDs. Da ich mich aber wenig für Autos begeistere (eher für MTBs, aber wo bring ich da nen Arduino unter?) habe ich mich nur kurz dort aufgehalten. Und außerdem, ein Citroen Xsara II mit LLK? Wo gibts denn sowas? Die alte Kiste muß noch ne Weile halten. [-X
Danke Dir nochmals Dirk für die viele Hilfe mit den Platinen! :banana:
Gruß Micha
-
11. Oktober 2011 um 11:10 Uhr #903845coolerTeilnehmer
Hallo zusammen,
super das es noch Arduino begeisterte auch im PC-Forum gibt.
Ich habe vor einen Jahr die Komplette Steuerung (2 Schrittmotoren) für mein Teleskop mit Arduino gebaut. Funktioniert bis heute super.Hier ist ein Video aus meine Testphase..
Hier wird ein Stepper mit Nunchuk(WII) gesteuert. Das Endprodukt bestehe aus 2 Motoren die über Nunchuk gesteuert werden können (Per Joystick oder per Neigung)
http://www.youtube.com/watch?v=3kDeQFMQDFE -
16. Oktober 2011 um 15:10 Uhr #904145phil68Teilnehmer
@cooler
Feine Sache :d:, kannst du dazu mal hier den Code einstellen?Da der MK-Duino ja in seinem jetzigen Zustand keine Kommunikation mit dem PC zulässt und der ATMEGA im Arduino mit Sketchen bestückt werden muss, hatten spokekiller und ich scheinbar die selbe Idee, einen RS232-TTL Wandler preiswert aufzubauen.
Ich bin zufällig über eine Seite gestolpert, bei der ein handelsübliches Nokia-USB Kabel dafür modifiziert wurde. Sollte das ohne größeren Aufwand machbar sein, hätten wir eine sehr preiswerte Lösung, die mit wenig Aufwand umzusetzen ist. Das Kabel kostet neu unter 4€(mit Versand) sodass wir bei den Gesammtkosten für ein MK-Duino von nicht mal 14€ ausgehen können.Sollte Interesse an einem Pseudo Arduino bestehen, hätte ich hier noch einige Exemplare rumfliegen 😉
Hier habe ich noch einen sehr interessanten Ansatz für eine temperaturgesteuerte Regelung gefunden, die ich unbedingt noch austesten muss!
Grüße Dirk
-
16. Oktober 2011 um 19:10 Uhr #904161
-
16. Oktober 2011 um 22:10 Uhr #904178spokekillerTeilnehmer
ThaRippa;471894 said:
Man darf halt nur nicht darüber nachdenken. Das kostet 16€ inklusive Versand und man bekommt sogar gleich ein USB-Kabel dazu. Eure Version ist kleiner, das fetzt natürlich.Ich will keinen Glaubenskrieg anzetteln, aber das ist eben auch “nur” der alte Duemilanove. Ja ich weiß, das macht in der Diskussion an sich keinen Punkt, da der Uno oder andere neuere ja auch nur den FTDI Chip als Bonus voraus haben.
Ich finds dennoch cooler, für kleine Projekte eine noch kompaktere und gleichermaßen Leistunggstakre Version zu haben. Für den Einsatz in einem PC liegen wir mit einer kompakten Variante des MK-Duino sogar noch drunter, da man auch auf den Spannungsregler und die zwei Elkos, wie auch die Diode verzichten kann. Im PC kann der Kleine direkt aus 5V gespeist werden.
Den Preiskampf an sich gewinnen wir sicher nicht mit dem MK-Duino, aber darum gehts dabei auch nicht. Es ist wie bei allen Selber-Mach-Aktionen hier im Forum: wir findens toll, weil wir jetzt wissen (a) wie es geht (b) wie wir es wieder machen können (c) wir gezeigt haben, dass es jeder kann, der will.
Ansonsten, was die Programmerei angeht, wäre ein FTDI-USB Kabel, wie das modifizierte Nokia wohl die beste Lösung, denn mit der neuen IDE kann man nur über Umwege via einen RS232-TTL Wandler proggen. Wenigstens kann ich ihn aber nutzen um Debugging über die seriellen Pins des ATMega auszuwerten oder Kommandos zu schicken.
Natürlich bliebe auch noch die Möglichkeit, die SCK/MISO/MOSI ISP Progging Schnittstelle der Chips über einen Flasher zu nutzen, aber das ist deutlich unbequemer als die FTDI-Kabel-Methode.
Sparkfun und ladyada bieten solche Kabel bzw Mini-Breakouts für die Boarduinos auch an… das sieht auch toll aus, ist aber teurer.
Ich bin leider immer noch recht stark erkältet und hab mich hierzu kurz aufgerafft. Sorry, aber das wird sich wohl noch hinziehen.
Bis dann
-
17. Oktober 2011 um 22:10 Uhr #904255coolerTeilnehmer
phil68;471878 said:
@cooler
Feine Sache :d:, kannst du dazu mal hier den Code einstellen?Eigentlich JA, aber das Hauptprogramm hat so um 650 Zeilen Code!
Es implementiert die Kontrolle für zwei Motoren und handelt die Steuerung auch über “ASCOM” Treiber. Es ist sehr Teleskop spezifisch und für normale Nutzer nicht zu gebrauchen.Ich könnte aber so bestimmte Funktionalitäten ausschneiden und hier posten, falls gewollt.
Ich habe auch Code was 4 Servo Motoren ohne zusatz Platinen ebenso mit nunchuk bewegt. (4 Wheels Drive Roboter).
-
19. Oktober 2011 um 15:10 Uhr #904385RenovatioTeilnehmer
@spokekiller: Wie schaut es mit dem WOL aus im Internen Netzwerk? Funktioniert es?
-
19. Oktober 2011 um 18:10 Uhr #904399spokekillerTeilnehmer
Alles klar. Dann hatte ich das richtig in Erinnerung. Ich kümmer mich drum. Wird sicher keine Schönheitsrekorde gewinnen, aber funktionieren.
Cheers
-
19. Oktober 2011 um 18:10 Uhr #904397RenovatioTeilnehmer
spokekiller;472140 said:
Renovatio;472130 said:
@spokekiller: Wie schaut es mit dem WOL aus im Internen Netzwerk? Funktioniert es?Ähm, ja… ich war einfach zu beschäftigt. Es ist ohnehin kaum was gegangen bei mir die letzten Wochen, Arduino schon gar nicht. Dann noch die Mörder-Erkältung, die sich GSD so langsam verdrückt, naja…. : /
Ich denk schon dass es geht. Ich hatte Beipielcode gefunden, der gut aussah. Wenn ich mich richtig erinnere wolltest Du ne Art Webseite vom Arduino hosten lassen, worüber Du die WOL Kommandos an Deine Rechner schicken kannst, korrekt? Ggf sei so nett und beschreib nochmal genau, was Du Dir vorstellst.
Danke und sorry
Kein Problem. Kann man halt nichts machen wenn man erkältet ist.
Also es war geplant eine Art Webseite zu machen, wo ich Verschiedene Rechner starten kann.Mehr war das nicht.
Gruß,
Andre -
19. Oktober 2011 um 18:10 Uhr #904395spokekillerTeilnehmer
Renovatio;472130 said:
@spokekiller: Wie schaut es mit dem WOL aus im Internen Netzwerk? Funktioniert es?Ähm, ja… ich war einfach zu beschäftigt. Es ist ohnehin kaum was gegangen bei mir die letzten Wochen, Arduino schon gar nicht. Dann noch die Mörder-Erkältung, die sich GSD so langsam verdrückt, naja…. : /
Ich denk schon dass es geht. Ich hatte Beipielcode gefunden, der gut aussah. Wenn ich mich richtig erinnere wolltest Du ne Art Webseite vom Arduino hosten lassen, worüber Du die WOL Kommandos an Deine Rechner schicken kannst, korrekt? Ggf sei so nett und beschreib nochmal genau, was Du Dir vorstellst.
Danke und sorry
-
22. Oktober 2011 um 22:10 Uhr #904568spokekillerTeilnehmer
Kleines ProjektupdateZur Programmierung der DIY-Arduino bzw MK-Duino Versionen werde ich am Montag den USBASP Programmer bestellen. Den kann ich außerdem auch noch gut gebrauchen um ein weiteres AVR Projekt umzusetzen (USB-Adapter für Hitachi LCDs).Für die Verwendung des USBASP muß man lediglich die programmer-config der Arduino IDE anpassen, danach tut er ganz normal. Für unter 20€ inkl Versand mE eine gute Wahl. Damit kann man dann auch DIY-Duinos ohne USB-FTDI Chip ohne große Macken proggen (SCK/MOSI/MISO). Mini-Tut kommt bestimmt.Für die oben von Phil erwähnte Lüftersteuerung habe ich heute noch ein paar Teile bestellt, unter anderem einen Drehencoder. Den Code habe ich mir mal genauer angesehen. Besonders interessant ist dabei die Verwendung von Interrupts und die Anwendung eines Drehencoders (Drehimpulsgebers). Wissenschaftlich interessant ist der Delta-Kram, mit dem die Kennlinie bestimmt wird. Dazu wirds dann hier definitv wieder ein Tut im bekannten Stil geben.Ich konnte heute nach einiger Handarbeit die Sirene für meinen Neffen fertigmachen und ganz ehrlich, ich bin froh, daß es vorbei ist. Ich hab Ewigkeiten gebraucht, alles auf eine normale Lochrasterplatine zu bekommen. Wahrscheinlich auch deshalb, weil ich ohne Skizzen zur Vorbereitung einfach drauflosgemurkst habe.Das Debugging hat dann sicher auch 1/3 der Zeit gekostet. Zweimal wars eine fehlende Brücke und einmal ne kalte Lötstelle.Außerdem hat viel Zeit gekostet, den Spannungsregler-Anteil einzusetzen und später wieder komplett zu entfernen, weil ich feststellen mußte, dass eine 9V Blockbatterie viel zu wenig Bumms hatte, um das Projekt sauber zu betreiben. Fazit dieser Aktion…. hätte ich einfach nur die Platine aus Phils Hand als Basis gehabt hätte ich zwar mehr gehabt als ich bräuchte, aber wäre in weit weniger Zeit fertig gewesen. Wie gesagt, es mag daran liegen, dass ich wenig vorbereitet war und wenig Erfahrung im LRP-Löten habe, aber naja.Ich war einmal kurz davor die Mini-Version von Phil zu verbauen, aber die beiden sind aktuell noch für was anderes verplant.Ansonsten läuft jetzt alles perfekt. Jetzt müssen nur noch die Einzelteile ins Gehäuse verbaut werden und das Gehäuse auch bearbeitet werden. Wird mich mit meinen Mitteln sicher nochmal nen Nachmittag kosten.Beinahe hätte ichs vergessen. Aus dem Sirenenprojekt habe ich einige sehr interessante Erfahrungen zum Aufbau von “Wahlschaltern” auf den Analogports mitgenommen. Da kann man viel mehr falsch machen, als man glaubt. Auch dazu sollte ich wohl was posten. Wohl als Erstes, weil das sehr schnell gehen sollte, und hier auf ‘nem Breadboard noch ein Testaufbau rumfährt.Naja, und dann gibts ja immer noch das hier rumdümpelnde Projekt mit dem Ethernetshield. Viel gemacht habe ich außer einigen REST-Implementationen damit noch nicht. Und Renovatio soll ja auch nicht ewig warten.Dann noch die Tatsache, dass die Teile für eine Dallas-I²C-Echtzeituhr hier rumfahren, die man mit dem Arduino nutzen kann und die in Punkto Meßwrterfassung sicher gute Dienste leistet.Und fast zu guter Letzt, wollte ich mit den MK-Duinos und dem RS232-TTL Wandler testen, wie man Werte zum PC schicken kann, bzw Kommandos empfangen kann.Das Projekt Herbsterkältung läuft auch ganz toll… meine geht kaum weg, jetzt hab ich wohl auch noch ne Mittelohrentzündung und meine Frau ist jetzt auch fix und fertig, wobei selbige ansonsten zäh wie Juchzenleder ist. :DSieht doch gut aus. 😀
-
23. Oktober 2011 um 10:10 Uhr #904571phil68Teilnehmer
Hi spokekiller,
bei mir sind die Teile für die Regelung Gestern schon gekommen. Leider bin ich ab Montag im Urlaub und kann die Schaltung mit dem Impulsgeber nicht mehr testen. Scheint wirklich eine interessante Sache zu sein.Ich war einmal kurz davor die Mini-Version von Phil zu verbauen, aber die beiden sind aktuell noch für was anderes verplant.
Ich hab hier noch ein paar fertige Versionen rumliegen. Solltest du noch Bedarf haben, sag einfach bescheid 😉
Ich habe mir inzwischen auch ein paar Projekte raus gepickt, die für mich interessant sind. Unter Anderem auch eine Uhr(DS 1307 RTC und LCD), ein LED Cube 4x4x4 , die Anbindung des Arduino über einen RS 232 Wandler und die Anbindung des LCDs mit nur 3 pins über ein Shift Register. Ich weiß zwar noch nicht, wann ich dazu komme, aber die Bastelei macht echt Laune 🙂
Das Projekt Herbsterkältung läuft auch ganz toll… meine geht kaum weg, jetzt hab ich wohl auch noch ne Mittelohrentzündung
Bei mir macht sich seit 3 Tagen auch eine Erkältung breit… wird doch keine typische Arduino-Krankheit sein 😀
Grüße Dirk
-
23. Oktober 2011 um 21:10 Uhr #904591spokekillerTeilnehmer
Tutorial #8 — Wahlschalter (wichtige Grundlagen)AnsatzNehmen wir mal folgendes an: unsere Schaltung/Code soll sich an einer bestimmten Zahl Schalterpositionen orientieren, der Einfachheit halber hier mal nur 3 Positionen. Wir nehmen als Grundlage einen normalen 3-Pin Schalter mit ON-OFF-ON Rasterung. Sprich, der mittlere Pin hat Kontakt zu den jeweils Äußeren in den Positionen außen und “liegt frei” wenn in Mittelstellung. Ergo, drei Positionen. (Für einen schnellen Nachbau ist ein solcher Schalter erstmal nicht wichtig.)Jetzt könnte man das ja irgendwie an Digipins klemmen und abfragen, aber das lassen wir schön bleiben, weil Digipins dafür (a) viel zu wertvoll sind und (b) die ja schon alle für Ausgaben belegt sein könnten.Wir nehmen also einen Analog-Pin. Hinter den Analogpins hängt jeweils ein A/D-Wandler mit 10bit Auflösung, was heißt, dass jeder Analog-Pin einfach gesagt 1024 Werte in 1-Schritten abbilden kann. Müßte man es also irgendwie schaffen, das mittels des Schalters auszunutzen…..Und das macht man so, indem man einen Widerstandsstrang aus identischen Widerständen aufbaut. In unserem Beispiel 1kOhm Widerstände.Wir verbinden +5V mit dem einen Bein von R1 und auf das zweite hängen wir den nächsten Widerstand R2 und so weiter. Wir brauchen jetzt nur mal drei 1K Widerstände. Das freie Bein des letzten Widerstands R3 legen wir auf Masse/GND. Damit haben wir eine Art Spannungsteiler aufgebaut. Noch nicht nachbauen, Ihr seht gleich warum.Jetzt müßte man also den mittleren Pol des Schalters auf den Masse-Pin legen und die anderen beiden jeweils auf die Übergänge zwischen den anderen Widerständen. Außerdem legten wir A0 (analog null) auf den Steckpunkt zwischen R1 und Masse.Würde man jetzt die Werte live abfragen und den Schalter umlegen, dann würde man verschiedene Werte bekommen und auch einen in der Nähe von Null. Schaut man aber genauer hin, dann bleiben die Werte alles andere als stabil.In dieser Konstellation “flattert” der Eingang nämlich sehr. Um dies zu verhindern, muß man einen weiteren Widerstand nehmen. Es sollte einer sein, der in der Gößenordung 2-3x der anderen Widerstände liegen sollte. Mehr ist nicht nötig, ich denke das Maximum sollte bei 10k liegen, sonst “prügelt” man den ADC nieder, wenn ich das Konzept richtig begreife. Müßte ich mal testen. Griff in die Kiste, siehe da 2,7kOhm (3,3 kOhm sollten auch gehen)Und bevor ich das mit Worten beschreibe kommt hier eine Skizze, die ist deutlich klarer:[code] analogPin +5 V | | | \ —————- / | \ 1K | / | \ |___ \____|-C- | SW2 | | | | \ | / | \ 1K | / | \ |___ \____|-B- | SW1 | | | | \ | / | \ 1K | / | \ | | |__/\/\/\__| -A- 2.7K | | | _____ ___ GND _[/code]Laßt Euch nicht von den “SWitches” täuschen. Tatsächlich sind dies nur “Kontaktstellen”. In meinem Ansatz von oben wäre der mittlere Kontakt auf -A- und die beiden anderen auf -B- und -C- … außerdem legen wir den Analogpin auf Punkt -A-.Na, kommt Ihr noch mit? Baut das einfach mal nach. Anstelle des Schalters nutzt Ihr auf dem Breadboard optional ein Freihandkabel, dessen eines Ende in -A- steckt und mit dem Ihr an Punkten -B- und -C- jeweils einstecken könnt.Die resultierenden Meßwerte bekommt Ihr im Serial Monitor der Arduino IDE mittles des u.a. Code angezeigt.**edit ** Bild [code]int analogPin = 0;int val = 0; // variable to store the value readvoid setup(){ Serial.begin(9600); // setup serial}void loop(){ val = analogRead(analogPin); // read the input pin Serial.println(val); // debug value delay(1500);}[/code]FunktionsweiseWas passiert denn nun da eigentlich? Nun, durch die Beschaltung mit dem zusätzlichen, “großen” Widerstand habt Ihr geschafft, dass der Analogeingang nicht flattert. Ich denke man nennt das einen Pulldown Widerstand. Damit landet Ihr, wenn ich mich jetzt nicht völlig vertue, in Mittelstellung (also ohne dass -A- woanders hin Kontakt hätte) auf Null als Wert. Die restlichen Werte für mein Beispiel lagen bei mir so ca bei 270 und 560. Und zwar reproduzierbar bombenfest. Zuvor konnte man gut sehen wie die Werte sehr unzuverlässig waren. Das kann man sich jetzt dann in IF-Bedingungen mit gewisser Bandbreite um die Meßwerte herum zunutze machen.NachteileNunja, legt man den Schalter um, dann wird die Veränderung erst erkannt, wenn die Abfrage des Werts das nächste Mal erfolgt. Das kann man abstellen, wenn man sich die Interrupts des Arduino zunutze macht. Ich halte mich damit aber noch ein wenig zurück, weil ich noch nicht genug Substantielles dazu sagen kann.Außerdem muß man die Werte für jedes Projekt individuell feststellen. Allerdings nicht wirklich richtiger Aufwand. Sodele, damit wäre dann schon mal ein offener Punkt weg von der Liste. Ich habe dieses Konzept erfolgreich für die Sirene für meinen Neffen genutzt. Der Schalterwechsel erfährt hier eine gewisse Totzteit, wenn ein Sirenenintervall lange ist. Für den Zweck aber völlig in Ordnung.Cheers
-
23. Oktober 2011 um 21:10 Uhr #904590
-
23. Oktober 2011 um 22:10 Uhr #904592spokekillerTeilnehmer
loony;472364 said:
Hier vielleicht Anregungen für euch Arduino Begeisterte 😉Danke, habs gestern beim Studium der aktuellen c’t gesehen und konnte nicht widerstehen 😀
phil68 said:
Ich hab hier noch ein paar fertige Versionen rumliegen. Solltest du noch Bedarf haben, sag einfach bescheidSuper Angebot, vielen Dank!
phil68 said:
Ich habe mir inzwischen auch ein paar Projekte raus gepickt, die für mich interessant sind. Unter Anderem auch eine Uhr(DS 1307 RTC und LCD), ein LED Cube 4x4x4 , die Anbindung des Arduino über einen RS 232 Wandler und die Anbindung des LCDs mit nur 3 pins über ein Shift Register. Ich weiß zwar noch nicht, wann ich dazu komme, aber die Bastelei macht echt LauneJa, die DS1307 habe ich für mich auch ausgesucht. Sind ja nicht viele Bauteile, die man dafür braucht. In der Liste kommt sie weiter hinten, weil die anderen Sachen aktuell einfach interessanter sind.
RS232 kommt morgen oder übermorgen …(hoffentlich ;)) — sollte ja auch nicht viel sein. RX/TX auf die Pin 1 und 2 und ggf DSR auf RTS und CTS auf äh, ja … irgendwie so… und dann in der bash einfach den Krempel von der COM abgreifen 😀
Das Schöne daran ist ja, dass man das auch in seinen Code einbauen kann, um Kommandos an den Arduino zu schicken oder Meßwerte, die dieser dann bspw in LED-Muster umsetzt. 😡Das mit dem LCD via Shifty und nur drei Pins klingt fein! Das möcht ich sehen!!! 8-[
Wegen der Erkältung paß auf, das scheint echt zu grassieren. Soll an dem schnellen Wetterwechsel liegen. Bei uns “uffe Malooche” hats irre viele Leute mit den wildesten Formen von Schnodderseuche erwischt.
Viel Spaß im Urlaub!
-
28. Oktober 2011 um 18:10 Uhr #904762GonzogonzalesTeilnehmer
Moinsen,
ein interessanter Thread habt Ihr hier.
Oft findet man leider nur englische Foren zum Thema Arduino.
Habe mich hier mal angemeldet und das ganze zu verfolgen und wenn
möglich auch etwas beizutragen.
Als Board habe ich einen Clone vom UNO ist aber gleich aufgebaut.
des weiteren habe ich hier noch zwei ProMini, von denen einer seine
Arbeit in einem WiiCopter verrichtet.
Bei dem UNO Board habe ich mir wahrscheinlich den Bootloader
zerschossen oder den ganzen µC 😯 auf jeden Fall bekomme ich
kein Sketch mehr drauf. 🙁
Einen neuen µC habe ich hier noch liegen aber ohne Bootloader.
Habe am Anfang des Thread gelesen das dieses hier auch erklärt wird.
Aber entweder ich habe es überlesen oder es fehlt hier noch.
Würde mich über ein paar Tipps freuen.Gruß Ingo
-
28. Oktober 2011 um 20:10 Uhr #889628spokekillerTeilnehmer
Hallo Ingo,ja der Thread wurde praktisch als n00b-Tagebuch von mir gestartet. Ich denke, die meisten, die hier einsteigen werden weniger im Kopter- oder Robotiksektor heimisch sein. Meine Projekte haben einfach nichts damit zu tun, was aber ja nicht heißt, daß Du nicht das eine oder andere Brauchbare hier finden kannst. Dein WiiCopter sieht jedenfalls schonmal imposant aus.
Bei dem UNO Board habe ich mir wahrscheinlich den Bootloaderzerschossen oder den ganzen µC auf jeden Fall bekomme ichkein Sketch mehr drauf.
Jetzt mal zu Deinem Problem. Erklärt worden ist das flashen hier noch nicht wirklich. Da Du einen Pro Mini hast, hast Du leider aus meiner Sicht schon mal keine einfache Möglichkeit das zu richten.Also ich würde den Bootloader über einen Programmer flashen. Meiner ist noch in der Post, und alle ATMega328, die ich letztens bestellt hatte, haben den BL schon drauf. Das kostet mich kaum mehr als die Chips “roh” bei den einschlägigen Versendern zu ordern. Sieht bei großen Stückzahlen aber anders aus. Da machen 1€/St. Aufpreis schon schnell was aus.Das hilft Dir jetzt natürlich alles erstmal gar nicht, ich weiß.Für den Mini gibt es ein Tutorial auf der Arduino Seite: http://arduino.cc/en/Hacking/MiniBootloaderAber dort wird auch nur beschrieben, wie Du das über einen Programmer machst. Es geht schlicht nicht ohne. Auch ein einfaches Datenkabel oder FTDI Breakout wie es sie von Sparkfun bspw gibt (oder eine der vielen Handykabel-Basteleien), wird Dir m.W. nicht helfen, da diese nur mit der IDE tun, wenn bereits Bootloadercode drauf ist. Und dann können sie nur Sketches flashen, aber keinen Bootloader.Blöd ist das alles trotzdem, denn im Hintergrund nutzt die IDE ja auch nur AVRDude, um zu flashen, also sollte es doch irgendwie gehen, meine ich???Du kannst Dir jetzt entweder jemanden mit Flasher/Programmer suchen, der Dir das macht, oder einen kaufen (Preise je nach Modell zwischen 15€ und 300€), wobei der USBasp um 20€ zB schon ausreicht.Andere Alternative wäre, bei Läden wie Watterott oder Sparkfun oder wie sie alle heißen einen vorgeflashten Chip zu bestellen. Wenn Du aber so wie wir hier auch eigene Boards designst (viel ist das ja nicht, die zwei Kerkos, ein Quartz, paar Widerständle etc.), dann rate ich Dir zu einem Flasher.ODER, Du besorgst Dir gebraucht ein älteres Board und fährst damit die Prozedur analog Abschnitt 1 hier: http://arduino.cc/en/Tutorial/ArduinoToBreadboard ab… Den alten Arduino brauchst Du, weil der Uno nicht so genutzt werden kann.Was auch gehen müßte, wäre eine von Phil68’s Platinen als Arduino-Ersatz anstelle des Boards im obigen Tutorial zu nehmen.Die schnellste aber ist mE einen Chip mit BL zu bestellen, danach wäre die mit dem Progger noch die schönere, außer man wüßte, ob man einen von Phils Nachbauten nutzen kann (ich denke mal ja, man müßte wissen, warum der UNO nicht im Tutorial nutzbar ist, dann kann man sehen ob unser UNO-Spar-Nachbau die selbe “Macke” hat).Hilft Dir das?
-
28. Oktober 2011 um 22:10 Uhr #904772GonzogonzalesTeilnehmer
Hallo Micha,
erst mal vielen Dank für deine Antwort.
Die Links werde ich mir gleich mal anschauen.
Einen Flasher habe ich, einen als USB auf ISP 10Pol
http://www.obd-shop.com/danila/product_details.php?id=356&lang=de
und eine STK500, sollte ja ausreichen.
Um mein Problem noch ein wenig zu erläutern, ich bekomme
immer die Fehlermeldung beim Flashen dass das Board nicht zu erreichen
ist. USB Port und Board sind aber richtig ausgewählt.
Werde mal schauen ob ich mit Deinen Links weiter komme.Gruß Ingo
-
28. Oktober 2011 um 22:10 Uhr #904773spokekillerTeilnehmer
Hehe,na da seh ich doch gleich einen Profi… schon bergeweise Hardware zur Hand. Okay, wenn ich das weiß, dass du da nicht unbefleckt bist….Wie gesagt, ich habs selber bisher nicht gemacht. Was ich auch nicht weiß ist, ob Dein Progger einen Eintrag in der programmer(s).txt für die IDE braucht. Beim USBasp ist das der Fall.Was ich mir aufgrund Deiner Beschriebung auch vorstellen könnte wäre entweder ein Problem mit der Verkabelung… (SCK/MOSI/MISO vielleicht irgendwas verdreht…?) oder ein Powering Problem?Die Tatsache, dass er sagt das Board ist nicht erreichbar ist schon seltsam und deutet für mich an sich auf ein “triviales” Problem hin. Das sag ich deshalb, weil die ICSP Pins auf dem Uno an sich direkt auf die SCK, MOSI und MISO Pins direkt am ATMega geroutet werden. Ich denke da war nichts dazwischen…Vielleicht ist es nur ne Kleinigkeit. Wenn Du aber schon so gutes Material hast, dann würde ich auch empfehlen eine Lösung wie in einem der Tuts anzustreben.Ich bin mal gespannt, wie gut ich mit dem Progging dann zurechtkomme.Halt uns mal auf dem Laufenden wie das für Dich ausgegangen ist.Viel Erfolg!**EDIT…. gehts bei der STK500 auch nicht? Weil da wird der Chip doch sicher direkt eingesetzt? Die Frage wäre dann auch noch wo man die Bootloader Hex Datei findet…?!?! Und wie ist das dann mit den fuses?!?! Alles nicht so einfach.
-
28. Oktober 2011 um 23:10 Uhr #904774GonzogonzalesTeilnehmer
Hallo Micha,
Ja was die Hardware betrifft sollte es reichen 😀
Habe schon ein wenig Erfahrung beim Programmieren mit Bascom.
Funktioniert auch mit den Arduino Boards und dem Bootloader.
Die Fehlerbeschreibung aus meinem letzten Post bezog sich darauf,
ein Sketch per Arduino GUI aufzuspielen und nicht auf den Bootloader.
Mit dem STK500 sollte es auf jeden Fall gehen weiß nur nicht so recht,
wie das mit den Fuse Bits ist. Die müssen ja auch angepasst werden
wenn ich mich nicht irre.Gruß Ingo
-
29. Oktober 2011 um 12:10 Uhr #904784spokekillerTeilnehmer
Aaaaaaaha!Na dann ist das ja gut ausgegangen. Den Akkulogger solltest Du im Detail vorstellen, so mit kleinem Schaltplan und Teileliste. Das könnte für einige Leute hier durchaus interessant sein. Für mich schon aus Neugier.Bilder machen das Ganze dann besonders schön! Tutorials schreiben ist nicht schwer. :DSchönes WE!
-
29. Oktober 2011 um 12:10 Uhr #904786GonzogonzalesTeilnehmer
Schaltplan… die Platine mit dem Shund ist gekauft, wird etwas schwer.
Aber Details und Fotos folgen.
Morgen habe ich etwas mehr Zeit heute muss ich mich auf Halloween
Party vorbereiten.
Gruß Ingo -
29. Oktober 2011 um 12:10 Uhr #904783GonzogonzalesTeilnehmer
So das war ja ein typischer Fall von :doof:
Man sollte sich halt mal angucken was für ein Chip drauf ist.
Ich hatte da mal einen ATMega 8 drauf gesteckt welcher mit
Bascom ohne Bootloader programmiert war. Dass das dann beim Flashen
nicht klappt ist ja klar.
Habe den Chip gewechselt und ein paar Test Programme probiert.
Läuft alles.:banana:Des weiteren habe ich angefangen einen Akku Logger aufzubauen.
Über 2 Analog Eingänge sollen Stromverbrauch und Akkuspannung gemessen werden.
Für den Stromverbrauch habe ich eine kleine Platine mit einem Shund Widerstand und einem kleinen IC, am Ausgang kommt eine Spannung
von 0-5V heraus. Max 50A können gemessen werden (0.1V = 1A)
Für die Spannungsmessung habe ich einen einfachen Spannungsteiler mit 2 Widerständen um die Spannung von 3LiPo Zellen (11.1V) zu messen. Die Auflösung im Arduino beträgt 10Bit am ADC.
Somit habe ich bei 0-1024 Steps ,entspricht 0,005V pro Step.
Das ganze soll dann erst mal auf einem kleinem Display ausgegeben werden.
Gruß Ingo -
29. Oktober 2011 um 17:10 Uhr #9047910lafTeilnehmer
Hätte da eine Frage 🙂
Welches Display nehme ich am besten, wenn Arduino es seriell ansteuern soll? -
29. Oktober 2011 um 20:10 Uhr #904795spokekillerTeilnehmer
0laf;472594 said:
Hätte da eine Frage 🙂
Welches Display nehme ich am besten, wenn Arduino es seriell ansteuern soll?Hi Olaf,
naja an sich sind die Displays meist dieselben wie das, welches ich benutzt habe. Es sitzt halt noch eine Wandlerplatine Huckepack. Serielle Displays sind idR deutlich teurer, zumindest habe ich noch kein 16×2 um 10€ gesehen.
Die Wandler einzeln sind schon relativ teuer, bzw werden relativ teuer verkauft. Ich will in den nächsten Wochen mit einem USB-Adapter für die Hitachi LCD anfangen.Achja, fällt mir gerade auf, also ich red hier immer von den Hitachi 4xxxx LCD Display, nicht von grafischen (also Pixel-gesteuert). Gibt aber auch dafür Adapter.
Beispiele (keine Werbung, es gibt die auch woanders):
http://www.watterott.com/de/Serial-Enabled-LCD-Backpack
http://www.watterott.com/de/Serial-Enabled-16×2-LCD-Yellow-on-Blue-5V
http://www.watterott.com/de/Serial-Enabled-16×2-LCD-Black-on-Green-5V
http://www.watterott.com/de/16×2-Zeichen-LED-weiss-auf-schwarz-serielle-Ansteuerung-33Vhttp://www.watterott.com/de/Graphic-LCD-Serial-Backpack
Die Steuer-Spannung für die normalen Arduinos muß 5V betragen. Nicht zu verwechseln mit RS232-Seriell, vom PC, das sind andere Pegel (12V-15V).
Du kannst ggf auch zu einem Display mit I²C greifen, das ist uU noch attraktiver für Dich.
Halt uns auf dem Laufenden, falls Du konkret an etwas bastelst. Die Mitleser sind an allem interessiert, wie mir scheint.
Cheers
-
29. Oktober 2011 um 22:10 Uhr #904806spokekillerTeilnehmer
Tutorial #9 — Arduino spricht RS232
Ansatz
Wie wir alle wissen hat unser Arduino (Uno) die Möglichkeit, über verschiedene Wege über serielles Protokoll mit der Außenwelt zu kommunizieren. Unter anderem kann man in der Arduino IDE den “Serial Monitor” nutzen, um damit über USB mit ihm zu sprechen. Diese Art der seriellen Kommunikation geht dabei aber über den FTDI Wandlerchip.Der ATMega 328 und auch der 168 haben zwei Pins, die auf TTL-Pegeln (+/-5V) serielle Kommunikation ermöglichen. Das ist aber unglücklicherweise nicht das selbe Spannungsniveau der in PCs und vielen anderen Geräten verbauten RS232-Schnittstellen. Diese verwenden den einen anderen Standard und damit Pegel im Bereich +/-12V [+/-15V].
Ich gehöre zu den Menschen, die öfter noch um PCs rumwerkeln, die RS232 Schnittstellen haben und dazu unter Linux arbeiten. Das kann jetzt ganz besonders interessant sein, da man mittels eines RS232-TTL Wandlerbausteins beide miteinander reden lassen kann. Das selbe gilt natürlich für Geräte wie die Alix-Reihe oder andere Geräte mit Standard RS232 Schnittstellen.
Aufbau
Ich wollte den MAX232, so der Name eines der berühmtesten UART-TTL Wandler, erst selber zusammenlöten (das Datenblatt zeigt wie simpel das ist), als ich beim Stöbern bei Pollin auf einen kleinen Bausatz gestoßen bin, der für ein wenig mehr Geld als die Einzelteile auch einen DSUB 9 Stecker und eine feine Platine beinhaltete.
Der Schaltplan des Adapters gibt darüberhinaus ebenso Auskunft darüber, wie man sich einen entsprechenden Wandler aufs Breadboard steckt. Mehr als ein paar Kerkos und Elkos und den Chip braucht man dazu nicht. Es gibt verschiedene, auch mehrkanalige. Ein einfacher reicht dicke.Pollin Artikel 810036 RS232-TTL Wandler
Wie gesagt, selbst gebaut ist das ganz schnell mit einem MAX232N (zwei-kanalig) und einer handvoll Kondensatoren. Das Datenblatt als Anleitung reicht völlig aus. Wir haben das früher schon gemacht, um C64er und 128er zwecks Datentransfer an PCs zu bringen. Ist wirklich nicht schwierig.
Insofern, als dass der MAX232N auf dem Pollinwandler zweikanalig ist, aber nur eine Schnittstelle rausgeführt wird, ist es ein wenig Verschwendung… 😀Zuerst flashen wir den Arduino mit diesem Sketch:
[code]
/*
Gibt Daten an die seriellen Pins aus um RS232-Kommunikation zu testen
Feste Textzeichenfolge => TEST
Uptime des ATMega in Millisekunden
*/unsigned long uptime;
void setup() {
Serial.begin(9600); // Start library und setzen des Ports auf 9600baud, 8N1
//Gegenstelle muß gleich eingestellt sein, sonst gibts Datensalat!
}void loop(){
Serial.print(“TEST –>”);
uptime = millis();
Serial.println(uptime);
delay(1000); // eine Sekunde warten, um den Screen nicht zuzumüllen
}
[/code]Man nimmt das Ganze in Betrieb, indem man zudem folgendes macht:
* die CTS und RTS Klemme des Wandlers miteinander verbinden, den Wandler an eine freie RS232 hängen.
* den 5V Pin des Arduino und GND mit den entsprechenden Pins des Wandlers verbindet (GND->GND, 5v->5v) 😀
* die TX Klemme des Wandlers auf den RX Pin (#0) des Arduino Uno legt
* die RX Klemme des Wandlers auf den TX Pin (#1) des Arduino Uno legtDas heißt natürlich auch, dass diese Pins für elektronische Beschaltung ausscheiden! Übrigens generell der Fall, wenn Ihr mittels serial.write o.ä. über USB den Serial Monitor nutzt!!!
Dem Arduino selbst geben wir natürlich auch Saft. Wenn dieser loslegt solltet Ihr an der TX-LED auf dem Board schon erkennen können, daß da Daten fließen. Unter Linux würdet Ihr jetzt zunächst beispielsweise in einer bash mittels “stty” die Einstellungen prüfen (unter Ubuntu scheint das immer 9600, 8N1 zu sein) und dann das entsprechende Device abfragen. Bei mir ging das mittels “cat /dev/ttyS0”.
Unter Windows sollte das mittels einer geeigneten Terminalsoftware gehen. Früher gabs Hyperterminal. Was unter Win7 aktuell ist, ist mir nicht bekannt.
Gedanken dazu / Erweiterungen
Was kann man nicht alles damit anstellen. Klemmen wir doch mal unsere LCDs wieder an den Arduino und schicken dann vom Terminalprogramm aus Text an den Arduino? Der kann diesen mittels Serial.read ja lesen! Dann könnte man diesen auch anzeigen. Oder wir schicken dem Arduino kleine Kommandos, die wir individuell abfragen können und ihn dann entsprechend reagieren lassen…Interessant ist das neben dem Debugging auch für das Protokollieren von Daten. Nicht jeder möchte einen Data-Logging Shield kaufen.
Aber – warum dann überhaupt RS232, das ist doch “Asbach”….fragte mich jüngst ein Kollege. Naja… im Industriebereich ist das noch lange nicht so tot und außerdem kann man RS232 über gute Kabel einige Meter führen (auch dank der 12V-Pegel). Wer bspw schon eine Alix o.ä. am Laufen hat kann Daten damit vom Arduino entgegennehmen, speichern, auswerten und visualisieren (Webseite).
Ein Bild meines Aufbaus habe ich nicht gemacht… wer Schwierigkeiten mit dem Aufbau hätte, soll sich hier melden. Ist wirklich nicht schwer.
Für weitere Projekte empfehle ich das Studium der Referenz auf Arduino.cc, dort wird auch gezeigt, wie man die Daten nicht in Textform/ASCII, sondern binär schickt. Außerdem gibts genug spielerische Beispiele für o.a. Anwendung.
Der Arduino Mega hat einen anderen Mikrokontroller (ATMega 2560?) und damit auch 3 serielle Schnittstellen mehr.
Viel Spaß
-
1. November 2011 um 0:11 Uhr #904937GonzogonzalesTeilnehmer
So dann will ich hier mal meinen Versuch zur Akkuüberwachung vorstellen. Bilder zum vergrößern, bitte anklicken.Der Versuchsaufbau zum messen von Strom und Spannung eines Modellbauakku. Die rote Platine ist ein Stromsensor und auf dem Arduino ProtoShield (aufgesteck auf ein Arduino UNO Board) ist ein Spannungsteiler mit zwei Widerständen Hier der Stromsensor bis max. 50A von http://www.flytron.com/ Stromsensor hat eine Shund Widerstand und gibt eine über ein ina139 eine Spannung von 0-5V aus. (10a=1V)Hier sieht man die die zwei Widerstände die als Spannungsteiler dienen. http://de.wikipedia.org/wiki/SpannungsteilerDie Spätere Ausgabe soll dann über ein Display erfolgen.Das 5110 von Nokia habe ich mir bei eBay gekauft. Es ist günstigund soll einfach in der Programmierung sein (schauen wir mal:roll:)Ein NOKIA 5110 Display mit Breakout Board auf einem Steckboard, daneben ein Arduino ProMiniHier die Rückseite des Displays mit der Pinout Beschriftung.Das Display arbeitet mit 3.3V kann wohl nicht direkt am Arduino angeschlossen werden. Man benötigt noch ein paar Widerstände.Die ersten versuch mit dem messen am Analogeingang habe ich schon probiert und ist recht einfach zu Programmieren.[CODE]/* Auslesen von zwei Analogeingängen mit 10 Bit Auflösung und Ausgabe über die serielle Schnittelle Ausgabe von 0-1023 */void setup() { Serial.begin(9600); // Einstellen der Schnittellengeschwindigkeit}//Hauptprogrammvoid loop() { //Erste Messung an Pin 2 int value1 = analogRead(2); // lese analog input pin 2 Serial.print(“Spannung “); // Ausgabe von Text Serial.println(value1, DEC); // Ausgabe des gelesenen Wertes und Zeilenumbruch //zweite messung an Pin 3 int value2 = analogRead(3); // lese analog input pin 3 Serial.print(“Strom “); // Ausgabe von Text Serial.println(value2, DEC); //Ausgabe des gelesenen Wertes und Zeilenumbruch //kleine Pause delay(1000); // warte 1s bis zum nächsten Durchlauf. }[/CODE]Was kommt als nächstes?Das Display will angeschlossen werden und ein Test Programm mussich mir mal aus dem Netz suchen, ein paar Beispielseiten habe ich schon gefunden.Dan habe mir bei C ein eeprom bestellt (hatten mal wieder nichts da) Dieses soll per I2C die Daten speichern.Sobald ich ein paar weitere Erfolge erziele werde ich berichten. Gruß Ingo
-
2. November 2011 um 22:11 Uhr #905045spokekillerTeilnehmer
Nachdem die T-Jungs heute meine Leitung wieder ans Fliegen gebracht haben… (Holy Shit, 48 Stunden Totalausfall über einen Feiertag…. wenigstens hatten wir Super-Wetter).Sag mal, reichen Dir die 32K Puffer für die Speicherung Deiner Messwerte? Ich fand das Thema auch ganz interessant und hab die Library zu I²C EEPROMS mal angesehen. Die scheint nicht sooooo schwer zu verwenden sein.Ich frag mich momentan noch, wie man da letztlich schreibt. Gibt ja kein Filesystem oder ähnliches. Heisst also man braucht zwischen den Datenblöcken Trennzeichen oder irgendeine Art Formatierung der Datentupel…Ganz so trivial wirds also nicht werden. Vorrang hat bei mir als nächstes jetzt aber definitiv Renovatios “Auftrag”. Sollten meine Feldtests gut laufen, dann stell ich das auch och vor damit dann das “Code Case All in One” endlich mit einem Arduino mit Ethernet bestückt werden kann.Cheers!
-
3. November 2011 um 9:11 Uhr #905051RenovatioTeilnehmer
Manchmal passiert es einfach das die blöde Leistung nicht mehr geht. Gut das ich hier Zuhause auch ein UMTS Stick besitze, dann habe ich trotzdem noch Internet. ^^Danke das du dich darum kümmerst. Gestern Abend ist mir eine geile Idee eingefallen.Also geplant ist, dass das ganze Zimmer mit RGB Leisten ausgestattet wird und diese via Schaltung Ein-/Ausschaltet werden kann. Dies wollte ich eigentlich mit Wippschaltern realisieren.So jetzt komme ich auf die Idee, die Wippschalter wegzulassen und die Leisten via Arduino zusteuern. Ich werde von den RGB Leisten am besten die Anode + abziehen, da die 3 Kathoden Rot, Grün und Blau sind. So hinten am Gehäuse befinden sich dann die 10 oder mehr Ausgänge und davor könnte man dann die gemeinsame Anode + abziehen und an das Arduino anschließen.Um das ganze zu Schalten, wäre eine Fernbedienung oder ein Webinterface über das Private Netzwerk super, da ich eh mein Handy im WLAN haben möchte. Wäre die irgendwie Möglich?In diesen SinneAndre
-
3. November 2011 um 10:11 Uhr #905065spokekillerTeilnehmer
Renovatio;472863 said:
Also geplant ist, dass das ganze Zimmer mit RGB Leisten ausgestattet wird und diese via Schaltung Ein-/Ausschaltet werden kann. Dies wollte ich eigentlich mit Wippschaltern realisieren.
So jetzt komme ich auf die Idee, die Wippschalter wegzulassen und die Leisten via Arduino zusteuern. Ich werde von den RGB Leisten am besten die Anode + abziehen, da die 3 Kathoden Rot, Grün und Blau sind. So hinten am Gehäuse befinden sich dann die 10 oder mehr Ausgänge und davor könnte man dann die gemeinsame Anode + abziehen und an das Arduino anschließen.
Um das ganze zu Schalten, wäre eine Fernbedienung oder ein Webinterface über das Private Netzwerk super, da ich eh mein Handy im WLAN haben möchte.Wäre die irgendwie Möglich?
In diesen Sinne
AndreHallo Andre,
ja das sollte gehen. Der Teil, den ich dir gechildert habe, der praktisch die URL entgegennimmt kann auch genutzt werden, um einen der Digitalkanäle ein/aus-zuschalten. Da Du wohl viel mehr Leistung brauchst, als ein Port hergeben kann, empfiehlt sich entweder ein Leistungstransi oder ein MOSFet vorneweg.
Mit MOsFets habe ich null Erfahrung, von daher würde ich fast wieder auf einen TIP-120 gehen wollen. Relais ginge auch, ist aber glaube ich unnötig.Hast Du Details zu den Leisten?
Gruß
-
3. November 2011 um 12:11 Uhr #905073RenovatioTeilnehmer
spokekiller;472877 said:
Renovatio;472863 said:
Also geplant ist, dass das ganze Zimmer mit RGB Leisten ausgestattet wird und diese via Schaltung Ein-/Ausschaltet werden kann. Dies wollte ich eigentlich mit Wippschaltern realisieren.So jetzt komme ich auf die Idee, die Wippschalter wegzulassen und die Leisten via Arduino zusteuern. Ich werde von den RGB Leisten am besten die Anode + abziehen, da die 3 Kathoden Rot, Grün und Blau sind. So hinten am Gehäuse befinden sich dann die 10 oder mehr Ausgänge und davor könnte man dann die gemeinsame Anode + abziehen und an das Arduino anschließen.Um das ganze zu Schalten, wäre eine Fernbedienung oder ein Webinterface über das Private Netzwerk super, da ich eh mein Handy im WLAN haben möchte. Wäre die irgendwie Möglich?In diesen SinneAndreHallo Andre,ja das sollte gehen. Der Teil, den ich dir gechildert habe, der praktisch die URL entgegennimmt kann auch genutzt werden, um einen der Digitalkanäle ein/aus-zuschalten. Da Du wohl viel mehr Leistung brauchst, als ein Port hergeben kann, empfiehlt sich entweder ein Leistungstransi oder ein MOSFet vorneweg. Mit MOsFets habe ich null Erfahrung, von daher würde ich fast wieder auf einen TIP-120 gehen wollen. Relais ginge auch, ist aber glaube ich unnötig.Hast Du Details zu den Leisten?Gruß
Ja die habe ich. Klick michEs sind sehr wahrscheinlich fast 2 Meter dann im Zimmer verbaut. Nehmen wir aber mal lieber 3 Meter, dann habe ich noch Reserven übrig.Brauche dann aber so mindestens 10 Port Ausgänge (20 sind besser), damit ich die Ausgänge am Case einzeln Schalten kann.
-
3. November 2011 um 13:11 Uhr #905078spokekillerTeilnehmer
Naja, das wird so nicht gehen. Der Aufwand wird erheblich größer, auch für die Ansteuerung. Du hast ja von den 13 verfügbaren Ausgängen nicht alle, weil ein Teil, ich glaube 4 PWM Ausgänge, draufgehen für den Ethernetshield.Wenn Du dann mit den verbleibenden 9 Pins was schalten woltlest dann wäre es an sich überwiegend ein/aus oder man müßte Multiplexer oder Shiftregister einsetzen. Neben dem reinen Hardwareaufwand müßte außerdem dann das Controllinterface (das Webinterface, zumindest der Empfangsteil) komplett umgeschrieben werden.Ich wil sicher nicht den großen Miesmacher raushängen, aber wäre es iO, sich erstmal auf den reinen WOL Teil zu konzentrieren?
-
3. November 2011 um 13:11 Uhr #905084spokekillerTeilnehmer
Renovatio;472893 said:
Können wir erst mal so machen. Danach können wir weiter versuchen und ausprobieren.Ist ja nur eine Idee von mir, die man vielleicht umsetzen kann.Wie gesagt, ich sag nicht absolut nein, aber ich würd Dir eben gerne einfach erstmal überhaupt was liefern. Danach greifen wir ein bissl höher.Ich bin auch mal ganz ehrlich: ich bin alles andere als ein Meister-Elektroniker, aber Phil wird uns sicher ggf dabei helfen. Machbar ist das sicher, was Du möchtest, aber das machen wir einfach in mehreren Schritten. Wird sicher geil aussehen. :banana:**EDIT: Danke Jens, ich hab Deinen Post erst gesehen, als ich das schon abgeshickt hatte. Wenn es soweit ist, werden wir auf diese Daten zurückgreifen müssen. Je nachdem wie Andre/Renovatio sich die Ansteuerungsmuster vorstellt werden wir dann wohl zu Shiftregistern greifen. Was ich mich gerade versuche zu erinnern ist, wie hoch die Ausgangsströme des 74HC595 waren… ggf kann man sich die Leistungstreiber vor dem MOSFet sparen? Naja, kommen wir dazu, wenn es soweit ist. Zuerst muß ich mal Teil 1 meines Versprechens endlich einlösen.***EDIT 2: Mann, erst Hirn einschalten… Du hast ja geschrieben die Angaben beziehen sich auf 10V Gatespannung, dann brauchen wir natürlich die Leistungsstufe. So. Grummel.Cheers
-
3. November 2011 um 13:11 Uhr #905083Hallo1001Teilnehmer
Hallo alle miteinander!
Mit MOsFets habe ich null Erfahrung, von daher würde ich fast wieder auf einen TIP-120 gehen wollen.
Wenn es ein P-Kanal FET werden muss (also die Anode soll geschaltet werden), dann würde ich den IRF4905 verwenden (RdsON = 0,020 Ohm). Und wenn es ein N-Kanal FET werden muss (also die Katode soll geschaltet werden), dann würde ich den IRF1010N verwenden (RdsON = 0,011 Ohm).
Die RGB-LEDs brauchen ca. 1,2A pro Meter, bei 3m währen das dann 3,6A die Dein Netzteil mindestens bereitstellen muss. Die Wärmeentwicklung der FETs kannst Du wie folgt ermitteln:
RdsON * Stromverbrauch = Spannungsverlust —> Spannungsverlust * Stromverbrauch = Abwärme
…für den IRF4905: 0,020 * 3,6A = 0,072V —> 0,072V * 3,6A = 0,26W Abwärme
…für den IRF1010N: 0,011 * 3,6A = 0,04V —> 0,04V * 3,6A = 0,14W Abwärme
Beide FETs würden also ohne Kühlkörper auskommen, bzw. mit einem sehr kleinen Kühlkörper. Die Angaben beziehen sich allerdings auf eine Gate-Spannung von 10V (siehe Datenblatt der FETs). Das Gate vom FET müsstest Du dann also noch über einen Transistor ansteuern (oder über einen ULN2803)…LG Jens
-
3. November 2011 um 13:11 Uhr #905081RenovatioTeilnehmer
Können wir erst mal so machen. Danach können wir weiter versuchen und ausprobieren.Ist ja nur eine Idee von mir, die man vielleicht umsetzen kann.
-
3. November 2011 um 14:11 Uhr #905088RenovatioTeilnehmer
@Hallo1001: Danke für die nette Erklärung. Lerne gerade auf der Schule Elektronik also bin ich gerade erst am Anfang.@spokekiller: Ja, dass können wir so machen. Ich denke Hallo1001 und Dirk können uns sicherlich helfen, damit es auch ordentlich funktioniert.Ich werde auf jeden Fall schon mal alles einbauen ins Gehäuse und dann wenn es mit WOL Funktioniert weitere Schritte gehen.Es drängelt nicht, da ich einfach die Stecker vom Gehäuse abnehmen kann und somit nur bestimmte RGB Leisten an sind.
-
3. November 2011 um 19:11 Uhr #905136phil68Teilnehmer
…ein Haufen Lese-Stoff 😉 Schön, dass sich so viele für die MC interessieren. Ich habe die Temperatur-Regelung :
Leider bin ich ab Montag im Urlaub und kann die Schaltung mit dem Impulsgeber nicht mehr testen.
doch noch testen können und bin sehr zufrieden damit! Des Weiteren habe ich noch einen elektronischen Würfel mit zusätzlichen “Blinki-Blinki-Effekten” als “Aufsatz-Shield” und damit austauschbar, für meinen Sohn, fertig gestellt.
Leider fehlt mir momentan die Zeit für die anderen Projekte, die werden aber auf alle Fälle noch nachgeholt. Die Sache mit dem LED-Cube(3x3x3) und dessen Ansteuerung, sollte ja auch für Andre interessant sein.Ich bin auch mal ganz ehrlich: ich bin alles andere als ein Meister-Elektroniker, aber Phil wird uns sicher ggf dabei helfen.
… Danke 8-[ dafür klemmt es bei mir mit dem Programmieren 😀 Leiterplatten entwerfen und das Ganze umsetzen ist dagegen kein Problem. Abgesehen davon… So lang Hallo1001 hier immer mal rein schaut, mach ich mir da keine Sorgen. Seine wirklich prima umgesetzten und dokumentierten Projekte sprechen für sich!
Was ich mich gerade versuche zu erinnern ist, wie hoch die Ausgangsströme des 74HC595 waren… ggf kann man sich die Leistungstreiber vor dem MOSFet sparen?
MOSFETs sind Spannungsgesteuert, die Ströme kannst du getrost vernachlässigen!
Wenn ich dazu komme, werde ich ein paar meine Projekte hier einstellen.Grüße Dirk
-
3. November 2011 um 19:11 Uhr #905137Hallo1001Teilnehmer
Hallo!
Je nachdem wie Andre/Renovatio sich die Ansteuerungsmuster vorstellt werden wir dann wohl zu Shiftregistern greifen.
Ein anderer Lösungsansatz währe auch noch der I2C-Bus. Der PCF8574 stellt z.B. 8x weitere Ports zur Verfügung.
Was ich mich gerade versuche zu erinnern ist, wie hoch die Ausgangsströme des 74HC595 waren… ggf kann man sich die Leistungstreiber vor dem MOSFet sparen?
Wenn ich das im Datenblatt grade richtig gelesen habe, dann stehen hier maximal 70mA pro Port zur Verfügung. Bei den FETs geht es aber nicht um die Leistung (also mit wie viel Leistung man das Gate eines FETs ansteuert), sondern es geht um die Spannung, mit der das Gate vom FET angesteuert werden muss. Wenn ich das bis jetzt richtig sehe, dann kommen hier 12V zum Einsatz (mal abgesehen von den 5V für den Mµ). Um einen FET ein- und aus- zu schalten, muss man nun das Gate vom FET entweder auf Masse (0V) oder Plus (12V) schalten (ohne Vorwiderstand bzw. 4 bis 10 Ohm, das spielt hier jetzt aber keine Rolle). Der Port vom Mµ kann aber nur zwischen 0V und 5V schalten (da ja der Mµ auch nur mit 5V arbeitet). Man muss hier also ein wenig tricksen und erst mit einen Transistor (Treiber, oder ähnliches) von 0V auf 12V schalten und da kann dann erst das Gate vom FET angeschlossen werden. Wenn die Schaltung später einmal auf einen N-Kanal FET hinaus läuft, dann kann man auch FETs mit Logik-Level wie z.B. den IRL1004 (RdsON = 0,007 Ohm) verwenden, der kann direkt an den Mµ Port angeschlossen werden. Leider gibt es bei den P-Kanal FETs keine mit Logik-Level, von daher bleiben hier nur Transistoren oder FET-Treiber zur Ansteuerung über…
LG Jens
PS: Wenn Ihr wollt, dann stelle ich hier auch gerne eine kleine Bastelanleitung für einen ISP-Programmer ein, den kann man mit relativ kleinen Mitteln selber zusammen bauen…
-
3. November 2011 um 20:11 Uhr #905144einballTeilnehmer
spokekiller;472955 said:
Jaja, ich sag doch… ich check die Dinger gar nicht… und dann hab ich außerdem wieder schneller geschrieben als die Birne benutzt (und hab nebenher eigentlich noch was vööööööllig anderes gemacht :D).Aber zurück zum Hauptthema. Also so schlecht fand ich den Vorschlag mit dem ULN2803 nicht… erstens ist der nicht teuer und kompakt und veträgt sich auch mit den 10-12V locker.
@Dirk
Wie jetzt! Du hast das echt noch komplett umgesetzt!?!?! Ich hab nur ein wenig mit nem Testsketch rumspielen wollen und meinen Impulsgeber “mal eben” testen wollen und das ging ja sowas von in die Hose. Ich glaub außer der Schaltung von der Lüfterregelung habe ich bisher keine einzige gute zu dem Thema gefunden. Hast Du 1:1 nachgebaut oder hast Du bissl getuned? Zeigen! Zeigen! Zeigen! — Ok, sorry ich dreh mal bissl runter.@ALLE
Aber mal ehrlich, Leutz, als ich das hier angefangen habe hätte ich im Leben nicht erwartet, dass mir das mal soviel Spaß machen würde und ich freu mich auch tierisch dass soviele Leute hier mitlesen und mitmachen. Naja, und nicht zuletzt, dass man von Euch noch soviel lernen kann.
Dank Euch, ehrlich.Die ULN sind SUPER! Die habe ich auch eingesetzt, um ein Lauflicht zu basteln. Extrem fummelig, über 50 Kabel auf der Platine zu legen, aber im Endeffekt hats dann doch sehr viel Spaß gemacht 🙂
Ja, Spaß ist ein wichtiger Faktor. Ich bin genauso erfreut darüber, dass auch du hier gerne mit µC rumspielst. Ich selbst habe momentan leider kaum Zeit (nicht einmal Zeit hier entsprechend lange Posts zu verfassen) (und Geld) selbst zu basteln.
Im Anhang ist mein aktuelles Projekt als Schaltplan angehängt: eine USB Bluetooth Brücke mit integriertem FT232R Bitbanging Programmer, über den dann ein Bootloader geladen werden kann, der die Serielle Schnittstelle dann afu sich selbst umroutet und das Programm dann (schneller als per Bitbanging) per RS232 mit 192kbaud lädt. Danach läuft entweder aller Traffic über den µc oder wahlweise kann man den µC anweisen, den Traffic durch die Multiplexer direkt über das Bt Modul laufen zu lassen.
-
3. November 2011 um 20:11 Uhr #905141spokekillerTeilnehmer
Jaja, ich sag doch… ich check die Dinger gar nicht… und dann hab ich außerdem wieder schneller geschrieben als die Birne benutzt (und hab nebenher eigentlich noch was vööööööllig anderes gemacht :D).Aber zurück zum Hauptthema. Also so schlecht fand ich den Vorschlag mit dem ULN2803 nicht… erstens ist der nicht teuer und kompakt und veträgt sich auch mit den 10-12V locker.Es wäre doch ein wenig arg fummelig, für jeden FET einen eigenen Transi reinzuhauen. Ich müßt jetzt nochmal ein wenig hirnen und Renovatios Absicht genauer interpretieren, aber iirc wollte er pro Farbe pro Strang regeln können. Das hieße dann doch pro Strang max. 3 FETs, sofern deren Grenzen eingehalten werden…. Nur mal so angesprochen um ein wenig zu begreifen, in welche Dimension das geht. Wenn ich aber Jens’ Projekte so anschaue, dann haben wir alle Unterstützung die wir brauchen.Jens, das mit dem ISP wäre okay…. mein Paket von fischl mit dem usbasp ist verschollen. Laut deren Mail sollte das am Donnerstag letzte Woche raus sein udn bis heute ist nichts da… das ätzt mich mal voll an, weil ich den progger gleich mit Phils kompakter Platine austesten wollte… @DirkWie jetzt! Du hast das echt noch komplett umgesetzt!?!?! Ich hab nur ein wenig mit nem Testsketch rumspielen wollen und meinen Impulsgeber “mal eben” testen wollen und das ging ja sowas von in die Hose. Ich glaub außer der Schaltung von der Lüfterregelung habe ich bisher keine einzige gute zu dem Thema gefunden. Hast Du 1:1 nachgebaut oder hast Du bissl getuned? Zeigen! Zeigen! Zeigen! — Ok, sorry ich dreh mal bissl runter.@ALLEAber mal ehrlich, Leutz, als ich das hier angefangen habe hätte ich im Leben nicht erwartet, dass mir das mal soviel Spaß machen würde und ich freu mich auch tierisch dass soviele Leute hier mitlesen und mitmachen. Naja, und nicht zuletzt, dass man von Euch noch soviel lernen kann.Dank Euch, ehrlich.
-
3. November 2011 um 20:11 Uhr #905143RenovatioTeilnehmer
@spokekiller: Ich brauche nur die Möglichkeit die RGB Leisten Auszuschalten. Da die RGB Leisten über ein Controller gesteuert werden, müssten wir rein theoretisch nur die Gemeinsame Anode + von den RGB Leisten abziehen.
-
3. November 2011 um 20:11 Uhr #905140einballTeilnehmer
Steuerströme bei MOSFETS vernachlässigbar?Die Ingenieure haben nicht umsonst Probleme damit, die Gatekapazität bei höheren Frequenzen schnell genug umzuladen.Da können bei entsprechend hoher Kapazität und Frequenz Ströme im mehrstelligen Amperebereich fließen :)Zur Zeit mache ich nichts mit einem Arduino, da mir das Geld fehlt. Es sind allerdings bereits einige Dinge in Planung, die nur eine kleine Finanzspritze benötigen um endlich fertiggestellt zu werden … 🙂
-
3. November 2011 um 21:11 Uhr #905146Hallo1001Teilnehmer
Hallo!
Steuerströme bei MOSFETS vernachlässigbar? Die Ingenieure haben nicht umsonst Probleme damit, die Gatekapazität bei höheren Frequenzen schnell genug umzuladen.
Die Steuerstrome sind natürlich nicht vernachlässigbar, da hast Du vollkommen Recht. Wie Du aber selber geschrieben hast spielen dabei „höhere Frequenzen“ eine große Rolle. Beim ein- und aus- schalten treten aber eben genau die hohen Frequenzen nicht auf und darum kann man hier die Gate-Kapazität vom FET vernachlässigen. Es währe vollkommen übertrieben einen FET-Treiber mit mehreren Ampere ein zu setzen, solange der FET nur als „simpler“ Schalter verwendet wird. Würde es hier um hohen Frequenzen gehen, dann hätte ich nicht einmal den Logik-Level FET erwähnt…
Jens, das mit dem ISP wäre okay….
Ich suche mal schnell alles zusammen und stelle es nachher ein…
Da die RGB Leisten über ein Controller gesteuert werden, müssten wir rein theoretisch nur die Gemeinsame Anode + von den RGB Leisten abziehen.
Also einen P-Kanal FET verwenden und das Gate an einen ULN2803 anschließen – fertig. (Das Gate vom FET aber auch noch mit einen Pull-Down Widerstand (z.B. 4,7K) auf Vdd vom ULN legen, damit das Gate auch im ausgeschalteten Zustand 12V Plus abbekommt (der ULN schaltet Open-Drain).)
LG Jens
-
3. November 2011 um 22:11 Uhr #905155Hallo1001Teilnehmer
Hallo alle miteinander!
Um einen AVR (welchen sei einmal dahin gestellt) programmieren zu können, bedarf es eines ISP-Programmers. Es gibt verschiedene Typen und alle haben ihre vor und Nachteile. Wer hier finanziell nicht all zu viel Geld ausgeben möchte, bzw. wer sich selber einen Programmer erstellen möchte, der kann wie folgt vorgehen.
Am Anfang gibt es das „Henne – Ei“ Problem. Moderne Programmer verwenden das STK500 v2 Protokoll, das bedeutet dass hier eine Firmware aufgespielt werden muss. Um aber diese Firmware auf zu spielen, bedarf es eines ISP-Programmers und so dreht man sich im Kreis. Als erstes muss also ein Programmer her der ohne Firmware funktioniert und das nach Möglichkeit natürlich so preiswert wie möglich…
Der Pony-Prog-Programmer
Bei dem Pony-Prog-Programmer handelt es sich um einen Programmer der ohne Firmware arbeitet – sprich anschließen fertig. Mit einem Materialwert von unter 2 Euro ist er auch recht preiswert. Leider funktioniert der Programmer aber nur an einer echten RS232 Schnittstelle. Er kann NICHT an einen USB-RS232-Adapter betrieben werden, was den Einsatz drastisch einschränkt. ABER, und das ist der Vorteil, er kann verwendet werden um die Firmware auf andere ISP-Programmer zu übertragen…Der USBTiny-Programmer
Den Original Programmer gibt es hier, so wie die Treiber die dafür benötigt werden.
USBTiny
Eine modifizierte Version davon findet man hier.
Mini-Programmer
Hier gibt es eine aktualisierte Firmware für einen ATtiny45/85 mit dem sich ein preiswerter Mini-Programmer aufbauen läst.
Der Materialwert liegt hier bei ca. 4 Euro, je nachdem wo man einkauft. Die benötigte Firmware kann nun mit den Pony-Prog-Programmer überspielt werden und damit hat man das „Henne – Ei“ Problem gelöst. Damit hat man nun bereits einen funktionierenden ISP-Programmer mit einem USB-Anschluss. Allerdings gibt es hier auch noch ein paar kleine Einschränkungen und dass bringt uns zum nächsten Programmer…Der STK500-Programmer
Der Materialwert liegt hier bei ca. 10 Euro, die sind aber auch gut angelegt. Auch hier muss erst wieder mit dem Pony-Prog-Programmer die Firmware aufgespielt werden. Hat man das Erfolgreich hinter sich gebracht, dann hat man einen vollwertigen STK500-Programmer (bis auf die HV Programmierung, die wird aber auch nicht zwingend benötigt). Die USB Anbindung übernimmt hier ein FT232R Chip, wodurch der Programmer zu allen gängigen Betriebsystemen kompatibel ist. Durch das STK500 Protokoll ist er auch Softwarekompatibel zu der original AVR Software (AVR-Studio, BasCOM, usw.), er kann aber auch problemlos mit AVRdude verwendet werden.Mit der kleinen Anleitung kann man selber entscheiden was für einen wichtig ist und wie viel Geld man ausgeben möchte. Auf meiner Homepage findet Ihr alle erforderlichen Unterlagen um solche Programmer herstellen zu können (bis auf den USBTiny, die Daten lade ich erst in ein paar Tagen hoch).
HomepageLG Jens
-
4. November 2011 um 15:11 Uhr #905193spokekillerTeilnehmer
Zunächst an Jens: Danke für die wirklich gute Erklärung. Ich hab jetzt schon viel über das Thema gelesen, aber so übersichtlich und einleuchtend habe ich das bisher noch nirgends gefunden.Mein usbasp ist wohl verschütt gegangen. Ich hab mich bei fisch und fischl gemeldet. Man hat mir gesagt ich soll noch bis Montag abwarten, danach akzeptieren sie die Sendung als verloren.Schade, ich dachte ich kann den Bausatz am WE zusammenlöten und gleich testen. Die erste Reaktion nach höflicher Rückmeldung meinerseits fand ich aber sehr angenehm, dass muss ich sagen.Sodele, und dann hab ich mir heute mal endlich das Renovatio-WOL vorgenommen. Wie das ging kann man eigentlich nur beschreiben mit “Blut und Tränen”… :DZum Verständnis für den Rest: Was wir machen wollen ist über eine URL ein -für Außenstehende kryptisches- Kommando an den Arduino schicken. Der sitzt bei Renovatio daheim hinter dem Router in der NAT Zone. Wir forwarden an den Port des Arduino durch den Router (normales http).Renovatio schickt also besagtes Kommando, welches geparst wird und woraufhin in der ersten Stufe der Arduino ein Magic Packet an die MAC eines bestimmten Rechners schickt, der dadurch aus dem sleep oder soft-off aufwacht.Meinen ersten Parser habe ich verworfen, ich habe mich dann doch jetzt für eine aus meiner Sicht simplere Methode entschieden. Die kann Renovatio auch selber debuggen oder anpassen und dennoch läßt sie Spielraum für die LED-Schaltung, die wir oben besprochen haben und die ich wohl in Software gleich mit einpassen werde. So schwer ist das nicht, einen Pin auf high zu legen (oder low).Den Teil habe ich als beta, getestet und bin soweit zufrieden.Danach hab ich mich dem WOL Teil gewidmet… und das war dann irgendwie nicht ganz so einfach. Und das ist jetzt was für ALLE, die den Arduino im Netz einsetzen wollen und googlen!!!!MAN BRAUCHT DIE BJOERN LIB NICHT MEHR!!! Ab arduino-002x spätestens ist sie unter anderem Namen bereits eingebaut. Man muß bei älteren Codesnippets, die die sogen. bjoern-lib verwendet haben (= udpraw.h) dann nur noch aufpassen, dass man “udpraw” durch “udp” als Klassenname im Code ersetzt. Man merkt das spätestens wenn man anders als ich bei null anfängt. Denn die UDP Beispiele in der IDE tun out of the Box. Das war früher gaaaanz anders.Das hat mich verrückt gemacht, ne Stunde lang die wildesten Compilerfehler einzugrenzen. Alles was man in Google findet, leitet einen aber immer wieder zur bjoern-lib. Im Frust habe ich in der ramdisk mal eben die IDE neu ausgepackt und neugierig eines der Beispiele getestet (nur so, ohne große Hoffnung). Siehe da, kein einziger Fehler…. hmmmm … und da fiel mir die Kommentarzeile zum include von “Udp.h” auf …. naja und da steht es dann, dass dies die bereits integrierte Adpation der alten udpraw von “bjoern” ist.Coole Story. Also, schnell meinen Code angepaßt, den Müll aus meiner “Produktions IDE” rausgeworfen, compiliert und YEAH! Dann den Arduino kurz ins entsprechende Netz geklemmt, die Kiste X schlafen gelegt und das Knöpfchen gedrück, dass das MP rausfeuert. Und BAM! ist er hochgefahren.Sprich, ich muß jetzt nur noch meine zwei Spaghetticodes sinnvoll zusammenführen und sauber dokumentieren. Dann nochmal alles neu testen und dann reden wir über die LED-Schalterei. An sich müssen wir nur darüber reden ob Pin X default high oder low sein soll, der Rest ist eine Frage der Elektronik (s.o.).Dachte, ich mach Euch da mal Mut mit. Also auch jemand mit eher selbst angeeignetem Progging Skill kann auf diese Weise mal einen “lucky strike” machen. Und vielleicht gehts ja irgendwie jemandem mal ähnlich und der soll in google dann nicht nur diesen Asbach-Uralt Murks mit archaischen Infos finden.Cheers,Euer Spoke
-
4. November 2011 um 17:11 Uhr #905199Hallo1001Teilnehmer
Hallo!
Hm, ich blicke da noch nicht so recht durch was Ihr da vor habt, aber wenn ich das richtig sehe, dann wollt Ihr vom Internet aus Befehle an den Arduino schicken. Währe das Pollin-NET-IO-Board da nicht die einfachere Lösung.
Link zum Board
Ich habe mir das Teil auch grade erst bestellt, kann also dazu auch noch nichts Genaueres sagen. Im Internet sind dazu aber sehr viele Beiträge zu finden…LG Jens
-
4. November 2011 um 17:11 Uhr #905201spokekillerTeilnehmer
Hallo1001;473015 said:
Hallo!Hm, ich blicke da noch nicht so recht durch was Ihr da vor habt, aber wenn ich das richtig sehe, dann wollt Ihr vom Internet aus Befehle an den Arduino schicken. Währe das Pollin-NET-IO-Board da nicht die einfachere Lösung.
Link zum BoardJa, das sieht schnuckelig aus. Das wäre in Renovatios Fall auch eine sehr preiswerte Alternative.
ABER (jetzt kommts) … was wir hier nicht diskutiert haben ist, dass die zu startenden Rechner alle recht weit voneinander weg sind. Was also nicht geht und was wir sonst gemacht hätten, wäre schlicht die pwr-button Leiste mit dem Arduino oder so einer Platine zu schalten.Somit blieb der Weg über WOL. Was wir also machen ist ein Kommando über http an den Arduino zu schicken, der dann wiederum WOL-Pakete an die entsprechenden Rechner schickt. Dann kann er drauf zugreifen und sie auch wieder runterfahren.
Im zweiten Schritt kam dann der Wunsch nach der LED-Ansteuerung mit dazu, wo Du ja schon was dazu gesagt hast.
Das Ganze soll in sein neues Projekt, was er in seiner Sig verlinkt hat ….
Aber das Pollinboard sieht nach nem schnellen Blick ins PDF wirklich nicht übel aus.
Danke für den Tip, denn ein Arduiono Uno mit Shield kommt fast auf 50 Steinchen!
-
4. November 2011 um 18:11 Uhr #905203Hallo1001Teilnehmer
Hallo alle miteinander!
ABER (jetzt kommts) … was wir hier nicht diskutiert haben ist, dass die zu startenden Rechner alle recht weit voneinander weg sind. Was also nicht geht und was wir sonst gemacht hätten, wäre schlicht die pwr-button Leiste mit dem Arduino oder so einer Platine zu schalten.
Definiere mal „recht weit voneinander weg“. Zum schalten von 230V über USB gibt es von mir in den nächsten Wochen auch noch mal ein Update (alter Link: Master-Slave-Steckdose ) da könnte vielleicht auch etwas passendes dabei sein. Ansonsten ist für weite Strecken der RS485-Bus gut geeignet. Der Arduino könnte über den RS485-Bus Daten versenden und auf der anderen Seite wertet ein ATtiny2313 die Daten aus und schaltet den Rechner ein oder aus (Plus Spielereien, es währen ja am ATtiny2313 noch Ports frei). Der Arduino könnte über den RS485-Bus insgesamt 31 ATtinys ansprechen, dass sollte mehr als ausreichen. Und wenn es mit Kabel nicht geht (weil nicht gewollt ezt.), dann gibt es immer noch die Möglichkeit über Funk zu schalten. Pollin hat da auch etwas nettes im Angebot: Funk-Modul
LG Jens
-
10. November 2011 um 21:11 Uhr #905527spokekillerTeilnehmer
Hallole….ich bin völlig am Ende mit den Nerven… ich versteh es einfach nicht. Ich brauch Hilfe.Vorgeschichte:Ich hab einen usbasp bekommen. Ich hab dann einen ATmega328P aus meinem Arduino gerissen, mit nem 16er Quartz versehen, Kondensatoren und entsprechend verkabelt (im Prinzip wie Phil68, mit dessen Platine habe ichs auch mal versucht, aber die erste Version hat kein RST nach aussen gelegt). Ein Testsketch läuft darauf einwandfrei, die Beschaltung habe ich so auch in anderen Projekten verbaut und keine Probleme damit gehabt.Ich hab den usbasp mit dem µC so verkabelt: (usbasp -> Atmega)Pin 1 (draufschauend rechts oben, Pfeilmarke der 2*5 Stiftbuchse) ist auf Pin 17 des mega (=MOSI) (ist auch auf der Platine sauber vermerkt, ich bin 100% sicher, dass das pin 1 des usbasp ist)Pin 5 ist auf Pin 1 des mega (=RST)Pin 7 ist auf Pin 19 des mega (=SCK)Pin 9 ist auf Pin 18 des mega (=MISO)Die LED des Testprogramms an Pin 19 ist natürlich entfernt worden. Laut fischls Seite ist die Verdrahtung mE korrekt.Einer der GND Pins der 2*5 ISP Buchse läuft auf GND des mega (bzw des breadboards!)Die +5V Leitung des usbasp nutze ich nicht, stattdessen hängt am atmega eine entsprechende +5V Spannungsquelle (Blink.hex tut).Alle Jumper des usbasp sind OFFEN (also auch der “power to target”)So, nachdem ich heute stundenlang erstmal herausgefunden habe, was man an Linux und dem arduino IDE-Krempel tweaken muss und da gefühlte 20 Fehler erfolgreich bekämpft habe, bin ich letztlich darauf gestoßen, das ich noch irgendein Verbindungsproblem haben muß.Konkretes ProblemIch habe dann beschlossen, mir ein Kompilat eines Sketches im /tmp/ abzufangen und das mittels des avrdude der bei der IDE dabei ist via usbasp direkt an den Chip zu schicken. Auf dem atmega ist bereits ein arduino bootloader und laut ladyada sollte es dennoch gehen (siehe: http://www.ladyada.net/library/arduino/bootloader.html).Und da hat sich bestätigt, dass mein Problem schon “ganz unten” liegt…Ich komme nicht weiter. Ich habe hunderte von Webseiten zu dem Thema gewälzt und die meisten besseren hören damit auf, dass ich “irgendein” Verbindungsproblem habe (falsch verkabelt, Progging zu schnell etc). Hier der Auszug meiner avrdude session, in der man das gut sehen kann. Die device id ist wohl wegen des bootloaders falsch, siehe ladyada.Ich habe versucht den atmega zu löschen, was dieselben rc=1 Fehler zurückgab, der µC hat danach noch einwandfrei sein blink-programm abgefahren. Im Prinzip gehen ALLE avrdude Aktionen auf den u.a. Fehler hinaus.Wie gesagt, ich komm ums Verrecken nicht auf den Chip. Ich habe die Verkabelung ca 50 mal neu gemacht, 50 mal geprüft etc pp.. Es wäre ganz toll, wenn einer von Euch mir hier helfen könnte.[code]./avrdude -p m328p -c usbasp -P usb -F -U flash:w:/tmp/build7754369921443048563.tmp/Blink.cpp.hex -C ./avrdude.conf avrdude: error: programm enable: target doesn’t answer. 1 avrdude: initialization failed, rc=-1avrdude: AVR device initialized and ready to accept instructionsReading | ################################################## | 100% 0.01savrdude: Device signature = 0x000000avrdude: Yikes! Invalid device signature.avrdude: Expected signature for ATMEGA328P is 1E 95 0Favrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option.avrdude: erasing chipavrdude: error: programm enable: target doesn’t answer. 1 avrdude: reading input file “/tmp/build7754369921443048563.tmp/Blink.cpp.hex”avrdude: input file /tmp/build7754369921443048563.tmp/Blink.cpp.hex auto detected as Intel Hexavrdude: writing flash (990 bytes):Writing | ################################################## | 100% 0.68savrdude: 990 bytes of flash writtenavrdude: verifying flash memory against /tmp/build7754369921443048563.tmp/Blink.cpp.hex:avrdude: load data flash data from input file /tmp/build7754369921443048563.tmp/Blink.cpp.hex:avrdude: input file /tmp/build7754369921443048563.tmp/Blink.cpp.hex auto detected as Intel Hexavrdude: input file /tmp/build7754369921443048563.tmp/Blink.cpp.hex contains 990 bytesavrdude: reading on-chip flash data:Reading | ################################################## | 100% 0.43savrdude: verifying …avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x00avrdude: verification error; content mismatchavrdude: safemode: Fuses OKavrdude done. Thank you.master@tux:/data/Dropbox/arduino-0022/hardware/tools$ [/code]Danke Euch.
-
11. November 2011 um 0:11 Uhr #905530Hallo1001Teilnehmer
Hallo spokekiller!
Wenn ich das jetzt richtig sehe, dann arbeitest Du mit Linux? Leider kenne ich mich mit Linux nicht aus da ich ein Windows Kind bin, aber vielleicht kannst Du davon etwas für Dich ableiten. Unter Windows bedarf es eines Treibers, damit der USBasp überhaupt erst erkannt wird. Wird unter Linux auch so ein Treiber benötigt? Wenn ja, hast Du diesen installiert? Bei WinXP sieht das in etwa so aus:
Ob der USBasp an sich überhaupt funktioniert, kann man mit AVRdude in Erfahrung bringen. Bei meiner AVR-Brenner Software (nur für Windows) würde das so aussehen:
Mit den AVRdude Parametern: [CODE]avrdude -p m328p -c usbasp -P USB:xx -v[/CODE] kann man das unter Windows in Erfahrung bringen. Für Linux musst Du hier mit Sicherheit die USB Anweisung ändern (kann mir nicht vorstellen das die hier gleich sind). Zumindest sollte sich der USBasp mit den zu sehenden Einstellungen melden. Wird der Programmer nicht erkannt, dann müsste die Meldung ungefähr so aussehen:
Die Fehlermeldung „avrdude: Device signature = 0x000000“ weis darauf hin das der AVR nicht richtig geantwortet hat. Du kannst hier zwar nicht feststellen an welcher Stelle es hapert, aber Du kannst sicher sein dass keine Verbindung besteht. Die Fehlermeldung kommt wenn der Programmer nicht erkannt/angeschlossen ist oder der AVR nicht erkannt wird. Wenn Du den Programmer richtig eingerichtet hast (siehe oben), dann kannst Du auch einen Verbindungstest starten.
Parameter: [CODE]avrdude -p m328p -c usbasp -P USB:xx -F[/CODE]So sollte es in etwa bei Dir aussehen. Ich habe hier bei mir grade einen ATtiny24 angeschlossen, daher auch die Anzeige. Ich hoffe ich konnte Dir damit weiter helfen…
LG Jens
-
11. November 2011 um 17:11 Uhr #905596phil68Teilnehmer
Hallo zusammen 🙂
@spokekiller
Wie hast du eigentlich die Firmware auf den USBasp bekommen? Per Parallel Port,oder war die schon drauf?Ich bin auch noch recht frisch in Sachen µC und werde dir wohl kaum weiter helfen können. Da ich aber früher oder später vor dem selben Problem stehen werde, hab ich versucht mich auch mal ein wenig einzulesen und hoffe, dass du oder ein anderer eine Lösung findet. Ich bin sicher, dass dir die Tips von Hallo1001 weiter helfen!
Alle Jumper des usbasp sind OFFEN (also auch der “power to target”)
Ich als Newbie würde mal Jumper 3 setzen. Manchmal sind Dinge unergründlich :-k
Hier der Link ist auch einen Versuch Wert. Ich werd mich, sobald alles Notwendige dazu vorhanden ist, auf alle Fälle mit dem HOWTO an die Problematik ran tasten.Grüße Dirk
@Hallo1001
Deine Homepage ist echt klasse :d: Ich denke da gibt es Einiges zum nachbauen für mich! -
11. November 2011 um 23:11 Uhr #905613Hallo1001Teilnehmer
Hallo!
@ phil68
hast du eigentlich die Firmware auf den USBasp bekommen?
Wenn Du den Programmer bei Fischl.de im Shop kaufst, dann ist da die Firmware bereits fertig installiert. Du musst den Programmer nur noch zusammen löten und kannst dann los legen…
Deine Homepage ist echt klasse Ich denke da gibt es Einiges zum nachbauen für mich!
Danke… 🙂
LG Jens
-
12. November 2011 um 9:11 Uhr #905619einballTeilnehmer
Für Linux sind die Anweisungen für den USBProg eigentlich relativ gleich. Es kann allerdings sein, dass du sowohl das “-C avrdude.conf” weglassen musst (afaik überschreibt das deine Einstellungen) und den Programmer musst du mit dem Device, dass du in /dev hast andsprechen, Beispiel: /dev/usb0
Weiterhin musst du avrdude mit root öffnen, weil dir sonst die Genehmigung fehlt, auf das USB Blockdevice zu schreiben. Das ist natürlich nicht erwünscht und es gibt ein Workaround. Du kannst dich mal bei embeddedprojects.net einmal umsehen. Dort ist das irgendwo gelistet. Mag allerdings sein, dass es für ein anderes USB Device nicht so richtig funktioniert.
Ich hatte da auch Haarausfall (Ist glücklicherweise wieder nachgewachsen, Howdy Mädels 😉 ), am Schluss hing es dann auch wirklich nur am Aufruf mit rootrechten (=Schreibrechte auf dem USB Device … Bekommt man ansonsten leider nur mit eine speziellen Konfiguration oder Kernelspacezugriffen aufs Device) und der Angabe von /dev/usb (was du erstmal weglassen kannst, weil ich mir da nicht mehr ganz sicher bin ob ich das direkt im -P mit reingeschrieben habe.
-
12. November 2011 um 14:11 Uhr #905639spokekillerTeilnehmer
Hallo Leut,
ich habe eben erst all Eure Antworten gesehen. Komischerweise habe ich wohl Problememit dem Benachrichtigungssystem des Boards. dirk, hast Du meine PN bekommen? Ich habe jedesmal beim Absenden Server Error 500 erhalten, deshalb bin ich nicht sicher.
Okay, nun zum Problem.
@Jens:
Danke, ich denke ich werde es am Montag mal unter Win7 testen, ich habe eine Kiste hergerichtet die den usbasp auch richtig erkennt. Und Du hast Recht, die FW ist schon drauf, das war einer der Gründe, warum ich dort bestellt hatte. Ist aber ein Leihgerät, ich warte immer noch auf die Ersatzsendung zur ersten Bestellung… andere Baustelle.
@einball
Das mit den Rechten ist mir bekannt gewesen. Deshalb habe ich eine udev rule, die 666 als Permissions auf den usbasp gibt. Das Fehlerbild mit den Zugriffsrechten ist anders. da meldet avrdude dann direkt “operation not permitted”.
Der usbasp wird vom Linux-System auch wie es sein sollte erkannt, usb-technisch meine ich. (Fischl beschreibt das u.a. in seinem Readme zur Firmware)
Das mit dem Ansprechen per device-pfad werde ich austesten, genauso wie Jens’ Tip mit dem Testcycle.
Warum ich die avrdude.conf mit angebe ist, weil ich den avrdude im Arduino-Pfad genutzt habe. Wenn alle anderen Tips jetzt nicht weietrhelfen will ich mal ne ganz frische Maschine nehmen und avrdude aus dem Repository nehmen. Man weiß ja nie…Die Ur-Idee war aber eben, direkt aus der IDE auf den Arduino(-Klon) flashen zu können.
@Dirk
Auch das mit dem Jumper schaue ich mir an… mittlerweile habe ich Stifte eingelötet, damit das einfacher geht.@alle
Vielen Dank erstmal. Jetzt abonnier ich den Thread nochmal neu und dann werd ich mir das wohl heute nochmal “schnell” antun es auszutesten. -
12. November 2011 um 15:11 Uhr #905644spokekillerTeilnehmer
Ach, das ist wirklich alles mal wieder so richtig ********, wenn ich mal so direkt sagen darf. Jetzt schlag ich mir mit einer angeblich narrensicheren Sache wieder Tage um die Ohren.
Alles nur halbgar dokumentiert und hunderte von halbdeutlichen Aussagen auf tausenden von Websites.
Also, hab den usbasp an meine Windows Kiste. Den Treiber von der fischl Seite installiert und er taucht auf wie Ihr beschrieben habt.
Hab mir dann avrdudegui geholt, aber das ist extrem steif und so hab ich mir dann die CLI Version von avrdude angetan. Ist ja nicht schlimm.Fehlerbild ist exakt identisch. Die grüne usbasp LED (fischl schreibt nur “die muss an sein”, dann sei alles okay mit dem usbasp) leuchtet dauerhaft. Wieder alles sauber verkabelt, doppelt und achtfach geprüft.
So und dann häng ich fest. Ich kann avrdude keinen USB Port mitteilen. Wie auch? Im device manager sehr ich nur, dass er an hub 6, port 4 hängt… und jetzt?Dann dacht ich, mach mal einfach einen auf “Selbsterkennung”… und das sieht dann so aus:
[code]
K:\usbasp\win32_executable>avrdude -c usbasp -p m328pavrdude: error: programm enable: target doesn’t answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
[/code]So, wie find ich den Port raus bitte? Unter Linux stellt sich mir dieselbe Frage. Ich hab im sylsog nur das Erkennen des devices, keine Angabe eines /dev/-Pfades, wohin er ihn “mounted” hat… ?!?!
Oh ich hör jetzt lieber erstmal auf, aber so langsam hab ich echt die Schnauze voll, würde den ganzen Sch…. am liebsten wegwerfen und mir einen Parallelprogger zusammenfummeln. Aber so weit kommts noch! Kann ja wohl nicht sein!!!
So, das mußte raus.Jemand ne Idee? Ich glaub es liegt unter Win wie Linux schlicht daran, dass avrdude den usbasp nicht findenn kann.
Bis dann.
PS ich leg das jetzt zur Seit und bohr ein paar Löcher. Das entspannt.
-
12. November 2011 um 16:11 Uhr #905646Hallo1001Teilnehmer
Hallo spokekiller!
Also, hab den usbasp an meine Windows Kiste………………..Hab mir dann avrdudegui geholt, aber das ist extrem steif und so hab ich mir dann die CLI Version von avrdude angetan.
Hm, was hast Du Dir denn für eine GIU geholt, meinen AVR-Brenner? Wenn nicht, lade Dir doch einfach mal den AVR-Brenner von meiner Homepage herunter, ist ja Freeware… Den USBasp-Programmer habe ich da sogar schon „voreingestellt“, einfach nur auswählen und die GUI übernimmt den Rest für Dich… (Wenn noch was Fehlt meckert die GUI auch, Du brauchst nur den Anweisungen folgen.)
………am liebsten wegwerfen und mir einen Parallelprogger zusammenfummeln.
Ganz böse Falle, zumindest unter Windows. Wenn Du das vor hast, dann musst Du auch noch den GiveIO Treiber installieren, ansonsten hast Du keinen Zugriff auf den LPT-Port. Auch hier empfehle ich Dir wieder meine GUI, da habe ich den GiveIO Treiber mit integriert. (Nach WinXP ist mit GiveIO schluss, der Treiber läuft ab Vista nicht mehr).
LG Jens
-
12. November 2011 um 16:11 Uhr #905647spokekillerTeilnehmer
Danke Jens, jetzt muß ich nur noch Deine Seite finden :DIch hab mich doch nicht zurückgehalten und nochmal ein paar Seiten zusammengegooglet usw. Ich weiß ja, dass ich gelegentlich ein wenig ungeduldig sein kann…. Was mir halt partout nicht einleuchten will ist, dass ich der einzige Mensch im Universum zu sein scheine, der kurz vor dem Ziel bei diesem Thema hängen bleibt. Alles was ich lese geht immer in dieselbe Richtung. Meist liegts an den Rechten, danach tut alles “einfach so”…Und nach drei Tagen Rum-Ge-Eier hätte ich gerne mal ein kleines Erfolgserlebnis.Danke für den Tip mit dem Parallelprogger, der soll ja zumindest unte rLinux “narrensicher” sein — na, wenn das genauso einfach ist wie mit dem usbasp, dann Prost Mahlzeit.Mir ist noch was eingefallen. Angeblich – laut mindestens 10 Seiten & Blogs – soll das ohne Portangabe gehen. Danach soll es noch am Chip selber liegen.Ich hab hier noch einen ATtiny 2313, fabrikfrisch… den klemm ich ohne Quartze und so auf ein Breadboard und probiers mal mit dem passenden Parameter und schau mal ob er den erkennt. Manche Leute behaupten wenn der Fehler, den ich habe immer noch nicht weggeht, läge es am Chip.Seltsam ist aber, dass ich mit dem Original-Arduino Setup den problematischen Chip problemlos schreiben kann.Mit avrdude kann ich ihn dagegen nicht mal löschen.Achja, ergänzend sei noch gesagt, dass ein Setup von avrdude 5.1 auf einem frischen Linux-Netbook genauso gegen die Wand läuft, exakt gleiches Fehlerbild.Ich schau jetzt mal auf Deine Seite, aber vielleicht kram ich voher mal den Tiny raus. Und dann ist für heute wirklich Schluß. Ist ja nicht so, als hätte ich von alldem wirklich Ahnung. Da erwart ich wohl auch zuviel?Bis dann dann** EditAlso Jens, ich hab Deine Software installiert, die Zusatzsachen auch alle. Habe dann alles verkabelt, Progger zuerst getestet und das Bild entspricht dem ersten. Er scheint also den Progger zu erkennen. Auf der Kommandozeile mit gleichen Parametern sieht das aber komischerweise anders aus… Evtl ein libusb-Problem?Mache ich dann den Test mit dem ATMega328 sieht das aus wie auf dem Screenshot. Das mit den sigs soll auch durch den Arduino Bootloader kommen. Ich will mal versuchen den Chip komplett zu löschen, oder vielleicht ist es doch besser, ich mach mit dem tiny weiter? Achja, Jumper (also bspw slow clock) sind nicht gesetzt gewesen.** Noch ein EditAlso ich hab den Tiny2313 drangeklemmt. Ohne alles, nur den Chip aufs Board. Spannungsversorgung durch den usbasp eingestellt (geprüft, ok) dann Spannung, MOSI, MISO, SCK verkabelt. Den Progger angeklemmt und den AVR-Brenner genutzt, um den AVR-Verbindungstest zu machen. PArameter -p t2313 -c usbasp -P USB:xx -F. Egebnis:[code]: error: programm enable: target doesn’t answer. 1 : initialization failed, rc=-1: AVR device initialized and ready to accept instructions: Device signature = 0x000000: Yikes! Invalid device signature.: Expected signature for ATtiny2313 is 1E 91 0Adone. Thank you.[/code]Ich habs mal mit Slow Clock und ohne versucht, beides gleiches Ergebnis. Ernsthaft. Ich glaube ich verkabel die AVRs falsch !!! Kann mir das mal bitte einer aufmalen?!?! die Daten für die Anschlußbuchse beim USBASP sind auf funf.net/usbasp ganz untenSo, und für heute ist definitiv Schluß. Ich bastel jetzt noch an ein paar anderen Sachen rum.
-
12. November 2011 um 18:11 Uhr #905651einballTeilnehmer
Hej spokekiller,
greppe doch mal nach dem USB Device mit “ls /dev | grep usb”. Dann gehst du in das Verzeichnis. Dort solltest du ein Device finden, das du dann einfügst. Mein USB/UART Wandler findet sich unter /dev/usb/lp0 .. Und versuche es mit rootrechten. Man weiß ja nie .. 😉
-
12. November 2011 um 18:11 Uhr #905650Hallo1001Teilnehmer
Auf der Kommandozeile mit gleichen Parametern sieht das aber komischerweise anders aus… Evtl ein libusb-Problem?
Was meinst Du, was sieht anders aus?
Mache ich dann den Test mit dem ATMega328 sieht das aus wie auf dem Screenshot. Das mit den sigs soll auch durch den Arduino Bootloader kommen.
Also grundsätzlich ist und bleibt die AVR Signatur immer gleich, egal was da für eine Software (Bootloader) drauf läuft. Ist ja auch logisch, denn durch das aufspielen einer Software „veränderst“ Du ja nicht den Chip. Das einzige was sich mit Bootloader verschiebt, dass ist die Interne Adresse im Flash, da wo also die Software abgelegt wird. Aber auch das ist für einen Verbindungsaufbau (Signatur abfragen) total uninteressant.
Vielleicht sollten wir mal ganz von vorne anfangen, um wenigstens Verkabelungsprobleme aus zu schließen. Lade Dir mal das Datenblatt vom ATmega328 herunter und schau mal auf die zweite Seite, dort findest Du die Pinbelegung vom Chip. Für einen ISP-Programmer werden immer 5 Signale benötigt (Masse, Reset, SCL, MISO und MOSI). Der Reset-Pin hat hier eine gesonderte Bedeutung. Er muss mit einem Pull-Up-Widerstand (z.B. 10K) auf Vcc gelegt werden. Sollte der Reset-Pin deaktiviert sein (weil er explizit über die FUSE-Bits abgeschaltet wurde), dann ist es nicht mehr möglich den Chip mit einem ISP-Programmer zu programmieren (der Chip kann dann nur noch durch eine HV Programmierung zurückgesetzt werden). Im Normalfall wird der Reset-Pin aber nicht abgeschaltet. Du musst als insgesamt 5 Kabel mit dem USBasp verbinden:
Masse Mµ —> Masse Programmer
Reset Mµ —> Reset Programmer
SCK Mµ —> SCK Programmer
MISO Mµ —> MISO Programmer
MOSI Mµ —> MOSI Programmer
Auch wenn Du ein gesondertes Netzteil benutzt um den AVR mit Spannung zu versorgen, die Massen müssen immer verbunden werden, damit ein gemeinsames Potential besteht…Achja, Jumper (also bspw slow clock) sind nicht gesetzt gewesen.
Der muss auch nicht gesetzt werden, Du kannst hier alle drei Jumper offen lassen…
LG Jens
-
12. November 2011 um 19:11 Uhr #905652spokekillerTeilnehmer
Hallo1001 said:
Was meinst Du, was sieht anders aus?Ich mein die Ausgabe sieht anders aus, mit dem Kommandostring den ich in AVR-Brenner aufrufe kommt etwas anderes raus, nämlich wieder der rc=1. Habe leider keinen Screenshot gemacht.
Also grundsätzlich ist und bleibt die AVR Signatur immer gleich, egal was da für eine Software (Bootloader) drauf läuft. Ist ja auch logisch, denn durch das aufspielen einer Software „veränderst“ Du ja nicht den Chip.
OK, verstanden. Irgendwas hatte ich bei ladyada.net gelesen und das wohl jetzt in der Aufregung falsch interpretiert.
Vielleicht sollten wir mal ganz von vorne anfangen, um wenigstens Verkabelungsprobleme aus zu schließen. Lade Dir mal das Datenblatt vom ATmega328 herunter und schau mal auf die zweite Seite, dort findest Du die Pinbelegung vom Chip.
Das war die Grundlage aller meiner Arduino Projekte. Das DB habe ich mir gleich am ersten Tag geholt :D. Aber dennoch einverstanden bei 0 anzufangen. Anders wird das wohl nichts.
Für einen ISP-Programmer werden immer 5 Signale benötigt (Masse, Reset, SCL, MISO und MOSI). Der Reset-Pin hat hier eine gesonderte Bedeutung. Er muss mit einem Pull-Up-Widerstand (z.B. 10K) auf Vcc gelegt werden. Sollte der Reset-Pin deaktiviert sein (weil er explizit über die FUSE-Bits abgeschaltet wurde), dann ist es nicht mehr möglich den Chip mit einem ISP-Programmer zu programmieren (der Chip kann dann nur noch durch eine HV Programmierung zurückgesetzt werden).
Das habe ich bei all den bisherigen Tests mit dem 328er gemacht. Allerdings hatte ich auch ein externes 16MHz Quartz und zwei Kondensatoren an den entsprechenden Pins 9 und 10 (TOSC1/2).
Im Normalfall wird der Reset-Pin aber nicht abgeschaltet. Du musst als insgesamt 5 Kabel mit dem USBasp verbinden:Masse Mµ —> Masse ProgrammerReset Mµ —> Reset ProgrammerSCK Mµ —> SCK ProgrammerMISO Mµ —> MISO ProgrammerMOSI Mµ —> MOSI Programmer
Alles klar, genau so habe ich es gemacht und auch die Kabel auf Kontakt durchgangsgeprüft. Das hatte ich also durchaus richtig verstanden gehabt.
Auch wenn Du ein gesondertes Netzteil benutzt um den AVR mit Spannung zu versorgen, die Massen müssen immer verbunden werden, damit ein gemeinsames Potential besteht…
So hatte ich das ebenfalls. Masse war verbunden, +5V war nicht verbunden. Also auch korrekt. Target hatt eien eigene Spannungsquelle 5V stabilisiert.
Achja, Jumper (also bspw slow clock) sind nicht gesetzt gewesen.
Der muss auch nicht gesetzt werden, Du kannst hier alle drei Jumper offen lassen…
Okay, so hatte ich das ebenfalls. Ich hab zwischendurch verschiedene Varianten durchprobiert, in der Annahme es könnte am Takt oder so liegen. Mein “default” lag aber auf: alle Jumper offen.
greppe doch mal nach dem USB Device mit “ls /dev | grep usb”. Dann gehst du in das Verzeichnis. Dort solltest du ein Device finden, das du dann einfügst. Mein USB/UART Wandler findet sich unter /dev/usb/lp0 .. Und versuche es mit rootrechten. Man weiß ja nie ..
Da hast Du durchaus Recht. Ich schau später nochmal. Der usbasp war ja ein Bausatz. Allerdings ist der so gutgemacht, da muß man sich schon Mühe geben, etwas falsch aufzubauen. Ich habe vorhin aber dennoch noch einmal alles auf korrekte Bauteilposition getestet. Nur zur Sicherheit und dass wir den Punkt abhaken können.Also nochmal abschließend. Ich stelle fest ich habe korrekt verkabelt; sowohl auf proggerseite pins korrekt als auch am m328p. Hmmmm….Unter Linux und Win bekomme ich identische Probleme unter verschiedenen Setups aber identischen Tools (ich mein jetzt in Bezug auf avrdude, nicht irgendein anderes Tool).Beim m328p hatte ich eine externe clock, beim tiny 2313 nicht. Beides zeigt identische Fehlerbilder. Proggertest nach Jens Art tut, alles danach tut nicht.Was nun? Ehrlich gesagt ich habe jetzt gerade keinen Ansatzpunkt mehr. Sollte ich es in Ruhe nochmal versuchen dokumentiere ich alles akribisch, sodaß Ihr besser helfen könnt.Danke Euch wie immer fürs Helfen!
-
12. November 2011 um 20:11 Uhr #757764spokekillerTeilnehmer
phil68;473513 said:
Hi Micha,das ist wirklich ärgerlich!In der Tat 🙄
Da du ja nun ein aufgesetztes Windows hast, wäre dies noch einen Versuch wert. http://tutorial.cytron.com.my/2011/09/30/how-to-program-arduino-by-using-avr-usbasp-programmer/
Das hatte ich in Deinem Post zuvor schon gesehen. Ein analoges Tutorial hatte ich am Donnerstag unter Linux schon getestet. Ich habe es eben auch unter Win nochmal getestet.Dabei habe ich mich an die Verdrahtung nach diesem Schema “http://www.instructables.com/id/Adding-ICSP-header-to-your-ArduinoAVR-board/step3/ICSP-header-pinout/” gehalten, was den Arduino angeht (mein Originalboard). Auf Proggerseite wie auf der fischlseite dokumentiert.Arduino mal external powered (nix leuchtet auf’m Arduino : /) und einmal mit eigener Stromquelle, alle Leitungen verbunden außer +5V (im Bild VTG).Ergebnis:Flashen eines kleinen Sketches Binary sketch size: 1018 bytes (of a 32256 byte maximum)[CODE]java.lang.NullPointerException at processing.app.debug.AvrdudeUploader.getProgrammerCommands(AvrdudeUploader.java:106) at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:68) at processing.app.Sketch.upload(Sketch.java:1603) at processing.app.Sketch.exportApplet(Sketch.java:1568) at processing.app.Sketch.exportApplet(Sketch.java:1524) at processing.app.Editor$DefaultExportHandler.run(Editor.java:2293) at java.lang.Thread.run(Thread.java:619)[/CODE]Und Versuch, den Bootloader mit usbasp aufzuspielen (ist jetzt in der 0023 offiziell drin, wie es scheint).[CODE] avrdude: error: programm enable: target doesn’t answer. 1 avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check.[/CODE]^naja und den Fehler kenn ich schon zur Genüge. Alle beide Fehler habe ich mit einem vergleichbaren Tut für Linux auch unter Linux bekommen….
Könnte es sein, dass das der gelieferte Programmer eine fehlerhafte Software drauf hat :-k
Also ganz ehrlich, das glaube ich mittlerweile fast auch. Irgendwas stimmt da nicht auf / mit / am Progger…. Die Fehlerbilder sind immer gleich, wirklich immer. Was auch immer gleich ist, ist der Progger. Leider habe ich natürlich jetzt das typische Henne-Ei Problem. Momentan habe ich jetzt auch weder die Zeit noch die Nerven mal eben schnell einen anderen Progger zu bauen. Tja. Wenigstens konnte ich gestern den HDD-Pimper fertigmachen. Tut auch. Keine Lötfehler und ist kompakt geworden. Muß ihn jetzt nur noch ansprechend einbauen. Aber DAS ist eine ganz andere Geschichte.Nochmal gefragt: hattest Du meine PM gestern bekommen?Ein etwas geknicketer Spoke…
-
12. November 2011 um 20:11 Uhr #905653phil68Teilnehmer
Hi Micha,
das ist wirklich ärgerlich!Was nun? Ehrlich gesagt ich habe jetzt gerade keinen Ansatzpunkt mehr.
Da du ja nun ein aufgesetztes Windows hast, wäre dies noch einen Versuch wert. http://tutorial.cytron.com.my/2011/09/30/how-to-program-arduino-by-using-avr-usbasp-programmer/
Könnte es sein, dass das der gelieferte Programmer eine fehlerhafte Software drauf hat :-kGrüße Dirk
-
12. November 2011 um 21:11 Uhr #905655Hallo1001Teilnehmer
Hallo spokekiller!
Ich habe es geschafft den gleichen Fehler zu reproduzieren… 🙂
Der Fehler tritt bei mir mit dem USBasp-Programmer auf, wenn die SCK, MISO oder MOSI Leitung in der Zielschaltung auch noch mit anderen Bauteilen verbunden ist (bei mir eine Diode). Entferne ich den Chip (so dass nichts weiter an den ISP-Leitungen angeschlossen ist), dann funktioniert der USBAsp-Programmer tadellos. Ich habe daraufhin auch gleich einmal meine anderen Programmer auf dieses Phänomen hin untersucht. Diese Problem tritt weder beim „PonyProg-Programmer“ noch beim „USBtiny-Programmer“ oder beim „STK500-Programmer“ auf. Wenn Du Dir einen der anderen Programmer aufbauen solltest (siehe Post weiter oben), dann solltest Du damit auch keine Probleme haben…
LG Jens
-
12. November 2011 um 23:11 Uhr #905658spokekillerTeilnehmer
Ah! DAS ist interessant. Ok… aber wie paßt das dann zusammen, daß ich den Attiny2313 ganz ohne weitere Bauteile angeschlossen hatte und dennoch diesen Fehler bekommen habe? Da war wirklich gar nix dran. Nicht mal am Resetpin.
Vielleicht habe ich vor lauter “Aufregung” dort einen anderen Fehler gemacht?
Außerdem auch seltsam, an meiner Zielschaltung mit dem atmega328 war ja auch nur der Quartz … und der hängt ja nicht an den ISP Leitungen… ICh hätte ein Bild machen sollen.
Ich stecks morgen nochmal neu zusammen. Also NUR den Zielchip auf ein Board, ISP Leitungen dran und Feuer frei. Mal sehen.
Gute Nacht und Danke für die Mühe.
-
12. November 2011 um 23:11 Uhr #905659Hallo1001Teilnehmer
aber wie paßt das dann zusammen, daß ich den Attiny2313 ganz ohne weitere Bauteile angeschlossen hatte und dennoch diesen Fehler bekommen habe? Da war wirklich gar nix dran. Nicht mal am Resetpin.
Also generell wird Reset immer nach Vcc geschaltet, da ansonsten der Mµ Humbug macht (Programm neu starten, sehr hohe Empfindlichkeit gegen Berührung, usw…). Ich kann mir gut vorstellen, dass ohne Pull-Up-Widerstand der Mµ einfach im Reset-Modus hängen bleibt (den der Programmer ja auslöst) und so der Mµ natürlich auch nicht antworten kann…
Außerdem auch seltsam, an meiner Zielschaltung mit dem atmega328 war ja auch nur der Quartz … und der hängt ja nicht an den ISP Leitungen…
Waren am Quarz auch die Kondensatoren angeschlossen, ohne schwingt der Quarz nämlich auch nicht. Aber ansonsten hast Du Recht, der Quarz hat nichts mit den ISP-Ports zu tun. Bei Fishel gibt es dazu auch noch einen Schaltplan mit einem ATmega8:
Ansonsten kannst Du auch mal im Internet nach der Beschaltung vom AVR suchen, da gibt es tonnenweise Links dazu, wie der z.B.:
LG Jens
-
17. November 2011 um 22:11 Uhr #906158spokekillerTeilnehmer
Hallo1001;473525 said:
aber wie paßt das dann zusammen, daß ich den Attiny2313 ganz ohne weitere Bauteile angeschlossen hatte und dennoch diesen Fehler bekommen habe? Da war wirklich gar nix dran. Nicht mal am Resetpin.
Also generell wird Reset immer nach Vcc geschaltet, da ansonsten der Mµ Humbug macht (Programm neu starten, sehr hohe Empfindlichkeit gegen Berührung, usw…). Ich kann mir gut vorstellen, dass ohne Pull-Up-Widerstand der Mµ einfach im Reset-Modus hängen bleibt (den der Programmer ja auslöst) und so der Mµ natürlich auch nicht antworten kann…
Nachdem ich jetzt ein paar Tage so gaaar nichts damit gemacht habe, fielen mir im Nachhinein noch ein paar Sachen dazu ein. Ich hatte bei meinen allerersten Versuchen RESET immer per 10k auf +5V. Erst nachdem ich im Web ein Blog fand, dass den usbasp am ATtiny2313 ohne alles andere zeigte habe ich das mal ausprobiert.
Ich könnte mir vorstellen, dass mein Fehlerbild dennoch irgendwas in dieser Richtung ist. Beim Test am Arduino Uno fiel mir auf, dass die Kontroll LED (hängt an einem der Digipins des ATMega328) ganz schwach flackerte… sowas hatte ich mal und da war es genau das: der Controller hing im Endlos-Reset.Außerdem auch seltsam, an meiner Zielschaltung mit dem atmega328 war ja auch nur der Quartz … und der hängt ja nicht an den ISP Leitungen…
Waren am Quarz auch die Kondensatoren angeschlossen, ohne schwingt der Quarz nämlich auch nicht. Aber ansonsten hast Du Recht, der Quarz hat nichts mit den ISP-Ports zu tun. Bei Fishel gibt es dazu auch noch einen Schaltplan mit einem ATmega8:
Ja, klar… das war mit das erste was ich gelernt hatte. Ohne Kondensatoren kein Quartz und beides so nahe wie möglich am µC zusammen. 😀
**Schnipp**
Ansonsten kannst Du auch mal im Internet nach der Beschaltung vom AVR suchen, da gibt es tonnenweise Links dazu, wie der z.B.:
LG Jens
Da fiel mir eben der 100nF KerKo zwischen +5V und GND auf… ist das ein sogenannter “decoupler”?
Ansonsten Danke für den Link. Ich schaus mir in Ruhe am Samstag nochmal an. Heute kam mir noch ein Gedanke und ich werde mir die Ausgangsseite des Bausatzes genauer auf Lötfehler anschauen.Ich muß unbedingt Renovatios WOL-Duino endlich fertig machen und am Sonntag ist in Stuttgart Hobby-Elektronik Messe, da werd ich nach vielen Jahren Abstinenz mal wieder aufschlagen.
LG,
MichaPS: und um es uns allen leichter zu machen, werde ich von den nächsten (Fehl)versuchen Bilder machen, sonst wird das echtzu anstrengend.
-
18. November 2011 um 11:11 Uhr #906183spokekillerTeilnehmer
Leut, … ich flipp aus! Ich habs hinbekommen … gerade eben erst.Es sind mehrere Dinge gewesen, aber ich hab erfolgreich getest, geflashed und alles geht nachdem ich alle kniffligen Sachen behoben hab. Doku folgt in allen Details.Ein saumäßig froher MichaUpdate / EDIT 20. Nov 2011Also es hat sich tatsächlich um einen Lötfehler gehandelt. Dieser war an einer Stelle, wo er blöderweise die Resetleitung über einen Widerstand gebrückt hat. Der Verdacht kam mir bei Beobachtung der rasend schnell und schwach flackernden LED auf meinem Arduino Uno und auch durch Hallo1001s Kommentar zuvor bezüglich des PullUps (hatte an sich keine Beziehung, lenkte mich aber in die richtige Richtung).Blöderweise ist die Lötstelle direkt darüber absichtlich gebrückt, und deshalb ist es mir erst beim nochmaligen Kontrollieren aufgefallen.Ich konnte nun mittels dreier Modifikationen die Arduino IDE so nutzen, dass ich per usbasp flashen und auch den Bootloader draufbretzeln konnte. Bei Letzterem kommt allerdings ein bekannter Fehler, der wohl mit der Firmware un/oder avrdude zu tun hat. Er meldet die Checksumme falsch, was aber nicht wirklich schlimm ist, da es trotzdem funktioniert.Leider sind die Modifikationen an der IDE eine Einbahnstraße. Einmal modifziert kann man nicht einfach kurz mal eben “zurückswitchen” per Software. Man muss die – zugegeben kleine Modifikation – rückgängig machen und die IDE neu starten. Alles in allem aber völlig okay.Geht es nur ums bootloader flashen ist das alles nicht nötig. Den String zum bootloader flashen muss ich zwar noch capturen, aber das hex-file selber ist in der IDE-Dateistruktur vorhanden.Ansonsten war ich heute 5 Stunden auf der Hobby#Elektronik in Stuttgart und war sehr sehr enttäuscht. Das war früher eine der beliebtesten Bastlermessen in Süddeutschland und ist völlig ausgedörrt. Nur ein paar Ramschhändler und K+M Computer waren da. Nicht mal Conrad Elektronik hat sich gezeigt. Für Konsolenzocker gabs reichlich Werbetrucks, die ca 1/3 der Halle dominierten.Weswegen ich das aber erwähne: es gab unter anderem Vorführungen bzw Workshops von einigen Linuxgruppen, bei denen auch Mikrocontroller und Robbies eine Rolle spielten. Daneben war der Stuttgarter Hack(er)space Club, Shackspace mit einer eigenen Arduino-Produktion, dem shackduino vertreten. So sehr mir das gefalen hat, ist der shackduino zwar leicht umsetzbar, hat aber leider keinen USB Anschluß. Man setzt dort auf eine RS232 Anbindung via MAX232. Allerdings hat man das ansonsten gut design(ed/t). Für Kids gabs einen Workshop “wir löten einen ATmega auf die 8×8 Matrix und lassen unseren Namen als Laufschrift abfahren”.Mikrocontroller sind “VOLL IN”, das kann man auch an der Vielzahl aktueller Publikationen und Artikeln in c’t, bei Franzis Buchverlag etc sehen.Alles in Allem war es den Besuch leider nicht wirklich wert (10 Euro Eintritt, nichts gekauft). Ich werde mir aber u.U. den Hackspace in Stuttgart-Wangen mal anschauen… die Typen vom Verein sahen aber schon wirklich aus wie man sich die Nerds in den US-Film-Klischees vorstellt. Und das von mir, einem Geek der ersten Stunde… Achja… erste Stunde: die Massen an C64ern und Plus 4 etc pp trieben mir dann doch ein breites Grinsen aufs Gesicht. Vor allem, wenn man berücksichtigt, wieviele Teenies vor 300×200 Punkten bei 8 maximalen Farben die damaligen Klassiker mit irre Begeisterung zockten. Sch… auf drei-D, Retro ist cool. Oder so.
-
26. November 2011 um 13:11 Uhr #906869spokekillerTeilnehmer
Hallo, Zeit für ein Update der Roadmap für die nächsten Wochen.Nachdem ich in den vergangenen Tage Renovatios Auftragsarbeit für einen Remote-Wake-On-LAN Dienst mittels Arduino Uno+Ethernetshield fertigstellen konnte, sollte dieser hier noch vor Weihnachten vorgestellt werden.Der Code genügt geringen Ansprüchen, macht was er soll und ist einsteigertauglich. Bei einigen Optimierungsversuchen ist mir aufgefallen, dass weniger manchmal mehr sein kann. Die von mir gewählten und optisch schöneren zweidimensionalen Arrays fraßen erkennbar mehr Speicher, als die gleiche Zahl (gemessen an den Datentupeln) eindimensionale Arrays. Der Code bringt Euch auch die Grundlagen zum URL-Parsing näher.Nebenbei bemerkt ist mir aufgefallen, dass der Ethernetshield schwere Kost für Akkubetrieb zu sein scheint. Ein-zwei Stunden unbeaufsichtigt und meine 2.1Ah-Zellen waren tiefentladen. Die waren aber auch schon nicht mehr ganz frisch…Dann sind heute meine zwei Bausätze zum I²C-Modul für LCDs mit Hitachi Controller von Pollin gekommen. Leider mit Stiftleisten statt Buchsenleiste. Ein wenig ärgerlich, denn vor Weihnachten bestelle ich nicht mehr und so muß ich behelfsmäßig für meine Tests verkabeln. Noch müssen sie aber erst zusammengelötet werden und die passende Library für den Arduino getweakt werden. Danach kann man sich zukünftig die vielen Kabel sparen und auch die Kontrastregler landen auf dem Modul. Gelötet sind die wohl schnell und ich hoffe ich bekomme nächste Woche noch den Bobbes (schwäbisch für den gluteus maximus) hoch, um Euch was damit zu zeigen.Ach, und dann liegen hier noch Teile für Relaisplatinen und die I²C-Echtzeituhr. Aktuell habe ich keinen Verwendungszwek für beides, weswegen ich das alles noch vor mir herschiebe. Herrje. ;-)Zu mehr wirds aufgrund “Real Life” Themen und vorweihnachtlichem Chaos (warum flippen da alle immer aus?) wohl nicht reichen. Leider. Ab Weihnachten bin ich einige Wochen in Japan, weswegen auch erst mal Sendepause sein dürfte, weil ich dort kein Internet haben werde. So richtig OFF zu sein ist ganz erholsam, wenn man wie ich auch im Beruf dauernd vor dem Blechdeppen (PC) sitzt.Außerdem habe ich neuen Appetit auf Arduino bekommen, als ich gesehen habe, dass es einen Tree gibt, in dem ein paar Jungs den bootloader auf kleine ATtinys umgesetzt haben, sodass er (a) nicht soviel Platz frißt und (b) den Einsatz mit der Arduino IDE ermöglicht. Nur um ein paar LEDs blinken zu lassen braucht es ja an sich keinen relativ teuren (immerhin 3-5x ggüber einem ATtiny2313) ATMega328.Vielleicht werde ich mir auch die Programmierung der Tinys mit Basic mal anschauen. Man kann sicher einige schöne Modding-Projekte damit realisieren, die auch den non-Arduino Freaks im Forum gefallen dürften.Wie Ihr seht, die Birne steht nicht still… irgendwo muß ich nur mal anfangen. 😀Phil68 werkelt im Stillen sozusagen auch an so einigen interessanten Projekten, die Euch sicher sehr sehr gefallen dürften. Würde mich nicht wundern, wenn daraus die neue inoffizielle MK-Luftkühler-Plattform werden würde. Mal sehen, braucht alles Zeit.In diesem Sinne seid gespannt auf das was da kommt. Wir neuen Arduino / µC Freaks lassen Euch nicht hängen.
-
26. November 2011 um 15:11 Uhr #906878einballTeilnehmer
spokekiller;474078 said:
Weswegen ich das aber erwähne: es gab unter anderem Vorführungen bzw Workshops von einigen Linuxgruppen, bei denen auch Mikrocontroller und Robbies eine Rolle spielten. Daneben war der Stuttgarter Hack(er)space Club, Shackspace mit einer eigenen Arduino-Produktion, dem shackduino vertreten. So sehr mir das gefalen hat, ist der shackduino zwar leicht umsetzbar, hat aber leider keinen USB Anschluß. Man setzt dort auf eine RS232 Anbindung via MAX232. Allerdings hat man das ansonsten gut design(ed/t). Für Kids gabs einen Workshop “wir löten einen ATmega auf die 8×8 Matrix und lassen unseren Namen als Laufschrift abfahren”.Mikrocontroller sind “VOLL IN”, das kann man auch an der Vielzahl aktueller Publikationen und Artikeln in c’t, bei Franzis Buchverlag etc sehen.Alles in Allem war es den Besuch leider nicht wirklich wert (10 Euro Eintritt, nichts gekauft). Ich werde mir aber u.U. den Hackspace in Stuttgart-Wangen mal anschauen… die Typen vom Verein sahen aber schon wirklich aus wie man sich die Nerds in den US-Film-Klischees vorstellt. Und das von mir, einem Geek der ersten Stunde… Achja… erste Stunde: die Massen an C64ern und Plus 4 etc pp trieben mir dann doch ein breites Grinsen aufs Gesicht. Vor allem, wenn man berücksichtigt, wieviele Teenies vor 300×200 Punkten bei 8 maximalen Farben die damaligen Klassiker mit irre Begeisterung zockten. Sch… auf drei-D, Retro ist cool. Oder so.Den Shackspace will ich mir auch mal anschauen. Ich bin gerade dabei (gerade bedeutet seit 2 Jahren), einen kleinen Hackerspace hier aufzuziehen. Wenigstens eine kleine Grupe zu gründen, die etwas mit µC und/oder Elektronik macht. Leider hat sich bis jetzt nur einer gefunden. In solchen kleineren Städten funktioniert das leider nicht wirklich gut. Schade drum.Wenn du zum Shackspace gehst, nimmst du mich dann mit? Treffen wir uns irgendwo? vorzugsweise Samstags ;)In der c-base sitzen auch noch ein paar (viele!!) C64, Amigas und andere Pre-PCs im Hardwarelager. Auch eine nette Sammlung 😉
-
26. November 2011 um 15:11 Uhr #906881spokekillerTeilnehmer
einball;474847 said:
Den Shackspace will ich mir auch mal anschauen. Ich bin gerade dabei (gerade bedeutet seit 2 Jahren), einen kleinen Hackerspace hier aufzuziehen. Wenigstens eine kleine Grupe zu gründen, die etwas mit µC und/oder Elektronik macht. Leider hat sich bis jetzt nur einer gefunden. In solchen kleineren Städten funktioniert das leider nicht wirklich gut. Schade drumJa, das kann ich nachvollziehen, da kommen bei mir alte Erinnerungen mit Computerclub damals in den 90ern hoch. Mitmachen wollen immer alle, aber eben nur solange bis sie mal was mithelfen sollen. Und Zuverlässigkeit — ach i wo!
einball;474847 said:
Wenn du zum Shackspace gehst, nimmst du mich dann mit? Treffen wir uns irgendwo? vorzugsweise Samstags 😉
In der c-base sitzen auch noch ein paar (viele!!) C64, Amigas und andere Pre-PCs im Hardwarelager. Auch eine nette Sammlung 😉Ja das kann ich machen, logo. Mühlacker ist bei Pforzheim oder? Wir könnten uns beispielsweise am Stuttgarter Hbf oder in Leonberg treffen… Samstags wäre auch okay, aber erst gegen Nachmittag.
Ich weiß aber nicht, ob ich es noch vor Weihnachten schaffe. Anhand der Webseite ist die Shackspace Anlage sensationell aber die Leute, naja… ob ich wohl auch so daneben war in dem Alter? Manche meiner Freunde behaupten sowas.Details machen wir per PN und jabber oder Telefon.
-
26. November 2011 um 17:11 Uhr #906898spokekillerTeilnehmer
Da mußte ich jetzt gut lachen drüber. SIC! Ganz wunderbar hast du das getroffen. Sehe ich genau gleich.Und umgekehrt paßt das durchaus auch: ich hab bei der Arbeit öfter mal Studenten und das find ich immer super-erfrischend. Man ist eben immer so alt wie man sich fühlt. Oder nicht? (Das erzähl ich mal meinen Rückenmuskeln, die sind da wohl anderer Meinung… hahahaha).Davon mal abgesehen hatte ich nicht den Altersunterschied gemeint. Ich meinte eher, die Jungs im shackspace wären mir einfach, na sagen wir: selbst für meinen Geschmack etwas zu blödelhaft, einfach zu übertrieben durchgeknallt. Aber das sieht auf den Videos vielleicht nur so aus. Wa sie dagegen in dem neuen Bau aufgerichtet haben gefällt mir soweit wirklich gut, von daher ist ein bisschen zuviel Geblödel auch okay 🙂 Na Du wirst schon noch merken, was ich meine 😀
-
26. November 2011 um 17:11 Uhr #906893einballTeilnehmer
Ich finde das urkomisch, wenn sich die Leute über das Alter Gedanken machen. Vor allem bei sowas. Ich nenne dir drei Argumente, warum du das mit dem alter schnell mal wieder vergessen solltest:
Punkt 1: Hackerethik der alten Schule
Beurteile einen Hacker nach dem, was er tut und nicht nach üblichen Kriterien wie Aussehen, Alter, Rasse, Geschlecht oder gesellschaftlicher Stellung.
Punkt 2: Ich habe häufig mit Leuten über 30 zu tun. Ich komme mit ihnen klar. Mir sind ältere Leute im Normalfall lieber. Deer Grund ist einfach die Erfahrung. Ich lerne viel mehr von einem (lebens-)erfahrenen Hacker, als von einem jungen Heißsporn, wie ich einer bin 😉
Punkt 3: In der c-base rennt Jung und Alt rum. Dort ist es den Leuten auch egal, wie alt du bist 😉
-
30. November 2011 um 22:11 Uhr #907310ThaRippaAdministrator
Mal wieder was von mir: es geht!http://dl.dropbox.com/u/30909448/IMG_1044.JPGIch kann also jetzt das Noritake-VFD nicht nur beschreiben, sondern auch den Cursor verschieben und sowas. Dimmen sollte nur ein paar Codezeilen entfernt sein. Ich habe die LiquidCristal-Library auf die Besonderheiten der Noritake-Steuercodes angepasst und LiquidVFD genannt. Code gibts, sobald der komplizierter und dabei vorzeigbarer geworden ist.Wehmutstropfen: ich benötige momentan satte 10 Digitalpins wegen der Parallelansteuerung. Das Ding kann wohl auch Seriell, aber das hab ich noch nicht begriffen. Seriell bräuchte nur einen Pin, und wäre immernoch schnell genug für ein bisschen Text, ein paar Temperaturen und Drehzahlen.Aber dea geijd! Ä ganzes Wochnendä ä schworza Bildschirm, un dea geijd!
-
1. Dezember 2011 um 10:12 Uhr #907350spokekillerTeilnehmer
Meinen Glückwunsch, ganz tolle Leistung!!! Find ich toll, dass es Dir endlich gelungen ist. Was ist denn das für ein serieller Anschluß, womöglich I²C?LG, Spoke
-
1. Dezember 2011 um 11:12 Uhr #907354ThaRippaAdministrator
Ich hab das Teil.http://www.farnell.com/datasheets/57190.pdfFür mich liest sich das wie ein stinknormales COM-Interface, also Nullmodemmäßig. Theoretisch müsste man da mit Windows Terminal oder Putty hinschreiben können. Wenn ich nen COM-Port hätte. Und lust das zu verbinden. Ich such mir demnächst mal nen Codeschnipsel wo wer seriell überträgt (die Beispiele lesen ja alle nur seriell) und versuche mir daraus was zu drehen.
-
1. Dezember 2011 um 11:12 Uhr #907355spokekillerTeilnehmer
Ja, das wird ein “normaler” Serial-Port nach RS232 Art sein. Wohl wie ich das lese aber mit 5V-TTL Pegeln, das heißt Du darst das Ding auf keinen Fall einfach direkt an eine PC-RS232 (COM) hängen, die ballert das VFD einfach kaputt.Das müßte man mit einem RS232-TTL Wandler dazwischen mal antesten. Baudrate sieht ja gut aus und dann setzt man 8N1 oder 8N0 …. 19200 ist schon klasse. Da geht dann auch was.Achso, und meiner Meinung nach sollte es möglich sein, das gute Stück auch “nur” mit 4 Datenleitungen zu nutzen, sodaß Dir am Arduino vier frei werden. Bei den Libs für die Displays mit Hitachi Controller geht das, aber das weißt Du sicher noch.Bist gar nicht auf die Idee gekommen, das mal anzutesten? ;-)Die Schwierigkeit beim seriellen anschluß ist eher, dass Du eine Lib brauchst, die die Kommandos implementiert für bspw Position, Zeilensteuerung, Zeichenwahl. Ich bin jetzt nicht so sicher, ob das mit Deiner modifizierten so einfach gehen wird.Wenn du Spaß am weiterfummeln hast kannst Du auch versuchen, einen Aufbau mit shiftregister zu machen. Wäre mir aber an sich zuviel. Ich würde als erstes die 4 DL-Tricks durchprobieren.Was ist denn an dem Noritake VFD so besonders gegenüber einem guten Display mit HD-Controller? Kann man die Pixel individuell ansteuern wie bei einem grafischen?LG**EDIT….ich hab das wohl verschnarcht, aber es gibt doch auch fertige Libs für rein serielle Displays…. evtl schau da mal nach und pass die an, das könnte uU jetzt nicht mehr schwer sein, wo Du weißt, auf was es ankommt.
-
1. Dezember 2011 um 12:12 Uhr #907358ThaRippaAdministrator
Wenn ich nur 4 Ports angebe, funzt es nicht. Bei den anderen VFDs steht 4 und 8-Kabel-Betrieb extra da, bei meinem halt parallel und seriell. Was ich will ist doch, dass der Arduino mit dem ding seriell redet. Stimmen da nicht die Pegel? Das mit den Steuersignalen ist anscheinend etwas anders. Beispielsweise ein Cursor-Move ist aus drei Zeichen aufgebaut. Escape, dann C und dann die Position. Für alle anderen Befehle gibts schlicht andere Hexcodes als in HD-Controllern üblich. Dafür scheint man keine Leitung zu haben, die zwischen Zeichen und Steuerzeichen wählt. Ist ja auch sinnig für den seriellen Betrieb ;)Wie gesagt, wenn ich dem Teil Chars senden kann und es die ausgibt hab ich so gut wie gewonnen, weil dann bau ich mir alle Steuerbefehle von Hand in ne eigene Library. Dann kanns endlich weitergehen, weil ich dann wieder Pins frei hab zum Messen und Regeln. Als nächstes brauch ich alle 10 Minuten einen Impuls – ohne sleep.
-
1. Dezember 2011 um 12:12 Uhr #907360phil68Teilnehmer
Als nächstes brauch ich alle 10 Minuten einen Impuls – ohne sleep.
Etwas ähnliches hab ich in meiner Regelung schon umgesetzt.
long previousMillis = 0; // store last updatelong timer = 30000; // timer 30 secondsvoid setup(){}void loop(){unsigned long currentMillis = millis();if(currentMillis-previousMillis>timer){ digitalWrite(PowerOffPin, HIGH); // Power-Off-Impuls ondelay (1000); // wait 1 seconddigitalWrite(PowerOffPin, LOW); // Power-Off-Impuls offpreviousMillis = currentMillis(); // start count}}
In dem Fall wird der Impuls(1s) ausgeführt, wenn die verstrichene Zeit 30s übersteigt, also aller 30s.Grüße Dirk
-
1. Dezember 2011 um 13:12 Uhr #907365ThaRippaAdministrator
Super, danke. Wird aber erst umgesetzt wenn ich wieder Pins frei habe 🙂 Da fällt mir ein, ich brauch noch ein paar Transistörchen, um wirklich schalten zu können.
-
1. Dezember 2011 um 16:12 Uhr #907385einballTeilnehmer
Haaaalo, stop! So wie du, phil, es machst, schläft der Prozessor eine ganze Weile (delay() beschäftigt ihn glaube ich, so lange, bis die zeit rum ist).
Nimm lieber einen Timer, der alle x sekunden einen Interrupt feuert. Damit ist die CPU für andere Aufgaben frei .
-
1. Dezember 2011 um 16:12 Uhr #907386ThaRippaAdministrator
Naja die eine Sekunde warten ist in dem Beispiel ja nur damit die LED an bleibt.
-
1. Dezember 2011 um 16:12 Uhr #907382spokekillerTeilnehmer
ThaRippa;475329 said:
Wenn ich nur 4 Ports angebe, funzt es nicht. Bei den anderen VFDs steht 4 und 8-Kabel-Betrieb extra da, bei meinem halt parallel und seriell.Achso. Schade.
ThaRippa;475329 said:
Was ich will ist doch, dass der Arduino mit dem ding seriell redet. Stimmen da nicht die Pegel?Doch, die passen, aber Du solltest ggf einen kleinen Transistor zwischenklemmen (2N2646/2N3909 … müßte jetzt schauen), weil ich nicht weiß wieviel Strom da gezogen wird und wenn alle 8 Datenleitungen laufen wird zuviel Gesamtstrom gezogen, was Dir den µC ‘grillen’ kann.
ThaRippa;475329 said:
Wie gesagt, wenn ich dem Teil Chars senden kann und es die ausgibt hab ich so gut wie gewonnen, weil dann bau ich mir alle Steuerbefehle von Hand in ne eigene Library. Dann kanns endlich weitergehen, weil ich dann wieder Pins frei hab zum Messen und Regeln. Als nächstes brauch ich alle 10 Minuten einen Impuls – ohne sleep.Falls es dann immer noch zu weig Pins wären könntest Du einen Multiplexer nehmen, da bläst Du einen Kanal auf 16 auf, mit relativ geringem Aufwand, auch in der Programmierung. Und die Schaltzeiten zwischen zwei MX-Ports sind so schnell, dass es ist, als wenn Du die Sensoren zeitgleich ausliest. Fürs Schalten dagegen sind ShiftICs handlicher (weil die MXer ja nur einen Port gleichzeitig aktiv halten können).
-
1. Dezember 2011 um 16:12 Uhr #907384ThaRippaAdministrator
Na nee, ich verstehe das so, dass ich für seriell exakt einen Pin brauche. Dazu halt noch 5V und Masse. Das ist so auch als Stecker (wie Lüfteranschluss) ausgeführt. Dann brauch ich erstmal keine Multiplexer oder Schiebedingsis. Wenn dann steht ja hier schon wie ich die einbinden kann. Aber wie gesagt, es sollte erstmal so gehn.Das Temperaturmessen will ich mit den Digitalfühlern machen, die du vorgestellt hast. Also ein weiterer Pin. Dann noch einen für den Impuls alle 10 Minuten ans Logo-Display, und einen oder zwei für Lüfter. Wobei da weiß ich noch nicht was ich mach – könnte ja auch mit Analog-Outs und Verstärkern gehen. Ich hab 2×3 120er zu regeln. Darüber mach ich mir aber Gedanken wenn der Rest läuft. Gemach!Ich hab dank BF3 im Moment nicht oft Zeit zum basteln (die lieben Kollegen fordern zum zocken auf) und ab mitte Dezember gehts mit Star Wars : The Old Republic weiter…
-
1. Dezember 2011 um 17:12 Uhr #907392phil68Teilnehmer
Haaaalo, stop! So wie du, phil, es machst, schläft der Prozessor eine ganze Weile (delay() beschäftigt ihn glaube ich, so lange, bis die zeit rum ist).
Ja ist mir bekannt, die 1s sollte zu verschmerzen sein :-k In meinem Beispiel ist das Teil einer Temp-Regelung. Ich nutze den Impuls zum Herunterfahren des Rechners.
Grüße Dirk
EDIT: Du meinst so?
#include
long previousMillis = 0; // store last update
long timer2 = 30000; // timer 30 secondsvoid timer1() {
digitalWrite(PowerOffPin, LOW); // Power-Off-Impuls off
}void setup()
{
timer.setInterval(1000, timer1);
}void loop()
{
unsigned long currentMillis = millis();
if(currentMillis-previousMillis>timer2){
digitalWrite(PowerOffPin, HIGH); // Power-Off-Impuls on
timer.run();
previousMillis = currentMillis(); // start count
}
}…ist sicher recht umständlich, aber ich bin in der Lernphase und totaler Programmier-Noob 8-[
-
1. Dezember 2011 um 20:12 Uhr #907416RenovatioTeilnehmer
Natürlich spoke, hier muss doch einer mal was größeres Präsentieren. ^^Wir machen daraus ein sehr Spannendes Thema.
-
1. Dezember 2011 um 20:12 Uhr #907412spokekillerTeilnehmer
ThaRippa;475358 said:
Na nee, ich verstehe das so, dass ich für seriell exakt einen Pin brauche. Dazu halt noch 5V und Masse. Das ist so auch als Stecker (wie Lüfteranschluss) ausgeführt. Dann brauch ich erstmal keine Multiplexer oder Schiebedingsis. Wenn dann steht ja hier schon wie ich die einbinden kann. Aber wie gesagt, es sollte erstmal so gehn.Das Temperaturmessen will ich mit den Digitalfühlern machen, die du vorgestellt hast. Also ein weiterer Pin. Dann noch einen für den Impuls alle 10 Minuten ans Logo-Display, und einen oder zwei für Lüfter. Wobei da weiß ich noch nicht was ich mach – könnte ja auch mit Analog-Outs und Verstärkern gehen. Ich hab 2×3 120er zu regeln. Darüber mach ich mir aber Gedanken wenn der Rest läuft. Gemach!Ich hab dank BF3 im Moment nicht oft Zeit zum basteln (die lieben Kollegen fordern zum zocken auf) und ab mitte Dezember gehts mit Star Wars : The Old Republic weiter…Ja, nee, okay, is klar. Ich hab nicht gewußt, dass das restliche Zeug doch überschaubar ist. Ich wollte da gleich mit dem Muxer ran. Der bezog sich nicht aufs Display.Ach ich bin z.Zt nicht ganz beim Thema, scheint mir. Aber Ihr habt den Thread ja voll im Griff 😎 Schön. Ehrlich.Wenn der Renovatio dann demnächst seinen Arduino Mega abgreift, dann geht hier vollends der Punk ab. 😆
-
1. Dezember 2011 um 22:12 Uhr #907428spokekillerTeilnehmer
einball;475403 said:
Hjey phil,ich weiß nicht, wie sich das mit dem Arduino verhält, sorry!
Die Sekunde ist verschmerzbar, ja. doch ich redete eigentlich von dem Impuls alle 10 Minuten, den ThaRippa angesprochen hatte.Ohne die IDE zu nutzen, gibt es die Möglichkeit, einen Timer zu starten. Bei einem Overflow wird ein Interrupt generiert, über den du dann eine Variable hochzählen lassen kannst (Der Timer feuert immer mehr als einen Interrupt pro Sekunde, je nach Taktfrequenz und Einstellung). In der Mainloop machst du das genau so, mit einer IF Abfrage, die überprüft, ob über den Daumen gepeilt 10 Minuten vergangen sind und dann den Impuls an das Display abgibt oder auch nicht.
Mal so schnell dazu ergänzt… in phils speziellem Fall könnte das dennoch ein Problem sein, weil er schon beide interrupts nutzt, die der ATMega328 hat. Oder war sogar einer schon für den Timer… ??? tilt.
Innerhalb der Arduino-Sprache gibts m.W. nur die Möglichkeit, den Timer, der automatisch seit dem letzten Reset läuft (ne Art System Uptime) per millis () Funktion abzufragen.
Versteht jemand was ich sagen will? Müßte man ggf mal noch googlen, aber phils Code ist ja voll funktionsfähig.
Delay ist m.E. für sowas jedenfalls ‘voll unschön’, weil er in der Zeit Nul-Loops fährt und Taktzyklen belegt, in denen dann einfach nichts gemacht wird. Die millis also in Intervallen abzufragen ist okay. Wenn es nicht auf hochpräzise Zeitmessung ankommt ist der durch den Programmcode-Lauf zu erwartende Zeitrahmen, den man daneben liegt locker zu verschemrzen, nicht wahr?Ich geh jetzt schlafen, also delay(8h) 😆
-
1. Dezember 2011 um 22:12 Uhr #907425einballTeilnehmer
Hjey phil,
ich weiß nicht, wie sich das mit dem Arduino verhält, sorry!
Die Sekunde ist verschmerzbar, ja. doch ich redete eigentlich von dem Impuls alle 10 Minuten, den ThaRippa angesprochen hatte.Ohne die IDE zu nutzen, gibt es die Möglichkeit, einen Timer zu starten. Bei einem Overflow wird ein Interrupt generiert, über den du dann eine Variable hochzählen lassen kannst (Der Timer feuert immer mehr als einen Interrupt pro Sekunde, je nach Taktfrequenz und Einstellung). In der Mainloop machst du das genau so, mit einer IF Abfrage, die überprüft, ob über den Daumen gepeilt 10 Minuten vergangen sind und dann den Impuls an das Display abgibt oder auch nicht.
-
2. Dezember 2011 um 0:12 Uhr #907439Hallo1001Teilnehmer
Hallo alle miteinander!
Innerhalb der Arduino-Sprache gibts m.W. nur die Möglichkeit, den Timer, der automatisch seit dem letzten Reset läuft (ne Art System Uptime) per millis () Funktion abzufragen.
Ist auch kein Problem… 😉 Als erstes musst Du herausfinden wann der Timer überläuft (also welchen Zahlenwert er maximal annehmen kann) und mit welcher Schrittweite er arbeitet. Dann erstellst Du eine Variable mit dem gleichen Byte-Format (char, short, long), damit die Variable auch genau den gleichen Zahlenwert annehmen kann. Ich nenne die Variable einfach mal „Z1“. Und dann brauchst Du in der Hauptschleife nur noch diesen Code einbauen:
[CODE]If (millis() >= Z1) { // wenn Zeit abgelaufen, dann…
Z1 = millis() + 1000 // Zeit neu einstellen (1000 = 1 Sekunde)
…
Code // was nach Zeit X ausgeführt werden soll
…
}
[/CODE]Arbeitet „millis()“ in 1ms Schritten, dann währe 1000 eine Sekunde. Möchtest Du z.B. die Zeitschleife alle 5 Sekunden aufrufen, dann müsstest Du hier 5000 dazu addieren. Damit erhältst Du eine „Zeitbasis“ die sehr genau arbeitet und das System nicht tot legt…
LG Jens
-
2. Dezember 2011 um 8:12 Uhr #907454spokekillerTeilnehmer
Hi Jens,ich hatte was anderes gemeint, nämlich dass man zwar die Zeit genau aufzeichnen kann und vergleichen, aber durch die Laufzeiten Deines Codes es nicht möglich sein dürfte, im Voraus zu sagen: in 10min und 30 sec tu dies/jenes — jedenfalls nicht so.Im Falle der IF Abfrage kann man ja nicht bestimmen, ob sie bspw zu spät oder zu früh abgefragt wird. Ich denke ich rede hier von Zeitunschärfe im sec oder sogar millisec-Bereich (je nach Code). Ein Interrupt für einen “mitlaufenden Zähler” wäre da die Lösung.Wirklich wichtig oder schlimm dürfte das aber nicht sein — ich war nur mal wieder Erbsen zählen.So wie Du es vorgestellt hast findet es sich auch in phill68s Code und auch in einigen Beispielen, wer die IDE kennt kann sich den Demosketch “BlinkwithoutDelay” in den Examples ansehen. Sehr simpel und verständlich.Bei dieser Zeitdiskussion fällt mir wieder ein, dass hier noch irgendwo eine I²C fähige DS1307 rumliegen dürfte… *raschel, such*Cheers.
-
2. Dezember 2011 um 11:12 Uhr #907473thetheTeilnehmer
Bestimmt wisst Ihrs schon und ich verlinke hier trotzdem, dass die Arduino-Entwicklungsumgebung 1.0 erschienen ist.
-
2. Dezember 2011 um 15:12 Uhr #907497Hallo1001Teilnehmer
Hallo spokekiller!
ich hatte was anderes gemeint, nämlich dass man zwar die Zeit genau aufzeichnen kann und vergleichen, aber durch die Laufzeiten Deines Codes es nicht möglich sein dürfte, im Voraus zu sagen: in 10min und 30 sec tu dies/jenes — jedenfalls nicht so.
Warum nicht? Du kannst Doch einfach “10min & 30sek” dazu addieren. Es geht eben nur nicht wenn der Timer vor diesen “10min & 30sek” überläuft. Welchen Zahlenwert kann denn der Timer hier maximal annehmen und mit welcher Schrittweite arbeitet “millis()”?
Im Falle der IF Abfrage kann man ja nicht bestimmen, ob sie bspw zu spät oder zu früh abgefragt wird.
Also “zu früh” kann die IF Abfrage nie erfolgen, denn der Vergleich ist ja “>=”. Der Code kann also “genau” oder “größer” der angegebenen Zeit ausgeführt werden. Aber Du hast natürlich Recht, hängt das Progi bei einer anderen Abarbeitung fest, dann kann die IF Abfrage natürlich nicht zur gewünschten Zeit durchlaufen werden…
LG Jens
-
2. Dezember 2011 um 16:12 Uhr #907505spokekillerTeilnehmer
Hallo1001;475478 said:
Aber Du hast natürlich Recht, hängt das Progi bei einer anderen Abarbeitung fest, dann kann die IF Abfrage natürlich nicht zur gewünschten Zeit durchlaufen werden…LG JensGenau darauf wollte ich hinaus. Sorry, bin heute wieder nicht dazu gekommen die Tutorials fertigzumachen. 😥EDIT – 08. DezemberHallo,leider kann ich aufgrund einiger privater Probleme und Terminschwierigkeiten diesen Monat und auch größtenteils im Januar nichts zu diesem Thread beitragen.Der Thread wird deswegen NICHT sterben. Arduino bzw ATMega und leichte, kleine Lösungen basierend darauf werden mich weiter beschäftigen.Es gibt eben nur Zeiten im Leben, da sind andere Dinge wichtiger.Es tut mir vor allem Leid für all diejenigen, die jetzt über die Feiertage viel freie Zeit haben werden (anders als ich) und auf neue Anregungen gewartet haben. Ich bin mir aber sicher, dass die Crew, die mich in den letzten Monaten so angespornt hat, dafür sorgen wird, dass es nicht ganz so leer bleiben wird. ;-)Leider kann ich somit auch am angedachten (Augsburger) Treffen im Januar nicht dabei sein, was mich ganz besonders ärgert. Aber aufgeschoben ist nicht aufgehoben. Liebe Grüße an alle Mitleser und MK’ler und bis hierher ein dickes Danke für all die Unterstützung, die Hilfe in materieller und immaterieller Form. Besonderen Dank an Phil68, für die so zahlreich angefertigten MK-Duino Prototypen und Korrekturen,an Hallo1001 für die Grundkurse in Programmertechnik und Elektronik,Renovatio für seine Geduld (bis ich endlich seinen WOLDuino-Prototypen fertig hatte) und tollen Ideenund ThaRippa fürs Mitmachen im Hintergrund und seine Empfehlungen in anderen Threads.Von meiner Seite aus solls im neuen Jahr mit coolen Ideen, kleinen Bausätzen und ner Menge spinnigem Moddingkrempel weitergehen.Und einball, wir gehen auch zum shackspace in Stuttgart…habs nicht vergessen…Frohes Weihnachtsfest und guten Rutsch, falls man sich bis dahin “nimmer hört” 😀
-
5. Januar 2012 um 20:01 Uhr #910316BigPlanetTeilnehmer
Hallo ans Forum.
Bin seit 3 Wochen (stolzer) Arduinobesitzer.
Kurz zu meiner Person :
Bin Ü50 und spreche verschiedene Sprachen:
(C, Java, HTML, PHP, MYSQL usw.)Bin seit 20 Jahren am programmieren – verschiedene Sachen (bisher hauptsächlich BW-Sachen.
Die Arduinos und das ganze drumrum und die Möglichkeiten dazu – das ist schon gigantisch. Kaum hast du mal ein Sketch gemacht fallen dir schon mehrere Erweiterung udgl. dazu ein. Ich habe seit 2 Tagen das Board und den Thread “Elektronikprojekte auf Arduino Plattform” gelesen und mich entschlossen meine Senf auch dazu zu geben (wenn ich darf)
Freue mich auf Gedankenaustausch.
Grüße
BigPlanet -
6. Januar 2012 um 16:01 Uhr #910382RenovatioTeilnehmer
Schön dir hier zu sehen BigPlanet und super das du so viele Sprachen sprechen kannst. 🙂
-
6. Januar 2012 um 17:01 Uhr #910391RenovatioTeilnehmer
phil68;478671 said:
Hallo BigPlanet 🙂
Schön, dass du dich hier meldest!Die Arduinos und das ganze drumrum und die Möglichkeiten dazu – das ist schon gigantisch. Kaum hast du mal ein Sketch gemacht fallen dir schon mehrere Erweiterung udgl. dazu ein.
Ja, es lässt einen nicht mehr los. Ich habe jetzt meine (fast) komplette Regelung fertig, aber leider im Moment keine Zeit das Projekt hier vorzustellen. Im Februar sollte das dann wieder klappen.
Bin Ü50 und spreche verschiedene Sprachen:
(C, Java, HTML, PHP, MYSQL usw.)Respekt, dann kann ich dir ja meinen zusammen gewürfelten, “schlechten Code” um die Ohren hauen und korrigieren lassen 😉
@spokekiller
Hab gerade erst dein letztes Posting gesehen… Ich hoffe, dass du die Probleme möglichst schnell aus der Welt schaffen kannst und drücke dafür beide Daumen!Grüße Dirk
Dann bin ich mal gespannt.
@spoke:Hab das gar nicht gelesen das du gerade Problem hast und hoffe das du sie schnellst möglich aus dem Weg schaffst.
-
6. Januar 2012 um 17:01 Uhr #910389phil68Teilnehmer
Hallo BigPlanet 🙂
Schön, dass du dich hier meldest!Die Arduinos und das ganze drumrum und die Möglichkeiten dazu – das ist schon gigantisch. Kaum hast du mal ein Sketch gemacht fallen dir schon mehrere Erweiterung udgl. dazu ein.
Ja, es lässt einen nicht mehr los. Ich habe jetzt meine (fast) komplette Regelung fertig, aber leider im Moment keine Zeit das Projekt hier vorzustellen. Im Februar sollte das dann wieder klappen.
Bin Ü50 und spreche verschiedene Sprachen:
(C, Java, HTML, PHP, MYSQL usw.)Respekt, dann kann ich dir ja meinen zusammen gewürfelten, “schlechten Code” um die Ohren hauen und korrigieren lassen 😉
@spokekiller
Hab gerade erst dein letztes Posting gesehen… Ich hoffe, dass du die Probleme möglichst schnell aus der Welt schaffen kannst und drücke dafür beide Daumen!Grüße Dirk
-
6. Januar 2012 um 17:01 Uhr #910393phil68Teilnehmer
Würde mich gerne heute nochmal mit einem kleinen Problemchen an euchwenden – wenn ich darf.
Warum solltest du nicht dürfen 😉 Da du recht viele “Sprachen” sprichst, werden wir deine Hilfe sicher oft in Anspruch nehmen!Grüße Dirk
-
6. Januar 2012 um 17:01 Uhr #910392
-
6. Januar 2012 um 18:01 Uhr #910399BigPlanetTeilnehmer
Also vorab – ich helfe gerne wenn ich kann. Da wir zum 1. April 2012 ein neues Domizil beziehenkanns mit meiner Präsenz mal dünn werden. In dem neuen Haus liegt unser SZ ebenerdig. Da bauich einen begehbaren Schrank ein. Ich hab das schon mal gemacht -:) da kommt ein PIR-Sensor mit Arduino dran und der steuert das Licht. Poti zum ändern der Leuchtzeit ist schon probeweise gebaut. Aber jetzt habe ich das Problem : ein Taster soll von Leuchtzeit auf Dauerleuchten schalten. Ich glaube ich habe heute 4 oder 5 Sketche getestet und – nix. ich dachte ich frage einfach den Status ab und den Istzustand : etwa so“taster_val = digitalRead(inputPin); delay(10); taster_val_prell = digitalRead(inputPin); if (taster_val == taster_val_prell) { if(taster_val != tasterstatus) { if(taster_val == HIGH) { if(wie_oft == 0) { Serial.println(” Ein”); }else { Serial.println(” Aus”); } wie_oft++; } } tasterstatus = taster_val; }Aber die Ausgabe ist nicht binär sprich “Ein” oder “Aus” je nach Tastendruck. Das schwankt immerauch wenn ich keine Taste drücke.Kann mir da jemand die richtige Richtung weisen?vielen Dank im Voraus
-
6. Januar 2012 um 19:01 Uhr #910405phil68Teilnehmer
Hm…
Bin zwar ziemlicher Anfänger, aber versuch es mal so:taster_val = digitalRead(inputPin);
delay(10);
taster_val_prell = digitalRead(inputPin);
if (taster_val == taster_val_prell && taster_val != tasterstatus && taster_val == HIGH && taster_val == HIGH && wie_oft == 0)
{
Serial.println(” Ein”);
}
else
{
Serial.println(” Aus”);
}
wie_oft++;
tasterstatus = taster_val;Grüße Dirk
-
6. Januar 2012 um 20:01 Uhr #910422phil68Teilnehmer
Sorry, hatte etwas vergessen :+
taster_val = digitalRead(inputPin);delay(10);taster_val_prell = digitalRead(inputPin);if (taster_val == taster_val_prell && taster_val != tasterstatus && taster_val == HIGH && wie_oft == 0){Serial.println(” Ein”);}else{Serial.println(” Aus”);}wie_oft++;tasterstatus = taster_valnew;
So hätte ich gedacht, das andere war nur der Übersicht halber.Grüße Dirk
-
6. Januar 2012 um 20:01 Uhr #910414BigPlanetTeilnehmer
Hallo Dirk
Danke erstmal – aber du hast nur alle if’s in ein IF gepackt.
Das macht logisch gesehen keinen Unterschied (denke ich).
Aber ich checks dennoch. Klar.Danke für die Zeilen
-
6. Januar 2012 um 21:01 Uhr #910434BigPlanetTeilnehmer
Servus Dirkwoher bzw. wie holst du taster_valnew neu?Habe ich da was nicht geschnallt oder übersehen -:)GrüßeBigPlanet
-
6. Januar 2012 um 23:01 Uhr #910442phil68Teilnehmer
Vielleicht wäre es besser, wenn du den ganzen Sketch postest :-k Wenn du einfach zwischen 2 Zuständen schalten willst, sollte das funktionieren.
taster_val = digitalRead(inputPin);delay(10);taster_val_prell = digitalRead(inputPin);if (taster_val == taster_val_prell && tasterstatus == LOW && taster_val == HIGH ){Serial.println(” Ein”);tasterstatus = HIGH;}else if (taster_val == taster_val_prell && tasterstatus == HIGH && taster_val == HIGH ){Serial.println(” Aus”);tasterstatus = LOW;}
Grüße Dirk
-
7. Januar 2012 um 10:01 Uhr #910449GonzogonzalesTeilnehmer
Hmm das mit dem Taster am Digitaleingang verstehe ich nicht.
Das mit dem Licht umschalten von Zeit- auf Dauerlicht verstehe ich schon.
Hier mal ein paar Gedankenspiele.
Du hast den PIR Sensor der das licht für eine gewisse Zeit anschalte.
Jetzt weiß Frau/Mann nicht was es anziehen will. läuft also wild im Schrank hin und her.
Bei Jeder Bewegung kannst Du den Zähler ja wieder zurück setzen.
So bleibt das Licht nur solange an, wie sich im Schrank jemand aufhält.
Zweite Variante statt Taster einen Schalter, wenn an dann keine
Zeitsteuerung und wen aus, dann Zeitsteuerung.
Dritte Variante, einen mehrstufigen Drehschalter. Bei diesen werden
pro Schaltstufe ein Widerstand dran gehängt und in Reihe geschaltet.
So wie bei dem LCD Shield von DFrobot.
So kann man an nur einen Port x Taster abfragen.
Hier mal der Schaltplan vom LCD Shield.
http://www.dfrobot.com/image/data/DFR0009/LCDKeypad%20Shield%20SCH.pdf
Wenn man das auf einen Drehschalter umstrickt an statt Taster zu
nehmen, kannst Du verschiedene Zeiten pro Stellung einstellen.
So wie eine Stellung für Dauerlicht.
Hat auch den Vorteil, das Du die Zeiten genau weist, wen der
Schalter eine bestimmte Stellung hat. Ein Poti ist da etwas ungenauer.Die Abfrage ist wie beim Poti, Du liest den Analogwert ein und
Fragst diesen ab.
Hier mal ein Beispiel von dem LCD Shield
[CODE]//example use of LCD4Bit_mod library#include
//create object to control an LCD.
//number of lines in display=1
LCD4Bit_mod lcd = LCD4Bit_mod(2);//Key message
char msgs[5][15] = {“Right Key OK “,
“Up Key OK “,
“Down Key OK “,
“Left Key OK “,
“Select Key OK” };
int adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;void setup() {
pinMode(13, OUTPUT); //we’ll use the debug LED to output a heartbeatlcd.init();
//optionally, now set up our application-specific display settings, overriding whatever the lcd did in lcd.init()
//lcd.commandWrite(0x0F);//cursor on, display on, blink on. (nasty!)
lcd.clear();
lcd.printIn(“KEYPAD testing… pressing”);}
void loop() {
adc_key_in = analogRead(0); // read the value from the sensor
digitalWrite(13, HIGH);
key = get_key(adc_key_in); // convert into key press
if (key != oldkey){ // if keypress is detected
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey){
oldkey = key;
if (key >=0){
lcd.cursorTo(2, 0); //line=2, x=0
lcd.printIn(msgs[key]);
}
}
}
//delay(1000);
digitalWrite(13, LOW);
}// Convert ADC value to key number
int get_key(unsigned int input){
int k;
for (k = 0; k < NUM_KEYS; k++){ if (input < adc_key_val[k]) { return k; } } if (k >= NUM_KEYS)
k = -1; // No valid key pressed
return k;
}[/CODE]
Ich habe den LCD Kram jetzt nicht raus geschmissen.
Dafür ist der Code Komplett.
Weiter Infos zum LCD Shield gibt es hire.
http://www.dfrobot.com/index.php?route=product/product&product_id=51
Jetzt Könnte man das ganze noch weiter auf hübschen,
in dem man noch ein paar Taster und das LCD dazunimmt.
Dann könnte man am Display die Zeiten für die einzelnen
Schaltstufen vom Drehschalter ändern. Das Ganze schön in einer
Edelstahl Platte oder Holz Platte eingebaut, sieht das richtig Chic aus.
Gruß Ingo -
7. Januar 2012 um 13:01 Uhr #910462BigPlanetTeilnehmer
Klasse Ingo
an den Schalter und so habe ich auch schon gedacht.
Das mit dem Hin und Her im Schrank – glaube ich löst das ganze
ich habe eben nur an das naheliegende NICHT gedacht – nämlich die
Bewegung. -:)Ich verfolge das mal weiter und melde mich mit meinen “Forschungsergebnissen”.
Das Forum ist toll – danke an alle.
Grüße
BigPlanet -
13. Januar 2012 um 12:01 Uhr #911192BigPlanetTeilnehmer
Siehe unten. Da hat die Software /Forum) doch wirklich 2 mal meinen Beitrag einstellt.Bigplanet
-
13. Januar 2012 um 12:01 Uhr #911196BigPlanetTeilnehmer
Hallo Leute
habe wieder ein bisserl Zeit für meinen PIR-Sensor. Nach einigen hinundher (leidiges Tasterproblem) habe ich mich entschlossen
das Poti als Erkennung für Dauerlicht zu
“benutzen”. Ideen : drehe ich das Poti auf 1023 (fürn Arduino) überspringe ich das
ganze Sketch und frage nur immer das Poti ab.Änder sich nix am Poti ist weiter Dauerlicht. Wenn sich was ändert springe ich die die
loop zurück und benutze wieder die Pausenfunktion nach Stand des Potis.
So kann ich regeln von 1 bis 8 Minuten und Dauerlicht.!Ich warte noch auf einige Teile dann bau ich das ganze mit einenm Standalone ATMega
auf eine Platine. Sketch und Fotos folgen. Bis dann.
Bigplanet -
25. Februar 2012 um 21:02 Uhr #914974spokekillerTeilnehmer
Hallo liebe Bastelfans,ich möchte diesen Post nutzen, zu erklären, warum es hier meinerseits so still und leise geworden ist.Leider war aufgrund einiger größerer Probleme ein sehr langer Klinikaufenthalt notwendig, den ich nach fast 80(!) durchgehenden Tagen demnächst abschließe.Wie man sich vorstellen kann ist für ein knappes viertel Jahr mein Privatleben völlig an mir vorbeigelaufen. Dazu gesellt sich die logische Folge, dass auch mein Beruf darunter gelitten hat.Zu allem Übel kommt dann auch noch dazu, dass meine Krankheit noch Nachbehandlung bedarf.Da ich also die nächsten Wochen weiterhin mehr mit der Realität zu kämpfen haben werde, als mir lieb sein dürfte, habe ich beschlossen in dieser Zeit nichts Neues zu posten. Einfach aus dem Grund, weil ich es nicht mag, nur halbe Sachen zu bringen und weil es Euch gegenüber unfair wäre.Ich bitte um Euer Verständnis, dass es also mit Postings nichts wird. Ihr könnt bei Fragen auch per PM auf mich zukommen. Ich möchte versuchen, zumindest diese prompt zu beantworten.Ich hoffe, dass sich vieles bis Mitte des Jahres vollständig stabilisiert hat. Bei dem Einen und Anderen werde ich mich die Tage noch per PM melden.Ich bedanke mich für Euer Verständnis.Grüße,Spoke
-
26. Februar 2012 um 14:02 Uhr #915005borsti67Teilnehmer
weia, dann auch weiterhin gute Besserung!
-
1. April 2012 um 10:04 Uhr #916621spokekillerTeilnehmer
Hallo liebe arduino / AVR Fans,aktuell arbeite ich an einem Tutorial über den Anschluß von Hitachi-LCDs an den Arduino via I²C. Der Text ist fast fertig, der Sketch funktioniert und nur ein paar Bilder und Feinschliff fehlen noch.Weiterhin habe ich es geschafft, einen ATTiny85 – einen kleineren und preislich günstigen Bruder des ATMega328 – im fabrikfrischen Zustand mittels usbasp auf 8MHz umzu-fusen und dann über die Arduino IDE mit einem Sketch zu “betanken”. Nach einiger Zulage an Grundlagenwissen kann ich auch damit ein neues Tut für Euch erarbeiten. Für Fälle, wo nur einige wenige Funktionen geschaltet werden müssen, sind die Tinys eine gute Alternative. Im Extremfall kann man sie auch auf ihrem interenen Oszilaltor laufen lassen und spart sich das Quarz und die Abblock-Kondensatoren.Wenn heute schlechtes Wetter wäre, würde ich Euch das I²C-LCD Tut schon einstellen, aber es ist hier richtig Kaiserwetter, also werd ich heute mittag wohl ein wenig Modellfliegen gehen?!?!Aber die nächsten Tage habe ich ein wenig Urlaub, und da kann ich Eure Wißbegier sicher ein wenig füttern…Grüße,Euer spoke
-
11. April 2012 um 10:04 Uhr #917239spokekillerTeilnehmer
[SIZE=”3″]Tutorial #10 – wir fummeln mit I2C herum[/SIZE]*** Ab HIER wird mit arduino 1.0 ide gearbeitet ***** edit: einige Korrekturen, Dank an Hallo1001 (das kommt davon, wenn man nicht sauber recherchiert ;))Hallo Leute,ich nehme mir heute die Zeit, ein wenig von einem Ausflug in die I2C Welt zu berichten.Bei Verwendung der Hitachi LCD Displays fallen ja meist einige Pins für die Kontrolle desselbigen weg, die man anderweitig für sein Projekt verwenden könnte. Natürlich gibt es die Möglichkeit, Schieberegister o.ä. zu Pin-Sparzwecken zu benutzen. All das erschien mir zu fummelig und bei meinem n00bigen Einstieg fiel mir auf, dass der Arduino bzw ATMega328/168 auch I2C sprechen kann.Ich kann das sicher nicht besser erklären als die Wikipedia oder die Jungs bei mikrocontroller.net, deshalb verweise ich hinsichtlich der Grundlagen zu I²C darauf. Ein wenig aber will ich hier loswerden, damit Ihr jetzt nicht kreuz und quer durchs Netz eiert. Dabei sind die graden Zahlen immer die Schreibadresse und die ungraden Zahlen die Leseadresse (also Schreibadresse + 1). Die Adresse 0 verwendet man in der Regel nicht. [Danke Jens!]So können an einem Bus bspw eine Dallas-Echtzeituhr hängen, ein 866MHz Funkmodul, ein Arduino und ein Display. Dabei muß jedes Gerät einen I2C Chip haben, welcher nicht nur die Kommunikation erledigt, sondern auch die Adresse des jeweiligen Gerätes über Jumper festlegt. Der Rest ist dann Softwaresache.Nun gibt es bei Pollin einen Bausatz, mit dem man LCDs mit Hitachi Controller um I2C pimpen kann. Basis ist ein PCF 8574P Chip, der das erledigt. Den Bausatz habe ich mir besorgt und zusammengefummelt. Ich bin eigentlich durch Zufall darüber gestolpert. Der Bausatz ist unter Artikel-# 810145 zu finden http://www.pollin.de/shop/dt/NDU4OTgxOTk-/Bausaetze_Module/Bausaetze/LCD_I2C_Modul.html … achja, und er ist öfters mal für 1-2 Monate “ausverkauft”.Exkurs zum Bausatz – was zum Schmunzeln & Hintergründe[SPOILER]Der Bausatz, von dem ich im Überschwang gleich zwei Stück bestellte, ist grundsätzlich ordentlich zusammengestellt. Leider gibt es erhebliche Ärgernisse. Bei einem meiner Bausätze war ein falscher Trimmer mitgeliefert worden. Besonders ärgerlich, da ich wegen eines einzelnen Trimmers, den ich nicht habe meist einen Riesen-Aufwand veranstalten muß um ihn zu besorgen (wer zahlt schon für 30 cent Bauteile gerne 6€ Versandkosten?).Weiterhin sind die Bohrungen für die Trimmer viel zu klein. Aufbohren ist nicht, weil die Lötpads um die Löcher auch sehr klein sind. Also feilt man zuletzt die Trimmerbeine schmaler. Fummelei und absolut unnötig, denn es ist reichlich Platz für anständige Lötflächen auf der Platine gegeben.Außerdem muß man aufpassen, welchen Widerstand man als R1 einsetzt, denn sonst kann es sein, dass das Backlight des LCD nicht seine nötige Spannung abbekommt. Ergo, keine Beleuchtung bei mir. Für Laien noch dazu frustierend, daß das Backlight über den I2C Controller gesteuert wird (also per Software ein/aus-geschaltet werden muß). Von alledem leider keine Erwähnung im beiliegenden Aufbauplan.Außerdem konnte ich manche Bauteile nur sehr schwer verlöten, weil das Zinn von den Pads regelrecht abperlte und ich trotz mehrfachem Nachlöten nur murksige Lötstellen hingebracht habe. Lötlaien sollten sich das von jemandem machen lassen. Das ist übrigens nicht der erste Pollinbausatz bei dem ich diese Erfahrung gemacht habe. Eventuell hilft eine vorherige Reinigung mit Spiritus? Im Netz fand ich Infos, dass ich damit nicht alleine dastehe….Außerdem, und das ist der Gipfel, sind die aufgedruckten Adressen für die Jumper des I2C Controllers schlicht falsch — letzteres wird dem Anfänger erheblich graue Haare bringen und u.U. viele Stunden bei der Fehlersuche bescheren. Nicht jeder kommt auf die Idee, daß der Fehler nicht im eigenen Programm steckt. [Edit: das mag daran liegen, daß der PCF auch in einer “~A”-Fassung mit anderen Adressen hergestellt wird und der Bausatz auch mit diesem einmal ausgeliefert wurde]Und das wirklich Letzte ist, daß Pollin diesen Bausatz schon seit Jahren immer wieder in dieser Weise neu auflegen läßt! Kommt dann noch dazu, daß die Bohrungen für die Schrauben nicht M2,5 oder M3 sind sondern so ungefähr M2,8 😉 — aber die waren schnell aufgebohrt. :devil:Und weil ich grad am Meckern bin, sind in der Platine zwei fette 10k Pullups drin, die einem den I2C Bus zunageln. Das ist an sich ein zu großer Wert (4,7k hättens auch getan) und gehört auch in der Doku erwähnt, denn am I2C Bus darf immer nur ein Gerät Pullups haben. [-XWas ich leider bei meinen beiden LC Displays (1 von Pollin, 1 von Watterott) auch immer wieder feststelle ist, daß die in einer Vielzahl von Demo-Aufbauten verwendeten 10k Trimmer für den Kontrast viel zu groß sind. Erst auf die letzten paar Grad regelt man tatsächlich. Danach ist alles dunkel, will sagen der Kontrast 0. [strike]Wer das vorab schon weiß sollte statt 10k mal mit 1k/5k experimentieren und dann lieber die verlöten. Ich werde das u.U. nochmal nachholen. Laut LCD-Datenblatt ist mein Regelbereich nur 0,75V “breit”.[/strike] Naja und hier hatte ich auch einen Gedankenfehler. Durch die Auswahl eines kleineren Trimmers wird mein Regelbereich nicht gröber. Um diesen Effekt zu erreichen müßte man beispielsweise einen 4,7kOhm Widerstand und einen 1kOhm Trimmer in Reihe schalten. Der Aufwand lohnt aber meist nicht. Einmal eingestellt reicht ja. Meist faßt man das nicht mehrmals an [Auch hier Danke Jens].Nichtsdestotrotz hab ich diesen Mist dann die Tage endlich mal fertiggestellt. So – genug gemeckert (zurecht wie ich meine!).Der Bausatz hat dabei aber den Vorzug, dass er mit einer ansonsten anständigen Platine kommt, die auch für LCDs mit 2*8 Pinout geeignet ist. Nicht vergessen, die passenden Buchsen müssen separat bestellt werden!Ende Exkurs zum Bausatz[/SPOILER]Unser Demo-Aufbau Wir identifizieren am I2C Modul die Pins für die Spannungsversorgung (+5V) und die Datenleitung SDA sowie die Clock SCL. Wir stecken dann:Arduino Analog #5 -> SCLArduino Analog #4 -> SDADamit alles richtig arbeitet müssen wir zumindest auch die beiden GND/Masse-Schienen miteinander verbinden. Will sagen, vom Arduino und dem Displaycontroller. SDA und SCL nutzen diese als Basis.Für die Software gebe ich Euch einen kleinen Beispielsketch, der sehr schnell zeigt, wie alles funktioniert. Zur Ansteuerung verwendet man eine zusätzliche Lib, die unter dem Namen “LCDi2c” auf der Arduino Seite gefunden werden kann. Sie ist wohl alles andere als “perfekt”. Aus Zeitmangel und ein wenig Unlust habe ich zwar mal reingeschaut, aber dann doch die Finger weg gelassen.Die Lib findet Ihr hier: http://arduino.cc/playground/Code/LCDi2cHinweise zur fehlerhaften Implementierung des Pollin Bausatzes findet Ihr hier: http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/notes_for_pollin_interface.txt (ist auch unten mit angehängt!)Bei mir funktionieren die Display-Backlight Befehle nicht (s.o.) und es sind auch noch keine Sonderzeichen und Umlaute unterstützt. Wer dennoch Umlaute schickt, bekommt meist japanische Katakana Zeichen serviert, was darin liegt, dass der Pointer wohl in den Bereich der japanischen Zeichensätze im Displaycontroller verrutscht.Das alles läßt sich mit ein wenig vertretbarem Aufwand und konzentriertem Studium der Datenblätter des PCF und des LCD richten. :roll:Wer also unbedingt experimentieren will, der kann sich hier austoben.Allerdings darf ich auch darauf hinweisen, daß unser Elektronikguru Hallo1001 auf seiner Seite bereits ebenfalls ein I2C-fähiges Display entworfen hat. Dieses basiert auf einem kleinen Atmel Controller statt auf einem PCF. Ihr findet das hier: http://www.pcfilter.de/AVR-Ecke/Page28.htmlBei Hallo1001s Bausatz handelt es sich um ein wesentlich durchdachteres Konzept, das viele der o.a. Schwächen nicht aufweist.Ich habe damit einen Brocken in meinem meterlangen Backlog mal vom Tisch. Ob ich damit nochmal arbiten werde hängt von vielen Faktoren ab, momentan halte ich es aber nicht für wahrscheinlich. ;)Weitere Bausatzbilder für Größenvorstellung:[SPOILER][/SPOILER]Ich hoffe Ich konnte Euch dennoch damit ein wenig unterhalten. Ich wende mich dann mal wieder ernsteren Tuts zu… :)Grüße,Euer Spokekiller
-
13. April 2012 um 10:04 Uhr #917425spokekillerTeilnehmer
[SIZE=”3″]Tutorial #11 – Interrupts mal ganz einfach[/SIZE]VorgeplänkelDiesmal gehen wir – auf eine sehr simple Art und Weise – mal an das Thema mit den Interrupts heran. Wenn man das Thema [strike]gurgelt[/strike] googlet, dann bekommt man eine Vielzahl an Resultaten, wovon die meisten den durchschnittlichen Anfänger doch verwirren dürften. :roll:Auch deshalb habe ich persönlich das lange vor mir hergeschoben, obwohl ich davon überzeugt war, daß man sehr Nützliches damit anstellen könne.HintergrundGehen wir von Folgendem aus: unser Versuchsaufbau besteht aus einem Arduino, der einen Taster abfragt und daraufhin irgendetwas machen soll. Der Taster startet oder stoppt dabei eine Aktion bzw. Subroutine.Da unser Hauptprogramm die void loop() ja ständig “loopt” also in einer Schleife immer wieder von vorne beginnt, würde eine normale Abfrage des Tasters und das Warten auf das Resultat unser Programm erheblich, wenn nicht sogar völlig, ausbremsen. <<< Zugegeben, es handelt sich hier nur um einige Taktzyklen. Je nachdem was wir sonst noch machen, dürfte das im Amateurbereich kaum ins Gewicht fallen.Anders gesagt: in der Zeit in der wir auf einen Abfragewert warteten, passierte nichts anderes mehr :-k . Erst wenn das Resultat da wäre, ginge es weiter. Damit eben das nicht passiert, benutzt man Interrupts. Ältere unter uns kennen diese zur Genüge aus der Zeit des “nicht plug and play”, als man an vielen ISA-Steckkarten noch die Adressen für belegte Interrupts entweder per Jumper oder Software setzen mußte.Diese Interrupts machen genau das, was sich dem Namen nach vermuten läßt: sie unterbrechen das laufende Programm und bewirken eine bestimmte Reaktion. Interrupts werden also bevorzugt da eingesetzt, wo die Reaktion auf ein Ereignis zeitkritisch ist.TechnikDie Arduino Unos mit ihren ATMega 168/328 besitzen zwei solcher Interrupts, die im Falle meines beispielhaften Unos auf die physischen Pins 2 und 3 (Digital OUT) gemapped sind. Besitzer eines Arduino Mega mit dem ATMega 644 dürfen sich freuen, denn sie haben sogar 4 (Digital Out 2,3,4,5) davon.Soweit die Theorie. Was müßten wir also nun machen, um einen davon zu nutzen? Das wird gar nicht so schwierig sein. Zunächst bauen wir eine typische Abfrage-Anordnung mit einem Taster (wahlweise ein loses Stück Kabel) auf dem Steckbrett auf.[spoiler][/spoiler]Der Auswertungsteil läuft auf den Digitalpin #2, denn auf diesem läuft physisch unser Interrupt #0 auf. Was wir nun noch tun, ist ein sehr überschaubares Programm schreiben (siehe unten), welches die tatsächliche Zuordnung zwischen Interrupt und Reaktion erledigt.Dazu nutzen wir die Funktion attachInterrupt(), zu der es auch ein Pendant, nämlich detachInterrupt() gibt. Dem Englischen mächtig erkennen wir, daß erstgenannte Funktion dazu da sein muß, den Interrupt an irgendwas zu “befestigen”. Genau das tut sie auch:attachInterrupt(0, blink, CHANGE); –> heißt im Klartext: Interrupt #0 (physisch Pin2!) löst die Routine “blink” aus, wenn sich sein Zustand in irgendeiner Weise ändert (CHANGE)Es gibt dabei insgesamt vier Parameter für den Modus, nämlich
- CHANGE = löst aus, wenn Pegel sich beliebig verändert
- LOW = löst aus, wenn Pegel auf LOW ist (0 Volt)
- RISING = löst aus, wenn der Pegel von LOW auf HIGH (0->+5V) geht
- FALLING = analog, also wenn der Pegel fällt
[strike]Aha! Also könnte man auch einen Sensor überwachen, und immer Alarm schlagen, wenn eine Temperatur FÄLLT, aber nicht, wenn sie STEIGT. Ja, das ginge wohl. Wo das Sinn machen würde bleibt zunächst fraglich. Es gibt aber sicher Anwendungsbereiche dafür. :D[/strike]Im Nachhinein … an sich ist das Quatsch, denn es gäbe für so eine Anwendung keine Sensoren. Man könnte aber sehr wohl die Drehzahl eines Lüfters dementsprechend überwachen, und bei fallendem Wert Alarm geben.Zurück zu unserem Aufbau. Unser kleiner “sketch” (Programm) verbindet also Interrupt #0 = Digi Pin #2 mit der Routine Blink und löst aus, FALLS sich der Pegel am Pin #2 physisch ändert.[spoiler][code]//Interrupt null ist auf digital pin 2, Int1 auf digi 3//ändert sich der Pegel am Pin dann geht die onboard LED aus oder anint pin = 13;volatile int state = LOW;void setup(){ pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE);}void loop(){ digitalWrite(pin, state);}void blink(){ state = !state;}[/code][/spoiler]Na dann, Programm geflashed und ausprobiert. Wenn immer Ihr den Taster betätigt sollte sich die kleine Status-LED, die mit Pin 13 verbunden ist, verändern. Dabei kommt es durchaus vor, daß der Taster “prellt”, d.h. bei einem gefühlten Druck tatsächlich mehrere Impulse ausgelöst werden. Deshalb nicht beunruhigt sein, wenn sich das nicht eins-zu-eins abspielt.Das Entprellen von Tastern kann sehr aufwendig sein und kann in Hard- oder Software erfolgen. Das lassen wir heute aber mal raus.Wichtig ist es, zu verstehen, daß in der Zeit, in der Ihr nichts tut, die Loop einfach weiterläuft. Das beweise ich Euch auch ganz leicht. Wir ändern den Code ein wenig ab, siehe unten.[spoiler][code]//Interrupt null ist auf digital pin 2, Int1 auf digi 3//ändert sich der Pegel am Pin dann geht die onboard LED aus oder anint pin = 13;volatile int state = LOW;int Timer = 0;void setup(){ // starte serielle Schnittstelle Serial.begin(9600); //konfiguriere Ausgabepin und Interrupt pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE);}void loop(){ Serial.print(Timer); digitalWrite(pin, state); Timer++;}void blink(){ state = !state;}[/code][/spoiler]Aktiviert nun zur Laufzeit Euren “Serial Monitor” in der IDE und laßt Euch den veränderten Wert für den “Timer” ausgeben. Während nun also der Interrupt auf Lauer liegt, sehen wir, daß der “Timer” immer weiter hochzählt, was er aber nur tut, wenn die Loop auch weiterläuft. Also stimmt es, der Interrupt ermöglicht das Warten auf eine Eingabe ohne Anhalten des Programmes!Der “Timer” wird irgendwann überlaufen, aber das ist in diesem Fall ja nicht schlimm, er dient ja nur dem Nachweis.Mehr zum CodeNun noch eine Erklärung zur Art und Weise, wie wir die LED Ausgabe angegangen sind. Wie Ihr sehen könnt, schreiben wir in der loop nur ein schlichtes “digitalWrite(pin, state);” ohne eigentlich anzugeben, was passieren soll, oder?Nicht ganz! Denn es passiert ja folgendes: wenn unser Interrupt auslöst, dann rufen wir blink() auf und in dieser “invertieren” wir den Zustand von “state”, d.h. wenn er low war, wird er high und umgekehrt. Den Ausgangszustand legten wir im Setupbereich fest: “volatile int state = LOW;”Dies ist eine sehr elegante Möglichkeit festzulegen, mit welchem Ausgangszustand wir anfangen wollen. Der Bezeichner “volatile” sagt dem Compiler dabei, daß sich diese Variable ohne Einfluß des eigentlichen Codelaufes verändern kann. Das muß man sich aber nicht unbedingt merken.Weitere Gedanken zum ThemaWir werden Interrupts demnächst in einer Kombination mehrerer Tutorials benutzen. Dort wird Sie Verwendung in einer Temperaturüberwachung finden, die wiederum einen Lüfter ansprechen läßt. Also das, was hier wohl viele mittlerweile schon selbst implementiert haben dürften. Phil68 hat das jedenfalls schon getan und dabei noch einiges an Zusatzarbeit geleistet (Not-AUS etc). :respekt:Interrupts können auch an Timer, in diesem Fall ein echter, gebunden werden und man kann Aktionen lostreten, wenn sich dieser verändert. Dies dürfte auch noch einmal ein interessantes Tutorial ergeben. :banana:Oben gezeigter Code basiert übrigens absichtlich auf dem Referenzbeispiel von arduino.cc, weil ich denke daß er ist dort für Anfänger nicht ausreichend erläutert ist. Tut nicht?Falls es nicht funktioniert, prüft bitte nach, ob Ihr Euren Abfrage-Pin wirklich auf dem Digital #2 habt. Das ist ein gern gemachter Fehler (hust, ist mir auch passiert, weil man pausenlos an Int 0 denkt…). :)Ansonsten das Üblich… Tippfehler etc. pp.. Wenn gar nichts mehr geht, eine Nacht drüber schlafen und ein Hilfe-Post hier.Vielen Dank für Eure Aufmerksamkeit. Ich hoffe es hat sich der Fehlerteufel diesmal fern gehalten. ;)Grüße, Euer spokeEdit: Ergänzungen in Rot.
Ein Hinweis noch von Hallo1001, der für die Fortgeschrittenen Leser auch nicht uninteressant sein dürfte said:
Für diese [obige] Tasterabfrage währe FALLING die optimale Wahl. Wenn Du hier nämlich den Taster nach Masse verdrahtest, dann brauchst Du den Widerstand nämlich nicht. Der AVR besitzt interne Pull-Up Widerstände, den musst Du nur aktivieren – fertig… Der Interrupt löst dann also nur aus wenn der Port nach Masse geschaltet wird.Ich weiß allerdings nicht, ob die in der Arduino-Welt per default aktiv sind, ich glaube dass ich widersprüchliche Angaben dazu gefunden habe. Da aber in vielen Schalt-Beispielen von angesehenen Seiten wie bspw ladyada immer vorgegangen wird wie in diesem Fall, gehe ich davon aus, daß die internen Pullups nicht aktiviert sind….(?) Ich gestehe, ich war jetzt auch zu faul zum Nachsehen.Edit #2: Mir ist eben beim Rumbasteln doch noch ein etwas plastischeres Beispiel aus meinem eigenen Repertoire eingefallen. Letztes Jahr hatte ich ganz zu Anfang meiner Arduino Pfriemelei eine Sirene für meinen kleinen Neffen gebaut, die 3 verschiedene Muster zur Auswahl über einen Schalter hatte. Leider war es so, dass manche Muster recht lange (5~10s) waren, die man durchgehend warten mußte, bis zur nächsten Abfrage des Wahlschalters. Hätte ich diesen Wahlschalter mit einem Interrupt abgefragt dann hätte ich auch mitten innerhalb eines Musters zum nächsten wechseln können. So. Jetzt aber. 😀
-
17. April 2012 um 14:04 Uhr #917706phil68Teilnehmer
Hi Micha :)Schön, dass es hier weiter geht! Ich bin ein eifriger Leser und Fan deiner Tutorials! Nach dem Pentathlon werde ich wieder etwas mehr Zeit haben und hier mal mein Projekt vorstellen. Ich hoffe, dass mir dann auch die Profis noch sagen können, was an meinem Aufbau und Sketch noch zu verbessern ist.
Ich weiß allerdings nicht, ob die in der Arduino-Welt per default aktiv sind, ich glaube dass ich widersprüchliche Angaben dazu gefunden habe.
…sind sie nicht 😉 Grüße Dirk
-
17. April 2012 um 15:04 Uhr #917712spokekillerTeilnehmer
Danke Dirk!Wenn Du Deine Version der Steuerung vorstellst, dann halte ich mich mit der Basisversion zurück und versuche für das nächste Mal etwas Anderes zu finden. Es gibt ja so unglaublich vieles.Vielleicht das Programm, daß ich für Renovatio entworfen habe, um seine Rechner im lokalen Netz über URL aufzuwecken?Mir wird schon was einfallen. 😉
-
19. April 2012 um 8:04 Uhr #917793spokekillerTeilnehmer
Hallo zusammen,bin eben beim Studium des blogs von adafruit auf einen Artikel bei Makezine gestoßen. In diesem geht es um grundsätzliche Probleme mit Produktfälschungen und Markennamenmißbrauchs, sowie im Speziellen im Umfeld des Arduino.Externer Link (Makezine Blog) – englisch
-
19. April 2012 um 9:04 Uhr #917794ThaRippaAdministrator
Ich hab meinen ja auch von ebay und er roch stark nach China…aber er funktioniert. Elektronik in dieser “Gewichtsklasse” kopieren können die Chinesen einfach. Und billige Chinaschnäppchen sind “leider Geil”. 😉
-
19. April 2012 um 11:04 Uhr #917796sneaselTeilnehmer
Hallo,
ich bin seit einigen Wochen in den Club der Arduinobesitzer eingestiegen. Erstmal ein riesen Lob für diesen Thread man findet nicht nur viele Infos sondern diese sind auch sehr gut und verständlich erklärt (Auf vielen Seiten werden die ganzen Grundlagen weggelassen, die für einen blutigen Anfänger wie mich lebenswichtig sind)
:respekt::respekt::respekt:Nun zu meinem ersten Arduinoversuch :banana:
Mein erstes Projekt soll ein Spielzeug für meine Katzen sein 😯Ursprünglich wollte ich über den Arduino einen kleinen Elektromotor steuern der über einen Hebelarm eine Maus an einem Seil durch den Raum schleudert. Die Motorsteuerung habe ich mit einem L293D realisiert.
Das Spielzeug soll wie eine normale Lampe an der Decke hängen.
Im Laufe der Zeit sind mir immer mehr Ideen in den Sinn gekommen die ich jetzt gerne umsetzten würde.
Einige wie die Erkennung der Katzen per Infrarot-Sensor habe ich schon in meine Testumgebung (Breadboard) eingebaut.
Andere bereiten mir aber noch Kopfzerbrechen 🙁Nummer 1: Die Stromversorgung
Grundlegend wollte ich die Stromversorgung über einen Akku sichern.
Dieser wird vermutlich 9,6V mit 1500mAh (Conrad) besitzen.
Der Akku soll über die Stromversorgung der Lampe aufgeladen werden.
D.h. ich brauche ein Netzteil welches 230V/16A in 9,6V mit ca 150-200mA (Man sollte NiMh-Akkus mit C/10 laden) wandeln kann.
http://www.voelkner.de/products/68312/Steckerladegeraet-fuer-8-Zellen-und-9V-Block.html (Den wollt ich auseinanderbasteln)
Hier sollte man unterscheiden ob das Netzteil 150-200mA liefern kann oder es sich selber regelt und nicht mehr abgibt.
(Hab ewig gebraucht bis ich sowas herausgefunden hab).
Nachdem ich die richtige Volt/Ampere-Zahl bekommen habe will ich noch einen Laderegler bauen. Die einfachste Lösung wird wohl eine IC Uln2004 A Dip (ist pro Kanal ein Transistor und ne Diode drin oder so ähnlich) mit einem Relai dran sein. Durch diesen kann ich dann den Stromfluss zum Akku stoppen wenn dieser voll geladen ist.
Nun zum Akkufüllstand. Diesen will ich über diese Wunderschöne anzeige Visualisieren: http://www.tinkersoup.de/product_info.php?products_id=428&osCsid=df794e8c6b8f9501ce070d09f7abd41aMeine erste Frage: Wie kann ich den Füllstand eines NiMh-Akkus auslesen (Der Spannungsverlauf ist ja überhaupt nicht linear, deshalb weiß ich nicht obs mit Spannungsteilung funktioniert), bzw. sollte ich einen anderen Akku verwenden? (Lipos sollen schwer zu laden sein und von Bleiakkus wurde mir auch abgeraten)?
Zum Steuern des Relais kann man diese -Delta Methode anwenden (Wenn der Akku voll geladen ist fällt die Spannung beim Weiterladen).Meine zweite Frage: Da ein Arduino nicht gerade günstig ist wollte ich fragen ob ich diesen durch einen Atmega328 ersetzen kann, den ich über den Arduino Programmiere.
Ich weiß das dieses Unterfangen nicht so einfach geht, jedoch wollte ich mal nachfragen ob man diesen Atmega einfach auf den Arduino setzten kann, das Programm uploaden kann und dieser dann wie ein Arduino funktioniert?
http://www.watterott.com/de/ATmega328-Arduino-BootloaderSo das wärs erstmal von meinem ersten Projekt.
MfG Matthias
-
19. April 2012 um 13:04 Uhr #917798spokekillerTeilnehmer
sneasel;486669 said:
Meine zweite Frage: Da ein Arduino nicht gerade günstig ist wollte ich fragen ob ich diesen durch einen Atmega328 ersetzen kann, den ich über den Arduino Programmiere.Ich weiß das dieses Unterfangen nicht so einfach geht, jedoch wollte ich mal nachfragen ob man diesen Atmega einfach auf den Arduino setzten kann, das Programm uploaden kann und dieser dann wie ein Arduino funktioniert?http://www.watterott.com/de/ATmega328-Arduino-BootloaderSo das wärs erstmal von meinem ersten Projekt.MfG MatthiasHallo Matthias,an dieser Stelle nur eine ganz schnelle Antwort auf die zweite Frage: Ja, das geht. Du kannst den Chip von Watterot nehmen, oder aber auch einen “blanken” ATMega328.Sofern Du einen mit bootloader hast, wechselst du einfach die Chips auf Deinem Uno, flashst den Code und nimmst ihn raus. Danach kannst du ihn gemäß den vielen “Breadboard-Arduinos” verbauen, also im Prinzip nur mit extra Quartz+Kondensatoren und dem 10k Widerstand an Reset. Damit können wir auch helfen.Nimmst Du einen ohne Bootloader ist das auch nicht schlimm, allerdings solltest du dann einen Programmer haben oder eben dann mit dem Arduino als ISP flashen. Es gibt viel pro+contra und vor allem steht dabei die Frage “willst Du den Mehraufwand betreiben” im Raum.Der Einfachheit halber bestell Dir einen mit Bootloader… Grundsätzlich ist ein einfacher Arduino-Klon schnell aufgebaut, siehe Phil68s Prototypen. Dabei ist ein Anreiz, daß man die 5V Spannungsregler und die teuren USB-Protokollchips (bei neueren Versionen kein FTDI mehr sondern ein kleiner ATMega8U2) benötigt.Und da noch ein Hinweis… willst du mit 5V laufen lassen? Wäre besser, dann sparst Du den Leistungsverlust am Längsregler (LM7805) und kannst auch andere Akkus nehmen.Zum Rest Deiner Fragen kommen sicher noch andere Antworten, bzw benötige ich etwas mehr Zeit. Generell ist die Abfrage der “Kapazität” glaube ich nicht möglich.Und noch eine Sache mit reingeworfen, die LiPos würde ich meiden, denn dafür braucht es komplexe Lader und die Dinger sind selbst dann noch extrem feuergefährlich. Im Bekanntenkreis hat es einem Modellflieger dadurch den Werkzeugschuppen abgebrannt. Ohne Witz.Achja, und ich fühle mich geschmeichelt wegen Deines Lobs, herzlichen Dank. \D/Gruß,MichaEDIT:Beim nochmaligen Lesen: mal ehrlich…. wenn du ohnehin so weit gehen würdest einen Lader mit zu integrieren, dann nimm dir doch einfach von vorneherein ein kompaktes 5V/2A Netzteil (oder kleiner, kommt auf die Motoren an) und hänge das mit an die Lampe…. Der Aufwand mit dem Lader zerlegen ist ja irre… Außerdem muß dann noch eine Akkuweiche bzw ein USV-artiger Mechanismus mit rein, denn es macht doch keinen Sinn den Akku während des gleichzeitgen Abzapfens von Leistung noch zu laden, oder?Außerdem: Schaltungen wie diese zehren den Akku innerhalb eines Tages wahrscheinlich ohnehin aus. Also wäre das kleine Netzteil effizienter, anstelle dauerndem Laden/Entladen des Akkus, was ja nicht ohne Verluste abgeht.Achso, jetzt fällt mir grade ein, die Lampe ist ja nicht dauernd eingeschaltet…. Mist. Hehe… naja, das wird noch lustig werden
-
19. April 2012 um 14:04 Uhr #917800sneaselTeilnehmer
Hallo,
schonmal Danke für die schnelle Antwort.
Das Laden des Akkus im Betrieb müsste funktionieren (Aus verschiedenen Foren zusammen gegoogelt :D). Die Spannung des Ladegeräts muss nur für den Verbraucher OK sein.
Bei dem ladegerät wollte ich nur das Gehäuse zerschlagen und an die jeweiligen Anschlüsse für Steckdose und Verbraucher kabel löten bzw stecken. (Vll Löte ich sie auch von außen an)
Das Katzenspielzeug soll auch nur ca 5min pro Stunde laufen. Wenn es einmal durch den Infrarotsensor aktiviert wurde soll es nach ca.5 min Betrieb 55min gesperrt werden.
Wirklich schlimm. Umso weiter man mit der Idee kommt desto mehr Probleme werden sichtbar 😮
-
19. April 2012 um 14:04 Uhr #917803spokekillerTeilnehmer
sneasel;486674 said:
Hallo,schonmal Danke für die schnelle Antwort.
Das Laden des Akkus im Betrieb müsste funktionieren (Aus verschiedenen Foren zusammen gegoogelt :D). Die Spannung des Ladegeräts muss nur für den Verbraucher OK sein.
Bei dem ladegerät wollte ich nur das Gehäuse zerschlagen und an die jeweiligen Anschlüsse für Steckdose und Verbraucher kabel löten bzw stecken. (Vll Löte ich sie auch von außen an)
Ich nehme an, das hier http://www.computerbase.de/forum/showthread.php?t=1049247
bist du, ne?Also ganz so einfach mit dem Zerschlagen und zusammenfummeln dürfte es dann doch nicht sein. Sieh es mal so: wenn Dein Lader an dem Akkupack hängt und parallel dazu Deine Schaltung, die dann wiederum Strom vom Akku zieht, dann hast Du ja auch in gewissem Rahmen einen Fluß, der sich so auswirken könnte, daß Dein Lader gleichzeitig ne Stromquelle fü die Schaltung ist …. sicher, geladen würde nur sobald die Lampe angeschaltet ist, aber… naja….
Wart mal noch ne Nacht, ich bin sicher der Hallo1001 oder Phil haben da auch einiges dazu zu sagen.
sneasel said:
Wirklich schlimm. Umso weiter man mit der Idee kommt desto mehr Probleme werden sichtbar 😮Nicht die Flinte ins Korn werfen. Mir gehts schon die ganze Zeit so. Ich hab nie eine Ausbildung in diesen Dingen genossen und lese mir fast alles neu an und probiere sehr sehr viel aus. Erfolg nicht immer garantiert.
Manchmal ist es auch so, daß man in so einem Projekt Abstriche machen muß. Wenn Du in Deinem Beispiel alle 4-5 Tage den Akkupack selber laden müßtest, das wäre nicht soooo schlimm, oder? Freut sich dann die Katze eben über die Blinklichter vom Ladegerät 🙂
-
19. April 2012 um 17:04 Uhr #917822phil68Teilnehmer
Hallo Matthias 🙂
Erst mal kurz… von Eigenbau-Ladereglern würde ich die Finger lassen, das kann ordentlich nach hinten losgehen!
Der Arduino selbst benötigt recht wenig Strom und könnte, mit einfachen Akkus, 4 Tage am Stück betrieben werden. das Ganze kann dann noch durch Ausnutzung des Sleep Modus erheblich verlängert werden.Das Katzenspielzeug soll auch nur ca 5min pro Stunde laufen. Wenn es einmal durch den Infrarotsensor aktiviert wurde soll es nach ca.5 min Betrieb 55min gesperrt werden.
Wenn man das bedenkt und einen sparsamen Motor findet, würde ich dir zu einer Akku-Box raten und die Akkus dann im Bedarfsfall(1 x pro Woche) mit einem handelsüblichen Lader aufladen. Evtl. lässt sich das alles(samt Atmega) in einer Box umsetzen, die dann auch noch den Vorteil hat, transportabel und sehr flexibel einsetzbar zu sein.
Bei sparkfun gibt es ein LiPo Power Pack http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=6&products_id=17
oder den USB LiPoly Charger http://www.sparkfun.com/products/10161 das könnte evtl. was für dich sein.
Hier findest du ein Beispiel zur Akku Kapazitätsmessung mit Arduino:
http://www.komputer.de/wordpress/archives/358Denke mal dass Hallo1001 sich auch dazu meldet. Das ist hier definitiv der absolute Spezi 😉
Grüße Dirk
-
19. April 2012 um 18:04 Uhr #917827Hallo1001Teilnehmer
Hallo Matthias!
Wie kann ich den Füllstand eines NiMh-Akkus auslesen…………….
Mit „einfachen Mitteln“ überhaupt nicht. Hier brauchst Du ordentlich Hardware (Bauteile) und das ist für so ein kleines Projekt nicht unbedingt der einfachste Lösungsansatz.
………..sollte ich einen anderen Akku verwenden? (Lipos sollen schwer zu laden sein und von Bleiakkus wurde mir auch abgeraten)?
Als erstes müssen wir einmal klären welche Spannung Du überhaupt brauchst. Mit welcher Spannung arbeitet der Motor? Daraus können wir dann auf den Akkupack schließen.
Solltest Du mit 3,7V auskommen, dann wäre eine einfache Li-Ion-Zelle (Handyakku, der ähnliches) sicherlich die optimale Wahl. Hier könntest Du dann nämlich einen MAX1811 als Laderegler einsetzen und Deine Probleme hätten sich erledigt…
Es ist auch möglich zwei Li-Ion Akkus zusammen zu schließen, dann würdest Du auf gut 7,4V bis 8,4V kommen. Allerdings wird es dann mit dem laden nicht mehr sooooo einfach. Mit einer einstellbaren Strom UND Spannungsquelle lassen sich auch zwei in Reihe geschaltete Li-Ion Akkus problemlos laden. Dummerweise musst Du dann auch genau wissen was Du da machst, anderenfalls brennen Dir die Akkus ab… Beim Li-Ion Akku kannst Du mit dem Arduino problemlos die Akkuspannung messen, liegt sie unter 3,7V (bei zwei Zellen unter 7,4V) dann wird einfach nachgeladen – fertig…Bei NC und NiMh-Akkus sieht es dann schon etwas schlechter aus, den Füllstand zu ermitteln. Aber eigentlich ist der Füllstand auch relativ an zu sehen. Wenn Du mit einer Ladung X den Akku lädst, dann braucht er eine Zeit Y mit Deiner Schaltung bis er wieder leer ist. Wenn der Arduino also arbeitet, brauchst Du nur einen Zähler mitlaufen lassen, quasi als Verbrauchszähler. Ist eine Zeit Y abgelaufen (kannst Du ja experimentell ermitteln), dann schaltest Du einfach ein Ladegerät ein und der Akku wird wieder mit einer Ladung X aufgeladen – fertig… Hier müsstest Du nicht einmal die eigentliche Akkuspannung kennen, wichtig ist nur das der Akku nicht überladen werden kann (aktive Ladeschaltung).
Und zum Schluss noch die Bleiakkus. Also von Bleiakkus würde ich auch die Finger lassen, es gibt aber auch Blei-Gel-Akkus, mit denen kann man sich durchaus anfreunden. Das laden der Bleiakkus ist relativ unproblematisch, hier würde sogar eine in Reihe geschaltete Glühlampe ausreichen (als Strombegrenzer). Liegt die Ladespannung bei der Ladeschlussspannung vom Akku, dann ist es auch nicht möglich den Akku zu überladen. Auch hier wird sich der Füllstand ohne großen Bauteilaufwand nicht 100%-tig bestimmen lassen, aber für „Bastelzwecke“ reicht es alle male aus. Verwendest Du einen 12V Akku und die Spannung singt unter 11V ab, dann kannst Du problemlos bis 14V (bzw. den Angaben aus dem Datenblatt) wieder nachladen – fertig…
LG Jens
-
20. April 2012 um 10:04 Uhr #917873sneaselTeilnehmer
Hallo,der Motor kann mit 4V-14V arbeiten:http://www.conrad.de/ce/ProductDetail.html?hk=WW1&insert=U0&utm_source=zanox&utm_medium=deeplink&utm_content=article&utm_campaign=affiliate&WT.mc_id=affiliate_zanox_produktdaten&productcode=229021&zanpid=1628338496085532672Dann müsste ich noch den Atmega328 versorgen, da muss ich aber selbst erstmal gucken :DMeine einzige Idee um den NiMh-Akkufüllstand zu messen wäre einfach einen Verbraucher anzuschließen und über Spannungsteilung durch den Arduino jede Minute die Spannungswerte ausgeben lassen.Dann könnte man daraus auf den Füllstand Schließen:9,6V = 100%9,59V = 75%9,58V = 50%9,4V = 25%…Bleiakku hört sich für mich noch immer am besten an :DZ.B. http://www.voelkner.de/products/78933/Bleiakku-12V-2-3Ah-Np-Yuasa.htmlIch würde als Ziel schon gerne ein komplett selbstständiges Spielzeug haben d.h. der Akku sollte sich selbstständig laden.(Ich würd auch das Aufladen gerne mit Solarzellen probieren, sind nur en wenig teuer :D)MfG Matthias
-
20. April 2012 um 20:04 Uhr #917906sneaselTeilnehmer
http://www.voelkner.de/products/118825/Doppelzahnrad-Sortiment-M0-5-20tlg..htmlDas soll mein Getriebe werden :DEDIT:Ich hab mal meine Idee zu “Papier” gebracht :DMal ne Frage kann ich das Relai auch durch meine L293d steuern? (Als zweiter “Motor”)
-
20. April 2012 um 20:04 Uhr #917903spokekillerTeilnehmer
sneasel;486757 said:
Hallo,der Motor kann mit 4V-14V arbeiten:
http://www.conrad.de/ce/ProductDetail.html?hk=WW1&insert=U0&utm_source=zanox&utm_medium=deeplink&utm_content=article&utm_campaign=affiliate&WT.mc_id=affiliate_zanox_produktdaten&productcode=229021&zanpid=1628338496085532672
Dann müsste ich noch den Atmega328 versorgen, da muss ich aber selbst erstmal gucken 😀Du kannst durchaus zwei verschiedene Spannungen nutzen. Siehe dazu das Tutorial mit dem TIP-120, welches sich auch auf diverse Motorregler übertragen läßt.
Sei der Akku bspw ein 9.6V, und Du ließest den Motor mit ebenso 9.6V laufen, so könntest Du per LM7805 5V Versorgungsspannung wählen. Dabei verbrätst Du natürlich einiges an Verlust am Regler. Unter dem Aspekt der Sparsamkeit wäre also der Betrieb des Motors mit 5V vorzuziehen.Man kann den 328 “leider” nicht mit Spannungen höher 5.5V betreiben, ohne Risiko für dessen Wohlergehen. Siehe dazu auch das Datenblatt (Abhängigkeit Taktfrequenzen zu Versorgungsspannung).
Davon mal abgesehen ist mir aufgefallen, daß Du für den Motor noch ein Getriebe brauchen wirst, denn seine Lastdrehzahl ist mit über 3000 Upm immer noch zu hoch für Deine Anwendung. Ich weiß nicht, ob Du das schon erwähnt hattest.
-
25. April 2012 um 16:04 Uhr #918224sneaselTeilnehmer
Da ich nach einigen Tagen noch immer keine Antwort auf den Edit meines letztes Posts bekommen habe, vermute ich, dass ihr immer in die aktiven Themen des Forums guckt. :idea:Ich habe mal eine Zeichnung meines Konzepts erstellt.Sind dort noch grobe Fehler vorhanden, bzw. was sollte ich verändern?Kann ich das relai auch über die L293D stuern (Ist ja noch ein Platz für einen zweiten “Motor”)?
-
25. April 2012 um 19:04 Uhr #918236spokekillerTeilnehmer
Hi,ja, ich habs erst bemerkt, daß Du wieder was geschrieben hast, als der neue Post kam.So… ich hab nur schnell schnell drüber geschaut und dabei sind mir folgende Gedanken gekommen.1. Hä? (Scherzle)2. hat die L293 Brücke eingebaute Freilaufdioden? Falls nein, dann würde ich welche an den induktiven Lasten setzen. Man kann nicht vorsichtig genug sein (siehe hier )3. Ich komm mit dem Teil unten nicht ganz klar… damit liest Du die Akkuspannung aus, ja?4. Wieso läuft die Stuerleitung fürs Relais von Pin13 über den Laderegler?Sind ne Menge dumme Fragen und ein langer Arbeitstag. Nicht böse sein, falls was absolut dämliches dabei war… Der Hallo und der Phil sagen sicher auch noch was dazu.Die L293 Brücke kann sicher auch noch das Relais ab. Ansonsten sollte der Spulenstrom eher nicht über 100 mA liegen. Besser wäre es dann entweder wirklich über die Brücke zu schalten, oder einen kleinen Transistor zwischen Relais und Digipin zu bauen. Je nach Spulenstrom sollte da dann ggf ein BC 548A~C reichen.Ich hatte mir erst ein paar besorgt, die nur knapp 100mA Spulenstrom brauchen, die kann man auch direkt schalten, ich machs aber trotzdem nicht. Ich müßte im Datenblatt nochmal schauen, wie die Asugänge bei einzelnen Lasten ausgelegt sind.Achja, und nimm ggf auch einen anderen Pin, denn der 13er hat ja auch noch die kleine LED samt Vorwiderstand dran und die wären ja beide nur im Weg.So, Senf dazugegeben. 😉
-
26. April 2012 um 11:04 Uhr #918276sneaselTeilnehmer
Zu 2: Soweit ich weiß hat die L293D ne Diode drin (für jeden Kanal)http://www.produktinfo.conrad.com/datenblaetter/150000-174999/156134-da-01-en-4_KANAL_TREIBER_IC_L293D_STM.pdfZu 3: Damit wollt ich die Spannung auslesen (hab ich da was falsch gemacht?Zu 4: kapier ich net :D. Die Steuerung des Relais sind doch die beiden mittleren Pins jeweils an der Ober und Unterseite (Aus der Sicht meines Bildes). Damit ist die Steuerung doch einmal mit Pin 12 –> Relaisteuerung –> Relai —> 5V+ verbunden.neue Frage: Mit dem Teil kann ich mir das Relai doch sparen oder?http://www.voelkner.de/products/78918/Bleiakku-Ladegeraet-H-Tronic-AL-300-Pro.htmlMal ne Frage wenn ich einfach an den Stecker für die Steckdose die beiden Kabel von dem Lampenanschluss an der Decke löte, welche Gefahren sind damit verbunden (Montage natürlich mit ausgeschalteter Sicherung ..). Kann da im Betrieb was schlimmes passieren?Mfg Matthias
-
26. April 2012 um 15:04 Uhr #918288spokekillerTeilnehmer
Zu 4. hast Recht, habe daneben-geschaut. Mea culpa.
Mal ne Frage wenn ich einfach an den Stecker für die Steckdose die beiden Kabel von dem Lampenanschluss an der Decke löte, welche Gefahren sind damit verbunden (Montage natürlich mit ausgeschalteter Sicherung ..). Kann da im Betrieb was schlimmes passieren?
Im Ernst jetzt? :DAlso mir hat man beigebracht, daß 220/230V Leitungen nicht gelötet werden, sondern mit Aderendhülsen geklemmt. Alternativ kann man spezielle Klemmen nehmen und spart sich die Aderendhülse.Kann vielleicht einer vom Rest der Truppe noch was dazu sagen? Wir haben doch auch richtige Elektriker hier im Forum.Wegen des Auslesens vom Akku: ich hatte nicht mitgekriegt, daß wir letztlich wieder bei Bleiakkus gelandet sind. Ist jetzt angekommen.
-
26. April 2012 um 16:04 Uhr #918290sneaselTeilnehmer
Ich hab noch immer kein gutes Argument gegen Bleiakkus gesehn.
Pro:
– Man kann den Füllstand anhand der Spannung messen
– GünstigContra:
– Bissl groß und schwer 😀Ob löten oder klemmen ist mir egal 😀 (Werds nach deinem post einfach klemmen :D)
-
26. April 2012 um 16:04 Uhr #918291ThaRippaAdministrator
230V-Adern löten: in Gehäusen, warum nicht? Im Haus/Dosen/Schaltern: Aderendhülsen, zur Not verlötzinnte Aderenden und mit Klemmen klemmen.
-
26. April 2012 um 16:04 Uhr #918292spokekillerTeilnehmer
Ich sag nichts gegen die Bleigelakkus. Ich habs nur überlesen.Löten soll man die nicht, weil sie dann eher zum Brechen neigen, so wurde mir das erklärt. Ich denke aber, wenn man das anständig macht, sodaß die Kapillarwirkung das Lot nicht unter die Isolation zieht ist das unbedenklich. Allerdings war nicht irgendwo der Einwand wegen VDE und so gewesen? Oder hatte ich das in einem anderen Thread gelesen…?Meine Birne, Mensch… kaum biste vierzig ist aus…EDIT: mir war nicht klar, ob er im Gehäuse ist. Im Prinzip isses auch nicht so wild. Ich bin eben bei sowas extrem vorsichtig (jaja, ich weiß…). Im Ernstfall schlägts ihm dann eben bei nem kurzen hoffentlich die Sicherung raus. Kabelbrand wird er wohl nicht gleich haben…. muahahaha
-
26. April 2012 um 17:04 Uhr #918300sneaselTeilnehmer
Also die Kabel von der Lampe werde ich anklemmen. Ist denn sonst alles in Ordnung, bzw. kann ich bestellen und loslegen :D(Bei dem Netzteil kann ich mir das Relay doch sparen oder?
-
26. April 2012 um 17:04 Uhr #918302spokekillerTeilnehmer
sneasel;487213 said:
Ist denn sonst alles in Ordnung, bzw. kann ich bestellen und loslegen :D(Bei dem Netzteil kann ich mir das Relay doch sparen oder?Wegen des Relais… ich dachte das nutzt Du, um den Akku nur zu laden, wenn er unter eine bestimmte Spannung fällt und um sicherzustellen, daß das Ladegerät nihct auch noch den Arduino mit antreibt… oder steh ich jetzt vollends auf’m Schlauch?
-
26. April 2012 um 18:04 Uhr #918306sneaselTeilnehmer
Wenn das ladegerät Arbeitet versorgt es doch automatisch den Arduino mit oder?
Das Relai sollte ja nur verhinder, dass der Akku immer auch wenn er voll ist geladen wird. (Das Netzteil regelt das aber ja schon selbst.) -
26. April 2012 um 20:04 Uhr #918311spokekillerTeilnehmer
sneasel;487219 said:
Wenn das ladegerät Arbeitet versorgt es doch automatisch den Arduino mit oder?
Das Relai sollte ja nur verhinder, dass der Akku immer auch wenn er voll ist geladen wird. (Das Netzteil regelt das aber ja schon selbst.)Alles klar, dann paßt das. Jetzt hab ichs auch verstanden. 😉
-
28. April 2012 um 21:04 Uhr #918400Hallo1001Teilnehmer
Hallo Matthias!
Zu 3: Damit wollt ich die Spannung auslesen (hab ich da was falsch gemacht?
Also ein ordentlicher Schaltplan wäre hier schon einmal gut gewesen, auf der Zeichnung findet man sich nicht wirklich durch. Das auslesen der Akkuspannung muss über einen Spannungsteiler erfolgen, so wie Du das da machst grillst Du den Arduino Port. Und wenn Du nicht sicherstellen kannst das am Arduino Port nicht mehr als 5,0V anliegen, dann kannst Du zusätzlich noch eine Z-Diode mit verbauen…
LG Jens
-
29. April 2012 um 12:04 Uhr #918412sneaselTeilnehmer
Hallo,Das mit der Zener Diode hatte ich schon wieder vergessen :(Aber noch eine Frage:Wenn man bei dir z.B. 8V hinter dem R2 hat. Dann müsste ja die Zener durchlässig werden und den Arduino retten. Bei dir würden aber doch die 8V sowohl zum Arduino als auch durch die Zener fleißen? Kannst du mit vielleicht sagen was ich da falsch verstehe?Ich hätte es so gemacht :banana:(Ich will gerne alles halbwegs verstehen, was ich da zusammen bastel :D)MfG Matthias
-
29. April 2012 um 20:04 Uhr #918440Hallo1001Teilnehmer
Hallo Matthias!
Wenn man bei dir z.B. 8V hinter dem R2 hat. Dann müsste ja die Zener durchlässig werden und den Arduino retten.
Korrekt, die Spannung kann hinter R2 nicht über 5,1V ansteigen (durch die Z-Diode), egal was Du an Akkuspannung da rein jagst (in angemessenen Grenzen natürlich).
Bei dir würden aber doch die 8V sowohl zum Arduino als auch durch die Zener fleißen?
Schau mal hier vorbei:
http://de.wikipedia.org/wiki/Spannungsteiler
Der Spannungsteiler besteht aus zwei Widerständen. Der „Mittelabgriff“ ergibt sich durch die Werte der Widerstände. Mit den Werte die ich Dir hier herausgesucht habe ergibt sich ein Spannungsverhältnis von 3:1. Liegt die Akkuspannung also bei 15,0V, dann beträgt die Spannung beim Arduino Port 5,0V. Um hier auf die besagten 8V zu kommen müsstest Du also einen Akku mit 24V verwenden. Mit der Z-Diode würde das aber auch keine Rolle spielen, die schneidet die Spannung bei 5,1V ab…Bei Deiner neuen Schaltung mit Z-Diode würde immer 5,1V am Arduino Port anliegen, egal ob der Akku voll oder leer ist. Deinem Spannungsteiler fehlt hier der gemeinsame Bezugspunkt (Masse)…
LG Jens
-
1. Mai 2012 um 10:05 Uhr #918522sneaselTeilnehmer
So hier auch meine Zeichnung:
-
1. Mai 2012 um 10:05 Uhr #918521sneaselTeilnehmer
So ganz versteh ich das noch nicht :-k
Ich habe mal in deine Zeichnung meine Berechnungen geschrieben.
Wo liegt da mein Denkfehler? (Ich hätte am Arduino 66% der Spannung anliegen)Schönen ersten Mai wünsche ich :p
Matthias
-
1. Mai 2012 um 11:05 Uhr #918531Hallo1001Teilnehmer
Hallo Matthias!
Ich habe mal in deine Zeichnung meine Berechnungen geschrieben. Wo liegt da mein Denkfehler? (Ich hätte am Arduino 66% der Spannung anliegen)
Deine Berechnungen stimmen schon (bis auf einen kleinen Einheitsfehler), Du interpretierst sie nur falsch. Über den gesamten Spannungsteiler fällt eine Spannung von 13,8V ab (also Akkuspannung). Wären beide Widerstände gleich groß, dann hättest Du in der Mitte also eine Spannung von 6,9V (Akkuspannung / 2). Jeder der beiden Widerstände „verheizt“ also die Spannung in Abhängigkeit seiner Widerstandswerte. Bei Deiner Berechnung „verheizt“ R2 also 9,2V und R1 „verheizt“ 4,6V. Entscheidend ist für Dich das Potential wo Akku und Arduino zusammen angeschlossen sind (also Masse). Es wird hier also die Spannung zwischen Masse und dem Mittelabgriff vom Spannungsteiler gemessen und das ist R1. Die Spannung an R2 wird also vernichtet, sie liegt nicht am Arduino Port an…
Beim berechnen vom Stromverbrauch hat Du Dich mit der Einheit verhauen. Hier werden keine 0,61A (610mA) verbraucht, es sind 0,61mA…
LG Jens
-
2. Mai 2012 um 11:05 Uhr #918581sneaselTeilnehmer
So nächster Versuch :DIst es denn so richtig interpretiert?@spokekiller:Da du immer wieder in deinem Thread schöne Tutorials erstellt hast, wäre es vielleicht ne gute Idee diese in deinem ersten Post (wie in einem Inhaltsverzeichnis) zu verlinken.Oben rechts über jeden Post kannst einfach auf permalink klicken und dann die URL einspeichern. Dann kann man auch nach belieben über Spannungsteiler reden, ohne ein schlechtes Gewissen zu haben, deinen Thread voll zu spammen :PBsp:Einführung: Erste Schritte oder Ardu-Waaas?http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post461908Tutorial #2: Temperaturen messen und einfache Anzeigehttp://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform.html#post462116(Das soll nur ein Vorschlag sein. Nicht das ich dir Arbeit aufbrummen will auf die du keine Lust hast)MfG Matthias
-
6. Mai 2012 um 10:05 Uhr #918869spokekillerTeilnehmer
Danke für den Tip. Ja, mittlerweile ist der Thread viel größer und kreativer geworden, als ich je zu hoffen gewagt hätte. Das mit dem Inhaltsverzeichnis ist sicher eine gute Idee.Das werd ich die nächsten Tage mal durchziehen.Und man darf hier ruhig auch über sein eigenes Thema “spammen”, denn durch Dein Projekt hab ich jetzt auch wieder was dazugelernt.GrüßeEDIT:Ich habe die letzten beiden tutorials anfassen müssen, weil die Nummerierung falsch war.Das Inhaltsverzeichnis steht jetzt im ersten Post.
-
10. Mai 2012 um 18:05 Uhr #919343sneaselTeilnehmer
Hallo,ich hab nochmal ne Zeichnung von dem ganzen Projekt gemacht.Dabei bin ich noch über einige Fragen gestolpert :D1. Ist es jetzt so richtig mit der Spannungsteilung (Und ist der -Pol von einer Batterie sowas wie ne Erdung)?2. Um die Leistung des Motors zu steigern (er hält 4-14V aus) wollte ich diesen direkt über die Batterie versorgen (bzw. die L293D). Ich versteh nur nicht so recht ob ich an alle drei Stromanschlüsse die 12V legen kann/soll. :DHier ein Link zum Datenblatt. Es geht um die Eingänge 1.2 EN, Vcc1, Vcc2http://www.datasheetcatalog.org/datasheet/texasinstruments/l293d.pdfJoa hier noch das Bild :DMfG Matthias
-
10. Mai 2012 um 20:05 Uhr #919350sneaselTeilnehmer
Ich hab mal die Zeichnung verständlicher gemacht 😀
Die Anschlüsse an die L293D hab ich nach folgendem Tutorial nachgebaut:
http://www.arduino-tutorial.de/2010/06/motorsteuerung-mit-einem-h-bridge-ic/
Die drei von mir genannten Kanäle müssten ja zur Stromversorgung da sein. Die Steuerung müsste ja bei meinem Motor über Pin 2 und 7 laufen.
Aus dem Datenblatt kann ich aber nicht rauslesen wofür die Pins gut sind und wieviel Volt dort anliegen darf:
“Supply voltage, VCC1 (see Note 1) . 36 V
Output supply voltage, VCC2 . 36 V”
Warum ist Vcc2 ein Output? Wieviel der 12EN braucht weiß ich überhaupt nicht.MfG matthias
-
10. Mai 2012 um 20:05 Uhr #919349Hallo1001Teilnehmer
Hallo Matthias!
1. Ist es jetzt so richtig mit der Spannungsteilung
Ja.
(Und ist der -Pol von einer Batterie sowas wie ne Erdung)?
Nur wenn Du ihn mit der Erde verbindest.
2. Um die Leistung des Motors zu steigern (er hält 4-14V aus) wollte ich diesen direkt über die Batterie versorgen (bzw. die L293D). Ich versteh nur nicht so recht ob ich an alle drei Stromanschlüsse die 12V legen kann/soll.
Pin8 auf jeden Fall auf den Akku, Pin1 würde ich auf einen Arduino Port legen. Die Pins 9 bis 16 musst Du überhaupt nicht beschalten, da hängt ja nichts dran.
Joa hier noch das Bild
1.) Wo ist die Masseverbindung zwischen Ladegerät, Akku und Arduino?
2.) Wie soll das Ladegerät den Akku laden?LG Jens
-
10. Mai 2012 um 22:05 Uhr #919354Hallo1001Teilnehmer
Hallo Matthias!
Die Anschlüsse an die L293D hab ich nach folgendem Tutorial nachgebaut:…………………………..Aus dem Datenblatt kann ich aber nicht rauslesen wofür die Pins gut sind und wieviel Volt dort anliegen darf:
Dann such doch mal im Internet nach weiteren Einträgen vom L239. Der Link ist auch gut verständlich und beantwortet all Deine Fragen:
http://www.skilltronics.de/versuch/elektronik_pc/l293.htmlOutput supply voltage, VCC2 . 36 V” Warum ist Vcc2 ein Output?
Mal wieder falsch interpretiert. Wenn Du an Vcc 36V anlegst, dann liegen am Motor (das ist hier mit Output gemeint) auch 36V an. Die 36V sind hier die Maximalspannung die der L239 verarbeiten kann, in Deinem Fall wäre es also die Akkuspannung…
———–
Deinem neuen Bild entnehme ich dass der Akku immer ununterbrochen geladen wird. Wozu brauchst Du dann den Spannungsteiler? Du nimmst weder Einfluss auf den Ladevorgang, noch läst Du Dir die Akkuspannung anzeigen. Wozu dann der Aufwand?
LG Jens
-
11. Mai 2012 um 9:05 Uhr #919367sneaselTeilnehmer
Hallo,
schonmal Danke für die Tips.
Der Akku wird ja nur geladen wenn das Licht angeschaltet ist.
Ausserdem will ich ihn vielleicht in der Zukunft über Solarenergie versorgen.
Ist denn sonst alles OK in meinem Projekt?
Ich würde gerne am WE alles bestellen und würde mich über eine Bestätigung freuen [-o< (Besonders ob ich den -Pol als Erdung verwenden kann [Das ist doch beides ein Medium in den der Strom abfließen kann]) Hier nochmal der Link zu dem letzten Bild: http://www.meisterkuehler.de/forum/attachments/bastelecke/1001d1336674493-vorstellung-elektronikprojekte-arduino-plattform-katzentraum-final2.jpgMfG Matthias
-
11. Mai 2012 um 12:05 Uhr #919395Hallo1001Teilnehmer
Hallo Matthias!
Der Akku wird ja nur geladen wenn das Licht angeschaltet ist.
Hm, dann hängt der Akku also auch unabgeschaltet am Ladegerät, wenn das Ladegerät aus ist. Nun, das zieht Dir den Akku leer, denn die Elektronik im Ladegerät verbraucht auch Strom. Darum soll man Akkus ja auch wieder aus dem Ladegerät nehmen, wenn man es ausschaltet.
Ausserdem will ich ihn vielleicht in der Zukunft über Solarenergie versorgen. Ist denn sonst alles OK in meinem Projekt?
Dann kannst Du doch nicht fragen ob Deine Schaltung so OK ist, Du bist doch noch nicht einmal mit dem Entwurf fertig. In Deinem Schaltplan sehe ich keine Vorbereitung für Solar und einfach parallel schalten kannst Du die Solarzelle nicht auf den Akku. Such mal hier nach „Solar-Laderegler“, so etwas in der Richtung musst Du schon mit vorsehen, wenn Du eine Solarzelle verwenden möchtest.
Ich würde gerne am WE alles bestellen und würde mich über eine Bestätigung freuen
Das was da so auf dem Bild zu sehen ist scheint soweit OK zu sein, ist immer schlecht zu sagen wenn da keine Werte an den Bauteilen dran stehen. Es wird aber mit Sicherheit nicht Deine letzte Bestellung sein…
(Besonders ob ich den -Pol als Erdung verwenden kann [Das ist doch beides ein Medium in den der Strom abfließen kann])
Wie schon einmal gesagt, es spricht nichts dagegen den Minuspol auf Erde zu legen. Nur wo zu soll das hier gut sein? Das Ladegerät ist Schutzisoliert, von da hast Du keine Überspannung zu erwarten. Was für einen Vorteil hätte es denn wenn Du Deine Schaltung hier erdest?
LG Jens
-
11. Mai 2012 um 13:05 Uhr #919399HawkTeilnehmer
Haftpflicht- und Hausratversicherung inkl. Brandschutz ist vorhanden? 😉
-
11. Mai 2012 um 13:05 Uhr #919398sneaselTeilnehmer
Ich will das Gerät erstmal ohne Solarstromversorgung realisieren. Diese kommt dann vielleicht irgendwann mal dran.
Ich hab den Unterschied zwischen Masse und minus Pol der Batterie nicht so ganz verstanden.:banana::banana::banana:
Aber wenn ich die Spannungsteilung richtig angeschlossen hab soll mir das erstmal reichen.Das Ladegerät dürfte doch nicht allzuviel Strom fressen oder?
Zum Notfall könnte man ja noch ein Relay zwischen Akku und ladegerät hängen. (Ne Diode müsse doch auch gehn oder?)Dann werd ich ma bestellen und sehn wie weit ich komme [-o< MfG Matthias
-
11. Mai 2012 um 14:05 Uhr #919408sneaselTeilnehmer
:d: Wird schon alles gut gehn :d:
Nochwas 😀
ich will gern meinen Arduino durch einen Atmega 328 mit Arduino Bootloader ersetzen.
Dazu würd ich folgendem Tutorial folgen:
http://arduino.cc/en/Main/StandaloneIch will aber auf alles unnötige verzichten. Dann muss ich doch nur:
– Die 5V Versorgung mit Spannungsregler und Kondensatoren nachbauen
– Den PullupResisitor an den Reset Port
– Den 16MHz Quarz mit den beiden Kondensatoren
nachbauen. (Natürlich + Kabel und Strom/Ground-Anschlüsse)
Das müsste doch reichen (Der Resetknopf und die Leds müssten doch egal sein)MfG Matthias
-
11. Mai 2012 um 16:05 Uhr #919419sneaselTeilnehmer
Ich will ja einen Atmega 328 mit Arduino Bootloader kaufen:http://www.watterott.com/de/ATmega328-Arduino-BootloaderDann müsste ich diesen doch nurnoch auf meinen Arduino Uno stecken und das Programm uploaden 😀
-
11. Mai 2012 um 16:05 Uhr #919416Hallo1001Teilnehmer
Hallo Matthias!
ich will gern meinen Arduino durch einen Atmega 328 mit Arduino Bootloader ersetzen.Dazu würd ich folgendem Tutorial folgen:
Wenn Du jetzt eh anfängst alles neu auf zu bauen, warum verwendest Du dann nicht gleich einen kleineren AVR. Für Dein Projekt würde ein Tiny25 oder Tiny24 vollkommen ausreichen. Und ob Du nun die paar Programmzeilen mit der Arduino Gui, in Basic oder in GCC erstellst ist doch eigentlich egal. Aber egal wie, Du brauchst auf jeden Fall einen ISP-Programmer, ansonsten kannst Du weder den Bootloader für den AT328 aufspielen, noch kannst Du den Tiny24 brennen. Hast Du einen ISP-Programmer?
Ich will aber auf alles unnötige verzichten. Dann muss ich doch nur:
– Die 5V Versorgung mit Spannungsregler und Kondensatoren nachbauen
– Den PullupResisitor an den Reset Port
– Den 16MHz Quarz mit den beiden Kondensatoren
nachbauen. (Natürlich + Kabel und Strom/Ground-Anschlüsse)
Das müsste doch reichen (Der Resetknopf und die Leds müssten doch egal sein)Jo, das passt…
LG Jens
-
13. Mai 2012 um 9:05 Uhr #919515spokekillerTeilnehmer
sneasel;488403 said:
Ich will ja einen Atmega 328 mit Arduino Bootloader kaufen:
http://www.watterott.com/de/ATmega328-Arduino-BootloaderDann müsste ich diesen doch nurnoch auf meinen Arduino Uno stecken und das Programm uploaden 😀
Das ist korrekt. Das hatte ich auch schon gemacht, bevor ich mir einen Programmer zugelegt hatte.
-
31. Mai 2012 um 16:05 Uhr #920802sneaselTeilnehmer
Hallo,
mein Katzenspielzeug ist soweit fertig und befindet sich jetzt in der Optimierungsphase 😀
Ich habe mal den Stromverbrauch ausgemessen und bin auf folgende Ergebnisse gekommen:
Motor: 50ma
Arduino: 100ma
Da der Motor nur ca 5min/Stunde laufen soll ist der Durchschnittsverbrauch ca 4ma. (Super)
Der Arduino allerdings sollte viel weniger verbrauchen.
Ist der hohe Stromverbrauch von 100ma ein Resultat der Spannungsumwandlung von 12 auf 5V?
Ich hab irgendwo im Internet gelesen dass der Arduino bei 5V 7ma + 6ma pro LED vebraucht stimmt das?
Dann sollte ich vll noch eine Extra 5V Stromversorgung für den Arduino einbauen. (4AA Batterien z.B.)EDIT: Ist es richtig dass ich für 16Mhz ca. 5V brauche?
Seite: 316
http://www.atmel.com/Images/doc8161.pdfMfG Matthias
PS: Ich hab mal ein Bild von meiner Konstruktion hochgeladen 😀
Da kann man auch meine Lötkünste begutachten #-o -
1. Juni 2012 um 14:06 Uhr #920854spokekillerTeilnehmer
Ja, nee, also nicht ganz….Gehst Du mit Deiner extra Arduinospannung direkt auf die Pins GND und +5V dann mußt Du exakt 5V nehmen. Ansonsten brauchst Du etwa 6V Minimum, wenn Du über die Hohlbuchse gehst, weil der Längsregler einen Drop von ca 0,7V hat, wenn ich mich richtig erinnere. Also mußt Du mindestens 5,7 V einspeisen.Das Schaubild auf Seite 399 dürfte Deiner Frage eher dienlich sein (29-140). Dort wird in Abhängigkeit von Spannung und Frequenz der Stromverbrauch (nur für den 328er) angegeben.Also bei 5V (ist fix, bspw durch den Längsregler) und 16MHz (fix) sind es dann knapp unter 10 mA….Das Schaubild das Du meinst ist ohnehin schon gegeben, denn dort wird gezeigt, in welchem Frwuenzbereich man den ATMega328 laufen lassen kann und welche Spannung man dafür in Abhängigkeit dazu mindestens anlegen muß. Nicht falsch, aber diese Werte sind durch Deinen Uno ja schon fest vorgegeben.Die 100mA kommen mir ein wenig hoch vor, denn Du hast ja sonst nicht viel dran. Allerdings bin ich nir nicht sicher, ob die auch von mir genannten Schaubilder die “Leerlaufleistung” beziffern.Du hast den AD Wandler in Beschlag und ein bissl was an den Digi Pins… dazu Verlust an den vielen Widerständen… Kommt mir jetzt erst… wie hast Du die Stromaufnahme des Arduino gemessen? Ich meß meinen mal im Leerlauf später nach.
-
1. Juni 2012 um 15:06 Uhr #920856sneaselTeilnehmer
Ich habs mit nem Multimeter gemessen. Allerdings vor dem Spannungswandler. (ka ob das von Bedeutung ist)
Verbraucht denn vll der Bewegungssensor so viel?
Oder die L293D Motorsteuerung auch wenn der Motor nicht bewegt wird?MfG Matthias
-
5. Juni 2012 um 15:06 Uhr #921156sneaselTeilnehmer
Nach meinem ersten Versuch will ich jetzt eine zweite Version von meinem Katzenspielzeug bauen :DDafür hab ich mir schon en kleinen Getriebemotor und ein kleines Gehäuse besorgt :DMeine Ziele sind es:- Den Arduino durch einen Atmega328 ersetzen und damit den Stromverbrauch senken (hoffe auf 10mA)- Eine eigene Platine Ätzen (nachdem das 10. Kabel von der L293D abgebrochen ist, hab ich sie beim Wiederanlöten zerkocht :D)- Den Bleiakku durch 4 NiMh Akkus zu ersetzen (~5V) und diese per Solarzelle wieder aufladen.- Insgesamt hoffe ich auf einen Stromverbrauch von 25mA/h (20mA Arduino, L293D, Sensor + 60mA/12 Motor [Der Motor läuft nur 5min/h])Ich denk da hab ich mir genug vorgenommen :-kSo ich hab mir schon für alle Vorhaben Tutorials und Tips zurechtgelegt, ausser zu den Solarzellen.Zum Testen habe ich mir eine mini Solarzelle mit 6,7V gekauft.Laut Multimeter bringt diese bei bewölktem Himmel:-im Freien 4-5V-im Raum mit transparenten Vorhängen ca 1,1VZum Laden müsste ich doch auf ca.6-7V kommen.Überladen müsste ja bei sehr geringen mA-Werten (ca.50mA) kein Problem sein. Dann kann ich doch einfach die Solarzelle an die Akkus anschließen und muss nur eine Diode dazwischenschalten um den Rückfluss zu blokieren. Ist das so richtig?Meint ihr damit erreiche ich die nötige Spannung?(Würde die 5 Zellen an jede Seite meines Gehäuses pappen :D)http://www.ebay.de/itm/5x-5-5V-50mA-0-25W-68x35mm-Solarmodul-Solarzelle-Monokristallin-vergossen-/251036208143?pt=Bauteile&hash=item3a72ec8c0fMfG Matthias
-
4. Juli 2012 um 20:07 Uhr #923249Sc0rpTeilnehmer
Hi Jungs,erstmal fetten Dank an spokekiller für den Thread – ist echt Klasse. Hab mich schon mal ein bissel reingelesen und habe nun Lust mich auch mal zu versuchen.Ich möchte im Zuge meines “Projekt.Aussenborder” eine digitale Temperaturüberwachung realisieren. Das Projekt hat eine externe Radiator-/Pumpen-/Lüfter-Kombination zum Ziel. Es ist noch im Entstehen – Bauteile für die Wasserkühlungsseite sind alle vorhanden und werden demnächst zusammengebastelt (evtl. mit Projektdokumentation).Nun hat die AT-Pumpe (und der Inline-Tempsensor von AT ebenfalls) nur diese NTC-Kacke zum Messen der Temperatur, das ist mir ein wenig zu ungenau – und zudem auch lokal beschränkt, sofern man die Pumpe nicht via USB anschliesst, sieht man gar nix.Das Dilemma soll ein eigener Mikrokontroller lösen – die Arduino-Plattform scheint perfekt dafür geschaffen zu sein, folgende Funktionalitäten zu liefern:- digitale Temperaturmessung (via I²C), Sensoren sollten modular “anstöpselbar” sein (reine Hardwarelösung via Steckern)- LCD Anzeige, quasi Output am Kontroller- Ethernet (via Ethernet-Shield) inkl. Oberfläche- später zusätzliche Steuerung und “Auswertung” von LüfternDas mit dem Ethernetshield ist kein Problem, wird einfach gekauft ;). Allerdings habe ich noch Probleme, den passenden Arduino auszusuchen (siehe http://de.wikipedia.org/wiki/Arduino-Plattform):- reicht ein Uno? Wäre das Ethernetshield kompatibel?- muss ich was Grösseres nehmen? – leider sagen mir die nackten Zahlen (KiB Flash/EEPROM/SRAM) nix, mit den I/O-Pins kann ich was anfangen …- Power nehme ich von einem Steckernetzteil – welche Spannung und Stromstärke sollte im günstigsten Fall da rauskommen? Die Platinen sagen alle 7-12V -> aber wo geht am wenigsten Strom verloren?Danke im Voraus für Eure Antworten – ich bin totaler Noob was die Plattform angeht … noch ;)Sc0rp
-
5. Juli 2012 um 10:07 Uhr #923260spokekillerTeilnehmer
Hi Sc0rp,zunächst vielen Dank für Dein Lob. Ich freue mich wirklich sehr darüber :banana:. Leider ist “real life” gerade vorrangig, denn sonst würde es hier auch mal endlich wieder weitergehen.Zu Deinen Fragen:Du kannst einen Arduino Uno nehmen, der ist für Dein Projekt geeignet und auch mit dem Ethernetshield kompatibel. Wenn Du möchtest, kannst Du auch einen Arduino Ethernet ohne PoE Module nehmen. Mit diesem habe ich aber keine praktische Erfahrung. Ich selber besitze einen Arduino Uno Rev 2 mit separatem ETH-Shield in (ich glaube) Rev2.Den Uno gibt es mittlerweile in Hardware Rev 3. Zur Einfachheit verlinke ich mal zu Watterott. Ich bekomme dafür kein Geld und Du kannst die Sachen auch ganz woanders kaufen.Arduino: http://www.watterott.com/de/Arduino-Uno?x07568=fe0035d4a45bab73a3e609cd5c21fd71Passender ETH Shield:http://www.watterott.com/de/Arduino-Ethernet-Shield?x07568=fe0035d4a45bab73a3e609cd5c21fd71Von der Beschreibung des Shields “neue Version” mußt Du Dich nicht verwirren lassen. Es gibt mW nur zwei Versionen, wovon die neuere eben den microSD Sockel auch wirklich nutzen kann. Die alte hatte ihn nur schon drauf, er lag aber brach.Das PoE Modul würde ich mir schenken, das brauchst Du sicher nicht.NB: den Leonardo oder Mega würde ich dir als Einsteiger nicht empfehlen. Beide sind zudem overpowered. Der Uno reicht dicke.Aber etwas konkreter zu Deinen Fragen:
Sc0rp said:
– reicht ein Uno? Wäre das Ethernetshield kompatibel?Ja, siehe die Links oben
Sc0rp said:
– muss ich was Grösseres nehmen? – leider sagen mir die nackten Zahlen (KiB Flash/EEPROM/SRAM) nix, mit den I/O-Pins kann ich was anfangen …Nein, der Uno reicht gut aus, außer Du möchtest gleich ein Dutzend Pumpen und Ventis laufen lassen. Der Uno hat einen ATMega 328, der bietet ausreichend Speicher für einige libraries und ne Menge Code. Da kann man schon viel damit anfangen.
Sc0rp said:
– Power nehme ich von einem Steckernetzteil – welche Spannung und Stromstärke sollte im günstigsten Fall da rauskommen? Die Platinen sagen alle 7-12V -> aber wo geht am wenigsten Strom verloren?Also, ich muß etwas ausholen: Du kannst die Spannung für den Arduino vom USB nehmen. Einfach an den USB Port des Arduino anstecken. Geht netürlich auch mit einem passenden 5V Netzteil mit USB Stecker. Daneben gibt es noch zwei Pins, die an einer der Steckleisten (siehe mein erster Post) +5V als Betriebsspannung annehmen.Die beiden Pins links unten, wo 5V und GND stehen sind faktisch Ein- wie Ausgänge. Schließt Du da exakt +5V an, dann läuft er prima.Wenn Du nun größere Verbraucher ansteuern willst, dann sieht das ähnlich aus, wie bei meinem Tutorial mit dem TIP-120. Die Versorgungsspannung für die “großen” Verbraucher, wie Lüfter und Pumpe haben ihre eigene Spannungsquelle und nur die Masseschiene mit dem Rest gemein. So geht das auch mit MosFET statt einem Leistungstransi wie dem TIP.Worauf ich raus will ist, daß Du die Spannung für den Arduino passend nimmst, und nicht im Bereich 7-12V über den Hohlstecker. Geht zwar, aber da verlierst Du einiges durch den Längsregler und erzeugst auch Wärme.Die Ausgangs-Ports der Arduinos können nicht allzuviel Strom liefern, ich glaube es sind um die 50~80mA pro Port (nicht als Dauerlast wenn viele gleichzeitig aktiv sind).Müssen sie ja auch nicht, siehe o.a. Beispiel. Wenn man höhere Ströme braucht bedient man sich entsprechender Treiber-ICs (wie beispielsweise H-Brücken LD398 für Robotermotoren).Für Lüfter und Pumpen it ein entsprechender MOSFET sinnvoll.Auf meiner To-Do-Liste steht noch eine kleine Vorstellung mit einer Lüfter-Steuerungsstufe mit MosFet und LCD. Das sollte Dir helfen. Ich versuche mal, ob ich das übers WE hinbekommen zu veröffentlichen, denn die Teile habe ich alle.Die Lüftertachos, die Du auswerten willst, werden über die Analogports des Uno ausgewertet, von denen sind 6 verfügbar. Solltest Du aber I²C verwenden, fallen A4 und A5 weg für denselbigen.Macht aber auch nichts, denn Du kannst, sofern erforderlich, die Analogeingänge multiplexen. Das ist nicht viel Aufwand und gibt Dir bis zu 4*16 extra Ports. Nachteil dabei könnte sein, dass Dir die Digitalpins ausgehen, weil man den Multiplexer ja auch ansteuern muß.Ich würde Dir bei den Sensoren zu den Dallas OneWire Sensoren wie dem DS18B20 raten, weil man sie mit einem Digitalpin auslesen kann. So würdest du Dir die Analogpins freihalten.Achso, und eines solte man noch wissen: der ETH-Shield belegt einige Pins des Uno, sodaß man diese nicht mehr für andere Zwecke nutzen kann. Welche weiß ich auswendig gerade leider nicht.Jetzt hör ich lieber auf, bevor Dir die Birne explodiert.
Sc0rp;492457 said:
Danke im Voraus für Eure Antworten – ich bin totaler Noob was die Plattform angeht … noch 😉Keine falsche Bescheidenheit. Immerhin bist Du ja einer meiner RAID-Götter 🙂 Und ich bin auch nicht grade ein Vollprofi, eher ein “N00b, Level 2”.Ich helf Dir aber gerne. Du wohnst ja auch nicht sooo weit weg von mir, da kann man sich ja dann auch mal zum Basteln treffen, wenn Du möchtest.
-
5. Juli 2012 um 15:07 Uhr #923270Sc0rpTeilnehmer
Re,
spokekiller;492469 said:
zunächst vielen Dank für Dein Lob. […]*hehe* Wie war das mit “keine falsche Bescheidenheit” ?
spokekiller;492469 said:
Du kannst einen Arduino Uno nehmen, […]UNO – checkEthernetShield – check
spokekiller;492469 said:
Den Uno gibt es mittlerweile in Hardware Rev 3. Zur Einfachheit verlinke ich mal zu Watterott. Ich bekomme dafür kein Geld und Du kannst die Sachen auch ganz woanders kaufen.Das wäre mir auch egal, wenn nicht sogar lieber ;). Aber ich bekomme einen UNO von einem Kollegen, der hat noch einen über, evtl. sogar inkl. Shield. D.h. ich müsste mir von Watterott ehr ein Breakboard und Kabel besoren, die DS18(B)20 hab ich schon massig seit Ewigkeiten z.H. – ich hoffe ich finde die noch :+. Den SD-Sockel brauche ich zum Loggen …
spokekiller;492469 said:
Das PoE Modul würde ich mir schenken, das brauchst Du sicher nicht.Im Moment nicht, kann man später ja nachrüsten – muss erstmal abklären ob mein Cisco-Switch PoE kann …
spokekiller;492469 said:
Also, ich muß etwas ausholen: Du kannst die Spannung für den Arduino vom USB nehmen. Einfach an den USB Port des Arduino anstecken. Geht netürlich auch mit einem passenden 5V Netzteil mit USB Stecker. Daneben gibt es noch zwei Pins, die an einer der Steckleisten (siehe mein erster Post) +5V als Betriebsspannung annehmen.Ich hab irgendwas von 5,1 V oder 5,7 V (das war aber glaub ich der Längsrichter-Hohlstecker-Eingang) an Mindestspannung gelesen, hab zwar persönlich noch nie nachgemessen, aber kommt aufm USB-Port 5,1V an?
spokekiller;492469 said:
Wenn Du nun größere Verbraucher ansteuern willst, […]Jo, das mit den “Verstärker bzw. Endstufen” hab ich schon geschnallt ;), ist aber definitv etwas für später …
spokekiller;492469 said:
Auf meiner To-Do-Liste steht noch eine kleine Vorstellung mit einer Lüfter-Steuerungsstufe mit MosFet und LCD. Das sollte Dir helfen. Ich versuche mal, ob ich das übers WE hinbekommen zu veröffentlichen, denn die Teile habe ich alle.Jo, kein Stress, ich hab auch nicht viel Zeit zum Basteln … meine Reihenfolge der Funktionalitätsprioritäten wäre:- (digitale) Temperaturen messen und Loggen- Temperaturen auf LCD ausgeben- Temperaturen auf Webfrontend ausgebenspäter kommt dann noch die Lüfterauswertung und -steuerung dazu (viel später – jetzt macht das erstmal die Pumpe und ich habe den Mikrocontroller als mobiles Temperaturmesssystem, damit kann ich nämlich meine Rackgehäuse auch mal durchmessen, Stichwort Hitzestau)
spokekiller;492469 said:
Ich würde Dir bei den Sensoren zu den Dallas OneWire Sensoren wie dem DS18B20 raten, weil man sie mit einem Digitalpin auslesen kann. So würdest du Dir die Analogpins freihalten.Auf jeden, die habe ich schon irgendwo rumkullern, sind auch die einzigen, die bei einem guten P/L Verhältnis ordentliche Werte liefern, abegesehen davon, das man die nahezu unendlich aufreihen kann. Je nachdem welchen Modus man bei 1Wire benutzt (parasitär oder powered) sollen ja Längen bis 100m (und mehr) möglich sein – hängt stark vom Kabel ab.
spokekiller;492469 said:
Achso, und eines solte man noch wissen: der ETH-Shield belegt einige Pins des Uno, sodaß man diese nicht mehr für andere Zwecke nutzen kann. Welche weiß ich auswendig gerade leider nicht.Sofern ich gelesen habe, sind das vier Digital-Pins. Ist mir aber egal, im Moment brauche ich nur LCD + I²C + EhternetShield, das sollte passen.
spokekiller;492469 said:
Jetzt hör ich lieber auf, bevor Dir die Birne explodiert.Hab ich schon mehrfach erfolglos ausprobiert, das blöde Ding geht einfach nicht kaputt … 😆
spokekiller;492469 said:
Ich helf Dir aber gerne. Du wohnst ja auch nicht sooo weit weg von mir, da kann man sich ja dann auch mal zum Basteln treffen, wenn Du möchtest.Das wäre cool, da könnte man sich sicher mal zu ‘nem Bierchen treffen und quatschen – im Moment sieht mein 3m²-Bastelkeller aus, als wäre eine Bombe expoldiert. Muss auch erstmal meine anderen WaKü-Projekte fertig machen.Apropos WaKü, falls du da mal Teile brauchst -> wende dich vertrauensvoll an mich. Hab ja jetzt auch einen Phobya Benchtable inkl. aller WaKü-Grundkomponenten, da kann man sicher mal ein paar Schaltungen in der Praxis testen (und Projektdokumentationen inkl. Bildern erstellen) …Sc0rpps: Breakboard’ing ist zwar nicht direkt das Thema dieses Threads, aber da könnte ich auch noch eine Empfehlung gebrauchen, was man da als Anfänger (aber ambitioniert! 😉 ) nehmen sollte …
-
6. Juli 2012 um 12:07 Uhr #923287spokekillerTeilnehmer
Sc0rp;492480 said:
Re,spokekiller;492469 said:
zunächst vielen Dank für Dein Lob. […]*hehe* Wie war das mit “keine falsche Bescheidenheit” ?
*fg*
Sc0rp said:
spokekiller;492469 said:
Also, ich muß etwas ausholen: Du kannst die Spannung für den Arduino vom USB nehmen. Einfach an den USB Port des Arduino anstecken. Geht netürlich auch mit einem passenden 5V Netzteil mit USB Stecker. Daneben gibt es noch zwei Pins, die an einer der Steckleisten (siehe mein erster Post) +5V als Betriebsspannung annehmen.Ich hab irgendwas von 5,1 V oder 5,7 V (das war aber glaub ich der Längsrichter-Hohlstecker-Eingang) an Mindestspannung gelesen, hab zwar persönlich noch nie nachgemessen, aber kommt aufm USB-Port 5,1V an?
Du hast drei Möglichkeiten, den Uno mit Spannung zu versorgen (jeweils exklusiv):
1) über die Hohlbuchse, mit irgendwas um mindestens 6-7V, weil der Längsregler angeblich bis zu 2V Drop hat
2) über USB, dann geht das natürlich am Längsregler vorbei und dann reichen die glatten 5V vom USB natürlich. Du hast aber halt nur 500mA in Summe, was zum Spielen aber mE reicht
3) über besagte PinsAusprobiert habe ich alle drei schon. Man soll aber eben nicht alles auf einmal machen. Obwohl ich meine auf arduino.cc mal gelesen zu haben er könne erkennen ob Saft über USB oder Hohlbuchse kommt und schaltet dann eines von beiden ab.
Sc0rp said:
spokekiller;492469 said:
Wenn Du nun größere Verbraucher ansteuern willst, […]Jo, das mit den “Verstärker bzw. Endstufen” hab ich schon geschnallt ;), ist aber definitv etwas für später …
Mein Übereifer, verzeih 🙄
Sc0rp said:
spokekiller;492469 said:
Jetzt hör ich lieber auf, bevor Dir die Birne explodiert.Hab ich schon mehrfach erfolglos ausprobiert, das blöde Ding geht einfach nicht kaputt … 😆
ROFL
Sc0rp said:
spokekiller;492469 said:
Ich helf Dir aber gerne. Du wohnst ja auch nicht sooo weit weg von mir, da kann man sich ja dann auch mal zum Basteln treffen, wenn Du möchtest.Das wäre cool, da könnte man sich sicher mal zu ‘nem Bierchen treffen und quatschen – im Moment sieht mein 3m²-Bastelkeller aus, als wäre eine Bombe expoldiert. Muss auch erstmal meine anderen WaKü-Projekte fertig machen.
Cool. Klingt sehr gut.
Sc0rp said:
ps: Breakboard’ing ist zwar nicht direkt das Thema dieses Threads, aber da könnte ich auch noch eine Empfehlung gebrauchen, was man da als Anfänger (aber ambitioniert! 😉 ) nehmen sollte …Kein Thema…. also ich habe mit dem kleinen Set von Watterott angefangen: http://www.watterott.com/de/Breadboard-incl-Kabelset
Das Board ist mir aber schnell zu klein geworden, sodaß ich noch eines in der Größe bei Reichelt gekauft habe:
http://www.reichelt.de/Laborkarten/STECKBOARD-2K4V/3/index.html?;ACTION=3;LA=446;ARTICLE=67680;GROUPID=3374;artnr=STECKBOARD+2K4V;SID=15PvyQH6wQAQ8AAA0HzlI24b3db00cee4c1867d1730940e26a60a
Bei letzterem habe ich die Bananenbuchsen weggelassen und der Vorteil ist für mich bei dieser Größe, daß ich auch mal zwei unterschiedliche Sachen aufbauen kann, ohne eine bestehende Schaltung aus Platzgründen abbauen zu müssen.Für den UNO habe ich mir außerdem eine Plexiplatte zurechtgearbeitet, auf die ich ein Breadboard wie das von Watterott (640/200 Kontakte) geklebt habe und den Uno fixiert. Gummifüßle drunter und dann reiß ich mir nicht immer den ganzen Kram vom Tisch wenn ich bei ner ruckartigen Bewegung an irgendwas (insbesondere dem USB-Kabel) hängenbleibe. Außerdem sind so die wichtigsten Sachen für schnelle Basteleien beisammen.
Der verbleibende Platz, auf dem bringe ich einen 4*AAA Akkuhalter mit Klettverschluß unter, die liefern geladen etwas über 5V und reichen mit 900mAh auch mal für längere Experimente. Ich knips das ohnehin für das nächste Tut.
BTW, ich kann mich erinnern, daß der ETH-Shield mir mal 2,3Ah Akkus in unter einer Stunde leergesogen hat.Achja, was sich mE auch lohnt ist das Jumperwire Set von Watterott. Einball meinte auch, die seien selbst nicht billiger gemacht: http://www.watterott.com/de/Jumper-Wires-Breadboard
Schönes WE!
-
6. Juli 2012 um 13:07 Uhr #923289Sc0rpTeilnehmer
Re,
damit es für die anderen überscihtlich bleibt, fasse ich mal zusammen:spokekiller;492500 said:
Spannung für den Arduino:
Du hast drei Möglichkeiten, den Uno mit Spannung zu versorgen (jeweils exklusiv):
1) über die Hohlbuchse, mit irgendwas um mindestens 6-7V, weil der Längsregler angeblich bis zu 2V Drop hat
2) über USB, dann geht das natürlich am Längsregler vorbei und dann reichen die glatten 5V vom USB natürlich. Du hast aber halt nur 500mA in Summe, was zum Spielen aber mE reicht
3) über besagte PinsAusprobiert habe ich alle drei schon. Man soll aber eben nicht alles auf einmal machen. Obwohl ich meine auf arduino.cc mal gelesen zu haben er könne erkennen ob Saft über USB oder Hohlbuchse kommt und schaltet dann eines von beiden ab.
Dann werde ich mich für die Pins entscheiden, allerdings brauche ich das USB-Kabel wohl zu allererst für die Ausgabe bzw. erste Überwachung des MC’s, oder?
spokekiller;492500 said:
Sc0rp said:
ps: Breakboard’ing ist zwar nicht direkt das Thema dieses Threads, aber da könnte ich auch noch eine Empfehlung gebrauchen, was man da als Anfänger (aber ambitioniert! 😉 ) nehmen sollte …Kein Thema…. also ich habe mit dem kleinen Set von Watterott angefangen: http://www.watterott.com/de/Breadboard-incl-Kabelset
Ich hatte mir das Zeug von Pollin rausgesucht:
Boards: http://www.pollin.de/shop/t/NzM3OTA5OTk-/Werkstatt/Werkstattbedarf/Sonstiges/Labor_Steckboards.html
(ich bin für das ganz grosse, da muss ich nix 2x kaufen ;))
Steckbrücken:
http://www.pollin.de/shop/dt/Njc0OTg0OTk-/Werkstatt/Werkstattbedarf/Sonstiges/Steckbruecken_Sortiment.htmlspokekiller;492500 said:
Für den UNO habe ich mir außerdem eine Plexiplatte zurechtgearbeitet, auf die ich ein Breadboard wie das von Watterott (640/200 Kontakte) geklebt habe und den Uno fixiert. […]Das schreit nach einem Foto, und die ganze Infos übers Breadboarding (nicht Breakboarding …) solltest du auch mal in einen Spoiler packen – das ist für Anfänger nämlich auch ganz interessant.
spokekiller;492500 said:
Der verbleibende Platz, auf dem bringe ich einen 4*AAA Akkuhalter mit Klettverschluß unter, die liefern geladen etwas über 5V und reichen mit 900mAh auch mal für längere Experimente.Hmm, 4×1,2V Nennspannung bei AAA kenn ich nur, allerdings hab ich mich nocht nicht intensiv mit Entladekurven und Spannungsabfall beschäftigt. Bei mir bekommt das Teil ein extra Steckernetzteil, vermutlich mit einer Hohlbuchse die an die Pins angeschlossen ist, dann kann ich auch mal die 5V vom Computernetzteil nehmen.
spokekiller;492500 said:
Schönes WE!Dabke und gleichfalls … ich werde mal eine Einkaufsliste zusammenstellen und mich auf die Suche nach den DS18[B]20 machen.
Sc0rp
-
6. Juli 2012 um 13:07 Uhr #923292Sc0rpTeilnehmer
Hab ich doch grade gefunden:
http://www.watterott.com/de/RGB-LCD-Shield-Kit-16×2-Character-DisplayDas finde ich ja cool … mal guggen, obs das auch grösser gibt 😉
Sc0rp
-
6. Juli 2012 um 13:07 Uhr #923294spokekillerTeilnehmer
Ich korrigiere meine Aussage:der Chip muß sicher nicht getauscht werden, denn das ist nur ein I2C Port Expander. Dann müßte für die Verwendung kompatibler LCDs die Library umgeschrieben werden. Da fällt mir ein, ich hab das ja mit dem Pollin-i2c adapter so ähnlich schon mal gemacht. Ich glaube das ging gut…. müßt den Mist mal wieder rauskramenGrübel… schon wieder was auf der langen Liste… adafruits lib mal ansehen
-
6. Juli 2012 um 13:07 Uhr #923293spokekillerTeilnehmer
Sc0rp said:
Dann werde ich mich für die Pins entscheiden, allerdings brauche ich das USB-Kabel wohl zu allererst für die Ausgabe bzw. erste Überwachung des MC’s, oder?Korrekt. Du benötigst es zum Upload Deines Codes und kannst es nutzen, um per “Serial Port Monitor”-Funktion in der IDE Ausgaben zu verfolgen.
Sc0rp said:
Ich hatte mir das Zeug von Pollin rausgesucht:
Boards: http://www.pollin.de/shop/t/NzM3OTA5…eckboards.html
(ich bin für das ganz grosse, da muss ich nix 2x kaufen )
Steckbrücken:
http://www.pollin.de/shop/dt/Njc0OTg…Sortiment.htmlSupi, sieht alles gut aus und Steckbrücken kann man nie genug haben. Ich find die von mir erwähnten Jumperwires als zusätzliches Zubehör aus einem anderen Grund gut: man kann mit ihnen den Arduino sehr flexibel mit dem Aufbau auf dem Breadboard verdrahten. Die siehst du in fast jedem meiner Tuts.
Sc0rp said:
Das schreit nach einem Foto, und die ganze Infos übers Breadboarding (nicht Breakboarding …) solltest du auch mal in einen Spoiler packen – das ist für Anfänger nämlich auch ganz interessant.Foto kommt. Was genau meinst Du mit den BB-Infos? Die möglichen Größen oder was? Ich steh auf der Leitung.
Sc0rp said:
Hmm, 4×1,2V Nennspannung bei AAA kenn ich nur, allerdings hab ich mich nocht nicht intensiv mit Entladekurven und Spannungsabfall beschäftigt.Damit hast Du ja auch völlig Recht. Nur, wenn die Dinger ganz voll sind und nicht viel Last haben, dann stehen da meist ein wenig mehr Volt zur Verfügung.
Außerdem muß man dazu sagen, ist der Arduino gar nicht sooo empfindlich.Schaut man in das Datenblatt, steht da, daß der ATMega 328 einen recht weiten Spannungsbereich hat.
Dazu gehört aber gesagt, daß das alles starke Abhängigkeiten zur Taktung und gewissen Fuses hat (man kann den sogen. Brownout setzen, also ab wann er wegen Unterspannung aus macht).
Wie auch immer, man soll das nicht unnötig verkomplizieren. Wie Du an manchen Tutorialfotos sehen kannst, fahre ich die meiste Zeit mit meinen 4,8V-nominal Akkus meine Experimente und hatte nie Probleme. Ist eine von vielen guten Möglichkeiten.Sc0rp said:
Bei mir bekommt das Teil ein extra Steckernetzteil, vermutlich mit einer Hohlbuchse die an die Pins angeschlossen ist, dann kann ich auch mal die 5V vom Computernetzteil nehmen.Ich hab irgendwo mal ne Menge stabilisierte 5V/2A Mini-Stecker-NTs gefunden und die nutze ich sehr gerne. 5V bekommt man ja heute aus so vielen möglichen Quellen….
Achja, das Adafruit LCD Kit gibts leider mW nicht größer. Selbst wenn man manuell ein anderes LCD anhängen würde, was kein Problem darstellt, so müßte da wohl entweder das IC auf der Platine getauscht werden, oder zumindest die Library von Adafruit angepaßt werden.
Ich habe das auch schon gesehen und meine “nice to have” Liste gesetzt 😀 -
6. Juli 2012 um 21:07 Uhr #923304Sc0rpTeilnehmer
Re,
spokekiller;492508 said:
[…] Da fällt mir ein, ich hab das ja mit dem Pollin-i2c adapter so ähnlich schon mal gemacht. […]Gleich mal geguggt: http://www.pollin.de/shop/dt/NDU4OTgxOTk-/Bausaetze_Module/Bausaetze/LCD_I2C_Modul.html
Das scheint ja ein richtig cooles Teil zu sein “PCF8574 = Remote 8-bit I/O expander for I 2 C-bus” da könnte man ja quasi Tonnen an Displays dranhängen 😉
Ein Frage hätte ich diesbezüglich noch: das LCD-Shield hat auch Taster – wie werden die eingebunden? Auch über I²C? Oder nehmen die mir I/O-Pins weg?
Sc0rp
ps: die Liste wird ümma länger 😉
-
7. Juli 2012 um 16:07 Uhr #923343spokekillerTeilnehmer
Sc0rp;492518 said:
Ein Frage hätte ich diesbezüglich noch: das LCD-Shield hat auch Taster – wie werden die eingebunden? Auch über I²C? Oder nehmen die mir I/O-Pins weg?Nee, keine Sorge, die haben das bei adafruit schon sinnvoll gelöst und fragen die Pins über I2C ab. Wahrscheinlich kann man die Zustände einzelner I/O Pins des Expanders abfragen, oder es wird irgendwie über Interrupt gelöst. Ich hab die Software dazu noch nicht angeschaut.
Sc0rp;492518 said:
ps: die Liste wird ümma länger 😉Yo, so gehts mir auch gerade. Aktuell liegen hier 5 halbfertige Projekte rum und Teile für 3-4 neue und ne Liste mit Sachen, die ich danach austesten will, gibts auch. Ich denk in den nächsten Wochen könnte es im Privaten ruhiger werden. Wenn dann nicht der Job reinspuckt könnte das ein kreativer Sommer werden.
Noch ‘n schönes WE
-
8. Juli 2012 um 17:07 Uhr #923375Sc0rpTeilnehmer
Re,
habe mal meinen Sonntag genutzt um mir für die nächste Woche einen Einkaufsplan zusammen zu basteln:
[spoiler]
[TABLE]Shop|Teil|Preis
Pollin|Breadboard | 12,95
Pollin|Kabelset | 4,75
Pollin|Steckernetzteil | 14,95
Watterott|Jumperset | 6,55
Watterott|Kabelsortiment | 9,95
Watterott|Temperatursensoren | 2,00/Stk
ebay|Arduino UNO + LCD-Shield | 25,99
[/table]
Später kommt dann noch:
SainSmart 20×4 LCD-Shield (via I²C)Plus diverses Kleinzeug (Hohlbuchsen, Schiebeschalter …) und natürlich noch das Ethernet-Shield (welches allerdings irgendwie nicht einfach zu fassen ist …)
[/spoiler]
Für alle die es eben interessiert …Sc0rp
-
9. Juli 2012 um 11:07 Uhr #923401Sc0rpTeilnehmer
Hi @ all,
habe durch meine Kollegen diese “Arduino on SPEED” angetragen bekommen:
UNO -> http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,892,893&Prod=CHIPKIT-UNO32
MEGA -> http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,892,894&Prod=CHIPKIT-MAX32Falls man mal “etwas mehr Bums” braucht 😆
Sc0rp
-
9. Juli 2012 um 14:07 Uhr #923411spokekillerTeilnehmer
Ich hatte mir das schon mal angesehen, als die c’t das erste Mal davon kurz berichtet hatte. Damals glaube ich hatte man geschrieben, daß die Kompatibilität zu den Shields nicht immer gegeben sei. Sprich, was für Arduino designed wurde kann, muß aber nicht funktionieren.Schnell sind die Kits, aber das ist idR für mich bisher kein Thema gewesen. Aber ist gut, daß Du das hier mal erwähnt hast.Ich bin immer wieder erstaunt, wie fein sich diese AVRs für so kleine Projekte eignen.Für mich war die tollste Erkenntnis, wie wunderbar kompakt sich ein Arduino-Projekt auf einen eigenen, kleinen Klon umsetzen läßt. Ne handvoll Bauteile, alles unter 8~10€… fertig ist die Basis.Zugegeben, es gibt auch genug PIC-Lösungen, aber für mich ist es eben Arduino bzw ATTiny und ATmega geworden.Es ist übrigens auch fraglich, fällt mir gerade ein, ob die libraries Dritter ohne groß getweake auf den Chipkits zum Laufen gebracht werden können. Ist wahrschienlich nicht so schwer, könnte aber auch anders sein.Die eigentliche Zielgruppe von Arduino, nämlich Nicht-Techniker, sehe ich mit diesen Boards nicht mehr angesprochen. Und Semi-Profis oder Leute mit entsprechendem Hintergrund haben eine Fülle an µC-Plattformen (muß man nur mal bei Watterott in die Auswahl gehen: Beagle, Panda, Propeller…).
-
13. Juli 2012 um 9:07 Uhr #923549Sc0rpTeilnehmer
Sodele, mal ein Update von mir:* Breadboard: check* Kabel: check (aka “Jumper Wires”)* Steckbrücken: massen-check ;)* µC: check (Arduino Nano Klon vom Arbeitskollegen bekommen)* Ethernet: check (das kleine Shield – auch vom Arbeitskollegen)* Temp-Sensors: negativ, sind noch in der Pipe (bekomme ich auch erstmal vier vom Arbeitskollegen)* Netzteil: check (hab mich für ein “Schaltnetzteil” entschieden, 5V/2A sollten erstmal reichen)Somit kann ich loslegen, zuerst werde ich mal den Nano mittels USB befeuern und dann sukzessive alles anschalten (Reihenfolge: Ethernet,Netzteil, Temp-Sensoren, LCD) – derweil warte ich weiter auf günstige Auktionen. Geplant ist ein Mega und ein Uno, inkl. dem 16×2-LCD-Shield (Taster!) und dem 20×4-LCD-Shield. Evtl. hab ich Glück und bekomme noch das Prototype-Shield dazu ;). Da ich nun den Nano habe, und der auch schon den Webserver packen soll, wird meine mobile Temp-Messprobe (hoffentlich) sehr kompakt ;).Apropos, ich habe bei Watterott auch ein schickes Gehäuse erstanden.Sc0rpEDIT: das mit dem UNO und dem 20×4-LCD-Shield hat sich eben auch erledigt 😉
-
13. Juli 2012 um 16:07 Uhr #923557Sc0rpTeilnehmer
Re,
spokekiller;492791 said:
Sc0rp;492784 said:
* Ethernet: check (das kleine Shield – auch vom Arbeitskollegen)Kannst Du beizeiten mal Bilder von dem Shield machen? Ich wußte nicht, daß es für den Nano ein offizielles Shield gibt.
Ein offizielles Shield kenne ich persönlich auch nicht – ich habe dieses dazu bekommen:
http://www.geeetech.com/enc28j60-ethernet-module-p-263.html
Allerdings gibt es auch irgendwo bei eBay ein Shield für den Nano zum aufstecken (18$ ungerade).spokekiller;492791 said:
Und ein wenig neidisch bin ich darauf, daß Du den Sainduino samt Shield (wenn auch nur ein Breakout) und LCD für so wenig Geld geschossen hast. :d:Hehe, darfst du. War aber auch schon der fünfte Versuch, als nächstes kommt noch das Mega dazu (ging auch immer unter 30€ über’n Tisch). Das Shield hab ich extra gewählt, Motordriver und Xbee brauch ich eh nich …
Inzwischen hab ich auch drei der DS18B20 vom Arbeitskollegen bekommen, der ersten Temp-Messung steht also nix mehr im Wege 😉
Icke freue mir auf das Wochenende!Sc0rp
-
13. Juli 2012 um 16:07 Uhr #923555spokekillerTeilnehmer
Sc0rp;492784 said:
* Ethernet: check (das kleine Shield – auch vom Arbeitskollegen)Kannst Du beizeiten mal Bilder von dem Shield machen? Ich wußte nicht, daß es für den Nano ein offizielles Shield gibt. Die Jungs aus Italien sind aber nicht immer die schnellsten beim Update der Webseite.
Und ein wenig neidisch bin ich darauf, daß Du den Sainduino samt Shield (wenn auch nur ein Breakout) und LCD für so wenig Geld geschossen hast. :d:
-
14. Juli 2012 um 13:07 Uhr #923586spokekillerTeilnehmer
Ah, okay, das ist das alternative Modul. Es gibt auch UNO-Klone, die den Wiznet bzw enc28j60 schon drauf haben. Die waren cwohl eine Zeit lang nicht so gut unterstützt wie der offizielle Shield, aber das hat sich erheblich geändert. Der Chip ist eben deutlich billiger.Ich geb zu ich hab das Datenblatt zum Modul nicht gelesen, aber da steht was von 3.3V Pegeln. Das könnte mit dem SainDuino problematisch werden (oder Du nutzt einen Pegelwandler).Der Nano hat meines Wissens normale TTL (5V) Pegel. Aber ich nehme an, der besagte Kollege hatte das schon im Betrieb und ich mach mir nur mal wieder zuviele Sorgen….Achso, aber zum Nano noch was:
Arduino said:
The FTDI FT232RL chip on the Nano is only powered if the board is being powered over USB. As a result, when running on external (non-USB) power, the 3.3V output (which is supplied by the FTDI chip) is not available and the RX and TX LEDs will flicker if digital pins 0 or 1 are high. -
17. Juli 2012 um 16:07 Uhr #923701Sc0rpTeilnehmer
Re,
spokekiller;492827 said:
Ah, okay, das ist das alternative Modul. Es gibt auch UNO-Klone, […].Jo, ich habs für’n Freundschaftspreis bekommen, und es sit eben auch sehr kompakt, quasi perfekt für mein erstes Vorhaben ;).
spokekiller;492827 said:
Ich geb zu ich hab das Datenblatt zum Modul nicht gelesen, aber da steht was von 3.3V Pegeln.Das ist mir nach dem Lesen verschiedener Quellen bekannt, aber der TRduino hat ja auch ‘nen 3,3V-Pin – das wäre auch meine erste Frage gewesen, wenn du sie nicht schon beantwortet hättest:
Arduino said:
The FTDI FT232RL chip on the Nano is only powered if the board is being powered over USB. As a result, when running on external (non-USB) power, the 3.3V output (which is supplied by the FTDI chip) is not available and the RX and TX LEDs will flicker if digital pins 0 or 1 are high.Dann baue ich mir eben irgendwann einen Adapter, der meine stabilisierten 5V auf den Mini-USB-Port bringt und fertig. Ich hab keine Ahnung, was der µC an Strom braucht – muss ich mich begoogeln ;).Ich habe meinen Nano auch schon zum Blinken gebracht – und gleich mal den Code auf ein S-O-S aufgebohrt, einfach nur um zu sehen, das das Blinken kein ominöser Fehler ist :lol:.Mittlerweile ist auch meine Bestellungen von komputer.de eingetroffen. Da kann ich zwischendurch schnell mal was ausprobieren – Erfolge erziehlt man ja Hammerschnell mit der Plattform!Und diese Woche sollte dann auch mein UNO inkl. 20×4 LCD kommen – dann gehts richtig los!Sc0rpEDIT: das DS18x20-Tutorial habe ich nun auch erfolgreich abgeschlossen – mit zwei Sensoren 😉EDIT2: zum Thema 3,3V habe ich folgendes gefunden: http://www.mikrocontroller.net/part/LP2950 – damit könnte ich auch das EtherShield über mein externes 5V-Netzteil (PC-Netzteil) betreiben! Falls es mehr als 100mA zieht, kann man auch einen aus der 78xx-Familie nehmen (bzw. den Ersatz LM 3940 IT-3.3)
-
18. Juli 2012 um 22:07 Uhr #923762Sc0rpTeilnehmer
Re,
hab nun auch mein EtherShield zum Laufen gebracht, war etwas tricky, denn die ‘alte’ Library verwendet noch die beiden Header-Files “WConstants.h” und “Wiring.h” – beide wurden ab IDE v1.0 durch “Arduino.h” ersetzt -> muss man also notfalls im Code anpassen, siehe:
http://code.google.com/p/arduino/issues/detail?id=682Ich hab auch schon das Example “etherShield -> etherShield_web_temperature” ausprobiert … ich sage mal es läuft. Zumindest bekomme ich Temp-Werte über die Weboberfläche angezeigt, allerdings nur einen (von im Moment zweien) und der ist auch noch falsch …
Bis ich einen funktionierenden Sketch habe, werde ich noch dieses Shield kaufen, da es wesentlich kompakter als mein jetziges ‘Breakout’ ist – und auch keine extra Jumperkabel benötigt.
Achja, mein UNO und LCD-Shield sind angekommen -> mehr Arbeit 😉
Sc0rp
-
21. Juli 2012 um 14:07 Uhr #923889spokekillerTeilnehmer
@Sc0rp
Meine Güte, Du machst ja irre Fortschritte… Schön, daß es Dich so fesselt. Und ich sehe mich mal wieder darin bestätigt, wenn ich sage mit dieser Plattform kann man sehr schnell sehr leicht zu guten Ergebnissen kommen.Zum Thema aktuelle Arbeiten meinerseits… ich hab mir mal zwei Stunden freigeräumt und mein nächstes Low-Level Tutorial begonnen. Leider, so muß ich sagen, kämpfe ich noch mit einigen Macken.
Was man hier sieht ist zweierlei…
Zunächst mal meine seit ein paar Monaten in Betrieb genommene Arduino-Baseplate. Diese hab ich mir aus PS-Glas (Bastelglas) etwas scheps zurechtgesägt und – natürlich mit polierten Kanten – den Arduino und ein kleines BB fixiert. So ganz zufrieden bin ich mit dem Aussehen nicht. Bei den Löchern hab ich mich ein wenig verbohrt und die Kantenpolitur war etwas “zu flach”, sodaß man kleinere Kratzer noch erkennen kann.
Da das Material aber ohnehin sehr anfällig ist, spielt das keine Rolle. Durch die schwarzen Moosgummifüße reiße ich mir jetzt auch nicht immer alles vom Tisch, wenn ich mal beim Fummeln hängen bleibe. Klare Gummifüße hab ich mittlerweile und somit werden die schwarzen Moosgummis dann ersetzt.Desweiteren sieht man die kommende Lüftersteuerung, die das PID Verfahren implementiert. Sie arbeitet diesmal mit einem MosFET statt einem Leistungstransi und verwendet einen bekannten Aufbau, nämlich das 16×2 LCD mit einem Dallas 18B20 Temperatursensor.
Der Code stammt diesmal nicht von mir, weißt aber erhebliche Schwächen auf, wie ich meine. Ich finde auch die Beschaltung des LCD zu Arduino als unglücklich.
Wenn es auch 50% der Zeit tut, so habe ich massig Echos und “Preller” auf den Signalen. So stürzt das Programm gerne mal ab, der Lüfter läuft weiter aber auf dem LCD sehe ich nur Müll.
Ich werde also im Laufe des morgigen Tages zu meinem LCD-TEMP Setup zurückkehren und dann den Drehimpulsgeber (der recht heftig prellt) evtl über eine Abblock-Kondensator-Anordnung mal ein wenig zügeln versuchen. Im Datenblatt habe ich dazu was gesehen.
U.U. liegt es auch an dem fürchterlichen Drahtverhau. Sehr viele wackelige Übergänge…Wir werden auch hier wieder von Interrupts Gebrauch machen (für den DIG zur Einstellung der Zieltemperatur). Ansonsten ist das aber für die meisten Leser etwas, was Ihr in etwa 30 Minuten aufgebaut haben dürftet.
Wer jetzt keinen MosFET zur Hand hat, aber den TIP-120 noch aus den vorigen Experimenten, der kann auch diesen nehmen! Aber dazu später mehr. Ich denke auch darüber nach, einen zweiten Interrupt zu nutzen und den DIG durch zwei Taster (+/-) mal zu ersetzen.
Ich hoffe, ich kann Euch damit für die lange Wartezeit ein wenig entschädigen.
Bis dahin, Gruß,
Euer Spoke -
21. Juli 2012 um 20:07 Uhr #923897Sc0rpTeilnehmer
Abend,
spokekiller;493152 said:
@Sc0rpMeine Güte, Du machst ja irre Fortschritte… Schön, daß es Dich so fesselt. Und ich sehe mich mal wieder darin bestätigt, wenn ich sage mit dieser Plattform kann man sehr schnell sehr leicht zu guten Ergebnissen kommen.Sagen wir mal so … die Examples und Tutorials sind wirklich easy! Sofern man alle benötigten Bauteile hat, sind sie schnell aufgesetzt und auch die entsprechenden Sketche geladen hat -> (sehr) schnelle Erfolge.Allerdings stellte sich bei mir recht schnell Ernüchterung ein, als ich versuchte zwei Sachen zu verheiraten. Temp-Sensoren und EtherShield überfordern aktuell meine C/C++ Kenntnisse (kanpp gegen Null 🙁 ) gewaltig, und besonders der Web-Server hat es in sich. Abgesehen davon gibt es auch Massen an Sketchen zu Dallas-Sensoren und viele hab ich auch schon zum laufen bekommen, aber an dem Webserver beiss ich mir bislang die Zähne aus!
spokekiller;493152 said:
Was man hier sieht ist zweierlei…Zunächst mal meine seit ein paar Monaten in Betrieb genommene Arduino-Baseplate. Diese hab ich mir aus PS-Glas (Bastelglas) etwas scheps zurechtgesägt und – natürlich mit polierten Kanten – den Arduino und ein kleines BB fixiert.Sowas werde ich mir auch noch bauen, allerdings aus Plexiglas. Vermutlich gleich in zwei Ausführungen: NANO und UNO/MEGA. Btw. bin ich mit meinem Nano sehr zufrieden, er steckt direkt auf dem BB und man hat daher weniger Kabelsalat 😉 – ich mache Euch demnächst auch ein Bild!
spokekiller;493152 said:
Desweiteren sieht man die kommende Lüftersteuerung, die das PID Verfahren implementiert. Sie arbeitet diesmal mit einem MosFET statt einem Leistungstransi und verwendet einen bekannten Aufbau, nämlich das 16×2 LCD mit einem Dallas 18B20 Temperatursensor.Das wird dann insgesamt ein Aquaero-Clon 😉 – apropos, bestimmt bekommt man in der Bucht ‘nen Defekten. Den kann man dann prima ‘umbauen’!
spokekiller;493152 said:
Der Code stammt diesmal nicht von mir, weißt aber erhebliche Schwächen auf, wie ich meine. Ich finde auch die Beschaltung des LCD zu Arduino als unglücklich.Auch schon mal mit ‘nen I²C-Display probiert? Ich hätte eines da 😉 bzw. könnte man auch das von Pollin holen/nehmen …
spokekiller;493152 said:
Wenn es auch 50% der Zeit tut, so habe ich massig Echos und “Preller” auf den Signalen. So stürzt das Programm gerne mal ab, der Lüfter läuft weiter aber auf dem LCD sehe ich nur Müll.Davon liest man aber nix in den Anleitungen, wohl aber das jede Menge Kondensatoren eingesetzt werden … leider bin ich elektrotechnisch nicht so bewandert *sigh*
spokekiller;493152 said:
Wir werden auch hier wieder von Interrupts Gebrauch machen (für den DIG zur Einstellung der Zieltemperatur). Ansonsten ist das aber für die meisten Leser etwas, was Ihr in etwa 30 Minuten aufgebaut haben dürftet.Aufbauen ist eh kein Problem, apropos: es wäre schön, wenn du deine Aufbauten als Fritzing-Schema UND die entsprechenden Sketche (wohl dokumentiert :roll:) bereit stellen würdest, das würde besonders Einsteigern unglaublich helfen (Fritzing-Schema natürlich als Breadboard-Sicht).Interrupts sind aber schon höhere Schule, oder? 8-[Eine echte Lüftersteuerung auf Arduino-Basis wäre natürlich super, besonders wenn hier die ganzen Cracks den Support mit übernehmen würden! Allerdings müsste ‘meine’ Treiberendstufe (aka Verstärker) 25W bei 12V regeln können (4-12V max.2,5W bei neun Lüftern plus Reserve) – bekommt man das mit vertretbarem Aufwand gelöst? Und am Besten wäre noch, wenn man den Regel-Tacho aus den neun Lüftern selbst wählen könnte (über Schieberegister?) bzw. müssten alle neun zyklisch abgefragt werden, ob sie überhaupt drehen (Defekt feststellen und anzeigen)Ich habe diverse Module gekauft: Buzzer, Humidity-Sensor , Real-Time-Clock. Falls du mal einen davon haben möchtest -> PN genügt! ;).Ich werde jetzt erstmal mein 20×4 I²C-LCD anklemmen und mal schauen, ob ich die Temps darauf bekomme … und evtl. einen Taster ausprobieren (LED an/aus -> schneller Erfolg 😆 )Sc0rp
-
21. Juli 2012 um 22:07 Uhr #923904spokekillerTeilnehmer
Hoi,so ich will mal nur eben schnell auf Deinen Post antworten.* Was das Proggen angeht, einfach dranbleiben. Das gibt sich. Die Erfahrung braucht Zeit.* Ich habe den I2C Adapter von Pollin und wollte zunächst damit arbeiten. Da den aber wenige hier haben dürften, fand ich es praktischer zu einem der Tuts zurückzugehen.* Was das mit der Elektronik angeht, auch da lernt man immer ein wenig dazu. Ich brauch auch immer viel Beistand, den ich gottseidank auch bekomme ;-)* Thema Fritzing und Dokumentation allgemein. Ich geb zu, ich war nicht immer besonders fleißig und habe oftmals einen Schaltplan nachzureichen nur versprochen.Ich bemühe mich sehr, neben Real-Life, immer wieder auch etwas Neues zu finden. An dieser Stelle nochmal die Ansage, daß Ihr nur zu fragen braucht, ich helfe wo es geht.Einen Plan in Fritzing zu bringen hat mich meist fast soviel Zeit gekostet, wie das Tut zu schreiben, sodaß ich an der Stelle oft faul war. Miest stehen aber zumindest im Code die Pinouts und idR kann man auch – wie ich hoffe – etwas ergänzend aus den Fotos erkennen.Aber, Kritik ist angenommen, ich werd Fritzings also doch machen.Was die Lüftersteuerungen angeht. Hallo1001 und BigReval und einige andere arbeiten da auf höherem Niveau bereits an sehr eleganten Lösungen. Ich kann verstehen, daß es viel Spaß macht selbst zu entwickeln. Dennoch rate ich dazu, deren Lösungen auch mal zu betrachten. Man kann sich zumindest hinsichtlich der Leistungsendstufen einiges abschauen.Was die Dimensionierung im nächsten Tut angeht, so arbeite ich mit einem IRF510, der laut Datenblatt dauerhaft 50W ertragen kann. Dazu schau ich mir mal die “PWM-Pfeif-Dämpfstufe” an, die mittels RC-Glied frei gesagt “das Pfeifen herausnimmt”.Phil68 hat auf der Grundlage des kommenden Tutorials bereits ausgebaut und Notabschaltung, Alarme etc pp eingebaut.Sc0rp, wir könnten uns mal zusammentelefonieren und uns dann vielleicht auch mal treffen. Material hast Du genug und ich bring meine Erfahrung mit und dann schauen wir, was draus wird?!?!Und abschließend… an einem Feuchtigkeitssensor wäre ich leihweise interessiert, aber das sprechen wir dann so.Was die Tachosignale angeht, bietet sich ein Multiplexer an. Siehe dazu das entsprechende Tut, wobei dort Ausgänge geschaltet werden. Schieberegister wäre mir dann doch zu unhandlich undd er MXer kann auch recht hochfrequent arbeiten.Jetzt darf mich nur das Real Life nicht einholen… Vorsprung hab ich ja ein wenig.EDIT: PS, und … ja, Interrupts gehen schon ans Eingemachte. Aber man kann auch auf einem Einsteigerlevel arbeiten wie ich und dann versteht man doch recht zügig, wie es im Ansatz funktioniert. Auch hierzu mein Beitrag zu empfehlen http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-4.html#post486245
-
22. Juli 2012 um 12:07 Uhr #923912spokekillerTeilnehmer
Kleines Update zum Stand des nächsten Tutorials.Also ich habe nun den Drehimpulsgeber mit RC-Filter etwas weniger störanfällig bekommen. Jetzt ist es allerdings so, daß die Impulse fast immer doppelt gezählt werden, weswegen ich mir den Code nochmal genauer ansehen muß. Dafür reicht mir aber heute die Zeit nicht mehr.Ich habe auch ganz selten noch Störungen, die dazu führen, daß der Arduino einen Impuls wahrnimmt, obwohl ich den DIG nicht betätigt habe.Ansonsten verhält sich der Lüfter sehr gut. Diese PID Methode ist scheinbar eine feine Sache.Ich denke es macht wenig Sinn, weitere Filter einzubauen. Ich nehme an, daß der Aufbau auf dem Breadboard generell etwas anfällig ist und ich habe auch noch nicht die Display-Beschaltung geändert. Mir gefällt nicht, daß aktuell eine der Datenleitungen für das LCD auf Pin13 (eingebaute LED und Widerstand) liegt.Somit werde ich mich dann ans Dokumentieren machen. Sollte alles gut laufen, dürfte im Laufe der nächsten Woche Tutorial #12 fertig werden.
-
22. Juli 2012 um 14:07 Uhr #923917phil68Teilnehmer
Hallo Micha 🙂
Schön, dass wenigstens du die Zeit findest hier weiter zu machen. Ich hab leider im Moment Stress auf Arbeit und so keine Zeit, um mich mit dem Arduino und vielen anderen Dingen weiter zu beschäftigen 😥Der Sketch mit dem Drehimpulsgeber ist der, den ich auch in meinem Aufbau verwende?? Ich hatte keine Probleme mit den Impulsen… Vielleicht hilft es dir, wenn ich den letzten Sketch meiner Temp-Regelung hier einstelle. Ich habe soweit versucht alles zu dokumentieren. In der Schaltung integriert hatte ich:
- Abschaltung bei überschreiten einer bestimmten Temperatur
- Abschaltung bei unterschreiten eines bestimmten Durchflusses
- Not-Aus bei überschreiten bei einer Temperatur(falls Abschaltung nicht greift)
Bei Abschaltung:
- Anzeige warum abgeschalten wurde(Temp, Durchfluss) und Zeit die seitdem vergangen ist
Im normalen Betrieb:
- Anzeige von Temperaturen, Durchfluss, Online-Zeit, Ausgangsspannung für die Lüfter, Regelung in %
- Umschaltung der Anzeige(6s Interval) zwischen 2 Info-Seiten(Temp, Regelung -> Durchfluss, Spannung)
- Umschaltung sobald am PID ein anderes Temp-Setting gewählt wird
- Reset der Regelung( Zeitmessung, Anzeige usw.)
Da ich ja auch totaler Anfänger bin, kann man meinen Sketch wohl auch nur als Experiment ansehen. Aber vielleicht könnte dir das trotzdem weiterhelfen. Leider hab ich keine Zeit mehr gefunden, das Ganze zu optimieren… Den Aufbau des Sketches wollte ich nach Fertigstellung nochmals überarbeiten. Da ständig neue Ideen mit eingeflossen sind(kennst du ja ;)) nicht wirklich einfach.
Ein kleines Video, der die Regelung in Aktion zeigt, könnt ich ja evtl. fix erstellen. Wenn es dir weiter hilft, könnt ich das morgen mit in Angriff nehmen.
Grüße Dirk
EDIT: Erst mal der Sketch…
[SPOILER]
/* Chris Barnes, Smart Fan Controller with PID */
#include
#include
#include
#include
#include#define encoder0PinA 2 // rotary encoder pin A
#define Hallsensor 3 // hallsensor pin 3
#define encoder0PinB 4 // rotary encoder pin B // definitions
#define ONE_WIRE_BUS 5 // temperature input is on pin 5
#define FAN 6 // output pin for fan
#define DisplayBacklight A0 // backlight pin A0
#define PowerOffPin 15 // power-off pin 15(A1)
#define PowerOnPin A2 // power-on pin A2
#define taster 17 // rotary encoder click
#define Temp1 27 // critical temperature 1 to ignore PID and turn on fans
#define Temp2 29 // critical temperature 2 to ignore PID and power-off
#define Temp3 31 // critical temperature 3 to ignore PID and hard-power-offint TempSens0; // temperatur sensors 1 – 2
int TempSens1;
int TempSens2;
int pwmprozent; // varible used for calculations (%)
int pwmvolt; // varible used for calculations (volt)
int calc; // varible used for calculations (rpm)
int setpointold;
int tasterValue;
int tasterValueprell;
int tasterstatus;int long seconds;
int long minutes;
int long hours;
int long days;
int long months;
int long years;int screen = 0;
int screenMax = 1;
bool screenChanged = true; // initially we have a new screen, by definition#define TEMPERATURE 0 // defines of the screens to show
#define FLOW 1volatile int NbTopsFan; // measuring the rising edges of the signal
volatile unsigned int encoder0Pos = 0; // encoder value for ISRunsigned char StatusPowerOff = LOW; // Power-Off-Impuls status
unsigned char StatusHardPowerOff = LOW; // Hard-Power-Off-Impuls status
unsigned char Status1 = LOW; // status counter Power-Off
unsigned char Status2 = LOW; // status flow control
unsigned char Status3 = LOW; // status display overheatstatic unsigned long lWaitMillis;
long previousMillis = 0; // store last update
long previousMillislcd = 0; // store last update (lcd switch)
long timer1 = 5000; // timer1 5 seconds
long timer2 = 500; // timer2 0,5 second
long timer3 = 2000; // timer3 2 secondsOneWire oneWire(ONE_WIRE_BUS); // setup temperature sensor
DallasTemperature sensors(&oneWire);//Setup PID
double Setpoint, Input, Output; // I/O for PID
double aggKp=40, aggKi=2, aggKd=10; // original: aggKp=4, aggKi=0.2, aggKd=1, aggressive turning,50,20,20
double consKp=20, consKi=0.5, consKd=2; // original: consKp=1, consKi=0.05, consKd=0.25, conservative turning,20,10,10
PID myPID(&Input, &Output, &Setpoint, consKp, consKi, consKd, REVERSE); // initialize PIDLiquidCrystal lcd(7, 8, 9, 10, 11, 12); // setup lcd
StopWatch SW; // setup for timer counter
void setup()
{
Serial.begin(9600); // start serial Port for Temperature readings
lcd.begin(20, 4);
ClearLCD();
analogWrite(DisplayBacklight, 128);
delay(2000);
showWelcome();
sensors.begin(); // start library
sensors.requestTemperatures(); // send the command to get temperatures
Input = sensors.getTempCByIndex(0); // set input to current temperature
Setpoint = 24; // inintialize desired temperature in deg C
encoder0Pos = 24;myPID.SetMode(AUTOMATIC); // PID setup
// TCCR2B = TCCR2B & 0b11111000 | 0x01; //adjust the PWM frequency, note: this changes timing like delay()
// setup pins
pinMode(FAN, OUTPUT); // output for fan-speed, 0 to 255
pinMode(taster, INPUT); // taster is an input
tasterstatus=digitalRead(taster);
pinMode(encoder0PinA, INPUT); // rotary A input
digitalWrite(encoder0PinA, HIGH); // turn on pullup resistor
pinMode(encoder0PinB, INPUT); // rotary B input
digitalWrite(encoder0PinB, HIGH); // turn on pullup resistor
pinMode(PowerOffPin, OUTPUT); // output for PowerOffPin
digitalWrite(PowerOffPin, LOW); // turn on pulldown resistor
pinMode(PowerOnPin,INPUT); // input for PowerOn control
analogWrite(PowerOnPin, 0);
pinMode(Hallsensor, INPUT); // input for rpm
digitalWrite(Hallsensor, HIGH); // turn on pullup resistor
pinMode(DisplayBacklight, OUTPUT); // output for backlight
analogWrite(DisplayBacklight, 255); // set backlight on// Set up Interupts
attachInterrupt(0, doEncoder, CHANGE); // encoder pin on interrupt 0
attachInterrupt(1, rpm, RISING); // hallsensor pin on interrupt 1lWaitMillis = millis() + 1000; // initial setup overflow
}void loop()
{
SW.start();unsigned long currentMillis = millis();
int sensorValue = analogRead(PowerOnPin); // read value from PowerOnPin
if (sensorValue<50&&PowerOff==HIGH){ //
analogWrite(FAN, LOW); // turn fan off if value = 0
analogWrite(DisplayBacklight, 128); // set backlight low
showOverheat();
}
else if (sensorValue<50&&Status2==HIGH){
analogWrite(FAN, LOW); // turn fan off if value = 0
analogWrite(DisplayBacklight, 128); // set backlight low
show0Flow();
}
else if (sensorValue<50&&Status2==LOW){
analogWrite(FAN, LOW); // turn fan off if value = 0
ClearLCD(); // clear display
analogWrite(DisplayBacklight, 128); // set backlight low
lcd.setCursor(0,1);
lcd.print(" SYSTEM ");
lcd.setCursor(0,2);
lcd.print(" CONTROLLED OFF ");
}
else if (sensorValue>50&&Status2==LOW){ // if value PowerOnPin “high”
analogWrite(DisplayBacklight, 128); // display backlight on
}sensors.requestTemperatures(); // get temperature and give it to the PID input
Input = sensors.getTempCByIndex(0); // sensor for control
TempSens0 = sensors.getTempCByIndex(0); // sensor temp1
TempSens1 = sensors.getTempCByIndex(1); // sensor temp2
TempSens2 = sensors.getTempCByIndex(2); // sensor temp3tasterValue = digitalRead(taster); // read value from click-button
delay(10);
tasterValueprell = digitalRead(taster);
if (tasterValue==tasterValueprell&&tasterValue!=tasterstatus&&tasterValue==HIGH){ // if value “high”
clicked(); // call clicked
tasterValue = tasterstatus;
}if( (long)( millis() – lWaitMillis ) >= 0) // millis is now later than my ‘next’ time(for overflow)
{
lWaitMillis += 1000; // do it again 1 second later
}
else
{
delay(1);
}{
Output = constrain(Output, 0, 255);
Output = map(Output, 0, 255, 60, 255); // MOSFET control between 60-255
pwmvolt = Output*0.049; // volt calculation (V)
pwmprozent = Output*0.3922; // pwm calculation (%)
}if(pwmvolt<4.7){ // display 0 if < 5V pwmvolt = 0; } { seconds = SW.value() / 1000 % 60; // calculate time minutes = SW.value() / 1000 / 60 % 60; hours = SW.value() / 1000 / 60 / 60 % 24; days = SW.value() / 1000 / 60 / 60 / 24 % 30; months = SW.value() / 1000 / 60 / 60 / 24 / 30 % 12; years = SW.value() / 1000 / 60 / 60 / 24 * 365 % 1; } int setpointValue = Setpoint; if (setpointValue != setpointold) { setpointold = Setpoint; ClearLCD(); // clear display lcd.setCursor(0,1); lcd.print(" CHANGING SETPOINT "); lcd.setCursor(0,2); lcd.print(" T SETPOINT:"); lcd.setCursor(13,2); lcd.print((int)Setpoint); lcd.setCursor(15,2); lcd.print("'C"); } else if(sensorValue>50&&setpointValue==setpointold&¤tMillis-previousMillislcd>timer1) // save last time changed display
{
screen++;
if (screen > screenMax) screen = 0; // all screens done? => start over
screenChanged = true;
previousMillislcd = currentMillis;
}
if (screenChanged) // only update screen if screen is changed
{
screenChanged = false; // reset for next iteration
switch(screen)
{
case TEMPERATURE:
showTemperature();
break;
case FLOW:
showFlow();
break;
default:
// cannot happen -> showError() ?
break;
}
}{
NbTopsFan = 0; // set NbTops to 0 ready for calculations
sei(); // enables interrupts
delay (1000); // wait 1 second
cli(); // disable interrupts
calc = (NbTopsFan * 60 / 4.5); // (pulse frequency x 60) / 4,5
}
// compute PID value
double gap = abs(Setpoint-Input); // distance away from setpoint
if(gap<1)
{
myPID.SetTunings(consKp, consKi, consKd); // close to setpoint, be conservative
}
else
{
myPID.SetTunings(aggKp, aggKi, aggKd); // far from setpoint, be aggresive
}
myPID.Compute();if(sensorValue>50&&Input<=Temp1&&Output<=60){ // write PID output to fan if not critical ; set min 5V, lower - turns fan off analogWrite(FAN,0); } else if(sensorValue>50&&Input<=Temp1&&Output>60){ // write PID output to fan if not critical
analogWrite(FAN,Output);
}
else if(sensorValue>50&&Input>Temp1){ // write PID output to fan if critical
analogWrite(FAN,255); // 12V fan
Output = 255; // remember status
}if(sensorValue>50&&Input>=Temp2&&Input
50&&StatusPowerOff==LOW&&StatusHardPowerOff==LOW&&Status1==LOW&&Status2==LOW&&calc<=20){ // reading input, temps, sensor, status and timer digitalWrite(PowerOffPin, HIGH); // soft Power-Off-Impuls on Status2 = HIGH; // remember Status2 on previousMillis = currentMillis; // start count } else if((StatusPowerOff==HIGH!=Status2==HIGH)&&StatusHardPowerOff==LOW&¤tMillis-previousMillis>timer2){ // reading input, temps, sensor, status and timer
digitalWrite(PowerOffPin, LOW); // soft Power-Off-Impuls off
StatusPowerOff = LOW; // remember Power-Off-Impuls off
Status1 = HIGH; // remember Status1 on
previousMillis = currentMillis; // start count
}
else if(sensorValue>50&&Input>=Temp3&&StatusHardPowerOff==LOW){ // reading input, temps, sensor, status and timer
digitalWrite(PowerOffPin, HIGH); // “Hard” Power-Off on
StatusHardPowerOff = HIGH; // remember Hard-Power-Off-Impuls on
SW.stop();
SW.reset();
previousMillis = currentMillis; // start count
}
else if(StatusHardPowerOff==HIGH&¤tMillis-previousMillis>timer1){ // reading input, temps, sensor, status and timer
digitalWrite(PowerOffPin, LOW); // “Hard” Power-Off off
StatusHardPowerOff = HIGH; // remember Hard-Power-Off-Impuls off
previousMillis = currentMillis; // start count
}
}void doEncoder() // pinA and pinB are both high or both low, spinning forward, otherwise it’s spinning backwards
{
if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB))
{
encoder0Pos++;
}
else
{
encoder0Pos–;
}
Serial.println (encoder0Pos, DEC); // print out encoder value to serial
Setpoint=encoder0Pos;
}void rpm () // function calls interupt
{
NbTopsFan++; // function measures the rising and falling edge of the hall effect sensors signal
}void clicked()
{
StatusHardPowerOff = LOW;
Status1 = LOW;
Status2 = LOW; // Hard-Power-Off-Impuls Status2 off
SW.stop();
SW.reset();
ClearLCD();
lcd.setCursor(0,1);
lcd.print(” OVERHEAT STATUS & “);
lcd.setCursor(0,2);
lcd.print(” COUNTER RESET “);
delay(1000);
}void printTime()
{
lcd.print(days);
printDigits(hours);
printDigits(minutes);
printDigits(seconds);
lcd.print(” “);
}void ClockDisplay() // digital clock display of the time
{
lcd.print(months);
printDigits(days);
printDigits(hours);
printDigits(minutes);
lcd.print(” “);
}void printDigits(int digits) // utility function for digital clock display: prints preceding colon and leading 0
{
lcd.print(“:”);
if(digits < 10) lcd.print('0'); lcd.print(digits); } void ClearLCD() // function clear display { lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 2); lcd.print(" "); lcd.setCursor(0, 3); lcd.print(" "); } void showWelcome() { ClearLCD(); // function startup message lcd.setCursor(0, 1); lcd.print(" SMART FAN "); lcd.setCursor(0, 2); lcd.print(" STARTING UP "); lcd.setCursor(12, 2); for (int i=0; i<7; i++){ lcd.print('.'); delay(300); } } void showTemperature() // function display sensors { ClearLCD(); lcd.setCursor(0,0); lcd.print(" T SETPOINT:"); lcd.setCursor(14,0); lcd.print((int)Setpoint); lcd.setCursor(16,0); lcd.print("'C"); lcd.setCursor(0,1); lcd.print(" T H2O:"); lcd.setCursor(14,1); lcd.print(TempSens0); lcd.setCursor(16,1); lcd.print("'C"); lcd.setCursor(0,2); lcd.print(" T CPU:"); lcd.setCursor(14,2); lcd.print(TempSens1); lcd.setCursor(16,2); lcd.print("'C"); lcd.setCursor(0,3); lcd.print(" T GPU:"); lcd.setCursor(14,3); lcd.print(TempSens2); lcd.setCursor(16,3); lcd.print("'C"); } void showFlow() // function display flow, pwm & runtime { ClearLCD(); lcd.setCursor(0,0); lcd.print(" PUMP:"); lcd.setCursor(10,0); lcd.print(calc); lcd.setCursor(12,0); lcd.print("l/h"); lcd.setCursor(0,1); lcd.print(" CONTROL:"); lcd.setCursor(10,1); lcd.print(pwmprozent); lcd.setCursor(13,1); lcd.print("%"); lcd.setCursor(0,2); lcd.print(" FAN:"); lcd.setCursor(10,2); lcd.print(pwmvolt); lcd.setCursor(12,2); lcd.print("V"); lcd.setCursor(0,3); lcd.print(" RUNTIME:"); lcd.setCursor(10,3); ClockDisplay(); } void showOverheat() // function display overheat { unsigned long currentMillis = millis(); ClearLCD(); lcd.setCursor(5,3); printTime(); if (Status3==LOW&¤tMillis - previousMillislcd > timer2)
{
lcd.setCursor(0,0);
lcd.print(” ! OVERHEAT ! “);
lcd.setCursor(0,1);
lcd.print(” SYSTEM “);
lcd.setCursor(0,2);
lcd.print(” TEMP-CONTROLLED OFF “);
Status3 = HIGH;
previousMillislcd = currentMillis;
}
else if (Status3==HIGH&¤tMillis – previousMillislcd > timer2)
{
lcd.setCursor(0,0);
lcd.print(” “);
lcd.setCursor(0,1);
lcd.print(” “);
lcd.setCursor(0,2);
lcd.print(” “);
Status3 = LOW;
previousMillislcd = currentMillis;
}
}void show0Flow() // function display 0-flow
{
unsigned long currentMillis = millis();
ClearLCD();
lcd.setCursor(5,3);
printTime();
if (Status3==LOW&¤tMillis – previousMillislcd > timer2)
{
lcd.setCursor(0,0);
lcd.print(” ! CAUTION ! “);
lcd.setCursor(0,1);
lcd.print(” SYSTEM “);
lcd.setCursor(0,2);
lcd.print(” FLOW-CONTROLLED OFF “);
Status3 = HIGH;
previousMillislcd = currentMillis;
}
else if (Status3==HIGH&¤tMillis – previousMillislcd > timer2)
{
lcd.setCursor(0,0);
lcd.print(” “);
lcd.setCursor(0,1);
lcd.print(” “);
lcd.setCursor(0,2);
lcd.print(” “);
Status3 = LOW;
previousMillislcd = currentMillis;
}
}x ( ergibt zusammen geschrieben den Embarassed Smiley x(.
[/SPOILER]
Aufbau:
[SIZE=”1″]Der Durchflusssensor an pin 3 ist im Bild nicht angeschlossen und der Lüfter hängt hier(Test) nur an 5V.
[/SIZE]
Der Rest folgt noch… -
23. Juli 2012 um 10:07 Uhr #923948spokekillerTeilnehmer
Hi Dirk,ja, den Sketch kannst mir mal zuschicken und ich denke so ein Video wäre auch eine feine Sache. Aber nur wenn es keine Umstände macht…Thanx, Micha
-
26. Juli 2012 um 8:07 Uhr #924075Sc0rpTeilnehmer
Tagchen,@Dirk:Erstmal Fragen über Fragen:1) könntest du für die Anfänger auch eine Bauteilliste erstellen?2) gibt es dafür evtl. auch ein Fritzing-Schema?3) wieviel Leistung kann man damit regeln?4) kann man alle DFM’s anschließen?5) wo kann man die “Klicks/l” der DFM’s anpassen?Ich habe die letzten Tage erfolgreich meine 10 neuen China-Dallas-Sensoren getestet (11 Sensoren gleichzeitig am Nano ;)), und mich am Code versucht – ich schaffe es irgendwie nicht, meine wirklich einfache Aufgabe zu bewältigen: eine Zeile pro Sensor, Kommata-getrennte Ausgabe der Werte (ID bzw. ROM, Typ, Temp. in Celsius).Aber ich bleibe dran …Gestern habe ich mal meinen Sainduno UNO in das Gehäuse von Watterott gepackt, Bilder hab ich gemacht – allerdings in miserabler Qualität (meine Knipse ist für sowas i-wie nicht geeignet *sigh*). Ich war sehr überrascht, wie die beiden zusammenpassen … Link zu Gallerie:http://www.abload.de/gallery.php?key=k5zLd852OT:http://www.heise.de/newsticker/meldung/Arduino-Generalschluessel-zum-Hotelzimmer-1652076.html(wozu so’n µC alles taugt …)Sc0rp
-
26. Juli 2012 um 14:07 Uhr #924089phil68Teilnehmer
Hallo Chris!
1. Ja kann ich machen
2. Nein, da zu Zeitaufwändig
3. Ich hab einen IRF 540 verbaut… total oversized… 100V – 22A(bei 25°) 😆
4. Ja
5. Hier:{
NbTopsFan = 0; // set NbTops to 0 ready for calculations
sei(); // enables interrupts
delay (1000); // wait 1 second
cli(); // disable interrupts
calc = (NbTopsFan * 60 / 4.5); // (pulse frequency x 60) / 4,5
}Sehe gerade, dass das noch die Umdreheungen pro Minute sind 😀 (Test mit Lüfter, wobei die 4.5 auch falsch sind 8-[) Bei einem GMR würde das so aussehen:
calc = (NbTopsFan * 3600 / 492);
um die Liter pro Stunde anzuzeigen.
Da ich ja keine Wakü mehr betreibe, habe ich dann keine Notwendigkeit mehr gesehen weiter zu basteln.
Grüße Dirk
-
27. Juli 2012 um 13:07 Uhr #924119spokekillerTeilnehmer
[SIZE=”4″]Tutorial #12 — “Einfache” Lüfter-Regelung mit Potential für mehr[/SIZE]
Danksagung
Ich bedanke mich diesmal besonders bei Chris Barnes, der die Idee und die Vorarbeit zu diesem Projekt geliefert hat. Desweiteren bei Brett Beauregard, Miles Burton und der Menge Programmierer, die die OneWire Lib ermöglicht haben.
Und natürlich dem MK-Team aus der Bastelecke!Zur Sache…
Benötigte Teile, “hart”:
1x Arduino Uno oder Nano oder entsprechender Klon mit der selben Zahl I/O Pins
1x Lüfter, wie in PCs üblich, aber kein PWM-Lüfter!
1x Drehimpulsgeber, bspw. Alps STEC12 oder STEC11 Serie
1x Temperatursensor Dallas DS18B20(+)
1x Diode 1N4001~1N4007 als Freilaufdiode (ich benutze 1N4005)
1x LCD, 16×2 o.ä., HD44780 kompatibler Chipset
1x Trimmer oder Poti 10kOhm oder Widerstand mit ca 1~5kOhm
1x Widerstand 4,7 kOhm oder ein wenig größer (ich benutzte 8,2 kOhm)
1x IRF510 MosFET oder Vergleichstype
1x 5V Stromquelle, bzw USB Anschlußkabel für Arduino
1x 12V Stromquelle, stabilisiert 12V, >=350mA (vom Lüfter abhängig)
Breadboard, Steckbrücken, also das übliche Kleinmaterial..”soft”
Arduino IDE 1.0 (nicht zwingend, wurde aber nur damit getestet)
PID-library, via Arduino.cc -> http://www.arduino.cc/playground/Code/PIDLibrary
Dallas Library -> http://www.milesburton.com/Dallas_Temperature_Control_Library, bzw http://download.milesburton.com/Arduino/MaximTemperature/DallasTemperature_372Beta.zip
Dallas OneWire Lib 2 -> http://www.pjrc.com/teensy/td_libs_OneWire.htmlGrundlegendes
Wir bauen heute eine Anordnung, die einen Lüfter in Abhängigkeit der gemessenen Temperatur eine DS18B20 Temperatursensors regelt. Dabei kommt eine Methode zum Einsatz, die eine Art “Trendbewertung” macht. Das Konzept ist als “PID Controlling” bekannt. Siehe dazu http://de.wikipedia.org/wiki/Regler#PID-Regler.
Die zum PID passende Library ist oben verlinkt.Wir finden in dieser Schaltung einiges wieder, was in Tutorials 1-4 zur Anwendung kam. Außerdem Elemente, die in Tutorial #6 vorkamen.
Solltet Ihr neu hier sein, dann lest Euch BITTE UNBEDINGT erst die vorgenannten Tuts durch, bevor Ihr hier anfangt. Von den Interrupts lassen wir diesmal zunächst noch die Finger.Wir benutzen einen sogenannten Drehimpulsgeber (DIG, rotary encoder), der zunächst aussieht wie ein Poti, der aber pro voller Umdrehung eine bestimmte Anzahl “clicks”, also Schaltimpulse auf gewissen Pins ausgibt. Es ist übrigens für unser Tut relativ egal ob Ihr einen DIG mit 24, 12 oder 6 Impulsen pro Umdrehung besorgt. Mehr Grundlagen dazu befinden sich unter http://www.arduino.cc/playground/Main/RotaryEncoders, wo es um Längen besser eklärt ist, als ich es könnte.
Für das Auslesen des DS18B20 nutzen wir die OneWire Lib und die dazugehörige Dallas Temperature Control Library. Zum DS18B20 gibt es hier (http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf) ein sehr gutes Datenblatt.
Alle Libraries gehören ordentlich unter ../arduino-1.0/libraries/….
Wir benutzen desweiteren unser altbewährtes, preiswertes und HD44780-kompatibles Text LCD wieder. Dazu nutzen wir die schon bekannte und eingebaute LiquidCrystal Library. Natürlich kann man auch größere Displays verwenden, oder eines mit IIC-Anschluß. Das aber bleibt dann Eurer Experimentierfreude überlassen.
Der genutzte MosFET ist für diesen Zweck ausreichend dimensioniert. Siehe dazu auch Hallo1001s Kommentar weiter unten.
Aufbau
Wir fangen damit an, das LCD zu verdrahten. Siehe nachfolgendes Fritzing.
[spoiler]
Pinmapping:
LCD #1 -> GND (-)
LCD #2 -> +5V
LCD #3 -> Schleifer (= mittlerer Pin) des Trimmers für den Kontrast
LCD #4 (RS) -> Arduino 5
LCD #5 -> GND (-)
LCD #6 (Enable) -> Arduino 6
LCD #7-10 -> OFFEN
LCD #11 (Data4) -> Arduino 7
LCD #12 (Data5) -> Arduino 8
LCD #13 (Data6) -> Arduino 9
LCD #14 (Data7) -> Arduino 10
LCD #15/16 optional Backlight über kleinen Vorwiderstand (180~330 Ohm)
[/spoiler]Die beiden verbleibenden Abgriffe des Schleifers gehen jeweils auf +5V und GND (-), womit der Trimmer zum Spannungsteiler wird.
Fahrt nun damit fort einen DS18B20 über Vorwiderstand so zu beschalten, daß die beiden äußeren Pins auf GND (-) gehen und der mittlere Pin über den 4,7 kOhm Widerstand auf +5V. Verbindet diesen mittleren Pin außerdem mit Pin 12 des Arduino (im Bild unten das gelbe Kabel, die beiden grünen Brücken gehen auf Masse). Mein Widerstand war deutlich größer, das ist okay, nur kleiner als 4k7 darf er nicht sein!
[spoiler]
[/spoiler]Nehmt Euch nun den MosFet vor und betrachtet dieses Bild genauer:
Steckt den IRF510 auf eine freie Stelle des Breadboards so ein, das im Vergleich mit dem nachfolgenden Fritzing-Schema das Pinout von links nach recht “G-D-S” entspricht.
Zur Kontrolle:
G -> geht zum Arduino Pin 11
D -> geht zur Anode der Diode (Seite ohne Ring)
S -> geht auf die gemeinsame MasseschieneEs wird ein wenig klarer, wenn Ihr dieses Bild anseht, welches einen Teil der Schaltung wiedergibt.
Spätestens jetzt dürften einige sagen, “Moment mal!”. Richtig. Wir erinnern uns an das Tut mit dem Leistungstransi TIP-120. Dort mußten wir darauf Acht geben, daß wir die Masseschienen der 5V Quelle unseres Arduino und des 12V Netzteils unseres Lüfters verbinden.
Aber nur die Masse! Verbindet auf keinen Fall die +12V des Lüfter-Netzteils mit den 5V-Eingängen des Arduino. Ihr könntet dadurch unter Umständen Euren Arduino beschädigen. Im harmlosesten Fall läuft Eure Anordnung nur nicht.In unserem Tut speisen wir den Arduino aus der USB-Leitung, daher verbinden wir den GND Pin des Arduino mit der Masseschiene des Breadboards.
So, damit wären wir durch die Verdrahtung fast durch…
Jetzt fehlt nur noch der Drehimpulsgeber. Mein STEC12 hat fünf Pins. Davon gehören zwei zum eingebauten Taster. Ich verzichte auf diese Funktion diesmal. Verbleiben drei Pins auf der gegenüberliegenden Seite. Bitte beachtet das Datenblatt zu Eurem DIG.
Verdrahtung:
Terminal A -> Arduino Pin 2
Terminal B -> Arduino Pin 4
Terminal C -> GND (-)/Masse (Terminal C ist meist der mittlere der drei auf einer Seite angeordneten Pins des DIG)Bild:[spoiler]
[/spoiler]
Bedenkt dabei bitte, daß Ihr unbedingt einen der beiden Signalpins des DIG an Digitalpin 2 des Arduino hängt. Das ist wegen der Konfiguration der Interrupts (welche physisch nur auf Pins 2+3 gemapped werden können) wichtig.Hier nochmal zwei Bilder, die Euch beim Aufbau helfen können.
Von den beiden Klemmen geht die rote auf den Pluspol des separaten 12V NT und schwarz auf den Minuspol.
[spoiler]
[/spoiler]Wenn Ihr nun noch den angehängten Sketch flashed könnt Ihr dem Arduino seine 5V geben und die 12V Quelle dazu einschalten. Der Arduino zeigt einen kurzen “Hallo”-Bildschirm und zeigt sodann die Temperatur an, die er aktuell am DS18 mißt.
Außerdem zeigt er die Vorgabetemperatur, bzw 28 Grad an. Verrichtet mit dem DIG ein paar Klicks in beide Richtungen und schaut Euch die dazu passende Reaktion des “Fan Controllers” an. Ihr werdet ein sehr interessantes Bild erhalten.
Fehlersuch-Hilfe:
[spoiler]
Display zeigt gar nichts an: Spannung abklemmen, Beschaltung der Pins zum Arduino prüfen
Display zeigt imemr noch nichts an: Kontrasteinstellungen am Trimmer verändern
Display zeigt nur Blöcke oder Müll: definitiv Verkabelungsproblem, wahrscheinlich Reihenfolge falsch.Gemessene Temperatur ist 0 oder -127: Prüft die korrekte Verdrahtung des DS18B20… Widerstand evtl vergessen oder eine der Drahtbrücken zur Masse. Läuft das Meßkabel auf den korrekten Arduino-Pin?
Ich drehe am DIG, aber nichts passiert. Ausschalten! Datenblatt prüfen. Verkabelung ist sehr wahrscheinlich falsch. Es könnte auch sein, das die Kabel an den falschen Arduino-Pins sitzen.
[/spoiler]Zähneknirschend muß ich abschließend sagen, daß mir dieses Tutorial so viele Probleme bereitet hat, wie noch kein anderes zuvor. Bis zuletzt habe ich das Prellen, Flattern und Sprünge machen meines DIG nicht hinbekommen. Ich habe nach genauem Hinhorchen am DIG den Verdacht, daß er evtl defekt ist (obwohl nagelneu). Die Tatsache, daß es bei Phil68 einwandfrei läuft gibt der Vermutung zusätzliche Nahrung. Ich hatte wirklich alles ausprobiert, was physikalisch vertretbar war (Abblock-Kondensatoren, etc pp) und auch anderen Testcode benutzt. Leider immer dasselbe.
Bei einem Preis von etwas über 2€ kein Bauteil, das ich gerne nagelneu in die Tonne treten mag.Ich denke diese Schaltung werde ich mittelfristig fest in zwei meiner Rechner verbauen. Ob ich dann wieder mit DIG arbeite oder ggf lieber ein Poti nehme und über analog auslese… wer weiß.
Wer den Code genauer studiert, findet viele interessante Anreize, und auch eine weitere schöne Möglichkeit zur Verwendung von Interrupts. Ihr habt Wissen aus alten Tuts mit ganz neuen Elementen verknüpft und ich bin sicher, daß Ihr auch eigene Ideen bekommt, wie man Impulsgeber sinnvoll einsetzen kann.
Ich hoffe Ihr habt Spaß dabei gehabt. Ich freu mich auf Eure Kommentare.
LG,
Euer MichaPS: die Arbeit, Fritzings zu erstellen ist ein echter Zeitfresser. Ich denke ich werde in Zukunft lieber detaillierte Beschriebungen liefern und Fotos. Nur in besonderen Fällen werde ich Fritzings machen. Sorry, aber das frißt unfassbar viel Zeit in Relation zum Gesamtaufwand.
-
27. Juli 2012 um 21:07 Uhr #924135Hallo1001Teilnehmer
Hallo Dirk!
Ich hab einen IRF 540 verbaut… total oversized… 100V – 22A(bei 25°)
Vorsicht Falle, so oversized ist der IRF540 gar nicht. Der IRF540 hat einen Rds(ON) von gut 0,077 Ohm und das wohlgemerkt bei Vgs von 10V. Ich nehme man an dass Du das Gate direkt am Arduino angeschlossen hast, damit beträgt Vgs nur 5V und damit steigt Rds(ON) zwangsläufig an. Leider finde ich im Datenblatt keine Daten wie Rds(ON) bei 5V aussieht, aber ich schätze mal dass er dann bei wenigstens 0,150 Ohm liegt. Rechne das mal mit „läppischen“ 2A (24W bei 12V) durch:
0,15Ohm * 2A = 0,3V —> 0,3V * 2A = 0,6W Abwärme
Wenn Du den IRF540 nur als „Schalter“ verwendest und damit 2A schaltest, dann fallen bereits 0,6W Abwärme an. Und ich nehme mal an dass Du hier nicht nur ein- und aus- schaltest, Du wirst sicherlich mit PWM arbeiten. Bei PWM kommen noch die Umladeverluste dazu (weis jetzt allerdings nicht wie man die berechnet), so dass die tatsächliche Abwärme sicherlich locker über 1W liegt. Oder anders herum, wenn Du mit 2A „regeln“ willst kommst Du nicht mehr ohne Kühlkörper aus…LG Jens
-
27. Juli 2012 um 21:07 Uhr #924137spokekillerTeilnehmer
Sc0rp;493372 said:
Ich habe die letzten Tage erfolgreich meine 10 neuen China-Dallas-Sensoren getestet (11 Sensoren gleichzeitig am Nano ), und mich am Code versucht – ich schaffe es irgendwie nicht, meine wirklich einfache Aufgabe zu bewältigen: eine Zeile pro Sensor, Kommata-getrennte Ausgabe der Werte (ID bzw. ROM, Typ, Temp. in Celsius).
Aber ich bleibe dran …Ich melde mich dazu bei Dir noch. Hab ein wenig Geduld, ich bin mit dem Kopf zu tief im nächsten Tutorial. Ich kann Dir Code für Mehrfachsensor-Auslesung dann zuschicken.
Was genau meinst Du mit ROM, Typ? Wir reden doch von den DS18B20, ja? Du meinst die Adresse der kleinen Sch*****r? 😀
-
28. Juli 2012 um 0:07 Uhr #924140Sc0rpTeilnehmer
Re,
spokekiller;493438 said:
Was genau meinst Du mit ROM, Typ? Wir reden doch von den DS18B20, ja? Du meinst die Adresse der kleinen Sch*****r? 😀Genau, in dem Beispiel-Sketch heisst das “ROM” – ich vermute, das es die ID des Chips ist. Mein Plan ist es, die kleine “S*h*i**dinger” auf eine (Lüfter-) Molexbuchse zu “kleben” und dann entsprechend zu verkabeln. Die Buchse deshalb, da sie drei Kontakte hat, nicht direkt mit den Lüftern zu verwechseln ist (Buchse auf Buchse passt nich) und keine offenliegenden Kontakte hat. Und da ich gleich alles richtig machen möche, kommt die ID des Chips gleich als Banderole aufs Kabel …
Den “Einzeiler” brauche ich als Vorstufe zum Loggen … grundsätzliches Ziel ist es, auch den Messinterval via Webfontend einstellen zu können.
Sc0rp
-
28. Juli 2012 um 14:07 Uhr #924149spokekillerTeilnehmer
Sc0rp;493441 said:
Re,
Den “Einzeiler” brauche ich als Vorstufe zum Loggen … grundsätzliches Ziel ist es, auch den Messinterval via Webfontend einstellen zu können.Sc0rp
Alles klar, ist so gut wie auf dem Weg zu Dir. Die Ausgabe mußt Du Dir aber noch ein wenig anpassen. :d:
Das mit dem Webfrontend… ich glaube mit dem Frust vom STEC12 im Bauch gehe ich mal von meiner ursprünglichen Idee für das nächste Tut ab. 🙁
Wie wärs, wenn wir mit dem Arduino mal ins Netz gehen und ein paar LEDs zum Leuchten bringen, Temperaturen abfragen etc etc…?
Da kann man wenigstens auch mal kleine, schnelle Erfolge damit haben! :banana:
EDIT: der von Dir gewünschte Code:
-
29. Juli 2012 um 16:07 Uhr #924236Sc0rpTeilnehmer
Hi,
sodele, ich bin nun komplett:
http://www.ebay.de/itm/221081466171?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649 -> meins!spokekiller;493452 said:
EDIT: der von Dir gewünschte Code:Super! Danke dir! Mo/Di hab ich frei, da werde ich wieder mal basteln 😉 und deinen Sketch ausprobieren – btw. das WizNet-Shield und das Nano-EthernetShield sind auch auf dem Weg zu mir … dann wird es langsam Ernst.
Ich habe zwar mit Fritzing noch nicht viel gearbeitet, aber ich würde mich bereit erklären, (eure) Schaltpläne dahin zu übertragen – ich finde die Schema’s ziemlich gut! Sie sind übersichtlich und für Laien besser verständlich … und da Fritzing ja “portable” ist, kann ich es auch überall benutzen 😉
Sc0rp
-
8. August 2012 um 15:08 Uhr #924798spokekillerTeilnehmer
Sc0rp;493545 said:
Ich habe zwar mit Fritzing noch nicht viel gearbeitet, aber ich würde mich bereit erklären, (eure) Schaltpläne dahin zu übertragen – ich finde die Schema’s ziemlich gut! Sie sind übersichtlich und für Laien besser verständlich … und da Fritzing ja “portable” ist, kann ich es auch überall benutzen 😉
Sc0rpAlso ich hab da gar nichts dagegen, wenn Du das machen möchtest. Ich habe immer wieder mal darüber nachgedacht, die alten Tuts zu ergänzen. Aber schlicht der anteilige Zeitaufwand für ein Fritzle hat mich davon abgehalten.
In der Regel halte ich die Tuts auch für Anfänger gut genug beschrieben, um die Verkabelung richtig zu machen.
Das mag nicht immer zutreffen, zugegeben… also wenn Du da unterstützen willst, immer gerne.Allerdings sei auch vorgewarnt, daß im Standardumfang nicht sehr viele Bauteile vorhanden sind. Manche Sachen, ich glaube bspw den Muxer aus einem der ersten Tuts, gab es nicht.
Übrigens ein weiterer letzter Grund, warum es nicht dazu gekommen ist ist, daß sich nie jemand an mich wandte, weil er mit einem Tut nicht zurecht kam. Köntne natürlich auch daran liegen, daß kaum einer die Sachen auch nachbauen will oder eben, daß es so einfach ist, wie ich annehme.
Also, immer mach, ich füge die Dinger dann gerne an den entsprechenden Stellen ein. Ich bin durchaus dankbar dafür.
-
11. August 2012 um 17:08 Uhr #924949K_MenTeilnehmer
Respekt, echt gut
-
14. Oktober 2012 um 22:10 Uhr #927547spokekillerTeilnehmer
Sodele, nachdem mal wieder viel Zeit ohne Beiträge ins Land gegangen ist, und zudem mein Raspberry Pi angekommen ist, ist es nötig mal wieder ein wenig Struktur zu formen.Die dunklen Tage sind im Anmarsch und so habe ich mir überlegt, statt großer und komplexer Teilprojekte, lieber kleine und überschaubare Sachen zu machen.Die Roadmap wären somit aktuell:#13 – Voraussichtlich etwas zum Einstieg in die Nutzung des Ethernetshields, Setup, was es zu beachten gibt#14 – Voraussichtlich etwas zum Einstieg in die Nutzung des Ethernetshields, Wie man übers Netz ein/aus schaltet und Pins ausliest#15 – Voraussichtlich zur Ansteuerung von 7-Segment-Anzeigen#16 – Voraussichtlich zum Thema einfache serielle Datenkommunikation zwischen zwei Arduino an einem Beispiel#17 – Eventuell zum Thema “MyDuino”, oder wie man seine Projekte auf eine Lochrasterplatine bringt ohne dabei sein Prototyping Board zu opfernLeonardo, der neue AlteAußerdem gibt es zwischenzeitlich die Arduino Leonardos. Ich bin noch ein wenig am Hadern mit mir selbst, ob es Sinn macht, mir einen zuzulegen. Würde mich ein Neueinsteiger jetzt fragen, ob UNO R3 oder Leonardo, dann würde ich wohl doch eher zum Leonardo neigen. Dabei muß aber klar sein, daß der Leon noch recht neu ist, und nicht zwingend alle vorhandenen Shields damit laufen. Softwareseitig ist er mittlerweile nach meinem Verständnis gut unterstützt.Preislich gibt es die Leos in dem Preissegment in welchem auch die UNO zu finden sind. Der Chip auf dem Leo ist deutlich moderner und bringt Features mit, die an sich weniger von Einsteigern genutzt werden (bspw selber flashen eines eigenen USB Microcodes).Wer also aktuell einsteigen möchte, der sollte sich neben der Frage, ob der Arduino als Plattform generell für hn/sie geeignet ist auch bei Arduino.cc schlau machen, ob der Leo dem UNO gegenüber der Vorzug zu geben wäre.Und um die Sache schwierig zu machen, gibt es eine Menge Klone, die durchaus Ihre Anerkennung verdient haben. Schaut Euch die obigen Posts von Sc0rp an, da gibt es viele Hinweise zu günstigen Sainduino Kits.AusblickWenn alles läuft, wie ich mir das denke, gibt es das erste Ethershield-Tut gegen Ende nächster Woche. Unter Umständen auch zusammen mit #14Ich habe mir vorgenommen, bis Weihnachten wieder ein wenig Leben in die Bude zu bringen. Drückt mir die Daumen, daß das auch so läuft.Ich freu mich auf Eure Feedbacks.
-
17. Oktober 2012 um 3:10 Uhr #927636Sc0rpTeilnehmer
Re,
und nicht zu vergessen, das es auch andere Duino’s gibt:
http://tiny-circuits.com/products/tinyduino/asm2001/😉
Sc0rp
-
17. Oktober 2012 um 10:10 Uhr #927641spokekillerTeilnehmer
Sc0rp;497298 said:
Re,
und nicht zu vergessen, das es auch andere Duino’s gibt:
http://tiny-circuits.com/products/tinyduino/asm2001/😉
Sc0rp
Ja, die Tiny sind mir die Tage auch vor die Nase gekommen, ein Kollege hat mich drauf aufmerksam gemacht und ich glaube in einem anderen Thread (beim Pi wars wohl) hatte ich sie erwähnt.
Ich find die micro-kompakt Lösung super, vor allem wenn man “wearables”, also in die Kleidung integrierte Elektronik, designen möchte.
Danke für den Link Sc0rp.
-
5. November 2012 um 14:11 Uhr #928983spokekillerTeilnehmer
Hi Leut,
aaaaalso ich bin mal wieder voll abgesoffen, und dabei hatte ich mir wirklich vorgenommen, was zu machen. Mega-Sorry. Schuld dran sind ne Menge Sachen, wie RasPi, Elektronikstuff und RealLife.
Morgen dürfte meine fette Reichelt Order eintreffen, dann hab ich hinsichtlich der Teile zumindest keine Ausrede mehr. Dann könnte ich glatt einen zweiten Thread zum RPi aufmachen, denn vieles ist da erstaunlich simpel umzusetzen.
Gut, — also mal kurze Checklist:
* Wetter schei… -> gut
* Material alles da -> auch gut
* Ordnung inner Werkstatt X_x au weia….
* Zeit …. äh, wie jetzt? Was ist Zeit? Hat jemand ne Katalognummer?Spaß beiseite. Die Firma Watterott macht gerade eine Umfrage auf Ihrer Website, wer Interesse an einer MakerFaire in Deutschland hat. Bitte schaut Euch das mal an. Ich könnt immer heulen, wenn ich sehe, was es an g…uten Veranstaltungen in den US of A gibt und bei uns…? Nix?
Ansonsten bitte ich Interessenten, die gerne einen “MCP23017-e/sp” im DIP28 package hätten oder brauchen können (siehe oben diskutiertes Adafruit IIC LCD Shield, auf dem dieser Chip eingesetzt wird), sich bei mir zu melden. Einzelpreis knapp 2€. Gibt es auch woanders billiger, aber die VK sind bei Mouser.de wirklich der Kracher (außer man käme über 65€ Warenwert).
Tja, ansonsten fällt mir jetzt gerade nichts mehr ein. Ich geb mir Mühe, am Freitag abend zumindest mal das nächste tut mit den Erklärungen zum ETH-Shield reinzustellen.
Achso, doch.. eines noch: hier springen doch auch Leute aus dem Großraum Stuttgart rum… hätte man denn allgemein Lust, sich mal in Stuttgart im shackspace zu treffen? Dabei kann man ja dann auch mal über eine eigene Arduino/RasPi Hacking-Veranstaltung nachdenken?!?!?
Oder man sieht sich auf der Hobby+Elektronik Ende November???
-
5. November 2012 um 16:11 Uhr #928986RenovatioTeilnehmer
Hey,schön das es wieder weiter geht, bin auch irgendwie ein wenig ab gesoffen.Neuer Stoff ist im Anmarsch also geht’s diese Woche weiter.Leider kann ich beim Treffen nicht mit machen, ist gerade ein wenig zu weit weg und hab keine Ferien.In diesen SinneAndre
-
6. November 2012 um 17:11 Uhr #929022Sc0rpTeilnehmer
aaaaaalso:
* abgesoffen: dito, nachdem ich meine Garten auf Vordermann gebracht habe, diverse Möbel auf- und abgebaut habe, Überstunden gebunkert habe und endlich abschließend nach vielen Tests feststellen musste, das die blöde Maus mein Serverboard irreparabel zerstört hat (wohlgemerkt durch Urin *sigh*) …
* Hobby-Elektronik: hmm, könnte man sich ja verabreden 😉
* wegen dem “MCP23017-e/sp” hab ich mal Google befragt: http://de.rs-online.com/web/p/i-o-expander/0403806/ -> wäre das nix?Auch in der nächsten Zeit wird es nix mit Arduino, ich muss erstmal mein Fileserver BiGBOX fertig bekommen, danach muss ich SUPAMAN upgraden und dann bekommt der Wohnzimmer-PC (SCHLUMPF) sein Silent-Upgrade (WaKü) und irgendwie sollte dazwischen meine Workstation ZOCKER noch ihr Radiator-/Lüfter-/Steuerungs-Upgrade erfahren *sigh* – alle wichtigen Teile sind vorhanden, zur Rabattaktion werde ich mir evtl. noch ‘ne ordentliche Pumpe kaufen …
Und wenn ich damit durch bin, kommt dann der Benchtable dran – inkl. Arduino-Messsystem …
Sc0rp
-
6. November 2012 um 21:11 Uhr #929044spokekillerTeilnehmer
Hab nur kurz mal reingeschaut… also ich verstehe nicht, wie ich den MCP23017-e/sp bei RS nicht gefunden habe… und dann liefern die scheinbar innerhalb D VK-frei? Schade, daß die die RPi nur aus UK liefern – *schnellduck* hab aber jetzt wieder nicht genau geschaut :DZum Thema BiGBOX etc… machst Du nen Thread dazu oder bastelst Du ohne Doku hier im Forum?
-
6. November 2012 um 21:11 Uhr #929045Sc0rpTeilnehmer
Re,
[OT]spokekiller;498773 said:
Zum Thema BiGBOX etc… machst Du nen Thread dazu oder bastelst Du ohne Doku hier im Forum?Naja, da ich leider nicht im Besitz einer ordentlichen Kamera bin, lässt sich keine ordentliche Dokumentation machen – hab ich schon versucht *schnüff*. Im Moment dokumentiere ich meine Projekte in mein privates Wiki … vllt. peppe ich sie später auf und ziehe sie um 😉
… nach dem Benchtable … 😉
Sc0rp
[/OT] -
20. November 2012 um 13:11 Uhr #929527spokekillerTeilnehmer
*** Off Topic, aber in eigener Sache ***Leider muß ich jetzt diejenigen enttäuschen, die angesichts des neuen Posts endlich (und zurecht) ein Tut erwartet haben. Zumindest kann ich sagen, daß sich abzeichnet, daß ich wohl bald wieder ein wenig mehr Zeit und Energie dafür haben dürfte. But now to something completely different:Spokekiller zum Anfassen? Den Wirrkopf mal live treffen? Mal Techno-Babbeln mit dem guten Spoke? Das alles ist am kommenden Sonntag (25.11.) auf der Hobby+Elektronik bzw der Modellbau Süd in Stuttgart möglich.Wer sich gerne zwanglos mit mir dort treffen möchte, der kann das tun und soll mir bitte eine PN schicken, damit ich meine Handy-Nr rausrücke, denn sich auf der Messe an einem festen Ort zu fester Zeit zu verabreden erscheint mir zu umständlich.Also bei Interesse dem guten Spoke ne PN bis spätestens Samstag abend, 20.00 ins Postfach gedübelt und dann sehen wir uns Live und in bunt.Würde mich freuen!
-
20. November 2012 um 18:11 Uhr #929538Sc0rpTeilnehmer
Spoke treffen: japp, Hobby-Elektronik: nein – daher schlage ich vor, wir verabreden uns mal in Stgt zu ‘nem Bier bzw. Drink … gern auch zu ‘nem richtigen Steak ;). Dieses Wochenende gehts zeitlich nicht bei mir, Nachtschicht Fr-Sa und Privates am Sa., Familie am So. – da bleibt kein Platz für die Messe …
Sc0rp
-
29. November 2012 um 10:11 Uhr #929979Sc0rpTeilnehmer
Und wieder was neues an der µC-Front:http://smartduino.com/(kleines Video via Golem.de: http://video.golem.de/pc-hardware/9750/smartduino-mit-vier-kernen.html)Sc0rp
-
16. Januar 2013 um 9:01 Uhr #932135Sc0rpTeilnehmer
Und wieder was neues an der µC-Front:
Sc0rp
-
20. Januar 2013 um 8:01 Uhr #932302AnonymInaktiv
:-k Habe jetzt mal alle Seiten übersprungen :+ Und ich weiß nicht ob ich es schon gesagt habe…..Tolle Arbeit die hier macht!Mal ne Frage ob sowas machbar ist…………Ist es möglich eine Wakü Steruerung zu basteln, Mit zwei Wassertemp, Durchflussmessung und zwei Lüfterreglung und Pumpensteurerung?Was meine Idee ist einen Raspbeerie Pi Als Computer zu nutzen, wenn man einen Computer dafür Braucht.Ist sowas schaffbar für einem wie mich der Kaum Ahnung hat von Elektrik? Meine Idee dahinter ist eine Wasserkühlung fürn ne alte XBOX360 damit zu Realisieren.Da ich meine Wakü Steuerung ala aquaero 5LT nicht mehr missen möchte.*Edit*Welche Programmiersprache ist das? Lassen sich die Codes für einen Leicht schrieben der zb.C plus plus gelernt hat?Und wieviel Geld kann man für einen Programm Code verlangen?
-
23. Januar 2013 um 7:01 Uhr #932436spokekillerTeilnehmer
Zaperwood;502256 said:
:-k Habe jetzt mal alle Seiten übersprungen :+ Und ich weiß nicht ob ich es schon gesagt habe…..Tolle Arbeit die hier macht!Danke…. wenn ich momentan nur mehr Zeit hätte um endlich mal hier weiter zu machen.
Zaperwood;502256 said:
Mal ne Frage ob sowas machbar ist…………Ist es möglich eine Wakü Steruerung zu basteln, Mit zwei Wassertemp, Durchflussmessung und zwei Lüfterreglung und Pumpensteurerung?Ganz allgemein, von der Hardware her würde ich mal sagen, ja. U.U. ist einiges was Hallo1001 schon für sich mal entworfen hat da interessant für Dich. Auch hat BigReval ein solches Projekt am Laufen, aber das scheint auch gerade zu ruhen.
Zaperwood;502256 said:
Was meine Idee ist einen Raspbeerie Pi Als Computer zu nutzen, wenn man einen Computer dafür Braucht.Hä? Verstehe ich jetzt nicht, was Du damit sagen willst. 😀
Zaperwood;502256 said:
Ist sowas schaffbar für einem wie mich der Kaum Ahnung hat von Elektrik?Mit etwas Hilfe vielleicht, aber ganz ohne wirds Dir auch schwerfallen das Ding später zu verändern oder zu “troubleshooten”.
Zaperwood;502256 said:
Meine Idee dahinter ist eine Wasserkühlung fürn ne alte XBOX360 damit zu Realisieren.
Da ich meine Wakü Steuerung ala aquaero 5LT nicht mehr missen möchte.Verstanden.
Zaperwood;502256 said:
*Edit*
Welche Programmiersprache ist das? Lassen sich die Codes für einen Leicht schrieben der zb.C plus plus gelernt hat?
Und wieviel Geld kann man für einen Programm Code verlangen?[/QUOTE]
Die Sprahce ist ein von “Wiring” abgleiteter C-Pseudocode. Wenn Du die AVRs direkt in C programmieren wolltest wird der zu erbringende Grund-Aufwand deutlich höher. Aber das Proggen fällt Dir evtl. im Endeffekt leichter, wenn Du die AVR-Spezifika erst mal kennst.
Das mit dem Geld verlangen ist so ne Sache. Im Arduino Umfeld lebt das alles sehr sehr stark vom Open Source Gedanken und Du mußt Dir auch im Klaren sein, daß Programmieren gegen Geld einen Kaufvertrag darstellt und Du dann durchaus auch Pflichten zu erbringen hast oder diese mühsam mit einem entsprechenden Vertrag dann auch auszuschließen. Geld dafür nehmen, so außerhalb des weiteren Bekanntenkreises als kleine Aufwandsentschäigung bspw, würde ich persönlich eher nicht machen. AUßER Du hast mit sowas schon reichlich Erfahrung, und dann rechnest Du den Aufwand nach Stundensatz und ich denke der professionelle Stundensatz für solche Arbeiten liegt je nach Land und Niveau der Programmierung zwischen 25€ ~250€ /h, was Dir jetzt wohl auch nicht viel helfen wird, oder? 🙂 Vielleicht diskutierst Du dieses Thema dann im OT Bereich noch mit anderen Leuten, wird sicher ein professionellter Progger hier unterwegs sein.
*Luft hol …………..*
Und zu guter Letzt, ich würde kein Geld nehmen von Dir für ein wenig Progging und auch wohl kaum einer der Anderen, die hier im Thread mitwirken (unter Vorbehalt).Gruß ^ _^ /~
EDIT: ich glaube es ist ein Werkvertrag, kein Kaufvertrag im klassischen Sinn … ist lange her, daß ich das gelernt hatte… aber cih denk man merkt auf was ich raus wollte
-
23. Januar 2013 um 16:01 Uhr #932451AnonymInaktiv
:+ Ich kann nicht Programmieren aber in der Verwandschaft ist einer der das Kann, gelernt hat.Aber ob der Überhaupt sowas für mich machen würde weiß ich nicht? und ob er es kann?Und sorry für Unverständliche Fragen von mir bin halt erschlagen worden von den Infos hier :d: Positiv gemeint.Ich würde später mal gerne meine XBOX360 mit ner Wakü betreiben und wollte nur indirekt Fragen, wegen den Totgeburt Themen die Anfangen aber nach 3 Posts enden und nichts bei rum ge kommen ist.zb. so ein Thema “Will ne Wakü für die XbOx360 bauen” < als beispieloder den vielen Wakükühlerbau Themen wo alle sich ins Zeug legen und Tipps geben und dann auch nichts passiert.Und dann zu recht "sauer" sindhttp://www.meisterkuehler.de/forum/wasserkuehlung-bastelecke/30775-projekt-xbox-360-wakue.htmlhatte gedacht das man ja für Arduion einen PC braucht für LCD Steruerung und Display Anzeige und da ist mir das Raspberry Pi eingefallen.:banana:
-
23. Januar 2013 um 16:01 Uhr #932453SirSmokeALotTeilnehmer
HuhuFind den Thread hier auch klasse! Mein Arduino Uno ist heute angekommen=)Heut abend werd ich dann mal die ersten Tuts ausprobieren, wenn ich Zeit finde.@ZaperwoodAlso du brauchst den Pc nur um die Sketches auf das Board zu laden. Hast du deine Waküsteuerung mal fertig und betriebsbereit, lädst du den fertigen Sketch auf das Board und brauchst dann keinen PC mehr. Das Board steuert dann alles.
-
23. Januar 2013 um 17:01 Uhr #932454AnonymInaktiv
SirSmokeALot;502422 said:
HuhuFind den Thread hier auch klasse!
Mein Arduino Uno ist heute angekommen=)
Heut abend werd ich dann mal die ersten Tuts ausprobieren, wenn ich Zeit finde.uhhhhhhhhhh Ich wieviel kostet das denn?
Das Starterset?
Ich habe mittlerweile so viel vor zu kaufen das ich nicht weiß wo ich anfangen soll.
zb. ne Abkanntbank :-k mein Thema davon ist auch schon “uralt” Und Gewindeschneider für eventuell Kühlerbau…..wenn ich deinen Kühlerbau sehe gibt es mir Hoffnung mit Minimal Werkzeug sowas zu stemmen.SirSmokeALot;502422 said:
@ZaperwoodAlso du brauchst den Pc nur um die Sketches auf das Board zu laden. Hast du deine Waküsteuerung mal fertig und betriebsbereit, lädst du den fertigen Sketch auf das Board und brauchst dann keinen PC mehr. Das Board steuert dann alles.
:banana: Wird ja immer besser
Danke und @spokekiller auch Dir nochmals Danke…eben in der Eile vergessen….
-
23. Januar 2013 um 17:01 Uhr #932459SirSmokeALotTeilnehmer
Nein hab ihn einzeln bestellt, waren 22€.Und son Laborsteckbrett für 7€.Da ich ja auch schon davor über ne Lüftersteuerung nachgedacht hab, hab ich vor 1-2 Monaten angefangen sämtliche Elektrogerät die weggeschmissen werden sollten zu zerlegen. Daraus hab ich mir Kabel selbst gebastel und um die ersten Tuts zu durchlaufen und ein wenig rumzuspielen gabs da auch genug Zeug.Bin mal gespannt, wie gut das klappt.
-
24. Januar 2013 um 8:01 Uhr #932469spokekillerTeilnehmer
Danke Euch für Euer Lob,ich kann jetzt eben nur mal schnell antworen, deshalb so kurz.Die ersten Tuts sind noch “alter” Code bzw in Arduino-Speak “Sketch”, die mit der alten Umgebung geschrieben sind. Sie sollten mE aber immer noch laufen.Auf Seite 5, ab Post 241 hat Sc0rp mal ein paar der Basics zusammengestellt. Ansonsten würde ich die Einzelteile die Du je nach Tut brauchts grob bündeln und zu Anfang nur mal das bestellen, was Du wirklich brauchst. Ansonsten “müllst” Du Dich schnell zu.Auch wenn es momentan leider immer noch nicht weitergeht, stellt bitte munter Eure Fragen. Nur dadurch bleibt der Thread auch am Leben und wächst dynamisch weiter.GrußEDIT: wer hätte das gedacht, aber Eure Fragen haben mich doch dazu animiert heute mal ne schnelle Stunde zu “opfern” und den ersten Teil des ETH-Tutorials zu schreiben. Falls das so bleibt dürfte dann am Sonntag spätestens was Endgültiges kommen
-
24. Januar 2013 um 22:01 Uhr #932505RenovatioTeilnehmer
Hey Micha, schön zu hören das du heute eine Stunde gebastelt hast. Hoffe doch sehr, dass wir dich dazu animieren können, weiter zu machen, trotz das die Zeit fehlt. Wenn ich mehr Kenntnis hätte, würde ich helfen, aber die hab ich eben mal nicht. :)Viel Spaß beim BastelnAndre
-
24. Januar 2013 um 23:01 Uhr #932506SirSmokeALotTeilnehmer
Das hört sich ja schon mal gut an.Hab jetzt auch die ersten kleinen Versuche hinter mir.Allerdings wird das ganze garnicht so “einfach” wie ich mir das erhofft hatte. Hab ganze zwei 100Ohm Wiederstände gefunden, damit lässt sich nich viel machen in hinsicht auf Leds oder den 7-Seqment bausteinen die ich hab. Hab dann 5 Potis gefunden die ich auf 100-150Ohm gestellt bekommen hab. Allerdings wollten nicht alle Leds des Segments blinkten, muss mal das andere benutzbar machen und testen obs daran liegt.Und gerade versuche ich mich noch kurz an einem einfachem Temperaturfühler auslesen.
-
25. Januar 2013 um 14:01 Uhr #932508spokekillerTeilnehmer
Fein, das ist doch schon mal was! Was füe einen Temperaturfühler hast Du? Einen anlogen oder einen der digitalen, I2C / Onewire?
Ich muß mal schauen es gibt neben den DS18 auch noch zwei andere Alternativen, wobei die Eine mE jetzt nicht so spektakulär ist. Aber die andere hat ne deutlich höhere Auflösung und ist auch über I2C ansprechbar. Preislich aber in der selben Region.
Für einfache Sachen tuts auch ein LM35, aber wie ich schon zu Anfang mal geschrieben habe, sind die analogen Sensoren nicht so bequem.
Cheers
-
26. Januar 2013 um 1:01 Uhr #932523SirSmokeALotTeilnehmer
Naja :+, hab nur an nen Bausatz gedacht der nach Temperatur nen Lüfter steuert. Das geht allerdings über einen Heißleiter mit 10kOhm wie ich feststellen musste. Weiß nich ob das praktikabel ist, aufjedenfall hab ich so noch keine gescheiten Werte rausbekommen.
Hab mir heut mal n paar Widerstände besorgt und gleich noch ne Hand LEDs. Damit und mit nem Poti und Buttons hab ich dann heut mal etwas rumgespielt. Nix Spannendes aber man muss ja mal anfangen=).
Das mit den 7 Segment Anzeigen wollte nicht ganz so wie ich… eine alleine war mir irgenwie zu wenig also hab ich gleih 2 genommen, damit war dann aber Steckboard recht zugebaut und alle Pins am Arduino belegt. Und irgendwo war dann irgendwas falsch und immer ein Balken ging nicht. Also morgen doch erstmal nur eins und dann das 2.
Morgen wollt ich mal schaun ob ich nich noch irgendwo n altes 3310 oder so hab, dafür gibts ja auch ne Menge Anleitungen zum anbinden.
Bin noch sehr Planlos im Datenblätter lesen muss ich sagen…
zb hab ich hier nen BD244B , der sollte wohl bis 80V regeln können? Was ich dort nie richtig rauslesen kann is die Angaben über die Base… also bei nem NPN zb wie viel Volt ich brauche das er durchschaltet bzw. wieviel Volt für volles durchschalten dran muss. -
26. Januar 2013 um 12:01 Uhr #932542spokekillerTeilnehmer
******
PLATZHALTER TUT 14.2 – Aufgewacht!!! Der Uno weckt Rechner über URL getriggert auf
****** -
26. Januar 2013 um 12:01 Uhr #932540spokekillerTeilnehmer
[SIZE=”3″]Tutorial #13 – Mit dem Arduino ins Netz… der Arduino Uno und der Ethernet-Shield[/SIZE]GrundlagenFür den Arduino Uno gibt es einige Erweiterungen, die man schlicht auf die Header der Platine aufstecken kann. Unter anderem gibt es einen Ehternetshield, der auf einem WizNet 5100 Controller basiert. Der Controller stellt dabei einen TCP und UDP Stack zur Verfügung, welche man bequem über eine der vielen Arduino-Libraries kontrollieren kann. Damit ist es u.a. möglich, beispielsweise I/O Operationen über http auf dem Arduino vorzunehmen. Beispielsweise kann man Ausgänge über simples Aufrufen einer URL ein-/ausschalten oder Digital-/Analog-Eingänge auslesen.Mir liegt der Ethernet-Shield nur in seiner einfachen Form vor. Soweit ich weiß ist mein ETH-Shield Version 2. Es gibt eine neuere Fassung R3, die u.a. PoE (Power over Ethernet) über ein zusätzliches Modul unterstützt. Das Tutorial berücksichtigt daher nur meinen R2 Shield. Es sollte aber auch relativ problemlos auf modernere Fassungen des Shields anwendbar sein.Die HardwareDem aufmerksamen Betrachter wird auch sofort auffallen, daß der Shield einen SD-Card Slot trägt. Genauer gesagt einen micro SD-Card Slot. Dieser ist aber erst ab Version R2 inklusive auch wirklich nutzbar. Wer gebrauchte Komponenten erwirbt, sollte dies berücksichtigen.Einen Wermutstropfen gleich vorweg: man kann nicht beides gleichzeitig verwenden. Entweder den ETH-Teil oder den SD-Card Teil. Das liegt daran, daß beide über das SPI (Serial Peripheral Interface, siehe Wikipedia) angesteuert werden. Diese Ansteuerung erfolgt über den ICSP Header (siehe Bild).Der ETH-Shield belegt die Pins 11,12 und 13 auf einem Uno exklusiv für sich (Arduino Mega 50,51,52). Pin 10 wird für die Selektierung des Wiznet Controllers, Pin 4 für die SD Card genutzt. Alle diese Pins stehen Euch für die Verwendung in Euren Schaltungen und Sketches nicht zur Verfügung.Für den Mega gibt es noch einige weitere Dinge zu beachten, welche Ihr auf arduino.cc nachlesen könnt.Wenn Ihr sowohl den WizNet als auch die SD Card verwenden wollt, regeln dass idR die Libraries recht gut. Sofern man eine davon nicht benutzen will, bspw nur die SD-Card, so sagt die offizielle Doku, man müsse die andere Komponente deaktivieren. Ging bei mir bisher aber auch ohne diesen Schritt…Konkret hieße das, Pin 4 als output zu deklarieren und per digitalwrite auf „high“ zu setzen. Um den WizNet zu deaktivieren müßte man Pin 10 als high output definieren.Im Allgemeinen werdet Ihr Euch darüber nicht so sehr den Kopf zerbrechen müssen. Jedenfalls nicht für meine Tutorials. Aber es ist gut zu wissen, wenn man eigene Projekte bauen will.Weitere Details zur Verwendung der Lib und der Ansprache des WizNet Controllers findet Ihr ausführlich kommentiert in meinen Beispiel-Sketches.Der Shield bietet ansonsten eine Datenrate bis zu 100 Mbit/s, welche in der Praxis aber kaum Bedeutung haben sollte, da der auf dem Uno befindliche ATMega 328 gar nicht die Fähigkeit haben dürfte, diesen Durchsatz auch abzuarbeiten.Außerdem wichtig: der RESET auf dem ETH-Shield resettet sowohl den Arduino als auch den Shield!StromaufnahmeAnsonsten ist bei Batteriebetrieb des Arduino Uno mit dem ETH-Shield zu bedenken, daß beide ganz ordentlich Strom ziehen. Ich muß es nochmal nachmessen, aber als ich einen Auftrag für Renovatio erledigt hatte, waren meine 2.3 Ah-Akkus nach etwa 2 Stunden leer. Da sie zu dieser Zeit nicht ganz voll gewesen sein dürften, sollte man von etwa 750~1000mAh ausgehen. Davon verbrennt den Löwenanteil der WizNet 5100.…und was kommt jetzt?Im nächsten Schritt gibts ein wenig “Butter bei die Fische” und wir werden ein Tut durchziehen, in welchem wir mittels eines http-URLs eine LED auf dem Board schalten.Daraufhin kommt die Vorstellung einer Auftragsarbeit für Renovatio, bei der über URL von außen ein “Magic Packet”-Burst Rechner im lokalen Netz des Arduino aufwecken kann.AlternativenEs gibt den Arduino auch als Arduino Ethernet. Preislich gibt sich das nicht viel, nur ist der Aufbau deutlich kompakter und alles auf einer Platine. Was die belegten Pins und die Ansteuerung angeht vermute ich stark, daß diese identisch sein wird.Es gibt auch einige Klone und außerdem auch Netzwerk-Platinen auf Basis eines ENC Chipsatzes. Diese sind ein wenig billiger, sind mW aber auch sher gut ansprechbar, will sagen es gibt Libs dazu.
-
26. Januar 2013 um 12:01 Uhr #932541spokekillerTeilnehmer
Tutorial ist fertig 10.10.2013
Tutorial 14.1 – Computer, Schilde auf Maximum! Äh nein, falsch — Arduino, Mach High Pin 4!!!Was wollen wir machen?
Das Ziel dieses Tutorials wird es sein, einem Arduino Uno mit Ethernetshield per URL mitzuteilen, welche Digitalpins wir einschalten wollen. Das Tutorial bleibt dabei aber mit Absicht sehr einfach gehalten, denn es sollen lediglich die Grundzüge vermittelt werden, damit Ihr zukünftig Aufgaben wie die IP-Konfiguration, das Parsing von URLs etc. selbst einbauen könnt.Wie schwierig ist es?
Nicht wirklich schwierig. Wer nur ein wenig Programmiererfahrung besitzt, wird sich spielend zurechtfinden. Alle Anderen brauchen wahrscheinlich nur wenig Zeit, den Code zu verstehen. Wer bisher keines der Tutorials gemacht hat, kann hier m.E. durchaus ins kalte Wasser springen. :d:Was benötigt man?
privates Netzwerk (Switch/Hub, anderer Rechner, Kenntnis über den IP-Adressbereich, Ethernetkabel)
1x Arduino UNO
1x ETH-Shield
6x 330 Ohm Widerstand (R)
6x Standardtype LED, Farbe ist praktisch egal. Der Vorwiderstand R ist ggf anzupassen
Empfohlen: Breadboard und Verbindungsstrippen, IDE 1.0.1 (oder höher), 9 LEDs mit Vorwiderstand.Grundaufbau:
Baut Euren Arduino samt dem ETH-Shield auf. Das Aufstecken ist bei mir ein wenig fummelig, da der ICSP/SPI Header gerne ein wenig scheps sitzt und dadurch Uno und Shield gerne verkanten. Nicht mit Gewalt.
Verkabelt den RJ45-Port des Shield mit dem Switch/Hub Eures Netzwerkes. Ihr könnt ihn während der Programmierung stecken lassen, das macht normalerweise nichts aus. 🙂Verdrahtet Vorwiderstände und LEDs an die Digitalpins 2-8.
Benutzt bitte keine Pins mit zweistelliger Kennung. Erstens handelt der Sketch das nicht ab, zweiten sind eh die meisten davon durch den ETH-Shield belegt.Programmcode:
Das Einzige was anzupassen ist, ist die IP-Adresse, damit sie auf Euer Netz paßt. Danach den Sketch/Code in die IDE bringen, und auf den Arduino flashen, siehe Anhang zu diesem Thread. Solltet Ihr Probleme haben, den Code zu validieren oder zu kompilieren, gebt mir bitte Bescheid und sagt mir auch, welche IDE Version benutzt wird. Wenn möglich wäre der Fehler en detail auch noch hilfreich.Wie funktionierts?
Also gehen wir mal durch den Sketch/Code…- Wir ziehen die Libraries rein, Ethernet und SPI sind beide ein Muß
- Jetzt definieren wir einige Parameter, die wir für den Ethernet-Teil brauchen. Eure IP müßt Ihr anpassen. Die MAC-Adresse könnt Ihr so lassen, das ist eine Dummy-Adresse.
- der Ethernetserver wird definiert (also der Teil Software, der auf eingehende Pakete lauscht)
Zu void setup()
Wir definieren die serielle Schnittstelle für eventuelles Debugging über den “Serial Monitor” der IDE.
Wir fahren die ETH-Schnittstelle hoch und den Server. Ab JETZT sind wir wirklich im Netz.Zu void loop()
Bei den vergangenen Lösungen sind wir hier mit dem Großteil unseres Sketches zuhause gewesen. Diesmal lösen wir das anders. Denn es könnte ja sein, daß wir neben dem HTTP-Gewurschtl (siehe Sketch) noch einiges anderes machen wollen, was den vorgenannten Teil nur unübersichtlich machen würde.
Deshalb lagern wir besagtes Gewurschtl alles in eine eigene Subroutine/Prozedur “checkClient()”aus. Damit sind wir hier fertig.Zu checkClient()
Per
[code]
EthernetClient client = server.available();
[/code]
Öffnen wir den Datenstrom, der über unseren Server hereinkommt. Dabei ist “client” hier kein reserviertes Keyword und dürfte auch anders heißen. Wir definieren client als “Ethernetclient” und “server.available” ist die eventuell bestehende Verbindung eines Clients zu unserem Shield.
Mittels true/false Abfrage wird kontrolliert, ob eine Verbindung besteht, bevor wir etwas damit anstellen.
Auch wenn die Benennung etwas strikt klingt, so sind das keine Einbahn-Verbindungen. Es kann der Server durchaus Daten zurückschicken. Vielmehr muß man das so betrachten: “wer hat die Verbindung initiiert?”. Siehe dazu auch die .available() Properties der Klassen Server und Client innerhalb der Lib Ethernet (respektive EthernetClient, EthernetServer aber dazu ganz unten mehr).Ab jetzt machen wir es uns so einfach wie möglich. Wir lesen und schreiben nur soviel echtes HTML, wie wir unbedingt benötigen, damit ein Browser nicht aus dem Tritt kommt.
So prüfen wir also ab, ob wir einen Header gesendet bekommen haben und falls ja, so senden wir einen knappen HTTP 200 Response zurück, damit der Browser weiß, daß die Anfrage empfangen wurde. Dieser Vorgang wird durch das Setzen einiger boolean flags dokumentiert, sodaß wir den Header nicht mit jedem Päckchen wieder senden.Jetzt kommt der eigentlich spannende Teil. Mittels
[code]
char c = client.read();
[/code]
beginnen wir, den Input der nach dem empfangenen Header des Browsers kommt, zu interpretieren. Wir wollen URLS haben nach diesem Muster
[code]
http://192.168.100.177/?131214158714
[/code]
Jetzt denkt Ihr sicher “hä, Moment, Du liest doch aber nur “chars” also einzelne Zeichen und damit habt Ihr recht. Wir ignorieren alles was vor dem ersten Fragezeichen kommt und beginnen dann mit der Ausleserei Zeichen für Zeichen. Damit ist dann klar, welcher Pin geschaltet werden soll.
Die folgende switch/case Routine wertet nun alle Möglichkeien von 1-9 aus und feuert einen Befehl an eine weitere Subroutine ab.
Diese bewerkstelligt letztlich die eigentliche Schaltfunktion und aktiviert Pin x für einen kurzen Zeitraum und zieht ihn dann wieder nach unten. Außerdem sind wir noch so nett und drücken dem Browser einen kruden Text zurück, welchen Pin wir aktiviert haben… Und dann fangen wir von vorne an.….und ACTION!
Also, dann, Saft an den Arduino, das Ethernet eingesteckt? Die LEDs verdrahtet? Dann jetzt ab an einen PC im selben subnet und den Browser angeworfen. Zuvor könnt Ihr mit inem schnellen Ping auf die Adresse des Arduino die Verbindung testen. Sollte das nicht tun, zurück auf Anfang.Einen URL absetzen nach obigem Muster. Was passieren sollte ist, daß
(a) die LEDs am Arduino in diesem Muster aufleuchten und wieder ausgehen
(b) im Browser die Ausgabe “Turning on Pin …” kommt. Das ist in der Tat vom Arduino an den Browser zurück gesendeter Text!Bevor jetzt die ersten Seufzer kommen…
Ich hab ja gesagt das ist absichtlich sehr einfach gehalten… Ich wurde oft gefragt “kann man einen Webserver auf einem Arduino laufen lassen”. Und meine Antwort war immer: “wozu denn?”
Es gibt hundert gute Argumente gegen einen kompletten http-response stack. Wenn ich nur Funktionen schalten will, wozu muß ich denn dann komplexe Stringfolgen auswerten? Ihr müßt daran denken, daß jedes Zeichen, das ich vergleiche ja fest in meinem Code eingebettet ist und dort Speicher frißt.
Macht es Sinn, das auf ein EEPROM oder SDE-Card zu betten? Ja, das wäre denkbar. Es gibt auch ein schönes Beispiel, wo man ein JPEG von einer SD Card per http-url abrufen kann. Aber schnell ist natürlich was anderes.
Man wird bei einer Steuerungslösung über HTML-Seiten die Seite entweder lokal lassen oder auf einem echten Webserver liegen lassen. Mittels dort eingebetteter Javascripts oder AJAX kann man dann schöne Regler malen lassen und diese dann URLs in Richtung Arduino abfeuern lassen. Das geht bequem und schnell und spart dem Arduino ne Menge komplexe Sketches und “Stringschubserei” zurück an den anfragenden Client.Mögliche Erweiterung / Anpassung:
[spoiler]
Statt auf ein “?” zu prüfen, kann man außerdem auf ein “/on/” oder “/off/” prüfen, womit es dann möglich ist gezielt einen Pin ein/auszuschalten. Also bspw http://192.168.100.177/on/5.
Außerdem kann man einiges an Fehlerfang Routinen einbauen.
Was ich bspw gemacht hatte, war über einen Optokoppler an einem Digipin einen Rechner per http-URL hart zu resetten. Was auch geht sind Textnachrichten auf ein LCD, oder Relais schalten etc pp.
Ihr müßt allerdings die Routine anpassen und nicht ein einzelnes Zeichen lesen, sondern strings, die Ihr dann parst oder zerlegt.
Und an der Stelle wirds nochmal ein wenig komplex. Wir wissen ja nicht, wann der String zu Ende ist und da client.read() einen DatenSTROM liefert, den wir erst zum Ende der Routine schließen (client.stop()), bleiben uns zwei Möglichkeiten:
A. Wir lesen doch wieder “chars” ein, wie oben, und prüfen auf ein Leerzeichen am Ende, welches dann das Ende signalisiert, wie in unserem Beispiel. Diese bauen wir dann zusammen in einen String, Zeichen für Zeichen, das ist ja nicht schwer. Erst dann fangen wir mit der Auswertung an.
B. client.available() kann auch einen Pointer auf die Länge des empfangenen “Strings” zurückgeben, das sähe dann so aus:
[code]
int _available = client.available();
if (_available> 0) {
client.read(clientline, _available); // liest den URL bis zur maximalen Länge des empfangenen Stroms.
[/code]
Anzumerken, daß beide Methoden eine Kette aus chars erzeugen, nicht zu verwechseln mit der Klasse string. Der Nachteil bei B kann sein, daß man eine Menge Müll einliest, den der Browser oder ein Angreifer mitschickt und damit die Routine in einen Buffer Overflow zwingt.Ich denke das reicht jetzt. Euch dürfte teilweise schon die Birne rauchen… 😀
[/spoiler]Aber … ich will doch auch was lesen!!!
Sicher doch, das geht natürlich auch. Anstelle einer aufwendigen switch/case Routine kann man eine URL abfragen, die bspw. so aussieht http://192.168.100.177/get/sensor1
Man fragt den Datenstrom ab, könnte diesen in einen Array zerlegen und dann die jeweiligen Wörter interpretieren, einen Analog oder Digitalsensor abfragen und den Wert per client.print() zurückgeben.
Aber für den Anfang könnt Ihr einfach die Teile in triggerPin() anpassen, damit sie den angefragten Pin auslesen und zurückschreiben. Die Routinen dafür sind schon im Code, denn wie oben erwähnt schreiben wir ja krude Antworten zurück.“The usual ranting” oder was noch gesagt werden muß…
[spoiler]Ich hatte den Code urprünglich vor nahezu zwei Jahren mal für IDE 0022 geschrieben. Dementsprechend ernüchternd lief der erste Compilerlauf.
Hm… zu schön wäre es gewesen, wenn das auf Anhieb geklappt hätte. So flogen mir also einige Klassen um die Ohren. Bei den Nachforschungen und vor allem bei einem schnellen “Import Library ->Ethernet” wurde mir dann so einiges klar. Es hatte sich durchaus was getan. Es gab jetzt die Möglichkeit, IPAdress anstelle einer byte-declaration zu nutzen. Hmmmm… Client und Server Libs konnten getrennt eingebunden werden. Das macht besonders Sinn, wenn man wenig Speicherplatz hat und sowieso nur eine “Client” – also rein sendende – Verbindung aufbauen will. Wozu denn dazu noch den ganzen Kladeradatsch mitkompilieren den man gar nicht nutzen will. SIC!Schön und gut, aber durch die teilweise Abwärts-Kompatibilität sind einige Definitionen aus alten Codes noch gut, andere muß man isolieren und anpassen.
Ein Beispiel. Wohlgemerkt lediglich Ethernt.h und SPI.h sind eingebunden:
Geht immer noch:
[code]
Server server = Server(80);
[/code]
Sollte aber so lauten:
[code]
EthernetServer server = EthernetServer(80);
[/code]Ging früher:
[code]
Client client = server.available();
[/code]Geht aber nimmer und MUSS jetzt so lauten:
[code]
EthernetClient client = server.available();
[/code]Somit werden die Schwierigkeiten beim Langzeit-Entwickeln im Arduino Feld deutlich. Sucht man Codebeispiele oder prüft die Referenz auf Arduino.cc, so finden sich viele Schnipsel, die mal gut gelaufen sind, und vielleicht auch heute noch laufen. Vielleicht aber auch nicht.
Speziell für Anfänger ist das sicher nicht schön. Man kopiert einen Code, der an sich auch gut aussieht und kriegt das “ums Verrecken” nicht zu laufen.Deshalb bin ich oft so extrem deutlich und sage auch immer, wie ich den Sketch/Code kompiliert habe. Für etwas Fortgeschrittene ist es außerdem gar keine so doofe Idee, ältere IDEs noch vorzuhalten, denn dem AVR auf dem UNO ist es relativ gleichgültig, wie der Urcode aussah, solange er seinen endgültigen Maschinencode ordentlich bekommt.
So kann man alte Schnipsel auch nochmal “schnell neu flashen/uploaden” ohnesich eine Stunde Zeit nehmen zu müssen, alles zu überarbeiten. Allerdings gebe ich auch zu, daß es speziell im Bereich der ETH-Library schon früher besonders oft (viele) Neuerungen gab.Alles nicht so tragisch, denn die Community ist ja groß und hilfsbereit. Dennoch gruselts mich – zugegeben nur ein wenig – grade bei dem Gedanken, den ebenso alten Sketch für das WakeOnLan-Paket für das nächste Tut überarbeiten zu müssen. Bei dem ganzen UDP Geraffel hat sich wohl auch einiges getan.
[/spoiler]Ich hoffe, es hat Euch gefallen. Als nächstes kommt ein Tutorial, in welchem der Arduino diesmal als Sender genutzt wird, welcher über einen elektronischen “Event” (Taster) eine Aktion im Netz auslöst. Das bildet dann die Grundlage für eine Meßwertweiterleitung an einen Dienst (Pachube, Twitter, etc pp) oder eine DB usw usf.
Grüße und gutes Gelingen!
-
26. Januar 2013 um 12:01 Uhr #932531spokekillerTeilnehmer
SirSmokeALot;502497 said:
Naja :+, hab nur an nen Bausatz gedacht der nach Temperatur nen Lüfter steuert. Das geht allerdings über einen Heißleiter mit 10kOhm wie ich feststellen musste. Weiß nich ob das praktikabel ist, aufjedenfall hab ich so noch keine gescheiten Werte rausbekommen.
[……]
Das mit den 7 Segment Anzeigen wollte nicht ganz so wie ich… eine alleine war mir irgenwie zu wenig also hab ich gleih 2 genommen, damit war dann aber Steckboard recht zugebaut und alle Pins am Arduino belegt. Und irgendwo war dann irgendwas falsch und immer ein Balken ging nicht. Also morgen doch erstmal nur eins und dann das 2.
[……]
Bin noch sehr Planlos im Datenblätter lesen muss ich sagen…
zb hab ich hier nen BD244B , der sollte wohl bis 80V regeln können? Was ich dort nie richtig rauslesen kann is die Angaben über die Base… also bei nem NPN zb wie viel Volt ich brauche das er durchschaltet bzw. wieviel Volt für volles durchschalten dran muss.Das Alles kommt mir sehr bekannt vor. Ich sag immer wieder und bemerke vor allem auch immer wieder, daß mir eine Menge an Grundlagen in der Elektronik fehlen.
Einen Vorteil haben wir aber hier im Forum: es gibt ein paar gnädige Bewanderte, die immer wieder mal hier reinschauen und dann Tips geben.Das Gemeine ist manchmal, daß -auch wenn man eigentlich murkst – es doch irgendwie funktioniert und man es infolge dessen das nächste Mal wieder so macht.
Selbst wenn man eine gute Anleitung hat kann es manchmal dennoch in die Hose gehen, bestes Beispiel meine Versuche mit dem Impulsdrehgeber… bei Phil68 hats getan und bei mir nicht ums Verr…. x( 🙁
Wie auch immer, mir machts immer noch Spaß und wenn ich momentan den Kopf nicht in einer Menge RL-Zeugs hätte, dann käme ich auch endlich mal mit meinen eigenen Erweiterungen weiter.
Jetzt schau mer mal, daß ich bis heute abend den ersten Teil des ETH-Tuts drinhabe. Seufz.
Achja, und noch dazu was…. Ich würde wirklich von den analogen Temp-Fühlern abraten. Besorg Dir so nen Dallas DS18, die kosten in gut sortierten Läden zwar 1,80~2,50 pro Stück aber machen deutlich mehr Spaß.
-
26. Januar 2013 um 13:01 Uhr #932546RenovatioTeilnehmer
Da hast du dir was vorgenommen. Schön das du das Tut auch von meinem Auftrag nimmst, aber irgendwie hab ich es bisher noch nicht geschafft ein Arduino zu bestellen. Mal schauen ob ich noch eins anwende oder nicht. Denke aber mal schon. Erstmal geht es darum mein Zimmer fertig zu machen und denke das Arduino folgt sobald, wenn meine Boxen fertig sind.Andre
-
27. Januar 2013 um 17:01 Uhr #932606SirSmokeALotTeilnehmer
So gestern hab ich erstmal nen Lüfter per Poti und Transistor geregelt bekommen. Und die 7-Seqment Anzeige funktioniert auch wunderbar.Handy hab ich leider nur ein 3510i gefunden, hab ich aber auch erst gemerkt als ich es auseinander hatte*g*. Pinbelegung gibt es dazu zwar.. allerdings bekomm ich an das display keine 8 Kabel gelötet, da ist einfach zu wenig Platz bzw. ich bin noch nich geübt genug. Wobei ich auch nur 2mm starkes Lötzinn hab und es bestimmt noch dünnere Drähte gibt, könnte also noch was werden wenn ich dünneres Kabel und Lot bekomme, mal schaun.Als nächstes werd ich mir mal nen Schieberegister und Tempsensoren bestellen und wahrscheinlich dann auch gleich mal n einfacheres Display , wird das beste sein. Und am besten gleich noch son Murxer oder wie das Teil hies.
-
30. Januar 2013 um 9:01 Uhr #932703Apus_ApusTeilnehmer
Hallo,als Neuling mit Arduino möchte ich mein Wunschprojekt kurz beschreiben.Mit diesen Hardware Komponenten,http://www.play-zone.ch/de/digitale-waage-mit-hx711-adc-bis-3kg.htmlhttp://www.play-zone.ch/de/elektronik-kit-zubehoer/avr-arduino-freeduino/arduino-sets-bundles/arduino-uno-atmega328p-pu-mit-protoshield-v5-kompat-board.htmlhttp://www.play-zone.ch/de/snootlab-memoire-kit.htmlmöchte ich eine Waage realisieren, die bei einer spontanen Gewichtsänderung von plus oder minus X Gramm, (z.B. 30 Gramm)mit Datum und Uhrzeit das aktuelle Gewicht auf der SD-Karte protokolliert.Zu jeder Komponente gibt es auch eine Sketch-Datei. >> auf den html-Seiten der LinksWie ich die Sketche miteinander “verheirate” ist für mich noch ein Problem.:?:Wer weiß das? Ich hoffe auf Versändnis für mein Fage.Inzwischen versuche ich mich in den Programm-Syntax hineinzufinden.Wo meine Probleme liegen, zeigt vielleicht folgendes:Wie ich z.B. eine Hx711.h für die Waage wo einordnen muss, damit ich sie als Library mit # include
im Sketch eintragen kann, habe ich schon heraus gefunden. Leider ist mein Wunschtermin an dem es funktionieren sollte (muss), schon Anfang April2013.:+Gruß, Apus^² -
30. Januar 2013 um 15:01 Uhr #932714spokekillerTeilnehmer
Hallo Apus_Apus,also so wie ich das verstehe bist du völlig neu in dem Thema. Dann wäre es an sich gut, sich der Sache in Teilschritten zu nähern. Empfehle Dir, das Beispiel auf “http://arduino-praxis.ch/2012/02/kitreview-sd-card-rtc-logshield/” für den Logger und die Uhr durchzuspielen.Danach würde ich mir die Dokumentation der Waage genauer ansehen, denn die muß zunächst einmal geeicht sein. Danach sollte es mittels library kein großes Problem sein den aktuellen Wert der Messung aus dem ADC auszulesen und in einer Variable abzulegen. Dieser Schritt muß innerhalb des Setups im Sketch passieren.Danach kannst Du in jedem Durchlauf den Wert der Variable mit dem Wert davor vergleichen und triggerst damit je nach Gewichtsveränderung. Eine einfache IF-Klausel reicht dafür. Würde dann empfehlen, einen Sprung in eine Unterroutine zu verwenden, in welcher der Wert ggf mitsamt dem ebenfalls dort ausgelesenen Uhren-Zeitstempel auf SD Karte geschrieben wird.Der Beispielcode der in der Lib für die Waage dabei ist sagt an sich auch schon alles. Nur die Eichung muß eben sein, aber das siehst du ganz prima hier:[code]/* sample for digital weight scale of hx711, display with a HD44780 liquid crtstal monitor * * hardware design: syyyd * available at http://syyyd.taobao.com * * library design: Weihong Guan (@aguegu) * http://aguegu.net * * library host on * https://github.com/aguegu/Arduino */// Hx711.DOUT – pin 9// Hx711.SCK – pin 10#include
Hx711 scale(9,10);void setup() { Serial.begin(9600); scale.setScale(705.0f);}void loop() { double weigth = scale.getGram(); Serial.println(weigth,1); delay(200);}[/code]Für ein erstes Projekt sicher nicht ganz einfach, aber 1 Monat Zeit ist an sich selbst dann reichlich denke ich.Mehr kann ich im Moment nicht dazu sagen, ich müßte die Lib zur Waage genauer studieren und dafür fehlt mir momentan ein wenig die Zeit.EDIT: hab mich vertan, Du hast ja zwei Monate. Na das reicht dann doppelt … selbst wenn Du nur zwei Stunden in der Woche am proggen bist. Nur lernen mußt Du es halt … Schritt für Schritt. Leider. -
30. Januar 2013 um 22:01 Uhr #932725Apus_ApusTeilnehmer
spokekiller;502698 said:
Hallo Apus_Apus,also so wie ich das verstehe bist du völlig neu in dem Thema. Dann wäre es an sich gut, sich der Sache in Teilschritten zu nähern. Empfehle Dir, das Beispiel auf “http://arduino-praxis.ch/2012/02/kitreview-sd-card-rtc-logshield/” für den Logger und die Uhr durchzuspielen.
Danach würde ich mir die Dokumentation der Waage genauer ansehen, denn die muß zunächst einmal geeicht sein. Danach sollte es mittels library kein großes Problem sein den aktuellen Wert der Messung aus dem ADC auszulesen und in einer Variable abzulegen. Dieser Schritt muß innerhalb des Setups im Sketch passieren.
Danach kannst Du in jedem Durchlauf den Wert der Variable mit dem Wert davor vergleichen und triggerst damit je nach Gewichtsveränderung. Eine einfache IF-Klausel reicht dafür.
Würde dann empfehlen, einen Sprung in eine Unterroutine zu verwenden, in welcher der Wert ggf mitsamt dem ebenfalls dort ausgelesenen Uhren-Zeitstempel auf SD Karte geschrieben wird.Der Beispielcode der in der Lib für die Waage dabei ist sagt an sich auch schon alles. Nur die Eichung muß eben sein, aber das siehst du ganz prima hier:
Den Code habe ich hier mal raus genommen, er steht weiter oben.
Für ein erstes Projekt sicher nicht ganz einfach, aber 1 Monat Zeit ist an sich selbst dann reichlich denke ich.
Mehr kann ich im Moment nicht dazu sagen, ich müßte die Lib zur Waage genauer studieren und dafür fehlt mir momentan ein wenig die Zeit.
EDIT: hab mich vertan, Du hast ja zwei Monate. Na das reicht dann doppelt … selbst wenn Du nur zwei Stunden in der Woche am proggen bist. Nur lernen mußt Du es halt … Schritt für Schritt. Leider.
Hi spokekiller,
danke dass Du so detailliert antwortest.
Die Struktur dieses Forums ist mir von einem anderen Forum auch schon vertraut und ich fühlte mich hier gleich gut aufgehoben.
Ich habe Meisterkühler leider erst so spät entdeckt.
Momentan experimentiere ich nur mit einem geliehenen Arduino Duemilanove 😉
Auf mein bestelltes eigene Equipment warte ich noch, kommt vielleicht schon morgen.
Dort wo ich mir den Arduino ausgeliehen habe, kann ich leider keine Hilfe erwarten.In den Sketches müsste ich doch sehen, ob sich die Shields kaskadieren lassen, es nicht zu einer Doppelbelegung der Pins durch das SD-Logger – Shield kommt.
Mit Fritzing, möchte ich mir gerne vorher eine Dokumentation erstellen, damit ich einen Überblick bekomme, wie die Hardware konfliktfrei kombiniert werden kann.
Dazu fehlt mir für den Hx711 ADC die kompatible FZZ Datei.
Die Darstellung der DMS kann ich ersatzweise auch mit Widerständen darstellen.Erst mal vielen Dank.
Gruß, APUS²
[SIZE=”1″]Hier habe ich mal den Versuch gemacht, zu zeigen wie das Hx711 – ADC Modul aussieht.[/SIZE]
-
31. Januar 2013 um 9:01 Uhr #932735spokekillerTeilnehmer
Hi Apus² … zuerst eine Bitte zu einem anderen Thema. Könntest Du es bitte vermeiden so ganz lange Posts komplett zu “quoten”. Kürze das Unwesentliche ggf heraus. Oder einfach ohne zu zitieren antworten.
Sonst wird das ganz schnell irre unübersichlich. Bitte da um Dein Verständnis.Okay, zurück zum Thema. Das wird Dir jetzt u.U. nicht so gefallen:
Du steigst an sich recht hoch ein, das heißt du überspringst ein paar ganz wesentliche Grundlagen. Der Ansatz, eine Doku zu erstellen ist lobenswert, aber ich sage Dir aus eigener Erfahrung, daß ein einfacher Plan auf Papier gezeichnet (Baugruppen und nur die wesentlichen Verbindungen zwischen diesen) jetzt zu Anfang mehr wert ist. Mit Fritzing kannst Du später dokumentieren, denn damit verbrennst Du jetzt eine Menge Zeit.
In den Sketches müsste ich doch sehen, ob sich die Shields kaskadieren lassen, es nicht zu einer Doppelbelegung der Pins durch das SD-Logger – Shield kommt.
Ja, das ist in der Tat so. Beisapielsweise siehst du in dem Code für die Waage, daß sie nur zwei Pins belegt, nämlich 9 und 10. Aber das ist sogar variabel, will sagen frei wählbar.
Die Waage und LCD kommt ja nicht als Shield zum Aufstecken! Das ist ein Modul, das über Kabel auf den Arduino, respektive den Logging Shield gesteckt wird.
Also eines nach dem Anderen. Zum ADC-Modul:
auf der linken Seite sind die Pins, die zum Arduino gehen.
VCC= +5V
DOUT = Data Out, geht an einen Digitalpin, im Beispiel oben an Pin 9
SCK = Signal Clock (?), das würde an sich auf I2C hinweisen… im Beispiel oben an Digitalpin 10
GND = Ground = Masse
Du kannst prinizipiell die Waage separat mit Strom versorgen, also mit einer eigenen Quelle, ABER dennoch mußt Du dann GND auf der Seite des HX711 mit GND auf der Seite des Arduino verbinden, weil es sonst sein kann, daß der Arduino keine sauberen Werte liest.
Die rechte Seite des Moduls geht an die Sensoren der Waage, aber das wird in der Anleitung sicher auch stehen.In diesen Zeilen:
[code]
#include
Hx711 scale(9,10);
[/code]
sagst Du dem Code/Arduino, daß er die Lib einbinden soll und daß die zwei Pins 9 und 10 an DOUT und SCK hängen (die Reihenfolge ist in der Lib fest vorgegeben).
Denk dran, Du mußt die Waage vorher eichen, das ist im Beispiel mittels
[code]
scale.setScale(705.0f);
[/code]
gemacht worden. Der dort eingetragene Wert wird aber bei jeder Waage unterschiedlich sein. Daher “Eichen”. Logisch, ne? 😀Der Arduino Code läuft danach zyklisch durch den Abschnitt void loop(){}, wobei hier im Beispiel mittels scale.getGram() der Wert in Gramm ausgelesen wird.
Ich empfehle nochmals dringend, sich das zu Anfang mittels einfachen Aufbaus und der Beispiele zumindest das Nötigste an Grundlagen zu erfassen…. dann fällt Dir Vieles sehr sehr viel leichter.Das Display, das Du geordert hast, ist ein HD44… kompatibles, daß ist super einfach. Du kannst sehen, wie man ein Display dieser Sorte anklemmt, wenn Du vorne unter meinen ersten Tutorials mal reinschaust.
Das Display belegt *äh* *grübel* ich glaube 6 DigitalPins…. (zwei für Ansteuerung und 4 für Daten) damit ist viel voll…. ABER das ist gar nicht schlimm, weil die SD Card Logger Shields die SD Karte über SPI (Serial Peripheral Interface) ansprechen und die DS1307 Echtzeituhr wird über I2C angesprochen. NA, platt jetzt? 😀
Auf was ich damit hinaus will ist, daß diese Anschlußarten u.a. auf der Seite der Analogpins stattfindet und Du Dir damit keine Sorgen machen mußt über “Konflikte” wegen der Pins und ob sie vielleicht nicht reichen könnten.
So. Das Nächstbeste ist, jetzt erstmal auf die Hardware zu warten und dann kleinere Experiment zu machen.
Meine Empfehlung:
1) Experiment Waage und ADC an Arduino, Werte über Serial Monitor (ist in der Arduino Software) mittels USB Anschluß auszulesen, Code ist im “examples” Verzeichnis der Lib.
2) Experiment Waage und LCD an Arduino, Werte über Display ausgeben lassen -> siehe Link zum externen Tutorial von oben, bzw mein tut fürs Display.Erst danach würde ich an den ganz komplexen Teil gehen. Weil … sollte das nicht gleich tun, dann ist das IRRE FRUSTRIEREND und ich spreche da aus vielen eigenen Erfahrungen.
So, jetzt muß ich leider weg. Bitte beherzige meinen Rat und schau Dir das in der Theroie mal vorher an. Wenn du dann die Hardware hast garantiere ich Dir schnelle Fortschritte, aber Du mußt ein wenig Geduld am Anfang haben.
Falls Du nicht weiterkommst: viele Bilder machen, den Code anheften und erstmal nichts verändern. Wir helfen dann weiter.
Bis dann!
-
31. Januar 2013 um 15:01 Uhr #932749Apus_ApusTeilnehmer
Hallo spoekekiller,
:respekt: Danke, Du gibst Dir wirklich Mühe mit mir.
Von dem was Du schreibst, habe ich alles verstanden. [Wirklich!;)] Das mit der notwendigen Dokumentation muss ich noch etwas näher erklären.
Selbstverständlich werde ich die nicht sofort mit Fritzing machen. Aber wenn ich mir jetzt im Moment des Entstehens nicht genau notiere,
über welche Hürden ich springen musste, dann gehen die wichtigen Einzelheiten verloren.
Dokumentieren kann ich für mich vorerst noch mit den mir vertrauten Mitteln, da verbrenne ich keine unnütze Zeit.
Viele Dokumentationen, werden von “Könnern und Spezialisten eines Themas verfasst” und sind deshalb oft nicht mehr selbsterklärend.
Dokumentationen sollen Fragen beantworten bevor sie gestellt wurden. Das versuche ich. Deshalb gefällt mir Deine Erklärung so gut.
Du machst Dich mit dem Thema vertaut —- und antwortest direkt.Wenn alles läuft, kann ich immer noch die Dokumentation zusammen mit Fritzing —- schön gestalten —- :d:
Leider muss ich auf “mein arduino equipment” doch noch eine Woche warten. Aber inzwischen kann ich die Zeit nutzen.
Heute habe ich die kleine Alu-Wanne, die ich als Waagschale in den Kasten einbauen muss, in Auftrag gegeben.
Wie ich dann am Rand die Abdeckung gegen Verschmutzen konstruiere, entscheide ich erst wenn ich die Waagschale habe.Gruß, Apus²
-
1. Februar 2013 um 9:02 Uhr #932788spokekillerTeilnehmer
Verschmutzung … ja, richtig… die kleinen Kerle machen ja ordentlich Dreck…Klingt ganz prima, was Du da schreibst und ich unterstreiche das mit den Dokus von Spezis. Der Anlaß beim Starten des Threads war für mich meine eigenen Schritte zu dokumentieren und anderen zeigen zu können was bei mir getan hat und was nicht, sodaß andere Einsteiger es etwas leichter haben.Ich freue mich über Deine positive Rückmeldung und daß Dir meine Erklärungsweise gefällt.Freue mich auf Deine nächsten Schritte!Meiner einer will mal sehen, daß er am Samstag die zwei ausstehendenEthernet-Tutorials einstellt…
-
2. Februar 2013 um 22:02 Uhr #932883Apus_ApusTeilnehmer
Für Kühler Steuerung geeignet.
Bei meinem Projekt habe ich letztes Jahr 2 X 6 Temperaturen messen und aufzeichnen müssen.
Dazu habe ich mir dieses Modul mit den 12 Dallas Sensoren gekauft.
Dieses Modul kann aber mehr als nur MESSEN!http://www.abacom-online.de/html/realview.html
http://www.electronic-software-shop.com/bundles/usb-temperaturerfassung-komplettset.html&language=deDie Anpassung an ein Projekt bei dem Lüfter oder Pumpen ein/aus – geschaltet werden müssen,
ist mit der Software sehr einfach, wenn nicht alle 12 Temperaturen benötigt werden.
Es können damit Relais oder entsprechende Leistungsschalter angesteuert werdenFür ein Mathematik – FORUM habe ich damit diese 24h-Messaufgabe aufgezeichnet und mit den CSV-Daten und Excel dargestellt.
https://dl.dropbox.com/u/87871427/Teekannenvergleich-06.jpgIch fand auch den PREIS gerechtferigt, denn es war nach dem Einbau in ein schönes Gehäuse, sofort einsetzbar. 😉
https://dl.dropbox.com/u/87871427/%C2%B5PIO-Box%20auf%20Stativ-h-min.jpg…….. und falls jemand an dieser Liste Interesse hat:?::?::?:
Direkt nach einer Erst-Installation von ARDUINO 1.0.3 auf einem zweiten PC habe ich diese komplette Liste der Intallation erstellt.
https://dl.dropbox.com/u/87871427/ARDUINO-IDE_Ordner%20%20und%20Files%20%20%20f%C3%BCr%20MK.htmlGruß, Apus²
-
3. Februar 2013 um 9:02 Uhr #932887Apus_ApusTeilnehmer
Ein sonniges HALLO zum Sonntag,
ich habe heute mal ganz klein angefangen und für dem Arduino Mega
eine erste BLINK-RED Sketch geschrieben und ausprobiert. \D/Dabei habe ich gleich auch etwas mit den Variablen gespielt.
Es läuft wie gewollt, auf ANHIEB. :banana:
Nachher versuche ich mal mit dem was ich “jetzt kann” 😉
— als just for fun — eine ROT–GELB–GRÜN —– Ampel zu realisieren.
Das gibt es zwar irgendwo schon, aber nur SELBST-TUN übt. :+Gruß, Apus²
-
3. Februar 2013 um 16:02 Uhr #932908Apus_ApusTeilnehmer
Nach dem das so schön ohne Probleme funktioniert hat, habe ich BL….. geleckt ….. 🙂
……..und mich gleich auch noch an der Ampel versucht.
Von den LED Dioden, brennt nur die ROTE LED hell, bei GELB und GRÜn musste ich den Vorwiderstand reduzieren. Aber die Logik funkt so wie gewollt. 🙂
Wie das mit dem direkten CODE und Bild einfügen hier funktioniert, ❓
probiere ich ein anderes Mal aus und hänge von mein Ergebnis nur den Link an.
Zum Anhängen ist es als Gesamtansicht zu groß geworden.Gruß, Apus²
Das Wesentliche sollte erkennbar sein.
https://dl.dropbox.com/u/87871427/AMPEL02_Bc.jpgFür die Einzelbilder, habe ich das eine Bild noch etwas umgestellt. :+
-
3. Februar 2013 um 18:02 Uhr #932918Apus_ApusTeilnehmer
Ich möchte nur das LCD Keypad Shield auch am Arduino Mega betreiben.Wo finde ich den korrekten Programm-Code?Denn schon bei der Zuordnung der LCD4Bit LIB, kommen Fehler die eventuell auf einen alten CODE hinweisen, ODER die LCD4LIB ist nicht an der richtigen Stelle?[CODE]B:\arduino-1.0.3\libraries\LCD4Bitmode\LCD4Bit_mod.cpp:29:57: error: WConstants.h: No such file or directoryB:\arduino-1.0.3\libraries\LCD4Bitmode\LCD4Bit_mod.cpp: In member function ‘vIch mache hier mal etwas Platz, da sich für mich die Frage inzwischen erledigt hat.B:\arduino-1.0.3\libraries\LCD4Bitmode\LCD4Bit_mod.cpp: In member function ‘void LCD4Bit_mod::leftScroll(int, int)’:B:\arduino-1.0.3\libraries\LCD4Bitmode\LCD4Bit_mod.cpp:225: error: ‘delay’ was not declared in this scope[/CODE]Aber so viele Fehler sind es nicht. :+Gruß, Apus²
-
4. Februar 2013 um 15:02 Uhr #933001Apus_ApusTeilnehmer
Hi Spokekiller,
jetzt hänge ich hier auch fest.
LG Apus²
-
4. Februar 2013 um 16:02 Uhr #933003spokekillerTeilnehmer
Apus_Apus;502950 said:
Hi Spokekiller,jetzt hänge ich hier auch fest.
LG Apus²
Wenn ich das jetzt richtig sehe, dann fehlt eine Zeile vor void setup(), die das LCD setup, also die Pinzuordnung vornimmt.
Üblicherweise sieht das bei einer direkten Verdrahtung, wie in meinem Tut, dann so aus:
[code]
// include the library code:
#include// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() {
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print(“hello, world!”);
}void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
[/code]
Der Compiler beschwert sich bei Dir, weil er lcd als Klasse (das ist es glaube ich) nicht kennt. Ob man das auch für den Button-Shield so machen kann, weiß ich nicht, denn meines Wissens nutzt der einen I²C Expander. Also dürfte das LCD darauf auch via I2C angesprochen werden. Und sollte das so sein, dann dürfte der obige code nicht laufen, weil er kein I2C nutzt. Dann wäre der Code generell unzureichend, weil ja auch die I2C-Adresse etc pp fehlen würde. Will sagen ein Setup für ein per I2C angeschlossenes Display sähe ganz anders aus.Ist denn bei dem Shield kein Beispielcode dabei, womit man bspw einfach nur mal ein wenig Text ausgeben kann?
-
4. Februar 2013 um 16:02 Uhr #933004spokekillerTeilnehmer
Also beim Keypad Shield ist das Display offenbar nicht über I2C angesprochen.
Ein Beispielcode, woran man den Aufbau des Setups vor der void loop() erkennen kann ist u.a. hier zu finden:
http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_%28SKU:_DFR0009%29Wenn Du da mal schaust, das sieht doch etwas anders aus, als in Deinem Beispiel.
EDIT: ich meine das untere der beiden Listings.
-
5. Februar 2013 um 0:02 Uhr #933026Apus_ApusTeilnehmer
Hallo Spokekiller,war das eine Prozedur!\D/[CODE]//Sample using LiquidCrystal library#include
/******************************************************* This program will test the LCD panel and the buttonsMark Bramwell, July 2010 ********************************************************/ // select the pins used on the LCD panelLiquidCrystal lcd(8, 9, 4, 5, 6, 7); // define some values used by the panel and buttonsint lcd_key = 0;int adc_key_in = 0;#define btnRIGHT 0#define btnUP 1#define btnDOWN 2#define btnLEFT 3#define btnSELECT 4#define btnNONE 5 // read the buttonsint read_LCD_buttons(){ adc_key_in = analogRead(0); // read the value from the sensor // my buttons when read are centered at these valies: 0, 144, 329, 504, 741 // we add approx 50 to those values and check to see if we are close if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result if (adc_key_in < 50) return btnRIGHT; if (adc_key_in < 195) return btnUP; if (adc_key_in < 380) return btnDOWN; if (adc_key_in < 555) return btnLEFT; if (adc_key_in < 790) return btnSELECT; return btnNONE; // when all others fail, return this...} void setup(){ lcd.begin(16, 2); // start the library lcd.setCursor(0,0); lcd.print("Push the buttons"); // print a simple message} void loop(){ lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over lcd.print(millis()/1000); // display seconds elapsed since power-up lcd.setCursor(0,1); // move to the begining of the second line lcd_key = read_LCD_buttons(); // read the buttons switch (lcd_key) // depending on which button was pushed, we perform an action { case btnRIGHT: { lcd.print("RIGHT "); break; } case btnLEFT: { lcd.print("LEFT "); break; } case btnUP: { lcd.print("UP "); break; } case btnDOWN: { lcd.print("DOWN "); break; } case btnSELECT: { lcd.print("SELECT"); break; } case btnNONE: { lcd.print("NONE "); break; } } }[/CODE]Mit diesem Code läuft in diesem Test sogar ein Counter und zeigt die Key-Nummer nur an, solange gedrückt wird.Danke für die GEDULD!Gruß, Apus² Binäre Sketchgröße: 3.382 Bytes (von einem Maximum von 258.048 Bytes) -
5. Februar 2013 um 12:02 Uhr #933033spokekillerTeilnehmer
Na prima! Wie ich sehe hat dich das aber bis tief in die Nacht beschäftigt. Ist aber ein gutes Gefühl, wenn sowas dann klappt.
Schön.
-
5. Februar 2013 um 13:02 Uhr #933035Apus_ApusTeilnehmer
spokekiller;502982 said:
Na prima! Wie ich sehe hat dich das aber bis tief in die Nacht beschäftigt. Ist aber ein gutes Gefühl, wenn sowas dann klappt.Schön.Hallo Spokekiller,zuvor waren einige Ablenkungen unterwegs.;)Zu der Zeit hatte ich dann die nötige RUHE zum…:-k……. manchmal mag ich ein Problem auch nicht loslassen.:+Gruß, Apus²
-
7. Februar 2013 um 1:02 Uhr #933119Apus_ApusTeilnehmer
Hi SpokeKiller,
es wird Dich sicher freuen, heute habe ich etwas gestöbert und verstanden. :-k
Eigentlich wollte ich mal den DS18B20 am Arduino testen.
Aber so weit musste ich nicht gehen.Ich habe ganz simpel, diesen Code mal ausprobiert.
[CODE]/*
DigitalReadSerial
Die Daten an Port 2 werden eingelesen und auf dem Serial Monitor ausgegeben.
*/
void setup() {
Serial.begin(9600);
pinMode(2, INPUT);
}void loop() {
int sensorValue = digitalRead(2);
Serial.println(sensorValue, DEC);
}[/CODE]Mit einem 10KOhm Widerstand habe ich am PIN 2 dann die 1-er im Monitor erzeugt.
Morgen ( :+ nachher ) werde ich mal die Pins der Waage anhängen.
………und hoffentlich sehen, dass was passiert.
Gruß, APUS²
-
7. Februar 2013 um 15:02 Uhr #933087Apus_ApusTeilnehmer
Hallo,
mit einer Rückmeldung vom Lieferanten der Waage, habe ich heute meinen Plan geändert und mich erst mal darum gekümmert.Schon heute Morgen, habe ich mit den original Sketch-Files aus dem
File-1357318777.zip keine Fehlermeldungen beim Kompilieren.Leider funktioniert das Sketch “LiquidCrystal” mit dieser PIN-Zuordnung nicht.
[CODE]// LCD.RS – pin 12
// LCD.En – pin 11
// LCD.D4 – pin 5
// LCD.D5 – pin 4
// LCD.D6 – pin 3
// LCD.D7 – pin 2LiquidCrystal lcd(12, 11, 5, 4, 3, 2);[/CODE]
Die Hardware des LCD Keypad Shield hat fogende PIN-Zuordnung.
[CODE]// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);[/CODE]Wenn ich das ändere, kommt es zu diesen Fehlermeldungen
[CODE]LiquidCrystalScale.cpp.o: In function `__static_initialization_and_destruction_0′:
B:\arduino-1.0.3/LiquidCrystalScale.ino:27: undefined reference to `Hx711::Hx711(unsigned char, unsigned char)’
B:\arduino-1.0.3/LiquidCrystalScale.ino:27: undefined reference to `Hx711::~Hx711()’
LiquidCrystalScale.cpp.o: In function `loop’:
B:\arduino-1.0.3/LiquidCrystalScale.ino:38: undefined reference to `Hx711::getGram()’[/CODE]An der Stelle, kann ich nur noch versuchen, ob ich eines der beiden DV16400 S2FBLY 16×4 Display am Arduino Uno zum Laufen bringe.
Vielleicht bekomme ich aber auch von Play-Zone eine brauchbare Rückmeldung. (?)
Ich würde mich aber auch sehr darüber freuen, wenn hier beim MK eine helfende Rückmeldung schon eher kommt. 🙂Guß, Apus²
[SIZE=”1″]Das Bild ist die Vorschau zu der Fritzing_Datei im ZIP.[/SIZE]
-
8. Februar 2013 um 12:02 Uhr #933157Apus_ApusTeilnehmer
Hallo Spokekiller & @ Alle,in esrter Linie spreche ich die WIN7 User an.Was kann der Grund dafür sein, dass ich aus dem Explorer heraus mit LiquidCrytalScale.ino Arduino-IDE und den Sketch starten kann, dann auch das Kompilieren funktioniert. Nur wenn ich das selbe Sketch aus dem IDE heraus lade, lässt es sich nicht kompilierenBeispiel der Fehlermeldungen:[CODE]C:\Users\APUS\Arduino\arduino-1.0.3\libraries\Hx711\Hx711ADC.cpp:8:19: error: Hx711.h: No such file or directoryC:\Users\APUS\Arduino\arduino-1.0.3\libraries\Hx711\Hx711ADC.cpp:10: error: ‘Hx711’ has not been declaredC:\Users\APUS\Arduino\arduino-1.0.3\libraries\Hx711\Hx711ADC.cpp:10: error: expected constructor, destructor, or type conversion before ‘(‘ tokenC:\Users\APUS\Arduino\arduino-1.0.3\libraries\Hx711\Hx711ADC.cpp:25: error: expected constructor, destructor, or type conversion before ‘::’ tokenC:\Users\APUS\Arduino\arduino-1.0.3\libraries\Hx711\Hx711ADC.cpp:30: error: ‘Hx711’ has not been declaredC:\Users\APUS\Arduino\arduino-1.0.3\libraries\Hx711\Hx711ADC.cpp:30: error: ‘byte’ was not declared in this scopeC:\Users\APUS\Arduino\arduino-1.0.3\libraries\Hx711\Hx711ADC.cpp:31: error: expected ‘,’ or ‘;’ before ‘{‘ token[/CODE]aber ohne Fehlermeldung speichern. [ ….damals waren die Files noch nicht in ihrem richtigen Ordner]Gruß, Apus²
-
8. Februar 2013 um 23:02 Uhr #933182spokekillerTeilnehmer
Hi,
die erste Zeile ist ausschlaggebend. Aus irgendeinem mir nicht ersichtlichen Grund findet er die Lib nicht.
Alle weiteren Zeilen sehen übel aus, aber kommen nur als Folge des “Ur-Fehlers” zustande. Vorasugesetzt es sind nicht wirkliche Syntaxfehler o.ä.
Zum Rest hast Du auch eine PN von mir.
Cheers
-
10. Februar 2013 um 19:02 Uhr #933221Apus_ApusTeilnehmer
Hallo mal an Alle,
damit auch mal was klappt, habe ich heute mal versucht einen DS 18B20 anzuschließen.
Sonntagsarbeit ist zwar eigentlich nicht so schön, aber es hat Spaß gemacht.
Gruß, Apus²
Aber auch bei der Waage lasse ich nichts unversucht.:)
-
10. Februar 2013 um 22:02 Uhr #933235Apus_ApusTeilnehmer
Apus_Apus;503209 said:
Hallo mal an Alle,damit auch mal was klappt, habe ich heute mal versucht einen DS 18B20 anzuschließen.
Sonntagsarbeit ist zwar eigentlich nicht so schön, aber es hat Spaß gemacht.
Gruß, Apus²
Aber auch bei der Waage lasse ich nichts unversucht.:)
[CODE]
ROM = 28 FD 48 CA 3 0 0 37
Chip = DS18B20
Data = 1 52 1 4B 46 7F FF E 10 FF CRC=FF
Temperature = 21.12 Celsius, 70.02 Fahrenheit
ROM = 28 13 50 CA 3 0 0 4F
Chip = DS18B20
Data = 1 55 1 4B 46 7F FF B 10 D0 CRC=D0
Temperature = 21.31 Celsius, 70.36 Fahrenheit
ROM = 28 17 88 AA 3 0 0 63
Chip = DS18B20
Data = 1 2C 1 4B 46 7F FF 4 10 14 CRC=14
Temperature = 18.75 Celsius, 65.75 Fahrenheit
ROM = 28 CF 1E CA 3 0 0 BD
Chip = DS18B20
Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1
Temperature = 21.37 Celsius, 70.47 Fahrenheit
No more addresses.ROM = 28 FD 48 CA 3 0 0 37
Chip = DS18B20
Data = 1 52 1 4B 46 7F FF E 10 FF CRC=FF
Temperature = 21.12 Celsius, 70.02 Fahrenheit
ROM = 28 13 50 CA 3 0 0 4F
Chip = DS18B20
Data = 1 54 1 4B 46 7F FF C 10 FD CRC=FD
Temperature = 21.25 Celsius, 70.25 Fahrenheit
ROM = 28 17 88 AA 3 0 0 63
Chip = DS18B20
Data = 1 2C 1 4B 46 7F FF 4 10 14 CRC=14
Temperature = 18.75 Celsius, 65.75 Fahrenheit
ROM = 28 CF 1E CA 3 0 0 BD
Chip = DS18B20
Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1
Temperature = 21.37 Celsius, 70.47 Fahrenheit
No more addresses.ROM = 28 FD 48 CA 3 0 0 37
Chip = DS18B20
Data = 1 52 1 4B 46 7F FF E 10 FF CRC=FF
Temperature = 21.12 Celsius, 70.02 Fahrenheit
ROM = 28 13 50 CA 3 0 0 4F
Chip = DS18B20
Data = 1 55 1 4B 46 7F FF B 10 D0 CRC=D0
Temperature = 21.31 Celsius, 70.36 Fahrenheit
ROM = 28 17 88 AA 3 0 0 63
Chip = DS18B20
Data = 1 2C 1 4B 46 7F FF 4 10 14 CRC=14
Temperature = 18.75 Celsius, 65.75 Fahrenheit
ROM = 28 CF 1E CA 3 0 0 BD
Chip = DS18B20
Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1
Temperature = 21.37 Celsius, 70.47 Fahrenheit
No more addresses.
[/CODE]Mehr als 4 Sensoren, bringe ich auf dem haben Steckbrett nicht unter.
Der dritte Sensor liegt auf dem Fußboden. Brrrrrrrrrrrr. 😉Gruß, Apus²
[CODE]R= 28 FD 48 CA 3 0 0 37 Der Sensor ist ein Typ der DS18B20 Familie.
P= 1 3F 1 4B 46 7F FF 1 10 7A CRC= 7A
R= 28 13 50 CA 3 0 0 4F Der Sensor ist ein Typ der DS18B20 Familie.
P= 1 46 1 4B 46 7F FF A 10 85 CRC= 85
R= 28 17 88 AA 3 0 0 63 Der Sensor ist ein Typ der DS18B20 Familie.
P= 1 2F 1 4B 46 7F FF 1 10 2E CRC= 2E
R= 28 CF 1E CA 3 0 0 BD Der Sensor ist ein Typ der DS18B20 Familie.
P= 1 44 1 4B 46 7F FF C 10 A9 CRC= A9
Keine weitere Adresse.
R= 28 FD 48 CA 3 0 0 37 Der Sensor ist ein Typ der DS18B20 Familie.
P= 1 3F 1 4B 46 7F FF 1 10 7A CRC= 7A
R= 28 13 50 CA 3 0 0 4F Der Sensor ist ein Typ der DS18B20 Familie.
P= 1 46 1 4B 46 7F FF A 10 85 CRC= 85
R= 28 17 88 AA 3 0 0 63 Der Sensor ist ein Typ der DS18B20 Familie.
P= 1 2F 1 4B 46 7F FF 1 10 2E CRC= 2E
R= 28 CF 1E CA 3 0 0 BD Der Sensor ist ein Typ der DS18B20 Familie.
P= 1 44 1 4B 46 7F FF C 10 A9 CRC= A9
Keine weitere Adresse.[/CODE]So geht es auch!
-
13. Februar 2013 um 8:02 Uhr #933320Apus_ApusTeilnehmer
@ Alle,
nur einen kleinen Zwischenbericht. Die Waage funktioniert und ist erstaunlich genau. (+/- 0,5 gr. ) :respekt:
Auch über mehrere Stunden ist keine Drift des Wertes zu beobachten.Ein Reset funktioniert, wie die “Tare – Funktion” und die Anzeige stellt sich mit dem momentanen Gewicht auf “NULL”.
Deshalb war meine Entscheidung, die Waage als stand allone mit eigener Stromversorgung zu planen sinnvoll.Denn auch immer, wenn ich die Arduino IDE aufrufe und ein leeres Sketch erscheint, wird ein Reset ausgelöst. ❓
Wenn ich Gewichtsänderungen über einen längeren Zeitraum erfassen will, würde eine Unterbrechung der Spannungsversorgung ein Reset bewirken und stören.
Von meiner Dokumentation zur Waage, ist vielleicht schon jetzt folgendes von Interesse:
In der original LiquidCrystalScale.ino steht:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Hx711 scale(A1, A0);
Das gilt nur für ein einfaches LCD-Display mit entsprechender Verdrahtung.Für ein LCD Keypad Shield müssen die Zeilen so abgeändert werden:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
Hx711 scale(A2, A1);
Hier ist auch die Legende zu den PINS
[CODE]// #A1 & #A0 is shiftet, #A0 is used for the key function
// for the cable of “scale one”, the used coulors
// Hx711.SCK – pin #A1 >> weiss
// Hx711.DOUT – pin #A2 >> orange
// Hx711 Vcc PIN 5V >> red
// Hx711 GND PIN GND >> brown// LCD.RS – pin 8
// LCD.En – pin 9
// the order and numbers of these pins are changed too.
// LCD.D4 – pin 4
// LCD.D5 – pin 5
// LCD.D6 – pin 6
// LCD.D7 – pin 7[/CODE]Das war außer kleinen Anfängerproblemen mit der IDE, die entscheidende notwendige Anpassung, damit die Waage funktioniert. :+
Wer vorab noch mehr Einzelheiten wissen will, kann mir pN schreiben.
Gruß,
Apus² -
14. Februar 2013 um 0:02 Uhr #933355Apus_ApusTeilnehmer
@ Alle,ich hatte eben schon einen weiteren Beitrag auch mit Bild verfasst, aber der ist igendwo verschwunden ? Auf ein NEUES.:lol:Ich habe jetzt ein SKETCH RTC_sketch_feb13a , das sich problemlos kompilieren und downloaden lässt. :d:[CODE]#include “Wire.h”#include
#define DS1307_ADDRESS 0x68byte zero = 0x00; //workaround for issue #527LiquidCrystal lcd(8, 9, 4, 5, 6, 7);void setup(){ Wire.begin(); Serial.begin(9600); Serial.println(“Set date sending format: YYMMDD HHMMSS W”); Serial.println(“Where W = day of week – 1-7”); lcd.begin(16, 2); lcd.print(“Clock”);}void loop(){ if (Serial.available()) { setTimeFromSerial(); } printDateTime(); delay(1000);}void setTimeFromSerial(){ byte year = (Serial.read()-‘0’) * 10 + (Serial.read()-‘0’); byte month = (Serial.read()-‘0’) * 10 + (Serial.read()-‘0’); byte day = (Serial.read()-‘0’) * 10 + (Serial.read()-‘0’); Serial.read(); byte hour = (Serial.read()-‘0’) * 10 + (Serial.read()-‘0’); byte minute = (Serial.read()-‘0’) * 10 + (Serial.read()-‘0’); byte second = (Serial.read()-‘0’) * 10 + (Serial.read()-‘0’); Serial.read(); byte weekDay = (Serial.read()-‘0’); Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero); //stop Oscillator Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(decToBcd(weekDay)); Wire.write(decToBcd(day)); Wire.write(decToBcd(month)); Wire.write(decToBcd(year)); Wire.write(zero); //start Wire.endTransmission();}byte decToBcd(byte val){// Convert normal decimal numbers to binary coded decimal return ( (val/10*16) + (val%10) );}byte bcdToDec(byte val) {// Convert binary coded decimal to normal decimal numbers return ( (val/16*10) + (val%16) );}void printDateTime(){ // Reset the register pointer Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 7); int second = bcdToDec(Wire.read()); int minute = bcdToDec(Wire.read()); int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday – Saturday int monthDay = bcdToDec(Wire.read()); int month = bcdToDec(Wire.read()); int year = bcdToDec(Wire.read()); lcd.clear(); lcd.setCursor(2,0); lcd.print(hour); lcd.print(“:”); if (minute < 10) lcd.print("0"); lcd.print(minute); lcd.print(":"); if (second < 10) lcd.print("0"); lcd.print(second); }[/CODE]Der Zeiteingabe-Dialog erscheint auch.Auf dem Display erscheint nur [SIZE=”4″]45:165:165 [/SIZE]Nur warum tut sich nicht mehr?=================Ich lasse ja nicht locker, wenn es auch schon SPÄT ist ( hallo spokekiller :+) ;)Konsequenter Weise habe ich das auch noch beim Arduino UNO R3 probiert.Dort läuft es problemlos. 😡 Jetzt kann ich darüber nachdenken, warum. :-kFür den Rest der Nacht, allen eine Guute.Apus²Nach dem guten langen Frühstück, habe ich mir den Code noch mal genau angesehen.und so um die Datumsausgabe einfach erweitert. \D/[CODE] lcd.clear(); lcd.setCursor(3,0); if (hour < 10) lcd.print("0"); lcd.print(hour); lcd.print(":"); if (minute < 10) lcd.print("0"); lcd.print(minute); lcd.print(":"); if (second < 10) lcd.print("0"); lcd.print(second); lcd.setCursor(2,1); if (monthDay < 10) lcd.print("0"); lcd.print(monthDay); lcd.print("."); if (month < 10) lcd.print("0"); lcd.print(month); lcd.print(".20"); if (year < 10) lcd.print("0"); lcd.print(year);[/CODE]Jetzt bin ich erst mal zufrieden, .................................. für heute. :!: […..warum es mit dem Mega nicht geht, weiß ich immer noch nicht. 16.02.2013]Grus Apus² 😉 -
15. Februar 2013 um 7:02 Uhr #933406Apus_ApusTeilnehmer
Hi spokekiller, meine PN hat sich hiermit schon erledigt. Spontan habe ich es eben so versucht.Die LEDs waren im Code schon vorgesehen.Mit meinem vorherigen Versuch, hatte die LED nur geblinkt.Aber so geht es! Jetzt komme ich weiter.\D/ [CODE]void loop() { lcd.setCursor(0, 0); lcd.print(“Apus-Apus Waage”); lcd.setCursor(0, 1); lcd.print(” “); lcd.print(scale.getGram(), 1); lcd.print(” gr.”); lcd.print(” “); if (scale.getGram() <= 5) digitalWrite(ledRED, LOW); // turn the red LED off if (scale.getGram() >= 5) digitalWrite(ledRED, HIGH); // turn the red LED on delay(100);}[/CODE]Sobald ich mehr als 5 Gramm auflege geht die LED an. Das wollte ich erst mal so haben.================================================================Als nächten Schritt, will ich den momentanen Wert1 mit einem neuen Wert2 vergleichen und immer nur dann eine LED für 1 Sekunde blinken lassen, wenn die Differenz größer 30 Gramm ist. Bei > (+30 Gramm) wie auch bei > (-30 Gramm). Bei der Überschreitung wird dieser Wert2, dann der neue momentane Wert1, damit es in beide Richtungen funktioniert. Mit z.B. + 40 und – 35 finden dann kleine bleibend Steigerungen des Gewichtes statt.Ich suche mal nach einer Idee :idea:, wie ich das umsetze. :-kEs wird aber so sein, dass ich heute nicht mehr dazu komme. Gruß, Apus²
-
15. Februar 2013 um 22:02 Uhr #933448Apus_ApusTeilnehmer
@ Alle,vielleicht macht es Sinn mit einer fiktiven Grafik zu zeigen, welche Daten ich zu welchen Gewichtänderungen aufzeichen will.Die Zeiten zwischen horizontalen Punkten können viele länger dauern als hier dargestellt und das Gewicht bleibt aber gleich. Wenn sich das Gewicht ändert, geschieht das immer inner halb weniger Sekunden. Um die Kurve darzustellen brauche ich nur Gewicht und Uhrzeit zu jedem der roten Punkte und nicht alle horizontalen Werte der Kurve.Das muss ich in dem Sketch zur Waage für die Aufzeichnung auf der SD-Karte im CODE realisieren.Es wäre schön, wenn sich jemand findet, der bereit ist mir dabei zu helfen. [ Die dazu notwendige Logik kann ich mit normalen Worten aufschreiben, aber sie so in den entsprechenden Code zu bringen, daß nur eine schelle Gewichtsänderung ein Datenspeichern bewirkt, sehe ich noch als sehr schwierig an.]Gruß, Apus²
-
16. Februar 2013 um 11:02 Uhr #932923Apus_ApusTeilnehmer
Nachtrag, :idea:… so nebenbei habe ich den Linearitätsfehler mit Faktor 1,02 korrigiert.Dabei habe ich ebenfalls herausgefunden, dass die Zahl hinter dem Komma die Anzahl der gezeigten Nachkommastellen bestimmt. ;)lcd.print(scale.getGram()*1.02, 2);Gruß, Apus²
-
17. Februar 2013 um 21:02 Uhr #933495Apus_ApusTeilnehmer
Informationen suchen und nicht finden.
Ich habe den Arduino UNO R3 und das Snootlab Memoire Shield zusammengesteckt
und oben drauf auch noch das DF Robot Keypad-Shield, aber wenn ich mir das so ansehe,
gibt es da auch wieder PIN KONFLIKT. Nur einen?A0 ist für die KEYs belegt
A1 & A2 durch die Waage
A3 ………… noch frei
A4 und A5 vom SD Shield mit der RTC13, /SCK….{ Clock…………} werden bei beiden Shields für SPI genutzt
12, /MISO..{ Data Input…..} ………………”
11, /MOSI~{ Data Output…} ………………”
10, / SS ~..{ Selct Device…} ………………”// info:
// http://www.pjrc.com/teensy/td_libs_SPI.html9 ~ werden vom SD-Shield benutzt.
8,9, 4,5,6,7 sind vom Display belegt.Weiß es jemand genauer, ob da schon Konflikte zusehen sind?
Gibt es hierzu noch bessere Informationen ?
Gruß, Apus² -
18. Februar 2013 um 13:02 Uhr #933521spokekillerTeilnehmer
Apus_Apus;503518 said:
9 ~ werden vom SD-Shield benutzt.
8,9, 4,5,6,7 sind vom Display belegt.Weiß es jemand genauer, ob da schon Konflikte zusehen sind?
Gibt es hierzu noch bessere Informationen ?
Gruß, Apus²Hi,
also ich sehe da momentan kein Problem….
Laut snootlab hängt auf Pin 9 ein optionaler LED-Anschluß(?)
-> “LED display available on pin D9” (so snootlab auf der Produktseite)Für das Ansprechen des Shields ist meines Wissens die SD-Library ausreichend und die benutzt mit den SD-Shields die SPI-Pins (MOSI/MISO/CLK/CS = 11/12/13/14) … zumindest ist das für die Shields so, die adafruit und Konsorten verkaufen und ich denke, der von snoot ist auch nur ein adafruit-Klon.
N.B.:Problematischer wäre das alles mit dem ETH-Shield und desen SD-Card Anteil, aber das hatte ich weiter oben schon beschrieben.
Hoffe das hilft Dir
LG -
18. Februar 2013 um 15:02 Uhr #933523Apus_ApusTeilnehmer
spokekiller;503548 said:
Apus_Apus;503518 said:
9 ~ werden vom SD-Shield benutzt.
8,9, 4,5,6,7 sind vom Display belegt.Weiß es jemand genauer, ob da schon Konflikte zusehen sind?
Gibt es hierzu noch bessere Informationen ?
Gruß, Apus²Hi,
also ich sehe da momentan kein Problem….
Laut snootlab hängt auf Pin 9 ein optionaler LED-Anschluß(?)
-> “LED display available on pin D9” (so snootlab auf der Produktseite)Für das Ansprechen des Shields ist meines Wissens die SD-Library ausreichend und die benutzt mit den SD-Shields die SPI-Pins (MOSI/MISO/CLK/CS = 11/12/13/14) … zumindest ist das für die Shields so, die adafruit und Konsorten verkaufen und ich denke, der von snoot ist auch nur ein adafruit-Klon.
N.B.:Problematischer wäre das alles mit dem ETH-Shield und desen SD-Card Anteil, aber das hatte ich weiter oben schon beschrieben.
Hoffe das hilft Dir
LGHi,
DANKE…. .ich werde mich da nun durchkämpfen.:)
Erfreulich ist, dass ich zu dem Memoire-Shield auch den Link zu einem Schaltplan habe, das ergänzt nun meine Anfrage im letzten Beitrag.http://snootlab.com/attachment.php?id_attachment=29
Ebenfalls ist meine Alu-Schale fertig. Sie wiegt wie kalkuliert nur 404 Gramm. :d:
Erfreut bin ich auch darüber, dass der Messfehler durch die längere Schale nicht größer wird als 0,2% im Abstand von 10cm vom Befestigungspunkt.
[ Mit 500 gr. Belastung getestet. Das Eigengewicht der Waage wird beim Einschalten GENULLT!]Jetzt geht es an den Einbau!
Gruß, Apus²
-
18. Februar 2013 um 15:02 Uhr #933525spokekillerTeilnehmer
Blöd…. den Beschaltungsplan hatte ich nicht unter den Links gesehen… aber wie auch immer, da kann man es rechts oben sehr gut erkennen: an Pin 9 hängt eine LED mit Vorwiderstand. Wenn Dich diese stört kannst Du das Gespann auch wieder auslöten (R1 [68 Ohm] und LED).
-
18. Februar 2013 um 20:02 Uhr #933539Apus_ApusTeilnehmer
spokekiller;503554 said:
Blöd…. den Beschaltungsplan hatte ich nicht unter den Links gesehen… aber wie auch immer, da kann man es rechts oben sehr gut erkennen: an Pin 9 hängt eine LED mit Vorwiderstand. Wenn Dich diese stört kannst Du das Gespann auch wieder auslöten (R1 [68 Ohm] und LED).Hi spokenkiller,DANKE, habe es auch auf dem BOARD gefunden. Nur wozu ist die gut? Stört die nicht das Display?Ich probiere es erst mit LED aus und entscheide mich dann, ob sie bleiben kann. Den Link zum Plan, habe ich in meinem Beitrag erst heute nachträglich reingestellt. Mein Liferant war so nett und hat ihn mir heute noch geschickt.Gruß, Apus²
-
18. Februar 2013 um 21:02 Uhr #933540spokekillerTeilnehmer
Schwer zu sagen. Mein erster Gedanke war “kommt drauf an”, nämlich welche Funktion des LCD dort dranhängt. Ich würde eher mal sagen es wäre gut, wenn es nur eine der “Enable” oder R/W Leitungen wäre und keine der Datenleitungen.Auf der anderen Seite … der 68 Ohm Widerstand dürfte nicht sio viel ausmachen und auch der Abfluß der über die LED stattfindet sollte nicht zu tragisch sein.Bevor ich den Lötkolben schwenken würde, würde ich das erstaml an einem Testaufbau anschauen. Sollten keine Fehler auftreten, dann ist ja gut, ansonsten kommt der R1 raus, weil dann der zusätzlichen Stromkreis unterbrochen wird und bei eventuellem Bedarf ist er ja schnell wieder eingelötet.An sich ist das aber wie mit der LED auf dem UNO an Pin 13… mir persönlich hat sie schon mal ein wenig Ärger gemacht, ansonsten flackert sie eben nur schwach vor sich hin und die dahinterliegendee Schaltung kommt damit zurecht.Weiß man erst, wenn man es ausprobiert hat … wobei Leute, die das richtig gelernt haben, das sicher auch ausrechnen könnten.Probiers einfach… kaputtgehen wird dadurch nix.
-
19. Februar 2013 um 9:02 Uhr #933556Apus_ApusTeilnehmer
Hi spokekiller,
so etwas meine ich,———
spokekiller;503569 said:
An sich ist das aber wie mit der LED auf dem UNO an Pin 13… mir persönlich hat sie schon mal ein wenig Ärger gemacht, ansonsten flackert sie eben nur schwach vor sich hin und die dahinterliegendee Schaltung kommt damit zurecht.
Weiß man erst, wenn man es ausprobiert hat … wobei Leute, die das richtig gelernt haben, das sicher auch ausrechnen könnten. (*)Probiers einfach… kaputtgehen wird dadurch nix.
..(*)…….bevor ich so etwas ausrechen müsste, würde ich lieber mit einem Oszilloskop mal die Signalflanken und Pegel betrachten, nur privat habe ich so etwas noch nicht.:roll:
…. Probieren geht deshalb, über …… 😉 Aber leider auch nicht immer. Glitches habe ich schon mal “weg-gemessen”.
Effekt: OSZI dran = IO, OSZI weg = NIO. Da reichten zum Glück, 2pF an der richtigen Stelle.
Bei einem ganz hartnäckigen Fall half nur, entgegen aller Theorie zwei Buffer parallel zu betreiben. Das war dann wieder PROBIEREN … =D>Grüße, Apus²
-
19. Februar 2013 um 13:02 Uhr #933561spokekillerTeilnehmer
Ich seh schon, ich muß mich nicht bemühen, Du hast da deutlich mehr drauf als ich.
Aber mal kurz abgeschweift, sind mir solcherlei Fehler schon an vielen Stellen vorgekommen. Das Extremste war mal eine kalte Lötstelle an einer ungeschickten Stelle…. ich hab wirklich stundenlang versucht zu messen und zu tricksen….. irgendwann kam ich zufällig mit dem Durchgangsprüfer (ja, ich war wirklich verzweifelt) an die richtige Stelle und siehe da…
Und man hat das wirklich selbst bei guter Beleuchtung nicht gesehen…Und ich überlege auch ab und zu ein gebrauchtes Fluke oder Tektronix oder so zu besorgen, oder mit einem kleinen portablen Oszi um die 300~400 € einzusteigen, aber ich red mir dann immer ein, das ich das ja so gut wie nie brauche. Hm.
-
19. Februar 2013 um 14:02 Uhr #933563Apus_ApusTeilnehmer
spokekiller;503590 said:
Ich seh schon, ich muß mich nicht bemühen, Du hast da deutlich mehr drauf als ich. [-XUnd ich überlege auch ab und zu ein gebrauchtes Fluke oder Tektronix oder so zu besorgen, oder mit einem kleinen portablen Oszi um die 300~400 € einzusteigen, aber ich red mir dann immer ein, das ich das ja so gut wie nie brauche. Hm.
Hi,
hast Du eine Bohrmaschine? Nun überlege mal, wie oft Du sie benutzt.
Ich denke daran mir einen OSZI-Ersatz für den zweiten PC anzuschaffen.Das wäre besser als NIX! ……….. und spart ZEIT! :-k
Gruß, Apus²
-
19. Februar 2013 um 15:02 Uhr #933564spokekillerTeilnehmer
Nochmal zurückgekommen auf das eigentliche Problemle mit der LED und dem R1…
Ich vermute stark, daß es möglich wäre, daß beides gemeinsam den Pegel der Signale auf der jeweiligen Leitung so stark dämpft, bzw reduziert, daß es nicht ausreicht, um anständig durchzuschalten.
Wäre dann diese Leitung auf der Enable Leitung, dann könnte nicht aufs LCD geschrieben werden und für den Fall, daß es auf einer der Datenleitungen wäre, käme wohl nur Murks an Zeichen raus.
Mir ist nämlich vorhin eingefallen, daß ich versehtnlich bei einem Aufbau mal einen 1k Widerstand vergessen hatte und da kam dann nur Datenmüll auf’m LCD raus. Wobei der Unterschied 68Ohm zu 1K recht groß ist, aber an der LED fällt ja auch Spannung ab…. -
21. Februar 2013 um 16:02 Uhr #933652Apus_ApusTeilnehmer
@ Alle,
um überhaupt mal eine Meßfolge zu starten und aufzuzeichen, habe ich den Seriellen Monitor bemüht und das Sketch um die Zeilen erweitert. 😉
Zu meiner großen Freude war es so einfach, wie ich gehofft hatte.\D/
Als Testgewichte habe ich eine 9V-Block + 1.5V_AA-Zelle gemeinsam rein gelegt und nur den Block wieder rausgenommen und die AA-Batt blieb in der Schale.
So kommt die Gewichtsteigerung zustande. :d:Jetzt fehlt mir nur noch die Idee, wie ich diese Daten auch auf der SD-Karte speichern kann. :-k
Als Neuling mit C++ sehe ich da noch viel, viel ……………… Lernbedarf! :-k #-o
Gruß, Apus²
-
21. Februar 2013 um 17:02 Uhr #933653ThaRippaAdministrator
Uff wenn’s da keine fertige Library für Arduino gibt seh ich schwarz. Immerhin will man ja Fat32 oder sowas schreiben, und nicht irgendwas was nachher keiner lesen kann.
-
21. Februar 2013 um 17:02 Uhr #933654Apus_ApusTeilnehmer
ThaRippa;503688 said:
Uff wenn’s da keine fertige Library für Arduino gibt seh ich schwarz. Immerhin will man ja Fat32 oder sowas schreiben, und nicht irgendwas was nachher keiner lesen kann.Hi ThaRippa,
danke dass Du antwortest. :d:
Fertige SD-Library gibt es mehrere. Wenn ich eine ändern müsste, mit der DS18B Werte erfasst und abgespeichert werden, könnte ich mich da reindenken.
Eine LIB, die nur eine Temperatur + Datum speichert, soeine habe ich noch nicht gefunden.
Da suche ich noch im Dschungel der Informationen.
Damit könnte ich das Teilproblem schon mal angehen. Beide Sketche dann zusammenzuführen, ist erst der nachfolgende Schritt.Für jeden halbwegs brauchbaren Tipp oder Link, bin ich dankbar.
Gruß, Apus²
-
24. Februar 2013 um 13:02 Uhr #933718Apus_ApusTeilnehmer
@ Alle die sich nicht trauen zu meinem Thema Tipps abzugeben. :+
Heute habe ich den Versuch mit einem SD Test gemacht.
[CODE]/*
SD card test
This example shows how use the utility libraries on which the’
SD library is based in order to get info about your SD card.
Very useful for testing a card when you’re not sure whether its working or not.
The circuit:
* SD card attached to SPI bus as follows:
** UNO: MOSI – pin 11, MISO – pin 12, CLK – pin 13, CS – pin 4 (CS pin can be changed)
and pin #10 (SS) must be an output
** Mega: MOSI – pin 51, MISO – pin 50, CLK – pin 52, CS – pin 4 (CS pin can be changed)
and pin #52 (SS) must be an output
** Leonardo: Connect to hardware SPI via the ICSP header
Pin 4 used here for consistency with other Arduino examplescreated 28 Mar 2011 by Limor Fried
modified 9 Apr 2012 by Tom Igoe
*/
// include the SD library:
#include// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 10;void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}Serial.print(“
Initializing SD card…”);
// On the Ethernet Shield, CS is pin 4. It’s set as an output by default.
// Note that even if it’s not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(SS, OUTPUT);// we’ll use the initialization code from the utility libraries
// since we’re just testing if the card is working!
while (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println(“initialization failed. Things to check:”);
Serial.println(“* is a card is inserted?”);
Serial.println(“* Is your wiring correct?”);
Serial.println(“* did you change the chipSelect pin to match your shield or module?”);
}// print the type of card
Serial.print(“
Card type: “);
switch(card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println(“SD1”);
break;
case SD_CARD_TYPE_SD2:
Serial.println(“SD2”);
break;
case SD_CARD_TYPE_SDHC:
Serial.println(“SDHC”);
break;
default:
Serial.println(“Unknown”);
}// Now we will try to open the ‘volume’/’partition’ – it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println(“Could not find FAT16/FAT32 partition.
Make sure you’ve formatted the card”);
return;
}// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print(“
Volume type is FAT”);
Serial.println(volume.fatType(), DEC);
Serial.println();volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we’ll have a lot of clusters
volumesize *= 512; // SD card blocks are always 512 bytes
Serial.print(“Volume size (bytes): “);
Serial.println(volumesize);
Serial.print(“Volume size (Kbytes): “);
volumesize /= 1024;
Serial.println(volumesize);
Serial.print(“Volume size (Mbytes): “);
volumesize /= 1024;
Serial.println(volumesize);Serial.println(“
Files found on the card (name, date and size in bytes): “);
root.openRoot(volume);// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}void loop(void) {
}[/CODE]
Im Sketch musste ich nur Chip Select = PIN 10 anpassen.
[CODE]const int chipSelect = 10;[/CODE]
Es ist schon wichtig, dass etwas funktioniert, damit ich erkennen kann wieso und warum.
Auf dem Display sehe ich keine Reaktionen, aber dafür läuft es mit dem PC Monitor!
[CODE]Initializing SD card…
Card type: SDHCVolume type is FAT32
Volume size (bytes): 3956801536
Volume size (Kbytes): 3864064
Volume size (Mbytes): 3773Files found on the card (name, date and size in bytes):
DATALOG.TXT 2000-01-01 01:00:00 264[/CODE]Und diesen Daten im File zwei Abschnitte:
[CODE]
1023,326,0
1023,355,0
1023,377,0
1023,408,0
1023,425,0
1023,622,[/CODE]zweiter Abschnitt:
[CODE]1023,593,1023
1023,616,1023
1023,624,1023
1023,642,1023
1023,652,1023
1023,664,1023
1023,257,0
1023,287,0
1023,324,0
1023,348,0
1023,381,0
1023,399,0
1023,429,0
1023,613,[/CODE]So sieht es aus, wenn keine Karte steckt:
[CODE]
Initializing SD card…initialization failed. Things to check:
* is a card is inserted?
* Is your wiring correct?
* did you change the chipSelect pin to match your shield or module?[/CODE]Diese Meldung scrollt im Com1-Monitor-Fenster, bis die Karte gesteckt wird.
Jetzt werde ich noch herausfinden, wie ich die ersten Daten auf den CHIP bekommen habe.:-k
Gruß, Apus²
-
24. Februar 2013 um 15:02 Uhr #933722Apus_ApusTeilnehmer
Hier die Fortsetzung.
Ebenso habe ich den folgenden Loggertest ausprobiert.
Auch hier läuft die Kontrolle über den PC Monitor.[CODE]/*
SD card datalogger
This example shows how to log data from three analog sensors
to an SD card using the SD library.
The circuit:
* SD card attached to SPI bus as follows:
** UNO: MOSI – pin 11, MISO – pin 12, CLK – pin 13, CS – pin 4 (CS pin can be changed)
and pin #10 (SS) must be an output
** Mega: MOSI – pin 51, MISO – pin 50, CLK – pin 52, CS – pin 4 (CS pin can be changed)
and pin #52 (SS) must be an output
** Leonardo: Connect to hardware SPI via the ICSP header
Pin 4 used here for consistency with other Arduino examples
created 24 Nov 2010
modified 9 Apr 2012 by Tom Igoe
This example code is in the public domain.
*/#include
// On the Ethernet Shield, CS is pin 4. Note that even if it’s not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int chipSelect = 10;File dataFile;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}Serial.print(“Initializing SD card…”);
// make sure that the default chip select pin is set to
// output, even if you don’t use it:
pinMode(SS, OUTPUT);// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println(“Card failed, or not present”);
// don’t do anything more:
while (1) ;
}
Serial.println(“card initialized.”);// Open up the file we’re going to log to!
dataFile = SD.open(“datalog.txt”, FILE_WRITE);
if (! dataFile) {
Serial.println(“error opening datalog.txt”);
// Wait forever since we cant write data
while (1) ;
}
}void loop()
{
// make a string for assembling the data to log:
String dataString = ;// PIN “A0 ist mit der Key Funktion belegt.
// PIN A1 und A2 werden WAAGE Daten übertragen
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) { int sensor = analogRead(analogPin); dataString += String(sensor); if (analogPin < 2) { dataString += ","; } } dataFile.println(dataString); // print to the serial port too: Serial.println(dataString); // The following line will 'save' the file to the SD card after every // line of data - this will use more power and slow down how much data // you can read but it's safer! // If you want to speed up the system, remove the call to flush() and it // will save the file only every 512 bytes - every time a sector on the // SD card is filled with data. dataFile.flush(); // Take 1 measurement every 500 milliseconds delay(500); } [/CODE] In der ersten Datenspalte stehen die Werte der Keypad-Funktion. [CODE]if (adc_key_in > 1000) return btnNONE; bei 1023
if (adc_key_in < 50) return btnRIGHT; bei 0
if (adc_key_in < 195) return btnUP; bei 144
if (adc_key_in < 380) return btnDOWN; bei 328
if (adc_key_in < 555) return btnLEFT; bei 505
if (adc_key_in < 790) return btnSELECT; bei 740
return btnNONE; // when all others fail, return this…
[/CODE]Dafür , dass ich eigentlich nicht damit gerechnet habe heute noch etwas BRAUCHBARES herauszufinden, bin ich mit dem heutigen Ergebnis, eigentlich zufrieden. \D/
Damit lässt sich weitermachen. :+
Gruß, APUS²
-
26. Februar 2013 um 11:02 Uhr #933758Apus_ApusTeilnehmer
Jetzt bin ich an einer Stelle angelangt, bei der sich mir eine Frage stellt.
Sporadisch ist mi schon gelungen Gewichts-Werte auf die SD-Karte zu schreiben, auch nur dann wenn sich das Gewicht entsprechend geändert hat, aber leider nicht jedes Mal und auch nur bei weit größeren Gewichtsänderungen. Irgendwie stört auch das Schreiben der Daten, die Displayanzeige total.
Bisher wollte ich aus dem Wiegevorgang nur bei zutreffenden Wertänderungen speichern, jetzt ist es vielleicht sinnvoller den Speichervorgang so lange anzuhalten, bis ein zu registrierender Wert vom Wiegen kommt.
Mit der Grafik hab ich versucht, die unterschiedliche Logik-Struktur darzustellen.
Vielleicht weiß schon jetzt jemand, welche Vorgehensweise günstiger sein wird?
Bisher habe ich nur einen Sketch, der auch dann ersatzweise was speichert, wenn vom Wiegen nichts kommt.
Damit schreibe ich mir nur unnütz das Daten-File voll. :-kGruß, Apus²
-
28. Februar 2013 um 10:02 Uhr #933835Apus_ApusTeilnehmer
Damit auch mal was funktioniert, habe ich mir die Beschaltung der DV16400 LCD Displays genau angeschaut.Gestern habe ich mich nochmal daran versucht.Ich habe konsequent die PIN-Belegung die auch das Keypad-Shield benutzt übernommen. :idea:// LCD.RS – pin 8// LCD.En – pin 9// LCD.D4 – pin 4// LCD.D5 – pin 5// LCD.D6 – pin 6// LCD.D7 – pin 7// LCD.RW – GND//LCD A/K = VDD/VSSSo habe ich meinen Hardwarebestand um zwei 16 x 4 funktionierende Displays erweitert. :)[SIZE=”1″]Da dieses ganze Arduino – Thema komplett “NEU” für mich ist, muss ich mir eine GUUUUUTE Dokumentation machen. [/SIZE]Da ich zu diesem Display-typ nicht die Informationen fand, die mir über die Logik der Corsor-Position Informationen zeigt, habe ich mit einem Sketch die Logik ausprobiert. Wer das mal selbst probieren will, findet den Sketch als TEXT im Anhang.Der Sketch lässt sich vermutlich auch anders aufbauen, aber er funktioniert. :)Gruß, Apus²
-
1. März 2013 um 23:03 Uhr #933870Apus_ApusTeilnehmer
Ich kann es fast nicht glauben, aber ein weiteres Problem ist erkannt!
[SIZE=”4″]
Zuerst ein DICKES DANKESCHÖN an Spokenkiller. [/SIZE]Nachdem ich mir heute sein gut gemachtes Tutorial #10 durchgelesen habe, verstärkte sich mein Verdacht,
dass ich für die Anzeige ein serielles LCD-Display mit IC2 brauche. Bestellt ist schon eins seit zwei Tagen.Vorhin habe ich in meinem Sketch alles // = stillgelegt, was zum LCD-Keypad-Shield gehörte und mir nur die Monitor-Anzeige angeschaut.
Zu meiner überaus großen Freude hat alleine das schon gereicht um zu einer brauchbaren Datenanzeige zu kommen.:banana:
Die Logik mit der Gewichts-Schwelle , ab der Veränderungen registriert und gespeichert werden, funktioniert tatsächlich. 😆Ist das nicht ein schönes Bild unten? :+
Im Daten-File Stehen Daten zwar hintereinander durch Komma getrennt.
Die habe ich in der Excel Tabelle untereinander in die Spalte A kopiert.
In der Spalte C sind die Werte durch 100 dividiert.Im Bild vom COM11 – Fenster steht links ein verworfener Wert, der aber die Registrierung schon ausgelöst hat.
Die beiden rechten Werte zeigen den beruhigten Zustand der Waage.Wenn ich jetzt die Werte der SD-Karte mit den Monitorwerten vergleiche, bin ich schon mal sehr zufrieden.\D/
Ich habe mir zwar schon vorsorglich ein IC2 – 16×4 Display bestellt, aber nun werde ich mal zusehen ob ich schon eins schneller bekommen kann.
Denn Mitte bis Ende März als Liefertermin, ist mir etwas spät. Genaugenommen brauche ich sowieso mindestens zwei, für die zweite Waage auch.
So wie jetzt die Werte schon registriert werden, könnte das als Minimalanforderung schon reichen, wenn noch die Uhrzeit dazu kommt.Jetzt bekomme ich auch noch die Uhrzeit hinter den Messwert. :d:
Ich habe ja noch drei Wochen.:)Gruß, Apus²
[SIZE=”1″]Inzwischen habe ich noch einen Grund gefunden, weshalb sich (bei mir) das Sketch nach einem neuen Aufruf, nicht mehr kopilieren lies. :-k
Um ganz sicher zugehen, dass mir als Anfänger nicht irgend ein “Schmutzeffekt”, einen Streich spielt, bin ich mit dem Sketch komplette auf einen zweiten PC. Dort läuft es , inzwischen auch mit Zeitangaben![/SIZE] -
4. März 2013 um 14:03 Uhr #933933spokekillerTeilnehmer
Hallo… mich hat seit einigen Tagen die Grippe übelst flachgelegt. Deshalb kann ich aktuell nicht auf PNs und Anfragen etc. reagieren.Sorry,Micha
-
4. März 2013 um 15:03 Uhr #933936x20011Teilnehmer
Warum benutzt du kein HD44780 LCD im 4Bit Mode? Dafür gibt es fertige Libraries und anständige Dokumentationen.
-
4. März 2013 um 15:03 Uhr #933937konfettiTeilnehmer
Hi,was haltet ihr davon: http://www.amazon.de/Arduino-Mega-2560-Rev3-PC/dp/B0046AMGW0/ref=sr_1_1?ie=UTF8&qid=1362408200&sr=8-1mit http://www.amazon.de/Ethernet-Schild-shield-Arduino-w5100/dp/B009N826DY/ref=sr_1_1?s=computers&ie=UTF8&qid=1362408323&sr=1-1zusätzlich noch: http://www.amazon.de/Kanal-Relais-Module-Arduino-TTL-Logik/dp/B00ALNJN72/ref=pd_rhf_se_s_cp_3_GKWBevtl. dieses Display: http://www.amazon.de/HD44780-Module-Display-Anzeigen-Zeichen/dp/B009GEPZRE/ref=pd_rhf_se_p_t_4_GKWBaber ich glaub da hab ich noch was ähnliches/gleiches zu Hause.Was möchte ich machen? – ich werde in absehbarer Zeit ein Haus bauen, die standard-Bustechnicken sind schön und gut, aber auch teuer – dafür, das ich eigentlich nur das Licht schalten möchte brauch ich das auch nicht unbedingt, das ganze kann klassisch mit Tastern und nem Relais in der Verteilung bewerkstelligt werden. – ggf. kann man auch Dimmerrelais einbauen, da sind wir uns noch nicht so ganz im klaren, wo was genau laufen soll, fakt ist aber, das ich dort gerne eine zentrale Lichtsteuerung nachrüsten möchte, heist über das Netzwerk auch im Haus alle Lichter an bzw. ausschalten können – dafür sollte der Arduino eigentlich reichen, zumal hier bei dem mit den vielen Ausgängen auch mehr als nur 8 Ausgänge machbar wären.Über den LCD könnte man in der Verteilung sich das ganze ggf. anzeigen lassen, bzw. finden sich sicher noch andere Möglichkeiten zur Steuerung… ;)passt das Ethershield den auf den Arduino Mega?
-
4. März 2013 um 16:03 Uhr #933941x20011Teilnehmer
konfetti;504016 said:
Hi,was haltet ihr davon: http://www.amazon.de/Arduino-Mega-2560-Rev3-PC/dp/B0046AMGW0/ref=sr_1_1?ie=UTF8&qid=1362408200&sr=8-1
mit http://www.amazon.de/Ethernet-Schild-shield-Arduino-w5100/dp/B009N826DY/ref=sr_1_1?s=computers&ie=UTF8&qid=1362408323&sr=1-1
zusätzlich noch: http://www.amazon.de/Kanal-Relais-Module-Arduino-TTL-Logik/dp/B00ALNJN72/ref=pd_rhf_se_s_cp_3_GKWB
evtl. dieses Display: http://www.amazon.de/HD44780-Module-Display-Anzeigen-Zeichen/dp/B009GEPZRE/ref=pd_rhf_se_p_t_4_GKWB
aber ich glaub da hab ich noch was ähnliches/gleiches zu Hause.Was möchte ich machen? – ich werde in absehbarer Zeit ein Haus bauen, die standard-Bustechnicken sind schön und gut, aber auch teuer – dafür, das ich eigentlich nur das Licht schalten möchte brauch ich das auch nicht unbedingt, das ganze kann klassisch mit Tastern und nem Relais in der Verteilung bewerkstelligt werden. – ggf. kann man auch Dimmerrelais einbauen, da sind wir uns noch nicht so ganz im klaren, wo was genau laufen soll, fakt ist aber, das ich dort gerne eine zentrale Lichtsteuerung nachrüsten möchte, heist über das Netzwerk auch im Haus alle Lichter an bzw. ausschalten können – dafür sollte der Arduino eigentlich reichen, zumal hier bei dem mit den vielen Ausgängen auch mehr als nur 8 Ausgänge machbar wären.
Über den LCD könnte man in der Verteilung sich das ganze ggf. anzeigen lassen, bzw. finden sich sicher noch andere Möglichkeiten zur Steuerung… 😉
passt das Ethershield den auf den Arduino Mega?
Schau doch mal bei Ebay, da kommt man immer mal günstig an ne SPS dran. Zum beispiel ne Siemenes LOGO oder Easy500. Damit hat man wenigstens was Handfestes und kostet auch nicht viel mehr… 😉
-
4. März 2013 um 19:03 Uhr #933952Apus_ApusTeilnehmer
spokekiller;504011 said:
Hallo… mich hat seit einigen Tagen die Grippe übelst flachgelegt. Deshalb kann ich aktuell nicht auf PNs und Anfragen etc. reagieren.Sorry,
MichaHi Micha,
das konnte ich mir auch nicht anders vorstellen, denn von Dir waren keine aktuellen Aktivitäten mehr im MK zu finden. Recht gute Besserung für Dich. Das wünschen Dir sicher alle im MK,Hier im Haus geht auch was um, es musste sogar der Notarzt kommen.
Ich hoffe, ich bleibe davon verschont. ❓Inzwischen habe ich für mein Waage – Projekt eine Entscheidung getroffen, die das Thema erst mal entspannt und mir den Zeitdruck nimmt. Bei so schönem Wetter wie heute, war ich auch mal draußen zu Frisbee spielen.
So wie hier (kopiert) zu sehen, werde ich als Kompromiss mit einem “kleinen PC” die Daten täglich auf den Monitor schreiben lassen. Von dort lassen sie sich in eine Textdatei kopieren.
Wichtig sind mir in erster Linie die Zeiten. Das Gewicht ist quasi die Zugabe.
Hier steht nebeneinander Uhrzeit, altes-; neues- Gewicht
[CODE]EIN ;18:13:33 ;0.00; 46.96
AUS ;18:13:35 ;46.96; 0.02
EIN ;18:13:37 ;0.02; 46.98
AUS ;18:13:41 ;46.98; 0.04
EIN ;18:13:43 ;0.04; 46.98
AUS ;18:13:46 ;46.98; 0.09
EIN ;18:13:48 ;0.09; 47.01
AUS ;18:13:50 ;47.01; 0.01
EIN ;18:13:53 ;0.01; 46.93
AUS ;18:13:55 ;46.93; 0.09
EIN ;18:13:57 ;0.09; 46.93
AUS ;18:13:59 ;46.93; 0.04
EIN ;18:14:1 ;0.04; 46.95
AUS ;18:14:3 ;46.95; 0.04
EIN ;18:14:5 ;0.04; 47.00
AUS ;18:14:7 ;47.00; 0.02
EIN ;18:14:9 ;0.02; 47.01
AUS ;18:14:11 ;47.01; 0.04
EIN ;18:14:13 ;0.04; 47.04
AUS ;18:14:15 ;47.04; 0.07
EIN ;18:14:17 ;0.07; 46.98
AUS ;18:14:19 ;46.98; -0.02
EIN ;18:14:21 ;-0.02; 46.97
AUS ;18:14:23 ;46.97; 0.03
EIN ;18:14:25 ;0.03; 46.98
AUS ;18:14:28 ;46.98; 0.06
EIN ;18:14:29 ;0.06; 46.96
AUS ;18:14:33 ;46.96; 0.08
EIN ;18:14:39 ;0.10; 47.06
AUS ;18:14:41 ;47.06; 0.06
EIN ;18:14:43 ;0.06; 47.04
AUS ;18:14:45 ;47.04; 0.05
EIN ;18:14:47 ;0.05; 47.02
AUS ;18:14:49 ;47.02; 0.04
[/CODE] So gebe ich die Werte auf dem Monitor aus.
Bisher habe ich noch keine Störung erkennen können. Auch nach Wartezeiten von einigen Stunden nicht.
Diese Teil-Lösung werde ich noch um die LCD Anzeige für das Gewicht ergänzen.Letztes Jahr habe ich die Registrierung mit CamAlertIII und der Auswertung der Bilder gemacht.
Das war sehr zeitintensiv, die Zeiten von mehr als hundert Bildern täglich auszuwerten.Schon mit dieser ” Waage Teil-Lösung” muss ich nicht mehr so früh aufstehen, wenn die Lichtverhältnisse die Überwachung mit Webcam fehlerhaft werden lassen. Das ist schon LUXUS.
Nun sammele ich damit erst mal etwas Erfahrung, wie sich der “echte Wiegevorgang” im Vergleich zu der Simulation mit Gewichten verhält, wenn meine Sommergäste wieder da sind.
Sonst investiere ich wohlmöglich jetzt sehr viel Zeit und nachher geht irgendetwas anderes nicht.Während die eine Waage ab April schon Daten liefert, habe ich mehr Zeit mit der zweiten Waage eine bessere Lösung zu finden. Das war auch so von Anfang an meine Vorstellung.
Erst mal schauen, was ich überhaupt erreiche. Jetzt nach den ersten 5 Wochen war der richtige Zeitpunkt darüber nachzudenken.
Ich hielt es sogar für möglich, dass ich vielleicht zuerst nur wiegen kann ohne die Daten zu speichern.
Die zweite Waage war deshalb schon für die „richtige Entwicklung“ eingeplant.Mit einem Sketch bin ich zwar so weit, dass ich die Daten auch speichern kann, aber dieser Vorgang stoppt nach einiger Zeit oder er initialisiert sich selbst.
Verlust von Daten ist dadurch gegeben.
Schon jetzt kann ich erkennen, dass in den nächsten vier Wochen die angestrebte Komplett-Lösung für mich noch nicht zu erreichen ist.
Dazu muss ich mir vorher einen eigenen Arduino Mega kaufen. Ein zweites SD-Shield mit RTC brauche ich dann auch noch.Wie das mit dem Mega zum LAUFEN kommt und welcher Umbau nötig ist, werde ich noch herausfinden.
Auch nach vier Wochen, halten sich meine Programmierkenntnisse immer noch in Grenzen.
Ich suche deshalb ernsthaft nach wohlwollender Unterstützung.Ich bleibe auch weiter am Thema dran.
Gruß, Apus²
-
4. März 2013 um 21:03 Uhr #933961konfettiTeilnehmer
naja, ne SPS ist aber nicht so ganz das, was ich mir gedacht hatte, ich wollte ggf. halt noch Temperatur-Sensoren auslesen und so späße 😉 – je nachdem halt…
-
4. März 2013 um 23:03 Uhr #933964Apus_ApusTeilnehmer
x20011;504014 said:
Warum benutzt du kein HD44780 LCD im 4Bit Mode? Dafür gibt es fertige Libraries und anständige Dokumentationen.Die Idee zu der Waage, habe ich schon lange. auch an Lichtschranken und Bewegungsmelder habe ich gedacht.
Erst letztes Jahr habe ich entdeckt, dass sich schon mal jemand die Mühe gemacht hat.:)http://www.commonswift.org/0023kellerd.html
Das war schon 1972 mit den damaligen Möglichkeiten ein tolles aufwendiges Projekt.Mein Ergebnis von 2012 kann in seiner Charakteritik gut mit den “ALTEN” Untersuchungen von Keller verglichen werden.
https://dl.dropbox.com/u/87871427/Ergebnis%2001a.pdf
Letztes Jahr konnte ich recht schnell, CamAlertIII mit WebCam einsetzen.
Diese Naturbeobachtung will ich nun 2013 wiederholen.
Mit den Erfahrungen wie Zeitaufwendig das war kam ich wieder auf die Waage – Lösung zurück.
Alles was ich bisher dazu fand war nicht annähernd so genau, wie es die Waage für den Arduino ist.
Mit der Arduino-lösung befasse ich mich nun erst seit Januar. Schließlich musste ich alles in der Schweiz bestellen.
Dabei wurden mir die Hardwarekomponenten “empfohlen”. Solange ich nur wiegen will, passt es ja auch gut zusammen.Inzwischen habe ich die ersten Erfahrungen gemacht und weiß nun, dass z.B. das Keypad-Shield von Robot ganz andere PIN-belegung hat, als es die Sketche für die Waage vorgeben haben.
Ich habe nicht nur hier im MK sondern auch in einem anderen Arduino-Forum so deutlich die Hardware beschrieben und die Sketche im Code gezeigt,
ohne dass mich jemand gefragt hat ob ich nicht lesen kann. WARUM?
Jetzt nach dem ich es selbst herausgefunden …….. :+
und gelernt habe, dass sich am Arduino mehrere Komponenten den I²C-Bus teilen können, habe ich mir ein serielles Display bestellt.
Leider dauert das noch bis Mitte März. Dieser lange Liefertermin ermöglicht auch einen guten Preis.…….. oder die ganz kurze Antwort:
….. weil ich mich erst seit ~5 Wochen mit Arduino beschäftige.
Bei dem , was ich mir bei einem Freund ( ein demnächst ARDUINO BEGINNER) leihen konnte, war kein solches Display dabei. :-kGruß, Apus²
-
4. März 2013 um 23:03 Uhr #933965Apus_ApusTeilnehmer
konfetti;504045 said:
naja, ne SPS ist aber nicht so ganz das, was ich mir gedacht hatte, ich wollte ggf. halt noch Temperatur-Sensoren auslesen und so späße 😉 – je nachdem halt…http://www.meisterkuehler.de/forum/502853-post298.html
Hattest Du diesen Beitrag gelesen?
Das Teil ist vielseitig verwendbar. Es lohnt sich es anzuschauen.
Gruß, Apus²
-
5. März 2013 um 10:03 Uhr #933982Apus_ApusTeilnehmer
Ich habe mal eine Konkrete Frage zu dem Sketch bei dem ich die Zeit und Gewichte am SerialMonitor und auch am Display zeigen möchte, aber im Display nichts zu erkennen ist.
Mit dem zweiten Sketch habe ich alles was die Zeit betrifft mit // still gelegt und nur für die Anzeige im SerialMonitor je eine Zeile bei if — else ergänzt.
Da funktioniert das LCD-Display und der SerialMonitor gemeinsam. WARUM? …. in dem anderen nicht?
Vielleicht zeigt mir auch jemand, wie ich die lange Zeile in if — else kürzer schreiben kann? ❓ 💡 ❓
Inzwischen versuche ich heute ein I²C LCD-Display zu bekommen
oder einen Umbausatz wie im TUT#10 beschrieben.
http://www.meisterkuehler.de/forum/486050-post178.htmlGruß, Apus²
-
5. März 2013 um 13:03 Uhr #933990konfettiTeilnehmer
Apus_Apus;504050 said:
konfetti;504045 said:
naja, ne SPS ist aber nicht so ganz das, was ich mir gedacht hatte, ich wollte ggf. halt noch Temperatur-Sensoren auslesen und so späße 😉 – je nachdem halt…http://www.meisterkuehler.de/forum/502853-post298.html
Hattest Du diesen Beitrag gelesen?
Das Teil ist vielseitig verwendbar. Es lohnt sich es anzuschauen.
Gruß, Apus²
Ja hab ich. – Am Anfang möchte ich damit alle (!) Lichttaster/Dimmer per Weboberfläche zusätzlich zu den vorhandenen Tastern in den Räumen steuern können -> Das sind dann 14 Lichtsteuerungen.
Später möchte ich dann ggf. auch noch die Temperatur in ausgewählten Räumen überwachen können – unabhängig davon, das dort die Fußbodenheizung vorhanden ist oder auch nicht… – z.B. Serverraum, in dem keine Heizung vorhanden ist… – ggf. auch die Außentemperatur, sowie die Bodentemperatur – Differenztemperatur der Luft-Wärme-Pumpe, etc…d.h. ich glaube, der Arduino Mega ist hier besser geeignet -> aber funktioniert der auch mit dem Ethershield? – bzw. passt das Modul da auch drauf, bzw. worauf muss ich da achten?
kann ich auf dem Arduino überhaupt eine Webseite laufen lassen, die mir diese Werte anzeigt bzw. “Schalter” zur Verfügung stellt?
-
5. März 2013 um 17:03 Uhr #933991Hallo1001Teilnehmer
@Apus_Apus
So gebe ich die Werte auf dem Monitor aus……….
Schau Dir mal das Tool an: http://www.pcfilter.de/AVR-Ecke/Page16.html
Vielleicht kannst Du Deine Anzeigen so anpassen das Du sie mit dem Tool verarbeiten kannst. Zumindest kannst Du dann direkt in eine CSV-Datei speichern und bei Fehlern Alarm auslösen…LG Jens
-
12. März 2013 um 13:03 Uhr #934161Apus_ApusTeilnehmer
Bei dem tollen Winterwetter mit 15 cm Schnee hatte ich erhofft, dass sich wieder etwas im MK-Forum tut. ;)Wie schon beschrieben, habe ich wenigstens einen Sketch mit dem ich mir die Waage-Daten sichern kann. Ist zwar noch etwas Umständlich aber es geht. Darauf will ich mich letztendlich nur vorläufig beschränken.In diesem Sketch habe ich beim ausgiebiegen Testen doch noch einen logischen Fehler beobachtet. :oBei schnellen Gewichtswechseln wurde manchmal EIN und AUS gemeinsam registriert.: / Der Fehler ist inzwischen behoben. O:-)Unabhängig davon versuche ich den zukünftigen Sketch, der alles beinhalten soll stufenweise aufzubauen.Mit dem „nur Wiegen“ habe ich angefangen und den Sketch als eine void (Funktion) angelegt.Dieser Wiege – Sketch (mit einigen // Kommentaren) funktioniert erst mal so wie er ist.Vielleicht ist jemand bereit sich diesen Sketch-Teil mal anzuschauen und kann mir daran zeigen wie der Sketch im Hinblick auf die fehlenden Erweiterungen verbessert werden müsste.Ich bin immer noch C++ Anfänger, der Hilfe braucht. [CODE]/* sample for digital weight scale of hx711, with a KeyPad-Shield * and a HD44780 liquid crystal monitor * Apus – Waage 2013 #J02 */// #A1 & #A0 is shiftet, #A0 is used for Key function// for two different cable W1 & W2 the used coulors // Hx711.SCK – pin #A1 >W1> weiss >W2 blue// Hx711.DOUT – pin #A2 >W1> orange >W2 green// Hx711 Vcc PIN 5V >W1> red >W2 violet // Hx711 GND PIN GND >W1> brown >W2 grey// LCD.RS – pin 8// LCD.En – pin 9// // LCD.D4 – pin 4// LCD.D5 – pin 5// LCD.D6 – pin 6// LCD.D7 – pin 7//****************************************************************//#include
//#include //#include #include // Display #include // ADC Verstaerker float Gewicht = 0.0;//char tmp =(25);//String StrOut = (); LiquidCrystal lcd(8, 9, 4, 5, 6, 7); Hx711 scale(A2, A1);//****************************************************************void setup() { Serial.begin(9600); // für die Monitoranzeige lcd.begin(16, 2); lcd.clear(); }//****************************************************************void wiegen() { Gewicht = (scale.getGram()*1.007); // dtostrf(floatVar, minStringWidthIncDecimalPoint,numVarsAfterDecimal,charBuf); mit dieser Vorgabe hatte ich es versucht. // hier möchte ich den Gewichts-Wert in einen String umwandeln. delay(100);}//****************************************************************void loop() {// Pause (); // Wartefunktion (mit Schalter), damit der SD Chip zum Auslesen entnommen werden kann.//Datum (); // Datum erfassen//Zeit (); // Zeit erfassen//Tempratur(); // Lufttemperatur/en erfassen//Druck(); // Lufttdruck erfassen wiegen(); // Wiegefunktion ausführen! // String Datum , Zeit, Gewicht, Temperatur, Druck // Daten-String auf SD speichern. // Werte am Display und Monitor anzeigen lcd.setCursor(1,1); lcd.print(Gewicht);lcd.print(” gr. “); Serial.println(Gewicht); //*************************************************************** // hier soll zum Testen der Wert auch als String erscheinen delay(100);}//****************************************************************[/CODE]ich hoffe noch immer hier im MK jemanden zu finden, der bereit ist etwas von seinem C++ Wissen abzugeben.Und noch eine kleine Frage. Welche Anweisungen muss ich z.B bei Serial.print(dayOfMonth) anwenden, damit bei den Tagen von 1 bis 9 die führenden Nullen mit ausgegeben werden?Wenn ich mit einer If-Abfrage einem String “0” zuweise, der sonst enthält, funktioniert das am LCD Display aber auf dem Monitor nicht.Gruß, Apus² -
13. März 2013 um 12:03 Uhr #934192Apus_ApusTeilnehmer
Meine nachgereichte Frage von Gestern, wegen der Formatierung, habe ich mir schon selbst teilweise beantworten können.
Die Suche nach verständlichen Code-Beispielen ist sehr mühsam. Dann muss ich auch noch testen ob es passt.Mit diesen Formatanweisungen ………………………
[CODE]
[FONT=”Courier New”]char stringD [4]; // TAG
char stringO [4]; // Monat
char stringY [6]; // Jahr
char stringH [4]; // Stunde
char stringM [4]; // Minute
char stringS [4]; // Sekunde
char stringZ [4]; // Zähler für die Ereignisse.[/FONT]
[/CODE]und den Formatierungen (neuer-string, %Format , alter String) funktioniert es.
[CODE]
[FONT=”Courier New”]
sprintf(stringD ,”%02i.”,dayOfMonth);
sprintf(stringO ,”%02i.”,month);
sprintf(stringY ,”20%02i”,year);
sprintf(stringH ,”%02i:”,hour);
sprintf(stringM ,”%02i:”,minute);
sprintf(stringS ,”%02i”,second);
sprintf(stringZ ,”%02i”,Zaehl); [/FONT]
[/CODE]So habe ich bei Serial.print(Variable); die originalen “int Variablen” durch die formatierten Variablen ersetzt!
Das klappt einschließlich der Delimiter wie der Punkt beim Datum, dem Doppelpunkt bei der Zeit und sogar der vorangestellten “20” beim Jahr, für int(variable).Einige der langen Programmzeilen, mit denen ich das bisher teilweise gelöst hatte, sind jetzt ein gutes Stück kürzer und übersichtlicher geworden.
Auch wenn ich selbst noch Anfänger (in der 5. Woche) bin und nach Lösungen suche, hat vielleicht jemand daran Interesse.
Hier habe ich mal die Stundenumstellung abgewartet, um zu sehen, dass es in allen Teilen funktioniert.
[CODE]
[FONT=”Courier New”]56; AUS ;00:59:57 ;44,60; 0,03; DIFF; -44,57
57; EIN ;00:59:58 ;0,03; 44,57; DIFF; 44,54
58; AUS ;00:59:59 ;44,57; 0,01; DIFF; -44,56
59; EIN ;01:00:00 ;0,01; 44,55; DIFF; 44,54
60; AUS ;01:00:01 ;44,55; 0,05; DIFF; -44,50
61; EIN ;01:00:03 ;0,05; 44,60; DIFF; 44,55
62; AUS ;01:00:04 ;44,60; 0,05; DIFF; -44,55[/FONT]
[/CODE]Auch die Kopfzeilen bei der Monitoranzeige habe ich noch etwas umgestellt.
[CODE]
[FONT=”Courier New”]WIEGEN TIME DATE Monitor & LCD 25gr. V3d
Datum : ;13.03.2013
Zeit : ;10:04:45
WARTE
01; EIN ;10:04:51 ;0.00; 44.55; DIFF; 44.55
02; EIN ;10:04:56 ;44.55; 45.28; DIFF; 0.73
[/FONT][/CODE]Für die vorläufige Übernahme der Daten nach Excel wäre das eigentlich nicht notwendig,
aber wenn ich irgendwann die Daten auch auf die SD-Karte speichern will,
ist es vielleicht nützlich schon zu wissen wie das Formatieren geht.
Vielleich finde ich auch noch heraus, die float (variable) zu formatieren.Gruß, Apus²
-
14. März 2013 um 12:03 Uhr #934215Apus_ApusTeilnehmer
Formatierung der Anzeige im COM-Fenster.Es war schon eine gute Übung, die Beispiele umzusetzen, so wie ich sie verstanden habe. ;)Mit “sprintf” habe ich die int-Werte und mit “dtostrf”die float-Werte formatiert !Jetzt sieht nun auch die Monitoranzeige wie die LCD-Anzeige geordnet aus.[SIZE=”2″]Binäre Sketchgröße: 12.634 Bytes (von einem Maximum von 30.720 Bytes)[/SIZE]Der Sketch war zu Anfang noch größer, wurde aber mit den letzten Änderungen wieder kleiner und ist danach nicht wieder größer geworden. Gruß, Apus²Weil es am Monitor schon so schön geordnet aussieht, >> davon einen SCREEN SHOOT 🙂
-
14. März 2013 um 17:03 Uhr #934222Apus_ApusTeilnehmer
Nach dem das mit der Formatierung zu meiner Zufriedenheit funktioniert,habe ich im Test eine andere Beobachtung gemacht. So lange ich mich mit den spontanen Gewichtsänderungen in der Nähe des Ereignis Kriteriums von 25 Gramm bewege, funktioniert die Registrierung der Gewichtsänderungen zuverlässig.Aber, wenn ich spontane Gewichtsänderungen mit 100 Gramm oder mehr teste, was nur im Test möglich ist,verursachen die ansteigenden Zwischenwerte Fehler mit Mehrfachregistrierungen. :roll:Das nur mit entsprechendem “delay () “ zu verhindern, war mir noch nicht möglich.Jetzt suche ich nach einer anderen Möglichkeit um den Messwert nur dann zu übernehmen, wenn ich zweimal hintereinander den identischen int-Wert des float-Wertes erfasse, also so lange “scale.getGram()” einlese, bis das geschieht.Ist das mit while möglich, oder wie komme ich zu einer Loop die so lange wartet bis der Wert einigermaßen stabil bleibt?Gruß, Apus²[SIZE=”1″]Inzwischen habe ich das Einlesen der Gewichtswerte etwas verändert. Der oben geschilderte Fehler ist nun weg.Auch die Anzeige am Display ist abgeändert. Die Variable des vorgegeben Gewichtskriterium wird nun mit angezeigt. [/SIZE]
-
19. März 2013 um 10:03 Uhr #934383Apus_ApusTeilnehmer
Nun habe ich mich auch dem Problem, meine Temperatursensoren auszulesen etwas genähert. :+
Ich habe nach langem Suchen, einen Sketch gefunden, von dem ich glaubte ihn zu verstehen. 😉
Leider waren die Temperaturergebnisse nur “Hausnummern”. 🙄Die darin gemachte Berechnung, habe ich nicht verstanden.: /
Dann habe ich es mal so gemacht, wie ich es schon verstanden hatte.
Alle Zeilen der Berechnung erst mal // entfernt und durch die geänderten //** Zeilen ersetzt.Erst nachdem es funktionierte habe ich die // stillgelegten Zeilen entfernt.
So sieht das funktionierende Ergebnis nun aus. \D/[CODE]
#include
#includeOneWire ds(2); //pin für ds1820
//DeviceAdressen der einzelnen ds1820 Temperatursensoren. (Hexadressen in der loop anpassen)
DeviceAddress sensor1 = { 0x28, 0x5E, 0x91, 0xAA, 0x3, 0x0, 0x0, 0xF }; // ROM = 28 5E 91 AA 3 0 0 F C3
DeviceAddress sensor2 = { 0x28, 0xF5, 0x73, 0xAA, 0x3, 0x0, 0x0, 0xF2 }; // ROM = 28 F5 73 AA 3 0 0 F2 C2
DeviceAddress sensor3 = { 0x28, 0xCF, 0x1E, 0xCA, 0x3, 0x0, 0x0, 0xBD }; // ROM = 28 CF 1E CA 3 0 0 BD ICchar sensor1Name[] = “C3 : “;
char sensor2Name[] = “C2 : “;
char sensor3Name[] = “IC : “;//……………………………………………………………………….
void setup(void)
{
Serial.begin(9600);
}
//……………………………………………………..aufrufen…………
void writeToScratchpad(byte* address)
{
//reset the bus
ds.reset();
//select sensor
ds.select(address);
//CONVERT T function call (44h) übernimmt Data in scratchpad
ds.write(0x44,1); // ,0 oder ,1 ?
// 750 ms Wartezeit
delay(750);
}
//…………………………………………………………lesen…………
void readFromScratchpad(byte* address, byte* data)
{
//reset the bus
ds.reset();
//select our sensor
ds.select(address);
//read the scratchpad (BEh)
ds.write(0xBE);
for (byte i=0;i<9;i++){
data = ds.read(); // Bytes lesen
}
}
//……………………………………………………………………….
float getTemperature(byte* address)
{
float TEMP; // ** zusätzliche Variable für die andere Berechnungbyte data[12];
writeToScratchpad(address); // Funktion aufrufen 0x44,1
readFromScratchpad(address,data); // Funktion lesen 0xBE
TEMP = ((data[1] << 8) + data[0] )*0.0625; // ** 12Bit = 0,0625 C per Bit andere Berechnung return TEMP; //** NEUE Variable der einfacheren Berechnung } void loop(void) { float temp1 = getTemperature(sensor1); float temp2 = getTemperature(sensor2); float temp3 = getTemperature(sensor3); Serial.print(sensor1Name); Serial.print(temp1); Serial.println(" C"); Serial.print(sensor2Name); Serial.print(temp2); Serial.println(" C"); Serial.print(sensor3Name); Serial.print(temp3); Serial.println(" C"); Serial.println(); delay(750); } [/CODE] Dieser Sketch macht das was ich wollte und verstanden habe ich ihn auch! [-o< Für meine Waage werde ich ihn nun weiter kürzen und mit einbauen. Gruß, Apus² [FONT="Courier New"]C3 : 9.13 C C2 : 21.12 C IC : 22.44 C …….. Inzwischen habe ich alles alles zusammen gepackt. \D/
Nur ist der Apus-Waage-Code etwas träge.
[I]Die Reaktionszeit liegt jetzt bei ca 5 Sekunden zwischen Ereignis und Anzeige.
Und Platz beansprucht er jetzt auch.
Binäre Sketchgröße: 15.548 Bytes (von einem Maximum von 30.720 Bytes)[/FONT]
-
20. März 2013 um 9:03 Uhr #934411debauerTeilnehmer
Guten Morgen,
hübscher Thread.
Arduinos sind für Anfänger wirklich klasse. Aber ab nem gewissen punkt sollte man den absprung wagen und sich mal tiefer mit der Materie beschäftigen.Dein Waagen Problem war etwas das eim ständig über den weg läuft. Die Variante hatte ich noch nicht und hätte sie wohl wie folgt gelöst:
Mittelwer Bildung über 8 oder mehr Messungen.In jedem Zyklus machst du dann eigentlich nur folgendes:
Mittelwert = Mittelwert-(mittelwert/8)+aktueller_messwert;
und prüft folgendes ab:
Ist Mittelwert +- 10g von aktueller_messwert und ist aktueller_messwert nicht +- 10g von letzer_gespeicherten_messung dann messung speichern.für Fortgeschrittene:
Zusätzlich würde ich mir mal das Konzept einer State Maschine anschaun. Denn dinge wie delay() sind nur für sehr sehr einfache abläufe brauchbar. Sobald 2 dinge Parallel passieren sollen ist delay unbrauchbar.Von daher hat bei mir jede Steuerung eine Timer Funktionalität:
– 10ms basistimer
– n mal Timerzellen die geladen werden können und alle 10ms decrementiert werden.
– die passenden funktionen dazu (isTimerNull, setTimer, setTimerNull…)Und jedes Modul (Uart, Buffer, ai, eeprom…) basiert auf statemaschines.
Meine Hauptschleife sieht bei einem Projekt mit derzeit 3500 Zeilen code wie folgt aus:
[CODE]while (1)
{
LcdTask();
TastTask();
TelegramHandlerTask();
switch(ArbitGetSlot()){
case ARBIT_MENUE:
MenueTask();
break;
case ARBIT_FERNWARTUNG:
WartungTask();
break;
case ARBIT_BST:
BstTask();
break;
case ARBIT_NO_MODUL:
default:
IdleTask();
break;
}
}[/CODE]Da wird zusätzlich noch mit nem Arbiter gearbeitet.
Jeder Task läuft immer nur sehr kurz. Im grunde werden immer nur einige bedingungen abgefragt, eventuell was in den display buffer geschrieben (der zyklisch vom DisplayTask ins Reale DIsplay geschrieben wird), wenn bedingungen passen nen state weiter geüpft und wieder raus.
Somit hab ich mit nem uralt 80c517a (der statt pro takt wie die AVR nur alle 16 Takte ein befehl ausführen kann), zykluszeiten von unter 20ms. Mit nem AVR hätte theoretisch also <2ms, wenn man die eigenheiten mal ausen vor lässt.Bei interesse gehe ich auf die dinger auch mal genauer ein.
-
23. März 2013 um 20:03 Uhr #934521Apus_ApusTeilnehmer
debauer;504519 said:
Guten Morgen,hübscher Thread.
Arduinos sind für Anfänger wirklich klasse. Aber ab nem gewissen punkt sollte man den absprung wagen und sich mal tiefer mit der Materie beschäftigen.Dein Waagen Problem war etwas das eim ständig über den weg läuft. Die Variante hatte ich noch nicht und hätte sie wohl wie folgt gelöst:
Mittelwer Bildung über 8 oder mehr Messungen.In jedem Zyklus machst du dann eigentlich nur folgendes:
Mittelwert = Mittelwert-(mittelwert/8)+aktueller_messwert;
und prüft folgendes ab:
Ist Mittelwert +- 10g von aktueller_messwert und ist aktueller_messwert nicht +- 10g von letzer_gespeicherten_messung dann messung speichern.für Fortgeschrittene:
Zusätzlich würde ich mir mal das Konzept einer State Maschine anschaun. Denn dinge wie delay() sind nur für sehr sehr einfache abläufe brauchbar. Sobald 2 dinge Parallel passieren sollen ist delay unbrauchbar.Von daher hat bei mir jede Steuerung eine Timer Funktionalität:
– 10ms basistimer
– n mal Timerzellen die geladen werden können und alle 10ms decrementiert werden.
– die passenden funktionen dazu (isTimerNull, setTimer, setTimerNull…)Und jedes Modul (Uart, Buffer, ai, eeprom…) basiert auf statemaschines.
Meine Hauptschleife sieht bei einem Projekt mit derzeit 3500 Zeilen code wie folgt aus:
[CODE]while (1)
{
LcdTask();
TastTask();
TelegramHandlerTask();
switch(ArbitGetSlot()){
case ARBIT_MENUE:
MenueTask();
break;
case ARBIT_FERNWARTUNG:
WartungTask();
break;
case ARBIT_BST:
BstTask();
break;
case ARBIT_NO_MODUL:
default:
IdleTask();
break;
}
}[/CODE]Da wird zusätzlich noch mit nem Arbiter gearbeitet.
Jeder Task läuft immer nur sehr kurz. Im grunde werden immer nur einige bedingungen abgefragt, eventuell was in den display buffer geschrieben (der zyklisch vom DisplayTask ins Reale DIsplay geschrieben wird), wenn bedingungen passen nen state weiter geüpft und wieder raus.
Somit hab ich mit nem uralt 80c517a (der statt pro takt wie die AVR nur alle 16 Takte ein befehl ausführen kann), zykluszeiten von unter 20ms. Mit nem AVR hätte theoretisch also <2ms, wenn man die eigenheiten mal ausen vor lässt.Bei interesse gehe ich auf die dinger auch mal genauer ein.
Hallo debauer,
sicher ist mein Interesse es besser zu machen ungetrübt.;)
Ich habe schon den Versuch gemacht und die if-Abfrage mit switch und case umgestellt.
Es sind nur zwei Bedingungen mit denen ich entscheide ob EIN oder AUS vorliegt.
Der danach folgende Code ist identisch.
Wenn ich die eine Hälfte davon weglasse, machte den Sketch etwas kleiner aber nicht schneller.
Auf die Mittelwertbildung kann ich verzichten.
Mit dem sich ändernden aktuellen Wert wird nur entschieden, welcher der zwei Fälle vorliegt.
In Übereinstimmung mit der laufenden LCD Anzeige reichen 75 ms aus um nach diesem Wert den beruhigten Wert der Waage zu übernehmen. Ob das später auch so stimmt, werden mir die ersten echten Messungen im Mai zeigen.10 Messwerte unmittelbar hintereinander zur Mittelwerts-Bildung beinhalten auch die kleinen unruhigen Anfangswerte und verschlechtern das Ergebnis. [getestet]
Zwei aufeinander folgende Werte zu vergleichen sehe ich ein weiteres Risiko, weil meine Objekte leben und ich die Auswirkungen noch nicht kenne.
Die drei Temperauren brauchen je 750ms zum Einlesen.
Ich kann den Zeitpunkt, wann das erfolgen soll nicht optimieren, weil ich immer damit rechnen muss, dass gerade dann eine Änderung des Gewichtes erfolgt.
Wenn ich den Sketch nun noch um das Speichern der Daten auf SD erweitere, wird der gesamte Vorgang sicher noch langsamer.
Der Arduino UNO ist mit dem aktuellen Sketch
Binäre Sketchgröße: 15.604 Bytes (von einem Maximum von 30.720 Bytes) schon gut ausgelastet.
Inzwischen versuche ich es mit dem Arduino Mega. Dafür muss ich aber das SD-Shield anders verdrahten.
Ob das reicht oder sogar noch Libs angepasst werden müssen, wird sich zeigen.
[FONT=”Courier New”]
————–UNO——Mega
(PWR) ……….9……. 9 * (bedingt )
SS_PIN………10…….53
MOSI_PIN…….11…….51
MISO_PIN…….12…….50
SCK_PIN……..13…….52[/FONT]Das ist der bisherige Stand meiner Informationen zu SD-Shield und Mega.
Gruß, Apus²
-
23. März 2013 um 21:03 Uhr #934527ThaRippaAdministrator
Vollzitate, gerade bei langen Beiträgen, sind bei uns nicht gern gesehen. 😉Edit: verdammt, der war so lang dass tapatalk das Ende abgeschnitten hat als ich ihn kürzen wollte. Sorry dafür.
-
23. März 2013 um 22:03 Uhr #934523Apus_ApusTeilnehmer
ThaRippa;504635 said:
Vollzitate, gerade bei langen Beiträgen, sind bei uns nicht gern gesehen. Edit: verdammt, der war so lang dass tapatalk das Ende abgeschnitten hat als ich ihn kürzen wollte. Sorry dafür.Dann sind wir ja quitt. Auch Admins machen Fehler, und ich weiß wovon ich rede.:)Also muss ich auch im MK mir alle Texte im Editor vorschreiben hier hineinkopieren und als Datei aufheben, damit ich die Arbeit nicht eventuell doppelt machen muss. :roll:Lieber wäre mir wenn wie markiert #301 & #302 entfernt worden wären, das hat sich für mich als Anfänger inzwischen ganz erledigt. Dann mache ich hier mal weiter. In Kurzform wiederholt. OK? Den Zusammenhang zum vorangegangenen Beitrag von „debauer“ lässt sich durch lesen ja herstellen.Die If-Abfrage habe ich mal zum Vergleich mit switch und case ersetz.Das macht den Sketch etwas kürzer aber nicht schneller. Die Mittelwertbildung mit den sich ändernden Anfangswerten ist nicht so günstig. Wenn ich nach dem ersten Wert, der er sich um 25gr unterscheidet, die Entscheidung treffe und dann erst nach 75ms einen beruhigten Wert einlese, sind die so erzielten Ergebnisse zuverlässiger.Durch die Temperatur Abfrage, bei der für jeden der drei Sensoren 750ms verlangt werden, ergibt sich schon ein Teil der Verzögerung zwischen Gewichtsänderung — bis es am Monitor zusammen mit den Temperaturen nach ca 6 Sekunden angezeigt wird. Die Zeitangaben muß ich korrigieren, es sind weniger als 3 Sekunden!:)Wie ich das zeitlich verbessern könnte sehe ich als Anfänger noch nicht. Ich kann einen zeitversetzten günstigen Zeitpunkt für das einlesen der Temperaturwerte nicht festlegen, weil eine Gewichtänderung immer erfolgen kann. An meinem Sketch hat sich bisher nicht mehr viel geändert. Ich will jetzt aber einen Arduino Mega verwenden. Dafür muss die Pin-Belegung abgeändert werden.[CODE] UNO MegaActivation(PWR) 9 9 *SS_PIN 10 53MOSI_PIN 11 51MISO_PIN 12 50SCK_PIN 13 52[/CODE]Mehr weiß ich dazu noch nicht. Vorschläge und Tipps, besonders zum Sketch sind willkommen.Gruß, Apus²[SIZE=”1″]Heute habe ich mit einem akustischen Taktgeber das Auflegen , Abheben und Anzeigen am Monitor und Display überprüft. Mein erster Eindruck war wohl mehr subjektiv. Zu zweit mehrfach überprüft kommen wir zu dem besseren Ergebnis. :cool:[/SIZE] Damit kann ich erst mal Leben!Nachdem mir Hallo1001 so gute Nachilfe gegeben, dass es sogar mir gelungen ist umzusetzen, ist auch der Waage – Sketch richtig schnell geworden.:)
-
24. März 2013 um 10:03 Uhr #934537Hallo1001Teilnehmer
Hallo Apus²!
Durch die Temperatur Abfrage, bei der für jeden der drei Sensoren 750ms verlangt werden, ergibt sich schon ein Teil der Verzögerung zwischen Gewichtsänderung — bis es am Monitor zusammen mit den Temperaturen nach ca 6 Sekunden angezeigt wird.
Du musst die Temperaturmessung nicht alle „nacheinander“ starten, mit „Skip ROM(0x44)“ kannst Du alle Temperaturmessungen zur gleichen Zeit starten. Dann brauchst Du nur noch 1x die 750ms warten, danach kannst Du jeden Temperaturfühler mit „Match ROM(0xBE)“ einlesen…
Des Weiteren kannst Du Dir eine Routine erstellen die das starten und einlesen der Temperaturen in einem Rutsch erledigt. Beispiel:
[CODE]
void Temperatur_einlesen(void) {
Match ROM(0xBE) —> Nr1 einlesen
Match ROM(0xBE) —> Nr2 einlesen
Match ROM(0xBE) —> Nr3 einlesen
Skip ROM(0x44) —> Alle Messungen neu starten
}
[/CODE]
Der Trick ist hier dass Du am Ende der Routine gleich eine neue Messung startest. So musst Du die Routine nur alle 750ms einmal aufrufen und erhältst Deine Temperaturen. Nur mal so am Rande: Die 750ms sind die „Mindestzeit“ die der DS10B20 für eine Temperaturmessung benötigt. Es spricht auch nichts dagegen wenn Du die Routine nur alle 2 Sekunden aufrufst…Wie ich das zeitlich verbessern könnte sehe ich als Anfänger noch nicht.
Du musst Dir hier mit Hilfe eines Timers eine Zeitbasis erstellen. Wie die Timer beim Arduino gehandhabt werden weis ich nicht, da musst Du mal die Hilfe bzw. das Internet bemühen. Das Grundprinzip ist aber folgendes. Im Timer-Interrupt-Vektor wird eine „Globale Variable“ hoch gezählt. Da der Timer-Interrupt-Vektor alle X-Zeit angesprungen wird, wird auch die Variable alle X-Zeit um eins erhöht. Bei dem 16MHz Quarz des Arduinos würde sich hier eine 8ms Zeitbasis gut einrichten lassen. In der Hauptschleife könnte dann die Abfrage so aussehen:
[CODE]
if (Zeit1 >= 125) { // wenn 1 Sekunde vergangen ist, dann…
Zeit1 = 0; // Reset, Zeit-Variable zurück setzen
Temperatur_einlesen(); // Temperaturen einlesen
}
[/CODE]
Die IF Anweisung wird hier also nur 1x in der Sekunde aufgerufen (125 x 8ms = 1000ms = 1 Sekunde). Alles andere in der Hauptschleife wird weiterhin „immer“ abgearbeitet. Ach ja, hätte ich beinah vergessen. Die „delay()“ Pausen musst Du natürlich alle entfernen, ansonsten nutzt Dir der ganze Umbau überhaupt nichts…LG Jens
-
24. März 2013 um 10:03 Uhr #934539ThaRippaAdministrator
Bezugnehmend auf deine PNs würd ich dir Raten beim Arduino zu bleiben. Es ist einfach besser die Leistung (die ja ausreicht) richtig zu nutzen, als einfach mehr Flops auf das Problem zu werfen. Letzteres fühlt sich auch weniger toll an. Hang in there!
-
24. März 2013 um 10:03 Uhr #934538Apus_ApusTeilnehmer
Hallo das ist ja ein zweites Sonntagsgeschenk.:)
Das Erste habe ich mir vorhin selbst gemacht, als ich die Zeiten nochmals und exakter bestimmt habe.
Den Vorschlag werde ich heute versuchen umzusetzen.
Danke.=D>
Gruß Apus²
[SPOILER]#include
#includeOneWire ds(2); //pin für ds1820
//DeviceAdressen der einzelnen ds1820 Temperatursensoren. (ROM Adresse für jeden Sensor anpassen)
DeviceAddress sensor1 = { 0x28, 0x5E, 0x91, 0xAA, 0x3, 0x0, 0x0, 0xF };
// ROM = 28 5E 91 AA 3 0 0 F C3
DeviceAddress sensor2 = { 0x28, 0xF5, 0x73, 0xAA, 0x3, 0x0, 0x0, 0xF2 };
// ROM = 28 F5 73 AA 3 0 0 F2 C2
DeviceAddress sensor3 = { 0x28, 0xCF, 0x1E, 0xCA, 0x3, 0x0, 0x0, 0xBD };
// ROM = 28 CF 1E CA 3 0 0 BD ICchar sensor1Name[] = “C3 : “;
char sensor2Name[] = “C2 : “;
char sensor3Name[] = “IC : “;//……………………………………………………………………….
void setup(void)
{
Serial.begin(9600);
}
//……………………………………………………..aufrufen…………
void writeToScratchpad(byte* address)
{
//reset the bus
ds.reset();
//select sensor
ds.select(address);
//CONVERT T function call (44h) übernimmt Data in scratchpad
ds.write(0x44,1); // ,0 oder ,1 ?
// 750 ms Wartezeit
delay(750);
}
//…………………………………………………………lesen…………
void readFromScratchpad(byte* address, byte* data)
{
//reset the bus
ds.reset();
//select our sensor
ds.select(address);
//read the scratchpad (BEh)
ds.write(0xBE);
for (byte i=0;i<9;i++){
data[i] = ds.read(); // Bytes lesen
}
}
//..................................................................................
float getTemperature(byte* address)
{
float TEM; //** zusätzliche Variablebyte data[12];
writeToScratchpad(address); // Funktion aufrufen 0x44,1
readFromScratchpad(address,data); // Funktion lesen 0XBE
TEM = ((data[1] << 8) + data[0] )*0.0625; //** 12Bit = 0,0625 C per Bit andere Berechnung return TEM; //** NEUE Variable der einfacheren Berechnung } void loop(void) { float temp1 = getTemperature(sensor1); float temp2 = getTemperature(sensor2); float temp3 = getTemperature(sensor3); Serial.print(sensor1Name); Serial.print(temp1); Serial.println(" C"); Serial.print(sensor2Name); Serial.print(temp2); Serial.println(" C"); Serial.print(sensor3Name); Serial.print(temp3); Serial.println(" C"); Serial.println(); delay(5); }[/SPOILER] Mit diesem einfachen Sketch konnte ich meine drei Sensoren zum ersten Mal gezielt auslesen. Nur wie ich dort "richtig" den Vorschlag von heute mit Match ROM(0xBE) = alle gemeinsam auszulesen einfügen muss, habe ich leider doch noch nicht verstanden.:-k Leichter wäre es für mich, wenn ich es in diesem Sketch-Beispiel mal sehen könnte. ❓
-
25. März 2013 um 10:03 Uhr #934597Apus_ApusTeilnehmer
Eben habe ich den Versuch gemacht, statt wie bisher
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);das LCD Display so anzusteueren.
LiquidCrystal lcd(7, 8, 3, 4, 5, 6);Das funktioniert auch, 🙂
Jetzt habe ich die PINs 9 – 13 für das SD-Logger Shield komplett frei.
Damit versuche ich die Speicherung der Daten in den Sketch wieder einzubauen.Gruß, Apus²
-
25. März 2013 um 16:03 Uhr #934611Apus_ApusTeilnehmer
Hat jemand eine Idee, weshalb allein zusätzlich mit #include
im Sketch, er sich schon nicht mehr kompilieren lässtund eine große Liste von Fehlermeldungen erschein?Den Text der ersten Zeile, habe ich vor — senden bei allen Fehlerzeilen abgetrennt.[SPOILER]C:\Users\APUS\Arduino\arduino-1.0.3\libraries\SD\TIME AND DATE TO COM1– senden_A.cpp:6: error: ‘byte’ does not name a type– senden_A.cpp: In function ‘void setup()’:– senden_A.cpp:12: error: ‘Serial’ was not declared in this scope– senden_A.cpp: In function ‘void loop()’:– senden_A.cpp:19: error: ‘Serial’ was not declared in this scope– senden_A.cpp:21: error: ‘setTimeFromSerial’ was not declared in this scope– senden_A.cpp:23: error: ‘printDateTime’ was not declared in this scope– senden_A.cpp:24: error: ‘delay’ was not declared in this scope– senden_A.cpp: At global scope:– senden_A.cpp:30: error: ‘byte’ does not name a type– senden_A.cpp: In function ‘void printDateTime()’:– senden_A.cpp:37: error: ‘zero’ was not declared in this scope– senden_A.cpp:41: error: ‘bcdToDec’ was not declared in this scope– senden_A.cpp:52: error: ‘Serial’ was not declared in this scope– senden_A.cpp:53: error: ‘Serial’ was not declared in this scope[/SPOILER]Bei willkürlich gewählten anderen Sketchen geschieht das nicht. :?:Der Sketch selbst funktioniert, wenn ich es nicht einfüge oder lösche.Gruß, Apus²Inzwischen hatte ich Mühe überhaupt wieder einen Sketch mit der SD.h zum laufen zu bringen.[SPOILER]/* SD card datalogger This example shows how to log data from three analog sensors to an SD card using the SD library. The circuit: * analog sensors on analog pins 1, and 2 * SD card attached to SPI bus as follows: ** MOSI – pin 11 ** MISO – pin 12 ** CLK – pin 13 ** CS – pin 10 modified 25 Mrz 2013 by Apus_Apus */#include // CS pin 10 on most Arduino boards,// 53 on the Mega must be left as an output or the SD library// functions will not work.const int chipSelect = 10;void setup(){ // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.print(“Initializing SD card…”); // make sure that the default chip select pin is set to // output, even if you don’t use it: pinMode(10, OUTPUT); // see if the card is present and can be initialized: if (!SD.begin(chipSelect)) { Serial.println(“Card failed, or not present”); // don’t do anything more: return; } Serial.println(“card initialized.”);}void loop(){ // make a string for assembling the data to log: String dataString = ; // read sensors and append to the string: for (int analogPin = 1; analogPin < 3; analogPin++) { int sensor = analogRead(analogPin); dataString += String(sensor); if (analogPin < 2) { dataString += ","; } } // open the file. note that only one file can be open at a time, // so you have to close this one before opening another. File dataFile = SD.open("log001.txt", FILE_WRITE); // if the file is available, write to it: if (dataFile) { dataFile.println(dataString); dataFile.close(); // print to the serial port too: Serial.println(dataString); delay (2000); } // if the file isn't open, pop up an error: else { Serial.println("error opening datalog.txt"); } }[/SPOILER]Dieser Sketch macht zwar was unsinniges, das aber richtig. :d:Jetzt lasse ich nur die zwei Analog-Pins A1 und A2 der Waage einlesen und auf die SD Karte schreiben und doch wird schon dafür 50% vom Arduino Speicher gebraucht. WARUM? [SIZE=”1″]Binäre Sketchgröße: 14.998 Bytes (von einem Maximum von 30.720 Bytes)[/SIZE]Ich vermute es liegt nur an der SD.h Library. Wenn ich die in meinen Waage-Sketch einfügen will, reicht der Speicher natürlich nicht. x([SIZE=”1″]Binäre Sketchgröße: 15.674 Bytes (von einem Maximum von 30.720 Bytes)[/SIZE]Das erklärt vielleicht die unsinnigen Fehlermeldungen.Gruß, Apus² ……………. in Nachtschicht. :+Einen Versuch mit dem Mega mache ich dann morgen.Den Versuch musste ich aufschieben. Aber noch eine Information.Die SD -Karte ist Fat 32 formatiert. -
27. März 2013 um 18:03 Uhr #934714Apus_ApusTeilnehmer
Ich habe es gewagt und bin mit dem SD-Logger Shield auf den Arduino Mega umgezogen. :)Ich hatte mich eigentlich gut vorbereitet, aber es ist auch etwas Glück dabei, eine gute Doku zu finden, die sich nachvollziehen lässt. 😉 z.B. http://www.ashleymills.com/node/326Nach kleinen Irritationen, läuft der Apus-Waage-Sketch erst mal so wie vorher auf dem Arduino Duemilanove.Interessant ist, dass der Sketch mit dem Umzug schon gleich ein Stück größer geworden ist.[SIZE=”1″]Binäre Sketchgröße: 17.182 Bytes (von einem Maximum von 258.048 Bytes) jetzt[/SIZE][SIZE=”1″]Binäre Sketchgröße: 15.676 Bytes (von einem Maximum von 30.720 Bytes) vorher[/SIZE]Jetzt kann ich auch das SD-Logger Problem angehen. Gruß, Apus.[SIZE=”1″]Für den ersten Versuch musste ich die Kabel nehmen, die ich hatte und deshalb sehr auf die Farben achten. :+[/SIZE]
-
28. März 2013 um 21:03 Uhr #934758Apus_ApusTeilnehmer
Das Logger-Problem muss noch etwas warten.Heute habe ich den Luftdruck-Sensor bekommen.Es ist zwar nicht einfach einen Sketch zu finden, mit dem sich der Sensor auch gleich testen lässt.Und doch hatte ich GLÜCK, beim Suchen. \D/Der Sketch hatt zwar noch einen veralteten Code.http://mitat.tuu.fi/?p=78Die Zeilen waren schnell angepasst. zu ändern war nur :receive >> readund send >> writeDann konnte ich auch kompilieren! :)Zum Testen habe ich dann erst mal den Arduino Duemilanove genommen.Im Sketch habe ich nach dem ersten Test gleich das Delay von 100 auf 3000 ehöht, denn ich wollte mir auch die Kalibriervorgaben ansehen.[SPOILER]Setting up BMP085Reading Calibration DataAC1: 7120AC2: -922AC3: -14402AC4: 32040AC5: 25015AC6: 17370B1: 5498B2: 5498MB: -32768MC: -11075MD: 2432234 98668234 98662234 98663234 98666234 98664234 98662234 98671234 98662234 98669234 98666234 98664234 98666[/SPOILER]So wie es aussieht werden 23,4 Grad und 986,66 hPa angezeigt.Bei 22,9 Grad und 1005,1 hPa zu meinen Referenzwerten.Das sieht schon mal erfreulich gut aus. Die Abweichungen sind nicht sehr groß.=D>Wenn ich verstanden habe wie ich das machen muss, :+werde ich im Sketch die Kalibrierdaten anpassen. :)Dazu werde ich hier noch mal reinschauen.http://sensorapp.net/?p=278Gruß, Apus²Die Luftdruck Werte, werden absolut angezeigt und können so bleiben.Auch die Temperatur stimmt.
-
29. März 2013 um 20:03 Uhr #934798Apus_ApusTeilnehmer
rechtzeitig vor Ostern, bin ich wieder ein Stück weiter. :)Das was ich in dem Waage-Sketch gebraucht habe, um auch die Werte vom BMP 085 anzuzeigen, habe ich heute versuchsweise eingegliedert. Von Null an kann ich in 8 Wochen keinen perfekten C++ _Sketch programmieren, aber mit etwas Glück war auch diese Erweiterung heute erfolgreich. [SIZE=”3″]Es funktioniert![/SIZE]Im ersten Schritt, hatte ich zwar den Druck und die Temperatur vom Sensor, aber Datum und Uhrzeit waren gestört. :roll:Um festzustellen, ob das durch den BMP085 verursacht wird, habe ich nur die V5 Versorgung zum Sensor getrennt.Verblüfft war ich, als dann nicht nur Datum und Zeit wieder funktionierten, sondern die Sensorwerte waren auch beide noch korrekt zu sehen. =D>Welchen Betriebszustand des Sensors ich dadurch erwischt habe, kann ich nicht sagen.:-kUm sicher zu sein, habe ich dann die 3,3V vom Arduino angeschlossen. Damit werden weiter alle Daten und Werte ohne Störung erfasst.O:-)Am Monitor bekomme ich jetzt alle Werte angezeigt, die ich für meine Überwachung sehen will. \D/Nur das Speichern der Daten auf die SD-Karte ist leider noch nicht möglich. : /Das Speicher-Problem auch noch zu lösen wird vermutlich schwierig, denn ich will dabei auch die Möglichkeit einbauen, den SD-Chip ohne Datenverlust so zu tauschen, dass auf einem zweiten Chip weiter gespeichert wird. Dann kann ich den ersten Chip schon auswerten.Theoretisch habe ich noch vier Wochen, mal sehen was sich da noch machen lässt. :+Allen ein frohes Osterfest,Apus²Wer sich für Umrechnung auf Meereshöhe, seine Bezugs-Höhe zeigen lassen will, findet hier gut gemachte Seiten und auch die Berechnung dazu.http://gpso.de/maps/http://wetter.physik.uni-mainz.de/reduzierter_luftdruck.phpAuch diese Dokumentation seiht sehr gut aus ! :d:http://www.ele.uri.edu/courses/ele205/Arduino%20-%20Reference.pdfWeil es jetzt so schön aussieht………….. die Monitortabelle 😉
-
1. April 2013 um 12:04 Uhr #934872Apus_ApusTeilnehmer
Um bei der Anwendung ab ca. 4 Wochen schneller die Information zusehen,
ob es zu Fehl-Registrierungen gekommen ist, habe ich diese Ampel-Funktion hinzugefügt.So wie hier funktioniert die Logik.
[SPOILER] void LED_Ampel(){if ((MS) == (MS2)) digitalWrite(led24, HIGH);
if ((MS) == (MS2)) digitalWrite(led26, HIGH);
if ((MS) == (MS2)) digitalWrite(led28, LOW ); // turns two LEDs ON
{
}if ((MS) == (MS1)) digitalWrite(led24, HIGH);
if ((MS) == (MS1)) digitalWrite(led26, LOW );
if ((MS) == (MS1)) digitalWrite(led28, LOW ); // turns one LED off
{
}if ((MS) == (MS0)) digitalWrite(led24, LOW );
if ((MS) == (MS0)) digitalWrite(led26, LOW );
if ((MS) == (MS0)) digitalWrite(led28, LOW ); // turns all red LEDs off
{
}if ((MS) >= (MS3)||(MS) < (MS0)) digitalWrite(led24, LOW ); if ((MS) >= (MS3)||(MS) < (MS0)) digitalWrite(led26, LOW ); if ((MS) >= (MS3)||(MS) < (MS0)) digitalWrite(led28, HIGH); // turns the red LED on } [/SPOILER] Die gleiche Logik mit „Switch“ aufzubauen oder für jeden Zustand nur einmal [SIZE=”3″]if [/SIZE]zu verwenden, hat noch nicht funktioniert. Wie müsste das aussehen?
Bei MS0 bis MS3 entsprechen die Werte ihrer Ziffern.
Gruß, Apus²
Nachtrag meiner zweiten Lösung “ohne if” : 😉
Sogar die Grenzüberschreitung <0 und >2 scheint so zu funktionieren, aber schneller sieht es mir nicht aus.[SPOILER]void LED_Ampel(){
switch (int(MS)){case 0:
digitalWrite(led24, LOW ); digitalWrite(led26, LOW ); digitalWrite(led28, LOW ); // turn two LEDs ON
break;case 1:
digitalWrite(led24, HIGH); digitalWrite(led26, LOW ); digitalWrite(led28, LOW ); // turns one LED off
break;case 2:
digitalWrite(led24, HIGH); digitalWrite(led26, HIGH); digitalWrite(led28, LOW ); // turns all red LEDs off
break;case 3:
digitalWrite(led24, LOW ); digitalWrite(led26, LOW );digitalWrite(led28, HIGH); // turns the red LED on
break;case -1:
digitalWrite(led24, LOW ); digitalWrite(led26, LOW );digitalWrite(led28, HIGH); // turns the red LED on
break;
}
delay(1);
}[/SPOILER]die letzten beiden case Fälle mit 3 und -1 , kann ich auch so ersetzen.
[SPOILER]
default:
digitalWrite(led24, LOW );
digitalWrite(led26, LOW );
digitalWrite(led28, HIGH); // turns red LED on
}
delay(1);
}
[/SPOILER]Das ist dann noch kürzer. 🙂
-
1. April 2013 um 15:04 Uhr #934880Apus_ApusTeilnehmer
Als ich begann die beiden 16X4 Displays zu verwenden, ist dieser Sketch entstanden.
Daten hatte ich zu den Displays anfangs nicht :-k und habe es mal analog zu den 16×2 Displays versucht.[SPOILER]
/* ÜBUNG Apus_Apus MK 01.04.2013
* LiquidCrystal_16x4_Testen_OK
* DV16400 liquid crystal display
*/
// Pinbelegung des Displays
// LCD.RS – pin 7
// LCD.En – pin 8
// LCD.D4 – pin 3
// LCD.D5 – pin 4
// LCD.D6 – pin 5
// LCD.D7 – pin 6#include
LiquidCrystal lcd(7, 8, 3, 4, 5, 6);int x = 0; // Spalten – Zähler
int z = 0; // Zeilen – Zähler
String stringType = ” “; // Zeichenvoid setup() {
lcd.begin(16,4); // DV16400 liquid crystal display
}
void loop() {lcd.clear();
lcd.setCursor(0 ,0);lcd.print(“1. Zeile 0,0”);
lcd.setCursor(0 ,1);lcd.print(“2. Zeile 0,1”);
lcd.setCursor(16,0);lcd.print(“3. Zeile 16,0”);
lcd.setCursor(16,1);lcd.print(“4. Zeile 16,1”);
delay (2000) ;
lcd.clear();
delay ( 300) ;
// Beginn der Kurzform und ohne delay; schnellfor (int z = 0; z< 2; z++){ for (int y = 0; y< 2; y++){ y = y *16; lcd.setCursor(y ,z); for (int x = 0; x< 16; x++){ stringType = String(x,HEX); lcd.print (stringType); } } } // Ende der Kurzform delay (3000) ; // Zeit zum Staunen :-)) lcd.clear(); // lange Form mit delay und langsamer lcd.setCursor(0 ,0);lcd.print("0"); // erste Zeile delay (100); lcd.setCursor(1 ,0);lcd.print("1"); delay (100); lcd.setCursor(2 ,0);lcd.print("2"); delay (100); lcd.setCursor(3 ,0);lcd.print("3"); delay (100); lcd.setCursor(4 ,0);lcd.print("4"); delay (100); lcd.setCursor(5 ,0);lcd.print("5"); delay (100); lcd.setCursor(6 ,0);lcd.print("6"); delay (100); lcd.setCursor(7 ,0);lcd.print("7"); delay (100); lcd.setCursor(8 ,0);lcd.print("8"); delay (100); lcd.setCursor(9 ,0);lcd.print("9"); delay (100); lcd.setCursor(10 ,0);lcd.print("A"); delay (100); lcd.setCursor(11 ,0);lcd.print("B"); delay (100); lcd.setCursor(12 ,0);lcd.print("C"); delay (100); lcd.setCursor(13 ,0);lcd.print("D"); delay (100); lcd.setCursor(14 ,0);lcd.print("E"); delay (100); lcd.setCursor(15 ,0);lcd.print("F"); delay (100) ; // zweite Zeile lcd.setCursor(0 ,1);lcd.print("0"); delay (100); lcd.setCursor(1 ,1);lcd.print("1"); delay (100); lcd.setCursor(2 ,1);lcd.print("2"); delay (100); lcd.setCursor(3 ,1);lcd.print("3"); delay (100); lcd.setCursor(4 ,1);lcd.print("4"); delay (100); lcd.setCursor(5 ,1);lcd.print("5"); delay (100); lcd.setCursor(6 ,1);lcd.print("6"); delay (100); lcd.setCursor(7 ,1);lcd.print("7"); delay (100); lcd.setCursor(8 ,1);lcd.print("8"); delay (100); lcd.setCursor(9 ,1);lcd.print("9"); delay (100); lcd.setCursor(10 ,1);lcd.print("A"); delay (100); lcd.setCursor(11 ,1);lcd.print("B"); delay (100); lcd.setCursor(12 ,1);lcd.print("C"); delay (100); lcd.setCursor(13 ,1);lcd.print("D"); delay (100); lcd.setCursor(14,1);lcd.print("E"); delay (100); lcd.setCursor(15,1);lcd.print("F"); delay (100) ; // dritte Zeile lcd.setCursor(16,0);lcd.print("0"); delay (100); lcd.setCursor(17,0);lcd.print("1"); delay (100); lcd.setCursor(18,0);lcd.print("2"); delay (100); lcd.setCursor(19,0);lcd.print("3"); delay (100); lcd.setCursor(20,0);lcd.print("4"); delay (100); lcd.setCursor(21,0);lcd.print("5"); delay (100); lcd.setCursor(22,0);lcd.print("6"); delay (100); lcd.setCursor(23,0);lcd.print("7"); delay (100); lcd.setCursor(24,0);lcd.print("8"); delay (100); lcd.setCursor(25,0);lcd.print("9"); delay (100); lcd.setCursor(26,0);lcd.print("A"); delay (100); lcd.setCursor(27,0);lcd.print("B"); delay (100); lcd.setCursor(28,0);lcd.print("C"); delay (100); lcd.setCursor(29,0);lcd.print("D"); delay (100); lcd.setCursor(30,0);lcd.print("E"); delay (100); lcd.setCursor(31,0);lcd.print("F"); delay (100) ; // vierte Zeile lcd.setCursor(16 ,1);lcd.print("0"); delay (100); lcd.setCursor(17 ,1);lcd.print("1"); delay (100); lcd.setCursor(18 ,1);lcd.print("2"); delay (100); lcd.setCursor(19,1);lcd.print("3"); delay (100); lcd.setCursor(20,1);lcd.print("4"); delay (100); lcd.setCursor(21,1);lcd.print("5"); delay (100); lcd.setCursor(22,1);lcd.print("6"); delay (100); lcd.setCursor(23 ,1);lcd.print("7"); delay (100); lcd.setCursor(24,1);lcd.print("8"); delay (100); lcd.setCursor(25,1);lcd.print("9"); delay (100); lcd.setCursor(26 ,1);lcd.print("A"); delay (100); lcd.setCursor(27 ,1);lcd.print("B"); delay (100); lcd.setCursor(28 ,1);lcd.print("C"); delay (100); lcd.setCursor(29 ,1);lcd.print("D"); delay (100); lcd.setCursor(30 ,1);lcd.print("E"); delay (100); lcd.setCursor(31 ,1);lcd.print("F"); delay (3000); } [/SPOILER] Im Sketch steht auch noch meine erste lange Form, mit der ich die Zeichen von 0 bis F nacheinander in die Zeile schreibe. 🙂 Nun habe ich mich auch mal an einer KURZFASSUNG versucht. Eine kleine Übung um mit den Möglichkeiten bei C++ vertraut zu werden. O:-) Vielleicht nützt es jemandem, oder kann in diesem Beispiel auch die Kurzfassung mit den Großbuchstaben einbauen. ❓ Auch für 16x2 Displays lässt es sich anpassen. Wenn ich mir den Code für die Cursor-Steuerung anschaue, entsprechen die 4 Zeilen eigentlich (16 + 16) * 2 = zwei Zeilen a´32 Zeichen. ❓ Gruß, Apus²
-
1. April 2013 um 19:04 Uhr #934890RenovatioTeilnehmer
Beachtliche Leistung wie sehr du dich in dieses Thema einbringst.Danke!Habe leider noch kein Arduino aber mit der Zeit kommt sicherlich eins ins Haus.In diesen SinneAndre
-
4. April 2013 um 21:04 Uhr #934992Apus_ApusTeilnehmer
Hier zeige ich nur einige Bilder, die zeigen sollen wozu ich den Arduino mit Wiegefunktion einsetzen werde.
Bild links, der Blick in den Kasten.
Der ganze Innenraum wird von der Aluwanne eingenommen.
Inzwischen hängt der Kasten schon bezugsfertig vor dem Fenster.
Der Spalt zwischen Wanne und Kasten, ist mit der Wandverkleidung gegen Verschutzung abgedeckt.Bild rechts
Mit den Kugeldruckschrauben ist ein elastisches Spiel an den Ecken eingestellt.
Um Reibung zu vermeiden und damit sich die Wanne im Betrieb nicht verdreht.Bild Mitte, die Montage des Biegebalkens am Kasten und der Alu-Wanne,
der als Sensor die Gewichtskräfte über den AD -Wandler an den Arduino übermittelt.Mehr als die drei Bilder bringe ich hier jetzt leider nicht unter.
Gruß, APUS²
-
4. April 2013 um 23:04 Uhr #935009Apus_ApusTeilnehmer
Apus_Apus;505136 said:
Hier zeige ich nur einige Bilder, die zeigen sollen wozu ich den Arduino mit Wiegefunktion einsetzen werde.Mehr als die drei Bilder bringe ich hier jetzt leider nicht unter.Gruß, APUS²Fortsetzung.;)Bild linksHier ist der Kasten mit der Nistmulde im Hintergrund zusehen.Bild rechtsDer Kasten mit dem Kamera-Anbau an dem noch die Kamera befestigt wird, wenn es wärmer ist.Unter dem Boden ist die Schutzkappe für den Wiegebalken und den AD-Wandler zu sehen.Den Haken kann ich leicht in den Sensor einschrauben. Daran kann ich Testgewichte anhängen, ohne sie in den Kasten legen zu müssen und jederzeit die Waage überprüfen. :)Gruß, Apus²
-
6. April 2013 um 15:04 Uhr #935036Apus_ApusTeilnehmer
Eigentlich hatte ich vor diese weitere Funktionsmöglichkeit erst viel später zu nutzen. Aber sie eignet sich schon jetzt sehr gut um die Waage dynamisch zu testen.An den Haken auf den vorherigen Bildern, habe ich ein Futtersäckchen gehängt.Ebenso habe ich das Ansprechniveau auf 6 Gramm reduziert.[CODE][FONT=”Courier New”] Futter – Waage 2013 with Arduino Mega DATE TIME SCALE TEMP PERESSURE (abs) & LCD 6gr.F06 Zeit : 08:04:16 Datum: 06.04.2013 N | Ereignis | WARTE | ALT | NEU | DIFF | MS| T (Z)| T (K)| T (S)| P [hPa] | T (R) | P [NN hPa] 00|
|08:04:16| 0.0| -0.0| -0.0| 0| 16.7| 3.9| 3.4| 995.74| 17.10| 1014.20 01| < EIN < |08:09:04| -0.0| 10.3| 10.3| 1| 16.8| 4.0| 3.6| 995.92| 17.10| 1014.38 02| > AUS > |08:10:18| 10.3| -0.2| -10.4| 0| 16.8| 4.0| 3.5| 995.86| 17.10| 1014.32 03| < EIN < |08:44:46| -0.2| 10.1| 10.3| 1| 17.4| 4.3| 3.8| 996.28| 17.70| 1014.75 04| > AUS > |08:45:06| 10.1| -0.7| -10.9| 0| 17.4| 4.3| 3.8| 996.34| 17.70| 1014.81 05| < EIN < |09:13:06| -0.7| 9.7| 10.4| 1| 17.8| 4.4| 4.0| 996.49| 18.10| 1014.96 06| > AUS > |09:13:33| 9.7| -0.6| -10.3| 0| 17.9| 4.4| 4.0| 996.52| 18.10| 1014.99 07| < EIN < |10:04:36| -0.6| 9.7| 10.3| 1| 17.6| 4.6| 4.0| 996.89| 18.10| 1015.37 08| > AUS > |10:04:39| 9.7| -0.4| -10.2| 0| 17.6| 4.5| 4.0| 996.89| 18.10| 1015.37 09| < EIN < |10:04:58| -0.4| 9.9| 10.4| 1| 17.6| 4.6| 4.0| 996.89| 18.10| 1015.37 10| > AUS > |10:06:50| 9.9| -0.8| -10.7| 0| 17.6| 4.5| 3.9| 996.92| 18.10| 1015.40 11| < EIN < |13:14:44| -0.8| 8.2| 9.0| 1| 21.9| 6.8| 6.6| 997.73| 21.90| 1016.22 12| > AUS > |13:15:08| 8.2| -2.3| -10.5| 0| 21.9| 6.8| 6.6| 997.79| 21.90| 1016.29 13| < EIN < |15:23:09| -2.3| 8.9| 11.1| 1| 8.0| 7.1| 6.9| 998.24| 24.00| 1016.74 14| > AUS > |15:23:59| 8.9| -2.6| -11.5| 0| 8.0| 7.1| 6.9| 998.12| 24.00| 1016.62 15| < EIN < |15:27:13| -2.6| 8.2| 10.9| 1| 23.9| 7.1| 6.9| 998.18| 23.90| 1016.68 16| > AUS > |15:30:05| 8.2| -2.8| -11.0| 0| 23.8| 7.1| 7.0| 998.26| 23.90| 1016.76[/FONT][/CODE]Jetzt registriere ich die Zeiten, wenn eine Blaumeise [ 10 – 11 gr.] zum Futterholen kommt. Dem letzten Ereignis 15/16 konnte ich eben zum ersten mal sogar live zuschauen. :)Jetzt muss es nur noch wärmer werden, damit meine eigentlichen Sommergäste, für die ich das vorbereitet habe, auch kommen wollen.Gruß, Apus²Von heute gibt es auch das Passende Foto zur Messung. 🙂 -
7. April 2013 um 18:04 Uhr #935099Apus_ApusTeilnehmer
Wenn es als Ergänzung nicht geht, dann so. :)[CODE][FONT=”Courier New”][SIZE=”2″] Futter – Waage 2013 with Arduino Mega DATE TIME SCALE TEMP PERESSURE (abs) & LCD 6gr.F06 Zeit : 15:22:37 Datum: 07.04.2013 N | Ereignis | WARTE | ALT | NEU | DIFF | MS| T (Z)| T (K)| T (S)| P [hPa] | T (R) | P [NN hPa] 00|
|15:22:37| -0.1| -0.1| 0.0| 0| 22.5| 5.3| 4.4| 999.35| 22.50| 1017.88 01| < EIN < |16:02:13| -0.1| 11.6| 11.7| 1| 22.2| 5.6| 5.1| 998.89| 22.40| 1017.41 02| > AUS > |16:03:25| 11.6| 0.5| -11.1| 0| 22.2| 5.7| 5.1| 998.82| 22.40| 1017.34 03| < EIN < |16:41:32| 0.5| 12.2| 11.7| 1| 22.0| 5.7| 5.3| 998.24| 22.20| 1016.74 04| > AUS > |16:44:01| 12.2| 0.7| -11.6| 0| 22.0| 5.8| 5.3| 998.18| 22.20| 1016.68[/SIZE][/FONT][/CODE]Gruß, Apus² -
11. April 2013 um 16:04 Uhr #935335Apus_ApusTeilnehmer
Bald wird es ernst. :)Nach dem ich heute die letzten fehlenden Komponenten bekam, habe ich meinem Arduino Mega das 16 x 4 Display fest zugeordnet.Für Experimente ist ein Steckbrett noch gut ausreichend, aber jetzt ist es übersichtlicher.Auf der Unterseite habe ich Steckverbinder flach angelötet und damit das Display am Arduino verbunden.Beide Teile sind mit kurzen Pfosten auf einem Stück Bastler-Glas verschraubt und bilden jetzt auch mechanisch eine Einheit.Um auch die anderen Komponenten noch zu befesteigen, ist auf dem Bastler-Glas noch Platz.Die andere Waage mit der Steckbrett-Lösung teste ich momentan weiter als Futterwaage.Weil ich immer nur Blaumeisen fressen sah, habe ich mich über einige Gewichtsangaben gewundert. Inzwischen habe ich eine “BEEP” -Funktion mit eingebaut, die mir hörbar meldet, wenn ein Vogel da ist und verpasse keinen Vogel.Dadurch weiss ich nun, dass nicht nur Blaumeisen kommen. ;)Nach dem in den nächsten Tagen wärmeres Wetter angekündigt ist, muss ich schon bald mit Sommergästen im Kasten rechnen. Wenn ich auf das Wiegen im Kasten umstelle, werde ich die Beep-Funktion beibehalten. Für die erste Ankunft sogar auf Dauerton.Gruß, Apus²
-
12. April 2013 um 11:04 Uhr #935387Apus_ApusTeilnehmer
Hier muss ich wohl etwas vorsichtig sein. 🙄
Der Luftdruck – Sensor arbeitet korrekt.
Jetzt wollte ich auch noch einen
Adafruit TSL2561 digital luminosity / lux / light sensor verwenden, aber :[CODE]
[COLOR=”DarkRed”]Der TSL2561 darf nicht an einer Spannung über 3,6 Volt betrieben werden,
also sind die vom Arduino bereitgestellten 3,3 Volt geeignet.
Aber Vorsicht:
Wenn weitere Sensoren wie z.B. ein DS1307 mit einer Betriebsspannung von 5 Volt
am selben I²C-Bus(external link) betrieben werden, gibt es Ärger.Ich zitiere:
You may be wondering, how is it OK to connect a 3.3V chip
like the TSL2561 to 5.0V data pins like the Arduino? Isn’t that bad?Well, in this specific case its OK. I2c uses pullup lines to the 3.3V power pin,
so the data is actually being sent at 3.3V.
As long as all the sensors/device on the i2c bus are running on 3.3V power, we’re fine.However, don’t use a 5.0v powered i2c device (like the DS1307) with pullups
at the same time as a 3.3V device like the TSL2561!
If you want to use this sensor with a datalogger that uses the DS1307,
remove any/all of the pullup resistors from the DS1307 SDA/SCL pins.
The pullups built into the TSL2561 will then be active and keep the voltage at 3.3V
which is safe for both the RTC and the sensor. [/COLOR][/CODE]Gruß, Apus²
-
15. April 2013 um 17:04 Uhr #935539Apus_ApusTeilnehmer
Bald geht es los. Vielleicht noch 14 Tage ?
Die Wohnung ist renoviert 🙂
Die 2. Waage mit der ich das Datenspeichern lernen will. 😉
Gruß, Apus²
-
25. April 2013 um 7:04 Uhr #935954Sc0rpTeilnehmer
Hallo Leute,
ich melde mich auch mal wieder zu Wort – auch wenn ich in letzter Zeit ziemlich inaktiv war, habe ich fleissig mitgelesen.Erstmal was von der Kickstarter-Front:
http://www.kickstarter.com/projects/435742530/udoo-android-linux-arduino-in-a-tiny-single-board?ref=category
-> krasses Teil 😉Zum Zweiten bin ich (grad mehr theoretisch) dabei, mir Gedanken über eine modular erweiterbare Lüftersteuerung auf Basis phil’s Sketches zu machen. Und daher freue ich mich, wenn einball hier auch ein wenig mehr einsteigt 😉 – ich bin leider kein Elektroniker :(. Übe auch gerade fleissig Löten … wenn ich Zeit hab 🙄
Sc0rp
-
26. April 2013 um 10:04 Uhr #936015Apus_ApusTeilnehmer
Eigentlich habe ich heute erst am Nachmittag mit einem Einflug gerechnet, aber klammheimlich wurde eingeflogen. 😆
Die erste Ankunft 05:52:55 habe ich verschlafen.
Aber meine kleinen elektronischen Helferlein waren wachsam und haben das EREIGNIS registriert.
[CODE][FONT=”Courier New”][SIZE=”2″]
APUS-APUS – Waage 2013 with Arduino Mega Beep_x1
DATE TIME SCALE TEMP PERESSURE (abs) & LCD 25gr.G09
Zeit : 04:00:00 Datum: 26.04.2013
N | Ereignis | WARTE | ALT | NEU | DIFF | MS| T (S)| T (K)| P [hPa] | T (R) | P [NN hPa] check
00||04:00:00 | -0.1| -0.1| 0.0| 0| 12.9| 12.8| 999.35| 25.70| 1018.45| 01| < EIN < |05:42:55 | 1.5| 52.6| 51.1| 1| 12.6| 12.8| 995.05| 19.10| 1013.50| 1.5 04| > AUS > |07:13:58 | 53.8| 18.9| -34.9| 0| 12.3| 16.4| 994.77| 19.20| 1013.21| 3.7[/SIZE][/FONT]
[/CODE]Durch ein verzögertes Ausfliegen, kam es noch zu einem Fehler, aber das Einflug Gewicht von 51 Gramm stimmt.
Mit dem aktuellen Display-Wert vom leeren Kastens errechnet sich das identische Gewicht des Mauerseglers.Gruß, Apus²
-
3. Juli 2013 um 10:07 Uhr #938076spokekillerTeilnehmer
Hallo zusammen!
Es ist nun etwas über zwei Jahre her, daß ich diesen Thread ins Leben gerufen hatte. Das Feedback war erstaunlich hoch und vor allem – sehr überraschend für mich – auch sehr positiv. Ich hatte ja nicht damit gerechnet, daß ein n00biger Autodidakt hier soviel Zuspruch und Unterstützung bekommen kann. Die Meßlatte angesichts der sensationellen Projekte im Forum lag ja nicht zu niedrig.
Zu Anfang konnte ich viele Dinge beisteuern und die Lust am Basteln nicht nur in mir, sondern auch anderen, hochhalten. Dann bin ich leider krankheitsbedingt lange ausgefallen. Die Zeit danach war nur von wenig Projekten meinerseits erfüllt. Viel privater Streß und weitere gesundheitliche Probleme haben mich in meiner Freizeit viel Kraft gekostet.
Dann, als Apus² hier wieder frischen Wind reinbrachte, dachte ich auch für mich an einen zweiten Frühling, aber dann wurde ich wieder krank (gleich zweimal in 6 Wochen Grippe) und mußte bis vor kurzem auch noch meinen Job und den meiner 6 Teamkollegen nach Takatuka-Land verlagern. All dies hat mich furchtbar ausgezehrt. Seelisch wie körperlich.
Vor vier Wochen dann kamen die ersten Gedanken an Arduino Projekte wieder. Mittlerweile habe ich in meinem Keller eine kleine Werkecke und mich auch sogar wieder mal kurz mit dem Arduino beschäftigt (Bluetoothmodule am Arduino und Übertragung von Meßwerten via BT an PC — nicht kleckern, klotzen, jaja).
Was auch wiederkam war eine gewisse Unzufriedenheit mit mir selbst, hier so wenig gemacht zu haben. Hier zuhause stapeln sich die Kistchen mit halbfertigen Projekten…. Und Renovatio mußte ich auch mitten in einem Projekt hängenlassen, was mir immer noch arg ist.
Der Streßpegel ist jetzt seit zwei Wochen wieder deutlich unten, auch privat — man kann aber sagen ich glühe noch aus. Also hab ich das erste Mal in 4 Monaten wieder hier reingeschaut. Die offenen Tutorials im Index werde ich wohl noch in den nächsten 6-8 Wochen durchziehen können, weil sie nicht allzu komplex sind.
Ich hoffe, daß ich dann zukünftig wieder ein wenig mehr Updates (so etwa ein Tutorial pro Monat) veröffentlichen kann. Am Material liegts nicht, eher an meinem inneren Antrieb.
Bis hierhin möchte ich mich angesichts des 2. Geburtstag des Threads bei allen Beitragenden ganz herzlich bedanken. Ich zähl Eure Namen nicht auf, weil Ihr wohl genau wißt, wer gemeint ist.
Also soll es mit kleinen aber stetigen Schritten fortan auch wieder von mir aus weitergehen. Ich werde mich auch zukünftig an einfache Tuts und Vorstellungen halten, damit Einsteiger weiterhin leicht mitkommen. Die Mammutprojekte, Arbiter und Timer und was sonst an geilen Sachen unterwegs ist, überlasse ich dann den Mitstreitern. Vor allem in Ermangelung eigener “Großprojekte”. Bei mir soll es immer schnell und möglichst einfach zum Ziel führen. Das ist nicht immer elegant und hakt manchmal.
Danke für Eure Aufmerksamkeit,
Cheers, Euer Spoke.
-
3. Juli 2013 um 14:07 Uhr #937991RenovatioTeilnehmer
spokekiller;508426 said:
Vor vier Wochen dann kamen die ersten Gedanken an Arduino Projekte wieder. Mittlerweile habe ich in meinem Keller eine kleine Werkecke und mich auch sogar wieder mal kurz mit dem Arduino beschäftigt (Bluetoothmodule am Arduino und Übertragung von Meßwerten via BT an PC — nicht kleckern, klotzen, jaja).
Was auch wiederkam war eine gewisse Unzufriedenheit mit mir selbst, hier so wenig gemacht zu haben. Hier zuhause stapeln sich die Kistchen mit halbfertigen Projekten…. Und Renovatio mußte ich auch mitten in einem Projekt hängenlassen, was mir immer noch arg ist.
Super das du endlich eine Bastelecke hast. Das mit der Datenübertragung über Bluetooth hört sich sehr gut an.
Wäre gut für Temperaturwerte oder auch andere Dinge.Hat doch alles bestens funktioniert. Als nächstest steht erst mal endlich ein Arduino mit dem Ethernet Shield an. Übrigens das mit den Text Display’s wäre echt suer für Werte auslesen. Sollten wir mal weiter per PN besprechen.
Schön das du aber wieder unteruns bist, du kriegst deine Probleme schon wieder im Griff.
In diesen Sinne
Andre -
16. September 2013 um 0:09 Uhr #939941NukedTeilnehmer
Hab momentan ein Projekt in Planung und zwar ein coindozer/pennypusher/münzschieber was auch immer
Habe mir gestern einen Arduino UNO R3 bestellt als als Starter Kit. ich hoffe das es bald los gehen kann.
Der Plan sieht so aus
//Gehäuse aus MDF, allu und Plexiglass
//Oberflächen Spiegel und allu
//Elektronik Arduino als Steuereinheit für Motoren und Beleuchtung. Das Respberry pi für Monitoring z. B Temperatur, Drehzahl des Motors, Licht Steuerung , wenn möglich Anzahl der Münzen im GerätIch rechne mit ca. 200-300€
Hoffe Aber das ich günstiger weg komme -
18. September 2013 um 19:09 Uhr #940022AnonymInaktiv
@Nuked
Soll das so ein Teil Werden wie auf der Krimes?
Hab da schon so einiges an Geld verballert dran.
Macht Fun das Teil
@Apus_Apus
Wow ne echt Coole Beobachtungsdatensammelstation[SIZE=”1″]für[/SIZE]Vögel
😀 hatte schon ewig Drauf gewartet was die Waage den nun machen sollte 😀 :fresse: war mir immer ein Rätsel…jetzt hat sich das Geheimis gelüftet. JUHU
@spokekiller
:daumen
Wirklich Toller Thread und @all von Mir auch ein Danke & Respekt was Ihr alles damit macht :d: -
18. September 2013 um 20:09 Uhr #940023NukedTeilnehmer
@zaperwood Ja so eins wird es, hab da auch ca. 200 Euro gelassen
-
4. Oktober 2013 um 11:10 Uhr #940358Sc0rpTeilnehmer
Jo, der Knaller schlechthin:
Intel Quark X1000
@spokekiller: mach langsam hin, ich bin auch grade ziemlich eingespannt (zH Flur komplett grundsaniert, auffe Arbeit Stress ohne Ende), aber das wird schon 😉Ich lese fleissig weiterhin mit, habe auch nebenbei meine Workstation überarbeitet und zwei Server aufgebaut … das Projekt Lüftersteuerung hab ich aber nicht vergessen. Der Winter wird sicher lang 😉 – hoffentlich auch ruhig 😛
Sc0rp
-
7. Oktober 2013 um 7:10 Uhr #940402RenovatioTeilnehmer
Darauf bin ich auch schon gespannt.
-
7. Oktober 2013 um 20:10 Uhr #940411spokekillerTeilnehmer
Jo, die Neuerungen bleiben nicht aus. Sind ja jetzt auch wieder zwei Neue in der offiziellen Arduino-Familie aufgenommen worden. Der Yun und der Robot. Völlig an mir vorbeigegangen ist der Pro, den sparkfun herstellt und den Fio hatte ich wohl selbst auf der Makerfaire echt übersehen. Man schaue und staune: http://arduino.cc/en/Main/ProductsIch will mal nix versprechen, aber ich köööööönnte mir so vorstellen, daß ich am WE dazu komme, endlcih eines der Tuts anzufangen. Mal sehen…. die ursprünglich anvisierten 6-8 Wochen habe ich ja mal wieder weit hinter mir gelassen 😀
-
8. Oktober 2013 um 11:10 Uhr #940427Sc0rpTeilnehmer
Re,
spokekiller;510914 said:
Jo, die Neuerungen bleiben nicht aus. Sind ja jetzt auch wieder zwei Neue in der offiziellen Arduino-Familie aufgenommen worden. Der Yun und der Robot.Du hast recht, die Beiden sind mir auch neu – wobei der der Robot ja nicht wirklich so’n klassischer µC ist, wie jetzt der UNO/Mega/Nano/etc.Der Yun hingegen ist recht interessant (für mich) als autarke Überwachungslösung (Environmental Logging), der er die meisten für mich fehlenden Teile gleich onboard mitbringt: (W)LAN und SDCard.
spokekiller;510914 said:
Völlig an mir vorbeigegangen ist der Pro, den sparkfun herstellt und den Fio hatte ich wohl selbst auf der Makerfaire echt übersehen.Naja, neuer Aufguss alter Prozessoren … für Leute die “Format”-Probleme haben – die könnten allerdings auch die Atmel-µC auch direkt auf eine eigene Platine löten/stecken/kleben.
spokekiller;510914 said:
Ich will mal nix versprechen, aber ich köööööönnte mir so vorstellen, daß ich am WE dazu komme, endlcih eines der Tuts anzufangen. Mal sehen…. die ursprünglich anvisierten 6-8 Wochen habe ich ja mal wieder weit hinter mir gelassen 😀Ich hatte mich ja mal als Zeichner angeboten – das Angebot steht noch, sofern es nicht zeitkritisch ist ;).Intel Quark X1000:Ich finde das Teil richtig geil: x86-kompatibel, LAN ordentlich integriert, ordentlich RAM/MHz/EPROM und vor allem an den wichtigen Stellen aufgebohrt: 12bit A/D-Wandler, integrierte RTC, USB, PCIe und trotzdem voll Arduino-Shieldkompatibel (siehe http://download.intel.com/support/galileo/Galileo_Datasheet_329681.pdf). Einziger Nachteil (für mich – bis jetzt) kein AREF vorhanden. Ich weiss allerdings nicht, ob ich das brauchen werde und ob man das nicht anders lösen könnte (mein Anwendungszweck in der PC-Steuerung wäre den AREF auf 12V zu klemmen … *?*)Sc0rp
-
8. Oktober 2013 um 13:10 Uhr #940428spokekillerTeilnehmer
Sc0rp;510931 said:
spokekiller;510914 said:
Ich will mal nix versprechen, aber ich köööööönnte mir so vorstellen, daß ich am WE dazu komme, endlcih eines der Tuts anzufangen. Mal sehen…. die ursprünglich anvisierten 6-8 Wochen habe ich ja mal wieder weit hinter mir gelassen 😀Ich hatte mich ja mal als Zeichner angeboten – das Angebot steht noch, sofern es nicht zeitkritisch ist ;).
Danke Dir dafür nochmal, aber diesmal gibts nichts zu zeichnen. Das kommt dann wieder und dann komme ich auf dich zurück.
Zu meinem eigenen Erstaunen hat mich gestern Nacht noch die Arbeitswut gepackt und ich habe Tut 14. gleich fast völlig fertig gemacht. Ich will jetzt nur mal noch schnell einen Testlauf mit dem Sketch auf der Hardware machen, dann klatsch ich den in den Post und fertig. 😀Sc0rp;510931 said:
Intel Quark X1000:
Ich finde das Teil richtig geil: x86-kompatibel, LAN ordentlich integriert, ordentlich RAM/MHz/EPROM und vor allem an den wichtigen Stellen aufgebohrt: 12bit A/D-Wandler, integrierte RTC, USB, PCIe und trotzdem voll Arduino-Shield
kompatibel (siehe http://download.intel.com/support/galileo/Galileo_Datasheet_329681.pdf). Einziger Nachteil (für mich – bis jetzt) kein AREF vorhanden. Ich weiss allerdings nicht, ob ich das brauchen werde und ob man das nicht anders lösen könnte (mein Anwendungszweck in der PC-Steuerung wäre den AREF auf 12V zu klemmen … *?*)In der Tat, da ist gleich alles drauf, was man für Meßdaten und so all-in-one Kram gebrauchen kann. Man darf gespannt sein, wie die da den USB Port ansprechen?!?!
Das mit dem fehlenden AREF kann man evtl umgehen, indem man den immerhin 12-bittigen AD Wandler mißbraucht. Es gibt auch alternative Chips zum Verlängern des Analogports, … hatte da letztens was Entsprechendes vor der Nase. Ist halt die Frage was Du da messen willst, aber ich vermute die Spannungspegel von Netzteilen oder USV?!?Ich mach dann wohl in den nächsten Tagen auch gleich noch das WOL-Tut 14.2, das ist ja im weitesten Sinne der Auftrag gewesen, den ich mal für Renovatio gemacht hatte. Ist aus meiner heutigen Perspektive nix besonderes, aber man kann wieder schön was draus lernen.
Was ich auch noch am Überlegen bin ist, ob ich nicht für den Pi einen ähnlichen Thread aufbaue. Allerdings wird der dann wohl eher ein wenig softwarelastiger. Steht grad so 50/50… stehen ja auch noch andere Projekte und paar geile Tuts aus. Bluetooth wäre da noch, 7-Segment-Controller ansteuern, jo… hmm….
Und löten würde ich auch gerne mal wieder was (Renovatios USBLCD ist jetzt dann dran). Mal schauen, aber ich würde gerne über’n Winter mal das Platinen-Ätzen austesten. Fehlt mir aber grad die Zeit mich in ein Layouting Proggi wie KiCad einzuarbeiten.
Schau mer mal…. -
10. Oktober 2013 um 8:10 Uhr #940480spokekillerTeilnehmer
Update heute:
Tutorial 14.1 ist (endlich) fertig, schalten über Ethernet.
http://www.meisterkuehler.de/forum/bastelecke/31427-vorstellung-elektronikprojekte-arduino-plattform-6.html#post502516
Tutorial 14.2 ist halbfertig, aber noch nicht veröffentlicht. Am Wochenende werd ich mich um Renovatios usblcd kümmern. Falls ich dann noch Bock und v.a. Zeit habe, mach ich 14.2. vollends fertig.Ist denn die Bluetooth Geschichte für Euch interessant? Dann zieh ich das vor, denn das ist hauptsächlich Schreiberei???
-
10. Oktober 2013 um 13:10 Uhr #940486RenovatioTeilnehmer
Für mich wäre die Bluetooth Geschichte schon sehr interessant, da man doch so einiges damit vernetzen könnte. Aber mache vielleicht erst mal das 14.2 fertig.
-
10. Oktober 2013 um 14:10 Uhr #940489spokekillerTeilnehmer
Renovatio;510995 said:
Für mich wäre die Bluetooth Geschichte schon sehr interessant, da man doch so einiges damit vernetzen könnte. Aber mache vielleicht erst mal das 14.2 fertig.Ja 14.2 mache ich zuerst, weil das ja nur noch zu beschreiben ist. Ich meinte vorziehen vor die anderen Dinger, die vorne im Inhaltsverzeichnis noch stehen.
Eine Einschränkungen haben meine BT-Experimente, sie sind nämlich unidirektional, was den Verbindungsaufbau angeht.
Ich habe “nur” Slave BT Module für den Arduino. Damit sieht das dann so aus, daß man vom PC/MAC/x die BT-Verbindung initiieren muß. Der Arduino sendet aber praktisch die ganze Zeit auf seriell (an welchem dann das BT-Modul hängt).
Der Rechner fängt dann nur noch den Datenstrom auf. Aber ne remote-Temperaturmessung mit zwei Digitalsensoren habe ich damit schon praktisch im Einsatz.Ein Nachteil ist bei mir noch, daß die Reichweite kaum mehr als 6~8m beträgt (in Wohnung bzw Büroräumen).
Aber das reicht ja vielen Leuten schon.
@Renovatio, ich halt Dich am WE auf dem Laufenden, wie die Fortschritte aussehn und ggf skype ich Dich dann an. -
10. Oktober 2013 um 15:10 Uhr #940491RenovatioTeilnehmer
Mit dem neuen Arduino Yun ist das Problem mit der Reichweite sicherlich dann kein Problem mehr, aber die Bluetooth Variante ist trotzdem nicht schlecht, damit man auch eine Alternative hat.Ich hab doch schon wieder eine bastellösung.
-
10. Oktober 2013 um 15:10 Uhr #940492konfettiTeilnehmer
Wieviele Ausgänge kann man eigentlich mit dem Arduino direkt schalten?Hintergrund – ich möchte nen kleinen Webserver drauf laufen haben, wo ich dann über eine Webseite die Ausgänge schalten kann. – die würde ich dann über eine Relais-Karte direkt auf meine Licht-Relais im Haus packen.
-
10. Oktober 2013 um 16:10 Uhr #940494ThaRippaAdministrator
konfetti;511001 said:
Hintergrund – ich möchte nen kleinen Webserver drauf laufen haben, wo ich dann über eine Webseite die Ausgänge schalten kann.Da hat einer das Tut 14.1 nicht gelesen.
-
10. Oktober 2013 um 17:10 Uhr #940496RenovatioTeilnehmer
Kommt natürlich drauf an welches Arduino du verwenden möchtest. Beim Mega hast du natürlich mehr als beim Uno.
-
11. Oktober 2013 um 10:10 Uhr #940513spokekillerTeilnehmer
konfetti;511001 said:
Wieviele Ausgänge kann man eigentlich mit dem Arduino direkt schalten?Hintergrund – ich möchte nen kleinen Webserver drauf laufen haben, wo ich dann über eine Webseite die Ausgänge schalten kann. – die würde ich dann über eine Relais-Karte direkt auf meine Licht-Relais im Haus packen.ThaRippa;511003 said:
konfetti;511001 said:
Hintergrund – ich möchte nen kleinen Webserver drauf laufen haben, wo ich dann über eine Webseite die Ausgänge schalten kann.Da hat einer das Tut 14.1 nicht gelesen.
@ThaRippa: SIC! :DAber Danke, daß Du es offensichtlich aufmerksam gelesen hast – ich fühle mich geehrt. :)@konfetti:Kommt drauf an, der UNO hält Dir im besten Fall noch etwa 9 oder 10 digitale Ausgänge bereit, wenn der ETH Shield drauf ist. Analog bleiben immer noch die volle Zahl.Wenn Du neu einsteigst und an sich die Flexibilität einer solchen Lösung nicht benötigst (bspw dynamischer Ausbau etc.), dann empfehle ich eine der im Web auffindbaren Internet-Relaiskarten. Damit kommst Du schneller, aber nicht wirklich billiger zum Ziel.Sollte der Webserver zwingend auf dem Empfangsrechner (der Schaltzentrale) laufen müssen, so wäre ein RasPi die deutlich bessere Lösung. Der Realisierungsaufwand ist quasi identisch und der RasPi wäre auch ausbaubar wie der Arduino, hätte aber mehr digitale Ausgänge. PWM gibts dort aber nur auf einem einzigen Pin, wenn ich mich nicht täusche.Kosten für Arduino+Shield lägen bei knapp 40€, der Pi kostet das gleiche. Beim Pi käme dann nur noch der Mehrpreis für eine SDHC Karte etc.Je nachdem, was Du an Vorkenntnissen in Linux und/oder C/Python hast, solltest Du Dich über beide gut informieren und dann entscheiden.Falls Du nicht selber löten/designen möchtest, gibt es auf dem Markt gefühlte 100.000 verschiedene fertige 1-16 Kanal Relaiskarten, die idR für den Anschluß an Pi und Arduino taugen könnten. Darauf zu achten ist, daß Du den maximalen Ausgangsstrom für einen Relaiskanal pro Pin nicht überschreitest udnd dies natürlich auch nicht, wenn mehrere Relais gleichzeitig anziehen.Ich denke das gibt Dir schon mal was an die Hand.Cheers.PS: und Renovation hat natürlich recht, der Mega bietet dann wieder deutlich mehr Pins und auch vier serielle Interfaces (kann man ggf. brauchen), kostet aber dann insgesamt auch deutlich mehr.
-
11. Oktober 2013 um 10:10 Uhr #940514konfettiTeilnehmer
Hm, ja die Frage mit den Digitalen Ausgängen ist eher, ob meine Relais die auch verstehn, es gibt ja Digitale Dimmer Relais, die mit ner Gleichspannung oder Befehlen angesteuert werden können, quasi 30% Licht, 75% Licht, 100% Licht… – für den Anfang wäre einfaches on/off hilfreich, da ich eben bewusst nicht auf KNX gebaut hab, sondern auf eine klassische Tasterlösung mit Relais (vlt. etwas mehr Aufwand, aber im Ausfallfall immer noch Bedienbar 😉 )Aber gut, da ich eh nen dedizierten Webserver laufen habe, werd ich mich wohl mal mit dem 14.1 vertraut machen 😉editHier, das wäre so ein Dimmer, den ich damit zusätzlich ansteuern würde wollen ;)http://www.milan-berlin.de/shop/de/milan/bis-500w–21100905?source=psmido
-
11. Oktober 2013 um 12:10 Uhr #940518spokekillerTeilnehmer
Also Du hast bei fast allen µC-Boards nur die Option auf echte digitale Ausgänge, also On-Off. Ein Bonus ist PWM.Das, was Du beschreibst (30% Licht, 75% Licht, 100% Licht) ist ja schon ein richtiger Bus mit einem Befehlssatz… Abseits davon: der verlinkte Dimmer interpretiert ja die analoge Schaltspannung, wenn ich das aus der riesigen Beschreibing mal eben (zu) erkennen (glauben) konnte. Digital kommt da erst “intern”.Wenn ich alleine die Kosten für den Dimmer aus Deinem Link sehe… hm. Mach Dich schlau, schaus Dir an und dann entscheide Dich. Ich kann da weiter wenig dazu sagen.Ich würde mich auch erkundigen, was Deine Versicherung dazu sagt. Sollte durch unsachgemäßen Eingriff in die Hausinstallation ein Brand auftreten und es wird festgestellt, daß Du da selber ohne Gesellenbrief dran rumgemacht hast, dann geht das sicher nicht gut aus. Wir sind ja hier nicht in den USA.
-
6. November 2013 um 14:11 Uhr #941176RenovatioTeilnehmer
Hey Micha,ich hab mir mal beide Tutorial’s von Display angeschaut.Jetzt die Frage, wird der Kontakt von Sensor direkt an das Display angesteuert oder ist es am Arduino angeschlossen?Möchte gerne nämlich die Sensoren auf dem Display sowie auf einer HTML Seite anzeigen lassen. Kann man das damit machen?Gruß,Andre
-
6. November 2013 um 17:11 Uhr #941190spokekillerTeilnehmer
Renovatio;511747 said:
Hey Micha,ich hab mir mal beide Tutorial’s von Display angeschaut.
Jetzt die Frage, wird der Kontakt von Sensor direkt an das Display angesteuert oder ist es am Arduino angeschlossen?Möchte gerne nämlich die Sensoren auf dem Display sowie auf einer HTML Seite anzeigen lassen. Kann man das damit machen?
Gruß,
AndreHi,
ja der Sensor ist am Arduino angeschlossen. Ich nehme an, Du meinst die Temperatursensoren.
Ich hab das Tut jetzt nicht vor mir, aber ein gleichzeitiger Betrieb von ETHH-Shield, DS18(B/S)20 und Hitachi LCD sollte gehen. Es dürfte aber ein wenig eng mit den Pins werden.
Zur Not kannst du auch einen LM35 Temp-Sensor nehmen, die sind billiger und kommen auf einen der Analog-Pins. Um die Genauigkeit dann noch zu steigern kann man per AREF eine andere Referenzspannung wählen. Aber das fragst mich dann zu gegebener Zeit einfach nochmal.
Du mußt mal schauen, welche Pins für den Shield draufgehen und welche für das LCD… sollte ich morgen Zeit haben, schau ich nochmal nach….
Aber rein nach Gefühl sollte es reichen.Der Code ist evtl ein wenig knifflig, weil Du ja in der Loop erst die Displayanzeige abfackeln und dann ggf die HTTP-Anfragen. Aber mit einer gewissen Update-Verzögerung sollte es dennoch tun. Vielleicht kann man da auch was mit Interrupts machen.
Dürfte spannend werden. Besser, Du machst erst mal beide Tuts einzeln, damit Du ein Gefühl dafür bekommst.
Cheers!
PS: ich habe eben nochmal geschaut.
Du brauchst 6 Pins für das LCD und 4 für den ETH Shield (11,12,13 &10 — default). Und dann noch einen für den DS18. Paßt also. -
6. November 2013 um 17:11 Uhr #941193RenovatioTeilnehmer
Nabend,mit den Pins mache ich mir ja keine Sorge, da ich mir ja das Arduino Yún hole.Das hab ich mir dann schon gedacht, aber wie war das, nichts ist ein Problem. :DSag mal vorher bekomme ich wie beim Display so ne Stiftleiste? Werde dann ein Display von mir missbrauchen. Könnte man eigentlich dann ggf. beim Display eine Seiten Funktion einbauen, damit man Blättern kann?In diesen SinneAndre
-
6. November 2013 um 22:11 Uhr #941214spokekillerTeilnehmer
Renovatio;511765 said:
Nabend,mit den Pins mache ich mir ja keine Sorge, da ich mir ja das Arduino Yún hole.Das hab ich mir dann schon gedacht, aber wie war das, nichts ist ein Problem. 😀Yo!Ok. Da bin ich gespannt was Du dazu sagen wirst. So erste Erfahrungen usw. Hattest Du nicht schon einen Uno mit ETH-Shield? Oder stand der noch auf der Liste als der Yun rauskam?[nörgel] Wegen mir hätte man nicht unbedingt einen chinesischen Namen für das Ding wählen müssen. Statt dessen hätte mir “kumori”, also Wolke auf Japanisch auch gereicht. 😀 [/nörgel] Naja, Yun klingt in den meisten Sprachen “schöner” als die japanische Variante …:roll:
Renovatio said:
Sag mal vorher bekomme ich wie beim Display so ne Stiftleiste? Werde dann ein Display von mir missbrauchen.Easy. Die bekommst Du bei Conrad, Pollin, Reichelt, und idR sollte die auch jeder normale Elektronikladen haben — letztere sind hier in meiner Gegend aber tatsächlich völlig ausgestorben. Blöd, irgendwie hätte ich Dich fragen sollen, dann hätte ich Dir ja gleich eine anlöten können. Aber dann hätte ich erst Kabel neu crimpen müssen und das hätte alles ein wenig in die Länge gezogen…Du kannst eine längere als 16 Stifte nehmen, die Dinger kann man einfach mit den Fingern an der passenden Stelle auseinanderbrechen.Paß nur später beim Verkabeln auf, die LCDs sind verdammt zimperlich, falls man sie verpolt etc.
Renovatio said:
Könnte man eigentlich dann ggf. beim Display eine Seiten Funktion einbauen, damit man Blättern kann?Huiuiui… ähm, ich denke schon dass man sowas machen kann. In Software gegossen müßte man die Inhalte der jeweiligen Seiten zwischenpuffern (einfache Strings), und dann mittels eines Interrupts von außen per Taster den Seitenwechsel auslösen. Das letzte Mal hatte ich mit den Interrupts bei den Drehreglern ja gehörig Probleme, aber gehen sollte es. Wir beide kriegen das schon hin …. denk ich. :shock:N.B.: wenn ich nicht wieder am WE absaufe schau ich mir mal eben ne Interruptroutine für so nen Seitenwechsel an. Außerdem werd ich sehen, daß ich im Skype verfügbar bin.Schönen Abend noch, bzw gute Nacht.
-
7. November 2013 um 14:11 Uhr #941227RenovatioTeilnehmer
spokekiller said:
Yo!
Ok. Da bin ich gespannt was Du dazu sagen wirst. So erste Erfahrungen usw. Hattest Du nicht schon einen Uno mit ETH-Shield? Oder stand der noch auf der Liste als der Yun rauskam?
[nörgel] Wegen mir hätte man nicht unbedingt einen chinesischen Namen für das Ding wählen müssen. Statt dessen hätte mir “kumori”, also Wolke auf Japanisch auch gereicht. 😀 [/nörgel] Naja, Yun klingt in den meisten Sprachen “schöner” als die japanische Variante …:roll:Das Stand auf meiner Liste, aber irgendwie bin ich nicht dazu gekommen es mir zu kaufen. Das kumori hört sich irgendwie persönlich besser an, aber naja auch egal.
spokekiller said:
Easy. Die bekommst Du bei Conrad, Pollin, Reichelt, und idR sollte die auch jeder normale Elektronikladen haben — letztere sind hier in meiner Gegend aber tatsächlich völlig ausgestorben. Blöd, irgendwie hätte ich Dich fragen sollen, dann hätte ich Dir ja gleich eine anlöten können. Aber dann hätte ich erst Kabel neu crimpen müssen und das hätte alles ein wenig in die Länge gezogen…
Du kannst eine längere als 16 Stifte nehmen, die Dinger kann man einfach mit den Fingern an der passenden Stelle auseinanderbrechen.
Paß nur später beim Verkabeln auf, die LCDs sind verdammt zimperlich, falls man sie verpolt etc.Hab schon welche entdeckt, danke. Direkt mal was bestellt dabei ein Lernpaket LED mitbestellt. Möchte mich mal in der Richtung auch weiter entwickeln. In der Nähe von mir gibt es zum Glück noch zwei Läden.
Ist doch nicht schlimm, das Display will ich ja dafür verwenden. Hab doch noch drei hier liegen. 😀spokekiller said:
Huiuiui… ähm, ich denke schon dass man sowas machen kann. In Software gegossen müßte man die Inhalte der jeweiligen Seiten zwischenpuffern (einfache Strings), und dann mittels eines Interrupts von außen per Taster den Seitenwechsel auslösen. Das letzte Mal hatte ich mit den Interrupts bei den Drehreglern ja gehörig Probleme, aber gehen sollte es.
Wir beide kriegen das schon hin …. denk ich. 😯N.B.: wenn ich nicht wieder am WE absaufe schau ich mir mal eben ne Interruptroutine für so nen Seitenwechsel an. Außerdem werd ich sehen, daß ich im Skype verfügbar bin.
Wir kriegen das schon hin, dass wäre nämlich mal was anderes wie bei den null acht fünfzehn Schaltungen. Für den ein oder anderen ist diese Funktion sicherlich auch nicht schlecht. :+
Wochenende ist bei mir auch gut zu, hab schon was interessanter für Pi entdeckt, damit ich auf die SD Karte von der Camera zugreifen kann im laufenden Betrieb um diese dann auf einem Tablet anzeigen zu lassen. Da werde ich mich mal tiefer einarbeiten. Dann hätte man die Möglichkeit die Bilder in groß zu sehen. 🙂In diesen Sinne
Andre -
7. November 2013 um 15:11 Uhr #941231RenovatioTeilnehmer
Ist doch gut das du es selbst erkannt hast.Display in der langen Form für kleinen Preis mit Matrix, da klick mal hier. 😀 Link zum ShopHab mich nicht richtig ausgedrückt, ich meine eine DSLR Kamera(Canon, Nikon und co.)ohne WLANDa hab ich schon was passendes gefunden für. ^^Hasse mal eine kleine Übersicht was du da alles auf dem Wiki hast? Für Zuhause wäre das nicht schlecht. Das Problem habe ich mit meinem Server nicht. :-)Bis denne …
-
7. November 2013 um 15:11 Uhr #941228spokekillerTeilnehmer
Das dachte ich mir schon, daß die Entwicklung Dich eingeholt hatte. Und vor lauter klugscheißen hab ich auch noch Mist erzählt. Wolke heißt “kumo” (雲 くも) auf Japanisch … ich hatte das mit “kemuri” (煙 けむり) verkassemaduddelt, was Rauch oder Qualm heißt. Jaja, mein Japanisch muß ich auch mal wieder mehr pflegen. Naja, solange ich wenigstens meine eigenen Fehler bemerke…
War ja auch schon spät am Tag.Irgendwie kam mir mit all den LCDs auch nochmal die Idee, mal nach einem ganz breiten mit zwei Zeilen zu suchen, sozusagen als Newsticker oder für emails, die reinkommen. Irgendwie muß ich auch nochmal nach günstigen LED-Matritzen (9×9 oder 12×12) in einer Farbe schauen. Da herrscht bei den Standard-Elo-Versendern meist Ebbe.
Was die PiCam angeht, soweit ich das verstehe, macht man entweder einzelne Shots, die könntest du immer wieder in dasselbe File schreiben lassen und dann einfach per lighttpd “serven”, ein einfaches Javascript, das einen 5-sec Pagerefresh macht, sorgt dann für die jeweiligen Updates. Aber irgendwo hatte ich mir auch schon Code angesehen für Livestreams.
Mußt nur googlen, da findest genug. Und als Webserver ist der lighttpd schon empfehlenswert. Bei mir läuft da das dokuwiki Projekt drauf. Leider ziehen die PHP-Aktionen doch heftig an der CPU, aber der RAM-Verbrauch ist akzeptabel und für nen Heimeinsatz tuts mir das 1a. Bissl Wartezeit beim “compilen” aufwendiger Dokuseiten nehme ich in Kauf.Bis dann dann…
-
27. November 2013 um 16:11 Uhr #941772BastelfreundTeilnehmer
Hallo,
ich bin neu hier. Arduino ist für mich auch neu. Aber ich beschäftige mich seit vielen Jahren mit PC basteln und Programmieren. Ich habe mir alles diagonal durchgelesen und finde das Board super. Kurzfristig werde ich vieles davon nachbauen.
Mein Theme ist mal anders.
Mir geht es um Musikdateien. Ich habe fertig gemuxte 6-Kanal-Audiodateien. Das sind Dateien, die ich im VLC-PLayer abspielen kann und unter Audio -> Audiospur werden die einzelnen Kanäle angezeigt und eine davon kann ich zum Abspielen auswählen. Das ist wie bei DVD, wo man die Sprache wählen kann. Nur habe ich das Video weggelassen und nur eine gemuxte Audiodatei mit 6 Audiospuren drin. Diese Datei will ich mit PC per Kabel (also nicht wlan) an ein Arduino schicken. Am Arduino soll ein Knopf sein, wo ich zwischen den 6 Audiospuren (Musikdateien) eine Spur auswählen kann. Das soll so funktionieren wie bei einem Radio, wo ich die Kanäle wechsle.
So ähnlich wie hier, aber von meinem PC als Quelle.
http://www.youtube.com/watch?v=RzRpLWX_Lw4
Ich will das aber nicht über web-radio machen, sondern als Quelle dient mein PC.
Hier mal ein Beispiel, was mir sehr gefällt. Aber ich weiß nicht, wie ich meine gemuxte datei dazu bringe, am Arduino nur eine von den 6 Audiospuren abzuspielen.
Ich weiß, dass ich da was zusammengebastelt bekomme. Aber Ihr habt die Erfahrung und könnt mir viellleicht sagen, wie ich das am sinnvollsten mache.
Vielen Dank im Voraus.
Viele Grüße
Bastlerfreund -
5. Dezember 2013 um 15:12 Uhr #942022spokekillerTeilnehmer
Sorry, eben erst gesehen ….
Mal saudoof zurückgefragt, worin liegt der Sinn, den Arduino das (die Audiodatei) durchkauen zu lassen, wenn doch der PC als Quelle dient und sowieso läuft?
Sollte es Dir nur darum gehen per einem externen Gerät die Spuren durchzuschalten gibt es wahrlich simplere Lösungen für sowas.
Außerdem hat der ATMega328 auf dem Arduino eher weniger die Möglichkeit Audiodateien abzuspielen. Dazu benötigt man dann noch zusätzlich einen sogenannten Waveshield und dann sind wir preislich auf der Höhe eines RasPi, der dazu viel mehr Bumms hat und Deinen Anspruch wie ich ihn verstehe besser befriedigt.
Der Pi könnte über einen Taster an einem der GPIO-Pins und ein kleines Skript entsprechend dann “die Spur wechseln”. Wiedergabe dann über den Stereoport oder ggf am HDMI, das kommt auf die Soundeinstellungen (ggf im alsa bei raspbian oder in der mainconfig) an.
Nachtrag:
Also ich habe mir nun das ursprüngliche Projekt und das, das Du verlinkt hast nochmal angesehen.
Bäh!
* Furchtbar viel Aufwand.
* der Arduino dient nur als Steuerzentrale und als LCD-“Treiber” für den dahinterliegenden OpenWRT Router
* der Arduino spielt gar nichts ab, das übernimmt in beiden Projekten das Linux auf’m Router (OpenWRT) über einen USB-AudiostickAlso da bohr ich mir lieber ein Loch ins Knie. :devil: Ich bastel ja gerne rum, aber das sind ja beides furchtbar fummelige Projekte nach dem Motto “möglichst viel Aufwand für eher bescheidenen Ertrag”. Nee, tut mir leid. Da kann ich die Motivation hinter Apus’ Vogel-Waage doch viel eher nachvollziehen. Ohne mich. Dafür stehen hier zuviele Kleinprojekte auf der Warteliste.
Die Anleitungen von Jeff hab ich vor 3 Jahren schon mal gesehen und hatte gleich keinen Bock mehr. Wer das nachbauen will kann das anhand Jeffs Bauanleitung tun. Wer aber da völlig neu einsteigt, dazu womöglich kaum Erfahrung mit Linux hat, der darf sich auf eine echte Zangengeburt einstellen.
Falls Du das anfangen würdest, wäre meine Bitte, dazu einen eigenen Projekt-Thread aufzumachen. Danke. Und viel Freude. -
5. Dezember 2013 um 16:12 Uhr #942024BastelfreundTeilnehmer
Hallo spokekiller,herzlichen Dank für Deine große Mühe. Deine Reaktion kann ich völlig nachvollziehen.Hier noch mal kurz, worum es geht.Wir wollen bei uns in der Schule ein Projekt verwirklichen.In einem Schüler-Audiokabinet steht ein PC, der die Datei senden soll.An anderen Ende sind die Schüler, die einen Kopfhörer aufhaben und für eine Aufgabenstellung zwischen den 6 Kanälen hin und her schalten müssen. Nun habe ich keine Lust, zu jedem Schülerplatz 6 Leitungen zu ziehen, damit dort per analogem Drehschalter zum entsprechenden Kabel gewechselt wird. Ich dachte mir, die gemuxte Datei zum Schülerplatz mit 2 Kabeln zu schicken und dass der Arduino über einen Demuxer die Kanäle trennt und am Kopfhörer einer der Kanäle ausgegeben werden kann.Deine Ideen im ersten Teil Deiner Ausführung sind super. Ich weiß, Du willst Dich damit nicht beschäftigen. Aber für mich ist das wichtig für ein Schülerprojekt , auch wenn es für die Praxis nicht taugt. Ich will den Kindern mal zeigen, wie Muxen und Demuxen anhand von Musikdateien funktioniert. Oder ähnlicher Ansatz. Ich habe mir das in den Kopf gesetzt.Das ist also wie ein Radio, wo ich zwischen den Kanälen schalten kann. Und das will ich so simpel wie möglich lösen. Die Qualität der ausgegebenen Musik spielt erst mal keine Rolle.Gibt es da irgendwelche Projekte oder konkrete Quellen, wie man so was machen könnte?Raspberry ist schon gut. Habe ich auch dran gedacht. Aber ich dachte, daß die Sache simpler zu lösen ist.Wo finde ich eine solche Lösung für Raspberry?”Sollte es Dir nur darum gehen per einem externen Gerät die Spuren durchzuschalten gibt es wahrlich simplere Lösungen für sowas.”Woran denkst Du da, welche Lösungen gibt es da?Vielen Dank im Voraus für eine Antwort.Viele GrüßeBastelfreund
-
5. Dezember 2013 um 17:12 Uhr #942025spokekillerTeilnehmer
Also gut, ich kann Deine Motivation, sprich den Hintergrund zu Deiner Frage, jetzt eher nachvollziehen.
Laß mich dennoch nochmal Kritik üben. Du fragst nach fertigen Lösungen oder zumindest Lösungsansätzen. Ich denke da machst Du es Dir zu einfach. Es ist deutlich zu lesen, daß Du eine Aufgabenstellung bereits für Dich formuliert hast.
So solltest Du auch bemüht sein, Dir einen Lösungsweg zu erarbeiten. Auch im Netz wird man Dir nur Hilfe geben, wenn Du bereits ein Stück des Weges selbst gegangen bist. So zumindest meine Erfahrung.Daneben scheint der möglicherweise erzielte Lerneffekt ausschließlich nur für Dich greifbar zu sein. Wenn auch die Schüler in den Audiokabinen etwas davon haben werden, so lernen sie aus der Lösung rein selbst nichts. Das sei mal so dahingestellt.
Dein nächster Ansatz muß m.E. sein, Dir eine Vorstellung darüber zu verschaffen, was technisch für Dich möglich ist. Hast Du die Zeit und Ressourcen, um Dich in einen RasPi, ein Cubieboard oder einen Arduino einzuarbeiten?
Weiterhin mußt Du, sofern ein Lösungsansatz grob erkennbar ist, diesen in machbare Portionen zerlegen und Zwischenschritte einplanen.
Momentan hast Du nur eine Menge Fragen und eine fixe Idee, wie Du etwas umsetzen willst (Audiodaten gemuxt über Zweidraht an ein Gerät X wo sie selektiert und demuxt werden können). Fertig geben wird es dies wohl eher nicht.
Damit Du nicht ganz im Regen stehst, gehe ich mal schon ein Stück des Weges für Dich:
* Arduino wäre zu schwach und die Umsetzung zu kompliziert -> ergo: RasPi oder Cubieboard, für den RasPi findet man in Deutsch und Englisch aber viel mehr Hilfe und Informationen. Preislich sind wir immer noch im Bereich unter hundert Euro Basisinvestition.* Bleiben wir beim Pi. In einem nächsten Schritt stellt sich die Frage, mit welcher Software Du die Audiodateien abspielen willst. Es gibt diverse mehrspurfähige Audioplayer, die auf dem Pi unter Linux laufen können. Bspw mplayer, smplayer, vlc etc. Ergo, Du mußt dich mit dem Pi, raspbian oder einer Suite wie XBMC o.ä. auseinandersetzen.
Als Erweiterung stellt sich dann die Frage, ob die Audio-Dateien unbedingt übertragen werden müssen. Was wäre, wenn der Pi die Daten halten würde?* Müssen die Selektionen der Kandidaten/Schüler ausgewertet werden?
*Falls Du tatsächlich beim Pi bleibst, solltest Du Dir einige Basics zur Auswertung von Tastern am GPIO mittels Python (Skript) o.ä. anschauen. Da gibt es hunderte schöner Beispiele im Netz. Das Skript könnte je nach Auswahl dann die passende Tonspur über ein Kommando an den Player abspielen, entweder aus einem mkv oder einer anderen unterstützten Dateiart.
Wie Du siehst sind jetzt schon wieder viele Zwischenfragen aufgetaucht, die Deinen Projektweg beeinflussen werden. Deshalb mache ich jetzt mal Schluß.
Meine persönliche Empfehlung an Dich wäre nun, sich den RasPi und seine Möglichkeiten mal anzuschauen und dann weiter zu entscheiden. Vielleicht machst Du Dir es mit dem mux/demuxen ja schon viel zu schwer. Unter Umständen tuts eine “teil-lokale” Lösung und nur die Selektionsdaten werden dann an eine zentrale Einheit zurückübertragen (falls das notwendig sein sollte).
Ich hoffe, Dir hilft das jetzt schon mal weiter. Versteh das jetzt als Anregung, Dich auch nicht zu sehr auf nur einen Weg zu versteifen. Wir kennen uns nicht besser und ich weiß nichts über Deine Fähigkeiten. Aber ich selbst neige manchmal auch dazu, im ersten Übereifer eine einfachere Lösung zu vernachlässigen.
-
5. Dezember 2013 um 18:12 Uhr #942032BastelfreundTeilnehmer
Hallo spokekiller,
Deine Denkweise und Vorgehensweise gefällt mir. Ich habe mich seit längerer Zeit mit diversen Lösungen beschäftigt. Aber ich hoffte immer, für das simple Abspielen von Audiodateien geht es einfacher. Display/Anzeige brauchen wir nicht.
Ich habe mich zum Beispiel mit den Audiosystemen in Touristenbussen beschäftigt. Da gibt es eine Blaupunktanlage, wo 8 Sprachen gemuxt werden und an jedem Sitz ist nur eine kleine Leiterplatte mit wenigen Teilen, die einen von 8 Kanälen spielt. Ich habe so ein Ding mal auseinandergenommen. Da ist fast nichts drin. Deshalb dachte ich, dass der Raspberry schon zu viel ist.
Die Lösung mit dem mplayer habe ich schon gemacht. Am PC. Läuft super. Ich habe die Lösung für mein Android-Handy noch nicht hinbekommen. Der VLC-Player auf Android macht die Kanaltrennung. Ich hätte da gern eine mplayer-Lösung.
Leider habe ich die Befehle zum Starten nur eines Kanals aus der gemuxten Datei noch nicht herausgefunden, um das in eigene App zu integrieren.
Was mich fasziniert am Blaupunkt-Teil ist, dass das Ding ohne Wartezeit sofort nach Anschalten bereit ist und sofort die Datei abspielt. Das muß also einfacher gehen.
Ich finde das noch raus. Ich habe Schaltpläne und die Teile auseinandergenommen, und beschäftige mich jetzt damit. Ich dachte, dass ich über Arduino leicht eine Lösung finde.
Für mich ist das Blaupunkt-Projekt interessant, weil wir auf diese einfache Art vielleicht selbst ein Sprachkabinett bauen können. Da ist es schon sinnvoll, zwischen einzelnen Sprachen umzuschalten. Dafür haben wir auch Sponsoren, die das Projekt Sprachkabinett unterstützen. Das heißt, dass wir für realisierbare Ideen auch was bezahlen würden.
Wird bestimmt billiger als ein Sprachkabinett von ner Firma machen zu lassen. So denken wir zur Zeit noch. Aber Raspberry gucke ich mir mal an.
Ich möchte den Start per Knopfdruck oder Drehschalter.Vielleicht kennst Du Jemanden, der uns einen simplen Lösungsansatz liefern kann, auch gegen Honorar.
Vielen Dank für Deine Hilfe. Das hat mich schon weiter gebracht. -
12. Januar 2014 um 14:01 Uhr #943073Apus_ApusTeilnehmer
Noch allen Mitgliedern des Forums alles Gute zum neuen Jahr.Ich bin gerade beim Aufräumen und habe diese “RETRO”-Teile zum 6502 wieder gefunden. :lol:Gehört zu dem c´t -Projekt heft 3/19[SIZE=”3″]84[/SIZE] Cepac-65 Es sind zwei Sets, wovon eines komplett aufgebaut und bestückt ist. Sollte jemand daran Interesse haben, ❓ …. per Mail mit Adresse direkt bei mir melden. Ich schicke dann alle Teile in der Box.Gruß, Apus²Zusatzinformationhttp://de.wikipedia.org/wiki/Cobold
-
26. Januar 2014 um 14:01 Uhr #943442Apus_ApusTeilnehmer
Ich möchte bei meiner Vogelbeobachtung,
gerne einen oder zwei Frequenzdetektoren (Schaltung zum selbstbauen) verwenden, die auf (zwei) bestimmte Frequenzen zwischen 7kHz und 20kHz justiert werden können.Eine LED wird eingeschaltet, wenn am ADC-Eingang eine bestimmte Frequenz erkannt wird.
Gesucht ist eine Lösung, um aus in einem Eingangssignal bestimmte Frequenzen zu erkennen, und beim Auftreten dieser Frequenzen eine zugeordnete LED einzuschalten.z.B.
http://www.sprut.de/electronic/pic/8bit/18f/programm/frqdetect/frqdetect.htmOder kennt jemand eine Beschreibung, wie das auch mit einem Arduino zu lösen ist?
Für einen Hinweis, wäre ich sehr dankbar.Gruß, Apus²
-
26. Januar 2014 um 15:01 Uhr #943444VJoe2maxTeilnehmer
@Mauersegler: Willst du die Viecher auf bestimmte Verhaltensweisen trainieren – oder wozu die optische Rückkopplung?Wie wäre es mit einem alten Laptop auf dem ein Frequenzanalysator (z.B. in LabView programmiert) mit entsprechenden Filtern läuft? Per FFT kann man da das ganze Spektrum abbilden und die interessanten Frequenzbereiche könnten ab einem gewissen Schwellenwert ein Signal auslösen. Den LED-Ausgang könnte man über die COM-Schnittstelle realisieren. Dass das geht weiß ich – leider hab ich mich selber schon länger nicht mehr damit beschäftigt.Ansonsten wäre vllt. ein einfacher Bandpass mit Drehkondensator zum Einstellen des Frequnzbands etwas. Allerdings müsstest das Mikrofon-Signal natürlich auf ein passendes Level heben.Edit: Dieser Bausatz könnte auch interessant sein für deine Anwendung (hab das teil selbst): Velleman Audio Analysator K8098Vielleicht kann man da bestimmte Frequenzen direk am Dispaly-Augang abgreifen und zu einem Schaltsignal verstärken? Ausprobiert hab ich das nicht, aber wäre vllt. ne Idee…
-
26. Januar 2014 um 15:01 Uhr #943446Apus_ApusTeilnehmer
[QUOTE=VJoe2max;514214]@Mauersegler: Willst du die Viecher auf bestimmte Verhaltensweisen trainieren – oder wozu die optische Rückkopplung?
Ich möchte im Video zwei LEDs zeigen, die jeweils zum Ton erkennen lassen, ob das Männchen oder Weibchen stimmen macht.
Mit meinen Videos möchte ich die Verhaltensstudien weiter differenzieren.Optisch lassen sich die Vögel nicht geschlechtsspezifisch unterscheiden, nur im Frequenzbereich der Stimmen gibt es unterschiede ♂ oder ♀
Gruß, Apus² 😉
Ich habe mir gerade den Bausatz angesehen. Mit dem Display im Video, wäre das sogar eine alternative Lösung nur müsste der Frequenzbereich auf 5 kHz bis 20 kHz angepasst werden, sonst wäre die Auflösung zu gering. [Käme aber auf einen Versuch an.:-k]
-
26. Januar 2014 um 16:01 Uhr #943451VJoe2maxTeilnehmer
Interessantes Projekt! Darf man fragen in welcher Gegend du die Segler beobachtest? Habe schon ewig keine mehr gesehen – bin aber auch kein Ornithologe und habe daher sicher auch nicht den geschulten Blick dafür. Wenn ich ein passendes Netzteil finde, kann ich mal schauen, was es bei dem Bausatz da noch für Einstellmöglichkeiten gibt. Wenn die Einblendung des Gesamtspektrums in das Video reicht, ist eine einfache Softwarelösung (z. B. mit der Freeware AudioAnalyser) evtl. sogar die komfortablere Lösung.
-
28. Januar 2014 um 10:01 Uhr #943497Hallo1001Teilnehmer
Hallo Apus²!
Eine LED wird eingeschaltet, wenn am ADC-Eingang eine bestimmte Frequenz erkannt wird.
Oder kennt jemand eine Beschreibung, wie das auch mit einem Arduino zu lösen ist?Woher kommt denn das 7Khz bis 20KHz Signal? Mit dem ADC-Eingang lassen sich nur Spannungen von 0V bis 5V messen, Du müsstest dann also das Audio-Signal erst einmal in eine Spannung in diesem Bereich umwandeln, ansonsten nutzt Dir der ADC-Eingang überhaupt nichts.
Wenn das Audio-Signal bereits als Rechteck-Signal bereit steht (0V bis 5V), dann kannst Du einen Digital-Eingang verwenden und die Signale mit dem Interrupt „INT0“ (oder INT1) erfassen. Das ganze wird dann über einen Timer mit der Zeit verbunden, damit kannst Du dann EINZELNE FREQUENZEN ermitteln. Das herausfiltern von Frequenzen ist damit allerdings nicht möglich, für Dein Vorhaben wird das also alles nicht funktionieren. Mit dem Arduino wirst Du das nicht verwirklichen können.LG Jens
-
28. Januar 2014 um 15:01 Uhr #943500Apus_ApusTeilnehmer
Hallo1001;514274 said:
Hallo Apus²!Eine LED wird eingeschaltet, wenn am ADC-Eingang eine bestimmte Frequenz erkannt wird.Oder kennt jemand eine Beschreibung, wie das auch mit einem Arduino zu lösen ist?
Woher kommt denn das 7Khz bis 20KHz Signal? LG Jens
Hallo Jens, danke für Deine Antwort. Das Signal kommt von einem Mikrophon und sind die Vogelstimmen von Mauerseglern mit Umweltgeräuschen. Der Pegel lässt sich also anpassen. Optisch lassen sich die Vögel leider nicht nach ♂ male ♀ female unterscheiden. Das geht nur über die etwas unterschiedliche Frequenz der Stimmen.Für meine Verhaltensstudie wäre die zuverlässige Unterscheidung in den Videos sehr hilfreich. Ich könnte das auch als Post-Prozess im Video vermerken, nur mit zwei kleinen LEDs für ♂ male ♀ female direkt im Bild, wäre mir lieber. :)Für die 1. Analyse geht das vermutlich auch.http://www.instructables.com/id/Arduino-Frequency-Detection/Für die Übersicht, worin sich die Stimmen unterscheiden, werde ich diese Software verwenden.http://www.heise.de/download/audioanalyser.htmlMit diesem Bausatz wäre die Anzeige auch schon möglich, nur brauche ich den unteren Frequenzbereich < 7kHz nicht. http://www.voelkner.de/products/175786/Velleman-Audio-Analysator-K8098-Bausatz-12-V-DC.htmlHier wird das Problem recht gut beschrieben.http://www.sprut.de/electronic/pic/8bit/18f/programm/frqdetect/frqdetect.htmNur eine Hardware-Lösung zum Nachbauen ist noch nicht dabei.Wenn es prinzipiell mit einem Arduino zu lösen ist, ich die Frequenzen kenne, würde ich notfalls auch zwei Arduino verwenden. :-kGruß, Apus²
-
6. Februar 2014 um 23:02 Uhr #943830Apus_ApusTeilnehmer
Seit heute bin ich im Besitz eines PM97 50MHz Scopemeter von Phillips/Fluke, das nun endlich wieder funktioniert! \D/Das hatte ich defekt bekommen und lag schon drei Jahre bei mir ungenutzt auf dem Speicher 😆 und seit heute läuft es wieder. :banana:Damit kann ich bei meinen kleinen Problemchen zukünftig besser Licht ins Dunkel bringen. :d:Nach einem deutschen Handbuch habe ich schon länger gesucht, auch um das PM97 zu reparieren und auch das heute gelöst. :+Auf Umwegen habe ich diesen direkten Link für ein deutsches Handbuch entdeckt. http://bedienungsanleitung-pdf.com/ref_sien.php?ID=2946383Ein englisches Manual habe ich auch gefunden, das hatte ich aber schon, einschließlich der Schaltpläne.In dem Zusammenhang möchte ich auch auf diese nüzliche Seite hinweisen:http://original-heuss.de/de/privat/Themen/Messen/index.htmDas PM 97 steht dort auf Platz 1. =D> und der schöne farbige Prospekt kann dort auch herunter geladen werden.Ich hoffe mit diesen Informationen, eventuelle Suche anderen Mitgliedern zu erleichtern.Gruss Apus²
-
13. März 2014 um 14:03 Uhr #944550spokekillerTeilnehmer
Für die die noch Hoffnungen haben für ein baldiges Update…. ich habe diese Woche mein Cubietruck bekommen, daher wirds hier von mir noch ne Weile still bleiben. Den Rest der Zeit habe ich anders als geplant mit RL und vor allem viel RasPi gefüllt gehabt.Ich muß mal das Inhaltsverzeichnis ein wenig anpassen und wer weiß… je nachdem wieviel Ärger mir das CT macht, falls es ab Samstag wirklich hier regnet… schau mer mal
-
2. April 2014 um 15:04 Uhr #945054Apus_ApusTeilnehmer
Damit ich hier vielleicht auch wieder etwas lesen kann, bringe ich eine kleine Fortsetzung. ;)Letztes Jahr war ich mit dem Gewichtsergebnis der Waage nicht so zufrieden. :?:Leider war nicht mehr genügend Zeit, um noch eine Änderung zu versuchen.Aber für die Protokollierung der Einflüge- und Ausflüge-Zeiten war die Waage geeignet.:DIch hatte den A/D Wandler mit dem originalen Kabel (20cm) direkt unter dem Kasten in einer kleinen Box montiert und das geschirmte Datenkabel [ VCC |Dout |ScK |GND] in den Innenraum auf 2m verlängert. Das verursachte zusätzlich zu einem Temperatureinfluss auch noch Störungen auf den Gewichtsergebnissen.Dieses Jahr habe ich die analoge Seite zum Sensor auf 3m verlängert und den HX 711 A/D-Wandler mit 5cm direkt am Arduino angeschlossen. :idea:Ohne Temperaturänderungen bleibt die Gewichtsanzeige auf 0,1 Gramm auch über Nacht stabil.Auch bei dem zweiten Testaufbau war das schon so.Jetzt ist nur noch ein Temperaturfehler durch die Sonnenerwärmung am Kasten zu beobachten. Ich habe auch schon eine Vermutung, wie ich das mildern kann und werde es morgen mal testen. :idea:Die Grafik zeigt den jetzigen Zusammenhang vom Verlauf eines Tages.Die mittlere rote gestrichelte Linie zeigt meinen rechnerischen Versuch den Fehler zu kompensieren. :+ Das zu versuchen, war letztes Jahr noch sinnlos. Gruß, Apus²
-
2. April 2014 um 16:04 Uhr #945056spokekillerTeilnehmer
Witzig…. ich hätte gedacht, daß es sinniger wäre, es so zu machen, daß der AD Wandler nahe am Sensor ist und nicht umgekehrt. Erstaunlich. Ich kann mir jetzt nicht unbedingt vorstellen, daß alleine die Kabellänge soviel Dämpfung auf das Signal gebracht hat, daß die Werte an sich falsch sind.Wie arbeitet denn die Waage an sich? Ist das ein Piezo-Sensor, der den Druck auf die Platte in Gewicht umrechnet?
-
2. April 2014 um 19:04 Uhr #945063Apus_ApusTeilnehmer
Hi Spokekiller,
Der Sensor ist eine DMS_Brücke mit ~1kOhm Widerstand. Da verändert das Kabel kaum etwas.
Die die digitalen Signale können bei langen Kabeln trotz Abschirmung so etwas wie ein “Echo” durch Reflexionen an den Kabelenden entstehen.
Sind aber auch eine Antenne!:?:http://www.edv-online-lexikon.de/s/s0017.html
[SIZE=”1″]Diese Info beschreibt nur in etwa das Problem, aber in diese Richtung ist es meiner Meinung nach einzuordnen. [/SIZE]Hier wird das Prinzip der Waage nochmal schön erklärt.:)
http://www.dfrobot.com/wiki/index.php/Weight_Sensor_Module_V1Momentan habe ich die Vermutung, dass sich die Waagschale erst langsam erwärmt, über die Verschraubung den Sensor morgens einseitig kälter hält. Nachmittags kehrt sich das dann um, wenn die Sonne weg ist.
Für morgen werde ich mal die Schutzhaube weglassen, die war ohnehin nur für den HX711 gedacht.
Wenn dann die Luft dran kommt reicht das vielleicht schon für eine gleichmäßige Erwärmung.Gruß, Apus²
-
2. April 2014 um 19:04 Uhr #945066spokekillerTeilnehmer
Apus_Apus;515960 said:
Die die digitalen Signale können bei langen Kabeln trotz Abschirmung so etwas wie ein “Echo” durch Reflexionen an den Kabelenden entstehen.
Sind aber auch eine Antenne!:?:Genau. aber die Effekte bei solchen Echos bzw bei der “Aufspielung” durch externe Signalquellen stelle ich mir anders vor, bzw habe sie schon anders erlebt. Das Werte dennoch durchkommen, aber sagen wir mal “nur unwesentlich” falsch sind, halte ich für unwahrscheinlich. Speziell bei den Echos gehe ich eher von totalen Aussetzern aus, die dann in nicht vorhandenen Werten resultieren sollten.
Was ggf helfen könnte, wäre, das Kabel zu Anfang und Ende ein-zwei Windungen um einen Ferritring zu wickeln, das sollte zumindest irgendwelche Schwebungen etc pp rausnehmen.
Bin gespannt, woran es liegt, denn ich bin mir sicher, daß Du das herausfindest. Drück Dir die Daumen.
-
2. April 2014 um 21:04 Uhr #945071Apus_ApusTeilnehmer
spokekiller;515963 said:
Apus_Apus;515960 said:
Die die digitalen Signale können bei langen Kabeln trotz Abschirmung so etwas wie ein “Echo” durch Reflexionen an den Kabelenden entstehen.
Sind aber auch eine Antenne!:?:Bin gespannt, woran es liegt, denn ich bin mir sicher, daß Du das herausfindest. Drück Dir die Daumen.
Schau Dir mal die Grafik im Beitrag #418 genau an. Das zeigt den jetzigen Zustand, das ist ausschließlich noch ein Temperatureinfluß.
Guß, Apus²
-
3. April 2014 um 10:04 Uhr #945076spokekillerTeilnehmer
Einverstanden, vor allem jetzt, da ich das PDF von Dir gelesen habe. Der Sensor wird sich unter den Temperatureinwirkungen verspannen und damit ändert sich der Wert, da der Sensor ja über die “mechanische Spannung” in sich selbst arbeitet. Dann wäre nur noch zu klären, wie man das in der Lib, bzw im Code unterzubringen hat…
-
3. April 2014 um 11:04 Uhr #945081Apus_ApusTeilnehmer
spokekiller;515974 said:
Einverstanden, vor allem jetzt, da ich das PDF von Dir gelesen habe. Der Sensor wird sich unter den Temperatureinwirkungen verspannen und damit ändert sich der Wert, da der Sensor ja über die “mechanische Spannung” in sich selbst arbeitet.Dann wäre nur noch zu klären, wie man das in der Lin, bzw im Code unterzubringen hat…
Bei einer DMS-Brücke werden die vier DMS so geklebt, dass zwei DMS für die Gewichtsveränderungen geklebt werden
und die anderen beiden DMS die Temperatur-Dehnung des Biegebalken kompensieren sollen.
Warum das bei meinem Sensor hier nicht funktioniert muss ich noch herausfinden.Ich habe auch schon mal selbst einen Sensor mit Erfolg gebaut. 😉
Der Sensor war aber für Zug/Druck – Kräfte bis 20 kN ausgelegt
und hatte bis 100 °C keine Nullpunktänderung.:)Gruß, Apus²
-
4. April 2014 um 13:04 Uhr #945133spokekillerTeilnehmer
Zu Deinem Selstbausensor darf ich wohl vermuten, daß der sich sicher auch aus erheblich teureren/wertigeren Materialien zusamnsetzte und auch einen entsprechenden Preis hatte?
-
4. April 2014 um 18:04 Uhr #945138Apus_ApusTeilnehmer
Hallo Spokekiller,… wenn Du schon so genau nachfragst, dann doch etwas ausführlicher.Mit keinen Temperaturfehler, heißt natürlich : “Geringerer Fehler als es die Genauigkeitsanforderung an die Messaufgabe verlangt”.=D>Für den speziellen Fall , bei der in einer Druckstange die Kräfte dynamisch bestimmt werden mussten, gab es für den begrenzten Platz keinen käuflichen Sensor. Die Druckstange wurde geteilt und um die Sensorlänge gekürzt, damit er dazwischen geschraubt werden konnte. Wie man Sensoren klebt, hatte ich mal in Esslingen gelernt.;) [TAE]Prinzipiell sah der Sensorkörper aus einem Sechskant – Stahl so aus wie in der Skizze. [zwei Ansichten]Das dünne Mittelstück war zu einem Vierkant gefräst. Die Größe hatte ich für eine dreifache Sicherheit berechnent.Foto habe ich davon leider keines mehr.Auf zwei Seiten waren die aktiven DMS verklebt und links und rechts davon die passiven DMS für die Temperatur kompensation. Zu meiner eigenen Überraschung, konnte ich bei einem Kalibrierschrieb zwischen -20° bis 100° Cnur einen Temperaturfehler < 0,1% FS [kleiner als 2 Newton] ausmessen. Die Linearität war noch besser. \D/Für die Messaufgabe damals war das weit besser als benötigt.Entscheident ist wie gut (dünn ) die Verklebung gelingt.Gruß, Apus²
-
5. April 2014 um 15:04 Uhr #945187Apus_ApusTeilnehmer
Horstelin;516088 said:
Aber du benutzt schon eine Vollbrücke oder?[SIZE=”4″]Ja[/SIZE], auch die Apus² – Waage ist als Vollbrücke geklebt.=D>Jetzt im mechanisch statischen Test, kann es auch sein, dass irgendwo an der Waagschale im Gehäuse doch etwas gerinfügig reibt. Bei der Ausrichtung mit den Druckschrauben mit Kugel habe ich an den Ecken geringes Spiel eingestellt. Reiben sollte es eigentlich nirgens.Wenn ich jetzt mit 40 gr einen Lastwechsel innerhalb von 20 Sekunden vornehme, wird das trotz verändertem Nullpunkt mit -13,9 gr. im Sketch mit …..+39,6 gr und – 39,7 gr schon recht gut ausgerechent. Welche Ergebnisse sich zeigen, wenn die Mauersegler sich zusätzlich im Kasten bewegen,werde ich bald beobachten können. 🙂 Vermutlich nicht alle Ereignisse werden zulassen, das Gewicht eines Mauerseglers exakt zu bestimmen, aber bei schnellen Wechseln innerhalb einer Minute dann schon.Gruß, Apus² 😉
-
5. April 2014 um 15:04 Uhr #945182HorstelinTeilnehmer
Aber du benutzt schon eine Vollbrücke oder?
-
6. April 2014 um 10:04 Uhr #945196Apus_ApusTeilnehmer
Ein kleines Problem taucht in der Anzeige auf.
Sobald die Temperaturwerte unter 16°C fallen, wird mir die negative Differenz angezeigt. -0,3 statt 15,7 ❓
Letztes Jahr hatte ich den Abschnitt noch verstanden. Habe das damals aber so hingenommen, da es mir nur auf die genauen Ereigniszeiten ankam und die Gäste schon eingezogen waren.Jetzt würde ich das aber doch gerne verbessern.
[CODE]//DeviceAdressen der einzelnen DS1820 Temperatursensoren. (loop anpassen)
DeviceAddress sensor1 = { 0x28, 0x5E, 0x91, 0xAA, 0x3, 0x0, 0x0, 0xF };
// ROM = 28 5E 91 AA 3 0 0 F C3
DeviceAddress sensor2 = { 0x28, 0xF5, 0x73, 0xAA, 0x3, 0x0, 0x0, 0xF2 };
// ROM = 28 F5 73 AA 3 0 0 F2 C2
DeviceAddress sensor3 = { 0x28, 0xCF, 0x1E, 0xCA, 0x3, 0x0, 0x0, 0xBD };
// ROM = 28 CF 1E CA 3 0 0 BD IC
char data[12];
char sensor1Name[] = “C3 : “;
char sensor2Name[] = “C2 : “;
char sensor3Name[] = “IC : “;
//……………………………………………………………………….
//[/CODE]Momentan sind nur C2 & C3 angeschlossen.
[CODE] // …Match-Rom Befehl………………………………………..
void OW_Match_ROM(byte* address, byte ow_befehl) { // Match-ROM Befehl
ds.reset(); //reset the bus
ds.select(address); //select sensor
ds.write(ow_befehl); // Befehl senden
}
// …Skip-Rom Befehl………………………………………..
void OW_Skip_ROM(byte ow_befehl) { // Skip-ROM Befehl
ds.reset(); //reset the bus
ds.write(0xCC); // Skip-ROM Befehl senden
ds.write(ow_befehl); // Befehl senden
}
// …Read Scratchpad………………………………………..
void OW_Read_Scratchpad(byte* address, byte data_zahl) { // Read Scratchpad
OW_Match_ROM(address, 0xBE); // Match-ROM Befehl 0xBE
for (byte i=0;i
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.