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
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.
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.
Nimm doch einfach UART. Ist standartisiert, einfach implementierbar und kann auch über einen Wandler direkt an den PC
Schreib die Kalibierwerte per ISP in den EEPROM.
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?
Was hindert dich, einfach ein paar Befehle zu definieren, und das umzusetzen? Schau dir mal SCPI an, kommt in die nähe deiner Beispiele..
@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!
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.