Car-PC.info

Netzteile / Spannungswandler - Hat jemand probiert statt ITPS ein C-Control zu nutzen ?

vbherodes - So 20 März, 2005 21:37
Titel: Hat jemand probiert statt ITPS ein C-Control zu nutzen ?
Ich habe versucht ein Programm zu basteln, welches die Funktionalität des ITPS übernimmt und eigentlich erweiterbar ist.

Hat jemand anderes auch schon mal ein C-Control missbraucht für so etwas ?

MfG
Marc
Unomania - So 20 März, 2005 22:13
Titel:
Wenn Du das C Control rumliegen hast ist es ja ok, aber ansonsten finde ich es etwas zu viel des Guten Wink
Ist doch viel zu schade für so eine einfach Funktion *g*
Hast Du das Programm schon fertig ? Wenn ich mir das so überlege ist es eigendlich nicht sehr schwer....
Habe auch ein C Control hier liegen...
Boiner - So 20 März, 2005 22:47
Titel:
Ich nutz die C-Control jetzt ca 3 Wochen in meinem Auto für
1. ITPS Funktion für Laptop ein/ausschalten
2. Monitor ein/ausschalten und Auch Simulation des AutoPowerOn für mein MM400
3. Mit Modellbauservo für bedienung der Blende für Monitor (Laguna I)
4. Als Relaiskarte für diverse Sachen zB. Versärker ausschalten im längeren Stand

Und ich voll zufrieden damit.

Es ist eine M-Unit der 1.Generation

Ein Bericht folgt Bald
vbherodes - Mo 21 März, 2005 05:38
Titel:
Ich bin wie gesagt noch am testen, allerdings habe ich eine mit Macke behaftete Version meines ITPS und AMP Steuerung fertig.

Ich habe das Programm allerdings in mBasic geschrieben.

Wenn ihr es Euch antun wollt mBasic mal runterzuladen, dann würde ich meinen aktuellen Code mal mailen.

Da ist auch ein Simulator drin, da kann man auch sehen was passiert.

MfG

Marc
jwe297 - Mo 21 März, 2005 07:11
Titel: c-control
Hallo

ich habe auch noch so ein C-Control und habe auch schon überlegt ob ich es als ITPS verwende. Kann man das Programm bekommen - man muß das Rad je nicht zweimal erfinden.

MfG
jwe297
vbherodes - Mo 21 März, 2005 09:52
Titel:
Wenn ich mal eine Stand erreicht habe, der einigermassen funktioniert, dann ja.

Zur Zeit funktioniert folgendes:

Zündung wird eingeschaltet :
- prüfung ob Boardspannung > 13 Volt
- Zigarettenanzünderbuchsen freigeben
- Spannungsversorgung für CarPC wird aktiviert
- ATX Impuls wird gesendet
- Spannungsversorgung für AMP wird aktiviert
- AMP Remote wird aktiviert

ein Kontrolliertet Shutdown bei unteschreiten der Boardspannung (eingestellter Wert ist momentan 11 Volt) oder beim abziehen des Zündschlüssels ist schon drin.

Die Spannungsüberwachung hat bereits eibne Hysterese, sprich erst ab 13V wird wieder zugeschaltet. Es wird der CarPC und der AMP aber nicht wieder eingeschaltet, sonder erst beim nächsten Zündung ein (also wiedereinschalten nur über Null).

Instabiles verhalten habe ich während des Einschaltens, wenn ich im Startupprozess (ca 30 sekunden) die Zündung abziehe, da arbeite ich noch dran.

Ich habe leider keine Erfahrung, was das echte ITPS in diesem falle macht, oder was eine angemessene Reaktion wäre.

Auch habe ich die software noch nicht in der C-Control laufen lassen, da mir ein serielles Kabel zur Zeit fehlt Sad(
Im Simulator gehts aber schon Smile)

MfG
Marc
Boiner - Mo 21 März, 2005 16:27
Titel:
Zitat:
Instabiles verhalten habe ich während des Einschaltens, wenn ich im Startupprozess (ca 30 sekunden) die Zündung abziehe, da arbeite ich noch dran.


Bei mir startet der CarPC normal und danach wieder in den Ruhezustand
Die 3 Min hält selbst die fast leerste Batterie aus oder nicht?
(Hochfahren Dann ne kleine Verzögerung und wieder in den Ruhezustand)

Quelltext meines C-Control Basic Programms
vbherodes - Mo 21 März, 2005 19:08
Titel:
Der Link ist leider Kaputt, genau wie die Formatierung des Codes Sad

aber mein Code :



' *** Daten-Definition ***
Dim LCD_buf, LCD_param As Byte
Dim outnum, tmp As Word
Dim Text$ As String

' *** Definition LCD-Ports ***
Dim LCD_port As Byte Port[2]
' Dim LCD_rw As Boolean Port[2, 5]
' Dim LCD_rs As Boolean Port[2, 6]
Dim LCD_e As Boolean Port[2, 7]
Const LCD_Width = 16 ' Anzahl der Zeichen pro Zeile
Const LCD_Pos[4] = Array {&H80, &HC0, &H94, &HD4} ' &H80 plus Zeilenanfangsadresse
' einige ASCII-Codes
Const Minus = 45 ' "-"
Const Punkt = 46 ' "."
Const NULL = 48 ' "0"
Const Doppelpunkt = 58 ' ":"
Const Fragezeichen = 63 ' "?"

' Definition des Tastatureingangs
Dim Keyboard As Byte AD[8]

' *** Main ***
Dim E2_IGN_STAT_OLD As Boolean
Dim CARPC_STAT As Boolean
Dim FOOT_LIGHT_STAT As Boolean
Dim MUSIC_BYPASS_STAT As Boolean
Dim POLICE_SHUTDOWN As Boolean
Dim VOLT_CHECK_STAT As Boolean
Dim DISP_MSG As Byte

' AD Ports
Dim ANA_E1_BRDSPG As Byte AD[1]

' DIGI EIN Ports
Dim E1_CARPC_PWR_LED As Boolean Port[1,5]: Deact E1_CARPC_PWR_LED
Dim E2_IGN_STAT As Boolean Port[1,8]: Deact E2_IGN_STAT

' DIGI AUS Ports
Dim A1_AMP_REMOTE As Boolean Port[1,1]
Dim A2_AMP_SVR As Boolean Port[1,2]
Dim A3_CARPC_SVR As Boolean Port[1,3]
Dim A7_CARPC_ATX As Boolean Port[1,7]
Dim A4_SVR_ZIGARETTE As Boolean Port[1,4]
Dim A6_SVR_DISPLAY As Boolean Port[1,6]
Dim A9_SVR_UBB As Boolean Port[2,1]


'*** Programmoperationen ***
'Call LCD_INIT
Do Until 0=1
E1_CARPC_PWR_LED = -1: Pause 1: E1_CARPC_PWR_LED = 0
Call VOLT_CHECK
If VOLT_CHECK_STAT = -1 Then
A4_SVR_ZIGARETTE = -1
If E2_IGN_STAT <> E2_IGN_STAT_OLD Then
If E2_IGN_STAT = -1 Then
CARPC_STAT = -1
Call CARPC_START_UP
Call AMP_START_UP
Else
If A3_CARPC_SVR = -1 Then
Call CARPC_SHUT_DOWN
End If
If A2_AMP_SVR = -1 Then
Call AMP_SHUT_DOWN
End If
End If
E2_IGN_STAT_OLD = E2_IGN_STAT
End If
Else
A4_SVR_ZIGARETTE = 0
If A3_CARPC_SVR = -1 Then
Call CARPC_SHUT_DOWN
End If
If A2_AMP_SVR = -1 Then
Call AMP_SHUT_DOWN
end if
End If
Loop

'****************************************************************************************************************************
Sub VOLT_CHECK
If VOLT_CHECK_STAT = 0 Then
If ANA_E1_BRDSPG > 190 Then
VOLT_CHECK_STAT = -1
Else
VOLT_CHECK_STAT = 0
End If
Else
If ANA_E1_BRDSPG > 170 Then
VOLT_CHECK_STAT = -1
Else
VOLT_CHECK_STAT = 0
End If
End If
Return
End Sub
'****************************************************************************************************************************
Sub CARPC_START_UP
' Call LCD_WRITESTRING("Starte CarPC ...")
A3_CARPC_SVR = -1
Pause 100
A6_SVR_DISPLAY = -1
Pause 10
Call CARPC_ATX_IMPULS
Return
End Sub
'****************************************************************************************************************************
Sub AMP_START_UP
' Call LCD_WRITESTRING("EndStufe an ...")
A2_AMP_SVR = -1
Pause 100
A1_AMP_REMOTE = -1
Return
End Sub
'****************************************************************************************************************************
Sub AMP_SHUT_DOWN
' Call LCD_WRITESTRING("Endstufe aus ...")
A1_AMP_REMOTE = 0
Pause 100
A2_AMP_SVR = 0
Return
End Sub
'****************************************************************************************************************************
Sub CARPC_SHUT_DOWN
' Call LCD_WRITESTRING("CarPC SHutdown")
Call CARPC_ATX_IMPULS
Pause 100
A6_SVR_DISPLAY = 0
Pause 10
A3_CARPC_SVR = 0
Return
End Sub
'****************************************************************************************************************************
Sub CARPC_ATX_IMPULS
A7_CARPC_ATX = -1
Pause 5
A7_CARPC_ATX = 0
Return
End Sub
'****************************************************************************************************************************


'****************************************************************************************************************************



'###############################################################################################
'*** LCD_Interface ***
'( muss in jedes Programm mit LCD-Ausgabe eingefuegt werden)

Sub LCD_INIT

' alle ports 0
'LCD_port = False

' 8-Bit-Modus aktivieren
Call LCD_WRITECMD(&H38)

' mit 8-Bit-Command in 4-Bit-Modus umschalten
LCD_port = &B00000010
Switch LCD_e
Switch LCD_e

' ab jetzt 4-Bit-Modus
Call LCD_WRITECMD(&H28)
Call LCD_WRITECMD(&H0C)
Call LCD_CLS
End Sub

' Display loeschen und home
Sub LCD_CLS
Call LCD_WRITECMD(&H02)
Call LCD_WRITECMD(&H01)
End Sub

' Zeilenwechsel - besser gleich LCD_GOTO verwenden - spart eine Call-Ebene
'Sub LCD_GOTOLINE(LCD_param)
' Call LCD_GOTO(LCD_param, 0)
' Alternativer Code:
' Select Case LCD_param:
' Case Is = 1 : Call LCD_WRITECMD(&H80)
' Case Is = 2 : Call LCD_WRITECMD(&HC0)
' ' für vierzeiliges Display bis 4x20 Zeichen
' ' Case is = 3 : Call LCD_WRITECMD(&H94)
' ' Case Is = 4 : Call LCD_WRITECMD(&HD4)
' End Select
'End Sub

' Absolute Position am Display ansprechen
' erster Parameter Zeile, zweiter Parameter Zeichen in der Zeile
' für zweizeiliges Display bis 2x40 oder vierzeiliges Display bis 4x20 Zeichen
Sub LCD_GOTO(LCD_param, LCD_buf)
Call LCD_WRITECMD(LCD_buf+LCD_Pos[LCD_param])
End Sub

' Zahlenausgabe - nur benötigte Stellen ausgeben
Sub LCD_WRITENUM(outnum)
If (outnum<0) Then
Call LCD_WRITECHAR( Minus )
outnum = Abs(outnum)
Else
If (outnum=0) Then
Call LCD_WRITECHAR( NULL )
End If
End If
tmp = 10000
Do
If outnum>=tmp Then
Call LCD_WRITECHAR( NULL + ((outnum/ tmp) Mod 10) )
End If
tmp = tmp/10
Loop While (tmp>=1)
End Sub

' Stringausgabe
Sub LCD_WRITESTRING(Text$)
For tmp = 1 To Text
Call LCD_WRITECHAR(Text$[tmp])
Next tmp
End Sub

' Zeichenausgabe
Sub LCD_WRITECHAR(LCD_Param)
Call LCD_WRITE(&B00100000, LCD_param)
End Sub

' Kursor blinken ein/aus
' Parameter:
' 0: Cursor aus
' 1: Cursor als blinkender Block
' 2: Cursor als Unterstrich
' 3: Cursor als blinkender Block mit (festem) Unterstrich
' ACHTUNG: alles andere ist nicht erlaubt!
Sub LCD_CURSOR( LCD_param )
Call LCD_WRITECMD(&H0C+(LCD_param And 3))
End Sub

' LCD-Kommando
Sub LCD_WRITECMD(LCD_param)
Call LCD_WRITE(False, LCD_param)
End Sub

' Kommando oder Zeichen an Display senden
Sub LCD_WRITE(LCD_buf, LCD_param)
LCD_port = LCD_buf Or (LCD_param ShR 4) ' Hi-Nibble
Switch LCD_e
Switch LCD_e
LCD_port = LCD_buf Or (LCD_param And &H0F) ' Lo-Nibble
Switch LCD_e
Switch LCD_e
End Sub

' *** Tastaturinterface

' positive Zahl von 12er Tastatur einlesen
' "#" beendet Eingabe
' "*" löscht letztes Zeichen
Function Readnum
outnum = 0
Do
Do : Loop Until (Keyb <> 13)
tmp = Keyb
' Hier könnte ein Tastenbeep sein
' beep = 1000 : pause 1 : beep = 0

Select Case tmp:
Case 0 To 9 : If outnum<=3276 Then outnum = 10*outnum + tmp : End If
Case Is = 10 : outnum = outnum/10
Case Is = 12 : Readnum = outnum : Exit Function
End Select
' Hier könnte das Zwischenergebnis ausgegeben werden
' Print outnum
Do : Loop Until (Keyb = 13) '
Loop
End Function

' Tastatur numerisch auslesen, *=10, #=12, keine Taste=13
Function Keyb
LCD_buf = Keyboard/20
LCD_buf = 10+13*(LCD_buf ShR 2)-3*LCD_buf
If LCD_buf = 11 Then Keyb = 0
Else Keyb = LCD_buf
End If
End Function

#####################################
Im obigen Beispiel sind die Pausewerte nur zu testzwecken so niedrig eingestellt,also nix für reale Bedingungen !


Ich hatte vor die pause Stellen durch eine Timergesteuerte JOBListe zu ersetzen. Der Vorteil leigt darin, dass dann die anderen Überwachungsaufgaben nicht gestoppt sind ! Ein unschätzbarer Vorteil finde ich. Allerginds hab ich keien Ahnung wann der Timer überläuft (bei 65535 evtl. ???)

MfG

Marc
vbherodes - Mo 21 März, 2005 20:55
Titel:
So, der überlauf ist wohl bei 32768, und wird dann negativ und läuft wieder hoch.
Sollte wohl zu handeln sein ...

MfG
Marc
Fabse - Mo 21 März, 2005 23:26
Titel:
das klingt voll interessant was ihr hier so schreibt, aber was genau ist ein C-Control? hat das was mit der programmiersprache c zu tun? der gepostete code ist ja irgendwas basic-behaftetes
Dirk - Di 22 März, 2005 00:03
Titel:
kurz gesagt ist c-Controll n Microcontroller, der nahezu beliebig Programmiert werden kann, und ebenfalls stark ausgebaut werden kann durch dementsprechende Erweiterungsboards. Falls du die Basic - Stamp der Zeitschrift Elektor kennen solltest, dass ist sozusagen das Pendant dazu Smile
Fabse - Di 22 März, 2005 11:25
Titel:
ok wenn sound und rechner in optimistisch gesehen vielleicht 2 wochen im auto funktionieren, dann werde ich mich an so ein teil ranmachen. seh ich doch richtig, dass das teil auch arbeitet, wenn der rechner aus ist, oder ? man könnte coole sachen machen, wenn man das teil mit der restlichen boardelektronik verkabelt. *träum*

lol ich bau mir mein eigenes brake-by-wire und steer-by-wire. naja und auf meinem grabstein soll stehen .... *g*
vbherodes - Di 22 März, 2005 12:50
Titel:
Also,

das Gerät soll eigentlich ständig laufen (es verbraucht ja keine Unmengen an Strom und zur Not kann man da nochmal was runtertakte).

Ich für mich möchte z.B. Verbraucher wie die Fußraumbeleuchtung oder die Unterbodenbeleuchtung *ja hack alle auf mich ein* AUCH OHNE RECHNER steuern können.
Auch eine Radio Fallbackschlatung will ich ansteuern können, dass wenn der PC muckt, wenigstens das Radio auf den AMP geschaltet wird und ich Radio hören kann.

Einen "Ordnunghüter - Konformschalt - Knopf" hab ich auch geplant, nach dem Motto: Alle Beleuchtung + Xenarc Dunkel ...
Ist machbar ... , ... und wenn man schonmal Hand anlegt.

Weiterhin hat man ja über den Com Port des C-Control (an PC ran)
Daten zu verschicken, also auch Geräte zu schalten und Sensordaten an den PC schicken.

Wo ich mir noch nicht sicher bin ist die Frage, ob ich das Display dran lasse oder nicht, denn es frißt glaube ich zuviele Ports Sad((
(man kann nicht alles haben). Für die Bedienung wäre es allerdings extrem cool. Die Tastatur nimmt nur einen AD Port, das wäre vertretbar.


Alles in allem für mcih die beste Wahl.

MfG

Marc

P.S.: so, jetzt komm ich wieder runter ....
Boiner - Di 22 März, 2005 21:01
Titel:
Zitat:
Wo ich mir noch nicht sicher bin ist die Frage, ob ich das Display dran lasse oder nicht, denn es frißt glaube ich zuviele Ports ((
(man kann nicht alles haben). Für die Bedienung wäre es allerdings extrem cool. Die Tastatur nimmt nur einen AD Port, das wäre vertretbar.


Dazu hätte ich noch einen Vorschlag.
Es gibt doch auch Displays mit I²C Bus und für die ansteuerung hab ich auch schon mal einen Quellcode in Assembler gesehen
Das Problem ist nur das ich in c-Control Basic und du in MBasic programmierst
Wo bekomme ich MBasic überhaupt her? Bei Google gehen alle Links irgentwie ins nichts
vbherodes - Mi 23 März, 2005 13:08
Titel:
Alos der Link ist:

http://www.nettypes.de/mbasic/

Das Programm kann man registrieren, wenn man Code hat, der mehr als 1000 Byte hat.

Der Maschinencode soll kleiner sein als bei dem Conrad Compiler und man hat endlich nen vernünftiges Basic und Features, (z.B. Strings usw) die man bei dem Conrad Basic nicht hat.

Gescheite IF-Konstruktionen usw. gibt es auch.

Die Regsitrierung ist kostenlos für privat!

Das Display vom Application Board ist glaube ich über I²C angesteuert, oder ? (wenn dann wollte ich zwecks Kostenersparnis auch das verwenden, bevors bei mir in der Schublade verschimmelt).

Einziges Problem, ich hab noch kein mBasic Programm in die C-Control geladen, man wird also noch abwarten müssen, ob das alles so klappert wie ich das gerne hätte.

*ich bin guter Dinge ...*

Wenns wider erwarten garnicht gehen sollte, dann muss ich zurückschwenken auf Conrad Basic, nur dann wirds schwer ... Sad

MfG
Marc
vbherodes - Mi 23 März, 2005 13:45
Titel:
Ich habe gerde nochmal bei www.Conrad.de vorbeigesehen und war erst mal überwältigt, was es jetzt alles gibt , wenn man nach c-control sucht ....

Egal, also das Display beim ApplikationBorad ist natürlich NICHT über I²C Bus angesteuert, sprich ich hab noch Potential, der I²C braucht wieviele Adern , Ausgänge .. ?? (2, kann das sein SDA, SCL)
MfG
Marc
Boiner - Mi 23 März, 2005 16:59
Titel:
Es is schon interessant die ganzen Controller, besonders die Mini Version im 8 pol. Gehäuse hats mir angetan, vom Preis, als billiger ITPS Funktionsersats und ein paar andere Sachen.



Stimmt I²c Bus braucht nur 2 Steuerleitungen
Auf der C-Control wird der I²C Bus schon für den Datenaustausch zwischen Controller und dem EProm genutzt.
Und Irgentwo hab ich mal ein Programm zur ansteuerung gesehen.

Display gefunden... Conrad Artikel-Nr.: 198330 - U4
Das scheint aber ein normales paralleles Display mit angebauter Controllerplatine zu sein. Vielleicht bekommt man es auch extra irgentwoher, denn so wär's für mich viel zu teuer
vbherodes - Mi 23 März, 2005 22:33
Titel:
Also

mehreres:

- ein Modell für die timergesteuerte JOBLISTE läuft bereits Smile
- mein Proggi ist zum ersten mal in der CC gelaufen Smile))
- Hab angefangen das LCD einzbinden, dass der User sieht, was gerade passiert

mehr morgen ...

@Boiner: Hast Du dir das mBasic mal angetan ?


MfG
Marc
vbherodes - Do 24 März, 2005 14:23
Titel:
So, ich stell mal ne neue Version Online, wer will kann Sie ja mal im Simulator testen ....

Geplante Punkte :
+ Backup Batterie Umschaltung (benötigt 1 Ausgang und einen ANA Eingang)
- Bei Zündung aus -> auf Backup Batterie
- Bei Backupbetrieb und Zündung kommt -> Hauptbatterie
- Bei Boardspannung unter kritischen Punkt (evtl. um die 11 V)-> Backup Batterie
- Wenn Backupbatterie leer -> Shutdown einleiten




MfG
Marc
Boiner - Do 24 März, 2005 16:47
Titel:
@vbherodes:
Ich hab schon mal versucht einige kleine C-Control Basic Programm in mBasic umzuschreiben. Ist echt genial. Brick wall
Und die Programme werden irgentwie Übersichtlicher
vbherodes - Do 24 März, 2005 18:49
Titel:
<besserwissermode>
sach isch doch
</besserwissermode>
Also
Hast Du ne Ahnung wieviele Integers man im CCBasic hat ?
UND
Hast Du das CPO File mal angetestet ?


MfG
Marc
Boiner - Do 24 März, 2005 19:38
Titel:
Insgesammt stehen
- 12 Wordvariablen (Integer) oder
- 24 Bytevariablen oder
- 192 BitVariablen (Boolean) zur verfügung
die sich ineinander Verschachteln
Aber es gibt ein Bug im System
Hier steht alles noch mal genau unter 'Automatische Speicherplatzzuweisung durch den C-Control/BASIC-Compiler'.
Das Beispiel darin ist in ccbasic.

Konnt das File noch nicht testen, hab mich noch nicht registriert(kommt gleich)
vbherodes - Mi 30 März, 2005 14:38
Titel:
Update ....

Backupumschaltung ist drin (hoffentlich ist die in der Realität schnell genug)

MfG
Marc
Boiner - Mi 30 März, 2005 20:52
Titel:
Hast du das schon mal auf der Unit getestet?
Was mir gleich aufgefallen ist:

'Dim A9_SVR_UBB As Boolean Port[2,1]'

der Port ist schon vom display belegt

'Dim LCD_port As Byte Port[2]'

port 2,1 ist nämlich das 1. Datenbit vom lcd.

Aber sonst bin ich schon am überlegen ob ich mir das klaue, obwohl ich mit meinem sehr zufrieden bin. Überlege gerade die freq ports für ne tachosimulation zu nehmen

MFG
Jens
vbherodes - Do 31 März, 2005 06:53
Titel:
Hallo Boiner,

der A9 ist schon raus !, habs auch gemerkt Smile)

Und Frequenzeingang für Tachosignal ist nice ! (man denke Richtung GALA)

Kannst Du mir vielleicht helfen bei der I²C Bus Sache helfen.
Ich Suche eine Möglichkeit Ports über I²C dann anzusprechen. (Ich habe zu Hause noch ein 8255 gefunden, der bietet 24 IO Ports, evtl kann man da ja was machen)
Die 8 IO Ports sind ja jetzt schon völlig ausgeschöpft !

Zum zweiten wäre eine Programmoptimierung notwendig, es ist sowas von Wüst und durcheinaneder, also wenn Du mal loslegen willst (bei Absprache kann man auch per ICQ oder so Online dran arbeiten). Im schlimmsten Falle ein rewrite in "strukturiert!" angehen, denn es macht zwar was es soll, aber da kann man bestimmt nochmal was tunen !

MfG
Marc
Alle Zeiten sind GMT + 1 Stunde
Powered by phpBB2 Plus and Kostenloses Forum based on phpBB