Hallo,
habe mir gerade ein Starter-Kit gekauft :-) und plane als Neuling etwas
planlos mein erstes Projekt:
Mit einem Atmega8 Microcontroller 24 verschiedene 22-28 Volt-Signale
verarbeiten. Die Leitungslängen betragen bis zu 20 Meter.
Meine Idee: einen Spannungsteiler aus 39k und 10k für jeden der 24
Eingänge aufbauen und an dem 10k Widerstand 4,xx V - 5,7 V abgreifen um
die Eingangsports damit zu beschalten.
Ich habe bisher noch keine Praxiserfahrung mit MC's und bin mir etwas
unsicher, ob das so funktioniert. Daher folgende Fragen und Bedenken...?
1. Sollte ich besser parallel zu C noch eine Z-Diode einbauen?
2. Ist das mit dem Spg.-teiler überhaupt ok so oder geht das gar nicht?
3. Kann ich den Spg.-Teiler und den Rest der Schaltung auf einer Platine
in einem Gehäuse (160x100mm z.B.) verbauen, an dem dann auch die 24
langen Leitungen angeschlossen werden? (EMV, Strahlung, Störungen,...)
Also funktioniert der MC so?
4. Wie hochohmig ist eigentlich so ein Eingangsport zur Masse?
Habe noch nichts darüber gelesen aber gehe in der
Spannungsteiler-Schlatung davon aus, dass man den Innenwiderstand
vernachlässigen kann... oder muss ich soetwas bei der Berrechnung der
Widerstände berücksichtigen um die minimale Eingangsspannung HI von 3,5V
am Eingang zu erreichen
Bin für eure Antworten dankbar.
Nimm eine Z-Diode und lege den Kondensator so aus, dass er mit den
Widerständen ein RC-Glied ergibt welches nicht mehr als eine Oktave
Deiner höchsten Signalfrequenz liegt.
Die Eingangswiederstände vom ATMega stehen im Datenblatt unter
"Electrical Characteristics". Meines Wissens nach haben die ATMegas aber
Eingangsverstärker.
Die Fragen die Du Dir stellen solltest sind, wie genau willst Du die
Spannung messen?
Bedenke, der Eingang des Controllers verträgt nur 0V bis
Versorgungsspannung.
Jojo schrieb:> Mit einem Atmega8 Microcontroller 24 verschiedene 22-28 Volt-Signale> verarbeiten. Die Leitungslängen betragen bis zu 20 Meter.
Was heißt "verarbeiten" bei Dir? Willst Du den genauen Spannungswert
haben, oder reicht die Information "Spannung da/nicht da" aus? Ich tippe
auf letzteres, frage aber sicherheitshalber nochmal nach.
Dann noch die Frage: Willst Du eine definierte Schaltschwelle haben
(sprich: 22V oder mehr heißt Spannung da, weniger als 22V heißt:
Spannung fehlt; kann auch ein anderer Wert als 22V sein)?
> Meine Idee: einen Spannungsteiler aus 39k und 10k für jeden der 24> Eingänge aufbauen und an dem 10k Widerstand 4,xx V - 5,7 V abgreifen um> die Eingangsports damit zu beschalten.
5.7V sind zu viel. Du willst den Controller mit 5.0V betreiben. Dann
darfst Du da auch nur Eingangsspannungen bis 5.0V anlegen. Im Datenblatt
steht Vcc+0.5V, aber das halbe Volt würde ich als Sicherheitsabstand
ansehen und nicht unbedingt ausnutzen, wenn es nicht zwingend notwendig
ist, und bei Dir ist es nicht zwingend notwendig.
> 1. Sollte ich besser parallel zu C noch eine Z-Diode einbauen?
Das hilft gegen Überspannung am Eingang und ist keine schlechte Idee.
5.1V sind ein gängiger Wert für Z-Dioden.
> 2. Ist das mit dem Spg.-teiler überhaupt ok so oder geht das gar nicht?
Im Prinzip ist das eine mögliche Lösung. Es kommt aber darauf an, was Du
genau willst - daher meine Fragen am Anfang.
Du musst Dir im Klaren sein, dass Du voraussetzt, dass das
Ground-Potential überall das gleiche ist. In der Realität ist das nicht
immer der Fall. Beispiel: Schutzleiterpotential zwischen zwei Gebäuden.
Deswegen nimmt man auch Glasfaser für die Netzwerkverbindung zwischen
zwei Gebäuden.
Eine gängige Vorgehensweise ist der Einsatz von Optokopplern. In einem
Optokoppler ist eine LED, die Du mit passendem Vorwiderstand an Deiner
Eingangsquelle betreibst. Die beleuchtet einen ebenfalls eingebauten
Fototransistor, der dann durchschaltet. Vorteil: keine elektrische
("galvanische") Verbindung zwischen den beiden Seiten, damit keine
Ground-Probleme, und der Controller hinter dem Optokoppler ist vor
Schäden von außen geschützt. Maximal triffts den Optokoppler.
Wenn Du eine genau definierte Schaltschwelle brauchst, gibt es analoge
Vergleicher, die die Eingangsspannung mit einer Referenzspannung
vergleichen. Damit kannst Du beispielsweise einen Alarm auslösen, wenn
die Eingangsspannung unter einen bestimmten Wert sinkt oder über einen
Wert steigt.
> 4. Wie hochohmig ist eigentlich so ein Eingangsport zur Masse?> Habe noch nichts darüber gelesen aber gehe in der> Spannungsteiler-Schlatung davon aus, dass man den Innenwiderstand> vernachlässigen kann... oder muss ich soetwas bei der Berrechnung der> Widerstände berücksichtigen um die minimale Eingangsspannung HI von 3,5V> am Eingang zu erreichen
Für diese Fragen gibts das Datenblatt, da steht das drin. Z.B. für
analoge Eingänge:
RAIN - Analog Input Resistance: min. 55 typ. 100 MΩ
Noch etwas: digitale Schaltungen erwarten an ihren Eingängen bestimmte
Spannungswerte für 0 und 1:
hier: 0: bis max 0.2*Vcc 1: ab min 0.6*Vcc
Den Bereich zwischen 0.2*Vcc und 0.6*Vcc solltest Du vermeiden, denn
hier ist es undefiniert, was der Prozessor tatsächlich liest, und es
können erhöhte Ströme im Controller fließen, weil die
Eingangstransistoren nicht richtig durchschalten und nicht richtig
sperren. Zu diesem Thema schlägst Du auch noch den Begriff
"Schmitt-Trigger" nach, der kann hier helfen.
fchk
Jojo schrieb:> habe mir gerade ein Starter-Kit gekauft :-) und plane als Neuling etwas> planlos mein erstes Projekt:
Schön.
> Mit einem Atmega8 Microcontroller 24 verschiedene 22-28 Volt-Signale> verarbeiten. Die Leitungslängen betragen bis zu 20 Meter.
Wie wäre es denn erstmal mir einer Leitung?
So wie sich dein Text liest, hast du festgestellt, daß dein Atmega im
TQFP-Gehäuse 24 Eingänge hat. Und jetzt willst du damit 24 Leitungen
abfragen und dann verarbeiten. Und dann? Was soll denn danach passieren?
Dein "Projekt" ist gerade sowas wie ein PC mit einer wunderschönen
Designertastatur aber ohne Monitor.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
In einem Jahr sprechen wir uns wieder.
mfg.
Brauchst oder willst du eine Potentialtrennung?
Falls nein:
Machs so wie im Beitrag "Re: 24 V auf µC-Eingang mit Zenerdiode?"
Mit Potentialtrennung kommt da ein Optokoppler plus "Drumrum" pro Kanal
dazu.
Jojo schrieb:> 4. Wie hochohmig ist eigentlich so ein Eingangsport zur Masse?
Der spielt sich im oberen Megaohmbereich ab, wenn kein Pullup aktiviert
ist...
Christian Berger schrieb:> Eingangswiederstände
Schon wider!
Vielen Dank für eure schnellen Antworten...
Spitze von euch, mir bei meiner anfänglichen Unsicherheit und den blöden
Fragen zur Seite zu stehn.
Die Spannung soll in der Schaltung nicht genau gemessen werden. Der HI
Pegel soll sicher bei22 -28V erkannt werden. Low Pegel bei 0V- 2Volt.
Zustände zwischen 2 und 22 Volt treten nicht auf. (Oder kann die lange
Anschlussleitung irgendwie Spannungen induzieren, die diese Zustände
verfälscht?)
Die Lösung mit den Optokopplern ist wohl die am besten Geeignete.
Die 5Volt hol ich dann aus einem LM317bt...
Bei max. 10mA je Eingang muss er also 240mA liefern. Muss aber noch das
Datenblatt prüfen, ob das so ok ist, wie warm er wird, etc... (Soll ja
im Gehäuse verschwinden)
Die Ausgänge vom MC hab ich oben nicht erwähnt, da die weitere
Verschaltung über Transistoren realisiert wird. Die Ausgänge werden also
nicht die Eingangsseite belasten und sind deshalb für mich erst mal als
irrelevant für die Signal Anpassung an den Eingängen deklariert.
Was meint ihr zu der Lösung im Anhang?
Wenn es 2 V gibt und 20 V und zwischen diesen Spannungen umgeschaltet
wird, dann gibt es auch Spannungen dazwischen.
Die vorgeschlagene Lösung mag funktionieren, der Optokoppler ist aber
"Perlen vor die Schweine geworfen". Denn wenn du keine Potentialtrennung
brauchst oder willst, dann ist ein OK technischer Overkill.
Wie ernst sind die 0..2 V für "low"?
Besser wäre eine Schwelle, z.B. unter 10 V low und drüber high.
Ja eine Schaltschwelle bei 10 V z.B. ist ok.
Also auch hier noch ein Schmitt-Trigger vor den MC-Eingang?
Wie könnte die Potenzialtrennung denn aussehen?
Jojo schrieb:> Meine Idee: einen Spannungsteiler aus 39k und 10k für jeden der 24> Eingänge aufbauen und an dem 10k Widerstand 4,xx V - 5,7 V abgreifen um> die Eingangsports damit zu beschalten.
So ähnlich könnte das gehen, denn ich habe an einem µC-Board auch sowas
dran: Einen Widerstands-Spannungsteiler, der aus der RS232-Spannung
+/-15V eine TTL-Spannung macht. Die Schaltung aus einem Buchvorschlag
sparte sich die RS232-Transceiver. 2 einfache Schutzdioden vom Typ
1N4148 pro Leitung wären aber nicht schlecht. Bei meiner RS232 gab es ja
auch -15V. Die werden mit einer der Dioden einfach eliminiert.
Sogar in preissensitiven industriellen Schaltungen sah ich später noch
mal so eine RS232-Schnittstelle, um sich den Transceiver einzusparen.
Jojo schrieb:> Ja eine Schaltschwelle bei 10 V z.B. ist ok.
Das macht die Sache deutlich einfacher. Nimm die von mir verlinkt
Schaltung.
> Also auch hier noch ein Schmitt-Trigger vor den MC-Eingang?
Brauchst du nicht. Ich habe zigtausende Eingänge nach der obigen
Schaltung weltweit und problemlos im Einsatz.
> Wie könnte die Potenzialtrennung denn aussehen?
Für eine Potentialtrennung brauchst du erst mal 2 getrennte
Versorgungen: eine für den uC und eine für die Sensoren. Und dann
bezieht sich die Led des Optokopplers auf die 24V und der Transistor des
Optokopplers auf die 5V. Die beiden Massen werden dann nicht verbunden.
Der Vorteil? Von der 24V Seite können keine Störungen in den uC Teil
einkoppeln.
Ich habe auch nur diese 22-28 Volt als einzige Spannungsquelle zur
Verfügung.
Wie realisiert man die 2.te Versorgungspannung?
24VDC/24VDC Converter, oder 24V/5V, 5V/5V ?
Die die ich gesehen habe sind teuer oder können nur 200mA.
Die Frage, die ich ganz zu Beginn gestellt hatte, war:
Brauchst du bzw. deine Schaltung eine galvanische Trennung?
Wenn und weil du die Frage nicht beantworten kannst, solltest du alle
Informationen zu deinem System posten (Versorgung, Sensoren, Aktoren,
Ströme und Spannungen, Einsatzbereich...). Dann kann man abwägen, was
nötig ist.
Jojo schrieb:> Die die ich gesehen habe sind teuer oder können nur 200mA.
Einen PID-Regler zur Spannungserzeugung kann man notfalls in Software
auf dem µC betreiben, den man gerade hat. Auf der CD des PICkit1 war ein
interessanter PID-Regler in Assembler aufgeführt, der dort die
Programmierspannung 13V des Zielcontrollers regelte.
Leider darf ich den aus Copyright-Gründen hier nicht veröffentlichen.
Man könnte das Beispiel aber auf der Microchip-Homepage unter
Application Notes finden, das ist nicht unwahrscheinlich.
Ich fands mal genial, als praktisches Beispiel zur Anschauung.
Allerdings muß man den auf Bauteilparameter der verwendeten Bauteile
anpassen. Wenn man Milliampere machen kann, gehen auch Ampere.
Zu den langen Anschlussleitungen: Die 22-28 V kommen aus einer Batterie,
die über einen Drehstromumformer ständig geladen wird, solange der
Umformer läuft. Die Maschine besteht aus Maschinenteilen, die in einer
Halle auf ca. 60m² verteilt sind. Die Leitungen, die ich da am
Microkontroller anschließen möchte, kommen von den verschiedenen
Maschinenteilen.
Das Problem:
Ein Maschinenteil fällt sporadisch aus und verursacht einen Ausfall der
kompletten Anlage. Welches der 15 Teile dafür verantweortlich ist, kann
sich die Maschine nicht merken weil sie abschaltet.
Deshalb so viele lange Leitungen an den Eingängen...
(Die muss ich in der Halle an anderen 24 Volt Leitungen und Maschinen
vorbei verlegen... Daher meine Bedenken wegen Störungen auf der Leitung,
die die Funktion vom MC beeinflussen könnten)
Die anderen Eingänge brauche ich als Bedingungen und Rückmekldungen, die
ein Triggerkriterium bilden um die Abfrage der 15 Maschinenteile auf
Hi/Low zu starten und mir einen entspr. ''Fehlercode'' auf einer
2stelligen 7Segment Anzeige darstellt.
Das ganze spielt sich in einer Anlage auf einem Bauernhof von meinem
Onkel ab. Er lässt andauernd erfolglos Teile wechseln und es hilft
nichts. Ich durfte mir mal die Pläne ansehn und bekam die Idee meinen
bissher nur theoretischen Umgang mit MC's mal in der Praxis zu
nutzen....
Also ich denke eine galvanische Trennung wäre hier angebracht aber ich
weiß es nicht, du hast Recht...Ich hoffe du kannst mich noch mal
anschubbsen...
Frank K. schrieb:> Das hilft gegen Überspannung am Eingang und ist keine schlechte Idee.> 5.1V sind ein gängiger Wert für Z-Dioden.
Vcc+0.5V ist kein Grenzwert, der nicht überschritten werden darf,
sondern einer, der nicht überschritten werden kann (solange eine
Strombegrenzung vorhanden ist), weil dann die am µC-Eingang eingebaute
Diode gegen VCC leitend wird. Aber eine Diode in Leitrichtung zu
betreiben, ist nun wirklich kein Verbrechen.
Was ist an einer Z-Diode besser als bei den eingebauten Dioden. Solange
der Vorwiderstand so groß ist, dass man gut unter dem zulässig
Maximalstrom bleibt, ist das doch völlig in Ordnung. Atmel schlägt das
in einer App.Note (AVR182: Zero Cross Detector) sogar für Netzspannung
vor.
Frank K. schrieb:> Das hilft gegen Überspannung am Eingang und ist keine schlechte Idee.> 5.1V sind ein gängiger Wert für Z-Dioden.
Das ist leider ein Trugschluß, weil es voraussetzt, dass der µC immer
unter Spannung steht bzw. die Verbindung zu den 24V-Signalen
unterbrochen wird, bevor die Versorgungsspannung des µC abgeschaltet
wird.
Bei ausgeschaltetem µC (Vcc=0V) darf die Eingangsspannung lt. Datenblatt
nur im Bereich +/- 0.5 V liegen.
Und falls trotzdem mal die Versorgung vom uC ausfällt und am Eingang
eine Spannung anliegt, dann darf der Strom in den Pin nicht so groß
werden, dass die Schutzdiode zerstört wird.
In diesem Fall ist die Lösung mit 2 Dioden (eine nach Vcc, eine nach
GND) besser als die mit der Z-Diode.
>In diesem Fall ist die Lösung mit 2 Dioden (eine nach Vcc, eine nach>GND) besser als die mit der Z-Diode.
Das gibt aber einen extrem hohen Fehlerstrom! (in VCC) wenn bei
abgeschalteter Platine immer noch Spannung am Eingang liegt.
Andere Möglichkeit, Gatter vornedran (oder andere CPU), die die Eing-U
verkraften, ohne auf VCC abzuleiten. Um energetische Pulse abzuleiten
kann man noch Supressor-Dioden dazu nehmen.
Ich kann VCC von der 24V Batt. auch direkt abgreifen und wenns
erforderlich ist (was ich immernoch nicht weiß) über einen DC/DC
Converter galvanisch getrennt quasi dauerhaft zur Verfügung stellen.
Die Batterie fällt ja nicht aus im Fehlerfall. Verstehe ich das richtig,
dass ich den Controller nicht ohne VCC an den Eingängen beschalten darf?