- fchao-Sinus-Wechselrichter AliExpress         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

Thema: Bordcomputer für Benzin-Roller

  1. #21
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Anzeige

    E-Bike
    Zitat Zitat von locked
    Hallo Thomas,

    Zitat Zitat von TomEdl
    Laut meinen (schlechten) mathematischen Kenntnissen, kann ich dazu diese Formel verwenden:
    v [m/s] = Zeit für eine Radumdrehung [s] / Radumfang [m]
    Allerdings bin ich mir nicht sicher, ob das ganze nicht andersrum richtig ist, kann da mal bitte mehr drüberschauen?
    Wie du bereits selber bewiesen hast, ist diese Formel falsch, vergleiche doch einfach nur die Einheiten:

    Geschwindigkeit, wie du richtig geschriebne hast, hat die SI Einheit „m/s“
    Deine Formel dividiert aber die Zeit pro Radumdrehung [s] durch den Radumfang [m], was als Einheit des Ergebnisses „s/m“ zur folge hätte. Rein in Einheiten ausgedrückt würde die Gleichung also m/s = s/m ergeben, was irgendwie ein Widerspruch wäre
    Dachte ich mir doch!

    Zitat Zitat von locked
    Hallo Thomas,
    Zum Schaltplan allgemein kann ich nur empfehlen, da es sich um eine automotive Anwendung handelt, eine richtige Resetschaltung für den Mikroprozessor, wie in der Atmel application note empfohlen, zu verwenden. Im einfachsten Fall sollte ein R-C-D Kombination am RST Pin reichen. Eine Diode sollte man deshalb verwenden, da der RST Pin keine ESD Schutzdiode gegen die Versorgungsspannung, aufgrund der Hochvoltprogrammierung, intern besitzt.
    Andernfalls kann ich dir jetzt schon versprechen, dass sich der Mikroprozessor durch Zündfunkeninduktionen ua. vermutlich des Öfteren unerwartet resetieren wird.
    Es wird sowieso alles auf Batteriebetrieb hinauslaufen, trotzdem danke für deine Ausführungen. Ich denke, eine R-C-D-Kombination kann trotzdem nicht schaden (nagut, das D könntem an bei reinem Batteriebetrieb weglassen, es sind dann ja keine Induktivitäten im Spiel).

    Bei der Software bin ich bereits um einiges weitergekommen, inzwischen sind schon 61% vom Programmspeicher voll. Es fehlen nur noch die Routinen für das Lesen und Speichern aus/in den EEPROM, die Störungsmeldungen und eine Maske. Außerdem müssen noch einige Werte geändert werden, zum Beispiel habe ich den Radumfang noch nicht (jetzt steht halt noch ein ausgedachter Wert drin, der so ungefähr hinkommen könnte).

    ich streite nicht, es geht um die
    Spannungsversorgung seiner Gesamtkonstruktion
    und somit ums Projekt
    Sry, ich bin momentan wohl etwas gereizt. Naja, was soll man sagen, die Schule geht halt wieder los....

    Freundliche Grüße, ebenfalls aus Österreich
    Von wo genau, wenn man fragen darf?

    MfG
    Thomas


  2. #22
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.12.2004
    Alter
    39
    Beiträge
    287
    Hallo Thomas,

    nun, ich würde Sagen, es sind keine offensichtlichen Induktivitäten im Spiel. Induktivitäten, wenn auch absolut unerwünscht, träten in jeder Schaltung, bedingt durch das Layout - oder die Verkabelung im Allgemeinen - immer auf, wodurch man sich prinzipiell immer etwas induziert werden kann.
    Abgesehen von Induktionen, spielt auch die kapazitive Einstreuung, speziell bei hohen Spannungen und Frequenzen, eine nicht zu verachtende Rolle. Eingekoppelte Ströme können durchaus den Prozessor resetieren, oder in seiner Programmausführung beeinflussen, was mir bei einem Wechselrichter passiert ist.
    Beide Phänomene träten in deiner Anwendung sehr deutlich auf, da ein Zündfunken ein massives elektromagnetisches Feld abstrahlt, welches unter umständen auch in einigen zehn Metern Entfernung, im Radio, durch ein „klacksen“ hörbar ist.
    Davon ist auch ein batteriebetriebenes Gerät nicht sicher, auch wenn dessen Masse nicht mit dem Fahrzeug verbunden wird.
    Inwiefern nun dass tatsächlich eine Auswirkung auf deine Schaltung hat, kannst du erst im Betreib feststellen, will damit aber nur Sagen, dass es nicht unwahrscheinlich ist, wie ich aus eigener Erfahrung feststellen musste.
    Vorbeugen ist besser als Nachsicht

    Mit freundlichen Grüßen
    Roland
    The future is closer then you think!

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Hallo!

    Ich werde mal eine R-C-L-Kombination vorsehen, kostet ja nicht die Welt und Roland hat überzeugende Argumente in seinem letzten Beitrag geliefert.

    Inzwischen ist die Software schon relativ fertig, ich hab sie mal in den Anhang gepackt.

    Folgende Zeilen machen mir noch etwas Gedanken:
    Code:
    'EEPROM LESEN
    Readeeprom Kmges , 10
    Readeeprom Kmtag , 20
    Passen die beiden Variablen an die dafür vorgesehenen Stellen im EEPROM auch sicher hinein oder überschneiden sie sich? Der Simulator sagt zwar, dass es sich ausgeht aber ich trau ihm nicht so recht.

    Code:
    Toggle Stat_timer0
    If Stat_timer0 = 1 Then Start Timer0 Else Stop Timer0
    Tut der das wirklich?

    Es fehlen noch:
    * Ansteuerung der Status-LEDs
    * Stromsparmodus (kommt nur, wenn ich die Schaltung per Batterie versorge)
    * Störungstexte + Abfragen (kommen aber erst in V2.0)
    * Eventuelle Menü-Erweiterungen

    Die Hardware ist noch nicht fertiggestellt, der Roller steht noch immer nicht in meinem Keller. Aus diesem Grund habe ich auch noch keine Spannungsmessungen am Bordnetz durchführen können, welche über die Spannungsversorgung des Bordcomputers entscheiden.

    MfG
    Thomas
    Angehängte Dateien Angehängte Dateien

  4. #24
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Hallo!

    Nun habe ich begonnen an der Hardware zu arbeiten. Als erstes werde ich das Frontmodul für die Lenkermontage fertigen. Dieses wird aus Sperrholzplatten gefertigt und dann per zwei Schrauben am Lenker befestigt. Folgendes Bild verdeutlicht dies:
    http://img232.imageshack.us/my.php?image=bild01ai9.jpg

    Am Vorderrad werden Reed-Schalter und Magnet befestigt. Allererst wollte ich diese Komponenten am Hinterrad montieren, dann viel mir aber die Metallhalterung mit dem Loch am Vorderrad auf - dort lässt es sich natürlich einfacher montieren.
    http://img232.imageshack.us/my.php?image=bild02hx6.jpg

    An der Software sind noch einige Änderungen vorzunehmen. Zum Beispiel springt der v-Wert nicht auf 0 sondern bleibt auf dem letzten vorhandenen Wert stehen. Außerdem sind noch einige Abfragen zu ergänzen.

    Gruß
    Thomas

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Hallo!

    Die Hardware ist komplett fertig, bis auf einige Feinheiten. Allerdings macht mir die Software einige Probleme. Das Display läuft, ich kann auch schon durch die Menüs blättern und verschiedene Funktionen aufrufen. Allerdings tut sich puunkto Geschwindigkeit/Kilometerstand absolut gar nichts. Messungen haben ergeben, dass der Reed-Kontakt Int0 gegen Masse zieht (wie vorgesehen), aber anscheinend kein Interrupt ausgelöst wird, beziehnungsweise, es wird nicht in die Interruptroutine gesprungen. Weiters wäre eventuell noch ein Fehler in der Interruptroutine denkbar, besonders, was das Starten von Timer0 betrifft habe ich Zweifel, ob ich das wirklich richtig gelöst habe.

    Zum Testen habe ich den Code etwas reduziert, die Tastenentprellung und einige Menüs wurden entfernt. Dies ist der Code, der momentan am AVR in Betrieb ist:
    Code:
    'Name:.............Bordcomputer
    'Version:..........1.0a
    'Datum:............11.01.2009
    'Autor:............Thomas Edlinger
    '---------------------------------
    'Beschreibung: Bordcomputer
    '              Ausgabemasken: 0  |  Grundbild
    '                             1  |  Hauptmenü
    '                             2  |  Einstellungen 1
    '                             3  |  Einstellungen 2
    '                             4  |  Status
    '                             5  |  Störungstexte
    
    
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    
    'KONFIGURATION EINGÄNGE
    Config Pind.2 = Input
    Config Pind.3 = Input
    Config Pinb.6 = Input
    Config Pinb.7 = Input
    Config Pind.5 = Input
    Config Pinb.0 = Input
    Config Pinc.0 = Input
    
    
    'KONFIGURATION AUSGÄNGE
    Config Portd.0 = Output
    Config Portd.1 = Output
    Config Portd.4 = Output
    Config Portc.5 = Output
    Config Portc.4 = Output
    Config Portc.3 = Output
    Config Portc.2 = Output
    Config Portc.1 = Output
    Config Portb.2 = Output
    Config Portb.1 = Output
    
    
    'PULLUPS EINSCHALTEN
    Portd.2 = 1
    Portd.3 = 1
    Portb.6 = 1
    Portb.7 = 1
    Portd.5 = 1
    Portb.0 = 1
    
    
    'VERGABE ALIAS-ADRESSEN
    T_auf Alias Pind.3
    T_ab Alias Pinb.6
    T_links Alias Pinb.7
    T_rechts Alias Pind.5
    T_enter Alias Pinb.0
    D1_betrieb Alias Portd.0
    D2_busy Alias Portd.1
    D3_stoerung Alias Portd.4
    
    
    
    'VARIABLEN
    Dim Adc_wert As Word
    Dim Spg As Single
    Dim Stat_timer0 As Bit
    Dim Time_umdrehung_n As Long
    Dim Time_umdrehung_ms As Long
    Dim Time_umdrehung_s As Single
    Dim Radumfang As Single
    Dim V_meter_sekunde As Single
    Dim V_kmh As Single
    Dim Kmges As Single
    Dim Kmtag As Single
    Dim Spg_ausgabe As String * 5
    Dim V_meter_sekunde_ausgabe As String * 4
    Dim V_kmh_ausgabe As String * 4
    Dim Kmges_ausgabe As String * 7
    Dim Kmtag_ausgabe As String * 7
    Dim Radumfang_ausgabe As String * 7
    Dim Ausgabemaske As Byte
    Dim Status As Bit
    Dim Status_nr As Byte
    Dim Auswahl As Byte
    Dim Sparmodus As Bit
    Radumfang = 0.628
    
    
    'KONSTANTEN
    Const Adc_faktor = 0.017578
    Const V_faktor = 3.6
    
    
    'KONFIGURATION INT0
    Config Int0 = Falling
    On Int0 Int0_isr
    
    
    'KONFIGURATION ADC
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    
    
    'KONFIGURATION TIMER0
    Config Timer0 = Timer , Prescale = 8
    Timer0 = 131
    On Timer0 Timer0_isr
    Enable Timer0
    Stop Timer0
    
    
    'KONFIGURATION LCD
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portb.2 , Rs = Portc.5 , E = Portc.4
    Config Lcd = 16 * 4
    Config Lcdbus = 4
    Waitms 100
    Initlcd
    Waitms 100
    
    
    'EEPROM LESEN
    Readeeprom Kmges , 16
    Readeeprom Kmtag , 32
    
    
    'STARTBILD
    Rem noch nicht ganz fertiggestellt
    Cls
    Locate 1 , 1
    Wait 2
    Lcd "Willkommen!"
    Wait 2
    Locate 2 , 1
    Lcd "Bordcomputer"
    Wait 2
    Locate 3 , 1
    Lcd "V1.0"
    Wait 2
    Locate 4 , 1
    Lcd "(c) TE"
    Wait 2
    Cls
    
    
    '### HAUPTSCHLEIFE ###
    Do
    
       'ADC auslesen
       Adc_wert = Getadc(0)
       'ADC-Wert in Spannung umwandeln
       Spg = Adc_wert * Adc_faktor
       'Sub aufrufen, wenn Versorgungsspannung abfällt
       If Spg < 9 Then Gosub Power_fail
    
       'Berechnung Geschwindigkeit
       Time_umdrehung_s = Time_umdrehung_ms * 1000
       V_meter_sekunde = Radumfang / Time_umdrehung_s
       V_kmh = V_meter_sekunde * V_faktor
    
       'Umwandlung Werte für LCD
       Spg_ausgabe = Fusing(spg , "##.##")
       V_meter_sekunde_ausgabe = Fusing(v_meter_sekunde , "##.#")
       V_kmh_ausgabe = Fusing(v_kmh , "##.#")
       Kmges_ausgabe = Fusing(kmges , "####.##")
       Kmtag_ausgabe = Fusing(kmtag , "####.##")
       Radumfang_ausgabe = Fusing(radumfang , "#.####")
    
       'Ausgabe Lcd
       Select Case Ausgabemaske
          Case 0 : Gosub Maske0
          Case 1 : Gosub Maske1
          Case 2 : Gosub Maske2
          Case 3 : Gosub Maske3
          Case 4 : Gosub Maske4
          Case 5 : Gosub Maske5
       End Select
    
       'Abfragen Störungen usw.
       'Abfrage Versorgungsspannung
       If Spg < 10 Then
          Status = 1
          Status_nr = 1
       End If
    
    Loop
    
    
    '### SUBS ###
    Int0_isr:
    
       Time_umdrehung_n = Time_umdrehung_ms
       Time_umdrehung_n = 0
       Toggle Stat_timer0
       If Stat_timer0 = 1 Then Start Timer0 Else Stop Timer0
       Kmges = Kmges + Radumfang
       Kmtag = Kmtag + Radumfang
    
    Return
    
    
    Timer0_isr:
    
       Timer0 = 131
       Incr Time_umdrehung_n
    
    Return
    
    
    Power_fail:
    
    Writeeeprom Kmges , 16
    Writeeeprom Kmtag , 32
    Powerdown
    
    Return
    
    
    'MASKEN
    Maske0:
    
       'Ausgabe Geschwindigkeit
       Locate 1 , 1
       Lcd V_kmh_ausgabe ; "km/h"
       Locate 1 , 10
       Lcd V_meter_sekunde_ausgabe ; "m/s"
       'Ausgabe Tageskilometerstand
       Locate 2 , 1
       Lcd Kmtag_ausgabe ; "km"
       'Ausgabe Gesamtkilometerstand
       Locate 3 , 1
       Lcd Kmges_ausgabe ; "km"
       'Ausgabe Spg
       Locate 4 , 1
       Lcd Spg_ausgabe ; "V"
       'Ausgabe Status
       Locate 4 , 9
       If Status = 0 Then Lcd "OK" Else Lcd "Stoerung"
    
       'Tasterabfrage
       If T_enter = 0 Then
          Ausgabemaske = 1
          Cls
       End If
    
       '----------
       Locate 4 , 12
       Lcd Stat_timer0
       '----------
    
    Return
    
    
    Maske1:
    
       'Ausgabe Hauptmenü
       Locate 1 , 3
       Lcd "Grundbild"
       Locate 2 , 3
       Lcd "Einst. 1"
       Locate 3 , 3
       Lcd "Einst. 2"
       Locate 4 , 3
       Lcd "Status"
    
       'Abfrage Taster
       If T_auf = 0 Then
          Decr Auswahl
          Cls
       End If
       If T_ab = 0 Then
          Incr Auswahl
          Cls
       End If
    
       If Auswahl = 4 Then Auswahl = 0
          If Auswahl = 0 Then
             Locate 1 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Ausgabemaske = 0
                   Cls
                End If
          Elseif Auswahl = 1 Then
             Locate 2 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Ausgabemaske = 2
                   Cls
                End If
          Elseif Auswahl = 2 Then
             Locate 3 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Ausgabemaske = 3
                   Cls
                End If
          Elseif Auswahl = 3 Then
             Locate 4 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Ausgabemaske = 4
                   Cls
                End If
          End If
    
    Return
    
    
    Maske2:
    
       'Ausgabe Einstellungen1
       Locate 1 , 3
       Lcd "Reset Km-Tag"
       Locate 2 , 3
       Lcd "Sparmodus:"
       Locate 2 , 12
       Lcd Sparmodus
       Locate 3 , 3
       Lcd "Km. speichern"
       Locate 4 , 3
       Lcd "Zurück"
    
       'Abfrage Taster
       If T_auf = 0 Then
          Decr Auswahl
          Cls
       End If
       If T_ab = 0 Then
          Incr Auswahl
          Cls
       End If
    
       If Auswahl = 4 Then Auswahl = 0
          If Auswahl = 0 Then
             Locate 1 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Kmtag = 0
                   Cls
                End If
          Elseif Auswahl = 1 Then
             Locate 2 , 1
             Lcd "+"
                If T_enter = 0 Then
                   If Sparmodus = 0 Then Sparmodus = 1 Else Sparmodus = 0
                   Cls
                End If
          Elseif Auswahl = 2 Then
             Locate 3 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Gosub Power_fail
                   Cls
                End If
          Elseif Auswahl = 3 Then
             Locate 4 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Ausgabemaske = 1
                   Cls
                End If
          End If
    
    
    Return
    
    
    Maske3:
    
       'Ausgabe Einstellungen2
       Locate 1 , 3
       Lcd "u="
       Locate 1 , 5
       Lcd Radumfang_ausgabe ; "m"
       Locate 2 , 3
       Lcd "Reserviert"
       Locate 2 , 12
       Lcd Sparmodus
       Locate 3 , 3
       Lcd "Reserviert"
       Locate 4 , 3
       Lcd "Zurück"
    
       'Abfrage Taster
       If T_auf = 0 Then
          Decr Auswahl
          Cls
       End If
       If T_ab = 0 Then
          Incr Auswahl
          Cls
       End If
    
       If Auswahl = 4 Then Auswahl = 0
          If Auswahl = 0 Then
             Locate 1 , 1
             Lcd "+"
                If T_links = 0 Then Radumfang = Radumfang - 0.001
                If T_rechts = 0 Then Radumfang = Radumfang + 0.001
          Elseif Auswahl = 1 Then
             Locate 2 , 1
             Lcd "+"
                If T_enter = 0 Then Lcd "RESERVIERT"
          Elseif Auswahl = 2 Then
             Locate 3 , 1
             Lcd "+"
                If T_enter = 0 Then Lcd "RESERVIERT"
          Elseif Auswahl = 3 Then
             Locate 4 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Ausgabemaske = 1
                   Cls
                End If
          End If
    
    Return
    
    
    Maske4:
    
       'Ausgabe Status
       Locate 1 , 1
       If Status = 0 Then Lcd "System OK" Else Lcd "Störung"
       Locate 2 , 1
       Lcd Status_nr
       Locate 3 , 3
       Lcd "Störung quit"
       Locate 4 , 3
       Lcd "Zurück"
    
       'Abfrage Taster
       If T_auf = 0 Then
          Decr Auswahl
          Cls
       End If
       If T_ab = 0 Then
          Incr Auswahl
          Cls
       End If
    
       If Auswahl = 3 Then Auswahl = 0
          If Auswahl = 0 Then
             Locate 3 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Ausgabemaske = 5
                   Cls
                End If
          Elseif Auswahl = 1 Then
             Locate 4 , 1
             Lcd "+"
                If T_enter = 0 Then
                   Ausgabemaske = 1
                   Cls
                End If
          End If
    
    Return
    
    
    Maske5:
    
       'Ausgabe Störungstexte
       Locate 1 , 1
       Lcd "Störungstexte"
       Locate 2 , 1
       Lcd "werden nicht"
       Locate 3 , 1
       Lcd "unterstützt!"
       Locate 4 , 1
       Lcd "Warte auf v1.1"
    
       'Tasterabfrage
       If T_enter = 0 Then
          Waitms 20
             If T_enter = 0 Then
             Ausgabemaske = 4
             Status = 0
             Status_nr = 0
             Cls
          End If
       End If
    
    Return
    
    
    End
    In der Interruptroutine "Int0_isr" werden erst einmal die Daten an Variablen übergeben, dann wird "Stat_timer0" getoggelt. Die anschließende Abfrage startet oder stoppt Timer0. Genau hier habe ich meine Zweifel. Wird der Timer wirklich gestartet/gestoppt?.

    Danke für die Hilfe
    Thomas

  6. #26
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    So, ich habe mir nun das Problem mal genauer angesehen. Zuerst tat sich beim Bewegen des Rollers gar nichts, dann ging ich ins Menü und betätigte die Auswahl "Reset Km-Tag". Anschließend zeigte mir das Display im Grundbild 00.00km an, wo hingegen vorher ein negatives Vorzeichen davorstand. Nun zählte er bei der Radumdrehung die Radumdrehung dazu - funktioniert soweit. Jedoch änderte sich am Gesamtkilometerstand nichts. Ich habe dann per PC den Wert vom Tageskilometerstand in die Position des Gesamtkilometerstandes im EEPROM kopiert - nun zählen beide Kilometerzähler hoch. Anscheinend hatte das negative Vorzeichen irgendwas am addieren der Werte verhindert. (?)

    Jedoch bleibt das Problem bestehen, dass ich keine Geschwindigkeit angezeigt bekomme - weder in km/h noch in m/s. Ich habe den Code daraufhin etwas umgeschrieben, was jedoch keinerlei Wirkung zeigte. Allerdings weiß ich jetzt sicher, dass die Interruptroutine bei jeder Radumdrehung zuverlässig angezeigt wird - sonst würde sich ja der Kilometerstand nicht ändern.

    Könnte jemand mal kurz den Code durchsehen, speziell die Bereiche
    + Int0_isr
    + Timer0_isr[/list]
    + Berechnung der Geschwindigkeit in der Main-Loop
    + Umwandlung der Werte für die Ausgabe (ebenfalls Main-Loop).

    Vielleicht übersehe ich ja die ganze Zeit etwas.

    Vielen Dank für eure Mithilfe,
    Thomas
    Angehängte Dateien Angehängte Dateien

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

Solar Speicher und Akkus Tests