Show Posts
Pages: 1 2 [3] 4 5 ... 9
31  International / Deutsch / Re: IDE 1.0 unter Ubuntu Fehlermeldungen on: February 16, 2013, 07:51:04 pm
Hi

nur kann ich die nicht installieren . Bin halt in Linux noch Anfänger.
So installiere ich die IDE immer unter der Ubuntu Softwareverwaltung und da wird nur die Version 1.0 angeboten aber jetzt klappst ja .

Danke noch für alle Hilfe
32  International / Deutsch / Re: IDE 1.0 unter Ubuntu Fehlermeldungen on: February 16, 2013, 06:43:18 pm
Wow super
das Lib-Ubdate hat geholfen


Besten Dank Für die Hilfe
33  International / Deutsch / Re: IDE 1.0 unter Ubuntu Fehlermeldungen on: February 16, 2013, 06:35:18 pm
Geht das denn bei Ubuntu ( die 1.0 IDE ist meines Wissen die aktuellste die für Linux erhältlich ist )
Di Lib werde ich aktualisieren.
34  International / Deutsch / Re: Anfänger Braucht hilfe mit Reedsensor! on: February 16, 2013, 06:28:26 pm
Hi

da die Mopedzündungen oft nur einen festen Zündzeitpunkt haben wäre , ein Zündzeitpunkt der nur aufgrund der Drehzahl verändert wird, auf jeden Fall ein Fortschritt.
Ichhabe mir da auch schon einige Gedanken gemacht denn eine Zündung für Modellmotoren wollte ich mal bauen.
Es ist aber nicht so einfach den Zündzeitpunkt zu berechnen.
denn man kann den Zündimpuls nicht nur um eine bestimmte Zeit verzögern denn wenn sich die Drehzahl verändert dann verändert sich auch der zeitliche Abstand zwischen den Zündungen.
Ist dann die Zeitverzögerung konstant dann wandert der Zündzeitpunkt z.B. bei steigender Drehzahl nach spät und das wäre kontraproduktiv da ja eher eine frühzeitiger Zundzeitpunkt erforderlich wäre.
Ich habe mir da folgendes ausgedacht.
- Der Controller misst die Dauer einer Umdrehung
- er unterteilt dann jede Umdrehung in z.B. 36 gleiche Zeitabschnitte
- mittels der Drehzahl errechnet er die erforderliche Vorzündung
- diese Zeit fügt er dem nächsten Zündimpuls hinzu

Wie du siehst ist es nicht so einfach aber es ist durchaus machbar denke ich in diesem Link ist es auch beschrieben:http://www.sportdevices.com/ignition/ignition.htm

Ein Reedsensor ist eigentlich ungeeignet denn er unterliegt einem Verschleiß und bei den vielen Schaltungen wird er nicht lange durchhalten auch prellt dieser sowie hat auch Schaltverzögerungen die bei den Schaltgeschwindigkeiten wahrscheinlich schon sehr relevent sind.Außerdem ist die Schaltgeschwindigkeit und damit die maximale Drehzahl begrenzt
35  International / Deutsch / Re: DS18B20 als defekt erkennen on: February 16, 2013, 06:08:51 pm
Hallo

Danke für die Antwort.
Das hört sich interessant an. Doch leider reichen meine bescheidenen Kenntnisse noch nicht aus diese Befehlsfolge zu verstehen.
Kannst Du mir die Befehle näher beschreiben?
36  International / Deutsch / IDE 1.0 unter Ubuntu Fehlermeldungen on: February 16, 2013, 05:59:44 pm
Hallo

da ich mittlerweile fast nur noch Ubuntu nutze möchte ich auch die Arduino Programmierumgebung auch unter Linux nutzen.
Doch leider spuckt diese viele Fehlermeldungen aus unter Win funktioniert die Kompilierung.
Hier mal die Meldungen:

Code:
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:191:0,
                 from /usr/share/arduino/libraries/DS18S20/OneWire.cpp:66:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:116:83: error: declaration of C function ‘StringSumHelper& operator+(const StringSumHelper&, const char*)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:115:27: error: previous declaration ‘StringSumHelper& operator+(const StringSumHelper&, const String&)’ here
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:117:73: error: declaration of C function ‘StringSumHelper& operator+(const StringSumHelper&, char)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:116:27: error: previous declaration ‘StringSumHelper& operator+(const StringSumHelper&, const char*)’ here
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:118:84: error: declaration of C function ‘StringSumHelper& operator+(const StringSumHelper&, unsigned char)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:117:27: error: previous declaration ‘StringSumHelper& operator+(const StringSumHelper&, char)’ here
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:119:74: error: declaration of C function ‘StringSumHelper& operator+(const StringSumHelper&, int)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:118:27: error: previous declaration ‘StringSumHelper& operator+(const StringSumHelper&, unsigned char)’ here
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:120:83: error: declaration of C function ‘StringSumHelper& operator+(const StringSumHelper&, unsigned int)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:119:27: error: previous declaration ‘StringSumHelper& operator+(const StringSumHelper&, int)’ here
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:121:75: error: declaration of C function ‘StringSumHelper& operator+(const StringSumHelper&, long int)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:120:27: error: previous declaration ‘StringSumHelper& operator+(const StringSumHelper&, unsigned int)’ here
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:122:84: error: declaration of C function ‘StringSumHelper& operator+(const StringSumHelper&, long unsigned int)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:121:27: error: previous declaration ‘StringSumHelper& operator+(const StringSumHelper&, long int)’ here
In file included from /usr/share/arduino/libraries/DS18S20/OneWire.cpp:66:0:
/usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:195:33: error: declaration of C function ‘uint16_t makeWord(byte, byte)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:194:10: error: previous declaration ‘uint16_t makeWord(uint16_t)’ here
/usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:205:17: error: declaration of C function ‘long int random(long int)’ conflicts with
/usr/lib/gcc/avr/4.5.3/../../../avr/include/stdlib.h:504:13: error: previous declaration ‘long int random()’ here
/usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:206:23: error: declaration of C function ‘long int random(long int, long int)’ conflicts with
/usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:205:6: error: previous declaration ‘long int random(long int)’ here

Kann mir da jemand weiter helfen.
37  International / Deutsch / Re: MiniMover5 Versuchsprojekt on: February 16, 2013, 06:50:19 am
Hi

ich hab noch nie Schrittmotoren mittels Arduino angesteuert deshalb fehlt mir da die direkte Erfahrung aber was ich weiß müssen Schrittmotoren mittels einer Rampe beschleunigt und abgebremst werden ob das die Lib oder die Hardware erledigt oder das das Programm macht kann ich nicht sagen aber es sieht so aus als ob der Schrittmotor bei höheren Drehraten einige Schritte überspringt .
Dies ist das  Verhalten wenn keine Rampen verwendet werden.
Die maximale Drehzahl ist auch begrenzt und hängt auch von der Belastung und der Versorgungsspannung ab.
38  International / Deutsch / Re: DS18B20 als defekt erkennen on: February 11, 2013, 02:39:58 pm
Hi

jetzt komme ich endlich an den Sketch.

Code:
/*
  Differenztemperatursteuerung Sonnenkolektor mit 1XPT100 im Kollektor
                                                  1XDS18B20 im Speicher 1
                                                  1XDS18B20 im Speicher 2
*/

// Laden der Libary:
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// initialisieren der LCD Pins ( Für das Orginal Arduino-Pad )
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);


#define ONE_WIRE_BUS A3

///char buffer[20] = "";                                     // Speicherbereich für Datenkonvertierung

OneWire oneWire(ONE_WIRE_BUS);                            // Library für Datenleitung des Tempatursensors Dallas DS18xx
DallasTemperature sensors(&oneWire);


//die Variablen deklarieren

float tempK;
float tempS1;
float tempS2;
int tempPin1 = 1;
int Pumpe1 = 13;
int Pumpe2 = 12;
int SpeichertempPin1 = A3;        //Temperatur SpeichertempPin1 wird an Analogpin3 angeschlossen
int DifferenztemperaturS1 = 0;      //Hier nichts eingeben
int DifferenztemperaturS2 = 0;      //Hier nichts eingeben
int Schalttemperatur = 14;         //Hier die Schalttemperatur der Differenz Kolektor -> Speicher, bei der die Pumpe gestartet wird, eingeben
int SpeicherTempAusStufe1 = 50; //Hier schaltet die Ladund auf den anderen Speicher um
int SpeicherTempladebereit = 70;//Hier schaltet die Ladepumpe wieder ein
int SpeicherTempAusVoll = 75; //Hier schaltet die Ladung entgültig aus
int SpeicheTempVollwiederBereit =31; //Hier ist der Speiche wieder bereit für die Ladung Stufe 1
int SpeicherTempMax = 85;         //Hier die Maxtemperatur des Speichers, bei der die Pumpe ausgeschaltet wird und eine Fehlermeldung ausgegebeb wird ( muss quittiert werden ) eingeben
int KolektorTempMax = 130;        //Hier die Maxtemperatur des Kolektors, bei der die Pumpe ausgeschaltet wird  und eine Fehlermeldung ausgegebeb wird ( muss quittiert werden ) eingeben
int KolektorTempMaxHysterese = 2; //Hier die Hysterese der Ausschaltemperatur des Kolektors, bei der die Pumpe wieder eingeschaltet wird, eingeben
int SpeicherTempUnplausibel = 8; //Unter 8°C ist Meßwert im Speicher unplausibel
int FehlereldungSpeicher1MaxVariable = 0; //zum speichern des Fehlers auch wenn die Fehlerursache wieder verschwindet
int FehlereldungSpeicher2MaxVariable = 0; //zum speichern des Fehlers auch wenn die Fehlerursache wieder verschwindet
int FehlereldungSpeicher1UnplausibelVariable = 0; //zum speichern des Fehlers auch wenn die Fehlerursache wieder verschwindet
int FehlereldungSpeicher2UnplausibelVariable = 0; //zum speichern des Fehlers auch wenn die Fehlerursache wieder verschwindet
// Datendraht an Pin A3
#define ONE_WIRE_BUS A3


DeviceAddress SensorS1 = { 0x28, 0xB2, 0x4B, 0xA1, 0x03, 0x00, 0x00, 0x2C };


DeviceAddress SensorS2 = { 0x28, 0xF2, 0x75, 0xA1, 0x03, 0x00, 0x00, 0x7F };


[font=Verdana]hier oben sind die Zwei Sensoren die an einem Eingang hängen sie werden durch die Adresse identifiziert . Es müßte doch möglich sein über diese Adressen azufragen ob die Sensoren vorhanden sind[/font]



void setup(){
  
  byte addr[8];  
  Serial.begin(9600);
  sensors.begin();
  sensors.setResolution(SensorS1, 10);
  sensors.setResolution(SensorS2, 10);
  
  
  
  
  
  

  pinMode (Pumpe1, OUTPUT);
  pinMode (Pumpe2, OUTPUT);
}

void loop(){
  
  //Start Abfrage DS18B20
  sensors.requestTemperatures();
  
  //Temperaturen DS18B20 in Variable ablegen
  float tempS1 = sensors.getTempC(SensorS1); //zwischenspeichern in Variable tempZ1
  float tempS2 = sensors.getTempC(SensorS2); //zwischenspeichern in Variable tempZ2
  
  
  sensors.requestTemperatures();  
  
 
   lcd.begin(20, 4);//LCD hat 20 Zeichen und 4 Spalten
  
  
  
 
  
  // das Ergebnis ans Display senden
 
 
 
 
  
  if(DifferenztemperaturS1  > ( Schalttemperatur + 2 ) && tempS1 < SpeicherTempladebereit && tempK < KolektorTempMax - KolektorTempMaxHysterese) // Pumpe einschalten für Stufe1
  digitalWrite(Pumpe1, HIGH); // Pumpe wird eingeschaltet Pin 13
 
 if(DifferenztemperaturS1  > ( Schalttemperatur + 2 ) && tempS1 < SpeicheTempVollwiederBereit && tempK < KolektorTempMax - KolektorTempMaxHysterese) // Pumpe einschalten für Stufe1
  digitalWrite(Pumpe1, HIGH); // Pumpe wird eingeschaltet Pin 13
 
  if(DifferenztemperaturS1 < ( Schalttemperatur - 2 )  || FehlereldungSpeicher1MaxVariable == 1 || tempK > KolektorTempMax || tempS1 < SpeicherTempUnplausibel || tempS1 > SpeicherTempAusStufe1) // Pumpe abschalten
  digitalWrite(Pumpe1, LOW); // Pumpe wird ausgeschaltet Pin 13
  
  if(DifferenztemperaturS1 < ( Schalttemperatur - 2 )  || FehlereldungSpeicher1MaxVariable == 1 || tempK > KolektorTempMax || tempS1 < SpeicherTempUnplausibel || tempS1 > SpeicherTempAusVoll) // Pumpe abschalten
  digitalWrite(Pumpe1, LOW); // Pumpe wird ausgeschaltet Pin 13
  
  //Betriebsmeldung in Zeile 4
 lcd.setCursor(13, 1);
 if(tempS1 < SpeicherTempMax & FehlereldungSpeicher1MaxVariable == 0){ //wenn diese zwei Störungsmeldungen nicht anstehen werden die Betriebsmeldungen geschrieben
 lcd.setCursor (3,2);
 lcd.print(digitalRead(Pumpe1) == HIGH? "laden":"warten"); // Anzeige Beladen oder Standby
 lcd.setCursor (0, 2);
 lcd.write ("S1-");}
 if (tempS1 > SpeicherTempAusStufe1){ //Die Betriebsmeldung Speicher Stufe1 wird geschrieben
 lcd.write("Stufe1   ");}
  
 
  
  (DifferenztemperaturS1 = tempK - tempS1);
  (DifferenztemperaturS2 = tempK - tempS2);
  
  lcd.setCursor(0, 3);
  lcd.print("Diff=") ;
  if (DifferenztemperaturS1 > 0){    // Der Differenztemperaturwert wird nur geschrieben wenn er positiv ist
  lcd.setCursor(5, 3);
  lcd.print(DifferenztemperaturS1,1); // Die Differenztemperatur wird geschrieben
  lcd.print("K   ");}
  else
  lcd.setCursor(6, 3);
  lcd.print("<0");     //Wenn die Differenztemperatur negativ ist wird dies geschrieben
  
  
// Anzeige der Speichertemperatur und der Speicher1 Fehlermeldungen

lcd.setCursor(0, 1);
  lcd.print("S1=");
  lcd.setCursor(3, 1);
  lcd.print(tempS1,1);// Ausgabe des Variablen S1 Inhalt, die 1 sind die Anzahl der Stellen nach Komma
  lcd.write(0xD0 + 15); // das ° Zeichen wird geschrieben
  lcd.write("C");
 
 
  
 
  
  if(tempS2 < SpeicherTempMax & FehlereldungSpeicher1MaxVariable == 0){ //wenn diese zwei Störungsmeldungen nicht anstehen werden die Betriebsmeldungen geschrieben
 lcd.setCursor (11,2);
 lcd.write ("S2-");
 lcd.print(digitalRead(Pumpe2) == HIGH? "laden":"warten"); // Anzeige Beladen oder Standby
  }
 
 
  lcd.setCursor(0, 2);
  lcd.write("S1-");
if (tempS1 > SpeicherTempAusStufe1){ //Die Betriebsmeldung Speicher Stufe1 wird geschrieben
lcd.write("Stufe1");}
if (tempS1 > SpeicherTempAusVoll){ //Die Betriebsmeldung Speicher Voll wird geschrieben
lcd.write("Voll  ");}  
 if(tempS1 > SpeicherTempMax)(  // Die Fehlermeldung UebtmpSp wird geschrieben
 FehlereldungSpeicher1MaxVariable = 1);
  
 if (FehlereldungSpeicher1MaxVariable == 1){
 lcd.setCursor(0, 3);
 lcd.write("UebertempSp1");}
 
  lcd.setCursor(11, 3);
  lcd.print("Diff=") ;
  if (DifferenztemperaturS2 > 0){    // Der Differenztemperaturwert wird nur geschrieben wenn er positiv ist
  lcd.setCursor(16, 3);
  lcd.print(DifferenztemperaturS2,1); // Die Differenztemperatur wird geschrieben
  lcd.print("K");}
  else
  lcd.setCursor(17, 3);
  lcd.print("<0");     //Wenn die Differenztemperatur negativ ist wird dies geschrieben
 
 
 // Anzeige der Speichertemperatur und der Speicher2 Fehlermeldungen
 
  lcd.setCursor(11, 1);
  lcd.print("S2=");
  lcd.setCursor(14, 1);
  lcd.print(tempS2,1);// Ausgabe des Variablen S2 Inhalt, die 1 sind die Anzahl der Stellen nach Komma
  lcd.write(0xD0 + 15); // das ° Zeichen wird geschrieben
  lcd.write("C");
  
  
  //  Stufe1 Speicher1 wird bis zu 35°C geladen
   if(DifferenztemperaturS2 > ( Schalttemperatur + 3 ) && tempS2 < SpeicherTempladebereit  && tempK < KolektorTempMax - KolektorTempMaxHysterese && digitalRead(Pumpe1) == LOW && tempS2 < 35 ) // Pumpe einschalten
  digitalWrite(Pumpe2, HIGH); // Pumpe2 wird eingeschaltet füe Stufe1Pin 12

 if(DifferenztemperaturS2 < ( Schalttemperatur -2 )  || FehlereldungSpeicher2MaxVariable == 1 || tempK > KolektorTempMax || tempS2 < SpeicherTempUnplausibel || tempS2 > SpeicherTempMax || tempS2 > SpeicherTempAusStufe1 || digitalRead(Pumpe1) == HIGH || tempS2 > 30 ) // Pumpe abschalten
  digitalWrite(Pumpe2, LOW); // Pumpe2 wird ausgeschaltet für Stufe1 Pin 12

  
   if(DifferenztemperaturS2 > ( Schalttemperatur + 3 ) && tempS2 < SpeicherTempladebereit  && tempK < KolektorTempMax - KolektorTempMaxHysterese && digitalRead(Pumpe1) == LOW && tempS1 > SpeicherTempladebereit ) // Pumpe einschalten
  digitalWrite(Pumpe2, HIGH); // Pumpe2 wird eingeschaltet füe Stufe1Pin 12
  
  if(DifferenztemperaturS2 < ( Schalttemperatur -2 )  || FehlereldungSpeicher2MaxVariable == 1 || tempK > KolektorTempMax || tempS2 < SpeicherTempUnplausibel || tempS2 > SpeicherTempMax || tempS2 > SpeicherTempAusStufe1 || digitalRead(Pumpe1) == HIGH ) // Pumpe abschalten
  digitalWrite(Pumpe2, LOW); // Pumpe2 wird ausgeschaltet für Stufe1 Pin 12
  
  

ich habe den letzten Teil des Sketches weggelassen da er sonst zu groß ist.
Er ist auch ziemlich unübersichtlich aber ich bin gerade am überarbeiten.

39  International / Deutsch / Re: DS18B20 als defekt erkennen on: February 10, 2013, 04:48:08 pm
Es geht mir nicht darum die Daten auf jeden Fall zu erhalten sondern eine falsche Temperaturübermittlung und die daraus entstehenden fehlerhaften Programmschritte zu vermeiden.
40  International / Deutsch / Re: DS18B20 als defekt erkennen on: February 10, 2013, 04:35:56 pm
Ich verwende die 33-Draht Variante .Doch wenn mal die Versorgungsspannung ausfällt oder die Masseverbindung oder was auch möglich wäre ein defekter Sensor zieht die Datenleitung nach Masse oder Plus und schon funktioniert das mit der Redundanz auch nicht mehr.
Ich finde eine korrekte Redundanz sollte aus zwei möglichst getrennten Systemen bestehen.
41  International / Deutsch / Re: Li-ion Akku + ATtiny45 + Laser on: February 10, 2013, 04:20:42 pm
Hi

ja das stimmt die Spannung geht von 4,2V bei Volladung bis 3V bei voller Entladung.
Litium Akkuss sind auch sehr empfindlich was die Lade und Entladespannungen angeht. So n diese schaden wenn sie zu weit entladen werden und bei Überladung können sie sogar explodieren und brennen. Also nur über ein spezielles Ladegerät laden.
Was ich weiß sind die Laserdioden auch sehr empfindlich bei Überspannung. Bei dem Modul ist aber auch Elektronik dabei eventuell begrenzt diese ja den Diodenstrom.
42  International / Deutsch / Re: DS18B20 als defekt erkennen on: February 10, 2013, 04:10:58 pm
Hi

also das mit der Redundanz ist an sich keine schlechte Idee.Doch da muss ich a für jeden Messwert 2 Sensoren vorsehen da wird`s in den Themeraturmeßröhrchen ein wenig eng.
Außerdem muss dann der redundant Sensor über eine eigene Stomversorgung und auch einen separaten Dateneingang verfügen.

Leider kenne ich mich in der Programmierung noch nicht so gut aus.

Könnte mir da vielleicht jemand das ein wenig erklären.
bool validAddress(uint8_t*);

Lässt sich da nichts mit einer Art Adressabfrage machen.
Ich suche mal den Code und stelle ihn mal hier ein.
43  International / Deutsch / Re: DS18B20 als defekt erkennen on: February 10, 2013, 10:57:44 am
Wenn eine Leitung des Sensors fehlt, dann fehlt er auch bei der Adressabfrage in der Lib. Du musst natürlich regelmäßig die Anzahl der Sensoren und deren Adressen über die Lib abfragen.
Genau sowas schwebt mir vor doch wie wird sowas gemacht?
44  International / Deutsch / Re: DS18B20 als defekt erkennen on: February 10, 2013, 08:33:26 am
Hi
Danke für die promte Antwort.
Das mit der Redundanz verstehe ich jetzt nicht.
Zur Zeit frage ich die Temperatur der Sensoren unter 8°C sind. Wenn ja dann wird der Sensor als defekt deklariert.
Dies funktioniert aber nur wenn vom Sensor keine Daten kommen wenn z.B. die + Leitung eines Sensors fehlt dann wir 85°C angezeigt und in Diesem Fall wird der Sensor nicht als defekt deklariert.
45  International / Deutsch / DS18B20 als defekt erkennen on: February 10, 2013, 07:43:38 am
Hallo zusammen

ich verwende in meiner Solaranlagensteuerung zwei DS18B20 Temperatursensoren die an einem Eingang hängen .
Als Defekterkennung habe ich bis jetzt ,die Abfrage ob die Temperatur unter einen bestimten Wert gesunken ist, verwendet.
Aber es gibt auch Situationen bei denen die Temperatur dann bei 85°C ligt. Da funktioniert die Plausibilitätsabfrage nicht .

Gibt es da ein eleganteren Weg um die korrekte Funktion der Sensoren zu überprüfen?
Pages: 1 2 [3] 4 5 ... 9