Show Posts
Pages: 1 2 [3] 4 5 ... 9
31  International / Deutsch / Mini Segway mit Arduino + Servos on: October 09, 2013, 12:46:34 pm
Hi!

Ich möchte mal probieren, einen mini Segway zu bauen.

Habe mir daher einen MPU-6050 Giro mit Accelerometer bestellt.

Als Motoren wollte ich einfach ein paar Modellbauservos nehmen, die ich so umbaue, dass sie kontinuierlich drehen können.
Dadurch würde ich mir das Motorshield sparen. 2 Getriebemotoren sind auch teurer als 2 Servos.

Ihr merkt schon - alles Ultra Low Budget  smiley-mr-green

Ich weiß, es gab schon 100 Segway-threads, aber ich habe keinen gefunden, wo Modellbauservos umgebaut und als Antriebe verwendet wurden. Ist jemandem was bekannt?

Gruß
Morris
32  International / Deutsch / Re: Millis funktioniert nicht on: September 25, 2013, 05:43:38 am
Nein - das Programm, was ich hier gepostet habe, ist 1zu1 das, was auf dem Arduino drauf ist.

Eventuell ein Defekt am Board?
33  International / Deutsch / Re: Millis funktioniert nicht on: September 25, 2013, 04:06:04 am
Die etwas unglückliche Stellung des Kommentars
Code:
//Hilfsfunktionen---------------------------------------------------------------------------------------------
lässt mich raten, dass bei dir im Originalcode die geschweiften Klammern anders sitzen ???

Ne - passt so. Der Kommentar müsste hinter die geschweifte Klammer, aber das tut ja zum Programmablauf nichts zur Sache.

Ich verstehe dein Problem so, dass die Serial.println - Ausgabe nicht alle 2 Sekunden, sondern erheblich häufiger ( "dauerhaft" ) kommt
Korrekt
34  International / Deutsch / Re: Millis funktioniert nicht on: September 25, 2013, 03:31:32 am
Komisch - an dem klappts nicht  smiley-fat
35  International / Deutsch / Millis funktioniert nicht on: September 25, 2013, 02:24:40 am
Hallo!

Hier erst mal der Code:

Code:
#include <math.h>

 
//Variablen deklarieren---------------------------------------------------------------------------------------------
 
long int Impuls=0;                  //Zählt die Anzahl der steigenden Flanken zur Messung der Drehzahl
long vorherigeMillisekunden = 0;    //Millisekunden - Variable für Drehzahl
long int Intervall = 2000;               //Zeit zwischen Drehzahl
int Drehzahl;                       //Drehzahlvar.
 

//Setup---------------------------------------------------------------------------------------------

void setup()
{  
  
    attachInterrupt(0, Impulszaehler, RISING);  //Wenn an Interrupt 0 (I/0 Eingang 2) steigende Flanke, dann Hilffunktion "Impulszaehler" ausführen
    Serial.begin(9600);    //Serielle Ausgabe initialisieren
}


//Hauptprogramm---------------------------------------------------------------------------------------------

    void loop()
{
  
   unsigned long derzeitigeMillisekunden = millis();
  
   if(derzeitigeMillisekunden - vorherigeMillisekunden >= Intervall) {          //Wenn der Millisekundenzähler - vorherige Millisekunden >= Intervall
    vorherigeMillisekunden = derzeitigeMillisekunden;                          
    Drehzahl = (Impuls/3)*60;                                                   //Drehzahl = (Impulse/2 Sek) * (60s/1min) * (1 Umdrehung / 3 Impulse)
   Serial.println(Drehzahl);
    Impuls=0;                                                                   //Impuls auf 0 setzen
    }
  
//Hilfsfunktionen---------------------------------------------------------------------------------------------
  
}
 
void Impulszaehler(){      //Hilfsfunktion Impulszählen bei steigender Flanke
  Impuls++;                //Variable Impuls inkrementieren    
}

Gemessen wird mit einem induktiven Sensor eine Drehzahl. Pro Umdrehung gibt es 3 Impulse.
Eigentlich müsste die Drehzahl doch auf Grund der millis-Funktion nur alle 2 Sek ausgegeben werden, richtig?
Die Ausgabe kommt aber dauerhaft!

Wo sitzt der Fehler?

Gruß
Morris
36  International / Deutsch / Re: exakte Temperaturmessung on: August 10, 2013, 11:30:29 am
2 NTC's kommen in einen Kühlkreislauf.
Einer vor und einer hinten den Kühler.

Durch die Temperaturdifferenz und den Volumenstrom kann somit die abgegebene Wärme berechnet werden.

Wenn aber schon im Ruhezustand (Pumpe aus) eine Differenz erfasst wird, kann ja irgendwas nicht stimmen.
Die Temperaturwerte springen halt beide um einen Wert mit einer Abweichung von 0,1 grad.

Die Genauigkeit benötige ich für eine exakte Berechnung der abgegebenen Wärme.

Ist es vielleicht sinnvoller, andere NTC's zu verwenden? Oder andere Festwiderstände?
Um so eine höhere Genauigkeit zu erhalten -> eine höhere Spannungsänderung bei geringerer Temperaturdifferenz.

37  International / Deutsch / Re: exakte Temperaturmessung on: August 10, 2013, 10:42:22 am
Die Analogeingänge vom Arduino sollten doch so genau sein, oder täusche ich mich da?

Der Widerstand ändert sich bei 0,1°C ja nicht soooo wenig. Immerhin hat der Arduino ja eine Auflösung von 5/100 V - das sollte ja reichen (5V entsprechen 1023, 5/1023=0,0048..). Sind ja schon immerhin 10bit (2^10).

Da frage ich mich eher, ob die Spannung aus dem 5V Ausgang auch so genau passt.

Die Idee mit den Kondensatoren hatte ich auch schon. Nur glätten die doch eigentlich die Messung (also machen quasi das, was ich mit meinen 100Messungen + Durchschnitt bilden mache) und machen sie nicht genauer, oder?
38  International / Deutsch / Re: exakte Temperaturmessung on: August 10, 2013, 10:30:48 am
nein - nichts
ganz normal den spannungsteiler aufgebaut

kann das an den bauteiltoleranzen liegen?
39  International / Deutsch / exakte Temperaturmessung on: August 10, 2013, 10:20:05 am
Hallo!

Ich möchte im Bereich zwischen 18 und 30°C eine exakte Temperaturmessung durchführen.
Eine Genauigkeit auf 1/10 °C würde genügen.

Zur Zeit verwende ich einen Spannungsteiler aus 10k Festwiderstand und 10k NTC.
Wenn ich jedoch 2 dieser Spannungsteiler direkt neben einander aufbaue, sind die Temperaturen trotzdem teilweise unterschiedlich!

Um Messfehler etwas zu kompensieren, bilde ich zur Zeit den Durchschnitt auf 100 Einzelmessungen.

Welche Alternativen gibt es?

Gruß
Morris
40  International / Deutsch / Integerwerte trotz float definition on: August 06, 2013, 11:41:41 am
Hi!

Ich habe ein kleines Problem bei einem Sketch.
Und zwar zähle ich die Impulse per Interrupt.
Bei jeder steigenden Flanke wird eine Variable inkrementiert.
Mit der Funktion Millis wird nach 2 Sekunden geschaut, wie viele Impulse in den 2 Sekunden gezählt wurden, damit wird ein Wert (Durchfluss) berechnet und die Impulse werden auf 0 gesetzt -> für die nächsten 2 Sekunden Messung.

Trotzdem erhalte ich als Ergebnis der Durchflussberechnung keine Kommawerte, sondern abgerundete Werte.

Da der Durchflusssensor 450 Impulse / Liter ausgibt und 2 Sekunden lang die Impulse gezählt werden, ist die Berechnung wie folgt:
Quote
Durchfluss in l/min = (Impulse / 2 Sekunden) * (60 Sekunden / 1Minute) * (1 Liter / 450 Impulse)
kurz:
Code:
Durchfluss = Impulse * 30 /450

Hier der ganze Programmcode:
Code:
#include <math.h>              
#include <Wire.h>                
#include <LiquidCrystal_I2C.h>  

LiquidCrystal_I2C lcd(0x27,20,4);  

long int Impuls=0.0;  //Zählt die Anzahl der steigenden Flanken zur Messung der Durchflussmenge
float Durchfluss;     //Variable Durchfluss
long vorherigeMillisekunden = 0;     //Millisekunden
long Intervall = 2000;               //Zeit zwischen Durchflussmessung


void setup()    
{  
    attachInterrupt(0, Impulszaehler, RISING);  
    lcd.init();            
    lcd.backlight();      
    Wire.begin();          
    Serial.begin(9600);  
  
}

void loop(){
    unsigned long derzeitigeMillisekunden = millis();
    
    if(derzeitigeMillisekunden - vorherigeMillisekunden >= Intervall) {   //Wenn der Millisekundenzähler - vorherige Millisekunden > Intervall
        vorherigeMillisekunden = derzeitigeMillisekunden;                 //vorherige Millisekunden = derzeitige Millisekunden setzen
        Durchfluss = Impuls * 30 / 450;          //Anzahl der Impulse in 2 Sekunden * 60 Sekunden / 450Impulse/liter
        Serial.println(Durchfluss);
Serial.println(Impuls);
Serial.println("------");

        Impuls=0;                                                         //Impuls auf 0 setzen
    }
      
      lcd.setCursor(0,2);                 //Cursor auf 0,2
      lcd.print("Durchfluss:");           //"Durchfluss" schreiben
      lcd.setCursor(12,2);                //Cursor auf 12,2
      lcd.print (Durchfluss);             //Durchflussmenge anzeigen in l/min
      lcd.setCursor(15,2);                //Cursor auf 15,2
      lcd.print("l/min");                 //"l/min" hinter Wert schreiben
    
      delay(1000);
  }
  
  

  
void Impulszaehler(){      //Hilfsfunktion Impulszählen bei steigender Flanke
  Impuls++;                //Variable Impuls inkrementieren    
}

Bei der Konfiguration steht im seriellen Fenster:
Quote
0.00
7
------
Eigentlich müsste man bei 7 Impulsen ja die Zahl 0,6666 erhalten und nicht 0.

Wenn ich statt "Impuls" in der Durchflussrechnung die Zahl 100 schreibe, müsste ja auf jeden Fall 6.66 raus kommen.
Angezeigt wird 6:
Quote
6.00
7
------

Woran kann das liegen?

Gruß
Morris
41  International / Deutsch / Re: Relais flackert während Programmierung on: July 24, 2013, 04:27:40 am
Danke!!
42  International / Deutsch / Re: Relais flackert während Programmierung on: July 19, 2013, 09:48:40 am
Ok - wie beseitige ich das?
43  International / Deutsch / Relais flackert während Programmierung on: July 19, 2013, 09:25:50 am
Hallo!

Habe so ein Relais:
http://www.ebay.de/itm/270935013107?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Bei der Programmierung zieht das Relais schnell an und löst wieder.

Woran liegt das?

Gruß
Morris
44  International / Deutsch / Re: Arduino Digitaleingang schützen? on: July 14, 2013, 09:57:40 am
Danke Dir!
45  International / Deutsch / Arduino Digitaleingang schützen? on: July 14, 2013, 09:36:10 am
Hi!

Ich möchte den Arduino an einem Motorrad betreiben.
An den I/0 Eingängen werden die PullUp-Widerstände geschaltet und einer der ersten 7 Eingänge ist zwangsläufig mit der Masse verbunden.

Wenn ich das Motorrad starte, zieht sich der Anlasser ja über den Rahmen, von der Batterie, die Masse.
Gleichzeitig hängt das Getriebe aber auch an einem der besagten Eingänge.

Kann es also passieren, dass ein Teil des Stroms statt über den Rahmen, über einen der Eingänge fließt?
Oder muss ich mir da keine Sorgen machen, weil die Eingänge im Arduino ja gar nicht mit der Masse verbunden sind?
Oder sollte ich Dioden setzen?

Gruß
Morris
Pages: 1 2 [3] 4 5 ... 9