Kommunikations-Schnittstelle für Kalibrierungsparameter im µC

OP #4556629
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe auf einer Platine eine Strom- und Spannungsmessung, deren 
Genauigkeit ich über eine Kalibrierung der tatsächlichen 
Widerstandswerte erhöhen möchte.

Da ich ein paar mehr Platinen herstellen möchte, fällt eine hart 
codierte Kalibrierung des Widerstandswerts (bzw. Faktor und Offset) im 
C-Code raus.

Jetzt schwebt mir vor, die Kalibrierung über eine einfache serielle 
Kommunikation zu machen und die Werte im EEPROM zu speichern. Die 
Kommunikationsschnittstelle sollte idealerweise auch noch genutzt werden 
können, um z.B. die Spannungen und Ströme vom Benutzer auszulesen.

Nun die Frage: Gibt es einen Standard bzw. ein Protokoll für sowas?

Modbus wäre eine Möglichkeit. Allerdings lässt sich mit Modbus wegen der 
notwendigen Prüfsummen schlecht "manuell" über ein Terminal mit dem µC 
reden, um ein paar Werte auszulesen.

Stelle mir irgendwie sowas vor:

SET:RSHUNT=2                   (Eingabe im Terminal)
> RSHUNT=2 successfully set    (Antwort vom µC)
GET:CURRENT                    (Eingabe im Terminal)
> CURRENT=5A                   (Antwort vom µC)

Ich kann mir natürlich selbst ein Protokoll ausdenken. Aber falls es 
einen Standard gibt, würde ich den gern übernehmen.

Wie läuft eine Kalibrierung einzelner Parameter bei der Produktion 
großer Stückzahlen? Auch über eine serielle Schnittstelle nachdem die 
Firmware geflasht wurde?

Grüße
Martin
Gast #4556818
Lesenswert?
• ▲
▼
Schau dir mal XCP an.
Das ist für deine Zwecke vielleicht ein wenig zu hoch aufgehangen, aber 
hierbei handelt es sich um ein weit verbreitetes Mess- und Kalibrier 
Protokoll.

Mit der Bedienung übers Terminal wird es allerdings ein wenig schwierig, 
da es sich um ein binäres Protokoll handelt.
Gast #4556828
Lesenswert?
• ▲
▼
Wozu der ganze Aufwand?
Hast Du noch freie Ports für Taster/Drahtbrücke? Dann nimm einen Eingang 
zum Setzen beider 0-Punkte. Je ein anderer Eingang übernimmt den 
aktuellen Messwert für U und I, der dem vorgegebenen Abgleichwert 
entspricht.
OP #4556940
Lesenswert?
• ▲
▼
Habe gerade mal ein bisschen über XCP nachgelesen. Vom Ansatz her suche 
ich genau so etwas, allerdings ist XCP wohl tatsächlich ein bisschen mit 
Kanonen auf Spatzen geschossen. Wenn das mal eben schnell zu 
implementieren wäre, würde Vector wahrscheinlich nicht eine ganze Menge 
Tools dafür verkaufen.

@Stefan: UART will ich als Low Level Ebene ja nehmen. Aber das gibt ja 
keinen Standard für ein Protokoll vor, um die Daten über die Leitung zu 
schicken.

@m.n.: Bin mir nicht sicher, ob ich deinen Ansatz ganz verstehe. Also 
Brücke/Taster, um die Software in den Kalibrier-Modus zu versetzen. 
Während der Kalibrierung muss ein definierter Strom/Spannung anliegen 
und dann rechnet sich die Software damit seine Korrekturfaktoren selbst 
aus, da sie weiß, was im Kalibriermodus von außen vorgegeben werden 
soll. Richtig verstanden?
OP #4556953
Lesenswert?
• ▲
▼
@Falk: Dazu muss ich ja dann trotzdem erstmal noch herausfinden, was der 
ADC des µC "sieht". Ich müsste also erst die Firmware flashen, dann den 
Test-Aufbau anschließen, mir vom µC die gemessenen Spannungen 
rausschicken lassen, daraus die Kalibrierwerte bestimmen und die Werte 
in den EEPROM schreiben. Irgendwie muss ich also auch dann mit dem µC 
kommunizieren.

@dunno: Hindert mich nichts dran. Aber ich bin immer dafür, nicht das 
Rad neu zu erfinden. Vielleicht hat sich dazu ja schonmal jemand ein 
schlaues System bzw. einen Standard ausgedacht. SCPI werde ich mir mal 
genauer anschauen. Danke!
Gast #4556962
Lesenswert?
• ▲
▼
Martin J. schrieb:
> UART will ich als Low Level Ebene ja nehmen. Aber das gibt ja
> keinen Standard für ein Protokoll vor, um die Daten über die Leitung zu
> schicken.

Wieso der Ruf nach einem Standard? Fühlst du dich so unselbständig, daß 
du dies nicht selbst definieren kannst?

Was du auf der µC-Seite brauchst, ist:
1. ein Kanal (also UARTxyz oder sonst was, das Zeichen (Bytes) rein und 
raus gehen läßt)
2. einen Treiber dazu
3. ein kleines Kommandoprogramm dazu, was im Falle von ankommenden 
Zeichen diese zu einer Kommandozeile auflaufen läßt und bei Zeilenende 
selbige auswertet.
4. innerhalb dieses Kommandoprogramms die Routinen zum Lesen und Setzen 
von Daten im EEPROM

Lade dir einfach die Lernbetty runter und nimm dort in der BettyBase 
cmd.c und die Sache ist vom Rahmen her erledigt. Deine eigenen Kommandos 
wirst du dir dann ja wohl selbst formulieren können.

W.S.
Gast #4556975
Lesenswert?
• ▲
▼
Martin J. schrieb:
> @m.n.: Bin mir nicht sicher, ob ich deinen Ansatz ganz verstehe. Also
> Brücke/Taster, um die Software in den Kalibrier-Modus zu versetzen.

Dafür braucht man keinen extra Modus, solange man die Taster (ggf. auch 
Steckbrücken) nicht von aussen oder aus Versehen erreichen kann.

Ausnahme könnte lediglich die 0-Punkt Einstellung sein: Spannungseingang 
kurzschließen, Stromeingang offen lassen und Taster drücken.
OP #4556998
Lesenswert?
• ▲
▼
W.S. schrieb:
> Martin J. schrieb:
>> UART will ich als Low Level Ebene ja nehmen. Aber das gibt ja
>> keinen Standard für ein Protokoll vor, um die Daten über die Leitung zu
>> schicken.
>
> Wieso der Ruf nach einem Standard? Fühlst du dich so unselbständig, daß
> du dies nicht selbst definieren kannst?

Es geht nicht darum, dass ich das nicht selbst definieren könnte. Und 
mit der Implementierung im C-Code habe ich auch kein Problem.

Aber falls es einen etablierten Weg gibt, um Parameter in einer 
Schaltung zu kalibrieren, warum sollte man den dann nicht nutzen? Hat 
den Vorteil, dass man ggf. kompatibel zu anderen Geräten ist bzw. 
vorhandene Tools nutzen kann.


Ich glaube SCPI ist ein guter Ansatzpunkt, auch wenn ich kein Messgerät 
entwickle. Werde mal ein bisschen in der 819 Seiten langen Doku stöbern 
:)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren