Guten Morgen zusammen!
Ich bin neu in der Elektronikentwicklung und habe in einem Lastenheft
folgendes stehen:
Hardwareversionserkennung:
Die Version der Hardware ist spannungscodiert. Der Spannungswert für die
Hardwareversion ergibt sich durch:
U = (2.5V/128)*Versionsnummer
Insgesamt sind auf der Leiterplatte die Hardwareversionsnummern 0 bis
127 vorzusehen. Die zu verwendende Verionsnummer ist gesondert geregelt.
Nun meine Frage: Hat von Euch schon mal jemand so was ähnliches gemacht?
Oder hat einer eine Idee, wie man das verwirklichen könnte? Eventuell
mit Dip-Schaltern?
Ich danke Euch jetzt schon für Eure Antworten.
Gruss Patrick
P.S. Warum das so gewünscht wird, tut hier nichts zur Sache.
Patrick wrote:
>> Oder hat einer eine Idee, wie man das verwirklichen könnte? Eventuell> mit Dip-Schaltern?>
Hallo Patrick,
wir haben hir auch solche "Codierungen" auf den Baugruppen.
Je nach Version werden festgelegte Wiederstände bestückt/nichtbestückt.
Das sind ganz normale SMD-Teile, so das es keine Schalter gibt...
Das ist allerdings eine "digitae" Variante...
nitram
ich hab sowas schon mal gemacht mit einem Spannungsteiler und
wechselbaren Widerständen. Allerdings mußt du dann die Toleranzen
berücksichtigen und die erlaubten Spannungsbereiche ausrechnen und einem
Wert zuweisen.
Patrick wrote:
> Nun meine Frage: Hat von Euch schon mal jemand so was ähnliches gemacht?
Ne, sowas macht keiner.
127 Stufen, da sind ja schon 1% Widerstände zu schlecht.
Sowas macht man binär.
Und wenn die Pins nicht reichen, nen 74HC165 dahinter und seriell
auslesen.
Peter
Fällt das nicht unter "Prinzip DA-Wandler"?
Es müsste also ein R2R-Netzwerk sein.
http://de.wikipedia.org/wiki/R2R
Per Jumper/Lötbrücke liesse sich dann die Versionsnummer
"einprogrammieren".
Patrick wrote:
> Würde es so grundsätzlich funktionieren, wie im Anhang gezeichnet?
So und schon gibts böses Blut mit der Materialbeschaffung, weil die
extra für Dich neue Präzisionswiderstände abseits der E24-Reihe anlegen
müssen.
Oder die drücken Dir einfach die hier in die Hand:
1k, 2k, 3.9k, 8.2k, 16k, 33k, 62k, 130k
Ein 74HC165 ist viel billiger als ein Haufen Präzisionswiderstände.
Peter
@ Peter Dannegger (peda)
>Ein 74HC165 ist viel billiger als ein Haufen Präzisionswiderstände.
Naja, aber der braucht drei Pins zur Ansteuerung, einen Spannungsteiler
kann man über einen freien ADC-Kanal einlesen.
Ich frage mich, wer 128! Hardwareversionen kodieren will. 16 oder 32
sind mit normalen Widerständen vielleicht noch machbar, darüber hinaus
wirds unsicher bzw. man braucht sehr genaue Widerstände.
Ausweg. Einige Prozessoren werden digital mit Reset-Werten versorgt,
indem man den Datenbus mittels Pull-up /Down definert treibt. Am Start
liest der Prozessor die Daten ein und reagiert entsprechend. Im Betrieb
stören die Pull-Up/Downs dann nicht weiter.
MFG
Falk
Patrick wrote:
> Ich glaub ein 8bit AD-Wandler ist genau das richtige.
Nein, der ist völlig ungenügend, Du hast keinerlei Erkennungssicherheit!
Es sei denn, Du willst ihn als Zufallsgenerator verwenden.
Außerdem ist Deine Schaltung stark nichtlinear, da dürfte selbst ein
10Bit-ADC zu schlecht sein.
Peter
Falk Brunner wrote:
> @ Peter Dannegger (peda)>>>Ein 74HC165 ist viel billiger als ein Haufen Präzisionswiderstände.>> Naja, aber der braucht drei Pins zur Ansteuerung
Latch und Clock kann man bestimmt mit anderen Ausgangspins multiplexen
(z.B. SPI), bleibt nur ein Eingangspin übrig.
Peter
Ich hätte eher einen 1-wire EEPROM (gibt's sogar als OTP) genommen.
Da haste gleich noch eine Seriennummer mit dabei.
Wie Falk schon schrieb, so'ne Methode mag für 16 oder 32 Werte gehen,
für 127 stolperst du einfach über allerlei Genauigkeitsprobleme
(die Widerstände selbst, die Auflösung des AD-Wandlers, selbst wenn
du von den 8 bits nur 7 benutzt).
Ich bau mir einfach meinen eigenen 7-bit DA-Wandler nach angehängtem
Schaltplan. Die Codierung kann ich dann über Jumper verändern. Die
Genauigkeit kann ich vernachlässigen.
@ Patrick (Gast)
>Dateianhang: cod.jpg (39,6 KB, 7 Downloads)Bildformate>Genauigkeit kann ich vernachlässigen.
???
Woher die kühne Aussage? Und was sollen die OPVs? Zum di Schaltung des
ersten OPVs überaus merkwürdig ist.
MFG
Falk
Falk Brunner wrote:
>>Genauigkeit kann ich vernachlässigen.> Woher die kühne Aussage?
Wahrscheinlich genügt es, wenn er die Hardwareversion ,,nur so
ungefähr'' erkennt. ;-)
>Und was sollen die OPVs?
Siehe hier Seite 24/39:
www.ant.uni-bremen.de/teaching/slab/adda_ss2007_de.pdf
Der zweit OP ist nur, um das Vorzeichen zu wechseln.
>Woher die kühne Aussage?
Seien wir mal ehrlich. Ist eine Verionserkennung so wichtig, dass ich
alle Genauigkeiten berücksichtigen muss? Ich glaube kaum.
>Bildformate
Wenn ich eine Software zu Umwandlung des Bildformates zur Hand hätte,
hätte ich das natürlich für Dich gemacht.
Warum kein normales Spindelpoti? Klar, das muss natürlich bei der
Herstellung abgelichen werden, dafür sind keine engtolerierten
Einzelwiderstände erforderlich.
Anderer Punkt: Bei allen bisher vorgeschlagenen Lösungen (auch bei
meiner) brauchst du auch noch eine Referenzspannungsquelle mit einer
Genauigkeit von deutlich besser als 1/128. Zusammen mit den Wider-
ständen, einem Opamp als Impendanzwandler und ein paar Kondensatoren
zur Störunterdrückung ist schon ein Großteil der Platine nur mit der
Versionsabfragemöglichkeit gefüllt.
Wie sieht es aus mit Temperaturdrift und Alterung? Mir erscheint eine
Genauigkeit von 1/128 für die gesamte Kette von Referenzspannungs-
quelle, Widerstände, Impedanzwandler und A/D-Umsetzer (der seinerseits
wider von einer Referenzspannungsquelle abhängt) ziemlich
abenteuerlich.
Könnte man nicht wenigstens zwei Ausgänge vorsehen, die jeweils
einen von 16 Spannungswerten annehmen? Die Genauigkeit von 1/16 ist
problemlos machbar, und es ist sogar Platz für 256 Versionsnummern.
@ Patrick (Gast)
>www.ant.uni-bremen.de/teaching/slab/adda_ss2007_de.pdf
Wenn du den Link VOLLSTÄNDIG mit http:// reinstellst, wird er
automatisch als Link angezeigt.
>Der zweit OP ist nur, um das Vorzeichen zu wechseln.
Sind beide unnötig. Der R2R DAC spuckt auch so eine positive Spannung
aus.
http://www.avr-asm-tutorial.net/avr_de/avr_dac.html>>Woher die kühne Aussage?>Seien wir mal ehrlich. Ist eine Verionserkennung so wichtig, dass ich>alle Genauigkeiten berücksichtigen muss? Ich glaube kaum.
AHHHH!!! Hast du ein paar Smilies vergessen? Ohhhhhh Mann, die Studenten
von heute . . ., naja sichert meinen Arbeitsplatz.
>>Bildformate>Wenn ich eine Software zu Umwandlung des Bildformates zur Hand hätte,>hätte ich das natürlich für Dich gemacht.
Legastheniker?
Zitat aus dem Wikiartikel
"Das weit verbreitete Schaltplan- und Layoutprogramm EAGLE bietet
direkt die Möglichkeit, Schaltpläne und Layouts als PNG-Bild zu
exportieren (Menu File->Export->Image). Aber bitte nicht die Auflösung
zu hoch einstellen! Die Voreinstellung von 150 dpi ist meist optimal!"
>Hier nochmal für Falk Brunner.
Es ist sinnlos solche kleinen Bilder doppelt zu senden. Es ging mir
darum, dass du es beim nächsten Mal richtig machst.
MFG
Falk
@ yalu (Gast)
>Warum kein normales Spindelpoti? Klar, das muss natürlich bei der>Herstellung abgelichen werden,
EBEN! Weisst du was das kostet in grossen Stückzahlen?
> dafür sind keine engtolerierten>Einzelwiderstände erforderlich.
Die platziert der Automat allein.
>Anderer Punkt: Bei allen bisher vorgeschlagenen Lösungen (auch bei>meiner) brauchst du auch noch eine Referenzspannungsquelle mit einer>Genauigkeit von deutlich besser als 1/128.
Nöö, er muss nur die Referenz des ADC anzapfen, die kann dann sogar
ungenau wie Sau sein. -> Ratiometrische Messung.
> Zusammen mit den Wider->ständen, einem Opamp als Impendanzwandler und ein paar Kondensatoren>zur Störunterdrückung ist schon ein Großteil der Platine nur mit der>Versionsabfragemöglichkeit gefüllt.
;-) HighTec.
MFG
Falk
Die Referenzspannung wird von einem MP430 erzeugt. Die Bauteile sind
alle SMD, brauchen also nicht all zu viel Platz. Wie gesagt, die
Genauigkeit ist nicht kritisch. Davon hängt ja keine massgebende
Funktion der ganzen Schaltung ab. Wenn 256 Versionsnummern gefragt
wären, hätte ich einen Handelsüblichen 8-bit D/A-Wandler verwenden
können. Da würden die ganzen Widerstände und OPs wegfallen. Aber in so
einem Baustein ist auch nichts anderes drin wie in meiner Schaltung.
@Falk
>die Studenten von heute
Wer bitte sagt, ich sei Student?
>Sind beide unnötig. Der R2R DAC spuckt auch so eine positive Spannung aus.
Aber ist der Wert der Spannung auch gleich der Formel
U=(2.5V/128)*Versionsnummer?
Das war gefordert (siehe erstes Posting)
>dass du es beim nächsten Mal richtig machst.
Ich werds versuchen ;-)
Selten so einen hohen Aufwand für eine derart einfache Aufgabe gesehen.
Wenns denn unbedingt analog sein muß, nimm doch nen ATtiny24, hängt an
einen Port die 7 Jumper ran und ab damit auf die PWM, nen RC-Glied
dahinter, fertisch.
Der ATtiny24 wird dann mit der gleichen Spannung betrieben, die der
nachfolgende ADC als Referenz nimmt und schon sind auch sämtliche
Genauigkeitsanforderungen vom Tisch.
Der ADC ist dann mindestens 10Bit, damit man die Schwellen immer genau
zwischen 2 Spannungspegel setzen kann.
Hauptsache, zwischen ATtiny24 und ADC sind die Massepotentiale gut
verbunden.
Alternativ kann man aber auch die PWM übertragen und per Timer das
Tastverhältnis messen lassen. Dann sind Spannungsdifferenzen egal.
Peter
@ Patrick (Gast)
>alle SMD, brauchen also nicht all zu viel Platz. Wie gesagt, die>Genauigkeit ist nicht kritisch.
So ein Blödsinn! Warum dann der Affentanz mit 128 Versionsnummern?
Dein PC kann ja ruhig alle 3 Stunden abstürzen, ist ja nicht so
tragisch.
>Funktion der ganzen Schaltung ab. Wenn 256 Versionsnummern gefragt>wären, hätte ich einen Handelsüblichen 8-bit D/A-Wandler verwenden
Ohje Ohje. Dir ist das Problem scheinbar nicht ganz klar.
1.) es muss eine Analogspannung mit 1/128 Genauigkeit erzeugt werden.
Das kann auch ein 8 Bit DA-Wandler.
2.) Diese Spannung muss mit einem AD-Wandler wieder genau gemessen
werden.
Nur ist es "etwas" illusorisch anzunehmen, dass ein 8 Bit AD-Wandler so
ohne weiteres fehlerfrei ein Signal des 7 Bit DA-Wandlers erfassen kann.
Immerhin gibt es Quantisierungsrauschen (Quantisierung) , von
weiteren Nichtlinearitäten BEIDER Wandler mal ganz zu schweigen.
>können. Da würden die ganzen Widerstände und OPs wegfallen. Aber in so>einem Baustein ist auch nichts anderes drin wie in meiner Schaltung.
Wenn du meinst.
MFG
Falk
>Wie gesagt, die Genauigkeit ist nicht kritisch. Davon hängt ja keine >massgebende
Funktion der ganzen Schaltung ab.
Wenn du alle deine zukünftigen Lastenhefte so "interpretierst", dürften
es nicht mehr viele werden. Aber vielleicht reicht dem Kunden ja
tatsächlich eine Aussage wie: " Die Hardwareversion liegt mit 66%
Wahrscheinlichkeit zwischen 64 und 127..."
Oliver
Patrick wrote:
> Ich bau mir einfach meinen eigenen 7-bit DA-Wandler nach angehängtem> Schaltplan. Die Codierung kann ich dann über Jumper verändern. Die> Genauigkeit kann ich vernachlässigen.
Witz komm raus, Du bist umzingelt.
Du willst also doch nur ne Zufallszahl und keine Versionsnummer.
Auch bei 7Bit-R2R müssen zumindest die höherwertigen Bits mit
Widerständen besser 0,5% sein!
Peter
>Das kann auch ein 8 Bit DA-Wandler.
Hier wird mir aber die Spannung so aufgeteilt:
U=(2.5V/256)*Versionsnummer
>2.) Diese Spannung muss mit einem AD-Wandler wieder genau gemessen werden.
Ausgewertet wird sie mit dem MP430.
>Wenn du meinst.
Du selbst hast mir doch oben den Link geschickt. Zitat von der Seite:
"Kommerzielle Digital-Analog-Wandler haben solche R/2R-Netzwerke im IC
integriert."
@ Patrick (Gast)
>>die Studenten von heute>Wer bitte sagt, ich sei Student?
Was bist du dann?
>Aber ist der Wert der Spannung auch gleich der Formel>U=(2.5V/128)*Versionsnummer?>Das war gefordert (siehe erstes Posting)
Das benötigt max. 1 OPV als nichtinvertierenden Verstärker. Nimmt man
einen Rail-2-Rail Typen braucht man keine negative Versorgungsspannung.
MFG
Falk
> EBEN! Weisst du was das kostet in grossen Stückzahlen?
Patrick hat nichts davon geschrieben, wie groß die Stückzahlen sind.
Weil wir das nicht wissen, habe ich meinen Vorschlag ja auch als Frage
formuliert.
> Nöö, er muss nur die Referenz des ADC anzapfen, die kann dann sogar> ungenau wie Sau sein. -> Ratiometrische Messung.
Ich hatte Patrick so verstanden (auch wenn er das zugegebenermaßen
nirgends geschrieben hat), dass das alles möglichst über eine einzige
Leitung (plus GND) funktionieren soll. Für den Fall, dass man zwei
Leitungen verwenden darf, habe ich ja eine andere Lösung gepostet, die
den achtfachen Störabstand aufweist.
>> Der zweit OP ist nur, um das Vorzeichen zu wechseln.>> Sind beide unnötig. Der R2R DAC spuckt auch so eine positive> Spannung aus.
Der erste Opamp ist als Strom-Spannungs-Wandler geschaltet und ist bei
diesem Typ von DAC auf jeden Fall erforderlich, da die unteren
Kontaktschinen beide auf GND-Potenzial liegen müssen.
Entweder hat der Autor von dem Lastenheft sich etwas verschätzt, oder er
will dich testen. Ich würde mich auf jeden Fall mal mit dem in
Verbindung setzen und sagen, dass das alles etwas umständlich ist.
Patrick wrote:
> @Peter> Kein Kommentar.
Ich hoffe nur, daß Dein Chef keine Ahnung hat, was Du da für einen
Unsinn verzapfst.
Wir haben auch auf Modulen Typerkennungen mit 8 Nullohmwiderständen an
nem 8Bit-Port vorgesehen.
Allerdings streikt die Software, wenn auch nur einmal eine falscher
Modultyp im falschen Slot erkannt werden würde. Und der Kunde würde
entsprechen sauer reagieren.
Solche Spielchen, wie Du sie vorhast, können wir uns daher nicht
leisten.
Vielleicht bist Du ja ein beserer Pokerspieler alse ein Entwickler,
damit kann mancher auch sein Geld verdienen:
http://www.michaelkeiner.de/
Peter
@ yalu (Gast)
>Der erste Opamp ist als Strom-Spannungs-Wandler geschaltet und ist bei>diesem Typ von DAC auf jeden Fall erforderlich, da die unteren>Kontaktschinen beide auf GND-Potenzial liegen müssen.
Schon klar, aber die andere Schaltung des R2R DAC ist da wesentlich
einfacher zu nutzen.
DA-Wandler
@ Gast123 (Gast)
>Entweder hat der Autor von dem Lastenheft sich etwas verschätzt, oder er>will dich testen.
Oder es wurde, wie ein in good OLD Grmany mehr und mehr üblich ist, ein
Lastenheft von einem Praktikanten/Absolventen/Theoretiker geschrieben,
der wenig bis keine Ahnung von der Praxis hat. Entwicklen dürfn das dann
"Billig-Ings" in Osteuropa oder Indien.
MFG
Falk
>in good OLD Grmany
tja, kommt leider aus der Schweiz ;-)
>Allerdings streikt die Software
Deshalb suche ich eine Lösung ohne Software. Ich finde ein ATtiny ist
schon etwas zu aufwendig, für so eine einfache Aufgabe
Bin zwar kein gelernter Hardwaredompteur, aber für mich als
Softwareentwickler sind Versionsnummern täglich Brot.
Deswegen wundere mich, wie man auf die Schnapsidee kommen kann, die
Versionsnummer über Jumper, oder - noch absurder - über Dipsitches
einstellbar zu machen. Das Zeug kann sich ja schon beim Transport oder
unvorsichtiger Handhabung verstellen...
Für Software ist die Versionsnummer ausschließlich an die Software
selbst gebunden, bei Hardware mit µCs muß neben der Hardware-Version
natürlich auch die Firmware-Version irgendwie mit in die
Versionsunterscheidung mit eingehen.
Wenn kein µC vorhanden ist, würde ich extra für das Versionenszeug einen
nehmen und einen Pin zur Ausgabe der Versionsnummer benutzen und der
Servicetechniker hängt da sein Oszi dran und liest die 7 Bit der
Versionsnummer ab und der Kittel ist geflickt.
Damit hat man die Auflösungsprobleme vom Hals und braucht nicht
irgendwelches Kinderspielzeug auf die Platine zu packen, das einen im
Zweifelsfall auf eine falsche Fährte setzt.
Zudem ist ein serielles, digitales Versionssignal ja letztlich auch eine
Spannungscodierung, wenn man keine Ströme fließen läßt, oder?
Patrick wrote:
>>Allerdings streikt die Software> Deshalb suche ich eine Lösung ohne Software.
Nein, die Software erfüllt hier eine Schutzfunktion.
Wenn nämlich ein 15000V-Modul in nem Slot steckt, wo nur ein 400V-Modul
rein soll, dann krachts gewaltig.
Daher schaltet die Steuersoftware bei Fehlkonfiguration alle Module
garnicht erst ein.
> Ich finde ein ATtiny ist> schon etwas zu aufwendig, für so eine einfache Aufgabe
Zumindest bei Platzbedarf und Preis ist es am günstigsten und trotzdem
am sichersten.
In C sind das etwa 5 Zeilen, die PWM zu starten und den Inputport in das
PWM-Register zu laden.
Peter