- Akku Tests und Balkonkraftwerk Speicher         
Seite 5 von 5 ErsteErste ... 345
Ergebnis 41 bis 44 von 44

Thema: Ganganzeige für Motorrad

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Sodele......
    Hab nun soweit ein Demoprojekt fertig und es funktioniert auch einwandfrei.
    Das hier ist erstmal der Schaltplan:

    http://s10.directupload.net/file/d/2...f2kqx8_pdf.htm

    Die beiden Lötjumper sind dafür da damit man den Tiny noch programmieren kann, weil ich nicht genau wusste ob an den Anschlüssen Spannung anliegen darf während man programmiert.

    Das hier ist einer der zwei Sensoren:
    http://s5.directupload.net/file/d/2162/k96zw73u_jpg.htm

    Bei den Sensoren handelt es sich um TL4095 und das sind Hallsensoren mit integriertem Schmitt-Trigger und Open-Collector Ausgang.

    Hier kann man das Ergebniss auf meinem RN-Control sehen. Der Widerstand oben in der Ecke ist dafür da um den Pin, der für den Neutralgang da ist und der immer auf 4,5V liegt, auf GND zu ziehen sobald die erste Schleife abgearbeitet wurde und man normalerweise im Motorrad einen Gang drin haben würde.

    So und zu allerletzt noch der Code für den Controller. Eigentlich war der Code für einen Tiny24 gedacht aber da ich es erstmal mit meinem RN-Control testen wollte musst ich die Regfile und den Crystal etwas ändern.

    Code:
    'Mikrocontrollereinstellungen:
    $regfile = "m32def.dat"                                   'Einstellen des verwendeten Chips
    $crystal = 16000000                                          'Taktfrequenz (hier der Takt aus dem
                                                                'internen kalibrierten Oszillator
    'Variablen:
    Dim Gang As Byte                                            'Festlegen der Variable und des Types
    Dim Ort As Byte
    Dim Zelle As Byte
    Dim Loeschen As Byte
    Dim R As Byte
    Dim Gangneu As Byte
    
    'Ports:
    Config Portc = Output                                       'PortA wird als Ausgang festgelegt
    Config Pinb.0 = Input                                       'Neutralstellung
    Config Pinb.1 = Input                                       'Signal vom Sensor "oben"
    Config Pinb.2 = Input                                       'Signal vom Sensor "unten"
    Config Pinb.3 = Input                                       'Gangwahl
    
    Declare Sub Speichern
    Declare Sub Nullstellung                                    'Deklarieren der Sub-Programme
    Declare Sub Schalten
    Declare Sub Lesen
    
    R = 255
    Zelle = 0
    Ort = 0
    Gangneu = 0
    Gang = 0                                                    'Variable "Gang" wird auf 0 gesetzt
    
    If Pinb.0 = 0 Then Call Lesen                               'Unterprogramm "Lesen" wird aufgerufen
    Gang = Gangneu                                              'Gang wird mit dem Inhalt der Variable
                                                                'Gangneu beschrieben
    
    
    Do                                                          'Das eigentliche Do-Loop Programm
       If Pinb.0 = 1 Then Gang = 0                              'Wenn der Neutralgang eingelegt wird, wird
                                                                 'die Variable Gang auf 0 gesetzt
       If Pinb.0 = 1 Then Call Nullstellung                     'Abfragen des Ports für Neutralstellung
       Waitms 100                                               'und ausführen der entsprechenden Sub-Routine
       If Pinb.0 = 0 Then Call Schalten                         'Low-Abfrage für den Port für die Nullstellung
       Waitms 100
    
       Call Speichern                                           'Unterprogramm "Speichern" wird aufgerufen
       Waitms 100
    
    
       If Gang = 0 Then Ddrc = &B00000000
    
       If Gang = 1 Then Ddrc = &B00000001                       'Anzeigen des Variablenwertes auf der
                                                                 '7-Segment Anzeige (hier Wert 1)
    
       If Gang = 2 Then Ddrc = &B00000010
    
    
       If Gang = 3 Then Ddrc = &B00000011
    
    
       If Gang = 4 Then Ddrc = &B00000100
    
    
       If Gang = 5 Then Ddrc = &B00000101
    
    
       If Gang = 6 Then Ddrc = &B00000110
    
    
    Loop
    End                                                         'Programmende
    
    Sub Nullstellung                                            'Festlegen der Sub-Programme
       While Gang = 0                                           'Beginn der WHile-Schleife
    
       If Pinb.2 = 0 Then Gang = Gang + 1                       'Gang wird um eins erhöht wenn der
                                                                  'untere Hall-Sensor aktiviert wird
       If Pinb.1 = 0 Then Gang = 2                              'Gang wird auf 2 gesetzt wenn der
                                                                 'obere Hallsensor auf GND gezogen
       Wend                                                     'wird (falls man direkt von Neutral auf 2 Schaltet)
                                                                 'Ende der While-Schleife
    End Sub                                                     'Sub-Programm Ende
    
    
    
    Sub Schalten(byval Gang As Byte)                            'Festlegen des zweiten Sub-Programmes
    
       If Pinb.1 = 0 And Pinb.2 = 0 Then Waitms 10
       If Pinb.1 = 0 Then Gang = Gang + 1                       'Gang wird um 1 erhöht wenn der obere
                                                                   'Sensor gegen GND gezogen wird
       If Pinb.2 = 0 Then Gang = Gang -1                        'Gang wird um 1 verringert wenn der
                                                                   'untere Sensor gegen GND gezogen wird
       If Gang < 1 And Pinb.2 = 0 Then Gang = 1                 'Wenn Gang 1 eingelegt ist und runtergeschaltet wird
                                                                  'wird die Variable "Gang" auf 1 gesetzt
       If Gang > 5 And Pinb.3 = 1 Then Gang = 5                 'Gänge sind auf 5 beschränkt
       If Gang > 6 Then Gang = 6
    
    End Sub                                                     'Sub-Programm Ende
    
    Sub Speichern(byval Gang As Byte)                           'Unterprogramm "Speichern" wird begonnen
    
       Writeeeprom Gang , Ort                                   'Schreibt die Variable "Gang" in die Speicher-
                                                                  'zelle die durch die Variable "Ort" festgelegt
                                                                  'wird
       Loeschen = Ort - 1                                       'Variable "Loeschen" ist Variable "Ort" nur um
                                                                'eins verringert
       Writeeeprom R , Loeschen                                 'Schreibt in die Zelle die durch die Variable
                                                                  '"Loeschen" festgelegt wird den Inhalt der Variable
                                                                  '"R"(255)
       Ort = Ort + 1                                            'Variable "Ort" wird um eins erhöht
    
    
    End Sub                                                     'Sub-Programm Ende
    
    Sub Lesen(byval Gangneu As Byte)                            'Unterprogramm "Lesen" wird begonnen
    
       Zelle = 0
       Readeeprom Gangneu , Zelle
       While Gangneu = 255
       Zelle = Zelle + 1
       Readeeprom Gangneu , Zelle
       Wend
    
    
    End Sub                                                     'Sub-Programm Ende

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    54
    Beiträge
    2.807
    ...hier wird übrigens ein ähnliches Projekt vorgestellt :

    http://www.electronics-lab.com/proje...006/index.html

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Ja so habe ich es auch gemacht. Nur meine Platine ist etwas größer (glaube so ca 50x50mm). Wollte es eigentlich auch am Mittwoch zusammen mit der Präsentation vorführen aber durch einen sau blöden Fehler mit den Fusebits hab ich mir den Reset-Pin weggefused und ich hatte keine möglichkeit innerhalb von zwei Tagen einen neuen Tiny zu bekommen
    Deswegen konnte ich es nur mit meinem RN-Control zeigen aber es hat 1a funktioniert.......
    Mal schauen ob man da noch ein bischen was hinzufügen kann.

Seite 5 von 5 ErsteErste ... 345

Berechtigungen

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

12V Akku bauen