Forum: Mikrocontroller und Digitale Elektronik Messchieber auslesen


von Peter Kleinschmitt (Gast)


Lesenswert?

Hallo,

ich habe eine Bitte, bzw. Frage......
Hat jemand von Euch schon einen Digitalen Messchieber mit einer LED
Anzeige verbunden? Ich habe mir im Netz schon den Wolf gesucht und nix
gefunden, ausser 2 Seiten wo mit PIc's gearbeitet wurde.
Natuerlich jede Menge Seiten wo man so was kaufen kann....
Auch tolle Ideen fuer ein Interface fuer einen PC habe ich gefunden,
mit Layout usw. aber ich moechte eine LED Anzeige benutzen und keinen
PC.

Und, viel wichtiger, ich moechte das selber bauen!

Ich habe so gut wie keine Ahnung von AVR programierung und wuerde mich
echt freuen, wenn jemand da etwas an Bauplan oder AVR Progi haette.

Ich habe auch hier im Forum gesucht und da ist leider nur ein Eintrag
der mir nicht recht weiter hilft.

Vielen Dank im voraus!
Tschuess
Peter

von Hubert (Gast)


Lesenswert?

www.mikrocontroller.net/forum/read-1-97612.html#97994
Da ist doch alles drin was du brauchst. Ob du wen findest der dir das
Programmiert weiss ich allerdings nicht.

von Reiner (Gast)


Lesenswert?

www.shumatech.com/dro/

von Bär-Tolt (Gast)


Lesenswert?

auf www.fingers-welt.de hat der sowas mal für eine CNC-Maschine gemacht

von Hartmut Gröger (Gast)


Lesenswert?

Ich habe mich vor kurzen mit dem gleichen Problem beschäftigt.Als
Suchtip probier mal "Digital Caliper". Beim Datenprotokoll scheint es
mehrere Varianten zu geben. Mein Messchieber (vor kurzem bei NORMA
gekauft) gibt die Displayanzeige in fünf 4-Bitwerten aus.Dabei sind im
5. Wert noch Vorzeichen und Maßeinheit(mm/inch) enthalten sind. Leider
hatte ich noch nicht die Zeit,mich bis ins letzte damit zu
beschäftigen.Vieleicht ist da jemand schon weiter.

MfG Hartmut

von Peter (Gast)


Lesenswert?

Erst mal vielen Dank fuer die danzen Infos......
Auf der Finger Seite ist ja etwas was ich so probieren kann.

Wenn es jedoch mal einer mit nem AVR aufbaut bitte bescheit sagen :-)

Tschues
Peter

von Peter (Gast)


Lesenswert?

Erst mal vielen Dank fuer die ganzen Infos......
Auf der Finger Seite ist ja etwas was ich so probieren kann.

Wenn es jedoch mal einer mit nem AVR aufbaut bitte bescheit sagen :-)

Tschues
Peter

von Reiner (Gast)


Lesenswert?

In "Funkamateur" 03/2005 ist eine Implementierung mit ATMEGA32
(Schaltbild, Platine etc.)

von Alexander (Gast)


Lesenswert?

@Hartmut
Ich hatte den vom Januar und jetzt umgetauscht. Sind scheinbar
identisch, glaube die Anordnung der Tasten ist anders bin aber nicht
mehr sicher.
Welche Kontakte sind denn für die Datenausgabe zuständig?
Testweise habe ich beim 1. Gerät mal die Kontakte über einen Draht
verbunden und damit irgendwelche (sinnvollen?) Einstellungen machen
können.
Immerhin steht in der Anleitung was von der Schnittstelle aber nix
genaueres...

von Peter (Gast)


Lesenswert?

Hallo Reiner,
leider habe ich diese Zeitschrift nicht, gibs die noch zu kaufen? Bzw.
kann man diesen Artikel im Internet finden?

Danke
Peter

von Gerhard (Gast)


Lesenswert?

Hilft das vielleicht?

Die untengebrachte Link hat eine Tabelle fuer viele gebrauchliche
Digitale Messchieber.

http://life.bio.sunysb.edu/morph/morphmet/digical.txt

Gruss,
Gerhard

von Gerhard (Gast)


Lesenswert?

Hier noch eine Link:

http://www.tinaja.com/glib/muse145.pdf

Gerhard

von Reiner (Gast)


Lesenswert?

Peter,

www.funkamateur.de (Ausgabe kann nachbestellt werden)
oder info@sander-electronic.de (Verfasser)

Protokoll der Meßschieber ist beschrieben in:
http://www.shumatech.com/support/chinese_scales.htm

Reiner

von edi-edi (Gast)


Lesenswert?

http://www.mikrocontroller.net/forum/read-1-97612.html#97994

was ich da geschrieben habe bezieht sich auf:

ELECTRONIC DIGITAL CALIPER
www.BW-Netshop.de

hat blaue umschalttaste inch/mm oberhalb des displays
unterhalb ,links rote off/on taste und rechts daneben gelbe zero
taste.weiter rechts batteriefach...darueber anschluesse fuer Interface

Ed

von Matthias (Gast)


Lesenswert?

Hallo!

Ich habe das vor kurzem für drei Messschieber gemacht, die an eine
Fräs- bzw. Drehmaschine montiert werden.
Verwendet habe ich einen ATmega 32, der mit 16 MHz getaktet wird.
Dieser hat drei externe Interuppteingänge, die nacheinander ausgewertet
werden.
Das Ergebnis wird auf einem 4-zeiligen 20 Zeichen LCD dargestellt.

Der Messschieber wird beim Start auf den schnellen Übertragungsmodus
umgestellt (20 ms Pause statt 300 ms). Das geht auch, wenn der
Messschieber keinen Knopf für Mode-Umschaltung hat.
Die Nullstellung der Anzeige wird über externe Taster (also per
Software) gemacht.

Momentan bin ich dabei, mit einem ATiny13 die Drehzahl über eine
Lichtschranke zu messen.
Im Endeffekt soll der ATmega32 (der das LCD ansteuert), per I2C die
Drehzahl vom Tiny13 bekommen und in der vierten Zeile anzeigen.

Wenn alles funktioniert, kann ich das Projekt bzw. die Software bei
Interesse veröffentlichen.

Programmiert wurde übrigens alles mit avr-gcc und den legendären
Bibliotheken von P. Fleury.

Die Auswertung der drei Messschieber funktioniert schon einwandfrei.
Wird die Versorgungsspannung aber für sehr kurze Zeit abgetrennt, führt
der ATmega einen Reset durch, der Messschieber hat aber noch den
schnellen Übertragungsmodus gespeichert.
Das führt dazu, dass der Mikrocontroller den Messschieber wieder in den
langsamen Modus zurückschaltet (die Umschaltung ist identisch, es wird
immer zwischen den beiden Modi gewechselt).
Die Umschaltung will ich jetzt nur noch machen, wenn er sich im
langsamen Modus befindet. Eine Idee hab ich aber schon :-)


Gruß,
Matthias

von edi-edi (Gast)


Lesenswert?

ich finde das macht nur Sinn wenn man die Anzeige aus min 1m Abstand
lesen kann. also LED oder riesen LCD

von Matthias (Gast)


Lesenswert?

Wer bedient denn eine Drehmaschine aus 1 m Entfernung? :-)

von edi-edi (Gast)


Lesenswert?

Sobald Du ins '' Mittelalter'' kommst wirst Du Dich an groesseren
und sichtbaren Ziffern erfreuen.Aber das kannst Du erst dann
verstehen.
Haengt natuerlich auch davon ab WO Du Dein Display installierst.
Ergonomie?
Aber da Du ein freier Mensch bist lass Dich nur nicht beeinflussen. Du
darfst Du bei Deiner Wahl bleiben.

von Wolfram (Gast)


Lesenswert?

Hi,

also da ich mit Hardware besser umgehen kann als mit Software, habe ich
mir die Hardwareinterface gebaut, das die Datenworte in einem
Schieberegister ablegt und die fertige Wandlung dem Prozessor
mitteilt.
Der kann dann im Vorbeigehen völlig entspannt die Daten abholen..
Ist aber noch nicht fertig, auch wegen div. anderer Produkte.
Einen kurzen Zwischenstand findet ihr auf meiner Homepage
(www.audiograde.de).

Gruß Wolfram

von edi-edi (Gast)


Lesenswert?

an pegelwandlung von -1.5V auf 5V schon gedacht ?

von Wolfram (Gast)


Lesenswert?

Jepp,

in der ersten "groben" Phase einfach gepfuscht, weil die -1,5V auf
0 gelegt wurden und dann das Ausgangssignal wieder positiv war und so
mit nem 358 auf TTL Pegel gebracht wurde.
Bei mehreren Meßschiebern und einer Steuerung geht das aber in die Hose
und isolierte Meßschieber sind eine unfeine Sache.
Also mit einem kleinen 7660 eine neg. Spannung erzeugen, damit geht es
dann ebenfalls mit nem 358 und kostet auch nicht viel mehr...

Gruß Wolfram

von edi-edi (Gast)


Lesenswert?

Hi,

die ersten Versuche hatte ich mi Komparatoren gemacht....dann habe ich
die bessere Loesung eingesetzt: AC - Kopplung und
Analog-Verstaerkerschaltung mit CD 4049 ...jawohl..und noch einen
Inverter dahinter um ein sauberes Nutzsignal zu bekommen.Super
einfach.

Ed

von Wolfram (Gast)


Lesenswert?

Hi Ed,

interessante Sache das. Hast Du mal nen Plan, würde ich auch gerne mal
ausprobieren, hört sich einfacher an als meine Lösung..

Wolfram

von Peter (Gast)


Lesenswert?

@Matthias,
wenn Du die Messschieber schon am laufen hast kannst Du das doch schon
mal hier veroeffentlichen.
Hast doch bestimmt schaltplaene, layouts, etc.....
Waehre echt super!
Oder wenn Du ne Homepage hast, da was einstellen und uns den Link geben
:-)

Tschau
Peter

von Peter (Gast)


Lesenswert?

@edi edi
Jo, wenn das so einfach ist, immer her damit :-))

Tschoe
Peter

von edi-edi (Gast)


Angehängte Dateien:

Lesenswert?

...her damit! ...klingt so als waeren tiger am fleisch...oder loewen?

von Peter (Gast)


Lesenswert?

@edi

sollte eigentl;ich nur ein Spass sein, wollte niemenadem auf den
Schlips treten..... :-)
Tschau

von edi-edi (Gast)


Lesenswert?

keinproblemfandichnursuess! ;-)

Vielmehr, konntest Du damit ein brauchbares Signal erzeugen?

Ed

von Rolf (Gast)


Lesenswert?

Hi zusammen,
schaut mal auf die Seite: www.Mess-elektronik.de
ich habe mal so ein Ding mit Edgar gebaut. Wenn jemand Hilfe braucht,
einfach mailen.
Gruß Rolf

von Panda (Gast)


Lesenswert?

Hallo,
dies ist ein älterer Beitragsstrang, ich weiß. Ich war auf der Suche
nach einer Möglichkeit die Daten meiner 2 Anbaumeßschieber geeignet
anzeigen lassen zu können und bei der Suche nach einer Schaltung fand
ich diese Diskussion.
Leider habe ich aus den Beiträgen nicht wirklich was Brauchbares
herauslesen können und bin jetzt fast genauso "schlau" wie vorher.
Hat jemand eine Schaltung für eine oder zwei Achsen, die funktioniert,
die man relativ leicht nachbauen kann und die er mir zur Verfügung
stellen würde??
Leider habe ich von der Programmierung von PICs und AVRs noch keinerlei
Ahnung, es wäre also schön, wenn ich auf was fertig programmiertes
zurückgreifen könnte.
Hoffentlich kriege ich noch ne passende Antwort, ich würde mich freuen,
weil das momentane Ablesen der Anzeigen ist mehr als belastend.

Vielen Dank im voraus ...

von Ka S. (kasuh)


Lesenswert?

Hat jemand schon eine Kopie des erwähnten Artikels aus der Funkschau, 
die er/sie mir zukommen lassen kann?
Hier nochmal die genaue Referenz:

Zeitschrift: Funkamateur (www.funkamateur.de)
Inhalt: Messschieber mit Display und Zusatzfunktionen
Autor: Klaus Sander (info@sander-electronic.de)
Rubrik: Elektronik
Heft/Seite: 3/256 - 2005

von Remo Hug (Gast)


Lesenswert?

Hallo

Mal angenommen die Signale (Data und Clock) kommen bei meinem PIC an.
Wie kann ich nun am einfachsten den Start des Gesamten Protokolls 
erkennen?

Hab mir schon mehrere Oszi-Bilder angeschaut. Nun habe ich aber immer 
noch kein Plan wie ich das angehen soll.

freundliche Grüsse

Remo Hug

von K. J. (Gast)


Angehängte Dateien:

Lesenswert?

Hi am besten per Interrupt + timer hab mich damit auch schon beschäftigt 
Schaltung siehe Anhang nur SW gibs noch net hab irgendwann die lust dran 
verloren.

(anhang: mein Projekt Ordner + Oszi Bilder ...)

von Remo Hug (Gast)


Lesenswert?

Danke.

Aber da muss es doch eine lösung geben, den Start per Software zu 
ermitteln.
Das haben ja schon mehrere Programmierer gemacht.

Das es mit Timer und Interrupt irgendwie zu lösen ist dachte ich auch.
Aber ich hab einfach keine Idee.

freundliche Grüsse

Remo Hug

von K. J. (Gast)


Lesenswert?

Hi schau mal in die oszi bilder dann wirste sehen das das startsignal ne 
bestimmte länge hat am besten per Interrupt nen timer starten und messen 
wan des Startsignal kommt wen das passt kanste den rest ebenfalls über 
den Interrupt und den timer machen

von kasuh (Gast)


Lesenswert?

Ob ein Timerinterrupt notwendig ist hängt vom Gesamtkonzept ab und
ist nicht unbedingt notwendig. Es geht auch über Polling eines Timers, 
den man in jedem Fall braucht.

Eine einfache Lösung geht wie folgt:

Warte auf Clock low, dann Timer starten (Überlaufzeit > 100 us

In einer Schleife prüfen ob Timeroverflow oder Clock high

Wenn Timer vor High abgelaufen, dann liegt Pause zwischen zwei 
Datagrammen vor und man wartet auf das nächste Clock high, hier beginnt 
das Datagramm.

Wenn Clock auf High und kein Timeroverflow, dann ist man irgendwo mitten 
in einem Datagramm. Timer zurücksetzen und weiter warten.

Low und High können natürlich vertauscht sein, je nachdem, wie man die 
Messleisten an den Prozessor angeschlossen hat.

von Remo Hug (Gast)


Lesenswert?

Hallo

Weiss jemand welche grösse der Kondensator bei Ed's Verstärkerschaltung 
hat?

freundliche Grüsse

Remo

von Mensch_Z (Gast)


Lesenswert?

hallo hier is'r
10 000 pf  oder 0,01uF

ciao

von Remo Hug (Gast)


Lesenswert?

Hallo

Habe nun die Beschaltung vor dem PIC soweit, das es in den PIC passt.

Habe folgendes zur verfügung:

-PIC 16F877A mit 20MHz Quarz
-MikroC-Compiler

Habe nun in C mal probiert ein Programm zu schreiben, aber ich glaube es 
bekommt nicht alle Daten mit.
Hat jemand erfahrung mit MikroC und weiss ob der Code schnell genug sein 
kann für sowas.
Kann es sein dass man bei dieser Anwendung nur mit Assembler schell 
genug ist?
Die 20MHz müssten eigentlich reichen oder?

Hat vielleicht einer eine Konkrete Idee wie der Ablauf eines solchen 
Programms sein soll?

Ich möchte am schluss eigentlich 3 Messschieber einlesen und ausgeben. 
Dazu noch die Werte Umrechnen.
Leider binn ich mit einlesen eines Messschiebers schon ein bisschen 
überfordert.

freundliche Grüsse

Remo

von kasuh (Gast)


Lesenswert?

Habe nur AVR-Erfahrung und kenne  den PIC zu wenig. Würde allgemein zu 
Assembler raten, zumindest für die Einleseroutine.
Kritisch ist nur, das Datenpaket einzulesen, welches ca. 1 Millisekunde
dauert, danach hast Du endlos Zeit (genau genommen ca. 19 Millisekunden 
im Fast-Modus) mit dem Datenpaket zu machen, was Du willst.
Die Datenbits werden mit 96 khz getaktet, Für eine Überschlagsrechnung
runde ich auf 100 kHz. Bei einem Prozessortakt von 4 Mhz ergeben sich
somit 40 Takte, die zur Verfügung stehen, 1 Datenbit einzulesen und
in ein 24bit-Register zu schieben. Da ist also genügend Luft
ein Triple-Sample zu machen (den Datenwert dreimal einlesen und 
mitteln),
um eventuell vorkommende Glitches zu filtern.

Ansonsten sollte man wissen, welches Protokoll die Messleiste ausspuckt.
Siehe dazu z.B.: http://www.yadro.de/digital-messleiste/protokoll.html.

von Remo Hug (Gast)


Lesenswert?

Hallo

Die Messleiste spuckt das Chinese-Protokoll aus. (Weiss nicht ob das die 
richtige bezeichnung des Protokolls ist. Eher nicht. )

Auf jedenfall ist es das, welches hier genau beschrieben ist:
http://www.shumatech.com/support/chinese_scales.htm

Das Protokoll ist mir auch geläufig und wenn ich den wert habe, kann der 
MP auch umrechnen nur weiss ich nicht genau wie ich den start des 
zweiten 24-Bit Pakets am besten detektiere und dann die Werte einlese 
ohne gross leistung zu verschwenden.

freundliche Grüsse

Remo

von Remo Hug (Gast)


Lesenswert?

Hallo

Keiner ein Plan?

freundliche Grüsse

Remo Hug

von kasuh (Gast)


Lesenswert?

Zwei Möglichkeiten
A:
Warte auf Taktsignal high, welches deutlich länger ist als 50 us,
dann ist man am Beginn des zweiten 24bit Datenpaketes.

B:
waitSync - Warte auf Taksignal low, welches deutlich länger ist als 6us,
           dann ist man in der Pause zwischen 2 Datagrammen. Warte dann
           auf das nächste High. Jetzt ist man am Anfang des ersten
           24-bit-Datenpaketes.
getdata24 - Überlies die ersten 24 bit und nimm die nächsten 24 bit.

Ich empfehle die Methode B, da sich hier auch das BCD-Protokoll gut 
integrieren läßt:

Hier das ganze in Pseudocode:

waitSync();
if(BCD-Protokol)
{
  data = getDataBCD();
}
else
}
  getData24();
  data = getData24();
}

von Michael H. (mah)


Lesenswert?

es heisst Sylvac - Protokoll. Sylvac ist ein Hersteller von (u.a.) 
digitalen Messschiebern.

Hier ist eine Beschreibung drin: 
http://www.finger.de-web.cc/drehbank/Interfacetypen.pdf

-mah

von Remo Hug (Gast)


Lesenswert?

So.

Habe nun mal ein Programm in MicroC geschrieben.
Es funktioniert soweit.
Möchte nur noch wissen, was man besser machen kann. (gibt sicher 
einiges)
Vor allem auch im Hinblick, dass ich nachher drei Messchieber am PIC 
einlesen will.

1
#include "Display_utils.h"
2
3
unsigned char Zaehler1 = 0;
4
unsigned char Wert_Lesen = 0;
5
unsigned char Read_Bit = 0;
6
unsigned char Minuswert = 0;
7
unsigned char Wert_Array[24];
8
9
unsigned long Wert_Eingelesen = 0;
10
unsigned long Rechnungswert = 0;
11
unsigned long Schlusswert = 0;
12
13
const float x = 806.299;
14
15
16
void interrupt(){
17
     
18
     if (INTCON.INTF){
19
        INTCON.INTF = 0;
20
        if (Wert_Lesen){
21
           Wert_Array[Read_Bit] = PORTB.F1;
22
           if (Read_Bit == 0){
23
              Wert_Lesen = 0;
24
              INTCON.GIE = 0;
25
           }
26
           --Read_Bit;
27
28
        }
29
        else{
30
           if (OPTION_REG.INTEDG){
31
              OPTION_REG.INTEDG = 0;
32
              TMR1H = 0xFE;
33
              TMR1L = 0x6F;
34
              T1CON.TMR1ON = 1;
35
           }
36
           else{
37
              OPTION_REG.INTEDG = 1;
38
              T1CON.TMR1ON = 0;
39
              PIR1.TMR1IF = 0;
40
           }
41
        }
42
     }
43
     
44
     if (PIR1.TMR1IF){
45
        PIR1.TMR1IF = 0;
46
        T1CON.TMR1ON = 0;
47
        Wert_Lesen = 1;
48
        Read_Bit = 23;
49
     }
50
     
51
52
}
53
54
55
void main()
56
{
57
58
59
60
    //* inizialisieren der PORT's *//
61
    ADCON1 = 0;
62
    TRISA = 0x00;                           // Set PORTA as output
63
    TRISB = 0xFF;                           // Set PORTB as input
64
    TRISD = 0x00;                           // Set PORTD as output
65
    PORTA = 0x00;
66
    PORTB = 0x00;
67
    PORTD = 0x00;
68
69
    //* Interrupts erlauben *//
70
    INTCON.GIE = 1;
71
    INTCON.PEIE = 1;
72
    INTCON.INTE = 1;
73
74
    //* inizialisieren des TIMER1 fuer 100us Interrupt *//
75
    PIE1.TMR1IE = 1;
76
    PIR1.TMR1IF = 0;
77
    T1CON.T1CKPS1 = 0;
78
    T1CON.T1CKPS0 = 0;
79
    T1CON.TMR1CS = 0;
80
    TMR1H = 0xFE;
81
    TMR1L = 0x6F;
82
    T1CON.TMR1ON = 0;
83
84
    //* Port RB0/INT für steigende Flanke Konfigurieren
85
    OPTION_REG.INTEDG = 1;
86
87
    //* main loop *//
88
89
    do {
90
    Zaehler1 = 0;
91
    Wert_Eingelesen = 0;
92
      do{
93
         if (Zaehler1 > 0){
94
            Wert_Eingelesen <<= 1;
95
            Wert_Eingelesen |= Wert_Array[Zaehler1];
96
            ++Zaehler1;
97
            }
98
         else{
99
            Minuswert = Wert_Array[Zaehler1];
100
            ++Zaehler1;
101
         }
102
      }while (Zaehler1 < 24);
103
104
      if (Minuswert){
105
         Rechnungswert = (~Wert_Eingelesen & 8388607);
106
      }
107
      else{
108
         Rechnungswert = Wert_Eingelesen;
109
      }
110
111
112
      Schlusswert = (Rechnungswert*100) / x;
113
114
      PORTD = mask(Schlusswert % 10u,0);
115
      PORTA = 0x01;
116
      Delay_us(250);
117
      PORTA = 0x00;
118
119
      PORTD = mask((Schlusswert / 10u) % 10u,0);
120
      PORTA = 0x02;
121
      Delay_us(250);
122
      PORTA = 0x00;
123
124
      PORTD = mask((Schlusswert / 100u) % 10u,1);
125
      PORTA = 0x04;
126
      Delay_us(250);
127
      PORTA = 0x00;
128
129
      PORTD = mask(Schlusswert / 1000u,0);
130
      PORTA = 0x08;
131
      Delay_us(250);
132
      PORTA = 0x00;
133
134
      INTCON.GIE = 1;
135
    }while (1);
136
}


freundliche Grüsse

Remo Hug

von Remo Hug (Gast)


Lesenswert?

Hallo.

Keine Verbesserungsvorschläge?

freundliche Grüsse

Remo Hug

von Frank (Gast)


Lesenswert?

Hallo Remo,

Bezüglich deines Plans drei Messschieber einzulesen, könnte dich 
folgende Seite interessieren:

http://www.caliper2pc.de

Bitte halt uns auf dem Laufenden.

Hoffe, damit geholfen zu haben

Frank

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

mich interessiert der Messschieberumbau und hätte eine Frage zu der 
Pegelanpassung -1.5V zu TTL. Edi-Edi hat die Schaltung im Anhang 
skizziert. Alter Hut wahrscheinlich und trivial ABER wie genau 
funktioniert diese? Wieso sind die 4049 hintereinander geschaltet und 
warum 1MOhm als Rückkopplung?

Lg Manfred

von Florian (Gast)


Lesenswert?

Hallo,

ich habe lange gesucht und bin dann letztlich auf diesen Thread 
gestoßen. Ich möchte einen Messschieber auslesen, welcher offensichtlich 
nach dem 2*24 Bit Protokoll sendet. Es sieht jedoch so aus, dass die 
relative Position zuerst gesendet wird und danach die absolute Position 
gesendet wird. Das erkenne ich daran, weil ich am Messschieber die 
relative Position auf 0 setzen kann. Die einzelnen Bytes werden im 
Zweierkomplement übertragen.

Ich lasse mir die 6 Byte auslesen und komme dann auf Werte, welche ich 
mir nicht erklären kann. Es ist zum einen so, dass die Werte der 
absoluten Position ständig wechseln oder zumindest schwanken. Die ersten 
3 Byte sind dagegen recht robust. Ich habe schon mehrere Terminals 
ausprobiert, welche die serielle Schnittstelle auslesen können. Ich habe 
selbst ein C++ Programm geschrieben was das kann. Die Werte müssen 
eigentlich richtig sein.

Ich gehe jetzt einmal von der positiven Darstellung aus, weil mich die 
nur letztlich interessiert:

Wenn ich mir die Werte so anschaue zählen sie bis 7F hoch. Ich erkenne, 
dass es sich um eine positive Zahl handelt an der führenden 0. Jetzt 
habe ich folgende Ausgabe:

Am Punkt 0:

00 00 00

ich schiebe weiter und bekomme:

00 00 7F

ich schiebe weiter und bekomme:

00 00 00

jetzt schiebe ich noch einmal weiter und erhalte:

00 01 7F

Wo ist der erste Überlauf gespeichert? Warum wird nur nach jedem zweiten 
Durchlauf hochgezählt? Gibt es ein Bit bei der seriellen Schnittstelle, 
wo ein Übertrag angezeigt werden kann?

Bevor hier irgendwer denkt, der Messschieber funktioniert nicht. Er 
funktioniert. Die beigelieferte Software liefert die richtigen Werte. 
Ich habe nur einen Denkfehler und jetzt wüsste ich gerne wo der liegt.

ich bin über jede Hilfe dankbar,

mfg

Florian

von JensM (Gast)


Lesenswert?

Hallo Florian

Ich bin im Moment auch dabei einen Messschieber auszulesen.
Ich verwende einen ATMega8.

Der Messschieber kann nicht direkt mit einer seriellen Schnittstelle
des PC verarbeitet werden.
Ein Datenbit muss mit dem Taktsignal verarbeitet werden.

Im Moment liest du vermutlich mit den 00 00 Werten das Startsignal ein.
Die folgenden Werte sind dann Datenbits.

Die Datenbits koennen aber nicht ohne Tackt eingelesen werden.
Dazu fehlen Synchronisationsbits wie das Start Bit und Stop Bit bei 
RS232.

Auf folgender Seite ist das Protokoll gut beschrieben:

http://www.yadro.de/digital-messleiste/protokoll.html

Gruss Jens

von Manfred (Gast)


Lesenswert?

Hallo gemeinde

will ja nicht lästig sein, aber vl. kann mir jemand oben genannte 
schaltung pinsel.gif kurz erläutern, wie genau die funktioniert. also 
warum 3x 4049 hintereinander und mit 1MIhm rückgekoppelt?

lg manfred

von Peter B. (dl2sat)


Lesenswert?

Hallo Jens,

bin dabei mit der Schaltung die unter www.roehrenkramladen.de/ 
veröffentlicht ist zu experimentieren.
Ich habe die Elektronik aufgebaut, drei Messschieber angeschlossen, 
bekomme
auch eine Anzeige allerdings mit dem falschen Vorzeichen, ab einem 
bestimmten Messwert kommt diese Anzeige:

Messschieber-Werte pos. Terminal minus
z.Bsp. Messsch. 25,00mm >Terminal -25,20
                40,00             -40,31
                40,64          +10444,79
                55,00          +10430,31
                81,26          +10403.85
                81,30             -81,94

Der ATMEGA8 ist mit dem als "LIDL-Programm" bezeichneten Programm 
"bestückt".

Die Messschieber geben wohl das 2x24 ger aus.

Würde dein Programm auf dieser Hardware laufen?? Habe vom programmieren 
keine Ahnung!!!!

Eine pos. Antwort würde mich sehr freuen!!! dl2sat(at)gmx.de

M.f.G Peter

von hotstuff (Gast)


Lesenswert?

Manfred,

die anordnung bildet einen analog_verstaerker...3 mal negieren heisst 
verstaerken...mit der rueckkopplung laesst sich das spiel kontrollieren

edi-edi

von Sven H. (svenh)


Lesenswert?

Hallo liebe Forengemeinde !
hier war's ja recht lange ruhig !

Ich habe ebenfalls das Messsystem von Hans Borngräber
(http://www.roehrenkramladen.de/DRO/Projektmappe_MAS_V1_0.htm)
nachgebaut und bin auf die selben Fehler gestoßen wie oben Peter Burr ! 
Eine Nachfrage bei Herrn Borngräber blieb leider ohne Antwort , also 
setzte ich mich selbst auf meinen Hosenboden und Überarbeitete das 
Programm so das es für die Digitalmessschieber mir dem 24 Bit Protokoll 
( 2x24Bit ) einwandfrei funktioniert (Peter Burr hat sie schon 
getestet)!
Auf meiner Fräse laufen zwei 500mm und ein 150mm Messschieber ohne 
Probleme . Wer Interesse an den Programm hat kann es kostenlos auf 
meiner Homepage
http://www.svens-projekte.de/
,unter Mikrocontroller, herrunterladen !

Im Augenblick bin ich dabei eine neue Firmware für das "Borngräber" 
System und ein eigenes Windows - Terminalprogramm zu schreiben , welches 
dann eine bessere Bediehnung und Darstellung ermöglicht und die Tastatur 
wird für dieses Programm ebenfalls nicht mehr benötigt , die gesammte 
Rechenprozedur wird vom µC auf den PC verlagert und somit optimiert !
Sobald die neue Software und die dazugehörige Firmware fertig ist , 
stelle ich sie auf meiner seite zum Download bereit .
Ein Umbau auf USB ist ebenfalls in der Planung und wird dämnächst kommen 
!

so , viel Spaß mit der Software

Sven

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.