- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Drehzahlmesser (bis ca. 20000 Upm) - Reicht ein mega8(8) ?

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.685

    Re: Drehzahlmesser (bis ca. 20000 Upm) - Reicht ein mega8(8)

    Anzeige

    E-Bike
    Zitat Zitat von HF SHOOTER
    ... planen den Bau eines Drehzahlmesser für ein Kart. ... 15k - 20k die bei Vollgas azuftreten. ... 5 stelliges Display aus 7-Segment LED-Anzeigen verwenden um den gesamten Bereich draufzubekommen. ...
    Und wer soll das beim Vollgasstress dann ablesen? Ich bin der Meinung, dass es ergonomisch viel sinnvoller wäre für jeden Tausender, oder jeden zweiten, eine LED anzuzünden. Vielleicht für die unteren 10000 fünf in Orange (nicht rot, das würde die folgenden stören), danach 4 Stück für alle 2000 (oder acht für die interessanten 8000 - die beiden letzten dann BESONDERS hell) in Grün - also bis 18000 - und darüber in Rot !? Aber die Aufteilung ist sicher wurscht, blos - bei Vollgas will doch keiner ein 5stelliges 7-Segment-Display lesen - es gibt ja Gründe für Vollgas - und die liegen bei Kartbahnen vermutlich nicht in einer endlos langen Geraden, oder?

    Und denk daran, die letzten zwei oder drei Stellen werden so unruhig hin und her zappeln, dass man Schädelweh bekommen wird - ablesen wird man da doch nix können, denke ich.

    Das Display wird nicht unnütz sein - das bau irgendwo neben dem Motor ein, für Einstellzwecke.
    Ciao sagt der JoeamBerg

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2007
    Ort
    Bayern
    Alter
    36
    Beiträge
    116
    Zu spät Bestellung ist heute angekommen.
    Naja ich (besser gesagt mein Kollege) wirds dann merken aus Fehlern lernt man schließlich!

    EDIT:
    Danke für die bisherigen Beiträge ich habe nun die benötigten Bauteile soweit vollständig und kommende Tage nun die Versuchsschaltung aufbauen!

    mfg
    Benny

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Was mich persönlich schon immer gereitzt hätte wär eine Drehzahlanzeige mit LED's die in Form der Drehmomentkurve angeordet sind.
    Wär doch auch mal ein Schönes Projekt.
    Wenn Du deine Schaltung auf einen ATMEGA 16 aufmotzt wär vermutlich auch beides gleichzeitig möglich.

  4. #14
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.685
    Zitat Zitat von wkrug
    Was mich persönlich schon immer gereitzt hätte wär eine Drehzahlanzeige mit LED's die in Form der Drehmomentkurve angeordet sind ...
    GENAU - das wärs. Die Drehzahl höre ich sowieso im Rahmen des Interessanten - steht ja schon in der Bibel: wer Ohren hat zu hören, der höre. Aber wenn ich wüsste, ob ich da nach "oben" noch Drehmoment habe, um den da vorn zu überholen - oder ob´s beim Hochdrehen eher schlapp wird . . . Hmmm, das ist eine SEHR feine Idee.
    Ciao sagt der JoeamBerg

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2007
    Ort
    Bayern
    Alter
    36
    Beiträge
    116
    So in der Zwichenzeit habe ich mich ein wenig mit der Programmierumgebung etc. vertraut gemacht. Und habe auch schon erste Ergebnisse laufen.

    Im Moment zählt der mega8 von 0 -9 und gibt die Zahl auf dem 7-Segment Display aus. Davon hab ich auch mal ein Bild gemacht.

    Jetzt würde ich gerne noch eine LED an PB0 blinken lassen, über den Timer0.

    Folgender Code funktioniert nicht, die ISR vom Timer0 wird einfach nicht aufgerufen.

    Code:
    /*	Projekt: Drehzahlmesser 
    	
    	Anzeige der Drehzahl auf 5 7-Segment-Anzeigen.
    	Anzeigen werden im Multiplexverfahren angesteuert,
    	die Drehzahl alle 100ms aktualisiert.
    
    	Später sollen noch max. Drehzahlspeicherung sowie eine
    	Begrüßung beim Einschalten hinzukommen.
    
    	AUTOR: Benjamin Ruppert
    	DATUM: 01.11.2007 - gute Frage									*/
    
    
    #include <avr/io.h>
    #include <stdint.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>
    
    
    /* Variablendeklaration */
    uint8_t SEGMENT;		// Bit0 = Seg. a ... Bit6 = Seg. g
    uint8_t Zahl;
    
    
    /* Prototypendeklaration */
    void ZahlInSegment(uint8_t);
    
    
    // Konvertierung Zahl -> Segmentanzeige
    void ZahlInSegment(uint8_t Zahl) {
    
    switch(Zahl) {
    	//		Segment:     gfedcba
    	case 0: SEGMENT = 0b00111111; break;
    	case 1: SEGMENT = 0b00000110; break;
    	case 2: SEGMENT = 0b01011011; break;
    	case 3: SEGMENT = 0b01001111; break;
    	case 4: SEGMENT = 0b01100110; break;
    	case 5: SEGMENT = 0b01101101; break;
    	case 6: SEGMENT = 0b01111100; break;
    	case 7: SEGMENT = 0b00000111; break;
    	case 8: SEGMENT = 0b01111111; break;
    	case 9: SEGMENT = 0b01100111; break;
    	//		Segment:     gfedcba
    	}
    
    
    	PORTC = 0x00;		// PC0 - PC5 auf 0
    	PORTB &= ~(1 << 1);	// PB1 auf 0
    
    	
    	// Ausgänge setzen, wie 7-Segment angeschlossen ist
    	if (SEGMENT & (1 << 0)) { PORTC |= 0b00001000; }	//a an PC3
    	if (SEGMENT & (1 << 1)) { PORTC |= 0b00010000; }	//b an PC4
    	if (SEGMENT & (1 << 2)) { PORTC |= 0b00000001; }	//c an PC0
    	if (SEGMENT & (1 << 3)) { PORTC |= 0b00000010; }	//d an PC1
    	
    	if (SEGMENT & (1 << 4)) { PORTB |= 0b00000010; }	//e an PB1
    	
    	if (SEGMENT & (1 << 5)) { PORTC |= 0b00000100; }	//f an PC2
    	if (SEGMENT & (1 << 6)) { PORTC |= 0b00100000; }	//g an PC5
    	
    }
    
    
    // LED blinken lassen
    ISR(TIMER0_OVF_vect)
    {
    	if (PINB & (1 << 0)) { PORTB |= 0b00000000; }
    	else { PORTB |= 0b00000001; }
    }
    
    
    
    int main(void)
    {
    
    DDRC = 0b00111111;		// PC0 - PC5 als Ausgang
    DDRB = 0b00000011;		// PB0 - PB1 als Ausgang
    Zahl = 0;
    
     
    // Timer konfigurieren und GIE-Flag setzen
    TCCR0 |= (1 << CS01);	// Vorteiler 8
    sei();
    
    
    while(1)
    	{
    
    	// Auf dem 7-Segment Display die Zahlen 0 - 9 anzeigen
    	ZahlInSegment(Zahl);
    	Zahl++;
    	if (Zahl > 9) { Zahl = 0; }
    	
    	_delay_ms (250);
    	}
    }
    Über Tipps wäre ich dankbar.

    EDIT: Habe vergessen den Timer0 Interrupt freizuschalten. Jetzt klappts.

    mfg
    Benny
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken img_1264_.jpg  

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen