Forum: Mikrocontroller und Digitale Elektronik INT0 entstören


von GEA (Gast)


Lesenswert?

Hallo,

ich will mit INT0 ein Rechtecksignal auswerten dies gelingt mir aber 
nicht weil Störungen von der PWM des Motors drauf kommen, die PWM wird 
mit dem gleichem Controller erzeugt.

Ich habe schon mit einem 100 nF Kondensator probiert den Kanal zu 
entstören, es hat aber nicht den erwünschten Erfolg gebracht.

Wie kann ich es unterbinden?

von Timmo H. (masterfx)


Lesenswert?

100nF passt nicht immer. Das könnte evtl. schon etwas zu klein sein. 
Versuch mal vielleicht 1uF oder so. Evtl. auch mal ne kleine Spule in 
Reihe. Frag mich jetzt aber nicht wie groß. Paar mH vielleicht

von Igor M. (bastel-wastel)


Lesenswert?

Prinzip vom Hardware-Tasterentprellen einsetzen:
Signal -> RC-Glied -> Schmitt-Trigger -> µC

Je größer das RC-Glied, desto störsicherer, jedoch Laufzeitverschiebung.

PS: Manche µC haben bereits Input-Pins, die als Schmitt-Trigger 
ausgeführt sind.(z.B. manche Eingänge der PICs)

von GEA (Gast)


Lesenswert?

Danke für die Tipps.

Wie kann ich den RC Glied auslegen wie groß muss der Kondensator und wie 
groß
der Widerstand sein?

Ich habe es mit einer kleinen Spule probiert, ohne Erfolg.
Spule ist doch eigentlich ein Strom- Bügeleisen.

Ich probiere paar Bilder von dem Signal zu machen.

von lkmiller (Gast)


Lesenswert?

Noch ein paar Fragen:
Wie kommen die Störungen auf das Nutzsignal? Design? Layout?
Welche Frequenz stört?
Wie oft treten die Störungen auf?
Wie lang ist die Leitung?

von GEA (Gast)


Lesenswert?

Hier ist der Schaltplan, der Schaltplan wurde auf einer 
Lochrasterplatine
realisiert.
http://s-huehn.de/elektronik/fahrtregler/fahrtregler.htm
Ich habe extra drauf geachtet, dass der Controller, Signalleitungen und 
das ganze 5V gedäh nicht mit PWM kreuzt.(ist auch Räumlich etwas 
getrennt)

Die PWM wird mit Timer1 erzeugt:
Controller: 1MHz
Teiler: 8
Fast PWM 10 Bit

1000000/8=125000 --->125000/1023=122 pro Sek


1/122=8 Millisekunden

Soviel zu der Rechnerei.

Und die Störungsspitzen   kommt genau alle 8 Millisekunden

Motorleistungen= ca. 30 cm
Rechtecksignalleitung= ca. 40cm

Der Motor wird durch 47 µF Kondensator entstört.

von lkmiller (Gast)


Lesenswert?

Das muß ohne Entstörung gehen. Bei ordentlichem Aufbau darf mit dieser 
Beschaltung nichts stören.
Sind das wirklich Spannungsstörungsspitzen, oder verhält sich deine 
Software im 122Hz Takt fehlerhaft?

Irgendwo ist deine Schaltung anders, im angegebenen Schaltplan ist kein 
47uF Kondensator zu finden.

Du hast auch irgendeine andere Software, denn deine 122Hz tauchen im 
Original nicht auf, sondern "...Bei diesem Fahrtregler habe ich die 
gleiche Frequenz wie die Fernsteuerung benutzt (ca. 50 Hz), weil da die 
Software recht einfach zu realisieren war...".



@ Timmo H.
Eine Spule vor einem Eingang, da muss man schon genau wissen was man 
tut.
Dann noch einen Kondensator davor oder dahinter:
Jungens, aus solchen Sachen hat man früher (in der Analogtechnik) 
Schwingkreise gebaut, das is nix Digitales dabei, das holt euch wieder 
ein!!

von GEA (Gast)


Lesenswert?

Der 47 µF Kondensator war schon immer am Motor dran mit einem anderem 
Motor ohne C geht es auch nicht.

Die Software habe ich selber erstellt aber in C da Assembler nicht meine 
Muttersprache ist.

Wie muss ich ein RC Glied auslegen?

von lkmiller (Gast)


Lesenswert?

R-C-Glieder berechnen sich nach der einfachen Formel tau = R mal C.
Passt dann auch relativ gut zu den Eingangs-Schaltpegeln (der Rest sind 
Rundungsfehler und Rechenungenauigkeiten).

D.h. wenn ich den Eingang mit (tau = ) 10ms entprellen will, dann 
brauche ich
1 kOhm und 10uF  oder 4,7kOhm und 2,2uF  oder 3,3kOhm und 3,3uF (wie 
gesagt, der Rest ist Rundungsfehler)....

Aber: wenn ich ein Signal mit 10ms entprellen kann, dann brauche ich 
keinen Interrupt. Ein Interrupt ist nötig für Antwortzeiten im 
10us-Bereich. Und das kann ich nicht mehr (zuverlässig) mit RC-Gliedern 
ausfiltern.


BTW:
Auf die Gefahr, dass ich mich wiederhole:
:
:
Das muß ohne Entstörung gehen. Bei ordentlichem Aufbau darf mit dieser
Beschaltung nichts stören.
Sind das wirklich Spannungsstörungsspitzen, oder verhält sich deine
Software im 122Hz Takt fehlerhaft?
:
:

von Hannes L. (hannes)


Lesenswert?

GEA wrote:
> Der 47 µF Kondensator war schon immer am Motor dran mit einem anderem
> Motor ohne C geht es auch nicht.

Das sind mit Sicherheit keine 47 µF sondern eher 47 nF.

>
> Die Software habe ich selber erstellt aber in C

Aha. Und die ist ok?

> da Assembler nicht meine
> Muttersprache ist.

Im Gegenzug kann der AVR kein C. 8-D

>
> Wie muss ich ein RC Glied auslegen?

Am Signal vom Empfänger würde ich nichts machen. 1 k in Reihe als 
Schutzwiderstand gegen fehlerhaften Anschluss schadet allerdings nicht.

Schau lieber mal, ob Du Dir nicht über den Spannungsregler Störungen 
(Einbrüche) aus dem Leistungs-Stromkreis einfängst. Versorge Empfänger 
und AVR doch mal zum Test mit einer separaten Stromversorgung.

...

von GEA (Gast)


Lesenswert?

Gehe nochmal meine Software Schritt für Schritt durch.
Melde mich später.

Danke noch mal.

von GEA (Gast)


Lesenswert?

So hier bin ich wieder, danke an ALLE die mir geholfen haben, mein 
Regler läuft jetzt wie die Sau.

Es gibt zwar noch Störungen auf dem INT0 aber die Auswertung läuft 
einwandfrei.

Meine Software war eigentlich Fehlerfrei ich habe nur vergessen die 
Fuse- Bits
zu setzten und somit lief der Controller mit 1MHz (interner Takt) und 
hat wahnsinnige Spannungsspitzen auf dem INT0 verursacht (warum auch 
immer)
Jetzt läuft der Controller mit 16 MHz Quarz und es gibt nur kleinere 
Störungen.(warum das so ist verstehe ich aber nicht so ganz)

von GEA (Gast)


Lesenswert?

@ Hannes Lux

Nein es ist ein 47µF Kondensator es ist auch ein etwas größerer Motor
(15A bei Volllast)
Und Assembler versteht der Controller genau so wenig wie C ;-)

von Timmo H. (masterfx)


Lesenswert?

@lkmiller
Ich habs auch mit der Spannungsglättung für den AREF verwechselt. (L an 
VCC, C an GNC) mein Fehler...

Meinte eher sowas wie nen Tiefpass davor. Ein kleiner pF-Kondensator 
kann ja nicht beliebig lange Spitzen kompensieren.

von Hannes L. (hannes)


Lesenswert?

> Und Assembler versteht der Controller genau so wenig wie C

Dir ist aber bewusst, dass nur ASM und MC (Maschinencode) eins zu eins 
in beiden Richtungen zugeordnet werden kann. ASM ist halt nur eine 
andere (human-verständlichere) Schreibweise für MC. Jedes ASM-Mnemonic 
entspricht exakt einem MC-Befehl und umgekehrt. Man kann in ASM (ohne 
Hochsprachenwissen) dem Controller sehr exakt mitteilen, was er machen 
soll. In einer Hochsprache gelingt das (ohne ASM-Wissen) nicht oder nur 
bedingt. ;-)

Wenn Dein Motor 15 A zieht, dann solltest Du mal die gesamte 
Stromversorgung und den Laststromkreis unter die Lupe nehmen. Bei 
PWM-zerhackten 15 A entsteht nämlich eine Menge Müll. Den auszublenden 
ist gar nicht so einfach.

Übrigens ist Scottis Fahrtregler bestimmt nicht für 15A-Motoren 
konzipiert worden.

...

von Hannes L. (hannes)


Lesenswert?

Achja, falls Du etweas quer lesen möchtest:
http://www.hanneslux.de/avr/mobau/index.html
Es löst zwar nicht Dein gegenwärtiges Problem, kann Dir aber vermutlich 
ein paar Denkanstöße geben.

...

von GEA (Gast)


Lesenswert?

@Hannes

ja das ist mir bewusst, das ist ja auch alles richtig was du da 
schreibst aber
Assemblercode muss genau wie C-code auch erst in den MC übersetzt 
werden.

Danke für den Link, den hatte ich aber schon unter Lesezeichen 
gespeichert.
Super Seite

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.