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?
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
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)
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.
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?
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.
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!!
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?
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?
:
:
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.
...
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)
@ 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 ;-)
@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.
> 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.
...
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.
...
@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