Forum: Mikrocontroller und Digitale Elektronik Stört mein Motor seinen PIC?


von Jens (Gast)


Lesenswert?

Hi Leute,

ich habe eine kleine (Alarm-)Uhr aufgebaut, die beim Erreichen einer 
gewissen Zeit ein Miniaturblaulicht ansteuert. Ihr wisst schon, diese 
4.5V-Dinger die es zum Beispiel beim bösen blauen C gibt. Ich schalte 
das Teil mit einem ULN2803A.

Nun habe ich gemerkt, dass im Betrieb (das Blaulicht sitzt direkt über 
dem PIC) manchmal, nachdem das Blaulicht schon einige Zeit an ist, und 
der Motor sich dreht, der PIC abstürzt.

Na gut, ich habe die Freilaufdiode noch nicht nach +UV gelegt, werde ich 
gleich nachholen. Aber was kann ich sonst noch tun?

Der ULN2803A schaltet zudem noch andere Verbraucher, unter Anderem einen 
mp3-Player zum Abspielen eines Alarmtons.

Bin über jede Anregung dankbar.

Gruß
Jens

von holger (Gast)


Lesenswert?

>Na gut, ich habe die Freilaufdiode noch nicht nach +UV gelegt, werde ich
>gleich nachholen. Aber was kann ich sonst noch tun?

Einen Schaltplan posten. Abblockkondensatoren einbauen
und evtl. den Spannungsregler mit Kühlkörper ausstatten.

von Jens (Gast)


Lesenswert?

Spannungsregler hat Kühlkörper und Lüfter, 100nF sind platziert. Einen 
Schaltplan gibt es noch nicht, habe die Schaltung aus dem Kopf heraus 
ausgebaut. Ich werde aber bald einen erstellen, dann poste ich den hier.

Abblockkondis == 100nF an allen ICs, korrekt?

Gruß
Jens

von David .. (volatile)


Lesenswert?

Jens schrieb:

> Abblockkondis == 100nF an allen ICs, korrekt?

Falsch. Steht immer im Datenblatt.

von Hugo (Gast)


Lesenswert?

Jens schrieb:
> 100nF sind platziert

fragt sich nur wo?

von Anja (Gast)


Lesenswert?

Jens schrieb:
> Aber was kann ich sonst noch tun?

Einen 1nF Kondensator zwischen Reset-Pin und Masse (kurze Verbindungen) 
einlöten. Hat bei mir bei einem PIC18F2520 noch mal eine deutliche 
Verbesserung gebracht. Und das obwohl der Reset-Pin per Fuse deaktiviert 
war (was auch schon eine Verbesserung gebracht hat).

Gruß Anja

von Jens (Gast)


Lesenswert?

@Anja: Wirklich gegen GND? Der RESET-Eingang ist doch invertiert. Was 
bewirkt der Kondensator?

@All: Ich habe nur den PIC16F716 und den ULN2803L als ICs in der 
Schaltung, ansonsten halt nen MP3-Player und ein KEMO-Verstärkermodul. 
Die 5V für den PIC sind mit 7805 stabilisiert mit zwei 100n direkte 
neben dem 7805. Dann noch ein 1uF hinter dem 7805 und ein 1uf || 100uF 
davor.

Dann ist da noch das Mini-Blaulicht. Bringt es was, eine Freilaufdiode 
direkt an den Motor zu löten?

Gruß
Jens

von Guido (Gast)


Lesenswert?

Jens schrieb:
> Wirklich gegen GND? Der RESET-Eingang ist doch invertiert. Was
> bewirkt der Kondensator?

Der puffert dir die Spannung am Reset und ist zugleich ein Tiefpass 
gegen Störimpulse.

von Guido (Gast)


Lesenswert?

Guido schrieb:
> Der puffert dir die Spannung am Reset und ist zugleich ein Tiefpass
> gegen Störimpulse.

Also sofern du Reset mit einem Widerstand beschaltet hast.

von ... (Gast)


Lesenswert?

1nF und 100nF direkt an den Motor !

von Jens (Gast)


Lesenswert?

Danke Leute, ich wrede die Anregungen mal ausprobieren.

1) Der Reset geht mit 4k7 nach +5V, also noch mit 1nF nach GND, mache 
ich gleich.

2) Am Motor ist schon ein 2u2 Elko, aber da können auch noch ein 1n und 
100n dran.

3) Was ist mit der Freilaufdiode? Habe die des ULN2803L jetzt mit +5V 
verbunden (Motor läuft mit +5V). Aber am ULN hängt noch ein Teil, das 
12V benötigt (das Verstärkermodul). Ist das OK so, wenn ich die 
Frailaufdiode auf 5V hänge?

4) Oder soll ich das weglassen und lieber eine 4001 an den Motor?

Gruß & Danke,
Jens

von Helmut L. (helmi1)


Lesenswert?

Jens schrieb:
> 3) Was ist mit der Freilaufdiode? Habe die des ULN2803L jetzt mit +5V
> verbunden (Motor läuft mit +5V). Aber am ULN hängt noch ein Teil, das
> 12V benötigt (das Verstärkermodul). Ist das OK so, wenn ich die
> Frailaufdiode auf 5V hänge?

Zeichne dir mal den Stromverlauf auf, dann wirst du sehen wenn der 
ULN2803 an 5V mit seinen Dioden haengt deine 12V Verbraucher nicht mehr 
abgeschaltet werden. Die koennen dann nur noch zwischen 12V und 7V 
waehlen.

von Jens (Gast)


Lesenswert?

Gut, also eine eigene Freilaufdiode für den Motor. Parallel noch einen 
Snubber mit 270R, 100nF?

Gruß
Jens

von Helmut L. (helmi1)


Lesenswert?

Jens schrieb:
> Gut, also eine eigene Freilaufdiode für den Motor. Parallel noch einen
> Snubber mit 270R, 100nF?

Eher so:

http://www.huetter.eu/start/pdf/hilfe/Motorentstoerung-12-36V-DC.pdf

von Jens (Gast)


Lesenswert?

Hm, was ist denn das für ein Motor? Meiner hat ja nur 2 Pole.

Ich hbe gemerkt, dass mein Steckernetzteil nicht ganz ausreicht, etwas 
zu wenig Strom. Daher: Wenn der Motor an ist, und zudem die LEDs, die 
die zeit anzeigen, auf voller Helligkeit leuchten, und dann der Alarmton 
noch laut wird, dass dann manchmal der PIC resettet. Klar, die Spannung 
bricht ein. Also sollte ich ein stärkeres Steckernetzteil nehmen, das 
sollte auch Einiges abfangen.

Gruß
Jens

von Thomas (kosmos)


Lesenswert?

der Motor ist auch nur 2polig da ist nur noch eine Stelle zw. den beiden 
Kerkos ans Gehäuse befestigt worden.

von Jens (Gast)


Lesenswert?

Hallo Leute,

das mit dem Motorkontakt habe ich irgendwie übersehen und jetzt nicht 
mehr einbauen können, da der Wecker am Sonntag verschenkt werden soll 
;-)

Wie dem auch sei, ich habe nun den RC-Tiefpass am MCLR (danke Ania und 
Guido) und auch dem Motor eine eigene 1N4001 Freilaufdiode spendiert 
(danke Helmut) parallel zu einem 330R-100nF-Snubber.

Problem: Die Schaltung wird immer noch gestört. Nach ein paar Sekunden 
Betrieb ist der PIC in undefiniertem Zustand und zeigt wirre Zeichen auf 
der 7-Segment-Anzeige an. Also ist da wirklich was im Argen.

Aber:

Das Blaulicht mit dem DC-Motor ist direkt über der Platine. Wenn ich es 
etwas entferne, tritt das Problem nicht auf. Ich poste die Tage mal 
Fotos.

Ich möchte unbedingt rausfinden, wie ich die Schaltung richtig entstören 
kann. Ich habe ein digitales 25MHz-Oszi, ich werde es die Tage mal hier 
und da reinhalten und mir die Signale ansehen.

Ich kenne mich mit Entstörung eigentlich gar nicht aus, bis jetzt haben 
die Standard-Tricks (100n parallel zu ICs, etc.) immer gereicht.

Habt ihr Tipps, wie ich den Fehler nach und nach beheben kann? Es ist 
mir ein ernstes Anliegen, ich würde zu gern verstehen, was genau da vor 
sich geht.

Gruß
Jens

von Michael R. (mexman) Benutzerseite


Lesenswert?

> Habt ihr Tipps, wie ich den Fehler nach und nach beheben kann? Es ist
> mir ein ernstes Anliegen, ich würde zu gern verstehen, was genau da vor
> sich geht.

Na, Du hast doch schon geschrieben, dass das Netzteil zu schwach ist. 
Sonst passiert da nix!

Gruss
Michael

von Jens (Gast)


Lesenswert?

Oh, du hast Recht, Michael, danke für den Hinweis, das habe ich ganz zu 
erwähnen vergessen. Habe heute Mittag ein neues Steckernetzteil benutzt, 
12V und 1.5A, das reicht dicke.

Leider leider immer noch die selben Symptome.

Gruß
Jens

von holger (Gast)


Lesenswert?

>Leider leider immer noch die selben Symptome.

Dann schmeiss das Blaulicht weg. Taugt nichts.

von Peter D. (peda)


Lesenswert?

Jens schrieb:
> Nach ein paar Sekunden
> Betrieb ist der PIC in undefiniertem Zustand und zeigt wirre Zeichen auf
> der 7-Segment-Anzeige an.

Floatende Eingänge?
Benutzte Eingänge nicht wirksam entprellt?


Peter

von Helmut L. (helmi1)


Lesenswert?

Bitte Schaltplaene, Layouts und Fotos vom Aufbau posten, sonst gib das 
wieder nur eine elende Raterei.

von Helfer (Gast)


Lesenswert?

Vielleicht hilft ein kräftiger Lüfter.
Das hat bei mir geholfen.
Schaltung läuft nun schon über 1 Jahr ohne Absturz.

von Jens (Gast)


Lesenswert?

Naja, einen Lüfter habe ich drin. Der wird eingeschaltet, wenn auch das 
Blaulicht eingeschaltet wird, da der Motor und das Glühlämpchen seine 
400mA ziehen, recht ordentlich.

Fotos werde ich demnächst posten, einen Schaltplan werde ich dann auch 
nachreichen.

holger schrieb:
> Dann schmeiss das Blaulicht weg.

Super Idee ;-) Aber welches nehme ich dann? Der Wecker soll ein 
Blaulicht haben, das ist ja gerade der Witz dabei. Es ist so eines hier:

http://www.conrad.de/ce/de/product/480188/MINI-RUNDUMLEUCHTE-BLAU

Peter Dannegger schrieb:
> Floatende Eingänge?

Ein paar, ja. Du meinst, alle auf hochohmig schalten und dann auf GND?

Peter Dannegger schrieb:
> Benutzte Eingänge nicht wirksam entprellt?

Denke nicht, dass es daran liegt. Habe nur drei Taster-Eingänge, einer 
ist als Digital-IO konfiguriert und die anderen beiden als ADC-Input, 
weil ich mit meinem PIC nur die Option zwischen alle vier RA0:3 digital 
oder alle vier RA0:3 analoger IO habe. Softwareseitig sind die Eingänge 
entprellt. Die Muster, die auf der Anzeige erscheinen, haben auch nichts 
mehr mit Zahlen zu tun, sondern sind willkürliche Segmentkombinationen..

Gruß
Jens

von Helmut L. (helmi1)


Lesenswert?

Jens schrieb:
> Ein paar, ja. Du meinst, alle auf hochohmig schalten und dann auf GND?

Man legt keine uC Pine direkt auf GND. Da gehoert immer ein kleiner 
Widerstand rein (rund 470 Ohm). Falls der Port mal auf Ausgang geht gibt 
es keinen Kurzschluss.

Schau dir mit einem Oszi mal die Versorgungsspannung deines uC an ob da 
Spannungseinbrueche zu sehen sind.

von Jens (Gast)


Lesenswert?

Aber eigentlich können die Pins ja nicht einfach so auf Ausgang 
geschaltet werden mit einer 1 dran, oder? Ich mein, beim POR sind sie ja 
hochohmig.

Die Versorgungsspannung werde ich mir ansehen. Momentan habe ich das 
Blaulicht abgeklemmt, es funktioniert so alles tadellos.

Gruß
Jens

von Jens (Gast)


Lesenswert?

Was mir durch Ausprobieren noch aufgefallen ist: Der Wecker hat einen 
abnehmbaren Deckel, worauf das Blaulicht sitzt. Wenn ich den Deckel 
abnehme und um 90 Grad kippe (also wie ein aufgeklapptes Handy was vor 
einem liegt im Prinzip) dann treten die Störungen nicht auf.

Das spricht doch dafür, dass keine Störungen in der Betriebsspannung 
auftreten (denn elektrisch ist ja nach wie vor alles verbunden und wird 
wkorrekt angesteuert), sondern das spricht eher dafür, dass irgendwelche 
elektromagnetischen Felder des Motors den PIC außer Tritt bringen, oder?

Könnt ihr da was zu sagen oder soll ich erst die Bilder hochladen? Ich 
habe im Moment hier keine Kamera, das ist blöde, die Bilder kann ich 
erst Mitte der nächsten Woche machen und hochladen, aber irgendwie 
brennt es mir unter den Nägeln. ;-)

Gruß
Jens

von Paul B. (paul_baumann)


Lesenswert?

Schraub mal das Blaulicht von dem Deckel ab und lege ein Stück Platinen-
material zwischen Deckel und Platine. Das dient dazu, die evtl. 
Störeinstrahlung des "Blaulichtmotors" in die Schaltung zu minimieren.

Sieh nach, ob in der Zuleitung zum Motor Drosseln enthalten sind. Wenn
nicht, setze welche mit ca. 100µH dazwischen.

MfG Paul

von Jens (Gast)


Lesenswert?

Drosseln sind keine drin, 100uH hab ich aber noch von irgendeinem SMPS 
rumliegebn, kann ich mal ausprobieren.

Das mit dem Platinenmaterial werde ich ausprobieren, Alufolie sollte 
auch gehen, oder? Ich denke eher, dass es so ein Abstrahlproblem ist.

Gruß
Jens

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich denke nicht, dass das Problem durch elektromagnetische Abstrahlung 
entsteht.
Das Problem wird in deinem Aufbau liegen. Du hast vermutlich die 
Spannungsversorgung empfindlicher Schaltungsteile mit der 
Spannungsversorgung des Motors verbunden, sodass der Motorstrom quer 
durch die empfindliche Schaltung fließt. Und vermutlich fehlt ein 
entsprechender Bulk-Cap an der Versorgungsspannung, so nah wie möglich 
am Motor bzw. an dem Schalter, der den Motor einschaltet.

von Jens (Gast)


Lesenswert?

Warum tritt der Fehler mit geöffnetem gehäuse dann aber nicht auf, d.h. 
wenn der Motor weiter weg ist, als sonst? Will mir nicht einleuchten.

Gruß
Jens

von Paul B. (paul_baumann)


Lesenswert?

Jens schrob:
>Will mir nicht einleuchten.

Das ist Elektronik, wie sie leibt und lebt. Manchmal treten Effekte auf,
die sich durch die bekannten physikalischen Gesetze nicht erklären 
lassen.

Grau ist alle Theorie,
wenn's gehen soll und geht doch nie.
Praxis ist , jetzt frag nicht dumm,
wenn's geht und KEINER weiß, warum!

;-)

MfG Paul

von Jens M. (Gast)


Lesenswert?

Jens schrieb:
> Warum tritt der Fehler mit geöffnetem gehäuse dann aber nicht auf, d.h.
> wenn der Motor weiter weg ist, als sonst? Will mir nicht einleuchten.

Evtl. weil er dann nicht so warm wird und weniger Strom zieht.

Überprüfe mal ob du beim PIC die BOR Fuse auf aktiv hast (brown out 
reset). Vielleicht läuft er da ins leere.

von Jens (Gast)


Lesenswert?

Ja, Brown Out ist an, aber habe die Schwelle auf 2.5V gesetzt.

Beim PIC16F716 hat man die Wahl zwischen 4.5V und 2.5V, und 2.5V wäre 
schon echt heftig. Zudem tritt der Effekt ja nicht instantan beim 
Einschalten des Motors auf, sondern irgendwann danach (Zeitraum 5..25 
Sekunden).

Gruß
Jens

von Jens M. (Gast)


Lesenswert?

Jens schrieb:
> Ja, Brown Out ist an, aber habe die Schwelle auf 2.5V gesetzt

Häng mal nen Zähler hinter den BOR Reset

von Jens (Gast)


Lesenswert?

Meinst du softwareseitig? Wie mache ich das?

von Jens (Gast)


Lesenswert?

Keine Idee?

von Jens (Gast)


Lesenswert?

Hallo, ich bin's wieder, habe jetzt erst wieder Zeit gefunden für den 
Wecker und werde morgen den Schaltplan sowie Bilder posten.

Mir ist gerade etwas aufgefallen, was ich sehr seltsam finde. Ich habe 
auf den Minutenplätzen die Sekunden anzeigen lassen, damit ich sehe, 
wenn sich das Programm aufhängt. jetzt kommt das Komische:

Wenn das Blaulicht eingeschaltet ist und der Wecker irgendwann "seltsam" 
wird, dann ist das ja offensichtlich ein Software-Fehler, aber eben 
nicht ganz. Die Uhr läuft weiter! Die Sekunden werden munter weiter 
hochgezählt, aber manche Zahlen sehen im Display ganz anders aus. 
Innerhalb eines "Ich schalte den Wecker ein"-Zyklus ist das 
reproduzierbar. Hatte letztens Folgendes: Der "2" fehlte das mittlere 
Segment (g).

Jetzt ist die Frage: Da die Uhr weiterläuft, kann es ja keine 
Softwareprobleme geben, oder? Es muss also irgendwie die Ansteuerung der 
LEDs sowie die Zuleitung der Taster durch den Motor kompromittiert 
werden, oder?

Ich kann es mir anders nicht erklären.

Gibt es sowas, "partielle" Softwareausfälle?

Gruß
Jens

von Michael R. (mexman) Benutzerseite


Lesenswert?

> Gibt es sowas, "partielle" Softwareausfälle?

Es gibt grundsaetzlich ALLES.

Dass Du weiterhin keinen Schaltplan zeigen willst, macht die Sache nicht 
leichter.
Wie versorgst Du die LCD-Anzeige?

Gruss

Michael

von Jens (Gast)


Lesenswert?

Michael Roek schrieb:
> Dass Du weiterhin keinen Schaltplan zeigen willst, macht die Sache nicht
> leichter.

Naja ich will ja, morgen kommt er und ein paar Bilder vom Wecker. Ich 
mache nie Schaltpläne sondern baue alles aus dem Kopf, daher die 
Verzögerung. Es gibt eben Spannenderes als bei Eagle Bahnen zu ziehen 
meinst du nicht? ;-)

Es ging mir nur um die qualitative Beschreibung des Fehlers, sowas ist 
mir echt noch nie untergekommen.

Ich nutze keine LCDs sondern vier 7-Segment-Anzeigen: PIC -> 4x4094 -> 
4xULN2803L -> 4x7-Seg.-LED

Versorgungsspannung sind +12V, die vor dem 7805 abgegriffen werden, der 
die 5V für PIC und Motor zur Verfügung stellt.

Gruß
Jens

von Chris (Gast)


Lesenswert?

Das klingt sehr nach einem Softwareproblem, und zwar daß du 
Bitoperationen
auf das Port ausführst und damit Fehler verursachst. Mach die 
Operationen
im Ram und Update dann das Port als ganzes.

von Jens (Gast)


Lesenswert?

Die Daten werden seriell an die Schieberegister übertragen, kann also 
nicht sein.

Gruß
Jens

von Chris (Gast)


Lesenswert?

> Die Daten werden seriell an die Schieberegister übertragen, kann also
> nicht sein.
Also hast du HW SPI,
moment mal, dein PIC16F716 hat gar kein SPI.

Genau das meine ich, wenn du den Clock gibst, dann kann bedingt durch 
den
Motor das Datenpin irgendwelche Randomwerte annehmen, ohne daß du davon 
was
ahnst. Wenn du aber dasselbe im Ram machst (shadow port) bzw vom Ram auf
das W-Register und dann das mittels movwf auf den Port, dann hast du das
Problem nicht mehr. Ist mehr Arbeit, und ist in Wirklichkeit ein 
HW-Problem,
wird aber zu den SW- Problemen gezählt. Das Problem ist, daß jedes 
bit/xor/... Befehl den Port einliest, die Operation macht und dann den 
Port ausgiebt. Nur wird nicht der gespeicherte Port eingelesen sondern 
die realen
pins und bedingt durch Kapazität, Störung usw können da falsche Werte 
auftauchen und die Anzeige stören.

von Jens (Gast)


Lesenswert?

Ich mache das in einer eigenen Routine mittels zweier for-Schleifen. Wie 
du gemerkt hast, ich programmiere also in C.

So ganz verstehe ich aber das Problem nicht; du meinst in der markierten 
Zeile passiert das Unglück?
1
for (i = 0; i <= 7; i++) {
2
3
  DATA = (value & (1 << i)) >> i;
4
5
  // HIER?
6
7
  CLK = 1;
8
  wait ();
9
  CLK = 0;
10
11
}
12
13
STROBE = 1;
14
wait ();
15
STROBE = 0;

Was ändert dann genau deine Vorgehensweise? Erst den gesamten PORTB-Wert 
berechnen und den dann in einem "Rutsch" an PORTB senden, anstelle RB0, 
RB1 etc. direkt anzusprechen?

Gruß
Jens

von IaOffline (Gast)


Lesenswert?

Jens schrieb:
> Wenn das Blaulicht eingeschaltet ist und der Wecker irgendwann "seltsam"
> wird, dann ist das ja offensichtlich ein Software-Fehler, aber eben
> nicht ganz.


Dann klemm das Blaulicht doch einfach ab.Wenn der Fehler dann

a. weg ist -> Störung durch das Blaulicht
b. da  ist -> nix Problem mit Blaulicht.

Jens schrieb:
> Naja ich will ja, morgen kommt er und ein paar Bilder vom Wecker. Ich
> mache nie Schaltpläne sondern baue alles aus dem Kopf, daher die
> Verzögerung.

Richtig, ohne Schaltplan dauert es immer länger ;-)

>Es gibt eben Spannenderes als bei Eagle Bahnen zu ziehen
> meinst du nicht? ;-)

was denn? Im Drahtverhau auf Forschungsreise zu gehen?

Jens schrieb:
> Ich nutze keine LCDs sondern vier 7-Segment-Anzeigen: PIC -> 4x4094 ->
> 4xULN2803L -> 4x7-Seg.-LED

Mach wenigstens die Clock und Datenleitung niederohmiger (z.B. pulldown 
Widerstand)
>
> Versorgungsspannung sind +12V, die vor dem 7805 abgegriffen werden, der
> die 5V für PIC und Motor zur Verfügung stellt.

Ergo haben deine CMOS ICs high low Spannungspegel gegen 12 Volt. ich 
weiß jetzt nicht wo der Transit low <-> high bei Cmos liegt, wenn er 
aber bei 50% +/- irgendwas liegt können die armen kleinen 
Schieberegister gar nicht verstehen was du von ihnen willst.

Das könnte der Grund sein warum das bei Motor-An anders läuft als bei 
Motor-Aus. Die 12Volt brechen ein und die Logik hat andere 
"Schaltpunkte".

Mit einem Schaltplan wäre das in 5 Minuten klar, aber das ist ja zu 
langweilig ;-).

von Jens (Gast)


Lesenswert?

Na gut, ich setz mich jetzt ran. Schaltplan gibt's dann gleich.

Die CMOS ICs werden natürlich genau wie der PIC mit 5V versorgt, da gibt 
es keine Probleme. Das Problem tritt mit abgeklemmtem Blaulicht nicht 
auf, mit angeklemmtem Blaulicht schon, aber nur, wenn das gehäuse des 
Weckers geschlossen ist und das Blaulicht näher am Controller ist. 
Bilder folgen.

Gruß
Jens

von Helmut L. (helmi1)


Lesenswert?

Jens schrieb:
> Ich
> mache nie Schaltpläne sondern baue alles aus dem Kopf, daher die
> Verzögerung. Es gibt eben Spannenderes als bei Eagle Bahnen zu ziehen
> meinst du nicht? ;-)

Jens schrieb:
> Ich mache das in einer eigenen Routine mittels zweier for-Schleifen. Wie
> du gemerkt hast, ich programmiere also in C.

Dann wuerde ich auch nicht in C programmieren. Es gib auch spannenderes 
als C Sourcecode einzutippen. Man koennte direkt alles binaer eingeben 
:=)

von Chris (Gast)


Lesenswert?

>   DATA = (value & (1 << i)) >> i;
  Zuweisung an data pin
>   CLK = 1;
 daraus wird bcf CLK
 bzw PORT(CLK)=PORT(CLK) | (1<<(PIN(CLK)))
 und PORT(CLK) ist nicht das Latch sondern die aktuellen eingelesenen 
Daten.
 Eine kleine Störung und das wars. Ja, genau hier.
 Du müsstes das folgend machen, als Beispiel. CLK ist bit von 
PORT_HIDDEN
 #define update_port(x) PORT=PORT_HIDDEN^x
 #define CLK_ON (1<<CLK_PIN)
 update_port(CLK_ON); // clk_on wird nicht gespeichert.
 wait();
 update_port(); // default state

von Chris (Gast)


Lesenswert?

die Bezeichnung CLK_ON ist irreführend, da ja der Wert getoggelt 
(Invertiert)
wird.

von Jens (Gast)


Lesenswert?

Helmut Lenzen schrieb:
> Dann wuerde ich auch nicht in C programmieren.

Oh, da bin ich mit meiner Eagle-Äußerung wohl jemandem auf die Füße 
getreten ;-)

@Chris: Danke, die Makros sehen nützlich aus.

Gruß
Jens

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Hallo nochmal,

hier ein paar Bilder des Aufbaus, das C-Sourcefile und der Schaltplan.

Gibt es spontan ein paar Dinge, die haarsträubend falsch sind?

Gruß & danke im Voraus,
Jens

von Christian (Gast)


Lesenswert?

Du könntest vielleicht mal versuchen die 5V- Versorgung des Motors vom 
der des µC zu trennen. Dann wüsstest du ob Störungen über die 5V-Seite 
kommen. Und du könntest dir nochmal die Strompfade über GND ansehen. Ist 
auch immer ne schöne Fehlerquelle.

von Jens (Gast)


Lesenswert?

Was ich noch vergessen habe zu erwähnen:

In Position 1 (wecker_1.jpg) tritt der Fehler auf, in Position 2 
(wecker-2.jpg) hingegen nicht.

@Christian: Also dem Motor einen eigenen 7805 spendieren? Was meinst du 
mit Strompfaden über GND? Die sind alle verbunden, sollte das nicht so 
sein?

Gruß
Jens

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang der Stromlaufplan.

Gruß
Jens

von Chris (Gast)


Lesenswert?

Was man sieht, beim IC3 ist die Spannung nicht angeschlossen, das ist 
böse.
Entweder 5V sowie die diode auf den PSU und den Ventilator wegnehmen, 
oder
gleich auf 12V und dann PWM machen. In der Praxis schliesst du die 
Dioden
nicht an, was auch andere Nebeneffekte mit sich bringt.
Alternativ, wenn du das so lassen möchtest, jedem Verbraucher eine 
eigene
Diode, auch dem Reed-relais.  Aber - nur so - Reed relais kannst du auch
direkt vom uC machen, MP3 Player auch (Input/Output_immer_low 
umschalten),
bleibt also noch Motor, wo du auch zumindest zwei Ausgänge 
parallelschalten
solltest, z.B. 1 und 4, 2-3 ... .

von Jens (Gast)


Lesenswert?

Chris schrieb:
> Was man sieht, beim IC3 ist die Spannung nicht angeschlossen, das ist
> böse.

Das ist ein Transistor-Treiber, wo soll ich da +UV anschließen? ;-) Das 
ist doch OK so.

Chris schrieb:
> jedem Verbraucher eine eigene Diode, auch dem Reed-relais.  Aber - nur so - Reed 
relais kannst du auch direkt vom uC machen, MP3 Pl

Reed-Relais hat eine drin, sieht man doch. Der Motor auch. Nur der 
Lüfter noch nicht, gut, kann ich nachholen, wird aber nichts ändern, da 
mit dem Lüfter keine Probleme verbunden sind.

Chris schrieb:
> Entweder 5V sowie die diode auf den PSU und den Ventilator wegnehmen, oder 
gleich auf 12V und dann PWM machen.

Das verstehe ich nicht. Ist doch egal, wohin die einzelnen Darlingtons 
schalten. Ob nach +5V oder +12V ist denen doch schnuppe.

Gruß
Jens

von Chris (Gast)


Angehängte Dateien:

Lesenswert?

IC3 ist je nach Hersteller anders aufgebaut.
Z.B. so oder So und nicht induktive Sachen kann man ohne COM(CD+ im 
Schaltplan) anschließen, induktive brauchen aber die Diode, da sonst die
Spannung in den Eingangspin zurückfließen kann.
Auch sollte ev. am 5V eine Diode zur 12V sein, da sich sonst ein 
latch-up
ereignen könnte, kann ev. aber auch vom 12V del uln erledigt werden, 
eventuell, müsste aber ohne auch funktionieren.

von Christian (Gast)


Lesenswert?

Jens schrieb:
> @Christian: Also dem Motor einen eigenen 7805 spendieren? Was meinst du
> mit Strompfaden über GND? Die sind alle verbunden, sollte das nicht so
> sein?

Ja genau entweder mit nem Labornetzteil mal den Motor versorgen oder nen 
zweiten 7805 für den Motor spendieren.

Mit den Strompfaden war das so gemeint: Sie dir an wo der Strom für 
welchen Verbraucher fließen muss um Netzteil über 5V bis GND und zurück 
zum Netzteil zu kommen. Hast du jetzt z.B. eine lange "Leitung" GND und 
mittendrin den µC oder einen anderen IC angeschlossen, dann konnen 
Störungen über GND den µC beeinflussen. Besser wäre eine Art GND-Baum zu 
bauen der seinen Ursprung direkt am 7805-GND hat. Oder du lässt eine 
Platine fertigen und fügst eine möglichst geschlossene GND-Fläche ein... 
;)

von Jens (Gast)


Lesenswert?

Chris schrieb:
> induktive brauchen aber die Diode

? Die Schutzdiode beim Motor ist doch drin (die vom Lüfter wird 
nachgereicht). Die Common-Diode verwende ich nicht weil ich sowohl nach 
+5V als auch +12V schalte.

Gruß
Jens

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Christian schrieb:
> Ja genau entweder mit nem Labornetzteil mal den Motor versorgen

Ich versuche das gleich mal.

Christian schrieb:
> mittendrin den µC

Der uC ist sehr nahe am 7805, das Blaulicht auch, siehe Jumper JP5 im 
Anhang. Das einzige, was weiter weg ist, ist der KEMO-3.5W-Verstärker.

Gruß
Jens

von Michael R. (mexman) Benutzerseite


Lesenswert?

> Was ich noch vergessen habe zu erwähnen:
>
> In Position 1 (wecker_1.jpg) tritt der Fehler auf, in Position 2
> (wecker-2.jpg) hingegen nicht.
>
Schon mal dran gedacht, dass das daran liegen koennte, dass
- der Deckel irgendwo draufdrueckt und die Leiterplatte verbiegt bzw. 
einen Kurzen verursacht?
- die Durchfuehrung der Leitungen zum Blaulicht am Deckel so toll 
entgratet ist, dass beim Schliessen dort ein Kurzer entsteht?

Oft sind es die duemmsten Fehler....


Gruss

Mcihael

von Jens (Gast)


Lesenswert?

@Michael: Nein, das habe ich schon sehr sehr häufig überprüft. Aber das 
war auch einer meiner ersten Gedanken.

Ich freue mich einerseits, dass die Schaltung nicht total 
auseinandergenommen wird. Ich habe jetzt den Jumper JP5 etwas weiter 
rechts auf der Platine platziert, und was soll ich sagen, die Schaltung 
läuft wesentlich stabiler. Da sind noch hier und da kleine Störimpulse 
beim MP3-Player, aber das bekomme ich auch noch weg.

Der Motor wird nun über zwei Kanäle des ULN2803A angesteuert, zudem hat 
der Lüfter eine Freilaufdiode spendiert bekommen.

Was kann ich sonst noch in meiner obigen Schaltung veranstalten, damit 
das ganze etwas stabiler wird?

Gruß
Jens

von tip (Gast)


Lesenswert?

Sollte C6 mit den 100uF nicht eher von den 5V nach GND sein?
Und dann evtl. die 5V via Diode auf JP3 P1 führen um die Speisung zum 
Motor abzukoppeln.

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
Noch kein Account? Hier anmelden.