Damit das Komma zwischen 9,9 und 10,0 Volt an der selben Stelle bleibt habe ich den Integer-Wert nach String konvertiert. Dann die String-Variable mit format 00.0 am LCD anzeigen lassen. Alles super - genau wie ich es wollte!!!
Aus Interesse (wie verändert sich die Spannungsanzeige) habe ich die Stringlänge von "Dim Volt_anz As String * 4" auf String * 3, String * 2, String * 1, String *0 geändert.
Die Spannungsanzeige blieb immer unverändert und korrekt. WARUM?
Kann mir jemand auf die Sprünge helfen?
Übrigens - die Konvertierung und Anzeige sind in Zeile 95 und 96
Alles anzeigen
Aus Interesse (wie verändert sich die Spannungsanzeige) habe ich die Stringlänge von "Dim Volt_anz As String * 4" auf String * 3, String * 2, String * 1, String *0 geändert.
Die Spannungsanzeige blieb immer unverändert und korrekt. WARUM?
Kann mir jemand auf die Sprünge helfen?
Übrigens - die Konvertierung und Anzeige sind in Zeile 95 und 96
BASCOM-Quellcode
- 'Variable definieren
- '***********************************************************************************
- Dim Lcd_aktualisieren As Byte 'um alle LCD-Anzeigen in einer Subroutine zusammenzufassen
- Dim Zeit As Byte
- Dim Zeit_alt As Byte 'Schweissdauer
- Dim Stufe As Byte 'Schweissstufe
- Dim Stufe_alt As Byte
- Dim Flag_s As Bit 'zur Erkennung ob die Elektroden abgehoben wurden
- Dim Flag_taster As Bit 'zur Erkennung ob der Taster losgelassen/gedrueckt wurde
- Dim Var1 As Byte
- Dim Var2 As Byte
- Dim Flag_einstellung As Bit 'zur Abschaltung des Bereitschaftsticken im "Einstellmenue"
- Dim Initialisiert As String * 4 'zur Pruerfung ob in EEPROM sinnvolles steht
- Dim Anzahl As Word 'Anzahl der Schweissungen
- 'Ladebalkenanzeige
- Dim B As Single
- Dim Balken As Byte
- Dim Block As Byte
- Dim Lastchar As Byte
- Dim I As Byte
- 'ADC-Messung
- Dim W As Integer 'ADC-Messwert
- Dim Adkorr1 As Single 'zur Kalibrierung der Spannungsmessung
- Dim N As Byte 'Hilfsvariable zur Mittelwertbildung des ADC-Messwertes
- Dim Mean As Single 'Hilfsvariable zur Mittelwertbildung des ADC-Messwertes
- Dim Volt As Single 'für Ladebalkenanzeige
- Dim Volt_i As Integer 'fuer Regelung
- Dim Konstante As Single 'Konstante = 5 / 1023
- Dim Volt_anz As String * 4 'fuer Spannungsanzeige
- 'Energieberechnung
- Dim E As Single 'zur Energieberechnung
- Dim J As Word 'fuer Energieanzeige
- 'Drehencoder
- Dim Zustand As Byte
- Dim Zustand_alt As Byte
- Dim Zustandswechsel As Word At Zustand Overlay
- Dim Wechsel As Byte
- Dim Wert As Byte 'Drehencoder Variable
- Do
- .
- .
- .
- Loop
- 'ADC-Spannungsmessung mit Mittelwertbildung von 20 Messungen
- '***********************************************************************************
- Spannung_messen:
- W = Getadc(0) 'Single Messung an ADC0 durchführen - liefert 10 Bit Wert von dezimal 0..1023
- Mean = 0
- For N = 1 To Messzahl 'Mittelwert von 20 Messungen bilden
- W = Getadc(0)
- Mean = Mean + W
- Next N
- Mean = Mean / Messzahl 'Ergebnis geteilt durch Messzahl
- Volt = Mean * Konstante 'Konstante ist 5/1023
- Volt = Volt * Adkorr1 'Single zur Berechnung der Ladebalkenanzeige
- Volt_i = Volt * 10 'Integer zum Regeln
- Return
- 'Alle LCD_Anzeigen
- '***********************************************************************************
- Anzeige:
- If Lcd_aktualisieren = 255 Then 'Begrüßungstext
- Ledblau = 1
- Locate 1 , 1
- Lcd "0.4F KONDENSATOR"
- Locate 2 , 1
- Lcd "PUNKT-SCHWEISZER"
- Wait 3
- Locate 1 , 1
- Lcd " VERSION 150320 "
- Locate 2 , 1
- Lcd "ATMEGA 8 / 16MHz"
- Wait 3
- Ledrot1 = 1
- Ledrot2 = 1
- Ledrot3 = 1
- End If
- '*******************************
- 'Anzeige Stufe, Spannung, Schweissdauer, Energie und Summe aller Schweissungen
- If Lcd_aktualisieren = 254 Then
- Locate 1 , 1
- Lcd "S" '"S" fuer Stufe
- Locate 1 , 2
- Lcd Stufe 'Anzeige Stufe x
- Locate 1 , 3
- Lcd " "
- Locate 1 , 4
- Volt_anz = Str(volt_i) 'Integer fuer Spannungsanzeige nach String konvertieren
- Lcd Format(volt_anz , "00.0") 'Komma setzen und Spannung anzeigen
- Locate 1 , 8
- Lcd "V / "
- Locate 1 , 12
- If Zeit < 10 Then Lcd " "
- Lcd Zeit 'Anzeige Impulsdauer
- Locate 1 , 14
- Lcd " ms"
- End If
- '*******************************
- 'Anzeige Energie und Summe aller Schweissungen
- If Lcd_aktualisieren = 250 Then
- Locate 2 , 1
- Lcd "E= "
- Locate 2 , 4
- If J < 100 Then Lcd " "
- If J < 10 Then Lcd " "
- Lcd J
- Locate 2 , 7
- Lcd "J"
- Locate 2 , 8
- Lcd " S:"
- Locate 2 , 12
- If Anzahl < 10000 Then Lcd " "
- If Anzahl < 1000 Then Lcd " "
- If Anzahl < 100 Then Lcd " "
- If Anzahl < 10 Then Lcd " "
- Lcd Anzahl
- End If
- '*******************************
- 'Anzeige zum Einstellen der Schweissdauer
- If Lcd_aktualisieren = 253 Then
- Locate 1 , 1
- Lcd " SCHWEISSDAUER "
- If Stufe = 1 Then 'Stufe 1
- Locate 2 , 1
- Lcd "4-10 ms "
- Locate 2 , 10
- Lcd Chr(6)
- Locate 2 , 11
- If Zeit < 10 Then Lcd "0"
- Lcd Zeit
- Locate 2 , 13
- Lcd Chr(7)
- Locate 2 , 14
- Lcd " ms"
- End If
- If Stufe = 2 Then 'Stufe 2
- Locate 2 , 1
- Lcd "5-10 ms "
- Locate 2 , 10
- Lcd Chr(6)
- Locate 2 , 11
- If Zeit < 10 Then Lcd "0"
- Lcd Zeit
- Locate 2 , 13
- Lcd Chr(7)
- Locate 2 , 14
- Lcd " ms"
- End If
- If Stufe = 3 Then 'Stufe 3
- Locate 2 , 1
- Lcd "6-10 ms "
- Locate 2 , 10
- Lcd Chr(6)
- Locate 2 , 11
- If Zeit < 10 Then Lcd "0"
- Lcd Zeit
- Locate 2 , 13
- Lcd Chr(7)
- Locate 2 , 14
- Lcd " ms"
- End If
- End If
- '*******************************
- If Lcd_aktualisieren = 252 Then 'Schweißspannung zur gewaehlten Stufe zu hoch
- Locate 1 , 1
- Lcd "SPANNUNG ZU HOCH"
- Locate 2 , 1
- Lcd "!AUSSERHALB SOA!" '"Save Operating Area" laut Datenblatt des IXFH170N10P
- End If
- '*******************************
- If Lcd_aktualisieren = 251 Then 'Anzeige zum Einstellen der Schweissstufe
- Locate 1 , 1
- Lcd " SCHWEISSTUFE "
- If Stufe = 1 Then
- Locate 2 , 1
- Lcd "12,0-20,0 V "
- Locate 2 , 13
- Lcd Chr(6)
- Locate 2 , 14
- Lcd "S"
- Locate 2 , 15
- Lcd Stufe 'Stufe 1
- Locate 2 , 16
- Lcd Chr(7)
- End If
- If Stufe = 2 Then
- Locate 2 , 1
- Lcd "19,0-27,0 V "
- Locate 2 , 13
- Lcd Chr(6)
- Locate 2 , 14
- Lcd "S"
- Locate 2 , 15
- Lcd Stufe 'Stufe 2
- Locate 2 , 16
- Lcd Chr(7)
- End If
- If Stufe = 3 Then
- Locate 2 , 1
- Lcd "26,0-32,0 V "
- Locate 2 , 13
- Lcd Chr(6)
- Locate 2 , 14
- Lcd "S"
- Locate 2 , 15
- Lcd Stufe 'Stufe 3
- Locate 2 , 16
- Lcd Chr(7)
- End If
- End If
- Return