INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 2 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Motorsteuerung mit Mosfet
08.12.2014, 11:43
Beitrag #9
RE: Motorsteuerung mit Mosfet
(08.12.2014 10:32)einserbeamer schrieb:  Ich den Taster wie folgt angeschlossen:

5V --> Taster --> 10K prallel zu Pin 2.

Naja wie gesagt ich hab ja kein Problem mit dem Taster, da ich ohne Last durchschalten kann. Oder meint ihr kann das Auswirkungen auf den Taster haben?
Das ist sehr seltsam... Du hast die internen Pullups aktiviert und auch den Taster gegen 5V geschaltet. D.h. eigentlich müsste der Pin immer auf HIGH sein, egal ob Taste gedrückt oder nicht.
Was meinst Du mit "10k parallel zu Pin 2"? Ist der Widerstand in Serie mit dem Taster oder echt parallel???
Im Prinzip können irgendwelche geschaltete Lasten schon einen Einfluss auf Eingänge haben, insbesondere, wenn sie nicht ganz richtig beschaltet sind.
Probier mal folgendes aus:
Ersetze das:
Code:
pinMode(buttonPin1, INPUT);
digitalWrite(buttonPin1, HIGH);
durch das:
Code:
pinMode(buttonPin1, INPUT_PULLUP);
...und schließe den Taster so an:
GND --> Taster --> Pin 2.
Also ohne Widerstand direkt den Taster zwischen GND und Pin2.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2014, 13:22
Beitrag #10
RE: Motorsteuerung mit Mosfet
(08.12.2014 11:43)Thorsten Pferdekämper schrieb:  
(08.12.2014 10:32)einserbeamer schrieb:  Ich den Taster wie folgt angeschlossen:

5V --> Taster --> 10K prallel zu Pin 2.

Naja wie gesagt ich hab ja kein Problem mit dem Taster, da ich ohne Last durchschalten kann. Oder meint ihr kann das Auswirkungen auf den Taster haben?
Das ist sehr seltsam... Du hast die internen Pullups aktiviert und auch den Taster gegen 5V geschaltet. D.h. eigentlich müsste der Pin immer auf HIGH sein, egal ob Taste gedrückt oder nicht.
Was meinst Du mit "10k parallel zu Pin 2"? Ist der Widerstand in Serie mit dem Taster oder echt parallel???
Im Prinzip können irgendwelche geschaltete Lasten schon einen Einfluss auf Eingänge haben, insbesondere, wenn sie nicht ganz richtig beschaltet sind.
Probier mal folgendes aus:
Ersetze das:
Code:
pinMode(buttonPin1, INPUT);
digitalWrite(buttonPin1, HIGH);
durch das:
Code:
pinMode(buttonPin1, INPUT_PULLUP);
...und schließe den Taster so an:
GND --> Taster --> Pin 2.
Also ohne Widerstand direkt den Taster zwischen GND und Pin2.
Gruß,
Thorsten

wobei noch nicht die Situation von dem Widerstand paralell zum Port 2 geklärt ist. Liegt der nun zwischen Port 2 und GND oder hängt der an +5V ???
Wobei bei letzterem sich eigentlich gar nichts tun dürfte....

Also so wie Thorsten das beschreibt mit internem Pullup und Taster gegen GND ist die praktikabelste und einfachste Methode einen Taster mit einem ATmega/Arduino abzufragen.

Zu der Bounce2.lib, also ich hatte bislang die nicht eingesetzt aber nur einbinden ohne sie aufzurufen tut auf jeden Fall nicht. Da mußt du mal nach Beispielen suchen.

Ach du liebes Lieschen, diese Libs haben es in sich, hier mal 3 Links dazu:
http://playground.arduino.cc/Code/Debounce
http://playground.arduino.cc/Code/Bounce
http://forum.arduino.cc/index.php?topic=266132.0
also da streike ich dann auch und gehe lieber auf das Beispiel in der IDE zurück wo man dann weiß was man tut.
Arduino IDE Datei - Beispiele - Digital - Debounce
Da ist alles in EInzelschritten nachvollziehbar und das würde ich an der Stelle jeder Library vorziehen.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2014, 15:42
Beitrag #11
RE: Motorsteuerung mit Mosfet
Hi,
das kann natürlich auch sein, dass der Taster einfach prellt (ja, mir sieht es auch so aus, als ob das Debouncing gar nicht verwendet wird).
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2014, 22:50
Beitrag #12
RE: Motorsteuerung mit Mosfet
Guten Abend,

ich habe mich nochmal an das Programm gesetzt, da ich ein Beispiel Programm mit PWM geladen hatte und dies einwandfrei funktionierte, musste es am Code liegen.

Zum Thema Pullup-Widerstand:

Es ist richtig, dass der Schaltungsaufwand dadurch geringer/einfacher wird, allerdings ist zu beachten, dass sich auch die Logik ändert. (invertierte Logik).

Hier mein Code für alle die Interesse haben so ein ähnliches Projekt aufzubauen.

Liebe Grüße



Code:
#include <OneButton.h>
int buttonPin1 = A0;
int i=0;
int button1State = 1;
const int LED0 = 13;
const int LED1 = 12;
const int LED2 = 11;
const int LED3 = 10;
int Motor = 9;
OneButton button1 = OneButton(buttonPin1, true);



/**********************************************************/  


void Langsam()
  {
     analogWrite(Motor, 75);
     digitalWrite(LED0, HIGH);  //Anzeige Programm 0
     digitalWrite(LED1, LOW);   //Anzeige Programm 1
     digitalWrite(LED2, LOW);   //Anzeige Programm 2
     digitalWrite(LED3, LOW);   //Anzeige Programm 3
  }
  
void Mittel()
  {
     analogWrite(Motor, 128);
     digitalWrite(LED0, HIGH);  //Anzeige Programm 0
     digitalWrite(LED1, HIGH);   //Anzeige Programm 1
     digitalWrite(LED2, LOW);   //Anzeige Programm 2
     digitalWrite(LED3, LOW);   //Anzeige Programm 3    
    
  }
  
void Schnell()
  {
     analogWrite(Motor, 255);
     digitalWrite(LED0, HIGH);  //Anzeige Programm 0
     digitalWrite(LED1, HIGH);   //Anzeige Programm 1
     digitalWrite(LED2, HIGH);   //Anzeige Programm 2
     digitalWrite(LED3, LOW);   //Anzeige Programm 3
  }
void Stop()
  {
     analogWrite(Motor, LOW);
     digitalWrite(LED0, LOW);  //Anzeige Programm 0
     digitalWrite(LED1, LOW);   //Anzeige Programm 1
     digitalWrite(LED2, LOW);   //Anzeige Programm 2
     digitalWrite(LED3, LOW);   //Anzeige Programm 3
  }


/********************************************************************/

void setup()
{
  Serial.begin(9600);
  while(!Serial); // nur bei Leonardo nötig
  Serial.println("Programm start");

  
  button1.attachClick(ein_Klick);
  button1.attachDoubleClick(doppel_Klick);
  button1.attachPress(halten);
  button1.setPressTicks(2000); //3 Sekunden

  pinMode(LED0, OUTPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
}
void ein_Klick()
{
  Serial.println("Ein Klick");
  i++;
  Serial.println(i);
}
void doppel_Klick()
{
  Serial.println("DoppelKlick");
  i++;
  Serial.println(i);
}
void halten()
{
  Serial.println("gehalten");
  i=0;
  Serial.println(i);
}


void loop()
{
  
  button1.tick();
  delay(2);
  
  if (i > 3 )
  {
    i = 0;
  }
  
    switch (i)
        {
  
         case 0:                    //Start
         Stop();
         break;  
      
         case 1:                    //Motor langsam
         Langsam();
         break;
      
         case 2:                    //Motor mittel
         Mittel();
         break;
      
         case 3:                    //Motor schnell
         Schnell();
         break;
        
         case 4:
         Stop();
         break;
        
        }
  

  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.12.2014, 23:09
Beitrag #13
RE: Motorsteuerung mit Mosfet
Wenn das Programm ohne die Last funktioniert-also die LEDs durchgeschaltet werden, würde ich (ohne testen) behaupten das Problem liegt nicht im Programm...

Wie bekommen denn Motor und Arduino die Stromversorgung? Es könnte helfen den Arduino über eine Diode und einen kleinen Elko vom Motorstromkreis zu entkoppeln...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.12.2014, 11:00
Beitrag #14
RE: Motorsteuerung mit Mosfet
(08.12.2014 22:50)einserbeamer schrieb:  ich habe mich nochmal an das Programm gesetzt, da ich ein Beispiel Programm mit PWM geladen hatte und dies einwandfrei funktionierte, musste es am Code liegen.
Funktioniert es jetzt oder gibt's immer noch ein Problem?

Zitat:Zum Thema Pullup-Widerstand:
Es ist richtig, dass der Schaltungsaufwand dadurch geringer/einfacher wird, allerdings ist zu beachten, dass sich auch die Logik ändert. (invertierte Logik).
Ja, normalerweise ein Zeichen mehr im Coding...

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Motorsteuerung mit Schautzschtung aggro600 2 2.115 05.05.2015 20:04
Letzter Beitrag: aggro600
  Abwärtsregler mit Arduino und Mosfet D.T.Schneiderlein 3 2.127 13.09.2014 17:26
Letzter Beitrag: D.T.Schneiderlein

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste