Hallo Allerseits,
ich stehe gerade vor dem Problem, einen Messchieber auszulesen, den ich
letztes Jahr bei Reichelt gekauft habe. Dieser hat ein mir unbekanntes
Protokoll (Die Linkliste zu den Messchiebern kenne ich). Beim Anzeigen
mit dem Analogoszi zeigt sich ein Bild ähnlich dem von Nick Müller unter
http://www.yadro.de/digital-messleiste/protokoll.html
beschriebenen. Taktsignal ist in der von Nick beschriebenen Art
vorhanden, Datensignal ebenfalls.
Aber: Es sind nur 6 * 4 Bit (Statt 7 * 4).
Und: Die Werte der Blöcke (so wie ich sie interpretiere) haben nichts
mit meinem eingestellten Wert (123,45 mm) zu tun.
Frage: Ist einem von Euch ein derartiges Protokoll schon mal über den
Weg gelaufen? Wie ist dieses zu interpretieren? Kann es sein, dass hier
bei steigender und bei fallender Flanke ausgelesen wird oder nicht jeder
Block einen diskreten Wert abbildet?
Ändere doch mal vorsichtig den eingestellten Wert und verfolge das auf
dem Oszilloskop. Wenn deine Daten schon in der Länge nicht zu dem im
Link beschriebenen Protokoll passen, wären ein paar Bilder mit
zugehörigen Werten von DEINEM Meßschieber sehr hilfreich. Geeignet
gezoomt sollte das mit den Flanken rauszukriegen sein.
Vielen Dank für die gute Antwort :-)
Durch den Vergleich der Werte sieht man auf Anhieb, dass das Vorzeichen
im letzten Block übertragen wird. Ich habe die einzelnen Blöcke (ich
habe sie hier Paket genannt) mal in ein PDF gesetzt. Bitte entschuldigt
die üble Formatierung...
Ein Fachmann sieht vielleicht schon auf den ersten Blick, wie die
Übertragung läuft. Ich bin leider derzeit keiner :-(
Ein langsames Verändern der Werte mit gleichzeitiger Beobachtung auf dem
Schirm macht mir etwas Probleme, da ich entweder nicht genug vom Signal
sehe oder es so sehr flimmert, dass mir das Gefühl für die Veränderungen
fehlt.
Fleißig, fleißig... Da weiß ich meine Print-Screen Tast am Oszi richtig
zu schätzen ;-)
Die Signale sehen so aus, als ob eine Übernahme der Daten (untere Kanal)
mit der steigenden Flanke vom Takt (oberer Kanal) vernünftig ist.
Für -123,45 würde man damit ablesen
Paket 1..6: 0110 0011 1111 0011 1111 0111
Naheliegen wäre, dass der übertragene Wert für 0.00 auch 000000 ist,
woraus man auf Invertierung der Daten schließen würde. Das Vorzeichenbit
im 6.ten Paket deutet weiter drauf hin, das im dem Paket das LSB steckt.
Vielleich würde man mit den Daten zu anderen Meßwerten, z.B. 1 mm und
25.4 mm ncoh etwas mehr sehen.
Nun ja, eine "Print Screen"-Taste hat mein Oszi nicht. Aber er leistet
trotzdem hervorragende Dienste. Ist halt nicht mehr der Jüngste, aber
ein sehr hochwertiges Gerät.
An die Auswertung steigender Flanken hatte ich auch bereits gedacht, da
diese nicht ganz so nah am Rand der Signalflanken liegen.
Mit Signalinvertierung ergibt sich für -123,45 (v.l.n.r):
1001|1100|0000|1100|0000|1000
12345 ist binär 0b11000000111001, was genau den ersten 14 Bit des
Signals entspricht, LSB zuerst.
Nun ist anzunehmen, dass
- kleinere Werte ebenfalls immer am Anfang des Telegramms angeordnet
sind, womit der 0er-Block kurz vor dem Ende größer wird
- größere Werte ebenfalls am Anfang dargestellt werden, womit die Nullen
aufgezehrt werden
- angenommen, es stehen die ersten 20 bit für die Werte zur Verfügung,
würde das eine höchste Dezimale Zahl von 1048575 erlauben, wesentlich
mehr als notwendig...
Den letzten Punkt kann ich schwerlich prüfen, für die anderen beiden
werde ich mal kleine und große Werte einstellen.
Das Vorzeichen liegt auf Bit 25.
Das Bit für die Einheit sollte (so vorhanden) ebenfalls leicht zu finden
sein.
Vielen Dank für die konstruktive Hilfe =)
Im Prinzip liegt es so einfach vor einem. Aber irgendwie war ich
blind...
@Matthias: Du hattest so weit schon durchgeblickt und wolltest nur noch
etwas eigenes Nachdenken fördern, oder?
Siggi schrieb:> @Matthias: Du hattest so weit schon durchgeblickt und wolltest nur noch> etwas eigenes Nachdenken fördern, oder?
Nein, ein bisschen gepuzzelt.
Das sieht doch so aus, als ob mit den Daten etwas anzufangen ist. Ich
bin gespannt, ob sich die Interpretation bei anderen Werten bestätigt.
Mit ein paar nicht genutzen Bits kann man leben ;-)
Wenn das klappt, fehlt nur noch der kleine µC, der das Signal
automatisch dekodiert.
So, ich habe nun einige Werte durchgespielt. Das beschriebene Schema
funktioniert auch bei allen anderen, von mir eingestellten Werten.
Anhand der mir vorliegenden Informationen habe ich eine kleine
Protokollbeschreibung erstellt. Vielleicht hilft sie jemandem weiter,
der einen solchen Messschieber ebenfalls besitzt. Das sollte etwas
übersichtlicher sein, als einen kompletten Thread durchzuarbeiten.
Ich hoffe, ich habe nichts Wichtiges vergessen. Falls doch, bin ich für
Ergänzungen dankbar.
Grüss dich Siggi,
also hier mal ein Link der das Thema ausführlich behandelt:
http://www.settorezero.com/wordpress/protocolli-seriali-utilizzati-dai-calibri-digitali-analisi-del-protocollo-1x24/
ist aber auf Italienisch...
Ich habe soeben eine Platine zum Auslesen dieser Messschieber entwickelt
die ich buchstäblich gerade dabei bin zusammenzulöten.
Ich habe 'eh vor diese aufs Netz zu geben falls es dich interessiert
sende ich dir das Teil per email zu mit ein paar Erklärungen.
Auf dem Steckboard habe ich's schon getestet und weiss dass es funzt.
Im Grunde wird die Information in 3x8Bit Schieberegister geschoben
und dort gespeichert bis der AVR sich die Mühe macht die Daten zu holen.
So können fast beliebig viele Messschieber angeschlossen werden ohne
dass es dabei zu Konflikten zwischen dem Timing der einzelnen Schieber
kommt.
So long: Hermann
Ach ja hab ich vergessen:
Im Gegensatz zum Sylvac Protokoll (2x24bit) bzw 4x7BCD Protokoll werden
die Datenbits hier bei steigenden Flanken der Clock gelesen ...
Hallo Siggi und Hermann,
habt ihr es eigentlich hin bekommen, denn Wert des Messschiebers zu
Nullen oder den Mode umzuschalten à la
(http://www.shumatech.com/support/chinese_scales.htm#Hold%20and%20Fast%20Reading)?
Das funktioniert bei meinen nämlich nicht. Ich nulle jetzt per Software.
Das Auslesen geschieht bei mir nur mit einem Atmega, ich brauch eh nur 3
Messschieber. Die Pegelwandlung läuft bei mir über NPN-Transistoren mit
Basisvorwiderstand und Pull-Up im Mikrocontroller. Dann ist das Signal
zwar invertiert, aber das juckt mich nicht, muss ich halt auf fallender
Flanke auslesen und den Wert invertieren. Wie habt ihr das gelöst?
Grüße Ole
Gute Frage !
in meinem Fall mit "brute force": wie gesagt habe ich soeben eine
Platine fertiggestellt wo ich die Schieblehren mit 2x24 und 1x24
Protokoll auslesen kann. In einem gewissen Sinn hast du mit deiner Frage
einen wunden Punkt angesprochen (den ich ach noch nicht vollständig
getestet habe), ich geb' dir dennoch mal meine Sicht der Dinge:
Chinesische Schieblehren fressen ca. 18 uA an Strom ( wenn du willst
kann ich dir den entsprechenden Artikel am Montag ausgraben). Um die
Schieblehren mit Strom zu versorgen benutze ich zwei in Reihe
geschaltete Dioden die über einen 1-2Kohm- Widerstand an den 3.3V meines
AVR's hängen. 2x0.7V = 1.4 was als Spannungsversorgung ausreicht.
Nun zu deiner Frage: In der Tat lassen sich die Schieblehren wohl nicht
nullen (hab' zumindest keinen Weg gefunden) der Trick den ich aber
verwenden will ist die Schieblehre direkt von einem AVR Pin über die
zwei Dioden (in Reihe mit dem besagten 1-2kohm Widerstand) mit Spannung
zu versorgen und dadurch zu Nullen dass ich dem Teil einfach den Saft
abdrehe.
Ein AVR Pin liefert flockige 20mA also weit mehr als die notwendigen
18uA
die die Schieblehre zieht. Ein Rücksetzen der Schieblehre wäre also
nicht mehr als ein Nullen des AVR pins. Wenn man verhindern will das bei
einem Reset (watchdog) des AVRs die Schieblehre auf Null geht besteht
noch die Möglichkeit eine dritte Diode mit dem Widerstand in Serie zu
schalten und die 2x0.7V der zwei "unteren" Dioden mit einem dicken Elko
zu versehen. Diese dritte Diode verhindert das beim Reset des AVRs der
Saft rückwärts fliest. Im Klartext heisst das dass beim Reset des AVR
(einige ms) die Spannung am Schieber erhalten bleibt. Ein echtes Nullen
wird dann dadurch erzielt dass der entsprechende AVR Pin lange genug
nieder gehalten wird bis die Spannung weit geung abgefallen ist um die
Schieblehre zu nullen.
Ich hoffe meine Ausführung ist verständlich ....
Grüsse: Hermann
Noch 'ne Frage (an Olé):
Wie liest du deine 3 Schieber aus ? Per Interrupt ?
Was mich davon abgehalten hat die "Interrupt Lösung" wie sie im Forum
präsentiert worden ist zu verwenden ist die Vorstellung das zwei
Messschieber phasengleich senden und der AVR dann kapituliert. Ich will
die Messschieber als Encoder für meine Heliostaten verwenden, da muss
ich sicher sein dass die Teile zumindest 12 Stunden am Tag Jahraus
Jahrein fehlerfrei funktionieren !
Also wie regelst du das ?
Grüsse: Hermann
Nochmals an Ole !
Umschalten à la Fast/Slow Modus ist wahrscheinlich nicht drin. Wenn ich
das Timing richtig interpretiere, haben die Chinesen mit dem 1x24
Protokol wohl einen Kompromiss gesucht. Die klassischen 2x24 bzw 4x7
Protokolle laufen mit ca. 3 Bursts pro Sekunde im langsamen Modus und
wenn ich mich recht erinnere mit ca 50 Bursts im schnellen Mode.
Die 3x8 Schieber (um die's hier ja geht) senden ca alle 185 ms also 5-6
mal pro Sekunde - damit zwei mal schneller als die Andern im "slow
mode". Eben ein Kompromiss zwischen den zwei Modi in meinen Augen.
Ich denke die andern Protokolle werden eh' bald aufhöhren zu existieren
weil das 1x24 Protokoll einfach simpler ist.
ps: Hab' vorhin vergessen zu sagen dass der Schieber natürlich mit den
besagten 2 Dioden parallel und nicht in Reihe geschaltet werden muß !
Hallo Hermann,
Hermann E. schrieb:> ( wenn du willst> kann ich dir den entsprechenden Artikel am Montag ausgraben)
ja der würde mich interessieren, ebenso wie deinen Schaltplan.
Das Auslesen der Messschieber geschieht bei mir mit drei ext. Interupts
(CLK-Leitungen). Falls die wirklich mal Phasengleich sein sollten,
könnte das in der Tat ein Problem geben. Hatte bis jetzt aber nie
Probleme damit, weil die bei meinen Tests auf dem Breadbord alle noch
eigenständig von ihren Batterien versorgt wurden. Wenn ich die nun aber
alle zentral versorge könnte das ein Problem geben, weil sie ja zugleich
an geschalten werden.
Mögliche Auswege (ich hab meine Leiterplatte schon geätzt und will an
der HW möglichst nix mehr drehen):
- probieren und hoffen, dass es trotzdem geht ;-)
- Verwendung unterschiedlich großer Stützkondensatoren direkt in den
Batteriefächern der Messschieber (die Benutzung der Kondensatoren hatte
ich eh vor, weil die Werte dann stabiler sind), somit sollten die
Messschieber nicht zur selben Zeit angehen und keine Phasengleichheit
aufweisen (die werden über die Zeit eh wegdriften)
- immer nur einen ext. Interrupt aktivieren und sich so von einem zu
anderen Messschieber durchhangeln (unschön, weil ich da bestimmt Werte
verliere)
- oder nested interrupts, in dem ich das I-Bit in SW direkt nach
betreten der ISR setze
Hermann E. schrieb:> Ich hoffe meine Ausführung ist verständlich ....
Ja ich denk das mit den 2 bis 3 Dioden hab ich soweit verstanden. Man
muss halt nur drauf achten, dass die Dioden auch wirklich die 0,7V
erreichen. Wenn ich das aus deiner Beschreibung entnehme wärst du ja bei
ca. 1-2mA der dann durch die Dioden fließt. Welche Dioden benutzt du da,
die bei solchen Strömen schon 0,7 Volt aufbauen?
Hab ich das richtig verstanden, dass die Entladung der Kapazität dann
über den Messschieber geschieht?
Ich will die Schieber mit nem LM317 versorgen, der so ziemlich genau
1,55V liefert. Mir kam es nämlich immer so vor, dass die Schieber
weniger "gewackelt" haben, wenn die Betriebsspannung schön hoch war.
Grüße Ole
Grüss dich !
War heute morgen zum Gleitschirmfliegen unterwegs (ja ja es gibt auch
noch
andere Aktivitäten, war aber nix da das Wetter hier in Frankreich gerade
am kippen ist) daher eine etwas verspätete Antwort.
Was die Dioden angeht sind dies stinknormale 1N4841, das Billigste vom
Billigen, die ich habe sind aber schon über 10 Jahre alt liefern aber
mit beschriebenem System sogar 1.54 V - besser geht's nicht. Im Grunde
ist es einfach nur die normale I-U Kurve jeder x-beliebigen Si-diode die
bei ca 0.7V (in Durchlassrichtung) leitend wird
Falls Du mit zwei Dioden nocht nicht die 2x0.7V hast kannst du noch 'ne
Germanium diode zu den zwei in Serie schalten. Ge-Dioden fangen bei ca.
0.2V an leitend zu werden, also 2x0.7+0.2V = 1.6, geht auch !
Ich hatte ursprünglich auch den LM317 vorgesehen, das Problem ist aber
das dieser mit einer Mindstlast beansprucht werden muss um korrekt zu
regeln (wenn ich mich recht erinnere mindestens 40mA von 100 max !).
Meine Heliostaten sollen mit Solarpanels betrieben werden da ist
Energiesparen sowieso oberste Pflicht und ich geize daher mit jedem mA.
In der Tat, du hast meine Ausfühung richtig interpretiert, Das Entladen
der
Elko's erfolgt über die Messschieber selbst, dadurch ist auch die
Wartezeit definiert die für ein Rücksetzen notwendig ist.
Eigentlich wollte ich die Dateien meiner Platine hier anhängen, leider
ist aber die Schaltplanzeichnung (eagle) so in die Länge gezogen das ich
sie in 3 Bilder splitten müsste um noch lesbar zu sein. Dies ist dann
komplett unübersichtlich Leider darf man (meines Wissens) keine eagle
Dateien direkt hochladen.
Ich versuche mal 'ne Dummy mail an deinen Namen zu schicken. Falls du
die mail kriegst und darauf antwortest schicke ich die die Eagle Dateien
direkt mit Erklärung zu.
Gruss: Hermann
Hermann E. schrieb:> Leider darf man (meines Wissens) keine eagle Dateien direkt hochladen.
Eigentlich beschweren sich da nur die Nicht-Eagle-Nutzer, dass sie die
Dateien dann nicht lesen können, was dem Forumsgedanken widerspricht.
Wenn man parallel auch ein PDF hochlädt, ist für jeden was dabei ;-)
Gruß Matthias
Hallo Matthias,
wüsstest du wie ich eine Eagle Datei als .pdf exportieren könnte ?
Ein Screenshot hilft wie gesagt wegen der fehlenden Auflösung auch nicht
weiter.
Falls ein Moderator in dieses Posting reinschaut: isses eigentlich
verboten
(Urheber bzw Lizenzrechte ??) Eagle Files einzustellen ?
Hermann
Zuerst mal die Eingangsbemerkung: Beim Abspeichern des Schaltplans hat
mir Eagle die erste und zweite "Seite"
vertauscht. m.a.W. sollte die zweite Seite oben und die Erst unten sein.
Da ich mein Heliostatenprojekt später ins Internet stellen will nehmt
mir bitte nicht übel wenn ich die Beschreibung in Englisch mache,
2xschreiben ist dann doch zu viel:
Here we go: The supply voltage can be varied between 3 and 5.5V without
any change in the behaviour of the circuitry.
The two non-inverting comparators have their switch points/hysteresis
set to 0.5 and 1V - well centred with respect to the 0-1.5V of the
caliper. The 10kohm resistors at the comparator output pin should be
replaced by 1 or 2kohm if low power consumption is not an issue (steeper
edges).
The outgoing signal is Nanded with the gate signal provided by the first
4538N monostable multivibrator.
The gate signal is about 18-20ms long , about 20% longer than the data
burst of the caliper (15ms).
The clock driving the following shift registers is blocked outside this
gate period and inverted by the Nand IC1B .
The output is fed directly into the following Nand IC1D together with
the output of an AVR pin.
The AVR pin can either block the arrival of the caliper clock signal or
- even more importantly - act as a clock itself
for the later readout of the data.
Provided the AVR pin is low, the clock signal with pass the Nand gate
again and undergo a second inversion ending up in its original pulse
train. This pulse train is fed into the following three 74HC164 shift
registers. The data bits will be read into the shift register at the
rising edge of the (caliper) clock signal provided that the B port of
the first shift register is high what is ensured by the same gate signal
as before - just as it should be.
After 24 clock pulses the data is stored in the 3 shift registers (24
bit) and can now be read by the AVR using the AVR line mentioned above.
For the following discussion I define Q1 as the exit of the first
multivibrator and Q2 being the exit of the second.
How does the AVR know that the data is new and ready ? Simply by
interrogating Q1 of the first multivibrator. Q1 is high meaning new data
will be ready "soon" ! How is "soon" defined ? Well, upon the falling
edge of the first multivibrator the second mutivibrator is triggered and
provides a second ca. 150ms long pulse meaning: "read me now" !
The Nand gate IC1C is there to prevent a re-triggering of the
multivibrator since the 4538N is re-triggerable. Therefore the shift
register will not accept new data (to suppress spurious clock/data
peaks) as long as the 15+150ms hat functions are not elapsed. C1 and R2
are there to prevent that IC1C sees any gap between the two hat
functions which may occur as Q1 falls before Q2 rises..
The two hat pulses are set by C4 and R4 (15ms) and C2+R3 for the 150ms
gate signals respectively.
A word of warning: I intend to employ the device for outside use
(-20-+40°C). The mentioned R/C pairs should therefore be stable in temp
and time , essentially excluding the use of ceramic capacitors. Use 5%
foil capacitors and metal-oxide resistors instead !
The resistors The values of R2,R4 and R4 are only roughly right, they
should be selected to provide the 18/150ms - therefore the exclamation
marks in their values. Use a scope to do so. .
To summarize: Q1 high tells the uC: new data ready soon, Q2 high means:
read me now ! Checking Q2 on "Still being high" after reading ensures
that the data read is really a new set of data which has been read
correctly . Q1 can also be prolonged in case of a slow uC or feed into
the interrupt pins of the uC to force an update of the "new data read"
info. Q1 essentially ensures that the data is only read ones and that
erroneous clock spikes are blocked.
Before I conclude I'm want to reveal the last bits of information
missing for the full understanding of the scheme:
! Mind D6 and D7 ! They are either/or, never use both !! Using D6 (no
D7) means that the caliper is powered by the 3-5V of the board. D3+D5
ensure a voltage drop of about 1.4 = 2x0.7V, enough to drive the caliper
(they only suck about 18uA of current). If this is not enough add a
Ge-Diode in series adding another voltage drop of 0.2V
!! Do not use R10 ! I put this one in as reminder for myself (for future
development purposes), just leave it out.
Now: Using D7 instead of D6 means that the power will be provided by the
uC. An AVR pin can provide about 20mA whereas the caliper/Diodes only
pull about I=U/R = (4-1.4)V/10kOhm = 260uA -> No problem. Zeroing of the
caliper simply means putting this AVR pin low for a while till the
caliper supply voltage has collapsed.
Last not least: R8 + R32: Do not use them with calipers using a 6 Nibble
(24Bit) format. They are only meaningful when using a caliper with a
Sylvac protocol. A Sylvac protocol consists of 2*24 bit data words. The
first 24 bits contain information that most of the people don't use, so
letting the first 24 bits fly through the shift registers will only
retain the ("useful") second 24Bit data word. These calipers have
however the advantage that they can be zeroed and put into a fast mode.
It's only in this case that the two resistors should be used. Since for
this type of caliper the data should be read on the falling edge of the
clock I've added the jumper option JP1 and JP2 to invert the clock
signal once more.
Be however aware that the timing will be completely different (they are
much faster). R4 and R3 (or the corresponding C's) take very different
values in this case although the overall logic still holds.
A last word to the (rare) 7 Nibble format (Aldi format): Since this
format is based on 28bits it would require an additional shift register
to use this circuit idea.
Good luck: Hermann
Eine Umschaltung zwischen (so vorhanden) Slow- und Fast-Mode habe ich
noch nicht durchgeführt, steht aber auf dem Plan.
Die Pegelwandlung möchte ich über einen Komparator durchführen. Die
Verzögerung von < 1 µs sollte eigentlich kein Problem darstellen.
Die Transistoren-Lösung hat aber durchaus auch ihren Charme...
Hallo Siggi,
unsere Beiträge haben sich wohl gekreuzt, dadurch kann ich meine
Englischfehler nicht mehr ausbügeln, hoffe die Erklärung ist aber
dennoch halbwegs klar ...
Hermann
Ole E. schrieb:> habt ihr es eigentlich hin bekommen, denn Wert des Messschiebers zu> Nullen oder den Mode umzuschalten
Das Nullen funktioniert, wie Hermann es schon angedeutet hat, nicht. Man
könnte aber zum Nullen:
1. eine Leitung Leitung am Nullen-Taster (Zusatzpad) anlöten. Durch die
Gehäuseöffnung kriegt man genau ein 6-poliges Flachbandkabel durch und
hätte daher genug Leitungen zur Verfügung.
2. die Stromversorgung über einen µC-Pin steuern (hatte, glaube ich,
schon irgendwer vorgeschlagen).
3. per Software den Wert des Nullenzeitpunkts im µC vom aktuellen Wert
abziehen. Dies führt allerdings dazu, dass das Display dann ziemlichen
Mist anzeigt.
Die Existenz eines "Fast-Mode" ist mir bisher nicht bekannt.
@Hermann: Du hast in deinem englischen Text bereits einen Messchieber
mit "6 Nibble Format" erwähnt, auf den Du aber nicht weiter eingehst.
Der mir vorliegende Schieber scheint ja ein solcher zu sein. Was weißt
Du außer dem bereits Erwähnten sonst noch über diese Klasse von
Schiebern?
Verstehe,
wie gesagt ist der Artikel:
http://www.settorezero.com/wordpress/protocolli-seriali-utilizzati-dai-calibri-digitali-analisi-del-protocollo-1x24/
derjenige der das Thema ausführlich behandelt. Falls dir die Sprache
Dantes Probleme bereitet hier die Quintessenz:
Wenn du einen uint32_t (zb "uint32_t Myvar") definierst muß das erste
Bit der Datenleitung in das "Nullste Bit" von Myvar eingeschrieben
werden. (wenn du willst lass ich dir morgen den AVR Code-Schnipsel
zukommen, bin gerade noch in der Arbeit und hab' meiun Programm nicht
da)
Dann das zweite Bit in Myvar[1] und so weiter (die []-Schreibweise ist
natürlich nur symolisch da Myvar kein Array ist).
Höhre beim 20-ten Bit (Myvar[19]) auf.
Bit 20 enthält das Vorzeichen (1= Negativ, Null Positiv). Die zu
messende Distanz ist damit einfach als Binärzahl codiert (kein 2-er
Komplement !) und kann mit iota einfach in ASCII (und damit mundgerecht
zum Ansehen) umgewandelt werden. Myvar kannst du dann in einem signed
(!) int16 abspeichern da 16 bit Zahlen bis ca. +/- 32k (dezimal) halten
können. der (150mm) Messchieber kommt ja nie über +/- 15000 hinaus. Im
Falle einer negativen Zahl (Bit 20 = 1) die int16 Zahl dann natürlich
dann mit -1 multiplizieren !
Es gibt kein Komma, mit anderen Worten ist die Zahl in Vielfachen von
1/100 mm gegeben (15000/100) = 150mm = 15cm.
Bit 21 und 22 erhalten keine Daten (immer Null) während das letzte Bit
(23) angibt ob mm oder inch (0 = mm, 1 = inch).
Bei "inch" ändert sich das Datenformat insgesamt, ist aber für uns
glückliche Europäer (die Engländer zählen ja bekanntlich nicht dazu)
kein Problem. Aus dem (Stromunterbrechungs-) Reset kommt der Messchieber
sowieso immer nur in mm (Grundeinstellung) wieder hoch.
Hoffe das hilft dir weiter !
Last not least: Nullen. Deine Lösung hatte ich mir auch überlegt, gefiel
mir aber nicht da ich dann noch mit einer weiteren
Kabeldurchführung/Lötung rumhantieren muss (vom Anlöten der Drähte ganz
zu schweigen). Ich habe vor - wie im obigen Artikel schön illustriert -
eine kleine Buchse anzulöten und fertig !
Mein Board funktioniert sowohl mit dem Sylvac wie auch mit dem 6 Nibble
Protokoll wie gesagt brauchts bei 7 Nibbles noch 'n Schieberegister mehr
um zu funktionieren.
Bonne chance: Hermann
Super, Hermann, Danke!
Mit der Sprache hatte ich in der Tat so manches Problem.
Gibt es vielleicht zweireihige Buchsen, die da reinpassen würden? Dann
hätte man mehr Kontakte.
Der Stromunterbrechungs-Reset behagt mir nicht sonderlich (wenn auch
sehr einfach) und das Nullen per Software hilft einem nicht gegen die
Standby-Abschaltung. Dann ist nicht nur das Display tot, der Schieber
überträgt dann auch keine Daten mehr. So gesehen wäre mehr Leitungen
nicht verkehrt.
Noch 'ne Frage: Hast Du 'ne 1.5V oder eine 3V Batterie ?
Meine Erfahrung ist die dass Messschieber mit 1.5V beim Abschalten keine
Daten verlieren (hab' zumindest nie welche mit solchem Verhalten in der
Hand gehabt) die mit 3V aber schon.
Du kannst das mit dem Oszi einfach testen(Selbstabschaltuing abwarten
und sehen ob er noch sendet). Ein weiterer Test ist den Schieber auf zB.
10mm zu stellen und warten bis er abschaltet. Dann auf ca 20mm
verstellen
und wieder anschalten. Wenn er dann (ungefähr) 20mm anzeigt heisst das
das er auch bei abgeschaltetem Display (Sleep mode) weitermisst und
läuft.
Das die Schieber auch mit abgeschalteter Anzeige aktiv bleiben wird auch
so in dem Artikel über den Stromverbrauch beschrieben.
Kannst du das Abschaltverhalten deines Schieber schildern (wenn
getestet) ? Würd' mich interessieren !
Hasta la proxima vez: hermann
Also wenn ich mich recht entsinne, senden meine Messschieber nicht wenn
man sie ausschaltet (auch wenn sie selbsttätig in den Standby-Modus
gehen). Gibt es da überhaupt einen Unterschied zwischen Aus und Standby?
Ach und zum zweiten Test: Meine Schieber gehen automatisch an, wenn man
sie bewegt.
Kann das aber leider bis nächstes WE nicht überprüfen, weil die gerade
sonstwo sind.
Grüße Ole
Interessant, ich denke das dein Messchieber nicht wirklich schläft, wie
soll er denn sonst durch eine rein mechanische Veränderung (kein
"elektrischer" Knopf gedrückt) aufwachen ? Dies impliziert natürlich
nicht daß er auch sendet wenn er im "Power Safe" Modus ist.
Im Ganzen ist dieser Mode eh' ein Witz, das Display kostet Null an
Energie,
ist in meinen Augen nur mit psychologischer Wirkung. Dies steht auch so
in dem Artikel:
http://www.davehylands.com/Machinist/Caliper-Batteries/
den ich oben eingestellt hatte.
Waiting for more news: Hermann
Zweisprachig aufwachsen (schwäbisch und Deutsch) Englisch in der Schule,
20 Jahre in Frankreich wohnen (+ französische Freundin), Italienisch zum
Spass lernen (und gezielt Zusammenarbeit mit Italienern im Beruf
organisieren), Spanier als Mitarbeiter haben und in einem
internationalen Forschungszentrum arbeiten wo Englisch die offizielle
Sprache ist.
Hermann E. schrieb:> Noch 'ne Frage: Hast Du 'ne 1.5V oder eine 3V Batterie ?> Meine Erfahrung ist die dass Messschieber mit 1.5V beim Abschalten keine> Daten verlieren (hab' zumindest nie welche mit solchem Verhalten in der> Hand gehabt) die mit 3V aber schon.>> Du kannst das mit dem Oszi einfach testen(Selbstabschaltuing abwarten> und sehen ob er noch sendet). Ein weiterer Test ist den Schieber auf zB.> 10mm zu stellen und warten bis er abschaltet. Dann auf ca 20mm> verstellen> und wieder anschalten. Wenn er dann (ungefähr) 20mm anzeigt heisst das> das er auch bei abgeschaltetem Display (Sleep mode) weitermisst und> läuft.> Das die Schieber auch mit abgeschalteter Anzeige aktiv bleiben wird auch> so in dem Artikel über den Stromverbrauch beschrieben.> Kannst du das Abschaltverhalten deines Schieber schildern (wenn> getestet) ? Würd' mich interessieren !
- Mein Schieber hat eine 1,5V-Batterie
- Sobald er das Display abschaltet, wird das Oszi-Bild tot. Nach dem
Wiedereinschalten sind die Pakete wieder zu sehen.
- ich meine, wenn man ihn im abgeschalteten Zustand bewegt, schaltet er
das Display und die Datensendung unmittelbar wieder ein. Er vergisst
auch die Position nicht (meine Erinnerung, habe es jetzt nicht extra
geprüft).
So gesehen liegt Dein Artikel vollkommen richtig.
Der erste Test war niederschmetternd: In der Tat schaltet das Teil
nach wenigen Minuten nicht nur das Display sondern auch das Senden der
Daten ab.
Für meine Nutzung ist das eher übel da es mich dazu zwingt weitere AVR
Pins einzig und allein zum Wiederanschalten/am Laufen halten zu
vergeuden.
Mit 1 kohm kurzzeitig zwischen "Nullungskontakt" zur Masse weckt das
Teil wieder auf (ohne Positionsverlust), verlangt aber wie gesagt
weitere Steuerleitungen. Ich vermute mal dass die in irgendeinem
chinesischem Entwicklungslabor mitgekriegt haben dass ihre Schieber viel
mehr verbraucht haben als Mitutoyo und Companie und die Reaktion jetzt
Sparen allerorten heißt.
Falls ich morgen den Nerv habe werde ich noch meine ca 1 1/2 Jahre alten
Schieber mit selbigen Protokoll daraufhin untersuchen.
Dosvidanja: Hermann
Was ich noch nicht ausprobiert habe, was aber möglicherweise
funktionieren könnte: Den Kontakt dauerhaft geben. Mit dem Strom anlegen
schaltet er sich ja immer ein. Mit etwas Glück geht er nach dem
dauerhaften Brücken des Einschalters nicht mehr aus.
Danke für dein Update !
Vor ein paar Tagen habe ich genau mit der Art wie du geschrieben hast
rumexperimentiert, is' aber nix dabei rausgekommen.
Ich befürchte es bleibt nur ein regelmässiges Aus- und wieder
Einschalten ..
Saluti: Hermann
Ich habe mich doch recht erinnert: Meine Messschieber gehen sofort an,
wenn die Schieber bewegt werden. Vielmehr ist es tatsächlich so, dass
lediglich das Display ausgeschaltet und die Kommunikation nach außen
eingestellt wird.
Ich habe mal ein paar Strommessungen durchgeführt (bei 1,55V):
On: 18,8µA
Off:22,5µA
Tastendruck: 47,3µA
Natürlich hängt der On-Verbrauch von der Anzahl der geschalteten
Segmente ab. Der "hohe" Verbrauch während der Tastendrücke ist
vermutlich auf Pull-Up Widerstände zurückzuführen.
Nach 4min schalten sich meine Messschieber "aus".
Im Grunde lässt sich sagen, dass das automatische Ausschalten mehr
Probleme bereitet, als es Vorteile bringt (die ~4µA machen das Kraut
auch nicht fett).
Grüße Ole
Ole E. schrieb:> On: 18,8µA> Off:22,5µA
Sowas habe ich auch schon gemessen; das ist wohl Marketing-Verarschung:
der Kunde meint, er schaltet das Ding ab. Und er wundert sich dann, dass
nach Einschalten der Nullpunkt noch stimmt und denkt: was für ein
hochwertiges Gerät, hat einen Absolutgeber! Der kostet doch sonst sehr
viel mehr!
Und nach einem halben Jahr ist die Batterie leer...
Gruß Dietrich
Kann dir nur zustimmen,
das Abschalten ist reine Augenwischerei !
Danke für die Testwerte, die liegen ja um 20 uA so wie
der oben von mir gennante Artikel auch sagt.
Der Reststrom den Du misst lässt beim Nullen auf einen
Kurzschluß-"Widerstand" zu GND von ca. R=U/I = [1.55V/(47-22)A]*10E6 =
62kohm schliessen.
Mal testen ...
A bientôt: Hermann
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang