www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Relais summt (Atmega32)


Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe 48x 5V-Relais über je einen UlN2803 (also 48 ULN2803)mit dem 
Microcontroller verbunden.
Die ULNs werden mit der gleichen Spannung versorgt wie die Relais (5V).
d.h. Pluspol und Minuspol vom 5V-Netzteil gehen an die ULNs und das 
Ausgangssignal des ULN und die Phase des Netzteils an das Relais.

Bei einem Relais hat dies alles fein geklappt, aber bei 48 Relais summen 
die Relais nur. Woran kann das liegen? Liegt zu wenig Spannung an? Oder 
ist was nicht richtig verlötet? Bedeutet das Summen des Relais ein 
schnelles OFF und On schalten im Loop? Es ist ein Schließer-Relais und 
bekommt vom Microcontroller ein On-Signal zum Schließen, dann soll es 
eine Weile warten (weiterhin on)und dann durch ein Off-Signal wieder 
öffnen. Aber genau in diesem Zeitraum summt es nur. Ich vermisse das 
einfache Klicken, dass ich beim Versuch mit einem einzigen Relais hatte.

Woran mag das liegen? Kann mir jemand helfen?
Gruß Anja

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
5V-U messen /welligkeit

Mfg

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fehlt:

a) ein fetter Kondensator
b) ein Netzteil was genug Strom liefert

Autor: Der Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum braucht man für 48 Relais 48 ULN2803????

hängen die alle am gleichen Portpin???

Autor: Besserwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dude
>warum braucht man für 48 Relais 48 ULN2803????
>hängen die alle am gleichen Portpin???

Habe ich gerade einen Hänger? Wahrscheinlich weil die gerade nicht an 
einem einzigen Portpin hängen.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh das hab ich verwechselt!
Es sind 8 ULNs und 48 Relais---

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit je 6 Pins belegt > 6 Relais!

Autor: Der Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint so.

Ein 2803 hat 8 Bit. Wenn ich 48 Relais schalten will, brauche ich also 6 
ULNs und nicht 48.

Comprende?

Autor: Besserwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dude
Aha. Danke.

Autor: Der Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte. Gerne geschehen.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ich weiß, dass es 8 Ausgänge gibt, aber das ist schon alles so 
geplant, wäre zu kompliziert zum Erläutern! also es geht ja auch via 
Multiplexer und Latches, sonst könnte ich ja nie 48Relais mit einem 
Mikrocontroller schalten.. Deswegen habe ich das für das Forum 
vereinfachen wollen-
Dazu kommt noch andere Frage: wenn ich 2Pins des Porta als Eingangspins 
nutzen will, und nur 6Pins als Ausgang > wie programmier ich das am 
geschicktesten? Ich wollte schon komplette Bytes an den Port anlegen, 
bzw. Zahlen wie 255 für alle Pins auf on. Aber gleichzeitig wollte ich 
an den ersten beiden Pins, also Porta.0 und Porta.1 etwas einlesen? Gibt 
es da eine Lösung? Portc ist für die Multiplexer besetzt...

Autor: Der Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auweh. Do feits vom Boa weg, wie wir in Bayern sagen.

Lies doch mal das Tutorial, das ist sehr gut geschrieben und vermittelt 
das Grundwissen, das man braucht, um z. B. Ports zu programmieren.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anja wrote:
> ja ich weiß, dass es 8 Ausgänge gibt, aber das ist schon alles so
> geplant, wäre zu kompliziert zum Erläutern! also es geht ja auch via
> Multiplexer und Latches, sonst könnte ich ja nie 48Relais mit einem
> Mikrocontroller schalten..

Für 48 Relais gibts ne Standardlösung. Am Microcontroller braucht man 3 
Ausgangspins dafür:

http://www.mikrocontroller.net/articles/AVR-Tutori...

Und in nem TPIC6B595 hat man die Treiberstufen gleich mit drin.


Peter

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@anja

was bei 48 relais am wichtigsten ist ist die spannungsversorgung (UND 
deren glättung)
ohne ausreichende glättung (rechne spasseshalber mal nach wieviel strom 
48 relais im angezogenen zustand ziehen) macht dein mikrocontroller 
alles außer dem was du machen willst ...
und das die relais summen dürfte/könnte auch daran liegen. such vllt. 
mal an der stelle.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DUDE!
Bitte nicht falsch verstehen! Ich weiß ja wie man Ports programmiert.
Aber mir geht es um Tricks...Klar kann ich jedes Pin einzeln deklarieren 
und 1 oder 0 angeben... aber ich wollte mit dem ganzen Port auf einmal 
arbeiten, um dann z.b. mit Incr die Bytezahl (1-8) zu erhöhen und dann 
die Adresspins des Multiplexers anzusprechen...aber dann wird ja 
automatisch für die ersten 6 Bytes (wenn jedes Byte ein Pin mehr 
aktivieren soll) bei Porta.0 und Porta.1 eine 0 zugewiesen (bei Byte 7 
und 8 würde je Porta.1 und Porta.2 auf 1 gehen) Was ist wenn am Eingang 
aber 5V reinkommen > dann haut das ja nicht hin. Dann überschneiden sich 
ja die (Byte)belegung des Porta + die Ablesung des Inputs von Porta...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anja wrote:

> und 8 würde je Porta.1 und Porta.2 auf 1 gehen) Was ist wenn am Eingang
> aber 5V reinkommen > dann haut das ja nicht hin. Dann überschneiden sich
> ja die (Byte)belegung des Porta + die Ablesung des Inputs von Porta...

Alles kein Problem, dazu sind die logischen Operatoren da (AND, OR 
usw.).

Z.B. Du willst PINA.0 und PINA.3 einlesen:

  i = PINA & (1<<0|1<<3);


Peter

Autor: Ein (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach daher, die Ansteuerung ist multiplex, dann sollte min jedes Relais 
einen Stützkondensator bekommen, wenn es überhaupt weg zu bekommen 
ist..Welche Quarzfreuenz? Je höher je besser!!
Besser ist es aber mit Latch zu arbeiten.

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@anja

weiß jetzt nicht ob ich mich in die nesseln setze (da ich nicht den 
kompletten beitrag und deren links gelesen habe), aber :

eine multiplex (ohne nachgeschaltete flipflops/latches) ansteuerung 
würde ich eher nicht machen, da du immer das problem hast das nur zu 
einem x'tel (x ist die anzahl der ports) der spannung an den relais 
anliegt. und das kann dann u.u dazu führen das im mittel die spannung an 
den uln nicht ausreicht das relais durchzuschalten.
würde empfehlen vor den uln ein 74595 schieberegister zu setzen.
dieses hat ein load-signal mit dem der aktuelle zustand an eine 2. 
"reihe" flip-flops übergeben wird und diesen bis zum nächsten load hält. 
somit kommen auch an deinem uln immer nur "komplette" einsen und nullen 
an und eben nicht zeitmultiplext was einer pwm entspricht -> keine 5V am 
uln sondern im mittel eben nur 5v/x.

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wieviel Ohm hat eigentlich die Magnetwicklung eines Relais? Wie stark 
ist dein Netzteil das den Strom für die ULN2803s liefert? Hast du jeder 
Magnetwicklung eine Diode in Sperrichtung spendiert?

Angenommen eine Relaiswicklung hat 100 Ohm
5 V /100 Ohm = 50 mA pro Relais

50 mA * 48 = 2,4 Ampere Dauerstrom werden benötigt im Einschaltmoment 
einiges mehr also ausreichend Elkos einplanen, sonst bricht die Spannung 
ein. Der Störimpuls bestimmt 100V könnte noch sein übriges dazutun also 
umbedingt Dioden verbauen, falls das Relais keine integriert hat

http://www.mikrocontroller.net/articles/Bild:Relais_npn.png

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Peter!

Die Relais summen jetzt nicht mehr. Hab nun die Latches mit der Spannung
des Microcontrollerkreislaufes versorgt und die ULNS mit dem, der 
Relais.. Also getrennte Kreisläufe...So funktioniert es. jetzt mal 
gerade laufen!

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In solchen Fällen kann es sich als sinnvoller erweisen, die Relais mit 
12V zu betreiben und dem Controller einen eigenen Regler zu verpassen. 
Dann verpesten die Relais nur die 12V-Versorgung und nicht auch die des 
Controllers. Und die 12V-Schiene muss nicht einmal geregelt sein, 
12V-Relais sind flexibel.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas O. wrote:

> Hast du jeder Magnetwicklung eine Diode in Sperrichtung spendiert?

Die steckt in den ULNs drin.

Autor: Steve (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter

Z.B. Du willst PINA.0 und PINA.3 einlesen:

  i = PINA & (1<<0|1<<3);


>>> wie soll das denn genau funktionieren? in BASIC geht das auch?
kannst du das ein wenig mehr erläuten? ist so abstrakt. danke

Autor: Steve (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab das ja so verstanden, dass anja ein pin mit 0 deklarieren will/muss 
und gleichzeitig ja auch an dem pin einlesen mag.
wenn das pin als input-pin konfiguriert ist, funktioniert da überhaupt 
eine wertzuweisung im programm oder reagiert es prinzipiell nur auf 
außen und ignoriert die wertzuweisung? liest es nur das ab was reinkommt 
mittels getadc?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steve wrote:
> @Peter
>
> Z.B. Du willst PINA.0 und PINA.3 einlesen:
>
>   i = PINA & (1<<0|1<<3);
>
>
>>>> wie soll das denn genau funktionieren? in BASIC geht das auch?
> kannst du das ein wenig mehr erläuten? ist so abstrakt. danke

Der Klammerausdruck erzeugt eine Bitmaske mit ner 1 an 0. und 3. Stelle, 
also 0x09.

Damit wird der Eingang verundet und damit sind alle anderen Bits in i 
immer 0.

i kann also nur die Werte 0x00, 0x01, 0x08, 0x09 annehmen, völlig egal, 
wie die anderen Portbits stehen.


Peter

Antwort schreiben

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.