- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 14

Thema: Motor macht was er will

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2011
    Beiträge
    158
    "Der Motor verändert seine Geschwindigkeit durch meine Körperbewegungen oder wenn ich den motor im Raum bewege."

    Cool, Du kannst damit Signale von Ausserirdischen empfangen. Oder auch die Aura Deines Koerpers messen.. sehr esoterisch!

    Ne, im Ernst: Da liegt ein undefiniertes Signal an und der Eingang reagiert auf minimalste Schwankungen von wasweissichwas.
    Der Fehler liegt wohl am PINC, wie es schon Hubert geschreiben hat.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2012
    Beiträge
    15
    Zitat Zitat von Calis007 Beitrag anzeigen
    "Der Motor verändert seine Geschwindigkeit durch meine Körperbewegungen oder wenn ich den motor im Raum bewege."

    Cool, Du kannst damit Signale von Ausserirdischen empfangen. Oder auch die Aura Deines Koerpers messen.. sehr esoterisch!
    Ich war auch schon begeistert.^^
    ich konnte durch meine Handbewegung die Geschwindigkeit des Motors analog steuern.

    Mfg Ralf

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2011
    Beiträge
    158
    Und? Fehler schon gefunden? Ansonsten: Wie sieht das Programm nun aus? Verkabelung noch in Ordnung?

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ich weiß nicht wo der Motor drauf ist, aber PB5 ist immer low.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2012
    Beiträge
    15
    Hallo,

    ich hab den Fehler gefunden. Und zwar bin ich es gewohnt (SPS), dass 12V am Eingang anliegen müssen, damit dieser high meldet. und somit habe ich den Port anschluss über den Taster mit 5V verbunden, damit ich bei geschlossenem Taster 5V am Port an liegen habe (wie bei ner SPS).
    Ich hab jetzt durch messen herausgefunden, dass ich wenn ich den Eingang definier, 5V an Port anliegen habe. Jetzt habe ich den Taster zwischen Ground und Port gehängt und es geht wie gewünscht.

    Kann mir einer sagen warum das beim Mikrokontroller so ist?


    MfG und Danke

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2011
    Beiträge
    158
    Hmm.. im IF, das
    PORTD |= (1<< PD3); //auf high setzen
    passiert auch nur einmal und wird nie rueckgesetzt.. hat damit vermutlich nichts zu tun, sieht aber auch sonderbar aus, sollte wohl ein PB3 sein, oder?

    5V ist eigentlich ueblich hier, oder auch nur 3.3V.

    siehe auch gaengige Logikpegel:
    http://de.wikipedia.org/wiki/Logikpegel
    Geändert von Calis007 (20.01.2012 um 10:18 Uhr)

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wenn du einen Port als Eingang definierst, ist dieser erst mal hochohmig. Dann kannst du den internen PullUp aktivieren.
    Damit ist dieser Port bei der Abfrage if(Pin....) auf high. Ein Taster macht dann nur Sinn wenn er auf GND schaltet.
    Wenn du es umgekehrt haben willst geht das natürlich auch. Es ist dann ein externer PullDown notwendig und die Taste nach +5V.
    Der interne PullUp darf dann nicht aktiviert werden.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2012
    Beiträge
    15
    Zitat Zitat von Calis007 Beitrag anzeigen
    Hmm.. im IF, das
    PORTD |= (1<< PD3); //auf high setzen
    passiert auch nur einmal und wird nie rueckgesetzt.. hat damit vermutlich nichts zu tun, sieht aber auch sonderbar aus, sollte wohl ein PB3 sein, oder?

    5V ist eigentlich ueblich hier, oder auch nur 3.3V.

    siehe auch gaengige Logikpegel:
    http://de.wikipedia.org/wiki/Logikpegel
    hab ich auch grad gelesen^^

    jetzt funktionierts.

    #include <avr/io.h>

    int main (void)

    {
    while (1)
    {
    DDRC &= ~(1<< PC1); //PortC Pin2 als Eingang definieren
    PORTC |= (1<< PC1); //PortC Pin2 Pullup aktivieren

    if (!(PINC & (1<<PINC1))) //Läuft bei Taster geschlossen los
    {
    DDRB |= (1<< PB0); //als Ausgang definieren
    PORTB |= (1<< PB0); //auf high setzen
    DDRB |= (1<< PB5); //als Ausgang definieren
    // PORTB |= (1<< PB5); //auf high setzen
    PORTB &= ~(1<< PB5); //auf low setzen
    DDRD |= (1<< PD3); //als Ausgang definieren (Motor enable)
    PORTD |= (1<< PD3); //auf high setzen (Motor enable)
    }
    else
    {
    DDRB |= (1<< PB0) | (1<< PB5);
    PORTB &= ~(1<< PB0) |(1<< PB5);
    DDRD |= (1<< PD3);
    PORTD &= (1<< PD3);
    }

    }

    return 0;
    }


    Aber wo ich grad dran bin. Kann mir einer sagen wie das mit ner PWM aussehen muss?

    Danke
    mfg

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Für die PWM musst du dich mit Timer auseinander setzen.
    Dein Programm ist allerdings sehr unübersichtlich. Wenn es mal länger wird, kennst du dich sicher nicht mehr aus.

    Code:
    #include <avr/io.h>
    
    int main (void)
    DDRC &= ~(1<< PC1);				//PortC Pin2 als Eingang definieren
    PORTC |= (1<< PC1);				//PortC Pin2 Pullup aktivieren
    DDRB |= (1<< PB0);				//als Ausgang definieren
    DDRB |= (1<< PB5);				//als Ausgang definieren
    DDRD |= (1<< PD3);				//als Ausgang definieren (Motor enable)
    
    {
    while (1)
    	{
    	
    	if (!(PINC & (1<<PINC1)))				//Läuft bei Taster geschlossen los
    		{
    		
    		PORTB |= (1<< PB0);			//auf high setzen
    		
    //		PORTB |= (1<< PB5);			//auf high setzen
    		PORTB &= ~(1<< PB5);			//auf low setzen
    		
    		PORTD |= (1<< PD3);			//auf high setzen (Motor enable)
    		}
    	else
    		{
    		
    		PORTB &= ~(1<< PB0) |(1<< PB5);
    		
    		PORTD &= (1<< PD3);
    		}
    
    	}
    
    return 0;
    }
    Jetzt hast du es übersichtlicher was du setzt und rücksetzt, PB5 ist hier immer low.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Ähnliche Themen

  1. Asuro macht was er will
    Von Autsch20 im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 05.12.2009, 16:42
  2. Wie macht man das ordentlich?
    Von Biometriker im Forum Elektronik
    Antworten: 23
    Letzter Beitrag: 18.01.2008, 16:57
  3. AAtiny15 macht was er will
    Von rogerberglen im Forum Assembler-Programmierung
    Antworten: 12
    Letzter Beitrag: 21.08.2007, 16:16
  4. Debugging - Wie macht Ihr das??
    Von dl1akp im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 29.09.2006, 18:52
  5. Selbsttest - Motor macht was er will
    Von Registrar im Forum Asuro
    Antworten: 19
    Letzter Beitrag: 26.07.2006, 22:42

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress