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
Da fehlt: a) ein fetter Kondensator b) ein Netzteil was genug Strom liefert
@ 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.
Scheint so. Ein 2803 hat 8 Bit. Wenn ich 48 Relais schalten will, brauche ich also 6 ULNs und nicht 48. Comprende?
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...
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.
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-Tutorial:_Schieberegister Und in nem TPIC6B595 hat man die Treiberstufen gleich mit drin. Peter
@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.
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...
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:
1 | i = PINA & (1<<0|1<<3); |
Peter
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.
@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.
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
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!
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.
Thomas O. wrote:
> Hast du jeder Magnetwicklung eine Diode in Sperrichtung spendiert?
Die steckt in den ULNs drin.
@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
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.