Show Posts
|
|
Pages: [1]
|
|
2
|
International / Deutsch / RTC DS1307 an Arduino Micro - läuft nicht
|
on: February 19, 2013, 10:21:50 am
|
|
salbe,
ich versuche gerade eine ds1307-rtc an einem arduino micro zum laufen zu bringen. leider ohne erfolg. im serial monitor wird die uhrzeit im format 43:163:42 413.40163 oder ähnlich ausgegeben. an einem arduino uno (auf dem der gleiche sketch läuft) gibts aber keine probleme.
nach kurzem überlegen habe ich die data und clockleitung abgeschlossen, im serialmonitor waren die gleichen werte zu lesen. jetzt meine frage: muss am arduino micro bzw. dessen sketch noch irgendetwas umgestellt/umgeschrieben werden? (oder gibts beim micro eine eigene lib für die rtc) der anschluss erfolgt gleich wie am arduino uno d.h. sda und scl an analog 4 und 5, +5v und gnd ebenfalls dort, wo es hingehört. sind u.u. pull-ups notwendig?
danke schon mal im voraus
|
|
|
|
|
3
|
International / Deutsch / Re: Kalender mit Erinnerungsfunktion und Temperaturanzeige
|
on: February 14, 2013, 02:27:00 pm
|
so, problem gelöst!! wenn man schon 1-wire-trümmer einbaut, dann sollte auch die lib dazu stimmen (die hat nämlich gefehlt). werd mich heut in der letzten nachtschicht dazu bemühen, die beispielsketches in mein eigentliches programm einzupflegen und dann das ganze "gerät" inbetriebnehmen. die resultate sollten dann irgendwann auch in meine blog (adresse siehe einen post früher) erscheinen  lg bernd
|
|
|
|
|
5
|
International / Deutsch / Re: Kalender mit Erinnerungsfunktion und Temperaturanzeige
|
on: February 14, 2013, 12:24:01 pm
|
holla kalli, hab mir grad die version 0.22 gesaugt, probiert... und da gehts auch nicht. es kommt die gleiche fehlermeldung wie vorher beschrieben. (natürlich, die library hab ich auch eingefügt  ) was gibt es sonst noch für möglichkeiten? hier nochmals die fehlermeldungen:  gruß bernd
|
|
|
|
|
6
|
International / Deutsch / Re: Kalender mit Erinnerungsfunktion und Temperaturanzeige
|
on: February 14, 2013, 04:29:06 am
|
morgähn, heute sind sie eingetrudelt, meine ds18s20, gleich ein ganzer sack voll  natürlich gleich ausgepackt, zusammengesteckt und...... fehlermeldung!!! ************************************************************************* In file included from Single.pde:2: E:\_Software\arduino-1.0.2-windows\arduino-1.0.2\libraries\DallasTemperature_372Beta/DallasTemperature.h:64: error: expected `)' before '*' token E:\_Software\arduino-1.0.2-windows\arduino-1.0.2\libraries\DallasTemperature_372Beta/DallasTemperature.h:222: error: ISO C++ forbids declaration of 'OneWire' with no type E:\_Software\arduino-1.0.2-windows\arduino-1.0.2\libraries\DallasTemperature_372Beta/DallasTemperature.h:222: error: expected ';' before '*' token Single:8: error: 'OneWire' does not name a type Single:11: error: 'oneWire' was not declared in this scope************************************************************************* hab ich da eine falsche lib? wenn ja: wo finde ich die "richtige"? @vieledinge: der preis für einen ds... (im to92-häusl) liegt in meiner region bei €2,95, wenn ich ihn selbst abhole. die sensoren, welche ich verbaue, kosten €12,95/stk, haben jedoch eine 2-meter-anschlussleitung und sind zudem komplett in kunststoff vergossen (d.h. wasserdicht), also ideal für den outdoor-bereich.
|
|
|
|
|
8
|
International / Deutsch / Re: Kalender mit Erinnerungsfunktion und Temperaturanzeige
|
on: February 04, 2013, 03:29:39 pm
|
sodale, wieder einmal da  ich habe o.a. projekt etwas, naja, "umgestaltet", wenn man es so nennen will. die programmierfähigkeit der anzeige über app wird vl. etwas später realisiert, zu den ausgaben von geburtstagen etc. werde ich den sketch nach der idee von dertester missbrauchen (ein dankeschön an dieser stelle). die ausgabe erfolgt zwischenzeitlich auf einem 16x2-lcd auch die möglichkeit von dischneider habe ich probiert, danke auch hier @vieledinge: wenn ich den DS18S20 irgendwo billig hergrieg, dann werd ich des auch damit versuchen, pt100 liegt aber schon auf meinem schreibtisch  weiters hier der (von mir "simplifizierte" sketch, den ich im netz gefunden habe --> originalsketch http://combustory.com/wiki/index.php/RTC1307_-_Real_Time_Clock/*************************************** * * * Programm: Datum-Uhrzeit- * * Temperatur-Anzeige * * * * Autor: autuino * * * * Datum: 2013_02_04 * * * * Version: 1.2 * * Für 16x2-LCD * ***************************************/
#include <LiquidCrystal.h> #include "Wire.h" #define DS1307_I2C_ADDRESS 0x68 // This is the I2C address // Arduino version compatibility Pre-Compiler Directives #if defined(ARDUINO) && ARDUINO >= 100 // Arduino v1.0 and newer #define I2C_WRITE Wire.write #define I2C_READ Wire.read #else // Arduino Prior to v1.0 #define I2C_WRITE Wire.send #define I2C_READ Wire.receive #endif
// Initialisierung des LCD LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Globale Variablen byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; int i, j, k = 0; int flash = 8; float temp_in, temp_out; byte zero; char *Day[] = {"","So","Mo","Di","Mi","Do","Fr","Sa"}; char *Mon[] = {"","Jan.","Feb.","Mar.","Apr.","Mai.","Jun.","Jul.","Aug.","Sep.","Okt.","Nov.","Dez."}; // Wandelt BCD-Werte in Dezimalwerte um byte bcdToDec(byte val) { return ( (val/16*10) + (val%16) ); } // Daten von RTC erhalten void getDateDs1307() { // Reset the register pointer Wire.beginTransmission(DS1307_I2C_ADDRESS); I2C_WRITE(zero); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); } void setup() { // Anzeige der Werbung lcd.begin(16, 2); lcd.print("Kalender V 1.2"); lcd.setCursor(0, 1); lcd.print("build by MB"); lcd.noCursor(); // Löschen der Werbung nach der vorgegebenen Zeit lcd.cursor(); delay(2500); lcd.clear(); // Start des IIC-Modi Wire.begin();
// Pin Flash (=8) ist Ausgang pinMode(flash, OUTPUT); }; void loop() { // Ausgabe von Datum und Uhrzeit inkl. Abfrageroutine der IIC-RTC while(i <= 20) { Wire.beginTransmission(DS1307_I2C_ADDRESS); I2C_WRITE(zero); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); // Maskierung der Bits vom RTC-Modul second = bcdToDec(I2C_READ() & 0x7f); minute = bcdToDec(I2C_READ()); hour = bcdToDec(I2C_READ() & 0x3f); // Need to change this if 12 hour am/pm dayOfWeek = bcdToDec(I2C_READ()); dayOfMonth = bcdToDec(I2C_READ()); month = bcdToDec(I2C_READ()); year = bcdToDec(I2C_READ());
// Ausgabe des Datums im Format DD,_dd._mmm._'yy lcd.clear(); lcd.setCursor(0, 0); lcd.print(Day[dayOfWeek]); lcd.print(", "); if (dayOfMonth < 10) lcd.print("0"); lcd.print(dayOfMonth, DEC); lcd.print("."); lcd.print(" "); lcd.print(Mon[month]); lcd.print(" '"); lcd.println(year, DEC);
// Ausgabe der Uhrzeit im Format hh:mm:ss lcd.setCursor(4, 1); if (hour < 10) lcd.print("0"); lcd.print(hour, DEC); lcd.print(":"); if (minute < 10) lcd.print("0"); lcd.print(minute, DEC); lcd.print(":"); if (second < 10) lcd.print("0"); lcd.print(second, DEC); lcd.print(" "); lcd.noCursor(); i++; delay(500); j = 0; k = 0; };
while(j <= 20) { // Einlesen der aktuellen Temperaturwerte und Mapping auf ein ordentliches Format // Parameter für PT100 (Spannungsteiler mit R56 und PT100), errechnet anhand der Formel R = R0*(1+0,00385*Δϑ) // Mapping-Wert für 0°C = 656, 100°C = 728 while(k <= 1) { digitalWrite(twinkle, HIGH); temp_in = analogRead(A0); temp_in = map(temp_in, 656, 728, 0, 100); temp_out = analogRead(A1); temp_out = map(temp_out, 656, 728, 0, 100); delay(25); digitalWrite(flash, LOW); k++; };
// Ausgabe der aktuellen Temperatur für innen und außen lcd.clear(); lcd.setCursor(0, 0); lcd.print("Innen: "); lcd.setCursor(8, 0); lcd.print(temp_in,1); lcd.setCursor(0, 1); lcd.print("Aussen: "); lcd.setCursor(8, 1); lcd.print(temp_out,1); lcd.noCursor(); j++; delay(500); i = 0; };
};
und hier auch die umgesetze idee von dischneider (funktioniert trotz einfachen aufbaus sehr gut): // Geburtstag von Sepp 23.04.1965 if(dayOfMonth == 23 && month == 04){ int ofyear = (year + 2000) - 1965; lcd.setCursor(0, 2); lcd.print("Sepp "); lcd.print(ofyear);}
sketch ist noch nicht ganz fehlerfrei, könnte noch schöner auskommentiert werden. zu den sorgen von vieledinge: was bei einer umstellung von mez auf mesz und umgekehrt passiert, weis ich nicht. weiters: da das ding in einer elektrowerkstätte installiert werden soll (habe ich eingangs leider nicht erwähnt) verkompliziert die sache mit webzugriff, weil ich nicht glaube, dass mir unsere admins "nur für spaß" die sicherheitsrichtlinien unseres firmennetzwerkes entschärfen ;-) d.h. aufbau so klein wie möglich und so groß wie nötig, gilt auch für den preis ps: für änderungsvorschläge bzw. code-korrekturen (im kleinen wie im großen) bin ich sehr dankbar  schönen abend noch
|
|
|
|
|
9
|
International / Deutsch / Kalender mit Erinnerungsfunktion und Temperaturanzeige
|
on: February 03, 2013, 03:18:23 pm
|
tja hallo, ich bins wieder mal  wie im titel zu lesen, möchte ich mich wieder mal an ein neues projekt heranwagen (das mit dem "Universelles Netzgerät mit Arduino & Co" http://arduino.cc/forum/index.php/topic,141676.0.html hab ich inzwischen, aus zeit- kosten- und motivationsgründen ad acta gelegt). was soll mein neues "teil" können? wie oben zu lesen möchte ich auf einem 20x4-lcd zwei (2) verschiedene temperaturen, meinetwegen "büro/werkstatt" und "draußen" anzeigen. gemessen wird wahrscheinlich der einfachheit halber mit pt100. zudem soll die aktuelle zeit in hh:mm:ss sowie das datum in dd.mm.yy angezeigt werden. die bezeichnung "erinnerungsfunktion" ist vielleicht etwas unpassend, das wort "künstliches gehirn" wird wohl eher passen. ich möchte an verschiedenen tagen, welche ich vorher genau festlege, die eine oder andere nachricht im display anzeigen wie z.b.: "sepp geburtstag", "pi-day" oder "hochzeitstag". als gag stelle ich mir vor, die aktuelle zeit in das rtc-modul einzulesen und eventuell neue ("künstliche-gehirn")-termine hinzufügen/alte termine löschen. eine solche android-app sollte ja über processing geschrieben werden können, oder? nun zu meinen fragen: 0. ich frage nicht, ob so was möglich ist, weil technisch ist theroretisch alles möglich (das wird mir auch der uwe mit seiner kristallkugel bestätigen  ) 1. funktioiert das auch mit einem arduino-micro? ( http://www.physicalcomputing.at/shop/article_A-1134800/Arduino-Micro.html?sessid=y818yJWVKtbJ6NEypqFaiaQezzIZYzMH8LnCcTpZm4rX7J6snerYG0TNiyVmNchY&shop_param=cid%3D3%26aid%3DA-1134800%26) 2. wenn ja, ist es dann überhaupt möglich, daten (für die erinnerung) in den speicher einzulesen, oder brauch ich dafür wieder ein eigenes shield mit einem micro-sd-card-slot? ich jab zwar einen solchen kartenslot, der ist aber an einem ethernetshield angebracht. und arduino+ethernetshield+display+... ist dann doch wieder etwas zu finanzlastig. 2a. wenn nein, ist auch okay 3. hat von euch schon so etwas (ähnliches) gebastelt? schönen abend noch, autuino
|
|
|
|
|
10
|
International / Deutsch / Re: Universelles Netzgerät mit Arduino & Co
|
on: January 10, 2013, 04:26:49 pm
|
n'abend wahnsinn... das hat wohl ein deutliches echo rausgebracht  @dlca: in AT bekommt man nach abschluss einer höheren technischen bundeslehranstalt (=htbl) und 3-jähriger praxis (= tätigkeit, bei welcher das in der anstalt gelernten und gelehrten wissens angewendet werden muss/soll) und nach einer anfrage sowie einem kleinen obulus am bundesministerium für wirtschaft, familie und jugend (vormals bm für wirtschaft und arbeit) die standesbezeichnung ing. verliehen und ist somit auch zum tragen dieser standesbezeichnung berechtigt (näheres siehe hier: https://www.bmwfj.gv.at/Berufsausbildung/Ingenieurwesen/Seiten/Ingenieurtitel.aspx ) --> aber vielleicht wusste das der uwe schon  aber: danke für den link zum post von erni-berni, das werde ich mir mal zu gemüte führen; @webmeister und kurti: danke für eure links, sobald ich zeit habe, werd ich mich auch da einlesen bzw. weiter informieren; @all: sobald es einen prototypen gibt (und der auch funktioniert) werde ich mich natürlich auch bemühen, eine fotostrecke einzustellen. danke nochmals für eure hilferichen posts und einen schönen abend gruß, bernd
|
|
|
|
|
11
|
International / Deutsch / Re: Universelles Netzgerät mit Arduino & Co
|
on: January 09, 2013, 04:35:30 pm
|
@mkl0815: soll jetzt kein vorwurf sein, dass mit dem "nicht so viel Erfahrung haben", --> ich habe eine abgeschlossene lehre als mess- und regelungstechniker sowie eine matura (= abitur) in anlagentechnik und industrieller elektronik (soll heißen: ich bin ingenieur), und arbeite seit nun mittlerweile 12 jahren als instandhalter, macht aber nichts  , kann man ja nicht wissen. was ich außerdem noch "verheimlicht" habe: ich befasse mich erst seit relativ kurzer zeit (ca. 3 monate) mit µc-systemen, und da speziell mit dem arduino. nichts für ungut, kannst du ja nicht schmecken zu dem durchsteckwandlern: wir haben solche teile auf lager (muss erst nachschauen, wer die liefert), mit denen sowohl ein gleichstrom gemessen werden kann. wie die genau funktionieren, hab ich mir noch nie angeschaut, weil ich dachte, dass ich die teile nie verwenden werde. aber wenn sie schon da sind, warum nicht... ich vermute, dass das solche halleffekt-wandler wie diese http://www.ime-messgeraete.de/ime-d-nt-pdf/NT500.pdf sind. ausserdem gäbe es da ja immernoch die möglichkeit mit dem shunt. nun zur funktion: das netzgerät verfügt über eine einspeisung von: 230VAC/50Hz ausgangsseitig (komplett galvanisch vom netz getrennt, eh klar): konst. +/-15 volt für die versorgung von opv's konst. 5 volt für z.b. arduino ;-) konst. 24 volt zum testen von industrie(-taulichen) komponenten wie relais, schütz, auswertekarten,... einstellbare spannung von 0...40 volt (1,2...37 mit dem lm317t), die ausgangsströme sind im "vernünftigen" bereich, d.h. für die 5/15 volt reichen jeweils 300...500ma, (sollts wegen der 78xx-reihe 1 ampere max werden, bin ich auch nicht böse) die 24-volt-seite kann ich mit einem "handelsüblichen" netzteil, welche wir auch in unseren anlagen verbauen, realisieren. die regelbare spannung kann je nach lm bis zu 2,2 amps ( sagt zumindest dieser dantewisch, wenn ich mich nicht verlesen habe: http://pdf1.alldatasheet.com/datasheet-pdf/view/53577/FAIRCHILD/LM317T.html ), aber auch die brauch ich nicht voll ausnutzen, ich will ein labornetzteil, kein kleinkraftwerk  . zur einstellung des lm möchte ich jedoch kein poti (im konventionellen sinn) sondern vielleicht ein "digitales potentiometer" wie diese da: http://www.intersil.com/en/products/data-converters/digital-potentiometers--dcps-.html . dann kann man die spannung so schön mittels taster rauf- und runterstellen, eventuell die werte auch mittels pc-interface verändern. gemessen werden sollen bei diesem spektakel jedoch nur strom und spannung der variablen spannung, d.h. die max. 37v sowie die ~2amp. die leistung wird, wie in den vorhergehenden posts schon beschrieben, ja berechnet. so, genug der worte, nochmals, ich will hier niemanden zu nahe treten, auch dir nicht, mkl0815 aka. mario, ich wollte mit meinem 2. post lediglich die frage in den raum stellen, ob vielleicht noch jemand anderes eine weitere idee hat, wie man verschiedene sachen verwirklichen kann. es sei nocheinmal gesagt, dass ich jeden vorschlag, der dieses thema betrifft, dankbar annehme und auch AUSPROBIERE. danke euch nochmal und wünsche einen schönen abend ;-) mfg bernd
|
|
|
|
|
12
|
International / Deutsch / Re: Universelles Netzgerät mit Arduino & Co
|
on: January 08, 2013, 11:36:33 pm
|
Hallo Bernd, das mit dem lcd.clear() habe ich schon probiert, das Ergebnis ist, wie Mario sagt: es flackert so stark, dass die Texte teilweise überhaupt nicht mehr zu lesen sind. Hallo Mario, ich dachte auch schon daran, den Wert zu vergleichen und dann die letzte(n) mit Space zu überschreiben. Wie ich den Strom messe, weiß ich nocht nicht so genau. Einerseits würde sich, wie du sagst, ein Shunt relativ gut (und einfach  ) funktionieren, andererseits gebe es auch sog. "Durchsteckwandler" mit denen auch eine reine DC-Spannung messbar ist. Zu was ich mich hier entscheide, weiß ich aber noch nicht. Aber Danke für eure Tipps, vl. fällt noch jemanden was dazu ein, wie man das Display-Problem lösen kann. Gute Nacht  , Bernd (auch ich heiße so)
|
|
|
|
|
13
|
International / Deutsch / Universelles Netzgerät mit Arduino & Co
|
on: January 08, 2013, 08:51:56 pm
|
Hallo ersteinmal, wie schon im Titel erkennbar, möchte ich mir ein Universalnetzgerät bauen, also so eins, wo ich die Spannung mittels LM317 usw. einstellen kann. Das Schaltungstechnische ist hierbei nicht das Problem, wohl aber die Darstellung der zu messenden Werte. Ich möchte auf einem 20x4-LCD (dieses: http://www.neuhold-elektronik.at/catshop/product_info.php?products_id=4222) die Werte Spannung (in Volt), Strom (in Ampere und mA) sowie die Leistung (in Watt) ausgeben. Ich habe die Analogeingänge A0 und A1 ersteinmal provisorisch an ein Poti angeschlossen, um irgendwelche Werte in den Arduino einzulesen. Die Skalierung auf 0...5V läuft auch, wo es hapert, ist die Ausgabe der Leistung sowie der mA. Es wird zwar ein Zahlenwert angezeigt, der auch stimmt, jedoch habe ich das Problem, dass, wenn z.B. der Leistungswert ansteigt (>9,99), sich die Anzeige nach rechts verschiebt, soweit kein Problem. Verringert sich die Leistung wieder (auf einen Wert <10,0), so wird der Wert wieder um 1 Stelle nach links verschoben. Jedoch bleibt der letzte Wert sozusagen "picken", d.h. auch wenn die Leistung auf 0,00 geht, steht an der dritten Stelle, (die es eigentlich gar nicht geben darf) der letzte aktive Zahlenwert. Dann bleiben 0,006 Watt oder ähnliches stehen. DAS WILL ICH NICHT  Ebenso ergehts mir bei den Milliampere. Hat wer eine Idee, wie man das lösen könnte? Anbei der Code (bitte nicht schimpfen, ist sehr eigenwilliger Programmierstil), der kommt auch so nicht in das fertige Programm  Schonmal Danke im Voraus ;-) /*************************************** * * * Programm: LCD-Anzeige für UNG * * * * Autor: autuino * * * * Datum: 2013_01_09 * * * * Version: 1.0 * * * ***************************************/
#include <LiquidCrystal.h>
// Initialisierung des LCD LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { // Obligatorische Werbung nach dem Einschalten der Versorgungsspannung lcd.begin(20, 4); lcd.print("UNG"); lcd.setCursor(0, 1); lcd.print("Universelles"); lcd.setCursor(0, 2); lcd.print("Netz-"); lcd.setCursor(0, 3); lcd.print("Geraet");
// Löschen der Werbung nach der vorgegebenen Zeit lcd.cursor(); delay(2500); lcd.clear(); }
void loop() {
// Einlesen der Spannung int voltage = analogRead(A0); // Skalierung des Eingangssignals auf die maximal möglichen 5V bei einer Auflösung von 10 bit float u = voltage * (5.0 / 1023.0); // Einlesen des Stromes int current = analogRead(A1); // Skalierung des Eingangssignals auf die maximal möglichen 5A bei einer Auflösung von 10 bit float i = current * (5.0 / 1023.0); int i_mil = i * 1000;
// Berechnen der Leistung nud Multiplikation mit 1,0 für die Darstellung auf 2 Kommastellen float p = u * i; // Ausgane an das LCD --> 1.: Stelle; 2.: Reihe lcd.setCursor(0, 0); lcd.print("Spannung:"); lcd.setCursor(10, 0); lcd.print("[V] "); lcd.print(u); lcd.setCursor(0, 1); lcd.print("Strom:"); lcd.setCursor(10, 1); lcd.print("[A] "); lcd.print(i); lcd.setCursor(0, 2); lcd.print(""); lcd.setCursor(10, 2); lcd.print("[mA] "); lcd.print(i_mil); lcd.setCursor(0, 3); lcd.print("Leistung:"); lcd.setCursor(10, 3); lcd.print("[W] "); lcd.print(p); }
|
|
|
|
|