markus5766h
-
Gesamte Inhalte
155 -
Benutzer seit
-
Letzter Besuch
Posts erstellt von markus5766h
-
-
Für genauere Messungen ist es manchmal nötig, einen einstellbaren Offset zu verwenden (Messleitungsoffset ...).
Die lässt sich unter Verwendung einiger handelsüblicher Bauteile auch über TF-Komponenten steuern.
Der Analog Out 2.0 erzeugt die "Roh"-Offsetspannung, hierzu wird dieser über einen LM317T mit 4,1VDC versorgt. Am Ausgang des Analog Out hängt ein Spannungsteiler (1:199), gepuffert von einem 10nF Kondensator und einem Impedanzwandler vom Typ OP07. Die Vergleichsspannung wird mit der Stromquelle (BC559) und den Widerständen 12 Ohm und dem Trimmer 100 Ohm erzeugt.
Zur Beachtung : eine Versorgungs-Spannungsänderung von 100mV erzeugt am Kolektor des BC559 eine Spannungsänderung von 5µV - die Versorgungsspannung muss also sorgfältig aufgebaut sein.
Beide Spannungen werden über den Differenzverstärker - wieder ein OP07 - zur Offsetspannung von bis zu +-10mV mit einer Auflösung von knapp 5µV (20mV / 4096). Dies ist für die meisten Anwendungen ausreichend.
Die Spannungsversorgung der OP07 ist in nachfolgendem Bild dargestellt.
-
Moin.
Wenn Du dies :
https://www.tinkerunity.org/forum/index.php/topic,3584.msg21700.html#msg21700
etwas umänderst, kannst Du damit auch Ströme unter 1 mA zuverlässig messen.
Die Stromquelle entfällt, der PT100 wird gegen einen Widerstand (1 % sollte reichen) ausgetauscht, das Massepotential mit den zwei Widerständen bleibt
bestehen.
Die beiden 2700-Ohm-Widerstände werden gegen einen 100-Ohm Widerstand ausgetauscht.
Ein Anschluss des Messwiderstandes an die Pumpe, den zweiten Anschluss an die Opferanode - keine (!) Verbindung der Masse zu dem Korrosionsschutzkreis.
Widerstand / Messbereich / Spannungsfall über R
100 Ohm / 1mA / 100mV
1KOhm / 100µA / 100mV
10KOhm / 10µA / 100mV
Soll noch genauer und mit kleinerem Spannungsfall gemessen werden, muss ein "richtiger" Differenzverstärker benutzt werden (3 ST. OP-Amps) oder z.B. INA110 o.ä.
-
so, hat etwas gedauert . . .
ja, das Modul funktioniert einwandfrei, und für viele Anwendungen ist es sicherlich vollkommen ausreichend - auf was die daraus resultierende, geringere Wärmeentwicklung angeht.
Ich hatte beruflich nur schon mehrere Male mit Drucksensoren (Zylinderdruck / Schiffsdiesel / Generatoren) zu tun - und des Öfteren war der Störspannungsabstand definitiv zu klein, weshalb durch Reihenschaltung eines Widerstandes der Spanungsbereich bei 20mA-Messungen auf 20 V angehoben wurde.
Hier müssten die Parallelwiderstände im Eingang dann wahrscheinlich 1W-Typen sein, um den Meßwert nicht durch Eigenerwärmung zu verfälschen.
-
Moin zusammen.
Bei Durchsicht des Schaltplanes für das Dual 0..20mA-Modul ist mir aufgefallen,
dass der Eingangswiderstand (R6 bzw. R7) nur 91 Ohm beträgt --> heißt, bei einem Stromfluss von 20mA liegt hier eine Spannung von nicht mal 2 Volt an.
Das ist für den industriellen Einsatz kaum zu gebrauchen :
insbesondere beim Messen von analogen Größen sollte der Meßspannungsbereich von
normalerweise 20V bei 24V Versorgungsspannung ausgenutzt werden, um den Störspannungsabstand bei analogen Signalen möglichst klein zu halten,
selbst im 10V Meßbereich (0..20mA) kann der Widerstand dann 500 Ohm betragen.
Ist in dieser Hinsicht eine Änderung geplant ?
-
Moin.
1) Der 140mV-Spannungsfall ist nicht dramatisch - und eigentlich völlig normal.
Jeder - wie auch immer aufgebauter - Spannungsregler quittiert einen erhöhten
Strombedarf mit Reduzierung der festgelegten Nennspannung.
2) Die Step-Down-Power-Supply sollte - auf Grund ihrer Eigenschaften - mit einer
niederohmigen Spannungsquelle betrieben werden : min. 1A (besser mehr) bei einer
Spannung von min. +6,5V. Ich benutze in einer Meßanordnung eine Versorgung mit
7,5V - 2A, habe 2 Master-Bricks und 8 Bricklets dran --> Spanungsfall : 45mV.
3) Die meisten Bricks / Bricklets haben in der Versorgung eine Schutzdiode, die
die Versorgungsspannung noch mal um ca. 400 ... 450mV reduziert, daher ist der Betrieb des Stapels bei einer kleinen Reduzierung der Spannung kein Problem.
-
... ich will aber eigentlich nicht auf SSR ausweichen, da ich Angst habe, dass ein Programmierfehler dann plötzlich für 'Auf' und für 'Ab' Strom liefert... Ich glaub das wäre schlecht...
1) Die gegenseitige Verriegelung, wie sie i.d.R. mit Relais geschaltet wird, lässt sich auch per Software programmieren, so dass Dein o. beschriebener Zustand nicht eintreten kann.
2) Die SSR kann man auch durch das DualRelayBricklet beschalten, somit sind die
Relays auf dem DualRelayBricklet so 'was wie Koppelrelays - in der Industrie
durchaus üblich.
So wird über die beiden Relays nur die Steuer(gleich-)Spannung geschaltet.
3) Zusätzlich zur programmiertechnischen "Verriegelung" kann der Ansteuerungs-
zustand der SSR's auf AnalogInput oder DigitalIn ausgewertet werden.
-
Schaltplan im Anhang,
dabei beachten : der Ground vom Brick/Bricklet-System muss mit "gnd"
der 24V-Schaltung verbunden sein.
Die Schaltung auf der linken Seite (CV --> Control Voltage) wird nur einmal benötigt - reicht für ca. 10 Komparatoren.
Der Komparator aus µ741 und dem 1K-Widerstand wird je Solid-State-Relay benötigt.
Die Leuchtdiode "LC" ist ein Low-Current (2mA, 3mmØ) Typ.
Als LowCurrent liegen die Flußspannungen der Led's bei 1,885V (1.8mA).
Kosten :
linker Schaltungsteil : ca. 5€ mit Bauteilen und Platine, Anschlussverbinder
rechter Schaltungsteil : ca. 50Ct. ohne Solid-State-Relay.
Im Anhang auch mal zwei Bilder vom Omron-SSR
Bilder von einer Gesamt-Ansteuerung hab' ich momentan nicht - ist verbaut.
Stromverbrauch :
linker Schaltungsteil : ca. 5mA
rechter Schaltungsteil inkl. SSR : ca. 17mA (max)
... ach ja : Größe
linker Schaltungsteil : ca. 30*30mm
rechter Schaltungsteil : ca. 20*30mm ohne SSR
Abmaße Omron Sold State Relay :
B = 22,5mm
H = 98mm (inkl. Kühlkörper)
T = 80mm
... Nachtrag :
eine andere Möglichkeit ist,
diese Relais-Karte
am IO16 zu betreiben (kostet so um die 8€), ist in den Eingängen über
Optokoppler geschaltet, so dass auch hier eine gewisse Sicherheit besteht.
Allerdings sind diese Platinen keine Industrieware,
wenn also die Tierchen in den Terrarien nicht unbedingt gegrillt oder eingefroren werden sollen - würd' ich davon die Finger lassen.
Elektronik in diesem Preissegment ist meist sehr nahe an Maximalbelastungen
beschaltet, so dass der Ausfall nicht lange auf sich warten lässt.
-
Die "Schutzschaltung" betrifft aber nur die Spulenseite des Relais.
Sekundär - also an den Umschalt-Kontakten - gibt's keine Schutzschaltung / Kompensation.
Generell ist die Verwendung von Solid-State-Relais sinnvoll, allerdings haben die
meisten - industriellen - eine "Arbeitsspannung" von 24 Volt - jedenfalls die industriellen Typen wie z.B.OmronG3PB-215B-VD o.ä,
so daß man trotz dem das Dual-Relay-Bricklet benötigt, da die Bricklets 24Volt
nicht ansteuern können.
Ich habe mir etwas anders beholfen :
IO/16 --> Komparator mit µA741-OP-Amps (kosten nur wenige Cent) --> Ansteuerung
auf die Omron-Sold-State.
Die Komparatoren habe ich in der Schwellspannung auf 2,5V eingestellt.
Ist 'ne sichere Sache, die Omron's verkraften 15A, können direkt auf einer 35mm DIN-Schiene montiert werden (oder Surface-Montage).
Bei Bedarf kann ich mal ein Schaltplan posten.
Von den Omron's hab' ich auch noch ca. 30St. auf Lager.
-
... was heißt "Lampen" ?
Led's, Glühlampen, NeonRöhren,
über welche Spannungen und Ströme reden wir ?
-
Für "einfache" Sachen wie Auslesen und in einem Textfeld ausgeben
reicht Dein Code allemal,
wenn's aber dann doch mal mehr wird, sollte man sich überlegen, wie man
a) den Datenerhalt
b) die Datenausgabe - welche von a) getrennt sein sollte
bewerkstelligt.
Daher mein Hinweis mit den Arrays oder den Klassen - wenn man sich mal dran gewöhnt hat, wird vieles leichter, weil dadurch der Code übersichtlicher wird.
-
...
z.B. Verwende ich mehrere Bricklets, die die Temperatur messen können.
Alle arbeiten mit "temperature"...
Nun wird aber jede Rückgabe in ihre eigene Variable geschrieben:
TemperatureBricklet -> tmp1 = temperature
TemperatureIRBricklet -> tmp2 = temperature
...
dann benutz doch gleich Arrays für die Bricklets und die Values,
dann haben die "Values", hier "temperature"
die gleichen Indizes wie die Bricklets -->
Bricklets[0..n]
Temperature[0..n]
oder ggf. eine eigene Class definieren,
somit hast Du dann dein Bricklet mit seinen Eigenschaften
in einer Klasse untergebracht - wenn dann die Klassen eindeutig benannt werden,
ist der Code auch besser lesbar.
-
hm... Reicht im Grunde schon...
o.k., danke - wollt's nur wissen, habe in C# noch nicht gearbeitet und dachte,
dass es vielleicht eine Notwendigkeit dafür gibt --- bin eigentlich nur in Delphi unterwegs ...
-
...
Callbacks:
private void TemperatureCB(BrickletTemperature sender, short temperature) { short tmpValue = temperature; aGauge2.Invoke(new Action(() => aGauge2.Value = tmpValue / 100)); } private void TemperatureIRCB(BrickletTemperatureIR sender, short temperature) { short tmpIRValue = temperature; aGauge1.Invoke(new Action(() => aGauge1.Value = tmpIRValue / 10)); }
...
warum wird denn hier tmpIRValue auf temperatur gecastet,
langt nicht
aGauge1.Invoke(new Action(() => aGauge1.Value = temperature / 10));
?
-
...
Wenn ich einzelne bricklets abfragen möchte, dann muss ich ja ein connect mit der jeweiligen uid des bricklets absetzen, richtig?
Wie kann ich ggf. hier überprüfen, ob noch eine Verbindung besteht?
Oder denke ich jetzt in die falsche Richtung?
im Zweifelsfall mit einer Datenabfrage in einem Try-Except bzw. Try-Catch-Ressourcenschutzblock, evt. als Funktion mit boolschem Rückgabewert.
Man könnte zwar beim Connect eine Statusvariable initialisieren, diese bekommt
aber von z.B. dem Abziehgen des USB-Steckers nichts mit.
-
...
Wenn ja, wie sollte ich die Abfrage ändern, damit die "Verbindung" zu den Bricks getrennt wird?
ich trenne die Verbindung mit
ipcon.Disconnect (DELPHI)
sollte auch in anderen Umgebungen so sein
---> o.k., hatte ich übersehen, ist im Form.Close drin,
ich vermute, dass sich das Connection-State auf die interne Verbindung,
aufgebaut durch die Treiber, bezieht - sonst mal in den entspr. Bindings nachschauen, welcher Rückgabewert für connected wann erzeugt wird.
-
...In einer Zukünftigen Variante wird der Ausgang über eine Diode getrennt sein, so dass bei einer Verwechselung nicht zurück gespeist wird.
dann aber bitte die Referenz (R7, R8) nach der Diode abnehmen,
damit der Spannungsfall über der Diode kompensiert wird.
-
-
... may be, one for Wessels, they are communicating over RS-485 Interface
with NMEA-Records.
Some also have 0..20mA-Outputs for Speed and Direction.
Price-Bandwith : from 70€ ... 1800€
for analog Outputs :
http://www.windspeed.co.uk/ws/index.php?option=displaypage&Itemid=47&op=page&SubMenu=
for analog and NMEA-Output :
http://images.google.de/imgres?imgurl=http://gillinstruments.com/images/products/anemometer/windsonic-m/windsonic-m-wind-sensor.png&imgrefurl=http://gillinstruments.com/products/anemometer/windsonic-m.html&h=310&w=271&tbnid=meLoMuZap0sxwM:&tbnh=90&tbnw=79&docid=OrC3CHzrRIq02M&usg=__are1GlOed-I0xraNvigUqdnQRCc=&sa=X&ved=0ahUKEwiZ3f2579fPAhUD7B4KHbeaCQAQ9QEITjAE
-
...
Du kannst getchar() durch ein while (true) Schleife ersetzen und dort regelmäßig alle 10 Millisekunden deine knopf Variable prüfen.
...
Für usleep muss du noch unistd.h includen. Falls du auf Windows bist, musst du usleep(10000); durch Sleep(10); ersetzen und windows.h includen.
wird aber nie wirklich 10ms sein : Windows selbst gibt eine min. Sleep-Step von
15..16ms an, da die Funktion Sleep nicht genau genug arbeitet, wer's genauer haben möchte muß auf den Performance Counter ausweichen.
Zudem friert die Funktion Sleep in einer Schleife das Programm ein, daher sollte so eine Funktion dann in einem eigenen Thread eingebunden sein.
... nur so als Ergänzung
-
... bei mir auch
-
Wie lange kann man die kostenfrei benutzen . . .
zeitlich unbegrenzt, einzige Einschränkung ist das Fehlen der Upgrade-Berechtigung . . . aber für nothing . . . ,
kommerziell ist die Nutzung begrenzt (glaube 3 Monate), aber wer damit permanent Geld verdienen will, kann sich die Version sicher auch kaufen . . .
-
Ok, gefunden, schalte den Range Check aus, ist ja bei dir an, denn wenn ich z.B. im LEConverter {$R+} extra hinzufüge bekomme ich deinen 1091.
Entweder in den globalen Compiler Flags oder so
unit LEConverter; {$R-} {$ifdef FPC}{$mode OBJFPC}{$H+}{$endif}
o.k., danke
wechsel dann mal von global auf Unit-bezogene Compiler-Schalter,
da ich sehr viel mit Arrays arbeite,
hab' ich den Range-Check meist global benutzt.
-
. . . vielleicht auch interessant :
Delphi 10.1 Berlin
STARTER EDITION
Promotion Download
"Embarcadero® Delphi 10.1 Berlin Starter is a great way to get started building high-performance Delphi apps for Windows. Delphi Starter includes a streamlined IDE, code editor, integrated debugger, two-way visual designers to speed development, hundreds of visual components, and a limited commercial use license. Database components and drivers are not included."
https://www.embarcadero.com/de/products/delphi/starter/promotional-download
-
Ich komme gar nicht soweit: 2 Fehler beim Erzeugen eines neuen Projects innerhalb der Bindings:
[Fehler] BlockingQueue.pas(17): $IFEND erwartet, aber $ENDIF gefunden [Fataler Fehler] BlockingQueue.pas(25): Datei nicht gefunden: 'Generics.Collections.dcu'
Mit D7 Pro.
... das sind die neusten Units (Bindings), den Fehler hab' ich auch - benutze
ältere (vorige Version) Bindings.
Die Generics sind - glaub' ich - in neueren Delphi-Versionen vorhanden
- Rad Studio (ab Version 9) ...
http://docwiki.embarcadero.com/Libraries/Berlin/de/System.Generics.Collections
sollte vielleicht in einer Versions-Abfrage gekapselt werden,
sonst sind "ältere" Delphi-Versionen nicht mehr nutzbar,
wie z.B. auch D7 und Unicode . . .
das IFEND kann umgeschrieben werden . . .
Messung sehr kleiner Ströme
in Hardware
Geschrieben
Der TE ist wohl verstorben, jedenfalls gibt's wohl kein Feedback . . . .
Der Vollständigkeit halber im Anhang eine sehr rauscharme OP-Amp-Schaltung
zum Messen kleiner Spannungen.
Der MAT 02 ist schwierig zu bekommen, als Ersatz kann der 2N4045 benutzt werden.