Forum: Mikrocontroller und Digitale Elektronik Kommunikations-Schnittstelle für Kalibrierungsparameter im µC


von Martin J. (martin-j)


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

von peterguy (Gast)


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.

von m.n. (Gast)


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.

von Stefan (Gast)


Lesenswert?

Nimm doch einfach UART. Ist standartisiert, einfach implementierbar und 
kann auch über einen Wandler direkt an den PC

von Falk B. (falk)


Lesenswert?

Schreib die Kalibierwerte per ISP in den EEPROM.

von Martin J. (martin-j)


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?

von dunno.. (Gast)


Lesenswert?

Was hindert dich, einfach ein paar Befehle zu definieren, und das 
umzusetzen?

Schau dir mal SCPI an, kommt in die nähe deiner Beispiele..

von Martin J. (martin-j)


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!

von W.S. (Gast)


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.

von m.n. (Gast)


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.

von Martin J. (martin-j)


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 
:)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.