- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: Stoppuhr mit laserlichtschranke

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    https://www.roboternetz.de/community...z-von-2m/page4

    Vielleicht hast du das selbe Problem wie ich? Mein Code ist aber anders ich schick ihn dir gerne mal zu bzw. kann ihn posten. Ich hab ihn beim µController.net geklaut.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    20.12.2009
    Beiträge
    86
    Ja bitte, ich denke das es ein Programmfehler ist, denn laut Oszi liegen am µC bei low 100mV und bei high gute 5V an, wenn die Taster gedrückt werden. Anfangs dachte ich dass ich vieleicht die Pull-Up Widerstände zu hoch dimensioniert haben, aber laut Oszi kommt das Signal an. Anders: wenn ich den Interrupt direkt ausgeben lasse, wird dieser oft nicht registriert. Nun weiß ich nicht ob das ein HW-oder SW Problem ist...

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo!

    Zitat Zitat von Koertis Beitrag anzeigen
    Nun weiß ich nicht ob das ein HW-oder SW Problem ist...
    Das sollte bei 5 cm (anstatt 5 m) langen Leitungen zum Taster, ohne Oszi, feststellbar sein.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    20.12.2009
    Beiträge
    86
    Wenn ich die kontakte nach 3cm auf Masse ziehe funktioniert alles Problemlos. Also liegt der Fehler doch in der HW. Hat jemand eine Idee was fehlen könnte? ich habe einen Pull up von 10k ohm. Wie weit sollte ich diesen verringern? sofern das das problem ist?

  5. #5
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Ich verwende folgenden Code und nen mega32 dafür:

    Code:
    #include <stdlib.h>
    #include <inttypes.h>
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <avr/signal.h>
    #include <avr/delay.h>
    #include "digits.h"
    
    #define SYSCLK 7372800UL // timer clock 8Mhz
    // |= High
    // &= ~ low
    
    int x = 0; // 1/100sec
    int y = 0; // 1/10 sec
    int z = 0; // 1 sec
    int stopp = 0; 
    int running;  
    int counter;
    double sec = 0; 
    
    ISR(INT0_vect){
        // Starte Messung 
        TCCR0 = 0x01;
        running = 1; 
    }
    
    ISR(INT1_vect){
        // Stopp Messung 
        TCCR0 = 0x00;
        running = 0; 
        stopp = 1; 
    }
    
    
    ISR(TIMER0_OVF_vect)
    {    
      if (!(PINA & (1<<PINA2)))
        {
            TCCR0 = 0x01;
            running = 1;    
        }
        
      if (running == 1)   
          counter++;
      else 
          counter = 0;   
    
      //if (counter > 625) //7,3728MHz ohne Prescaler: (7372800/256)/288=100 --> 1/100sek Auflösung
      if (counter > 287)
      {
        x++;
        counter = 0;
        sec++; 
      }
    
       if (x > 9) //Zählen der einzelnen Stellen: 
       {
         x=0;
         y++;
         
       }
       if (y > 9)
       {
         y=0;
         z++;
       }
       if (z > 9)
       {
         TCCR0 = 0x00; 
       }    
        
    }
    
    
    
    
    void IRQ_init(void){
        cli();                        // Interrupts ein sei() 
    
        GICR |= (0<<INT0);             // externer INT Disable 
        GICR |= (0<<INT1);
    
        MCUCR |= (1<<ISC10);        // Einstellen des Auslösers = Seite 67 Datasheet mega 32
        MCUCR |= (1<<ISC11);
    
        MCUCR |= (1<<ISC00);
        MCUCR |= (1<<ISC01);
    
        GICR |= (1<<INT0);             // extern INT Enable
        GICR |= (1<<INT1);
    
        TCNT0 = 0x00;                  //Timer0 mit 0 initialisieren (00000000)
        TIMSK = 0x01;
    
        sei();                        // Interrupts aus cli()
    
    }
    
    
    
    
    
    
    
    int main(void)
    {
        // Pin als Eingang mit Pullup 
        DDRA = (0 << DDA2);                  // Programm 
        DDRD = (0 << DDD2) | (0 << DDD3);    // Interrupts A und B
        PORTA |=  (1<<PA2);
        PORTD |=  (1<<DD2) | (1<<DD3);
    
        //Timer/Counter Control Register 0
        //CS02, CS01 und CS00: Prescale auf 256
        TCCR0 = (1<<CS02) | (0<<CS01) | (0<<CS00);
    
    
    //  Digit 1: B0, B1, B2, B3
          DDRB = (1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3);   
    //  Digit 2: C4, C5, C6, C7
    //    Digit 3: C0, C1, C2, C3 
         DDRC = (1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3) | (1 << DDC4) | (1 << DDC5) | (1 << DDC6) | (1 << DDC7);
        DDRD = (1 << DDD5);
        DDRA = (1 << DDA0);
    
      IRQ_init();
      int a = 0, b = 0, c = 0; 
      short  value = 0; 
      running = 0; 
    
       PORTA &= ~  (1<<PA0);
       
       while(1)
       {
        digit1(z);
        digit2(y);
        digit3(x); 
      
          while (stopp == 1){
        digit1(z);
        digit2(y);
        digit3(x); 
        _delay_ms(50000);
        
        value = (1.395/(sec/100))  *3.6*10;  //1,394 Länge zwischen S1 und S2 mit 10 für Anzeige 01,0 m/s)  
        
        a = value % 10; 
        value = value / 10;
         
        b = value % 10;
        value = value / 10; 
        
        c = value % 10; 
        
        digit1(c);
        digit2(b);
        digit3(a); 
        _delay_ms(50000);
        }
    
      }
    }
    Ansonsten hilft es das Signal direkt am Sensor umzuwandeln in High-Low und dann so zum µC zu übertragen. Man sollte generell die Signal-Wandlung immer so nah wie möglich am Sensor machen und nicht den Sensorwert über die Leitung schicken.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    20.12.2009
    Beiträge
    86
    Danke für den Code, aber ich denke es ist ein HW Problem, denn wenn ich auf der Platine das Signal auf GND ziehe schaltet die Uhr problemlos. Nur wenn ich meine 5m Kabel dranhänge schaltet die Uhr sporadisch. Ich habe auch eine entstörschaltung probiert, jedoch ohne erfolg.

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Mann könnte mit geschirmten Kabel für Taster probieren. Notfalls, wegen eigener Kabelkapazität und Induktivität des Kabels, wäre Entprellung (Schmitt-Trigger Eingang ?) der Signale nötig.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

Ähnliche Themen

  1. Stoppuhr
    Von derpedi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 07.03.2010, 20:37
  2. C-Control Stoppuhr
    Von Speed im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 0
    Letzter Beitrag: 02.03.2007, 21:11
  3. Stoppuhr und Segmentanzeige
    Von X-R@Y im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 11.07.2005, 23:12
  4. Stoppuhr an Lichtschranken
    Von Sebian im Forum Elektronik
    Antworten: 36
    Letzter Beitrag: 22.05.2005, 09:07
  5. Quaz und Stoppuhr
    Von Michael 123 im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 26.03.2005, 09:25

Berechtigungen

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

Solar Speicher und Akkus Tests