Deusch/German  Deutsch

English/Englisch  English

YADRO-Logo

Home

Was ist neu?

Was ist das?

YADRO benutzen

Im Detail

Downloads

Wo kaufen?

Newsletter

Links

Impressum

Interface DRO:int4 zur Digitalanzeige im Detail

Das DRO:int4 gibt es (z.Zt.) als Bausatz. Mehr dazu auf der Händler Seite insbes. für Optionen bezüglich Kabeln, Steckern und Gehäusen. Händler haben evtl. auch Messleisten, die garantierterweise funktionieren.

Das Interface kann auch ohne DRO:ddisp-Software benutzt werden, wenn jemand seine eigene Anzeigesoftware dazu schreiben will. Wer dazu mehr Informationen braucht, wendet sich an mich.
Das Interface hat einen Satz von Anweisungen, mit dem der PC mit den Mesleisten kommunizieren kann, Werte auslesen kann, und natürlich die aktuellen Messwerte auslesen kann.

Die Kapitel:

DRO:int4 Kommandos:

Wenn man das YADRO-Interface mit seinem PC verbindet, ein Terminal-Programm startet (mit den richtigen Einstellungen) und dann das YADRO-Interface einschaltet, bekommt man folgende Meldung:

*** Welcome to YADRO-land! ***
(c) 2005 Nick Mueller // www.yadro.de

Wenn das passiert, ist das Interface (zumindest irgendwie) funktionabel und die Verbindung zum PC funktioniert.

Ich habe ein einfaches Terminal Program (TERM.EXE) dafür "zusammengebastelt" das COM1 verwendet und mit den 19200 Baud kommuniziert. Die aktuelle Version von Term unterstützt jetzt auch Ports ungleich COM1:. Dazu beim Aufruf -p:COMx (x = Port-Nummer) angeben.

Man kann also mit dem Interface kommunizieren. Kommunikation bedeutet, daß man Zeichen in der Konsole eingibt, das Interface diese erhält und interpretiert. Es gibt kein Echo aber eine Antwort wenn das Kommando verstanden wurde. Kommandos werden nicht mit einer Zeichenfolge abgeschlossen.

DRO:int4 RS232 Spezifikation:

  • 19200 Baud
  • 8 Bit
  • 1 Stop Bit
  • Keine Parität
  • Kein handshake (weder XON/XOFF, noch RTS/CTS)

NB: Kommandos unterscheiden Groß/Kleinschreibung. Alle Antworten vom Interface werden mit einem CR/LF abgeschlossen.

Die Kommandos in einer halbwegs logischen Reihenfolge:
Kommando
(In der Konsole eingegeben)
Aktion
(Im Interface ablaufend)
Antwort
(Vom Interface)
v Version
Zeigt die Frmware-Version an.
YADRO-DROINT v0.1
d0
d1
d2
d3
Debug/display device #0… device #3 ausführliche Information.
Gültiger Bereich ist 0…3. Bei Bereichsüberschreitung kommt eine Fehlermeldung.

Das "d"-Kommando konfiguriert das Interface zum Lesen von einer (angeschlossene) Einheit. Wenn man das YADRO-Interface zum allerersten mal startet muß man zumindest ein "da" oder "d0" (oder d1, d2, d3) für jede angeschlossene Einheit durchführen. Wenn man das nicht macht, bekommt man bei Leseversuchen von den Einheiten Fehlermeldungen.

Der Befehl kann bis zu 2 Sekunden Verarbeitungszeit brauchen. Es dauert sogar noch länger, wenn man ein niederfrequentes SIgnal anschließt. Aber wer macht das schon?

Wenn nichts am Port angeschlossen ist:
Checking device #0...
Clock :stuck H
Data  :stuck H

Wenn etwas angeschlossen ist:

Checking device #0...
Clock : Signal
Data  : Signal

Wenn dieses Etwas erkannt wird:

Checking device #0...
Clock : Signal
Data  : Signal
Device: 7BCDs (YADRO 'B')

oder:

Checking device #0...
Clock : Signal
Data  : Signal
Device: 2*24bits (YADRO 'L')
da Führt ein "d0", "d1", "d2", "d3" als Block aus. siehe d0…d3
dw Schreibt die Information die mit einem "da" oder "d0"…"d3" Kommando gesammelt wurde in den nichtflüchtigen Speicher des Interfaces. Wenn man das YADRO-Interface aus und wieder einschaltet, dann werden diese Informationen zurückgelesen. SOmit muß nicht nach jedem EInschalten ein "da" ausgeführt werden.
OK
dr dr ist der Gegenpart zu dw. dr liest aus dem EEPROM die Konfiguration der Schnittstellen aus. Normalerweise wird das Kommando nicht benötigt, da YADRO:int4 die Daten beim Reset/PowerOn selbstständig ausliest. Das Kommando half aber bei der Fehlersuche.
Die ausgegebenen Zahlen sind 8 Bit hex und sind die Anzahl Bits die pro Port ausgelesen werden (von links nach rechts / dev##0…dev#3). Eine 00 ist ein nicht belegter Port, eine 31 z.B. eine Messleiste mit 2 * 24 Bit.
31313100 OK
r0
r1
r2
r3
Lesen von EInheit #0…#3. Das Interface muß zumindest einmal mit einem "da" oder "d0…d3" konfiguriert worden sein.
Die Ausgabe ist in hex und wird mit einem CR/LF abgeschlossen. Die Bitfolge ist genau so wie sie gelesen wurde. Es erfolgt keine Interpretation.
DRO#0:0x00112233

oder

DRO#0:0x0011223344
s0
s1
s2
s3
10 mal Schnellesen. Das ist ein "burst"-Lesen einer Einheit. Entspricht einem 10maligen schnellen Aufruf von r0…r3. Kann verwendet werden um festzustellen, ob die Einheit im "Fast"-Modus ist. Könnte auch zum Mitteln von Lesewerten verwendet werden. 10maliges r0, r1, r2, r3
a Aktiv Modus. In dieser Betriebsart werden alle Einheiten in einer Endlosschleife gelesen, und, sobald sich eine Einheit ändert, der Wert ausgegeben. Passieren keine Änderungen, gibt es auch eine Ausgabe.
OK

Danach: siehe r0, r1, r2, r3

p Passiv Modus. Beendet den Aktiv Modus. Der Passiv Modus (oder Polling-Modus) ist der Standard-Betriebsmodus. Um in diesem Modus Ablesewerte zu bekommen, müssen sie -per r0…3 oder s0…s3- angefragt werden.
OK
c0C
c1C
c2C
c3C
Konfiguration Port, indem Clock auf H gelegt wird. Dieses Kommando legt die Clock-Leitung der entsprechenden Einheit für 1 Sekunde auf H (1,55V) Es dient dazu, die Betriebsarten der Einheiten zu wechseln. Siehe dazu die Beschreibung der Messleisten.

NB: Das zweite "C" ist groß geschrieben.

OK
c0D
c1D
c2D
c3D
Konfiguration Port, indem Data auf H gelegt wird. Dieses Kommando legt die Data-Leitung der entsprechenden Einheit für 1 Sekunde auf H (1,55V) Es dient dazu, die Betriebsarten der Einheiten zu wechseln. Siehe dazu die Beschreibung der Messleisten.

NB: Das "D" ist groß geschrieben.

OK
r Resetet das Interface. Es handelt sich um ein Software-Reset und das Kommando ist möglicherweise sinnlos. Aber es existiert. Der Begrüßungstext

Man muß etwas freundlich mit dem Interface umgehen. Nicht mit Kommandos zustopfen, sondern warten bis eine Antwort gekommen ist. Setzt man ein neues Kommando vor einer Antwort ab, dann geht dieses einfach verloren. Das Interface speichert nur das aktuelle Kommando und löscht es erst, nachdem es abgearbeitet ist. Sendet man unbekannte Kommandos, dann werden diese kommentarlos verschluckt.

Schaltplan

Zur Referenz ist hier der Schaltplan für DRO:int4.

Dass der Schaltplan veröffentlich ist, bedeutet nicht, dass er frei verfügbar ist. Kommerzielle Verwendung ist untersagt! Das Copyright bleibt bei Nick Müller

Stückliste

Teil# Dimension Kommentar
Kondensatoren
C1…C5, C10, C12, C13, C15 100n Keramisch
C8, C9 22p Keramisch
C6 10µ Elko, 6.3V
C11, C16 1000µ Elko, 33V
C7 22µ Elko, 6.3V
C14 Elko, 6.3V
nicht gezeichnet Elko, 2V min., jeweils in den Messleisten
Widerstände
R1, R2, R5…R12 100 R1, R2 Metallfilm, 1%
R3 56 Metallfilm, 1%
R4 220 Metallfilm, 1%
R14, R15, R23 330
R16, R19..R22 3k9
R13, R17, R18 10k
Dioden
B1 B40C800 Brückengleichrichter; min. 20Volt, 200mA;
LED1 -- Stromversorgungs-LED
ICs
IC1 MAX232N (TI) oder MAX232ACPE (Maxim)
IC2 LM317LZ TO92 Gehäuse
IC3, IC4 LM2901N
IC5 CD4051N (DIL) oder 4051B
IC6 Atmel ATtiny2313-20PI ein Atmel 90S2313 geht nicht
IC7 uA78S05 1.5 Ampere (200mA würde genügen)
OK1, OK2 HCPL4502 oder 6N136
Verschiedenes
Q1 20MHz (HC18 Gehäuse) oder größeres Gehäuse
DC1 5V/5V DC/DC 5v-5v DC/DC Wandler; isoliert; 1W; output +/-10% SIL4-Gehäuse.
Die nennen sich alle "xxx0505S".
J1 MTA02-100 Molex
J2 MTA03-100 Molex
X2 9 pin D-sub male Für FP-Montage
SV2…SV5 6 pin header Pin 6 ist NC
SV1 10 pin DIL-header, male Kann ausgelassen werden, je nach Programmiermöglichkeiten
nicht gezeichnet Steckernetzteil 7…9V AC, 200mA min.
nicht gezeichnet null-modem Kabel 9 Pol. W/W/ Länge nach Anforderung

Alle Widerstände min. 1/4 Watt, 10%, ausser R1, R2, R3 und R4 die 1% Metallfirmwiderstände sein müssen. Natürlich kann man für alle Widerstände Metallfilmwiderstände einsetzen, denn 10% Kohleschickt Rs werden schon langsam exotisch.

Nur um eine eventuelle Neugier zu stillen: Der erste Prototyp von DRO:int4 auf einer Europakarte, mit Fädeltechnik aufgebaut.

Neuprogrammierung des µC:

Bevor man die Software in den uC laden kann, benötigt man ein einfaches Programmiergerät und Software dazu. Der uC wird in der Platine programmiert mit eingeschaltener Stromversorgung.

Hat man das benötigte Interface und die Software, dann kann man sich hier die aktuelle Version der Firmaware des DRO:int4-Interfaces herunterladen.

Nicht vergessen, die Konfigurationsbits beim Programmieren des uC zu setzen! DWEN, EESAVE, WDTON, BODLEVEL0, BODLEVEL1, CKDIV8, CKOUT, SUT0, SUT1, CKSEL0, CKSEL1, CKSEL2 müssen alle aus sein. Ausnahme ist BODLEVEL2.
Man beachte das Bildschirmphoto. Es ist etwas verwirrend was an/aus/programmiert/wieauchimmer ist.

Programmiert man BODLEVEL2 nicht, dann besteht die Wahrscheinlichkeit, dass die Daten der Messleistenerkennung nach Entfernen der Versorgungsspannung verlorengehen.

Zwei mal kontrollieren wo der Pin 1 des ISP-Steckers ist!

Bild ist veraltet (Lage der Widerstände etc.)

Programmieren mit TwinAVR:

Das ist das einfachste Programming-Interface (TwinAVR) das man sich vorstellen kann. Wer sich entschließt das zu verwenden (Ich nicht, aber es gibt positive Erfahrungen), kann man sich ein einfaches Interface bauen das mit dem 10-poligen Pfostenstecker verbunden wird (SV1):

Der "X-PC" Stecker geht an den Druckerport des PCs. Man benötigt nur 2 Widerstände mit 220 Ohm. Während der Programmierung muss das DRO:int4 mit dessen Netzteil verbinden sein.

Die Konfigurations- und Sicherheits-Bits werden so gesetzt:

Programmieren mit PonyProg

Geeignete Adapter und Software findet man hier. Es gibt natürlich auch andere Anbieter.

Die Konfigurations- und Sicherheits-Bits werden so gesetzt: