Show Posts
Pages: 1 ... 48 49 [50] 51 52 ... 76
736  International / Deutsch / Re: Verhalten Rotary Encoder on: January 10, 2012, 09:32:21 am
Du musst ein "Datentable" hinterlegen und die beiden Eingänge vergleichen in welche Richtung gedreht hast. Der ander Code ist für einen Incrementalgeber bei dem sich die Signale anders verhalten.  smiley

So sieht man seinen Code wieder smiley-mr-green
737  International / Deutsch / Re: 1 Watt Led mittels Pwm dimmen on: January 02, 2012, 02:05:20 pm
http://www.hobby-bastelecke.de/grundschaltungen/konstantstromquelle2.htm
Hier hast du eine Schaltung.
Die Modifizierst du indem du R1 von der einen Seite (von der Betriebsspannung) nimmst und gegen 2k2 Widerstand austauscht und dann deine PWM darauf gibst.
Damit hast du deine getaktete Stromquelle. Du musst darauf achten das deine Betriebsspannung etwa 1,5V höher ist als normale "Betriebsvorwärtsspannung" deiner LED.
Lese mal den Artikel komplett dann kann man es ganz gut verstehen wie es funktioniert. Es ist eine extrem günstige Schaltung für deine Zwecke.

Gruß

volvodani
738  International / Deutsch / Re: Werte an Analogen Eingängen in 4 mal 0-255 aufgeteilt on: January 01, 2012, 02:06:03 pm
Du übertragst ein byte ( 8Bit=255) der gelesene Wert ist aber 10Bit. Also ist das Byte zu klein 4*0-255=1* 0-1024. Also musst du den gelesenen Int Wert als dezimalzahl übertragen.
via => Serial.print("DeinWert", DEC)

9Bit=2*255 (0-512)
10Bit=4*255(0-1024)
11bit=8*255(0-2048)

und so weiter :-)
739  International / Deutsch / Re: PWM Einstellung / Auflösung on: December 27, 2011, 02:14:16 pm
Die gewünschte Spannung bekommst du mit einerm RC-Glied hin. Diese ist aber dann ein bisschen verzögert 5*Tau.
Gerner genommen
http://de.wikipedia.org/wiki/RC-Glied

Hier steht auch das wichtige drin. Zu beachten ist auch noch der eingangswiderstandes des Gerätes das diese 0,83-1,95V braucht
740  International / Deutsch / Re: Lager aufstocken, aber mit was? on: December 17, 2011, 04:47:12 am
Ich bestelle mit immer ein paar schnuckelige MosFet im DIL gehäuse mit die man ideal direkt an den DOut der micros benutzen kann. IRFD 024

Gruß
volvodani
741  International / Deutsch / Re: Anfänger: Platine nach Entwicklungsarbeit anfertigen lassen? on: December 15, 2011, 02:57:05 am
Schaue mal hier rein das Dingen
http://jeelabs.com/products/rbbb
Defür einfach ein Motherboard bauen und draufstecken. Nachteil beim RBBB es ist keine Serial Wandler on Board zum Programieren das muss man dann extern machen.
Ich benutze für die "Motherboard"-Lösungen meiner Projekt immer den hier:
http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=1&products_id=15
Da dieser einfach unschlagbar ist in Sachen Preis und der ist "Voll"-Bestückt also auch einen FTDI drauf und er verhältnismäßig günstig
742  International / Deutsch / Umstieg auf 1.0 on: December 13, 2011, 12:47:57 pm
Wer hat den Umstieg auf 1.0 gewagt. Ich habe mal auf der Arbeit ein Projekt mit externen Libaries (LCD) auf der 1.0 versucht zu kompilieren aber ich habe diverse  Meldungen bekommen. Es wurden ja auch einige Befehle geändert z.B. von Wiring() I2C

Wie seht es aus muss man jetzt alle Projekt nochmal überarbeiten  smiley-confuse um auf 100% 1.0 kompatibel zu bleiben oder sollte man besser die neuen Projekte auf der 1.0 anfangen und die alten auf der 0023 belassen.
Mal euer Erfahrungen :

Gruß volvodani
743  International / Deutsch / Re: Arduino ins Internet ohne statische IP on: December 13, 2011, 12:38:12 pm
^^^^Das war die Software auf dem Arduino.
Dann braucht man noch einen anbieter für die "Übersetztung" deiner dynamischen IP in eine Feste adresse (siehe Vorredner). In meinem Fall ist das dyndns.org dort habe ich mir die o.g. Adresse geschaltet mit dem Port 80 auf meine IP.
 Dann kommt noch im Router eine Portfreigabe oder Portforwarding genannt.
Das ist hier in meinem Fall die 192.168.178.5 (Arduino). Der Router bekommt jetzt über dyndns.org eine Anfrage auf Port 80, der Router weiss ja das Port 80 auf 192.168.178.5 "umleiten" (forwarding) soll. Und so kommt dann jeder mit dem Browser auf meine Fensterbank.

Anmerkung zum Code:
Ich mache hier die Temperaturauswertung mit einem 12Bit AD Wander von MAXIM dem MAX127.
 Ich habe daran einen LM35CZ Temperaturfühler über eine "virtuelle Masse" dran damit ich trotz fehlender negativen Versorgungsspannung Temperaturen unter 0°C lesen kann.
Und das zweite ist die Google Chart API die habe ich mit Hilfe dem Forum und sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr  vielem probieren (4 Tage jeden Abend 2h smiley-zipper) dann so hinbekommen.
Und es befindet sich eine Schiebe Array im Programm da ich keine Lust auf umrechnen mit Pointern hatte. Die Funktion verschiebt alle 30min die Werte um eine ArrayAdresse ( Array) um eine Position weiter ( Array [i+1]). Durchlaufzeit excl. delay liegt bei 1-2ms.

Viel Erfolg

volvodani

Bei so einem Projekt wird die Browser Quelltextanzeige den bester Freund.

Tante Edith sagte: Ich müsste noch was ergänzen :-)
744  International / Deutsch / Re: Arduino ins Internet ohne statische IP on: December 13, 2011, 12:25:58 pm
Hier ist mein Projekt
http://dhmaster.dnsalias.net/
Wollte ihn mal erweitern mit DCF Zeit aber habe ich dann doch nicht gemacht jetzt liest er nur die Temperatur auf meiner Fensterbank drausen und schreibt einen 24h Chart mit Hilfe von Google API.
Ich knall hier mal meinen Code hint. Fragen sind willkommen.
Code:
#include <EEPROM.h>
#include <Wire.h>
#include <SPI.h>
#include <Ethernet.h>


/*
 Lizenz (Deutsch): creative commons Namensnennung - Keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Unported - http://creativecommons.org/licenses/by-nc-sa/3.0/deed.de
 Bei Verwendung und Weitergabe des Quellcodes muss ein Verweis auf den Autor und die Webseite erfolgen. In Begleitdokumentationen ist ebenfalls in angemessener Weise dieser Verweis anzubringen.
 
 License (English): creative commons Attribution-Noncommercial-Share Alike 3.0 Unported - http://creativecommons.org/licenses/by-nc-sa/3.0/
 When using and distributing this source code a reference to the author and the web page must take place. In accompanying documents this reference must also be attached.
 
 Code by Mats Vanselow - http://www.mats-vanselow.de
 enhanced by Daniel Herr
 Erweiterung des Servers mit einem MAX127(Analogeingang 12Bit) von Maxim per Ansteuerung über I2C in einer eigenen Funktion, zur bessern Auflösung der Temeperatur 10mV=1°
 Die Temperatur wird über einen LM35 gemacht dem mithilfe einer Diode die neagtive Temperaturbereich beigebracht wird. Um Temperaturdrift der Diode zu kompensieren wird automatisch
 der Offset alle 60 sekunden  korrigiert
 */

int tempc = 0;
float tempfloat=0;
int TempArray[49];
int TempSpeicher1=0;
int TempSpeicher2=0;
int tempafter=0;
int tempafter1=0;
int tempafter2=0;
int rund=0;
int runh=0;
int runm=0;
int runs=0;
int ticks=0;
int offset=475;      // erster Startwert des Offset mit einem mal gemessenen Wert von 480mV Dioden spannung
unsigned long last_millis1=0;
unsigned long last_millis2=0;
unsigned long last_millis3=1797000;

byte mac[] = {
  0x90, 0xA2, 0xDA, 0x00, 0x2B, 0xEA };           // MAC Adresse des Arduino Boards
byte ip[] = {
  192, 168, 178, 5 };                              // IP Adresse des Arduino Boards
byte gateway[] = {
  192, 168,178, 1 };                               // Gateway Fritzbox
byte subnet[] = {
  255, 255, 255, 0 };                             // Subnet Maske (optional)
Server server = Server(80);                       // Port Einstellung (Standard 80)

void setup() {
  Wire.begin();                                    // I2C als Master
  Ethernet.begin(mac, ip);//, gateway, subnet);   // Ethernet initialisieren
  server.begin();                                 // Auf Clients warten
  pinMode(4,OUTPUT);                              // zum Abwählen der SD karte  auf dem Shield
  digitalWrite(4,HIGH);                           // zum Abwählen der SD karte  auf dem Shield
  rund=EEPROM.read(1);
//EEPROM.write(1,0);
}

void loop() {
  tempc = ( 50000 * (readMAX127(0)-offset))/4096;    // Umwandeln der 12Bit Wertes in einen               Temperaturwert/100 zum besseren auflösen der Nachkommastellen
  tempfloat=tempc/100.0;
  long cur_millis;
  cur_millis= millis();                           

  if (cur_millis-last_millis1 >=1000) {          // Für den Laufzeit zähler Sekunden
    runs=runs+1;                                     
    last_millis1=cur_millis;
  }
  if (cur_millis-last_millis2 >60000){             // Für den Offset des wg. der viruellen Masse
    offset=readMAX127(1);                         // für das Minustemperaturen messen
    last_millis2=cur_millis;
  }
  if (cur_millis-last_millis3 >1800000){           // alles 30min wird das array verschoben 
    TempArray[0]=tempfloat;                      // Also ein durchschiebe Array
    for (int i=48;i>0;i--){
      TempArray[i]=TempArray[i-1];
    }
    last_millis3=cur_millis;
  }
  TempArray[0]=tempc/100;
  if (runs >= 60){
    runm=runm+1;
    runs=0; 
  }
  if (runm >= 60){
    runh=runh+1;
    runm=0;
  }
  if (runh >= 24){
    rund=rund+1;
    EEPROM.write(1, rund);
    runh=0;
  }


  Client client = server.available();             // Prüfen, ob Client Seite aufruft
  if (client) {                                   // Seitenaufruf durch User
    server.print("HTTP/1.0 200 OK\r\nServer: arduino\r\nContent-Type: text/html\r\n\r\n");
    server.print("<HTML><HEAD><TITLE>");
    server.print("Arduino Webthermometer");
    server.print("</TITLE>");
    server.print("</HEAD><BODY>");
    server.print("<b> Mein erster Temperatur - Webserver  </b><br />");
    server.print("Der ArduinoMEGA läuft seit ");
    server.print(rund);
    server.print(" Tagen ");
    server.print(runh);       
    server.print(" Stunden ");
    server.print(runm);
    server.print(" Minuten und ");
    server.print(runs);
    server.print(" Sekunden.<br />");
    server.print("Temperatur draussen auf der Fensterbank:<br /> ");
    server.print("<img src=\"http://chart.googleapis.com/chart?chxl=0:|-10%C2%B0C|%2B35%C2%B0C");
    server.print("&chxr=0,-15,25&chxt=y&chs=400x250&cht=gm&chco=000000,3072F3|42B542|FF3A00&chds=-10,35&chd=t0:"); //chco=000000
    server.print(tempfloat);
    server.print("&chl=");
    server.print(tempfloat);
    server.print("&chtt=°C+Aussentemperatur+aktuell\"> <br /> ");
    server.print("Der gemessene Offset beträgt: ");
    server.print(offset);
    server.print(" LSB <br /> ");
    server.print("<img src=\"http://chart.googleapis.com/chart?chxl=1:|24|21|18|15|12|9|6|3|0&chxr=0,-10,40|1,48,0");      //chart.googleapis.com
    server.print("&chxs=0,676767,11.5,0,lt,676767&chxt=y,x&chs=500x350&cht=lc&chco=000000&chds=-10,40");
    server.print("&chd=t:");
    int n;
    for (n = 48; n >0; n = n - 1){
      server.print(TempArray[n]);
      if (n>=2 && n<=48)
        server.print(",");
    };
    server.print("&chdl=Verlauf+Temperatur+letzte+24h&chdlp=b&chg=0,5&chls=2&chtt=Verlauf\"> <br /> ");
    delay(100);                                    // Kurz warten, um Daten zu senden
    client.stop();                               // Verbindung mit dem Client trennen
  }
}




long readMAX127(byte chan)
{
  byte control = 0x80 + (chan << 4);
  byte addr = 0x28;

  Wire.beginTransmission(addr);
  Wire.send(control); // send value
  Wire.endTransmission();

  Wire.requestFrom(addr, (byte)2);

  byte b1 = Wire.receive();
  byte b2 = Wire.receive() >> 4;
  long data = (b1 << 4) | (b2 & 0x0F);

  return data;
}
745  International / Deutsch / Re: SPI - Touchscreen on: December 12, 2011, 05:17:39 am
Quote
pinMode(10,HIGH);//Chip Select
ist falsch. Dadurch ist der Standartmsssig als Eingang definiert

pinMode (10,OUTPUT);  ist richtig

Und bei dem CS (LOW heißt angewählt, HIGH ist abgewählt)

Gruß

Daniel
746  International / Deutsch / Re: Timing Problem ! on: December 08, 2011, 03:32:26 pm
Hier mal ein Versuche mal dies mit Erklärung:

Code:
Anlassen=analogRead(A0);   //einlesen deines Zeitwertes an
Auslassen=analogRead(A1);  //einlesen deines Teitwertes aus auf diese wiese ist es maximal 1024 ms hier noch ein multiplikator oder eine map

if(millis() - millisAus >= Auslassen && AUS==true) {    // Hier schaut er nach ob die vergangene Zeit  seit dem Ausschalten Größer bzw gleich der gewählten
                                                   // ist . Ist dass der Fall
 digitalWrite(15, HIGH);                    // Dann macht der deine LED an ansonsten läuft er hier vorbei in das Restlich Programm
 AUS=false;
  millisAn = millis();                             // Hier merkt er sich wann er die LED angemacht hat
}
if(millis() - millisAn >= Anlassen&& AUS==false) {     //  Hier schaut er nach wie lange er die LED anlassen soll er weiss ja wann er sie  angemacht hat                
                                                   // hat ist das der Fall
digitalWrite(15, LOW);                    // macht er sie aus
AUS=true;
millisAus= millis();                           // und merkt sich wann er sie ausgemacht hat
  }
Bei so einem kleinen Program kannst du davon ausgehen das es diese Schleifen ca 2-3000 pro Sekunde prüft eher öfter (also wenn du keine delays  benutzt). Er führt die Anweisung hinter dem If erst aus wenn die wahr (richtig sind). So wie es jetzt geschrieben ist kannst während des anlassen bzw auslassen die Zeit durch drehen am Poti ändern. Packst du aber dann jeweils die Analog read in die If-Schleife wird auch nur einmal gelesen bis der wieder an der Stelle ist.

Hoffe es ausreichen erklärt zu haben

edit: Fehler beseitigt
747  International / Deutsch / Re: Bezugsadresse für Bauteile von xxx bzw. Erfahrung mit Versand?! on: December 06, 2011, 03:18:43 pm
Ich habe mir dort das Nokia 3310 Shield gekauft (in einer Bestellung)
und dann 2*Freeduino Nano (die günstigsten Breadboard Ardu-Clones incl FTDI-USB Chip).
Ich habe die dirket aus England musste auch kein Zoll zahlen.
Einfach Bestellt und nach 8-12Tagen hast du die Sachen.
Gruß
Daniel
748  International / Deutsch / Tausche MAXIM MAX127 gegen.... on: December 06, 2011, 02:07:06 pm
... z.B. ein Nokia 5110 bzw 3110 Display (am besten auf Paltine mit Pins).
Ich habe hier noch 1 absolut unbenutzten und auf Verwendung wartenden MAX 127.
I2C ADC 12Bit 8 Kanäle (wählbare Analog Reference).
http://pdfserv.maxim-ic.com/en/ds/MAX127-MAX128B.pdf
 
 
Also wer Interesse hat gerne melden.
Gruß
Daniel
749  International / Deutsch / Re: Timing Problem ! on: December 06, 2011, 01:33:10 pm
Du hast kein Timing Problem sondern du sagst deinem Controller immer das er an einer bestimmten stelle Warten soll (delay) iohne das es in dieser Zeit irgendwas machen kann.

Code:
 if(millis() - millis2 > gatepoti_read) {
       millis1 = millis();  
    digitalWrite(15, HIGH);
  }
if(millis() - millis1 > Clock_Delay) {
       millis2= millis();  
    digitalWrite(15, LOW);
  }


So etwas in der Richtung.

Gruß Daniel
750  International / Deutsch / Re: mit welcher Software sind diese Schaltpläne gezeichnet? on: December 04, 2011, 03:54:34 pm
Aus meiner Erfahrung würde ich sagen. Lieber etwas Arbeit auf sich nehmen und dann direkt mir Eagel oder Target3001! nfangen (zunächst mit der Freeware) und dann evtl. bei der Bucht was schießen oder halt kaufen. Wenn man später etwas "höher" hinaus will ist man bei Fritzing aufgrund der extrem kleinen Bibliotheken schnell am Ende .

Gruß
Daniel
Pages: 1 ... 48 49 [50] 51 52 ... 76