-         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Drehzahl- und Geschwindigkeitsmessung ATMEGA88 BASCOM

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    Anzeige

    ... etwa 3-60 Km/h ... Ist für ne Fahrende Bierkiste ...
    Uuuups - oder hicks? Formula Bierkiste?
    Ich empfehle Youtube zum Thema 'Fahrende Bierkiste' zu befragen

  2. #12
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Na dann Prost! Poste mal ein Foto wenn sie fertig ist ...

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    Die Kiste ist schon fertig. Läuft ca 50. Reicht auch, jetzt brauch ich nur noch Tacho und Drehzahlmesser. Mit welcher Seite sollte man hier Bilder Posten?

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    15.08.2013
    Ort
    Güstrow
    Beiträge
    31
    Hallo ans Forum.
    Da ich mir das auch selber immer wünsche hier der fertige und vor allem laufende Code mit Anmerkungen

    Code:
    $regfile = "m88def.dat"
    $hwstack = 128
    $framesize = 128
    $swstack = 128
    
    Config Timer1 = Timer , Prescale = 8
    Config Timer0 = Timer , Prescale = 1024
    
    'Die Sensoren sollen auf Masse-Kontakt auslösen
    Config Int0 = Falling
    Config Int1 = Falling
    
    'Auf Sensoren anspringen
    On Int0 Ges                                       'Geschwindigkeit
    On Int1 Dre                                       'Drehzahl
    
    'Auf Timer-Überläufe anspringen
    On Timer1 Timer1_irq
    On Timer0 Timer0_irq
    
    'Den ganzen Kram anschalten
    Enable Int0
    Enable Int1
    Enable Timer1
    Enable Timer0
    Enable Interrupts
    
    'Ports configurieren
    Config Sda = Portc.4
    Config Scl = Portc.5
    Config Portd.2 = Input
    Config Portd.3 = Input
    Config Portd.5 = Output
    Config Portd.6 = Output
    Config Portd.7 = Output
    Config Portb = Output
    
    Pind.2 = 1
    Pind.3 = 1
    
    'Variablen festlegen
    Dim C1 As Byte
    Dim C0 As Byte
    Dim G_pre As Long
    Dim G_set As Long
    Dim G_out As Long
    Dim G_out_2 As Long
    Dim G_out_3 As Long
    Dim G_out_calc As Single
    
    Dim D_pre As Long
    Dim D_set As Long
    Dim D_out As Long
    Dim D_out_2 As Long
    
    Dim Zehner As Byte
    Dim Einer As Byte
    
    
    C1 = 0
    C0 = 0
    Do
          'Abwägung, wieviele LED's je nach Drehzahl leuchten sollen
          Select Case D_out_2
             Case Is < 146                            '>7000
                  Portb = &B111111XX
                  Portd.7 = 1
                  Portd.6 = 1
                  Portd.5 = 1
    
             Case Is < 170                            '>6000
                  Portb = &B111111XX
                  Portd.7 = 1
                  Portd.6 = 1
                  Portd.5 = 0
    
             Case Is < 205                            '>5000
                  Portb = &B111111XX
                  Portd.7 = 1
                  Portd.6 = 0
                  Portd.5 = 0
    
             Case Is < 255                            '>4000
                  Portb = &B111111XX
                  Portd.7 = 0
                  Portd.6 = 0
                  Portd.5 = 0
    
             Case Is < 340                            '>3000
                  Portb = &B111110XX
                  Portd.7 = 0
                  Portd.6 = 0
                  Portd.5 = 0
    
             Case Is < 510                            '>2000
                  Portb = &B111100XX
                  Portd.7 = 0
                  Portd.6 = 0
                  Portd.5 = 0
    
             Case Is < 1020                           '>1000
                  Portb = &B111000XX
                  Portd.7 = 0
                  Portd.6 = 0
                  Portd.5 = 0
    
             Case Is < 1360                           '>750
                  Portb = &B110000XX
                  Portd.7 = 0
                  Portd.6 = 0
                  Portd.5 = 0
    
             Case Is < 2030                           '>500
                  Portb = &B100000XX
                  Portd.7 = 0
                  Portd.6 = 0
                  Portd.5 = 0
    
             Case Else
                  Portb = &B000000XX
                  Portd.7 = 0
                  Portd.6 = 0
                  Portd.5 = 0
    
           End Select
    
    
          'Berechnungen der Geschwindigkeit und Ausgabe über I2C
          'an einen MAX6958.
    
          If G_out_2 < 1000000 Then
             G_out_calc = 1 / G_out_2
             G_out_calc = G_out_calc * 1473081
             G_out_3 = G_out_calc
          Else
              G_out_3 = 0
          End If
    
          Zehner = G_out_3 / 10
          Zehner = Zehner Mod 10
          Einer = G_out_3 Mod 10
    
          I2cstart
          I2cwbyte &B01110000                         'Chip-Adresse
          I2cwbyte &B00000001                         'Erste Adresse (Autoincr.)
          I2cwbyte &B00000011                         'decode
          I2cwbyte &B00001000                         'helligkeit
          I2cwbyte &B00000011                         'scan limit
          I2cwbyte &B00000001                         'nomal Operation
          I2cstop
    
          I2cstart
          I2cwbyte &B01110000
          I2cwbyte &B00100000                         'Adresse
          I2cwbyte Zehner                             'Zehner
          I2cwbyte Einer                              'Einer
          I2cstop
    
          'Um bei den langen Intervallen der Geschwindigkeitsmessung
          'auch geringe messen zu können, lass ich den 16bit Timer ziemlich
          'schnell durchlaufen und dafür mehrmals (100x) durchlaufen
          'und multipiziere mit C1.
    
          'Der 8bit Timer sorgt in regelmäßigen Abständen dafür, dass bei
          'Ergebnislosigkeit der Interupts die Zehler wieder als Ergebnis 0
          'anzeigen
    
          If C1 = 100 Then C1 = 0
          If C0 = 50 Then
             G_out_2 = 1000000
             D_out_2 = 2500
             C0 = 0
          End If
    
    Loop
    
    'Geschwindigkeit INT
    Ges:
        G_out = G_set - G_pre
        G_pre = G_set
        G_set = C1 * 65535
        G_set = G_set + Timer1
        If G_out > 0 Then G_out_2 = G_out
    Return
    
    'Drehzahl INT
    Dre:
        D_out = D_set - D_pre
        D_pre = D_set
        D_set = C1 * 65535
        D_set = D_set + Timer1
        If D_out > 0 Then D_out_2 = D_out
    Return
    
    'Überlauf 16bit Timer
    Timer1_irq:
       C1 = C1 + 1
    Return
    
    'Überlauf 8bit Timer
    Timer0_irq:
       C0 = C0 + 1
    Return
    
    
    End

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.649
    Blog-Einträge
    133
    Zitat Zitat von therealosram Beitrag anzeigen
    Da ich mir das auch selber immer wünsche hier der fertige und vor allem laufende Code mit Anmerkungen
    Super, Danke!


    Zitat Zitat von therealosram Beitrag anzeigen
    Mit welcher Seite sollte man hier Bilder Posten?
    Beim Antworten auf einen Beitrag gibt es rechts unten einen Button "Erweitert". Beim Aktivieren bekommt man eine Vorschau auf das schon verfasste und verschiedene Icons. Mit einem Icon davon kann man Grafik einfügen und beim Klick darauf bekommt man die Auswahl zum Link einfügen oder "vom Computer hochladen". Bei letzterem braucht man also keinen externen Provider. Hat den Vorteil, daß die Bilder durch externe Einflüsse praktisch nicht verloren gehen.

    Hab noch nicht durchgeblick, wann die Bilder vom Forum automatisch verkleinert werden und begrenze meine Bilder immer auf 600 Pixel maximale Seitenlänge und 100kB Dateigröße.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Atmega88 wird in bascom nicht erkannt
    Von nrg_mario im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 09.07.2011, 18:19
  2. MCS-Bootloader für ATmega8 und ATmega88 compilieren
    Von felack im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 24.09.2008, 14:47
  3. IR-Empfänger an ATMega88 und Timer2
    Von Schokohoernl im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 21.02.2007, 00:23
  4. 4 x PWM mit ATMega88 und BASCOM
    Von Trabukh im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 04.08.2006, 09:35
  5. Atmega88 und rc5 codes
    Von Furtion im Forum AVR Hardwarethemen
    Antworten: 19
    Letzter Beitrag: 30.12.2005, 22:21

Stichworte

Berechtigungen

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